diff --git a/.bowerrc b/.bowerrc
deleted file mode 100644
index 0c16f5b9..00000000
--- a/.bowerrc
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "directory": "src/AppBundle/Resources/public/vendor/"
-}
diff --git a/.gitignore b/.gitignore
index a7e74616..06850e74 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,11 +1,2 @@
-/app/config/parameters.yml
-/var/*
-/vendor/
-/web/bundles/
-/web/css
-/web/js
.idea
-/src/AppBundle/Resources/public/vendor/*
-/phpdocker/.vagrant
-*.sql
-
+*.pem
diff --git a/LICENSE b/LICENSE
deleted file mode 100644
index e9fe4a8f..00000000
--- a/LICENSE
+++ /dev/null
@@ -1,13 +0,0 @@
-Copyright 2016 Luis Alberto Pabon Flores
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
diff --git a/Makefile b/Makefile
new file mode 100644
index 00000000..06502e6f
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,101 @@
+SHELL=/bin/bash
+MKCERT_VERSION=v1.4.1
+MKCERT_LOCATION=$(PWD)/bin/mkcert
+HOSTS_VERSION=3.6.3
+HOSTS_LOCATION=$(PWD)/bin/hosts
+PHPDOCKER_HOST=phpdocker.local
+
+# linux-amd64, darwin-amd64, linux-arm
+# On windows, override with windows-amd64.exe
+ifndef BINARY_SUFFIX
+ BINARY_SUFFIX:=$(shell [[ "`uname -s`" == "Linux" ]] && echo linux || echo darwin)-amd64
+endif
+
+ifndef BINARY_ARCH
+ BUILD_TAG:=$(shell date +'%Y-%m-%d-%H-%M-%S')-$(shell git rev-parse --short HEAD)
+endif
+
+init: clean install-dependencies install-mkcert create-certs install-hosts init-hosts build-local-php-container start load-fixtures
+
+build-backend-php:
+ docker build --target=deployment -t backend-php -f backend/docker/php-fpm/Dockerfile ./backend/
+
+start:
+ docker-compose up -d
+
+stop:
+ docker-compose stop
+
+build-local-php-container:
+ docker-compose stop php-fpm
+ docker-compose rm php-fpm
+ docker-compose build --pull php-fpm
+
+install-dependencies:
+ cd ./frontend; yarn install
+# cd ./admin; yarn install
+ docker-compose run --rm php-fpm composer -o install
+
+install-mkcert:
+ @echo "Installing mkcert for OS type ${BINARY_SUFFIX}"
+ @if [[ ! -f '$(MKCERT_LOCATION)' ]]; then curl -sL 'https://github.com/FiloSottile/mkcert/releases/download/$(MKCERT_VERSION)/mkcert-$(MKCERT_VERSION)-$(BINARY_SUFFIX)' -o $(MKCERT_LOCATION); chmod +x $(MKCERT_LOCATION); fi;
+ bin/mkcert -install
+
+install-hosts:
+ @echo "Installing hosts.sh for OS type ${BINARY_SUFFIX}"
+ @if [[ ! -f '$(HOSTS_LOCATION)' ]]; then curl -sL 'https://raw.githubusercontent.com/xwmx/hosts/$(HOSTS_VERSION)/hosts' -o $(HOSTS_LOCATION); chmod +x $(HOSTS_LOCATION); fi;
+
+create-certs:
+ bin/mkcert -cert-file=infrastructure/local/local.pem -key-file=infrastructure/local/local.key.pem "$(PHPDOCKER_HOST)" "*.$(PHPDOCKER_HOST)"
+ cp infrastructure/local/local.pem infrastructure/local/webpack.pem
+ cat infrastructure/local/local.key.pem >> infrastructure/local/webpack.pem
+
+clean-hosts:
+ sudo bin/hosts remove --force *phpdocker.local > /dev/null 2>&1 || exit 0
+
+init-hosts: clean-hosts
+ sudo bin/hosts add 127.0.0.1 $(PHPDOCKER_HOST)
+ sudo bin/hosts add 127.0.0.1 api.$(PHPDOCKER_HOST)
+ sudo bin/hosts add 127.0.0.1 mailhog.$(PHPDOCKER_HOST)
+
+clean:
+ docker-compose down
+ cd ./frontend; sudo rm -rf node_modules
+# cd ./admin; sudo rm -rf node_modules
+
+load-fixtures:
+ docker-compose exec database backend/bin/wait-for-db.sh
+ cd ./backend; chmod 777 var/* -Rf; ./console doctrine:schema:update --force; ./console doctrine:fixtures:load -n
+
+open-frontend:
+ xdg-open https://phpdocker.local
+
+#open-admin:
+# xdg-open https://phpdocker.local:5001
+
+open-content-api:
+ xdg-open https://api.phpdocker.local/content
+
+open-mailhog:
+ xdg-open http://mailhog.phpdocker.local/
+
+open-api-profiler:
+ xdg-open https://api.phpdocker.local/_profiler/latest?limit=10
+
+api-clear-cache:
+ docker-compose exec php-fpm bin/console cache:clear
+
+test-frontend-watch:
+ cd frontend; yarn test
+
+test-frontend:
+ cd frontend; yarn test --no-watch --coverage
+
+#test-backend-static:
+# cd backend; vendor/bin/phpstan -v analyse -l 7 src/
+
+#test-backend-infection:
+# cd backend; vendor/bin/infection --threads=4 -s
+#
+#test-backend-infection-no-initial-coverage:
+# cd backend; vendor/bin/infection --threads=4 -s --coverage=reports/infection/
diff --git a/README.md b/README.md
deleted file mode 100644
index 4698290a..00000000
--- a/README.md
+++ /dev/null
@@ -1,41 +0,0 @@
-PHPDocker.io
-============
-
-[](https://semaphoreci.com/phpdockerio/phpdocker-io)
-[](https://codeclimate.com/github/phpdocker-io/phpdocker.io)
-
-This is the repository for both the website and the generator over at [PHPDocker.io](http://phpdocker.io), opensourced on an Apache 2.0 license and open for anyone to contribute as they please
-
-Contributing
-------------
-
-The usual Github model of forking and pull request. We're following trunk based development, so please create your branches against the `master` branch. There are no unit tests to keep an eye on, but until I get a functional suite testing ready, code merges can take a while.
-
-All I ask is to thoroughly test, manually, any changes made to the generators. You will need to run the containers with example apps to ensure they're working. Functional tests in the future will do precisely this, with a combination of PHP versions, frameworks, databases, etc. Setting this up is an area you could contribute on.
-
-If you would like to add new containers, please either base them on `alpine` images, `debian:jessie` (used by many official images such as MySQL, ElasticSearch...) or Ubuntu 16.04 as these are in use for the generated environments and will optimise deployment and provisioning to users.
-
-Please follow PSR code formatting standards, and Symfony best practices and, in general, do what you see already done in the current code.
-
-Please note everything is really in very early stages; if you see anything at all you can improve upon, please do so.
-
-Running the project
--------------------
-
-Project is given with a [PHPDocker.io](http://phpdocker.io) generated environment.
-
-I would recommend you install in your host php cli 7.1+, bower and composer and run the usual steps manually, but it's not necessary - the [`./prepare-dev.sh`](prepare-dev.sh) script will set up the app (bower install, composer install, etc) through docker and docker-compose commands.
-
- * Clone
- * Run [`./prepare-dev.sh`](prepare-dev.sh) - this will:
- * populate default dev config
- * composer and bower install
- * clean up caches
- * ensure web assets are available
- * load up the database schema (this is just for the CMS side of the website, it has no bearing over the generator)
- * start up the environment
- * You can then head off to the [/generator](http://localhost:10000/generator) route.
-
-This is an initial fail-safe set up and not always you need to run it, after it's done once you'll just need to do a good old `docker-compose up -d`. More specific information on [phpdocker/README.md](phpdocker/README.md).
-
-**Note:** you'll notice a `console` script at the root of the project. It does some voodoo to run `bin/console` within the container.
diff --git a/app/AppKernel.php b/app/AppKernel.php
deleted file mode 100644
index c3dba830..00000000
--- a/app/AppKernel.php
+++ /dev/null
@@ -1,55 +0,0 @@
-getEnvironment(), ['dev', 'test'], true)) {
- $bundles[] = new Symfony\Bundle\DebugBundle\DebugBundle();
- $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
- $bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle();
- $bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle();
- }
-
- return $bundles;
- }
-
- public function getRootDir()
- {
- return __DIR__;
- }
-
- public function getCacheDir()
- {
- return dirname(__DIR__).'/var/cache/'.$this->getEnvironment();
- }
-
- public function getLogDir()
- {
- return dirname(__DIR__).'/var/logs';
- }
-
- public function registerContainerConfiguration(LoaderInterface $loader)
- {
- $loader->load($this->getRootDir().'/config/config_'.$this->getEnvironment().'.yml');
- }
-}
diff --git a/app/DoctrineMigrations/Version20160324131749.php b/app/DoctrineMigrations/Version20160324131749.php
deleted file mode 100644
index 741f12b4..00000000
--- a/app/DoctrineMigrations/Version20160324131749.php
+++ /dev/null
@@ -1,73 +0,0 @@
-abortIf($this->connection->getDatabasePlatform()->getName() != 'mysql', 'Migration can only be executed safely on \'mysql\'.');
-
- $this->addSql('CREATE TABLE category (id INT AUTO_INCREMENT NOT NULL, slug VARCHAR(255) NOT NULL, title VARCHAR(255) NOT NULL, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB');
- $this->addSql('CREATE TABLE post (id INT AUTO_INCREMENT NOT NULL, category_id INT NOT NULL, body_intro LONGTEXT NOT NULL, slug VARCHAR(255) NOT NULL, title VARCHAR(255) NOT NULL, body LONGTEXT NOT NULL, active TINYINT(1) DEFAULT \'0\' NOT NULL, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, UNIQUE INDEX UNIQ_5A8A6C8D989D9B62 (slug), INDEX IDX_5A8A6C8D12469DE2 (category_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;');
- $this->addSql('CREATE TABLE post_comment (id INT AUTO_INCREMENT NOT NULL, post_id INT NOT NULL, poster_name VARCHAR(255) NOT NULL, poster_url VARCHAR(255) DEFAULT NULL, body LONGTEXT NOT NULL, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, INDEX IDX_A99CE55F4B89032C (post_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;');
- $this->addSql('ALTER TABLE post ADD category_id INT');
- $this->addSql('CREATE INDEX IDX_5A8A6C8D12469DE2 ON post (category_id)');
- }
-
- /**
- * Add News category and associate all current posts to it
- *
- * @param Schema $schema
- */
- public function postUp(Schema $schema)
- {
- parent::postUp($schema);
-
- /** @var EntityManager $em */
- $em = $this->container->get('doctrine.orm.entity_manager');
-
- // Add news category
- $category = new Category();
- $category->setTitle('News');
-
- $em->persist($category);
-
- // Link all current news items to category
- foreach ($em->getRepository('AppBundle:ORM\Post')->findAll() as $post) {
- $post->setCategory($category);
- $em->persist($post);
- }
-
- $em->flush();
- }
-
- /**
- * @param Schema $schema
- */
- public function down(Schema $schema)
- {
- // this down() migration is auto-generated, please modify it to your needs
- $this->abortIf($this->connection->getDatabasePlatform()->getName() != 'mysql', 'Migration can only be executed safely on \'mysql\'.');
-
- $this->addSql('DROP TABLE category');
- $this->addSql('DROP INDEX IDX_5A8A6C8D12469DE2 ON post');
- $this->addSql('ALTER TABLE post DROP category_id');
- }
-}
diff --git a/app/DoctrineMigrations/Version20160324151907.php b/app/DoctrineMigrations/Version20160324151907.php
deleted file mode 100644
index ac1ec49b..00000000
--- a/app/DoctrineMigrations/Version20160324151907.php
+++ /dev/null
@@ -1,36 +0,0 @@
-abortIf($this->connection->getDatabasePlatform()->getName() != 'mysql', 'Migration can only be executed safely on \'mysql\'.');
-
- $this->addSql('ALTER TABLE post CHANGE category_id category_id INT NOT NULL');
- $this->addSql('ALTER TABLE post ADD CONSTRAINT FK_5A8A6C8D12469DE2 FOREIGN KEY (category_id) REFERENCES category (id)');
- }
-
- /**
- * @param Schema $schema
- */
- public function down(Schema $schema)
- {
- // this down() migration is auto-generated, please modify it to your needs
- $this->abortIf($this->connection->getDatabasePlatform()->getName() != 'mysql', 'Migration can only be executed safely on \'mysql\'.');
-
- $this->addSql('ALTER TABLE post DROP FOREIGN KEY FK_5A8A6C8D12469DE2');
- $this->addSql('ALTER TABLE post CHANGE category_id category_id INT DEFAULT NULL');
- }
-}
diff --git a/app/DoctrineMigrations/Version20160330171406.php b/app/DoctrineMigrations/Version20160330171406.php
deleted file mode 100644
index 76ba684b..00000000
--- a/app/DoctrineMigrations/Version20160330171406.php
+++ /dev/null
@@ -1,34 +0,0 @@
-abortIf($this->connection->getDatabasePlatform()->getName() != 'mysql', 'Migration can only be executed safely on \'mysql\'.');
-
- $this->addSql('CREATE UNIQUE INDEX UNIQ_5A8A6C8D989D9B62 ON post (slug)');
- }
-
- /**
- * @param Schema $schema
- */
- public function down(Schema $schema)
- {
- // this down() migration is auto-generated, please modify it to your needs
- $this->abortIf($this->connection->getDatabasePlatform()->getName() != 'mysql', 'Migration can only be executed safely on \'mysql\'.');
-
- $this->addSql('DROP INDEX UNIQ_5A8A6C8D989D9B62 ON post');
- }
-}
diff --git a/app/DoctrineMigrations/Version20160330171428.php b/app/DoctrineMigrations/Version20160330171428.php
deleted file mode 100644
index 4b6fc1cb..00000000
--- a/app/DoctrineMigrations/Version20160330171428.php
+++ /dev/null
@@ -1,62 +0,0 @@
-container->get('doctrine.orm.entity_manager');
-
- // Add homepage category
- $category = new Category();
- $category->setTitle('Homepage');
-
- $em->persist($category);
- $em->flush();
- }
-
- /**
- * @param Schema $schema
- */
- public function down(Schema $schema)
- {
- /** @var EntityManager $em */
- $em = $this->container->get('doctrine.orm.entity_manager');
-
- $category = $em->getRepository('AppBundle:ORM\Category')->findOneBy(['name' => self::CATEGORY_NAME]);
- if ($category) {
- $em->remove($category);
- $em->flush();
- }
- }
-}
diff --git a/app/Resources/views/base.html.twig b/app/Resources/views/base.html.twig
deleted file mode 100644
index bafd28d3..00000000
--- a/app/Resources/views/base.html.twig
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
- {% block title %}Welcome!{% endblock %}
- {% block stylesheets %}{% endblock %}
-
-
-
- {% block body %}{% endblock %}
- {% block javascripts %}{% endblock %}
-
-
diff --git a/app/Resources/views/default/index.html.twig b/app/Resources/views/default/index.html.twig
deleted file mode 100644
index 75842ebe..00000000
--- a/app/Resources/views/default/index.html.twig
+++ /dev/null
@@ -1,76 +0,0 @@
-{% extends 'base.html.twig' %}
-
-{% block body %}
-
-
-
-
Welcome to Symfony {{ constant('Symfony\\Component\\HttpKernel\\Kernel::VERSION') }}
-
-
-
-
-
-
- Your application is ready to start working on it at:
- {{ base_dir }}/
-
-
-
-
-
-
-
-{% endblock %}
-
-{% block stylesheets %}
-
-{% endblock %}
diff --git a/app/config/config.yml b/app/config/config.yml
deleted file mode 100644
index e49a072e..00000000
--- a/app/config/config.yml
+++ /dev/null
@@ -1,103 +0,0 @@
-imports:
- - { resource: parameters.yml }
- - { resource: security.yml }
- - { resource: services.yml }
- - { resource: easy_admin.yml }
- - { resource: '@AppBundle/Resources/config/config.yml' }
-
-# Put parameters here that don't need to change on each machine where the app is deployed
-# http://symfony.com/doc/current/best_practices/configuration.html#application-related-configuration
-parameters:
- locale: en
-
-framework:
- #esi: ~
- translator: { fallbacks: ["en"] }
- secret: "%secret%"
- router:
- resource: "%kernel.root_dir%/config/routing.yml"
- strict_requirements: ~
- form: ~
- csrf_protection: ~
- validation: { enable_annotations: true }
- #serializer: { enable_annotations: true }
- templating:
- engines: ['twig']
- #assets_version: SomeVersionScheme
- default_locale: "%locale%"
- trusted_hosts: ~
- trusted_proxies: ~
- session:
- # handler_id set to null will use default session handler from php.ini
- handler_id: ~
- save_path: "%kernel.root_dir%/../var/sessions/%kernel.environment%"
- fragments: ~
- http_method_override: true
- assets: ~
-
-# Doctrine Configuration
-doctrine:
- dbal:
- driver: pdo_mysql
- host: "%database_host%"
- port: "%database_port%"
- dbname: "%database_name%"
- user: "%database_user%"
- password: "%database_password%"
-
- # DBAL 2.5 needs to connect to the DB to check its version, unless provided beneath
- # This avoids unnecessary connections when using the console, or when on CI
- # This is also a per-connection setting, for when we have several connections configured (eg master/slaves) instead of a main, root one
- server_version: "%database_version%"
-
- charset: UTF8
-
- # DoctrineEnumBundle
- mapping_types:
- enum: string
-
- orm:
- auto_generate_proxy_classes: "%kernel.debug%"
- naming_strategy: doctrine.orm.naming_strategy.underscore
- auto_mapping: true
-
-
-# Doctrine migrations
-doctrine_migrations:
- dir_name: "%kernel.root_dir%/DoctrineMigrations"
- namespace: Application\Migrations
- table_name: migration_versions
- name: Application Migrations
-
-# Twig Configuration
-twig:
- debug: "%kernel.debug%"
- strict_variables: "%kernel.debug%"
- globals:
- google_analytics: '%google_analytics%'
- recaptcha_site_key: '%recaptcha_site_key%'
-
-# Swiftmailer
-swiftmailer:
- transport: '%mailer_transport%'
- host: '%mailer_host%'
- port: '%mailer_port%'
- username: '%mailer_user%'
- password: '%mailer_password%'
-
-stof_doctrine_extensions:
- orm:
- default:
- timestampable: true
- sluggable: true
-
-monolog:
- handlers:
- main:
- type: error_log
- level: error
- channels: [!event]
- console:
- type: console
- bubble: false
- channels: [!event, !doctrine]
diff --git a/app/config/config_dev.yml b/app/config/config_dev.yml
deleted file mode 100644
index b932f832..00000000
--- a/app/config/config_dev.yml
+++ /dev/null
@@ -1,12 +0,0 @@
-imports:
- - { resource: config.yml }
-
-framework:
- router:
- resource: "%kernel.root_dir%/config/routing_dev.yml"
- strict_requirements: true
- profiler: { only_exceptions: false }
-
-web_profiler:
- toolbar: true
- intercept_redirects: false
diff --git a/app/config/config_prod.yml b/app/config/config_prod.yml
deleted file mode 100644
index 54f66269..00000000
--- a/app/config/config_prod.yml
+++ /dev/null
@@ -1,37 +0,0 @@
-imports:
- - { resource: config.yml }
-
-framework:
- validation:
- cache: validator.mapping.cache.doctrine.apc
- serializer:
- cache: serializer.mapping.cache.apc
-
-doctrine:
- orm:
- metadata_cache_driver:
- type: apc
- namespace: "%cache_namespace%"
-
- result_cache_driver:
- type: memcached
- namespace: "%cache_namespace%"
- host: "%memcached_host%"
- port: "%memcached_port%"
-
- query_cache_driver:
- type: apc
- namespace: "%cache_namespace%"
-
-monolog:
- handlers:
- main:
- type: fingers_crossed
- action_level: error
- handler: nested
- nested:
- type: stream
- path: "%kernel.logs_dir%/%kernel.environment%.log"
- level: debug
- console:
- type: console
diff --git a/app/config/config_test.yml b/app/config/config_test.yml
deleted file mode 100644
index 2c0b0d62..00000000
--- a/app/config/config_test.yml
+++ /dev/null
@@ -1,22 +0,0 @@
-imports:
- - { resource: config_dev.yml }
-
-framework:
- test: ~
- session:
- storage_id: session.storage.mock_file
- profiler:
- collect: false
-
-web_profiler:
- toolbar: false
- intercept_redirects: false
-
-monolog:
- handlers:
- main:
- type: test
-
-# Swiftmailer
-swiftmailer:
- transport: null
diff --git a/app/config/easy_admin.yml b/app/config/easy_admin.yml
deleted file mode 100644
index 9cd901ee..00000000
--- a/app/config/easy_admin.yml
+++ /dev/null
@@ -1,53 +0,0 @@
-parameters:
- rich_text_editor_form_type: 'Ivory\CKEditorBundle\Form\Type\CKEditorType'
-
-ivory_ck_editor:
- input_sync: true
- default_config: base_config
- configs:
- base_config:
- toolbar:
- - { name: "styles", items: ['Bold', 'Italic', 'BulletedList', 'Link', 'PasteFromWord', 'Source'] }
-
-easy_admin:
- site_name: "PHPDocker.io"
- design:
- form_theme: 'vertical'
- entities:
- Category:
- label: 'Categories'
- class: AppBundle\Entity\ORM\Category
- list:
- title: 'Categories'
- fields:
- - id
- - title
- - slug
- - createdAt
- form:
- title: 'Add a new category'
- fields:
- - { property: title, css_class: 'col-lg-6 col-md-6' }
-
- Post:
- label: 'Posts'
- class: AppBundle\Entity\ORM\Post
- list:
- title: 'Posts'
- fields:
- - id
- - title
- - slug
- - category
- - createdAt
- - active
- form:
- title: 'Add a new post'
- fields:
- - { property: title, css_class: 'col-lg-6 col-md-6' }
- - { property: bodyIntro, type: '%rich_text_editor_form_type%' }
- - { property: body, type: '%rich_text_editor_form_type%' }
- - { property: category, label: 'Link to category', css_class: 'col-lg-6 col-md-6'}
- - { property: active, label: 'Is active', css_class: 'col-lg-6 col-md-6'}
- edit:
- title: 'Edit post'
diff --git a/app/config/parameters.yml.dist b/app/config/parameters.yml.dist
deleted file mode 100644
index f2b986d0..00000000
--- a/app/config/parameters.yml.dist
+++ /dev/null
@@ -1,35 +0,0 @@
-# This file contains the right config already for the app to be run from the bundled dev-env,
-# you should be able to copy to parameters.yml and off you go
-parameters:
- # A secret key that's used to generate certain security-related tokens
- secret: ThisTokenIsNotSoSecretChangeIt
-
- # Database
- database_host: phpdocker-io-mysql
- database_port: null
- database_name: phpdockerio
- database_user: username
- database_password: password
- database_version: 5.7
-
- # Email config
- mailer_transport: smtp
- mailer_host: phpdocker-io-mailhog
- mailer_port: 1025
- mailer_user: null
- mailer_password: null
- email_to: "foo@faa.com"
-
- # Third party services
- google_analytics: foo
- recaptcha_site_key: lalalala
- recaptcha_secret_key: lerelelele
-
- # Memcached - make sure on each deployment, cache_namespace is different
- memcached_host: phpdocker-io-memcached
- memcached_port: 11211
- cache_namespace: phpdocker-io
-
- # Admin user (password: password)
- admin_user_name: luis
- admin_user_password: $2y$12$jS7zyap2VzijFYr8fWn5WuoHrfZMdPzmfTuVUFJ7NAkQb.ZZc6VLm
diff --git a/app/config/routing.yml b/app/config/routing.yml
deleted file mode 100644
index c304a579..00000000
--- a/app/config/routing.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-app:
- resource: "@AppBundle/Resources/config/routing.yml"
-
-easy_admin_bundle:
- resource: "@AppBundle/Controller/AdminController.php"
- type: annotation
- prefix: /site-admin
diff --git a/app/config/routing_dev.yml b/app/config/routing_dev.yml
deleted file mode 100644
index 404f6a3b..00000000
--- a/app/config/routing_dev.yml
+++ /dev/null
@@ -1,14 +0,0 @@
-_wdt:
- resource: "@WebProfilerBundle/Resources/config/routing/wdt.xml"
- prefix: /_wdt
-
-_profiler:
- resource: "@WebProfilerBundle/Resources/config/routing/profiler.xml"
- prefix: /_profiler
-
-_errors:
- resource: "@TwigBundle/Resources/config/routing/errors.xml"
- prefix: /_error
-
-_main:
- resource: routing.yml
diff --git a/app/config/security.yml b/app/config/security.yml
deleted file mode 100644
index b0f2a069..00000000
--- a/app/config/security.yml
+++ /dev/null
@@ -1,27 +0,0 @@
-# To get started with security, check out the documentation:
-# http://symfony.com/doc/current/book/security.html
-security:
- encoders:
- Symfony\Component\Security\Core\User\User:
- algorithm: bcrypt
- cost: 12
-
- providers:
- in_memory:
- memory:
- users:
- '%admin_user_name%':
- password: '%admin_user_password%'
- roles: 'ROLE_ADMIN'
-
- firewalls:
- dev:
- pattern: ^/(_(profiler|wdt)|css|images|js)/
- security: false
-
- main:
- anonymous: ~
- http_basic: ~
-
- access_control:
- - { path: ^/site-admin, roles: ROLE_ADMIN }
diff --git a/app/config/services.yml b/app/config/services.yml
deleted file mode 100644
index b1cdfa9f..00000000
--- a/app/config/services.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-imports:
- - { resource: "@AppBundle/Resources/config/services.yml" }
diff --git a/backend/.env b/backend/.env
new file mode 100644
index 00000000..8806b4ba
--- /dev/null
+++ b/backend/.env
@@ -0,0 +1,32 @@
+# This file defines all environment variables that the application needs.
+# DO NOT DEFINE PRODUCTION SECRETS IN THIS FILE.
+# Use ".env.local" for local overrides during development.
+# Use real environment variables when deploying to production.
+# https://symfony.com/doc/current/best_practices/configuration.html#infrastructure-related-configuration
+
+###> symfony/framework-bundle ###
+APP_ENV=dev
+APP_SECRET=28eed23a077d50991e406fa7d4cf4175
+#TRUSTED_PROXIES=127.0.0.1,127.0.0.2
+#TRUSTED_HOSTS='^localhost|example\.com$'
+###< symfony/framework-bundle ###
+
+###> doctrine/doctrine-bundle ###
+# Format described at http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url
+# For an SQLite database, use: "sqlite:///%kernel.project_dir%/var/data.db"
+# Configure your db driver and server_version in config/packages/doctrine.yaml
+DATABASE_URL=pgsql://root:root@database:5432/phpdocker
+###< doctrine/doctrine-bundle ###
+
+###> nelmio/cors-bundle ###
+CORS_ALLOW_ORIGIN=^https?://(localhost|phpdocker\.local)(:[0-9]+)?$
+###< nelmio/cors-bundle ###
+
+###> symfony/swiftmailer-bundle ###
+# For Gmail as a transport, use: "gmail://username:password@localhost"
+# For a generic SMTP server, use: "smtp://localhost:25?encryption=&auth_mode="
+# Delivery is disabled by default via "null://localhost"
+MAILER_URL=smtp://mailhog:1025
+###< symfony/swiftmailer-bundle ###
+
+CONTACT_EMAIL_TO=foo@bar.com
diff --git a/backend/.env.test b/backend/.env.test
new file mode 100644
index 00000000..414430e7
--- /dev/null
+++ b/backend/.env.test
@@ -0,0 +1,4 @@
+# define your env variables for the test env here
+KERNEL_CLASS='App\Kernel'
+APP_SECRET='s$cretf0rt3st'
+SYMFONY_DEPRECATIONS_HELPER=999999
diff --git a/backend/.gitignore b/backend/.gitignore
new file mode 100644
index 00000000..4c325c0c
--- /dev/null
+++ b/backend/.gitignore
@@ -0,0 +1,20 @@
+
+###> symfony/framework-bundle ###
+/.env.local
+/.env.*.local
+/public/bundles/
+/var/
+/vendor/
+###< symfony/framework-bundle ###
+
+###> phpunit/phpunit ###
+/phpunit.xml
+.phpunit.result.cache
+###< phpunit/phpunit ###
+
+/reports/
+
+###> symfony/phpunit-bridge ###
+.phpunit
+/phpunit.xml
+###< symfony/phpunit-bridge ###
diff --git a/backend/bin/console b/backend/bin/console
new file mode 100755
index 00000000..5de0e1c5
--- /dev/null
+++ b/backend/bin/console
@@ -0,0 +1,42 @@
+#!/usr/bin/env php
+getParameterOption(['--env', '-e'], null, true)) {
+ putenv('APP_ENV='.$_SERVER['APP_ENV'] = $_ENV['APP_ENV'] = $env);
+}
+
+if ($input->hasParameterOption('--no-debug', true)) {
+ putenv('APP_DEBUG='.$_SERVER['APP_DEBUG'] = $_ENV['APP_DEBUG'] = '0');
+}
+
+require dirname(__DIR__).'/config/bootstrap.php';
+
+if ($_SERVER['APP_DEBUG']) {
+ umask(0000);
+
+ if (class_exists(Debug::class)) {
+ Debug::enable();
+ }
+}
+
+$kernel = new Kernel($_SERVER['APP_ENV'], (bool) $_SERVER['APP_DEBUG']);
+$application = new Application($kernel);
+$application->run($input);
diff --git a/backend/bin/wait-for-db.sh b/backend/bin/wait-for-db.sh
new file mode 100755
index 00000000..d9928190
--- /dev/null
+++ b/backend/bin/wait-for-db.sh
@@ -0,0 +1,8 @@
+#!/usr/bin/env bash
+
+RETRIES=5
+
+until psql -h localhost -U $POSTGRES_USER -d $POSTGRES_DB -c "select 1" > /dev/null 2>&1 || [ $RETRIES -eq 0 ]; do
+ echo "Waiting for postgres server, $((RETRIES--)) remaining attempts..."
+ sleep 1
+done
diff --git a/backend/composer.json b/backend/composer.json
new file mode 100644
index 00000000..21ce42b9
--- /dev/null
+++ b/backend/composer.json
@@ -0,0 +1,81 @@
+{
+ "type": "project",
+ "license": "proprietary",
+ "require": {
+ "php": "^7.3.0",
+ "ext-ctype": "*",
+ "ext-iconv": "*",
+ "ext-zip": "^1.15",
+ "antishov/doctrine-extensions-bundle": "^1.3",
+ "api-platform/api-pack": "^1.1",
+ "cocur/slugify": "^4.0",
+ "gedmo/doctrine-extensions": "^2.4",
+ "limenius/liform-bundle": "^0.16.0",
+ "michelf/php-markdown": "^1.8",
+ "sensio/framework-extra-bundle": "^5.2",
+ "symfony/cache": "^5.0",
+ "symfony/console": "^5.0",
+ "symfony/dotenv": "^5.0",
+ "symfony/flex": "^1.1",
+ "symfony/form": "^5.0",
+ "symfony/framework-bundle": "^5.0",
+ "symfony/monolog-bundle": "^3.3",
+ "symfony/orm-pack": "^1.0",
+ "symfony/serializer-pack": "^1.0",
+ "symfony/swiftmailer-bundle": "^3.2",
+ "symfony/validator": "^5.0",
+ "symfony/yaml": "^5.0"
+ },
+ "require-dev": {
+ "doctrine/doctrine-fixtures-bundle": "^3.1",
+ "nelmio/alice": "^3.5",
+ "symfony/debug-pack": "^1.0"
+ },
+ "config": {
+ "preferred-install": {
+ "*": "dist"
+ },
+ "sort-packages": true
+ },
+ "autoload": {
+ "psr-4": {
+ "App\\": "src/App/",
+ "DoctrineMigrations\\": "src/Migrations/",
+ "PHPDocker\\": "src/PHPDocker/"
+ }
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "App\\Tests\\": "tests/"
+ }
+ },
+ "replace": {
+ "paragonie/random_compat": "2.*",
+ "symfony/polyfill-ctype": "*",
+ "symfony/polyfill-iconv": "*",
+ "symfony/polyfill-php71": "*",
+ "symfony/polyfill-php70": "*",
+ "symfony/polyfill-php56": "*"
+ },
+ "scripts": {
+ "auto-scripts": {
+ "cache:clear": "symfony-cmd",
+ "assets:install %PUBLIC_DIR%": "symfony-cmd"
+ },
+ "post-install-cmd": [
+ "@auto-scripts"
+ ],
+ "post-update-cmd": [
+ "@auto-scripts"
+ ]
+ },
+ "conflict": {
+ "symfony/symfony": "*"
+ },
+ "extra": {
+ "symfony": {
+ "allow-contrib": false,
+ "require": "^5.0"
+ }
+ }
+}
diff --git a/backend/composer.lock b/backend/composer.lock
new file mode 100644
index 00000000..7fae2761
--- /dev/null
+++ b/backend/composer.lock
@@ -0,0 +1,8780 @@
+{
+ "_readme": [
+ "This file locks the dependencies of your project to a known state",
+ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
+ "This file is @generated automatically"
+ ],
+ "content-hash": "28c29dd0c5f1f9c36e11c58348aa92a3",
+ "packages": [
+ {
+ "name": "antishov/doctrine-extensions-bundle",
+ "version": "v1.4.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/antishov/StofDoctrineExtensionsBundle.git",
+ "reference": "b036a8d62111c03f237a619b1840c46570f48483"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/antishov/StofDoctrineExtensionsBundle/zipball/b036a8d62111c03f237a619b1840c46570f48483",
+ "reference": "b036a8d62111c03f237a619b1840c46570f48483",
+ "shasum": ""
+ },
+ "require": {
+ "gedmo/doctrine-extensions": "^2.3.4 || ^3.0",
+ "php": "^7.2.5 || ^8.0",
+ "symfony/framework-bundle": "^4.4|^5.0",
+ "symfony/mime": "^4.3|^5.0"
+ },
+ "replace": {
+ "stof/doctrine-extensions-bundle": "self.version"
+ },
+ "require-dev": {
+ "symfony/phpunit-bridge": "^4.4|^5.0",
+ "symfony/security-bundle": "^4.4|^5.0"
+ },
+ "suggest": {
+ "doctrine/doctrine-bundle": "to use the ORM extensions",
+ "doctrine/mongodb-odm-bundle": "to use the MongoDB ODM extensions"
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Stof\\DoctrineExtensionsBundle\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Antishov Viktor",
+ "email": "antishov.viktor@gmail.com"
+ },
+ {
+ "name": "Christophe Coevoet",
+ "email": "stof@notk.org"
+ }
+ ],
+ "description": "Forked from stof/doctrine-extensions-bundle integration of the gedmo/doctrine-extensions with Symfony 4",
+ "homepage": "https://github.com/antishov/StofDoctrineExtensionsBundle",
+ "keywords": [
+ "behaviors",
+ "doctrine2",
+ "extensions",
+ "gedmo",
+ "loggable",
+ "nestedset",
+ "sluggable",
+ "sortable",
+ "stof",
+ "timestampable",
+ "translatable",
+ "tree"
+ ],
+ "support": {
+ "issues": "https://github.com/antishov/StofDoctrineExtensionsBundle/issues",
+ "source": "https://github.com/antishov/StofDoctrineExtensionsBundle/tree/v1.4.3"
+ },
+ "time": "2020-12-10T20:46:02+00:00"
+ },
+ {
+ "name": "api-platform/api-pack",
+ "version": "v1.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/api-platform/api-pack.git",
+ "reference": "0fb12343362f565b65eb374d3c49bec580ffcf8d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/api-platform/api-pack/zipball/0fb12343362f565b65eb374d3c49bec580ffcf8d",
+ "reference": "0fb12343362f565b65eb374d3c49bec580ffcf8d",
+ "shasum": ""
+ },
+ "require": {
+ "api-platform/core": "*",
+ "nelmio/cors-bundle": "*",
+ "symfony/asset": "*",
+ "symfony/expression-language": "*",
+ "symfony/orm-pack": "*",
+ "symfony/security-bundle": "*",
+ "symfony/serializer-pack": "*",
+ "symfony/twig-bundle": "*",
+ "symfony/validator": "*"
+ },
+ "type": "symfony-pack",
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "A pack for API Platform",
+ "support": {
+ "issues": "https://github.com/api-platform/api-pack/issues",
+ "source": "https://github.com/api-platform/api-pack/tree/v1.3.0"
+ },
+ "time": "2020-08-28T20:27:34+00:00"
+ },
+ {
+ "name": "api-platform/core",
+ "version": "v2.5.9",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/api-platform/core.git",
+ "reference": "4f05477b5ec5cff7c9324a7510900db2a1173d70"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/api-platform/core/zipball/4f05477b5ec5cff7c9324a7510900db2a1173d70",
+ "reference": "4f05477b5ec5cff7c9324a7510900db2a1173d70",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/inflector": "^1.0 || ^2.0",
+ "fig/link-util": "^1.0",
+ "php": ">=7.1",
+ "psr/cache": "^1.0",
+ "psr/container": "^1.0",
+ "symfony/http-foundation": "^4.4 || ^5.1",
+ "symfony/http-kernel": "^4.4 || ^5.1",
+ "symfony/property-access": "^3.4.19 || ^4.4 || ^5.1",
+ "symfony/property-info": "^3.4 || ^4.4 || ^5.1",
+ "symfony/serializer": "^4.4 || ^5.1",
+ "symfony/web-link": "^4.4 || ^5.1",
+ "willdurand/negotiation": "^2.0.3 || ^3.0"
+ },
+ "conflict": {
+ "doctrine/common": "<2.7",
+ "doctrine/mongodb-odm": "<2.0",
+ "doctrine/persistence": "<1.3"
+ },
+ "require-dev": {
+ "behat/behat": "^3.1",
+ "behat/mink": "^1.7",
+ "doctrine/annotations": "^1.7",
+ "doctrine/common": "^2.11 || ^3.0",
+ "doctrine/data-fixtures": "^1.2.2",
+ "doctrine/doctrine-bundle": "^1.12 || ^2.0",
+ "doctrine/mongodb-odm": "^2.0",
+ "doctrine/mongodb-odm-bundle": "^4.0",
+ "doctrine/orm": "^2.6.4 || ^3.0",
+ "elasticsearch/elasticsearch": "^6.0 || ^7.0",
+ "friends-of-behat/mink-browserkit-driver": "^1.3.1",
+ "friends-of-behat/mink-extension": "^2.2",
+ "friends-of-behat/symfony-extension": "^2.1",
+ "guzzlehttp/guzzle": "^6.0 || ^7.0",
+ "jangregor/phpstan-prophecy": "^0.8",
+ "justinrainbow/json-schema": "^5.2.1",
+ "phpdocumentor/reflection-docblock": "^3.0 || ^4.0 || ^5.1",
+ "phpdocumentor/type-resolver": "^0.3 || ^0.4 || ^1.4",
+ "phpstan/extension-installer": "^1.0",
+ "phpstan/phpstan": "^0.12.53@dev",
+ "phpstan/phpstan-doctrine": "^0.12.7",
+ "phpstan/phpstan-phpunit": "^0.12.4",
+ "phpstan/phpstan-symfony": "^0.12.4",
+ "psr/log": "^1.0",
+ "ramsey/uuid": "^3.7 || ^4.0",
+ "ramsey/uuid-doctrine": "^1.4",
+ "soyuka/contexts": "^3.3.1",
+ "soyuka/stubs-mongodb": "^1.0",
+ "symfony/asset": "^3.4 || ^4.4 || ^5.1",
+ "symfony/browser-kit": "^4.4 || ^5.1",
+ "symfony/cache": "^3.4 || ^4.4 || ^5.1",
+ "symfony/config": "^3.4 || ^4.4 || ^5.1",
+ "symfony/console": "^3.4 || ^4.4 || ^5.1",
+ "symfony/css-selector": "^3.4 || ^4.4 || ^5.1",
+ "symfony/debug": "^3.4 || ^4.4 || ^5.1",
+ "symfony/dependency-injection": "^3.4 || ^4.4 || ^5.1",
+ "symfony/doctrine-bridge": "^3.4 || ^4.4 || ^5.1",
+ "symfony/dom-crawler": "^3.4 || ^4.4 || ^5.1",
+ "symfony/event-dispatcher": "^3.4 || ^4.4 || ^5.1",
+ "symfony/expression-language": "^3.4 || ^4.4 || ^5.1",
+ "symfony/finder": "^3.4 || ^4.4 || ^5.1",
+ "symfony/form": "^3.4 || ^4.4 || ^5.1",
+ "symfony/framework-bundle": "^4.4 || ^5.1",
+ "symfony/http-client": "^4.4 || ^5.1",
+ "symfony/mercure-bundle": "*",
+ "symfony/messenger": "^4.4 || ^5.1",
+ "symfony/phpunit-bridge": "^5.1.7",
+ "symfony/routing": "^3.4 || ^4.4 || ^5.1",
+ "symfony/security-bundle": "^3.4 || ^4.4 || ^5.1",
+ "symfony/security-core": "^4.4 || ^5.1",
+ "symfony/twig-bundle": "^3.4 || ^4.4 || ^5.1",
+ "symfony/validator": "^3.4 || ^4.4 || ^5.1",
+ "symfony/web-profiler-bundle": "^4.4 || ^5.1",
+ "symfony/yaml": "^3.4 || ^4.4 || ^5.1",
+ "twig/twig": "^1.42.3 || ^2.12 || ^3.0",
+ "webonyx/graphql-php": "^14.0"
+ },
+ "suggest": {
+ "doctrine/mongodb-odm-bundle": "To support MongoDB. Only versions 4.0 and later are supported.",
+ "elasticsearch/elasticsearch": "To support Elasticsearch.",
+ "guzzlehttp/guzzle": "To use the HTTP cache invalidation system.",
+ "phpdocumentor/reflection-docblock": "To support extracting metadata from PHPDoc.",
+ "psr/cache-implementation": "To use metadata caching.",
+ "ramsey/uuid": "To support Ramsey's UUID identifiers.",
+ "symfony/cache": "To have metadata caching when using Symfony integration.",
+ "symfony/config": "To load XML configuration files.",
+ "symfony/expression-language": "To use authorization features.",
+ "symfony/security": "To use authorization features.",
+ "symfony/twig-bundle": "To use the Swagger UI integration.",
+ "symfony/web-profiler-bundle": "To use the data collector.",
+ "webonyx/graphql-php": "To support GraphQL."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.5.x-dev"
+ },
+ "symfony": {
+ "require": "^3.4 || ^4.4 || ^5.1"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "ApiPlatform\\Core\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Kévin Dunglas",
+ "email": "dunglas@gmail.com",
+ "homepage": "https://dunglas.fr"
+ }
+ ],
+ "description": "Build a fully-featured hypermedia or GraphQL API in minutes!",
+ "homepage": "https://api-platform.com",
+ "keywords": [
+ "Hydra",
+ "JSON-LD",
+ "api",
+ "graphql",
+ "hal",
+ "jsonapi",
+ "openapi",
+ "rest",
+ "swagger"
+ ],
+ "support": {
+ "issues": "https://github.com/api-platform/core/issues",
+ "source": "https://github.com/api-platform/core/tree/v2.5.9"
+ },
+ "funding": [
+ {
+ "url": "https://tidelift.com/funding/github/packagist/api-platform/core",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-12-17T15:47:58+00:00"
+ },
+ {
+ "name": "behat/transliterator",
+ "version": "v1.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Behat/Transliterator.git",
+ "reference": "3c4ec1d77c3d05caa1f0bf8fb3aae4845005c7fc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Behat/Transliterator/zipball/3c4ec1d77c3d05caa1f0bf8fb3aae4845005c7fc",
+ "reference": "3c4ec1d77c3d05caa1f0bf8fb3aae4845005c7fc",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "require-dev": {
+ "chuyskywalker/rolling-curl": "^3.1",
+ "php-yaoi/php-yaoi": "^1.0",
+ "phpunit/phpunit": "^4.8.36|^6.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Behat\\Transliterator\\": "src/Behat/Transliterator"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "Artistic-1.0"
+ ],
+ "description": "String transliterator",
+ "keywords": [
+ "i18n",
+ "slug",
+ "transliterator"
+ ],
+ "support": {
+ "issues": "https://github.com/Behat/Transliterator/issues",
+ "source": "https://github.com/Behat/Transliterator/tree/v1.3.0"
+ },
+ "time": "2020-01-14T16:39:13+00:00"
+ },
+ {
+ "name": "cocur/slugify",
+ "version": "v4.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/cocur/slugify.git",
+ "reference": "3f1ffc300f164f23abe8b64ffb3f92d35cec8307"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/cocur/slugify/zipball/3f1ffc300f164f23abe8b64ffb3f92d35cec8307",
+ "reference": "3f1ffc300f164f23abe8b64ffb3f92d35cec8307",
+ "shasum": ""
+ },
+ "require": {
+ "ext-mbstring": "*",
+ "php": ">=7.0"
+ },
+ "conflict": {
+ "symfony/config": "<3.4 || >=4,<4.3",
+ "symfony/dependency-injection": "<3.4 || >=4,<4.3",
+ "symfony/http-kernel": "<3.4 || >=4,<4.3",
+ "twig/twig": "<2.12.1"
+ },
+ "require-dev": {
+ "laravel/framework": "~5.1",
+ "latte/latte": "~2.2",
+ "league/container": "^2.2.0",
+ "mikey179/vfsstream": "~1.6.8",
+ "mockery/mockery": "^1.3",
+ "nette/di": "~2.4",
+ "phpunit/phpunit": "^5.7.27",
+ "pimple/pimple": "~1.1",
+ "plumphp/plum": "~0.1",
+ "symfony/config": "^3.4 || ^4.3 || ^5.0",
+ "symfony/dependency-injection": "^3.4 || ^4.3 || ^5.0",
+ "symfony/http-kernel": "^3.4 || ^4.3 || ^5.0",
+ "twig/twig": "^2.12.1 || ~3.0",
+ "zendframework/zend-modulemanager": "~2.2",
+ "zendframework/zend-servicemanager": "~2.2",
+ "zendframework/zend-view": "~2.2"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Cocur\\Slugify\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Florian Eckerstorfer",
+ "email": "florian@eckerstorfer.co",
+ "homepage": "https://florian.ec"
+ },
+ {
+ "name": "Ivo Bathke",
+ "email": "ivo.bathke@gmail.com"
+ }
+ ],
+ "description": "Converts a string into a slug.",
+ "keywords": [
+ "slug",
+ "slugify"
+ ],
+ "support": {
+ "issues": "https://github.com/cocur/slugify/issues",
+ "source": "https://github.com/cocur/slugify/tree/master"
+ },
+ "time": "2019-12-14T13:04:14+00:00"
+ },
+ {
+ "name": "composer/package-versions-deprecated",
+ "version": "1.11.99.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/package-versions-deprecated.git",
+ "reference": "7413f0b55a051e89485c5cb9f765fe24bb02a7b6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/7413f0b55a051e89485c5cb9f765fe24bb02a7b6",
+ "reference": "7413f0b55a051e89485c5cb9f765fe24bb02a7b6",
+ "shasum": ""
+ },
+ "require": {
+ "composer-plugin-api": "^1.1.0 || ^2.0",
+ "php": "^7 || ^8"
+ },
+ "replace": {
+ "ocramius/package-versions": "1.11.99"
+ },
+ "require-dev": {
+ "composer/composer": "^1.9.3 || ^2.0@dev",
+ "ext-zip": "^1.13",
+ "phpunit/phpunit": "^6.5 || ^7"
+ },
+ "type": "composer-plugin",
+ "extra": {
+ "class": "PackageVersions\\Installer",
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "PackageVersions\\": "src/PackageVersions"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com"
+ },
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be"
+ }
+ ],
+ "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)",
+ "support": {
+ "issues": "https://github.com/composer/package-versions-deprecated/issues",
+ "source": "https://github.com/composer/package-versions-deprecated/tree/1.11.99.1"
+ },
+ "funding": [
+ {
+ "url": "https://packagist.com",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/composer",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-11-11T10:22:58+00:00"
+ },
+ {
+ "name": "doctrine/annotations",
+ "version": "1.11.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/annotations.git",
+ "reference": "ce77a7ba1770462cd705a91a151b6c3746f9c6ad"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/annotations/zipball/ce77a7ba1770462cd705a91a151b6c3746f9c6ad",
+ "reference": "ce77a7ba1770462cd705a91a151b6c3746f9c6ad",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/lexer": "1.*",
+ "ext-tokenizer": "*",
+ "php": "^7.1 || ^8.0"
+ },
+ "require-dev": {
+ "doctrine/cache": "1.*",
+ "doctrine/coding-standard": "^6.0 || ^8.1",
+ "phpstan/phpstan": "^0.12.20",
+ "phpunit/phpunit": "^7.5 || ^9.1.5"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.11.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "Docblock Annotations Parser",
+ "homepage": "https://www.doctrine-project.org/projects/annotations.html",
+ "keywords": [
+ "annotations",
+ "docblock",
+ "parser"
+ ],
+ "support": {
+ "issues": "https://github.com/doctrine/annotations/issues",
+ "source": "https://github.com/doctrine/annotations/tree/1.11.1"
+ },
+ "time": "2020-10-26T10:28:16+00:00"
+ },
+ {
+ "name": "doctrine/cache",
+ "version": "1.10.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/cache.git",
+ "reference": "13e3381b25847283a91948d04640543941309727"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/cache/zipball/13e3381b25847283a91948d04640543941309727",
+ "reference": "13e3381b25847283a91948d04640543941309727",
+ "shasum": ""
+ },
+ "require": {
+ "php": "~7.1 || ^8.0"
+ },
+ "conflict": {
+ "doctrine/common": ">2.2,<2.4"
+ },
+ "require-dev": {
+ "alcaeus/mongo-php-adapter": "^1.1",
+ "doctrine/coding-standard": "^6.0",
+ "mongodb/mongodb": "^1.1",
+ "phpunit/phpunit": "^7.0",
+ "predis/predis": "~1.0"
+ },
+ "suggest": {
+ "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.9.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.",
+ "homepage": "https://www.doctrine-project.org/projects/cache.html",
+ "keywords": [
+ "abstraction",
+ "apcu",
+ "cache",
+ "caching",
+ "couchdb",
+ "memcached",
+ "php",
+ "redis",
+ "xcache"
+ ],
+ "support": {
+ "issues": "https://github.com/doctrine/cache/issues",
+ "source": "https://github.com/doctrine/cache/tree/1.10.x"
+ },
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcache",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-07-07T18:54:01+00:00"
+ },
+ {
+ "name": "doctrine/collections",
+ "version": "1.6.7",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/collections.git",
+ "reference": "55f8b799269a1a472457bd1a41b4f379d4cfba4a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/collections/zipball/55f8b799269a1a472457bd1a41b4f379d4cfba4a",
+ "reference": "55f8b799269a1a472457bd1a41b4f379d4cfba4a",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3 || ^8.0"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^6.0",
+ "phpstan/phpstan-shim": "^0.9.2",
+ "phpunit/phpunit": "^7.0",
+ "vimeo/psalm": "^3.8.1"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Common\\Collections\\": "lib/Doctrine/Common/Collections"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "PHP Doctrine Collections library that adds additional functionality on top of PHP arrays.",
+ "homepage": "https://www.doctrine-project.org/projects/collections.html",
+ "keywords": [
+ "array",
+ "collections",
+ "iterators",
+ "php"
+ ],
+ "support": {
+ "issues": "https://github.com/doctrine/collections/issues",
+ "source": "https://github.com/doctrine/collections/tree/1.6.7"
+ },
+ "time": "2020-07-27T17:53:49+00:00"
+ },
+ {
+ "name": "doctrine/common",
+ "version": "2.13.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/common.git",
+ "reference": "f3812c026e557892c34ef37f6ab808a6b567da7f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/common/zipball/f3812c026e557892c34ef37f6ab808a6b567da7f",
+ "reference": "f3812c026e557892c34ef37f6ab808a6b567da7f",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/annotations": "^1.0",
+ "doctrine/cache": "^1.0",
+ "doctrine/collections": "^1.0",
+ "doctrine/event-manager": "^1.0",
+ "doctrine/inflector": "^1.0",
+ "doctrine/lexer": "^1.0",
+ "doctrine/persistence": "^1.3.3",
+ "doctrine/reflection": "^1.0",
+ "php": "^7.1 || ^8.0"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^1.0",
+ "phpstan/phpstan": "^0.11",
+ "phpstan/phpstan-phpunit": "^0.11",
+ "phpunit/phpunit": "^7.0",
+ "squizlabs/php_codesniffer": "^3.0",
+ "symfony/phpunit-bridge": "^4.0.5"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.11.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Common\\": "lib/Doctrine/Common"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ },
+ {
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com"
+ }
+ ],
+ "description": "PHP Doctrine Common project is a library that provides additional functionality that other Doctrine projects depend on such as better reflection support, persistence interfaces, proxies, event system and much more.",
+ "homepage": "https://www.doctrine-project.org/projects/common.html",
+ "keywords": [
+ "common",
+ "doctrine",
+ "php"
+ ],
+ "support": {
+ "issues": "https://github.com/doctrine/common/issues",
+ "source": "https://github.com/doctrine/common/tree/2.13.x"
+ },
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcommon",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-06-05T16:46:05+00:00"
+ },
+ {
+ "name": "doctrine/dbal",
+ "version": "2.12.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/dbal.git",
+ "reference": "adce7a954a1c2f14f85e94aed90c8489af204086"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/dbal/zipball/adce7a954a1c2f14f85e94aed90c8489af204086",
+ "reference": "adce7a954a1c2f14f85e94aed90c8489af204086",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/cache": "^1.0",
+ "doctrine/event-manager": "^1.0",
+ "ext-pdo": "*",
+ "php": "^7.3 || ^8"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^8.1",
+ "jetbrains/phpstorm-stubs": "^2019.1",
+ "phpstan/phpstan": "^0.12.40",
+ "phpunit/phpunit": "^9.4",
+ "psalm/plugin-phpunit": "^0.10.0",
+ "symfony/console": "^2.0.5|^3.0|^4.0|^5.0",
+ "vimeo/psalm": "^3.17.2"
+ },
+ "suggest": {
+ "symfony/console": "For helpful console commands such as SQL execution and import of files."
+ },
+ "bin": [
+ "bin/doctrine-dbal"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\DBAL\\": "lib/Doctrine/DBAL"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ }
+ ],
+ "description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.",
+ "homepage": "https://www.doctrine-project.org/projects/dbal.html",
+ "keywords": [
+ "abstraction",
+ "database",
+ "db2",
+ "dbal",
+ "mariadb",
+ "mssql",
+ "mysql",
+ "oci8",
+ "oracle",
+ "pdo",
+ "pgsql",
+ "postgresql",
+ "queryobject",
+ "sasql",
+ "sql",
+ "sqlanywhere",
+ "sqlite",
+ "sqlserver",
+ "sqlsrv"
+ ],
+ "support": {
+ "issues": "https://github.com/doctrine/dbal/issues",
+ "source": "https://github.com/doctrine/dbal/tree/2.12.1"
+ },
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdbal",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-11-14T20:26:58+00:00"
+ },
+ {
+ "name": "doctrine/doctrine-bundle",
+ "version": "2.2.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/DoctrineBundle.git",
+ "reference": "044d33eeffdb236d5013b6b4af99f87519e10751"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/044d33eeffdb236d5013b6b4af99f87519e10751",
+ "reference": "044d33eeffdb236d5013b6b4af99f87519e10751",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/dbal": "^2.9.0|^3.0",
+ "doctrine/persistence": "^1.3.3|^2.0",
+ "doctrine/sql-formatter": "^1.0.1",
+ "php": "^7.1 || ^8.0",
+ "symfony/cache": "^4.3.3|^5.0",
+ "symfony/config": "^4.3.3|^5.0",
+ "symfony/console": "^3.4.30|^4.3.3|^5.0",
+ "symfony/dependency-injection": "^4.3.3|^5.0",
+ "symfony/doctrine-bridge": "^4.3.7|^5.0",
+ "symfony/framework-bundle": "^3.4.30|^4.3.3|^5.0",
+ "symfony/service-contracts": "^1.1.1|^2.0"
+ },
+ "conflict": {
+ "doctrine/orm": "<2.6",
+ "twig/twig": "<1.34|>=2.0,<2.4"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^8.0",
+ "doctrine/orm": "^2.6",
+ "ocramius/proxy-manager": "^2.1",
+ "phpunit/phpunit": "^7.5 || ^8.0 || ^9.3",
+ "symfony/phpunit-bridge": "^4.2",
+ "symfony/property-info": "^4.3.3|^5.0",
+ "symfony/proxy-manager-bridge": "^3.4|^4.3.3|^5.0",
+ "symfony/twig-bridge": "^3.4.30|^4.3.3|^5.0",
+ "symfony/validator": "^3.4.30|^4.3.3|^5.0",
+ "symfony/web-profiler-bundle": "^3.4.30|^4.3.3|^5.0",
+ "symfony/yaml": "^3.4.30|^4.3.3|^5.0",
+ "twig/twig": "^1.34|^2.12|^3.0"
+ },
+ "suggest": {
+ "doctrine/orm": "The Doctrine ORM integration is optional in the bundle.",
+ "symfony/web-profiler-bundle": "To use the data collector."
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Bundle\\DoctrineBundle\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "http://symfony.com/contributors"
+ },
+ {
+ "name": "Doctrine Project",
+ "homepage": "http://www.doctrine-project.org/"
+ }
+ ],
+ "description": "Symfony DoctrineBundle",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "database",
+ "dbal",
+ "orm",
+ "persistence"
+ ],
+ "support": {
+ "issues": "https://github.com/doctrine/DoctrineBundle/issues",
+ "source": "https://github.com/doctrine/DoctrineBundle/tree/2.2.2"
+ },
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdoctrine-bundle",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-12-05T15:07:10+00:00"
+ },
+ {
+ "name": "doctrine/doctrine-migrations-bundle",
+ "version": "2.2.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/DoctrineMigrationsBundle.git",
+ "reference": "85f0b847174daf243362c7da80efe1539be64f47"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/85f0b847174daf243362c7da80efe1539be64f47",
+ "reference": "85f0b847174daf243362c7da80efe1539be64f47",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/doctrine-bundle": "~1.0|~2.0",
+ "doctrine/migrations": "^2.2",
+ "php": "^7.1|^8.0",
+ "symfony/framework-bundle": "~3.4|~4.0|~5.0"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^8.0",
+ "mikey179/vfsstream": "^1.6",
+ "phpstan/phpstan": "^0.12",
+ "phpstan/phpstan-strict-rules": "^0.12",
+ "phpunit/phpunit": "^7.0|^8.0|^9.0"
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Bundle\\MigrationsBundle\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Doctrine Project",
+ "homepage": "http://www.doctrine-project.org"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "http://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony DoctrineMigrationsBundle",
+ "homepage": "https://www.doctrine-project.org",
+ "keywords": [
+ "dbal",
+ "migrations",
+ "schema"
+ ],
+ "support": {
+ "issues": "https://github.com/doctrine/DoctrineMigrationsBundle/issues",
+ "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/2.2.2"
+ },
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdoctrine-migrations-bundle",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-12-23T15:06:17+00:00"
+ },
+ {
+ "name": "doctrine/event-manager",
+ "version": "1.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/event-manager.git",
+ "reference": "41370af6a30faa9dc0368c4a6814d596e81aba7f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/event-manager/zipball/41370af6a30faa9dc0368c4a6814d596e81aba7f",
+ "reference": "41370af6a30faa9dc0368c4a6814d596e81aba7f",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1 || ^8.0"
+ },
+ "conflict": {
+ "doctrine/common": "<2.9@dev"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^6.0",
+ "phpunit/phpunit": "^7.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Common\\": "lib/Doctrine/Common"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ },
+ {
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com"
+ }
+ ],
+ "description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.",
+ "homepage": "https://www.doctrine-project.org/projects/event-manager.html",
+ "keywords": [
+ "event",
+ "event dispatcher",
+ "event manager",
+ "event system",
+ "events"
+ ],
+ "support": {
+ "issues": "https://github.com/doctrine/event-manager/issues",
+ "source": "https://github.com/doctrine/event-manager/tree/1.1.x"
+ },
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fevent-manager",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-05-29T18:28:51+00:00"
+ },
+ {
+ "name": "doctrine/inflector",
+ "version": "1.4.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/inflector.git",
+ "reference": "4650c8b30c753a76bf44fb2ed00117d6f367490c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/inflector/zipball/4650c8b30c753a76bf44fb2ed00117d6f367490c",
+ "reference": "4650c8b30c753a76bf44fb2ed00117d6f367490c",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^7.0",
+ "phpstan/phpstan": "^0.11",
+ "phpstan/phpstan-phpunit": "^0.11",
+ "phpstan/phpstan-strict-rules": "^0.11",
+ "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector",
+ "Doctrine\\Inflector\\": "lib/Doctrine/Inflector"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.",
+ "homepage": "https://www.doctrine-project.org/projects/inflector.html",
+ "keywords": [
+ "inflection",
+ "inflector",
+ "lowercase",
+ "manipulation",
+ "php",
+ "plural",
+ "singular",
+ "strings",
+ "uppercase",
+ "words"
+ ],
+ "support": {
+ "issues": "https://github.com/doctrine/inflector/issues",
+ "source": "https://github.com/doctrine/inflector/tree/1.4.x"
+ },
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-05-29T07:19:59+00:00"
+ },
+ {
+ "name": "doctrine/instantiator",
+ "version": "1.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/instantiator.git",
+ "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b",
+ "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1 || ^8.0"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^8.0",
+ "ext-pdo": "*",
+ "ext-phar": "*",
+ "phpbench/phpbench": "^0.13 || 1.0.0-alpha2",
+ "phpstan/phpstan": "^0.12",
+ "phpstan/phpstan-phpunit": "^0.12",
+ "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com",
+ "homepage": "https://ocramius.github.io/"
+ }
+ ],
+ "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
+ "homepage": "https://www.doctrine-project.org/projects/instantiator.html",
+ "keywords": [
+ "constructor",
+ "instantiate"
+ ],
+ "support": {
+ "issues": "https://github.com/doctrine/instantiator/issues",
+ "source": "https://github.com/doctrine/instantiator/tree/1.4.0"
+ },
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-11-10T18:47:58+00:00"
+ },
+ {
+ "name": "doctrine/lexer",
+ "version": "1.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/lexer.git",
+ "reference": "e864bbf5904cb8f5bb334f99209b48018522f042"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/lexer/zipball/e864bbf5904cb8f5bb334f99209b48018522f042",
+ "reference": "e864bbf5904cb8f5bb334f99209b48018522f042",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^6.0",
+ "phpstan/phpstan": "^0.11.8",
+ "phpunit/phpunit": "^8.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.",
+ "homepage": "https://www.doctrine-project.org/projects/lexer.html",
+ "keywords": [
+ "annotations",
+ "docblock",
+ "lexer",
+ "parser",
+ "php"
+ ],
+ "support": {
+ "issues": "https://github.com/doctrine/lexer/issues",
+ "source": "https://github.com/doctrine/lexer/tree/1.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-05-25T17:44:05+00:00"
+ },
+ {
+ "name": "doctrine/migrations",
+ "version": "2.3.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/migrations.git",
+ "reference": "39520699043d9bfaaebeb81fa026bf2b02a8f735"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/migrations/zipball/39520699043d9bfaaebeb81fa026bf2b02a8f735",
+ "reference": "39520699043d9bfaaebeb81fa026bf2b02a8f735",
+ "shasum": ""
+ },
+ "require": {
+ "composer/package-versions-deprecated": "^1.8",
+ "doctrine/dbal": "^2.9",
+ "friendsofphp/proxy-manager-lts": "^1.0",
+ "php": "^7.1 || ^8.0",
+ "symfony/console": "^3.4||^4.4.16||^5.0",
+ "symfony/stopwatch": "^3.4||^4.0||^5.0"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^8.2",
+ "doctrine/orm": "^2.6",
+ "ext-pdo_sqlite": "*",
+ "jdorn/sql-formatter": "^1.1",
+ "mikey179/vfsstream": "^1.6",
+ "phpstan/phpstan": "^0.12",
+ "phpstan/phpstan-deprecation-rules": "^0.12",
+ "phpstan/phpstan-phpunit": "^0.12",
+ "phpstan/phpstan-strict-rules": "^0.12",
+ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.4",
+ "symfony/process": "^3.4||^4.0||^5.0",
+ "symfony/yaml": "^3.4||^4.0||^5.0"
+ },
+ "suggest": {
+ "jdorn/sql-formatter": "Allows to generate formatted SQL with the diff command.",
+ "symfony/yaml": "Allows the use of yaml for migration configuration files."
+ },
+ "bin": [
+ "bin/doctrine-migrations"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Migrations\\": "lib/Doctrine/Migrations"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Michael Simonson",
+ "email": "contact@mikesimonson.com"
+ }
+ ],
+ "description": "PHP Doctrine Migrations project offer additional functionality on top of the database abstraction layer (DBAL) for versioning your database schema and easily deploying changes to it. It is a very easy to use and a powerful tool.",
+ "homepage": "https://www.doctrine-project.org/projects/migrations.html",
+ "keywords": [
+ "database",
+ "dbal",
+ "migrations",
+ "php"
+ ],
+ "support": {
+ "issues": "https://github.com/doctrine/migrations/issues",
+ "source": "https://github.com/doctrine/migrations/tree/2.3.2"
+ },
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fmigrations",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-12-23T14:06:04+00:00"
+ },
+ {
+ "name": "doctrine/orm",
+ "version": "2.7.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/orm.git",
+ "reference": "01187c9260cd085529ddd1273665217cae659640"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/orm/zipball/01187c9260cd085529ddd1273665217cae659640",
+ "reference": "01187c9260cd085529ddd1273665217cae659640",
+ "shasum": ""
+ },
+ "require": {
+ "composer/package-versions-deprecated": "^1.8",
+ "doctrine/annotations": "^1.11.1",
+ "doctrine/cache": "^1.9.1",
+ "doctrine/collections": "^1.5",
+ "doctrine/common": "^2.11 || ^3.0",
+ "doctrine/dbal": "^2.9.3",
+ "doctrine/event-manager": "^1.1",
+ "doctrine/inflector": "^1.0",
+ "doctrine/instantiator": "^1.3",
+ "doctrine/lexer": "^1.0",
+ "doctrine/persistence": "^1.3.3 || ^2.0",
+ "ext-pdo": "*",
+ "php": "^7.1",
+ "symfony/console": "^3.0|^4.0|^5.0"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^6.0",
+ "phpstan/phpstan": "^0.12.18",
+ "phpunit/phpunit": "^8.0",
+ "symfony/yaml": "^3.4|^4.0|^5.0",
+ "vimeo/psalm": "^3.11"
+ },
+ "suggest": {
+ "symfony/yaml": "If you want to use YAML Metadata Mapping Driver"
+ },
+ "bin": [
+ "bin/doctrine"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.7.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\ORM\\": "lib/Doctrine/ORM"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com"
+ }
+ ],
+ "description": "Object-Relational-Mapper for PHP",
+ "homepage": "https://www.doctrine-project.org/projects/orm.html",
+ "keywords": [
+ "database",
+ "orm"
+ ],
+ "support": {
+ "issues": "https://github.com/doctrine/orm/issues",
+ "source": "https://github.com/doctrine/orm/tree/2.7.5"
+ },
+ "time": "2020-12-03T08:52:14+00:00"
+ },
+ {
+ "name": "doctrine/persistence",
+ "version": "1.3.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/persistence.git",
+ "reference": "7a6eac9fb6f61bba91328f15aa7547f4806ca288"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/persistence/zipball/7a6eac9fb6f61bba91328f15aa7547f4806ca288",
+ "reference": "7a6eac9fb6f61bba91328f15aa7547f4806ca288",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/annotations": "^1.0",
+ "doctrine/cache": "^1.0",
+ "doctrine/collections": "^1.0",
+ "doctrine/event-manager": "^1.0",
+ "doctrine/reflection": "^1.2",
+ "php": "^7.1 || ^8.0"
+ },
+ "conflict": {
+ "doctrine/common": "<2.10@dev"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^6.0",
+ "phpstan/phpstan": "^0.11",
+ "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0",
+ "vimeo/psalm": "^3.11"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Common\\": "lib/Doctrine/Common",
+ "Doctrine\\Persistence\\": "lib/Doctrine/Persistence"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ },
+ {
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com"
+ }
+ ],
+ "description": "The Doctrine Persistence project is a set of shared interfaces and functionality that the different Doctrine object mappers share.",
+ "homepage": "https://doctrine-project.org/projects/persistence.html",
+ "keywords": [
+ "mapper",
+ "object",
+ "odm",
+ "orm",
+ "persistence"
+ ],
+ "support": {
+ "issues": "https://github.com/doctrine/persistence/issues",
+ "source": "https://github.com/doctrine/persistence/tree/1.3.x"
+ },
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fpersistence",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-06-20T12:56:16+00:00"
+ },
+ {
+ "name": "doctrine/reflection",
+ "version": "1.2.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/reflection.git",
+ "reference": "fa587178be682efe90d005e3a322590d6ebb59a5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/reflection/zipball/fa587178be682efe90d005e3a322590d6ebb59a5",
+ "reference": "fa587178be682efe90d005e3a322590d6ebb59a5",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/annotations": "^1.0",
+ "ext-tokenizer": "*",
+ "php": "^7.1 || ^8.0"
+ },
+ "conflict": {
+ "doctrine/common": "<2.9"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^6.0 || ^8.2.0",
+ "doctrine/common": "^2.10",
+ "phpstan/phpstan": "^0.11.0 || ^0.12.20",
+ "phpstan/phpstan-phpunit": "^0.11.0 || ^0.12.16",
+ "phpunit/phpunit": "^7.5 || ^9.1.5"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Common\\": "lib/Doctrine/Common"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ },
+ {
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com"
+ }
+ ],
+ "description": "The Doctrine Reflection project is a simple library used by the various Doctrine projects which adds some additional functionality on top of the reflection functionality that comes with PHP. It allows you to get the reflection information about classes, methods and properties statically.",
+ "homepage": "https://www.doctrine-project.org/projects/reflection.html",
+ "keywords": [
+ "reflection",
+ "static"
+ ],
+ "support": {
+ "issues": "https://github.com/doctrine/reflection/issues",
+ "source": "https://github.com/doctrine/reflection/tree/1.2.2"
+ },
+ "abandoned": "roave/better-reflection",
+ "time": "2020-10-27T21:46:55+00:00"
+ },
+ {
+ "name": "doctrine/sql-formatter",
+ "version": "1.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/sql-formatter.git",
+ "reference": "56070bebac6e77230ed7d306ad13528e60732871"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/sql-formatter/zipball/56070bebac6e77230ed7d306ad13528e60732871",
+ "reference": "56070bebac6e77230ed7d306ad13528e60732871",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1 || ^8.0"
+ },
+ "require-dev": {
+ "bamarni/composer-bin-plugin": "^1.4"
+ },
+ "bin": [
+ "bin/sql-formatter"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\SqlFormatter\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jeremy Dorn",
+ "email": "jeremy@jeremydorn.com",
+ "homepage": "http://jeremydorn.com/"
+ }
+ ],
+ "description": "a PHP SQL highlighting library",
+ "homepage": "https://github.com/doctrine/sql-formatter/",
+ "keywords": [
+ "highlight",
+ "sql"
+ ],
+ "support": {
+ "issues": "https://github.com/doctrine/sql-formatter/issues",
+ "source": "https://github.com/doctrine/sql-formatter/tree/1.1.x"
+ },
+ "time": "2020-07-30T16:57:33+00:00"
+ },
+ {
+ "name": "egulias/email-validator",
+ "version": "2.1.25",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/egulias/EmailValidator.git",
+ "reference": "0dbf5d78455d4d6a41d186da50adc1122ec066f4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/0dbf5d78455d4d6a41d186da50adc1122ec066f4",
+ "reference": "0dbf5d78455d4d6a41d186da50adc1122ec066f4",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/lexer": "^1.0.1",
+ "php": ">=5.5",
+ "symfony/polyfill-intl-idn": "^1.10"
+ },
+ "require-dev": {
+ "dominicsayers/isemail": "^3.0.7",
+ "phpunit/phpunit": "^4.8.36|^7.5.15",
+ "satooshi/php-coveralls": "^1.0.1"
+ },
+ "suggest": {
+ "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Egulias\\EmailValidator\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Eduardo Gulias Davis"
+ }
+ ],
+ "description": "A library for validating emails against several RFCs",
+ "homepage": "https://github.com/egulias/EmailValidator",
+ "keywords": [
+ "email",
+ "emailvalidation",
+ "emailvalidator",
+ "validation",
+ "validator"
+ ],
+ "support": {
+ "issues": "https://github.com/egulias/EmailValidator/issues",
+ "source": "https://github.com/egulias/EmailValidator/tree/2.1.25"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/egulias",
+ "type": "github"
+ }
+ ],
+ "time": "2020-12-29T14:50:06+00:00"
+ },
+ {
+ "name": "fig/link-util",
+ "version": "1.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/link-util.git",
+ "reference": "c038ee75ca13663ddc2d1f185fe6f7533c00832a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/link-util/zipball/c038ee75ca13663ddc2d1f185fe6f7533c00832a",
+ "reference": "c038ee75ca13663ddc2d1f185fe6f7533c00832a",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.5.0",
+ "psr/link": "~1.0@dev"
+ },
+ "provide": {
+ "psr/link-implementation": "1.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^5.1",
+ "squizlabs/php_codesniffer": "^2.3.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Fig\\Link\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common utility implementations for HTTP links",
+ "keywords": [
+ "http",
+ "http-link",
+ "link",
+ "psr",
+ "psr-13",
+ "rest"
+ ],
+ "support": {
+ "issues": "https://github.com/php-fig/link-util/issues",
+ "source": "https://github.com/php-fig/link-util/tree/1.1.1"
+ },
+ "time": "2020-04-27T06:40:36+00:00"
+ },
+ {
+ "name": "friendsofphp/proxy-manager-lts",
+ "version": "v1.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/FriendsOfPHP/proxy-manager-lts.git",
+ "reference": "4a66e4e0d3279d3bb3722963b4294331fabe15bc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/FriendsOfPHP/proxy-manager-lts/zipball/4a66e4e0d3279d3bb3722963b4294331fabe15bc",
+ "reference": "4a66e4e0d3279d3bb3722963b4294331fabe15bc",
+ "shasum": ""
+ },
+ "require": {
+ "laminas/laminas-code": "~3.4.1|^4.0",
+ "php": ">=7.1",
+ "symfony/filesystem": "^4.4.17|^5.0"
+ },
+ "conflict": {
+ "laminas/laminas-stdlib": "<3.2.1",
+ "zendframework/zend-stdlib": "<3.2.1"
+ },
+ "replace": {
+ "ocramius/proxy-manager": "^2.1"
+ },
+ "require-dev": {
+ "ext-phar": "*",
+ "symfony/phpunit-bridge": "^5.2"
+ },
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "name": "ocramius/proxy-manager",
+ "url": "https://github.com/Ocramius/ProxyManager"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "ProxyManager\\": "src/ProxyManager"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com",
+ "homepage": "http://ocramius.github.io/"
+ },
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ }
+ ],
+ "description": "Adding support for a wider range of PHP versions to ocramius/proxy-manager",
+ "homepage": "https://github.com/FriendsOfPHP/proxy-manager-lts",
+ "keywords": [
+ "aop",
+ "lazy loading",
+ "proxy",
+ "proxy pattern",
+ "service proxies"
+ ],
+ "support": {
+ "issues": "https://github.com/FriendsOfPHP/proxy-manager-lts/issues",
+ "source": "https://github.com/FriendsOfPHP/proxy-manager-lts/tree/v1.0.2"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/Ocramius",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/ocramius/proxy-manager",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-01-04T11:21:26+00:00"
+ },
+ {
+ "name": "gedmo/doctrine-extensions",
+ "version": "v2.4.42",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Atlantic18/DoctrineExtensions.git",
+ "reference": "b6c4442b4f32ce05673fbdf1fa4a2d5e315cc0a4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Atlantic18/DoctrineExtensions/zipball/b6c4442b4f32ce05673fbdf1fa4a2d5e315cc0a4",
+ "reference": "b6c4442b4f32ce05673fbdf1fa4a2d5e315cc0a4",
+ "shasum": ""
+ },
+ "require": {
+ "behat/transliterator": "~1.2",
+ "doctrine/common": "~2.4",
+ "php": ">=5.3.2"
+ },
+ "conflict": {
+ "doctrine/annotations": "<1.2",
+ "doctrine/mongodb-odm": ">=2.0"
+ },
+ "require-dev": {
+ "doctrine/common": ">=2.5.0",
+ "doctrine/mongodb-odm": ">=1.0.2 <2.0",
+ "doctrine/orm": ">=2.5.0",
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5",
+ "symfony/yaml": "^2.6 || ^3.0 || ^4.0 || ^5.0"
+ },
+ "suggest": {
+ "doctrine/mongodb-odm": "to use the extensions with the MongoDB ODM",
+ "doctrine/orm": "to use the extensions with the ORM"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.4.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Gedmo\\": "lib/Gedmo"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Gediminas Morkevicius",
+ "email": "gediminas.morkevicius@gmail.com"
+ },
+ {
+ "name": "Gustavo Falco",
+ "email": "comfortablynumb84@gmail.com"
+ },
+ {
+ "name": "David Buchmann",
+ "email": "david@liip.ch"
+ }
+ ],
+ "description": "Doctrine2 behavioral extensions",
+ "homepage": "http://gediminasm.org/",
+ "keywords": [
+ "Blameable",
+ "behaviors",
+ "doctrine2",
+ "extensions",
+ "gedmo",
+ "loggable",
+ "nestedset",
+ "sluggable",
+ "sortable",
+ "timestampable",
+ "translatable",
+ "tree",
+ "uploadable"
+ ],
+ "support": {
+ "email": "gediminas.morkevicius@gmail.com",
+ "issues": "https://github.com/Atlantic18/DoctrineExtensions/issues",
+ "source": "https://github.com/Atlantic18/DoctrineExtensions/tree/v3.0.0-beta",
+ "wiki": "https://github.com/Atlantic18/DoctrineExtensions/tree/master/doc"
+ },
+ "time": "2020-08-21T01:27:20+00:00"
+ },
+ {
+ "name": "laminas/laminas-code",
+ "version": "4.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/laminas/laminas-code.git",
+ "reference": "28a6d70ea8b8bca687d7163300e611ae33baf82a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/laminas/laminas-code/zipball/28a6d70ea8b8bca687d7163300e611ae33baf82a",
+ "reference": "28a6d70ea8b8bca687d7163300e611ae33baf82a",
+ "shasum": ""
+ },
+ "require": {
+ "laminas/laminas-eventmanager": "^3.3",
+ "php": "^7.4 || ~8.0.0"
+ },
+ "conflict": {
+ "phpspec/prophecy": "<1.9.0"
+ },
+ "replace": {
+ "zendframework/zend-code": "self.version"
+ },
+ "require-dev": {
+ "doctrine/annotations": "^1.10.4",
+ "ext-phar": "*",
+ "laminas/laminas-coding-standard": "^2.1.4",
+ "laminas/laminas-stdlib": "^3.3.0",
+ "phpunit/phpunit": "^9.4.2",
+ "psalm/plugin-phpunit": "^0.14.0",
+ "vimeo/psalm": "^4.3.1"
+ },
+ "suggest": {
+ "doctrine/annotations": "Doctrine\\Common\\Annotations >=1.0 for annotation features",
+ "laminas/laminas-stdlib": "Laminas\\Stdlib component",
+ "laminas/laminas-zendframework-bridge": "A bridge with Zend Framework"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Laminas\\Code\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "description": "Extensions to the PHP Reflection API, static code scanning, and code generation",
+ "homepage": "https://laminas.dev",
+ "keywords": [
+ "code",
+ "laminas",
+ "laminasframework"
+ ],
+ "support": {
+ "chat": "https://laminas.dev/chat",
+ "docs": "https://docs.laminas.dev/laminas-code/",
+ "forum": "https://discourse.laminas.dev",
+ "issues": "https://github.com/laminas/laminas-code/issues",
+ "rss": "https://github.com/laminas/laminas-code/releases.atom",
+ "source": "https://github.com/laminas/laminas-code"
+ },
+ "funding": [
+ {
+ "url": "https://funding.communitybridge.org/projects/laminas-project",
+ "type": "community_bridge"
+ }
+ ],
+ "time": "2020-12-30T16:16:14+00:00"
+ },
+ {
+ "name": "laminas/laminas-eventmanager",
+ "version": "3.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/laminas/laminas-eventmanager.git",
+ "reference": "1940ccf30e058b2fd66f5a9d696f1b5e0027b082"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/laminas/laminas-eventmanager/zipball/1940ccf30e058b2fd66f5a9d696f1b5e0027b082",
+ "reference": "1940ccf30e058b2fd66f5a9d696f1b5e0027b082",
+ "shasum": ""
+ },
+ "require": {
+ "laminas/laminas-zendframework-bridge": "^1.0",
+ "php": "^7.3 || ^8.0"
+ },
+ "replace": {
+ "zendframework/zend-eventmanager": "^3.2.1"
+ },
+ "require-dev": {
+ "container-interop/container-interop": "^1.1",
+ "laminas/laminas-coding-standard": "~1.0.0",
+ "laminas/laminas-stdlib": "^2.7.3 || ^3.0",
+ "phpbench/phpbench": "^0.17.1",
+ "phpunit/phpunit": "^8.5.8"
+ },
+ "suggest": {
+ "container-interop/container-interop": "^1.1, to use the lazy listeners feature",
+ "laminas/laminas-stdlib": "^2.7.3 || ^3.0, to use the FilterChain feature"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.3.x-dev",
+ "dev-develop": "3.4.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Laminas\\EventManager\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "description": "Trigger and listen to events within a PHP application",
+ "homepage": "https://laminas.dev",
+ "keywords": [
+ "event",
+ "eventmanager",
+ "events",
+ "laminas"
+ ],
+ "support": {
+ "chat": "https://laminas.dev/chat",
+ "docs": "https://docs.laminas.dev/laminas-eventmanager/",
+ "forum": "https://discourse.laminas.dev",
+ "issues": "https://github.com/laminas/laminas-eventmanager/issues",
+ "rss": "https://github.com/laminas/laminas-eventmanager/releases.atom",
+ "source": "https://github.com/laminas/laminas-eventmanager"
+ },
+ "funding": [
+ {
+ "url": "https://funding.communitybridge.org/projects/laminas-project",
+ "type": "community_bridge"
+ }
+ ],
+ "time": "2020-08-25T11:10:44+00:00"
+ },
+ {
+ "name": "laminas/laminas-zendframework-bridge",
+ "version": "1.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/laminas/laminas-zendframework-bridge.git",
+ "reference": "6ede70583e101030bcace4dcddd648f760ddf642"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/6ede70583e101030bcace4dcddd648f760ddf642",
+ "reference": "6ede70583e101030bcace4dcddd648f760ddf642",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.6 || ^7.0 || ^8.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^5.7 || ^6.5 || ^7.5 || ^8.1 || ^9.3",
+ "squizlabs/php_codesniffer": "^3.5"
+ },
+ "type": "library",
+ "extra": {
+ "laminas": {
+ "module": "Laminas\\ZendFrameworkBridge"
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/autoload.php"
+ ],
+ "psr-4": {
+ "Laminas\\ZendFrameworkBridge\\": "src//"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "description": "Alias legacy ZF class names to Laminas Project equivalents.",
+ "keywords": [
+ "ZendFramework",
+ "autoloading",
+ "laminas",
+ "zf"
+ ],
+ "support": {
+ "forum": "https://discourse.laminas.dev/",
+ "issues": "https://github.com/laminas/laminas-zendframework-bridge/issues",
+ "rss": "https://github.com/laminas/laminas-zendframework-bridge/releases.atom",
+ "source": "https://github.com/laminas/laminas-zendframework-bridge"
+ },
+ "funding": [
+ {
+ "url": "https://funding.communitybridge.org/projects/laminas-project",
+ "type": "community_bridge"
+ }
+ ],
+ "time": "2020-09-14T14:23:00+00:00"
+ },
+ {
+ "name": "limenius/liform",
+ "version": "v0.16.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Limenius/Liform.git",
+ "reference": "2b0378de163e3c62b1ffb38a094b8193ca596bd4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Limenius/Liform/zipball/2b0378de163e3c62b1ffb38a094b8193ca596bd4",
+ "reference": "2b0378de163e3c62b1ffb38a094b8193ca596bd4",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2.5",
+ "symfony/contracts": "^2.1",
+ "symfony/form": "^5.0",
+ "symfony/serializer": "^5.0",
+ "symfony/translation": "^5.0"
+ },
+ "require-dev": {
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2",
+ "escapestudios/symfony2-coding-standard": "^3.0",
+ "phpcompatibility/php-compatibility": "^9.3",
+ "phpunit/phpunit": "^8.0",
+ "squizlabs/php_codesniffer": "^3.5"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Limenius\\Liform\\": "src/Limenius/Liform"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nacho Martín",
+ "email": "nacho@limenius.com"
+ }
+ ],
+ "description": "Library to transform Symfony Forms into Json Schema",
+ "support": {
+ "issues": "https://github.com/Limenius/Liform/issues",
+ "source": "https://github.com/Limenius/Liform/tree/v0.16.0"
+ },
+ "time": "2020-05-13T13:21:13+00:00"
+ },
+ {
+ "name": "limenius/liform-bundle",
+ "version": "v0.16.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Limenius/LiformBundle.git",
+ "reference": "9e82a34b256bba27ac2bfdc8ce5390771998321e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Limenius/LiformBundle/zipball/9e82a34b256bba27ac2bfdc8ce5390771998321e",
+ "reference": "9e82a34b256bba27ac2bfdc8ce5390771998321e",
+ "shasum": ""
+ },
+ "require": {
+ "limenius/liform": "^0.16.0"
+ },
+ "type": "symfony-bundle",
+ "autoload": {
+ "psr-4": {
+ "Limenius\\LiformBundle\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nacho Martín",
+ "email": "nacho@limenius.com"
+ }
+ ],
+ "description": "Bundle for Liform: Transform Symfony Forms into Json Schema",
+ "support": {
+ "issues": "https://github.com/Limenius/LiformBundle/issues",
+ "source": "https://github.com/Limenius/LiformBundle/tree/v0.16.0"
+ },
+ "time": "2020-05-13T13:25:16+00:00"
+ },
+ {
+ "name": "michelf/php-markdown",
+ "version": "1.9.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/michelf/php-markdown.git",
+ "reference": "c83178d49e372ca967d1a8c77ae4e051b3a3c75c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/michelf/php-markdown/zipball/c83178d49e372ca967d1a8c77ae4e051b3a3c75c",
+ "reference": "c83178d49e372ca967d1a8c77ae4e051b3a3c75c",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": ">=4.3 <5.8"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Michelf\\": "Michelf/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Michel Fortin",
+ "email": "michel.fortin@michelf.ca",
+ "homepage": "https://michelf.ca/",
+ "role": "Developer"
+ },
+ {
+ "name": "John Gruber",
+ "homepage": "https://daringfireball.net/"
+ }
+ ],
+ "description": "PHP Markdown",
+ "homepage": "https://michelf.ca/projects/php-markdown/",
+ "keywords": [
+ "markdown"
+ ],
+ "support": {
+ "issues": "https://github.com/michelf/php-markdown/issues",
+ "source": "https://github.com/michelf/php-markdown/tree/1.9.0"
+ },
+ "time": "2019-12-02T02:32:27+00:00"
+ },
+ {
+ "name": "monolog/monolog",
+ "version": "2.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Seldaek/monolog.git",
+ "reference": "1cb1cde8e8dd0f70cc0fe51354a59acad9302084"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Seldaek/monolog/zipball/1cb1cde8e8dd0f70cc0fe51354a59acad9302084",
+ "reference": "1cb1cde8e8dd0f70cc0fe51354a59acad9302084",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2",
+ "psr/log": "^1.0.1"
+ },
+ "provide": {
+ "psr/log-implementation": "1.0.0"
+ },
+ "require-dev": {
+ "aws/aws-sdk-php": "^2.4.9 || ^3.0",
+ "doctrine/couchdb": "~1.0@dev",
+ "elasticsearch/elasticsearch": "^7",
+ "graylog2/gelf-php": "^1.4.2",
+ "mongodb/mongodb": "^1.8",
+ "php-amqplib/php-amqplib": "~2.4",
+ "php-console/php-console": "^3.1.3",
+ "phpspec/prophecy": "^1.6.1",
+ "phpstan/phpstan": "^0.12.59",
+ "phpunit/phpunit": "^8.5",
+ "predis/predis": "^1.1",
+ "rollbar/rollbar": "^1.3",
+ "ruflin/elastica": ">=0.90 <7.0.1",
+ "swiftmailer/swiftmailer": "^5.3|^6.0"
+ },
+ "suggest": {
+ "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
+ "doctrine/couchdb": "Allow sending log messages to a CouchDB server",
+ "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client",
+ "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
+ "ext-mbstring": "Allow to work properly with unicode symbols",
+ "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)",
+ "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
+ "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)",
+ "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib",
+ "php-console/php-console": "Allow sending log messages to Google Chrome",
+ "rollbar/rollbar": "Allow sending log messages to Rollbar",
+ "ruflin/elastica": "Allow sending log messages to an Elastic Search server"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Monolog\\": "src/Monolog"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "https://seld.be"
+ }
+ ],
+ "description": "Sends your logs to files, sockets, inboxes, databases and various web services",
+ "homepage": "https://github.com/Seldaek/monolog",
+ "keywords": [
+ "log",
+ "logging",
+ "psr-3"
+ ],
+ "support": {
+ "issues": "https://github.com/Seldaek/monolog/issues",
+ "source": "https://github.com/Seldaek/monolog/tree/2.2.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/Seldaek",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/monolog/monolog",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-12-14T13:15:25+00:00"
+ },
+ {
+ "name": "nelmio/cors-bundle",
+ "version": "2.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nelmio/NelmioCorsBundle.git",
+ "reference": "be4d5824caebc86da9e224e935e02e1201b3ea54"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nelmio/NelmioCorsBundle/zipball/be4d5824caebc86da9e224e935e02e1201b3ea54",
+ "reference": "be4d5824caebc86da9e224e935e02e1201b3ea54",
+ "shasum": ""
+ },
+ "require": {
+ "symfony/framework-bundle": "^4.3 || ^5.0"
+ },
+ "require-dev": {
+ "mockery/mockery": "^1.2",
+ "symfony/phpunit-bridge": "^4.3 || ^5.0"
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Nelmio\\CorsBundle\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nelmio",
+ "homepage": "http://nelm.io"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://github.com/nelmio/NelmioCorsBundle/contributors"
+ }
+ ],
+ "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Symfony application",
+ "keywords": [
+ "api",
+ "cors",
+ "crossdomain"
+ ],
+ "support": {
+ "issues": "https://github.com/nelmio/NelmioCorsBundle/issues",
+ "source": "https://github.com/nelmio/NelmioCorsBundle/tree/2.1.0"
+ },
+ "time": "2020-07-22T11:44:28+00:00"
+ },
+ {
+ "name": "phpdocumentor/reflection-common",
+ "version": "2.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
+ "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b",
+ "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-2.x": "2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jaap van Otterdijk",
+ "email": "opensource@ijaap.nl"
+ }
+ ],
+ "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
+ "homepage": "http://www.phpdoc.org",
+ "keywords": [
+ "FQSEN",
+ "phpDocumentor",
+ "phpdoc",
+ "reflection",
+ "static analysis"
+ ],
+ "support": {
+ "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues",
+ "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x"
+ },
+ "time": "2020-06-27T09:03:43+00:00"
+ },
+ {
+ "name": "phpdocumentor/reflection-docblock",
+ "version": "5.2.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
+ "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556",
+ "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556",
+ "shasum": ""
+ },
+ "require": {
+ "ext-filter": "*",
+ "php": "^7.2 || ^8.0",
+ "phpdocumentor/reflection-common": "^2.2",
+ "phpdocumentor/type-resolver": "^1.3",
+ "webmozart/assert": "^1.9.1"
+ },
+ "require-dev": {
+ "mockery/mockery": "~1.3.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "me@mikevanriel.com"
+ },
+ {
+ "name": "Jaap van Otterdijk",
+ "email": "account@ijaap.nl"
+ }
+ ],
+ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
+ "support": {
+ "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
+ "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/master"
+ },
+ "time": "2020-09-03T19:13:55+00:00"
+ },
+ {
+ "name": "phpdocumentor/type-resolver",
+ "version": "1.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/TypeResolver.git",
+ "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0",
+ "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0",
+ "phpdocumentor/reflection-common": "^2.0"
+ },
+ "require-dev": {
+ "ext-tokenizer": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-1.x": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "me@mikevanriel.com"
+ }
+ ],
+ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
+ "support": {
+ "issues": "https://github.com/phpDocumentor/TypeResolver/issues",
+ "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.4.0"
+ },
+ "time": "2020-09-17T18:55:26+00:00"
+ },
+ {
+ "name": "psr/cache",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/cache.git",
+ "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8",
+ "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Cache\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for caching libraries",
+ "keywords": [
+ "cache",
+ "psr",
+ "psr-6"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/cache/tree/master"
+ },
+ "time": "2016-08-06T20:24:11+00:00"
+ },
+ {
+ "name": "psr/container",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/container.git",
+ "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
+ "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Container\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common Container Interface (PHP FIG PSR-11)",
+ "homepage": "https://github.com/php-fig/container",
+ "keywords": [
+ "PSR-11",
+ "container",
+ "container-interface",
+ "container-interop",
+ "psr"
+ ],
+ "support": {
+ "issues": "https://github.com/php-fig/container/issues",
+ "source": "https://github.com/php-fig/container/tree/master"
+ },
+ "time": "2017-02-14T16:28:37+00:00"
+ },
+ {
+ "name": "psr/event-dispatcher",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/event-dispatcher.git",
+ "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0",
+ "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\EventDispatcher\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Standard interfaces for event handling.",
+ "keywords": [
+ "events",
+ "psr",
+ "psr-14"
+ ],
+ "support": {
+ "issues": "https://github.com/php-fig/event-dispatcher/issues",
+ "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0"
+ },
+ "time": "2019-01-08T18:20:26+00:00"
+ },
+ {
+ "name": "psr/link",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/link.git",
+ "reference": "eea8e8662d5cd3ae4517c9b864493f59fca95562"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/link/zipball/eea8e8662d5cd3ae4517c9b864493f59fca95562",
+ "reference": "eea8e8662d5cd3ae4517c9b864493f59fca95562",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Link\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interfaces for HTTP links",
+ "keywords": [
+ "http",
+ "http-link",
+ "link",
+ "psr",
+ "psr-13",
+ "rest"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/link/tree/master"
+ },
+ "time": "2016-10-28T16:06:13+00:00"
+ },
+ {
+ "name": "psr/log",
+ "version": "1.1.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/log.git",
+ "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc",
+ "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Log\\": "Psr/Log/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for logging libraries",
+ "homepage": "https://github.com/php-fig/log",
+ "keywords": [
+ "log",
+ "psr",
+ "psr-3"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/log/tree/1.1.3"
+ },
+ "time": "2020-03-23T09:12:05+00:00"
+ },
+ {
+ "name": "sensio/framework-extra-bundle",
+ "version": "v5.6.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sensiolabs/SensioFrameworkExtraBundle.git",
+ "reference": "430d14c01836b77c28092883d195a43ce413ee32"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/430d14c01836b77c28092883d195a43ce413ee32",
+ "reference": "430d14c01836b77c28092883d195a43ce413ee32",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/annotations": "^1.0",
+ "php": ">=7.2.5",
+ "symfony/config": "^4.4|^5.0",
+ "symfony/dependency-injection": "^4.4|^5.0",
+ "symfony/framework-bundle": "^4.4|^5.0",
+ "symfony/http-kernel": "^4.4|^5.0"
+ },
+ "conflict": {
+ "doctrine/doctrine-cache-bundle": "<1.3.1",
+ "doctrine/persistence": "<1.3"
+ },
+ "require-dev": {
+ "doctrine/dbal": "^2.10|^3.0",
+ "doctrine/doctrine-bundle": "^1.11|^2.0",
+ "doctrine/orm": "^2.5",
+ "nyholm/psr7": "^1.1",
+ "symfony/browser-kit": "^4.4|^5.0",
+ "symfony/doctrine-bridge": "^4.4|^5.0",
+ "symfony/dom-crawler": "^4.4|^5.0",
+ "symfony/expression-language": "^4.4|^5.0",
+ "symfony/finder": "^4.4|^5.0",
+ "symfony/monolog-bridge": "^4.0|^5.0",
+ "symfony/monolog-bundle": "^3.2",
+ "symfony/phpunit-bridge": "^4.4.9|^5.0.9",
+ "symfony/psr-http-message-bridge": "^1.1",
+ "symfony/security-bundle": "^4.4|^5.0",
+ "symfony/twig-bundle": "^4.4|^5.0",
+ "symfony/yaml": "^4.4|^5.0",
+ "twig/twig": "^1.34|^2.4|^3.0"
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.6.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Sensio\\Bundle\\FrameworkExtraBundle\\": "src/"
+ },
+ "exclude-from-classmap": [
+ "/tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "This bundle provides a way to configure your controllers with annotations",
+ "keywords": [
+ "annotations",
+ "controllers"
+ ],
+ "support": {
+ "issues": "https://github.com/sensiolabs/SensioFrameworkExtraBundle/issues",
+ "source": "https://github.com/sensiolabs/SensioFrameworkExtraBundle/tree/v5.6.1"
+ },
+ "time": "2020-08-25T19:10:18+00:00"
+ },
+ {
+ "name": "swiftmailer/swiftmailer",
+ "version": "v6.2.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/swiftmailer/swiftmailer.git",
+ "reference": "56f0ab23f54c4ccbb0d5dcc67ff8552e0c98d59e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/56f0ab23f54c4ccbb0d5dcc67ff8552e0c98d59e",
+ "reference": "56f0ab23f54c4ccbb0d5dcc67ff8552e0c98d59e",
+ "shasum": ""
+ },
+ "require": {
+ "egulias/email-validator": "^2.0",
+ "php": ">=7.0.0",
+ "symfony/polyfill-iconv": "^1.0",
+ "symfony/polyfill-intl-idn": "^1.10",
+ "symfony/polyfill-mbstring": "^1.0"
+ },
+ "require-dev": {
+ "mockery/mockery": "^1.0",
+ "symfony/phpunit-bridge": "^4.4|^5.0"
+ },
+ "suggest": {
+ "ext-intl": "Needed to support internationalized email addresses"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "6.2-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "lib/swift_required.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Chris Corbyn"
+ },
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "Swiftmailer, free feature-rich PHP mailer",
+ "homepage": "https://swiftmailer.symfony.com",
+ "keywords": [
+ "email",
+ "mail",
+ "mailer"
+ ],
+ "support": {
+ "issues": "https://github.com/swiftmailer/swiftmailer/issues",
+ "source": "https://github.com/swiftmailer/swiftmailer/tree/v6.2.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/swiftmailer/swiftmailer",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-12-08T18:02:06+00:00"
+ },
+ {
+ "name": "symfony/asset",
+ "version": "v5.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/asset.git",
+ "reference": "d254631bc20fb82a5827602dc2fa84a3118ec3f5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/asset/zipball/d254631bc20fb82a5827602dc2fa84a3118ec3f5",
+ "reference": "d254631bc20fb82a5827602dc2fa84a3118ec3f5",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5"
+ },
+ "require-dev": {
+ "symfony/http-client": "^4.4|^5.0",
+ "symfony/http-foundation": "^4.4|^5.0",
+ "symfony/http-kernel": "^4.4|^5.0"
+ },
+ "suggest": {
+ "symfony/http-foundation": ""
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Asset\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Asset Component",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/asset/tree/v5.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-12-14T07:03:02+00:00"
+ },
+ {
+ "name": "symfony/cache",
+ "version": "v5.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/cache.git",
+ "reference": "5e61d63b1ef4fb4852994038267ad45e12f3ec52"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/cache/zipball/5e61d63b1ef4fb4852994038267ad45e12f3ec52",
+ "reference": "5e61d63b1ef4fb4852994038267ad45e12f3ec52",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "psr/cache": "~1.0",
+ "psr/log": "^1.1",
+ "symfony/cache-contracts": "^1.1.7|^2",
+ "symfony/polyfill-php80": "^1.15",
+ "symfony/service-contracts": "^1.1|^2",
+ "symfony/var-exporter": "^4.4|^5.0"
+ },
+ "conflict": {
+ "doctrine/dbal": "<2.10",
+ "symfony/dependency-injection": "<4.4",
+ "symfony/http-kernel": "<4.4",
+ "symfony/var-dumper": "<4.4"
+ },
+ "provide": {
+ "psr/cache-implementation": "1.0",
+ "psr/simple-cache-implementation": "1.0",
+ "symfony/cache-implementation": "1.0"
+ },
+ "require-dev": {
+ "cache/integration-tests": "dev-master",
+ "doctrine/cache": "^1.6",
+ "doctrine/dbal": "^2.10|^3.0",
+ "predis/predis": "^1.1",
+ "psr/simple-cache": "^1.0",
+ "symfony/config": "^4.4|^5.0",
+ "symfony/dependency-injection": "^4.4|^5.0",
+ "symfony/filesystem": "^4.4|^5.0",
+ "symfony/http-kernel": "^4.4|^5.0",
+ "symfony/messenger": "^4.4|^5.0",
+ "symfony/var-dumper": "^4.4|^5.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Cache\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Cache component with PSR-6, PSR-16, and tags",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "caching",
+ "psr6"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/cache/tree/v5.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-12-10T19:16:15+00:00"
+ },
+ {
+ "name": "symfony/config",
+ "version": "v5.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/config.git",
+ "reference": "d0a82d965296083fe463d655a3644cbe49cbaa80"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/config/zipball/d0a82d965296083fe463d655a3644cbe49cbaa80",
+ "reference": "d0a82d965296083fe463d655a3644cbe49cbaa80",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/deprecation-contracts": "^2.1",
+ "symfony/filesystem": "^4.4|^5.0",
+ "symfony/polyfill-ctype": "~1.8",
+ "symfony/polyfill-php80": "^1.15"
+ },
+ "conflict": {
+ "symfony/finder": "<4.4"
+ },
+ "require-dev": {
+ "symfony/event-dispatcher": "^4.4|^5.0",
+ "symfony/finder": "^4.4|^5.0",
+ "symfony/messenger": "^4.4|^5.0",
+ "symfony/service-contracts": "^1.1|^2",
+ "symfony/yaml": "^4.4|^5.0"
+ },
+ "suggest": {
+ "symfony/yaml": "To use the yaml reference dumper"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Config\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Config Component",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/config/tree/v5.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-12-09T18:54:12+00:00"
+ },
+ {
+ "name": "symfony/console",
+ "version": "v5.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/console.git",
+ "reference": "47c02526c532fb381374dab26df05e7313978976"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/console/zipball/47c02526c532fb381374dab26df05e7313978976",
+ "reference": "47c02526c532fb381374dab26df05e7313978976",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/polyfill-php73": "^1.8",
+ "symfony/polyfill-php80": "^1.15",
+ "symfony/service-contracts": "^1.1|^2",
+ "symfony/string": "^5.1"
+ },
+ "conflict": {
+ "symfony/dependency-injection": "<4.4",
+ "symfony/dotenv": "<5.1",
+ "symfony/event-dispatcher": "<4.4",
+ "symfony/lock": "<4.4",
+ "symfony/process": "<4.4"
+ },
+ "provide": {
+ "psr/log-implementation": "1.0"
+ },
+ "require-dev": {
+ "psr/log": "~1.0",
+ "symfony/config": "^4.4|^5.0",
+ "symfony/dependency-injection": "^4.4|^5.0",
+ "symfony/event-dispatcher": "^4.4|^5.0",
+ "symfony/lock": "^4.4|^5.0",
+ "symfony/process": "^4.4|^5.0",
+ "symfony/var-dumper": "^4.4|^5.0"
+ },
+ "suggest": {
+ "psr/log": "For using the console logger",
+ "symfony/event-dispatcher": "",
+ "symfony/lock": "",
+ "symfony/process": ""
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Console\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Console Component",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "cli",
+ "command line",
+ "console",
+ "terminal"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/console/tree/v5.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-12-18T08:03:05+00:00"
+ },
+ {
+ "name": "symfony/contracts",
+ "version": "v2.3.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/contracts.git",
+ "reference": "f7783bdec14b06c323d30a5f74ba70a17ec0ce81"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/contracts/zipball/f7783bdec14b06c323d30a5f74ba70a17ec0ce81",
+ "reference": "f7783bdec14b06c323d30a5f74ba70a17ec0ce81",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "psr/cache": "^1.0",
+ "psr/container": "^1.0",
+ "psr/event-dispatcher": "^1.0"
+ },
+ "replace": {
+ "symfony/cache-contracts": "self.version",
+ "symfony/deprecation-contracts": "self.version",
+ "symfony/event-dispatcher-contracts": "self.version",
+ "symfony/http-client-contracts": "self.version",
+ "symfony/service-contracts": "self.version",
+ "symfony/translation-contracts": "self.version"
+ },
+ "require-dev": {
+ "symfony/polyfill-intl-idn": "^1.10"
+ },
+ "suggest": {
+ "symfony/cache-implementation": "",
+ "symfony/event-dispatcher-implementation": "",
+ "symfony/http-client-implementation": "",
+ "symfony/service-implementation": "",
+ "symfony/translation-implementation": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-version": "2.3",
+ "branch-alias": {
+ "dev-main": "2.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\": ""
+ },
+ "files": [
+ "Deprecation/function.php"
+ ],
+ "exclude-from-classmap": [
+ "**/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "A set of abstractions extracted out of the Symfony components",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/contracts/tree/v2.3.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-10-14T17:08:19+00:00"
+ },
+ {
+ "name": "symfony/dependency-injection",
+ "version": "v5.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/dependency-injection.git",
+ "reference": "7f8a9e9eff0581a33e20f6c5d41096fe22832d25"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/7f8a9e9eff0581a33e20f6c5d41096fe22832d25",
+ "reference": "7f8a9e9eff0581a33e20f6c5d41096fe22832d25",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "psr/container": "^1.0",
+ "symfony/deprecation-contracts": "^2.1",
+ "symfony/polyfill-php80": "^1.15",
+ "symfony/service-contracts": "^1.1.6|^2"
+ },
+ "conflict": {
+ "symfony/config": "<5.1",
+ "symfony/finder": "<4.4",
+ "symfony/proxy-manager-bridge": "<4.4",
+ "symfony/yaml": "<4.4"
+ },
+ "provide": {
+ "psr/container-implementation": "1.0",
+ "symfony/service-implementation": "1.0"
+ },
+ "require-dev": {
+ "symfony/config": "^5.1",
+ "symfony/expression-language": "^4.4|^5.0",
+ "symfony/yaml": "^4.4|^5.0"
+ },
+ "suggest": {
+ "symfony/config": "",
+ "symfony/expression-language": "For using expressions in service container configuration",
+ "symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required",
+ "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them",
+ "symfony/yaml": ""
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\DependencyInjection\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony DependencyInjection Component",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/dependency-injection/tree/v5.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-12-18T08:03:05+00:00"
+ },
+ {
+ "name": "symfony/doctrine-bridge",
+ "version": "v5.1.10",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/doctrine-bridge.git",
+ "reference": "7c9886668f6a74611649cd037b07b996a0c58ad8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/7c9886668f6a74611649cd037b07b996a0c58ad8",
+ "reference": "7c9886668f6a74611649cd037b07b996a0c58ad8",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/event-manager": "~1.0",
+ "doctrine/persistence": "^1.3|^2",
+ "php": ">=7.2.5",
+ "symfony/deprecation-contracts": "^2.1",
+ "symfony/polyfill-ctype": "~1.8",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/polyfill-php80": "^1.15",
+ "symfony/service-contracts": "^1.1|^2"
+ },
+ "conflict": {
+ "phpunit/phpunit": "<5.4.3",
+ "symfony/dependency-injection": "<4.4",
+ "symfony/form": "<5.1",
+ "symfony/http-kernel": "<5",
+ "symfony/messenger": "<4.4",
+ "symfony/property-info": "<5",
+ "symfony/security-bundle": "<5",
+ "symfony/security-core": "<5",
+ "symfony/validator": "<5.0.2"
+ },
+ "require-dev": {
+ "composer/package-versions-deprecated": "^1.8",
+ "doctrine/annotations": "~1.7",
+ "doctrine/cache": "~1.6",
+ "doctrine/collections": "~1.0",
+ "doctrine/data-fixtures": "^1.1",
+ "doctrine/dbal": "~2.4|^3.0",
+ "doctrine/orm": "^2.6.3",
+ "symfony/cache": "^5.1",
+ "symfony/config": "^4.4|^5.0",
+ "symfony/dependency-injection": "^4.4|^5.0",
+ "symfony/doctrine-messenger": "^5.1",
+ "symfony/expression-language": "^4.4|^5.0",
+ "symfony/form": "^5.1.3",
+ "symfony/http-kernel": "^5.0",
+ "symfony/messenger": "^4.4|^5.0",
+ "symfony/property-access": "^4.4|^5.0",
+ "symfony/property-info": "^5.0",
+ "symfony/proxy-manager-bridge": "^4.4|^5.0",
+ "symfony/security-core": "^5.0",
+ "symfony/stopwatch": "^4.4|^5.0",
+ "symfony/translation": "^4.4|^5.0",
+ "symfony/validator": "^5.0.2",
+ "symfony/var-dumper": "^4.4|^5.0"
+ },
+ "suggest": {
+ "doctrine/data-fixtures": "",
+ "doctrine/dbal": "",
+ "doctrine/orm": "",
+ "symfony/form": "",
+ "symfony/property-info": "",
+ "symfony/validator": ""
+ },
+ "type": "symfony-bridge",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Bridge\\Doctrine\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Doctrine Bridge",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/doctrine-bridge/tree/v5.1.10"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-12-14T14:33:09+00:00"
+ },
+ {
+ "name": "symfony/dotenv",
+ "version": "v5.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/dotenv.git",
+ "reference": "204a9dc6f70a13d9d24ebbf2c5ce51be235f3d7b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/dotenv/zipball/204a9dc6f70a13d9d24ebbf2c5ce51be235f3d7b",
+ "reference": "204a9dc6f70a13d9d24ebbf2c5ce51be235f3d7b",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/deprecation-contracts": "^2.1"
+ },
+ "require-dev": {
+ "symfony/process": "^4.4|^5.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Dotenv\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Registers environment variables from a .env file",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "dotenv",
+ "env",
+ "environment"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/dotenv/tree/v5.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-12-08T17:02:38+00:00"
+ },
+ {
+ "name": "symfony/error-handler",
+ "version": "v5.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/error-handler.git",
+ "reference": "59b190ce16ddf32771a22087b60f6dafd3407147"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/error-handler/zipball/59b190ce16ddf32771a22087b60f6dafd3407147",
+ "reference": "59b190ce16ddf32771a22087b60f6dafd3407147",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "psr/log": "^1.0",
+ "symfony/polyfill-php80": "^1.15",
+ "symfony/var-dumper": "^4.4|^5.0"
+ },
+ "require-dev": {
+ "symfony/deprecation-contracts": "^2.1",
+ "symfony/http-kernel": "^4.4|^5.0",
+ "symfony/serializer": "^4.4|^5.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\ErrorHandler\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony ErrorHandler Component",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/error-handler/tree/v5.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-12-09T18:54:12+00:00"
+ },
+ {
+ "name": "symfony/event-dispatcher",
+ "version": "v5.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/event-dispatcher.git",
+ "reference": "1c93f7a1dff592c252574c79a8635a8a80856042"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/1c93f7a1dff592c252574c79a8635a8a80856042",
+ "reference": "1c93f7a1dff592c252574c79a8635a8a80856042",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/deprecation-contracts": "^2.1",
+ "symfony/event-dispatcher-contracts": "^2",
+ "symfony/polyfill-php80": "^1.15"
+ },
+ "conflict": {
+ "symfony/dependency-injection": "<4.4"
+ },
+ "provide": {
+ "psr/event-dispatcher-implementation": "1.0",
+ "symfony/event-dispatcher-implementation": "2.0"
+ },
+ "require-dev": {
+ "psr/log": "~1.0",
+ "symfony/config": "^4.4|^5.0",
+ "symfony/dependency-injection": "^4.4|^5.0",
+ "symfony/error-handler": "^4.4|^5.0",
+ "symfony/expression-language": "^4.4|^5.0",
+ "symfony/http-foundation": "^4.4|^5.0",
+ "symfony/service-contracts": "^1.1|^2",
+ "symfony/stopwatch": "^4.4|^5.0"
+ },
+ "suggest": {
+ "symfony/dependency-injection": "",
+ "symfony/http-kernel": ""
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\EventDispatcher\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony EventDispatcher Component",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/event-dispatcher/tree/v5.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-12-18T08:03:05+00:00"
+ },
+ {
+ "name": "symfony/expression-language",
+ "version": "v5.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/expression-language.git",
+ "reference": "f9a7c7eb461df6d5d99738346039de71685de6af"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/expression-language/zipball/f9a7c7eb461df6d5d99738346039de71685de6af",
+ "reference": "f9a7c7eb461df6d5d99738346039de71685de6af",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/cache": "^4.4|^5.0",
+ "symfony/polyfill-php80": "^1.15",
+ "symfony/service-contracts": "^1.1|^2"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\ExpressionLanguage\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony ExpressionLanguage Component",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/expression-language/tree/v5.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-12-08T17:03:37+00:00"
+ },
+ {
+ "name": "symfony/filesystem",
+ "version": "v5.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/filesystem.git",
+ "reference": "fa8f8cab6b65e2d99a118e082935344c5ba8c60d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/fa8f8cab6b65e2d99a118e082935344c5ba8c60d",
+ "reference": "fa8f8cab6b65e2d99a118e082935344c5ba8c60d",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/polyfill-ctype": "~1.8"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Filesystem\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Filesystem Component",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/filesystem/tree/v5.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-11-30T17:05:38+00:00"
+ },
+ {
+ "name": "symfony/finder",
+ "version": "v5.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/finder.git",
+ "reference": "0b9231a5922fd7287ba5b411893c0ecd2733e5ba"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/0b9231a5922fd7287ba5b411893c0ecd2733e5ba",
+ "reference": "0b9231a5922fd7287ba5b411893c0ecd2733e5ba",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Finder\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Finder Component",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/finder/tree/v5.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-12-08T17:02:38+00:00"
+ },
+ {
+ "name": "symfony/flex",
+ "version": "v1.11.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/flex.git",
+ "reference": "ceb2b4e612bd0b4bb36a4d7fb2e800c861652f48"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/flex/zipball/ceb2b4e612bd0b4bb36a4d7fb2e800c861652f48",
+ "reference": "ceb2b4e612bd0b4bb36a4d7fb2e800c861652f48",
+ "shasum": ""
+ },
+ "require": {
+ "composer-plugin-api": "^1.0|^2.0",
+ "php": ">=7.1"
+ },
+ "require-dev": {
+ "composer/composer": "^1.0.2|^2.0",
+ "symfony/dotenv": "^4.4|^5.0",
+ "symfony/filesystem": "^4.4|^5.0",
+ "symfony/phpunit-bridge": "^4.4|^5.0",
+ "symfony/process": "^3.4|^4.4|^5.0"
+ },
+ "type": "composer-plugin",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.9-dev"
+ },
+ "class": "Symfony\\Flex\\Flex"
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Flex\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien.potencier@gmail.com"
+ }
+ ],
+ "description": "Composer plugin for Symfony",
+ "support": {
+ "issues": "https://github.com/symfony/flex/issues",
+ "source": "https://github.com/symfony/flex/tree/v1.11.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-12-03T10:57:35+00:00"
+ },
+ {
+ "name": "symfony/form",
+ "version": "v5.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/form.git",
+ "reference": "27b1df421c73a2d219f9f5b203f0ec972f0b1de0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/form/zipball/27b1df421c73a2d219f9f5b203f0ec972f0b1de0",
+ "reference": "27b1df421c73a2d219f9f5b203f0ec972f0b1de0",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/deprecation-contracts": "^2.1",
+ "symfony/event-dispatcher": "^4.4|^5.0",
+ "symfony/intl": "^4.4|^5.0",
+ "symfony/options-resolver": "^5.1",
+ "symfony/polyfill-ctype": "~1.8",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/polyfill-php80": "^1.15",
+ "symfony/property-access": "^5.0.8",
+ "symfony/service-contracts": "^1.1|^2"
+ },
+ "conflict": {
+ "phpunit/phpunit": "<5.4.3",
+ "symfony/console": "<4.4",
+ "symfony/dependency-injection": "<4.4",
+ "symfony/doctrine-bridge": "<4.4",
+ "symfony/error-handler": "<4.4.5",
+ "symfony/framework-bundle": "<4.4",
+ "symfony/http-kernel": "<4.4",
+ "symfony/intl": "<4.4",
+ "symfony/translation": "<4.4",
+ "symfony/translation-contracts": "<1.1.7",
+ "symfony/twig-bridge": "<4.4"
+ },
+ "require-dev": {
+ "doctrine/collections": "~1.0",
+ "symfony/config": "^4.4|^5.0",
+ "symfony/console": "^4.4|^5.0",
+ "symfony/dependency-injection": "^4.4|^5.0",
+ "symfony/expression-language": "^4.4|^5.0",
+ "symfony/http-foundation": "^4.4|^5.0",
+ "symfony/http-kernel": "^4.4|^5.0",
+ "symfony/security-csrf": "^4.4|^5.0",
+ "symfony/translation": "^4.4|^5.0",
+ "symfony/validator": "^4.4.17|^5.1.9",
+ "symfony/var-dumper": "^4.4|^5.0"
+ },
+ "suggest": {
+ "symfony/security-csrf": "For protecting forms against CSRF attacks.",
+ "symfony/twig-bridge": "For templating with Twig.",
+ "symfony/validator": "For form validation."
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Form\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Form Component",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/form/tree/v5.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-12-18T08:03:05+00:00"
+ },
+ {
+ "name": "symfony/framework-bundle",
+ "version": "v5.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/framework-bundle.git",
+ "reference": "0663407ca5ad12e2e3fe657b32266904b3dc1e3f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/0663407ca5ad12e2e3fe657b32266904b3dc1e3f",
+ "reference": "0663407ca5ad12e2e3fe657b32266904b3dc1e3f",
+ "shasum": ""
+ },
+ "require": {
+ "ext-xml": "*",
+ "php": ">=7.2.5",
+ "symfony/cache": "^5.2",
+ "symfony/config": "^5.0",
+ "symfony/dependency-injection": "^5.2",
+ "symfony/deprecation-contracts": "^2.1",
+ "symfony/error-handler": "^4.4.1|^5.0.1",
+ "symfony/event-dispatcher": "^5.1",
+ "symfony/filesystem": "^4.4|^5.0",
+ "symfony/finder": "^4.4|^5.0",
+ "symfony/http-foundation": "^5.2.1",
+ "symfony/http-kernel": "^5.2.1",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/polyfill-php80": "^1.15",
+ "symfony/routing": "^5.2"
+ },
+ "conflict": {
+ "doctrine/persistence": "<1.3",
+ "phpdocumentor/reflection-docblock": "<3.0",
+ "phpdocumentor/type-resolver": "<0.2.1",
+ "phpunit/phpunit": "<5.4.3",
+ "symfony/asset": "<5.1",
+ "symfony/browser-kit": "<4.4",
+ "symfony/console": "<5.2",
+ "symfony/dom-crawler": "<4.4",
+ "symfony/dotenv": "<5.1",
+ "symfony/form": "<5.2",
+ "symfony/http-client": "<4.4",
+ "symfony/lock": "<4.4",
+ "symfony/mailer": "<5.2",
+ "symfony/messenger": "<4.4",
+ "symfony/mime": "<4.4",
+ "symfony/property-access": "<5.2",
+ "symfony/property-info": "<4.4",
+ "symfony/serializer": "<5.2",
+ "symfony/stopwatch": "<4.4",
+ "symfony/translation": "<5.0",
+ "symfony/twig-bridge": "<4.4",
+ "symfony/twig-bundle": "<4.4",
+ "symfony/validator": "<5.2",
+ "symfony/web-profiler-bundle": "<4.4",
+ "symfony/workflow": "<5.2"
+ },
+ "require-dev": {
+ "doctrine/annotations": "~1.7",
+ "doctrine/cache": "~1.0",
+ "paragonie/sodium_compat": "^1.8",
+ "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0",
+ "symfony/asset": "^5.1",
+ "symfony/browser-kit": "^4.4|^5.0",
+ "symfony/console": "^5.2",
+ "symfony/css-selector": "^4.4|^5.0",
+ "symfony/dom-crawler": "^4.4|^5.0",
+ "symfony/dotenv": "^5.1",
+ "symfony/expression-language": "^4.4|^5.0",
+ "symfony/form": "^5.2",
+ "symfony/http-client": "^4.4|^5.0",
+ "symfony/lock": "^4.4|^5.0",
+ "symfony/mailer": "^5.2",
+ "symfony/messenger": "^5.2",
+ "symfony/mime": "^4.4|^5.0",
+ "symfony/polyfill-intl-icu": "~1.0",
+ "symfony/process": "^4.4|^5.0",
+ "symfony/property-info": "^4.4|^5.0",
+ "symfony/security-bundle": "^5.1",
+ "symfony/security-csrf": "^4.4|^5.0",
+ "symfony/security-http": "^4.4|^5.0",
+ "symfony/serializer": "^5.2",
+ "symfony/stopwatch": "^4.4|^5.0",
+ "symfony/string": "^5.0",
+ "symfony/translation": "^5.0",
+ "symfony/twig-bundle": "^4.4|^5.0",
+ "symfony/validator": "^5.2",
+ "symfony/web-link": "^4.4|^5.0",
+ "symfony/workflow": "^5.2",
+ "symfony/yaml": "^4.4|^5.0",
+ "twig/twig": "^2.10|^3.0"
+ },
+ "suggest": {
+ "ext-apcu": "For best performance of the system caches",
+ "symfony/console": "For using the console commands",
+ "symfony/form": "For using forms",
+ "symfony/property-info": "For using the property_info service",
+ "symfony/serializer": "For using the serializer service",
+ "symfony/validator": "For using validation",
+ "symfony/web-link": "For using web links, features such as preloading, prefetching or prerendering",
+ "symfony/yaml": "For using the debug:config and lint:yaml commands"
+ },
+ "type": "symfony-bundle",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Bundle\\FrameworkBundle\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony FrameworkBundle",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/framework-bundle/tree/v5.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-12-18T11:40:59+00:00"
+ },
+ {
+ "name": "symfony/http-foundation",
+ "version": "v5.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/http-foundation.git",
+ "reference": "a1f6218b29897ab52acba58cfa905b83625bef8d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/http-foundation/zipball/a1f6218b29897ab52acba58cfa905b83625bef8d",
+ "reference": "a1f6218b29897ab52acba58cfa905b83625bef8d",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/deprecation-contracts": "^2.1",
+ "symfony/polyfill-mbstring": "~1.1",
+ "symfony/polyfill-php80": "^1.15"
+ },
+ "require-dev": {
+ "predis/predis": "~1.0",
+ "symfony/cache": "^4.4|^5.0",
+ "symfony/expression-language": "^4.4|^5.0",
+ "symfony/mime": "^4.4|^5.0"
+ },
+ "suggest": {
+ "symfony/mime": "To use the file extension guesser"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\HttpFoundation\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony HttpFoundation Component",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/http-foundation/tree/v5.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-12-18T10:00:10+00:00"
+ },
+ {
+ "name": "symfony/http-kernel",
+ "version": "v5.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/http-kernel.git",
+ "reference": "1feb619286d819180f7b8bc0dc44f516d9c62647"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/http-kernel/zipball/1feb619286d819180f7b8bc0dc44f516d9c62647",
+ "reference": "1feb619286d819180f7b8bc0dc44f516d9c62647",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "psr/log": "~1.0",
+ "symfony/deprecation-contracts": "^2.1",
+ "symfony/error-handler": "^4.4|^5.0",
+ "symfony/event-dispatcher": "^5.0",
+ "symfony/http-client-contracts": "^1.1|^2",
+ "symfony/http-foundation": "^4.4|^5.0",
+ "symfony/polyfill-ctype": "^1.8",
+ "symfony/polyfill-php73": "^1.9",
+ "symfony/polyfill-php80": "^1.15"
+ },
+ "conflict": {
+ "symfony/browser-kit": "<4.4",
+ "symfony/cache": "<5.0",
+ "symfony/config": "<5.0",
+ "symfony/console": "<4.4",
+ "symfony/dependency-injection": "<5.1.8",
+ "symfony/doctrine-bridge": "<5.0",
+ "symfony/form": "<5.0",
+ "symfony/http-client": "<5.0",
+ "symfony/mailer": "<5.0",
+ "symfony/messenger": "<5.0",
+ "symfony/translation": "<5.0",
+ "symfony/twig-bridge": "<5.0",
+ "symfony/validator": "<5.0",
+ "twig/twig": "<2.4"
+ },
+ "provide": {
+ "psr/log-implementation": "1.0"
+ },
+ "require-dev": {
+ "psr/cache": "~1.0",
+ "symfony/browser-kit": "^4.4|^5.0",
+ "symfony/config": "^5.0",
+ "symfony/console": "^4.4|^5.0",
+ "symfony/css-selector": "^4.4|^5.0",
+ "symfony/dependency-injection": "^5.1.8",
+ "symfony/dom-crawler": "^4.4|^5.0",
+ "symfony/expression-language": "^4.4|^5.0",
+ "symfony/finder": "^4.4|^5.0",
+ "symfony/process": "^4.4|^5.0",
+ "symfony/routing": "^4.4|^5.0",
+ "symfony/stopwatch": "^4.4|^5.0",
+ "symfony/translation": "^4.4|^5.0",
+ "symfony/translation-contracts": "^1.1|^2",
+ "twig/twig": "^2.4|^3.0"
+ },
+ "suggest": {
+ "symfony/browser-kit": "",
+ "symfony/config": "",
+ "symfony/console": "",
+ "symfony/dependency-injection": ""
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\HttpKernel\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony HttpKernel Component",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/http-kernel/tree/v5.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-12-18T13:49:39+00:00"
+ },
+ {
+ "name": "symfony/intl",
+ "version": "v5.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/intl.git",
+ "reference": "53927f98c9201fe5db3cfc4d574b1f4039020297"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/intl/zipball/53927f98c9201fe5db3cfc4d574b1f4039020297",
+ "reference": "53927f98c9201fe5db3cfc4d574b1f4039020297",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/polyfill-intl-icu": "~1.0",
+ "symfony/polyfill-php80": "^1.15"
+ },
+ "require-dev": {
+ "symfony/filesystem": "^4.4|^5.0"
+ },
+ "suggest": {
+ "ext-intl": "to use the component with locales other than \"en\""
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Intl\\": ""
+ },
+ "classmap": [
+ "Resources/stubs"
+ ],
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@gmail.com"
+ },
+ {
+ "name": "Eriksen Costa",
+ "email": "eriksen.costa@infranology.com.br"
+ },
+ {
+ "name": "Igor Wiedler",
+ "email": "igor@wiedler.ch"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "A PHP replacement layer for the C intl extension that includes additional data from the ICU library.",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "i18n",
+ "icu",
+ "internationalization",
+ "intl",
+ "l10n",
+ "localization"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/intl/tree/v5.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-12-14T10:10:03+00:00"
+ },
+ {
+ "name": "symfony/mime",
+ "version": "v5.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/mime.git",
+ "reference": "de97005aef7426ba008c46ba840fc301df577ada"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/mime/zipball/de97005aef7426ba008c46ba840fc301df577ada",
+ "reference": "de97005aef7426ba008c46ba840fc301df577ada",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/deprecation-contracts": "^2.1",
+ "symfony/polyfill-intl-idn": "^1.10",
+ "symfony/polyfill-mbstring": "^1.0",
+ "symfony/polyfill-php80": "^1.15"
+ },
+ "conflict": {
+ "symfony/mailer": "<4.4"
+ },
+ "require-dev": {
+ "egulias/email-validator": "^2.1.10",
+ "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0",
+ "symfony/dependency-injection": "^4.4|^5.0",
+ "symfony/property-access": "^4.4|^5.1",
+ "symfony/property-info": "^4.4|^5.1",
+ "symfony/serializer": "^5.2"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Mime\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "A library to manipulate MIME messages",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "mime",
+ "mime-type"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/mime/tree/v5.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-12-09T18:54:12+00:00"
+ },
+ {
+ "name": "symfony/monolog-bridge",
+ "version": "v5.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/monolog-bridge.git",
+ "reference": "c024671adcac903b142dd952306a243d35843963"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/c024671adcac903b142dd952306a243d35843963",
+ "reference": "c024671adcac903b142dd952306a243d35843963",
+ "shasum": ""
+ },
+ "require": {
+ "monolog/monolog": "^1.25.1|^2",
+ "php": ">=7.2.5",
+ "symfony/deprecation-contracts": "^2.1",
+ "symfony/http-kernel": "^4.4|^5.0",
+ "symfony/service-contracts": "^1.1|^2"
+ },
+ "conflict": {
+ "symfony/console": "<4.4",
+ "symfony/http-foundation": "<4.4"
+ },
+ "require-dev": {
+ "symfony/console": "^4.4|^5.0",
+ "symfony/http-client": "^4.4|^5.0",
+ "symfony/mailer": "^4.4|^5.0",
+ "symfony/mime": "^4.4|^5.0",
+ "symfony/security-core": "^4.4|^5.0",
+ "symfony/var-dumper": "^4.4|^5.0"
+ },
+ "suggest": {
+ "symfony/console": "For the possibility to show log messages in console commands depending on verbosity settings.",
+ "symfony/http-kernel": "For using the debugging handlers together with the response life cycle of the HTTP kernel.",
+ "symfony/var-dumper": "For using the debugging handlers like the console handler or the log server handler."
+ },
+ "type": "symfony-bridge",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Bridge\\Monolog\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Monolog Bridge",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/monolog-bridge/tree/v5.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-12-10T19:16:15+00:00"
+ },
+ {
+ "name": "symfony/monolog-bundle",
+ "version": "v3.6.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/monolog-bundle.git",
+ "reference": "e495f5c7e4e672ffef4357d4a4d85f010802f940"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/e495f5c7e4e672ffef4357d4a4d85f010802f940",
+ "reference": "e495f5c7e4e672ffef4357d4a4d85f010802f940",
+ "shasum": ""
+ },
+ "require": {
+ "monolog/monolog": "~1.22 || ~2.0",
+ "php": ">=5.6",
+ "symfony/config": "~3.4 || ~4.0 || ^5.0",
+ "symfony/dependency-injection": "~3.4.10 || ^4.0.10 || ^5.0",
+ "symfony/http-kernel": "~3.4 || ~4.0 || ^5.0",
+ "symfony/monolog-bridge": "~3.4 || ~4.0 || ^5.0"
+ },
+ "require-dev": {
+ "symfony/console": "~3.4 || ~4.0 || ^5.0",
+ "symfony/phpunit-bridge": "^4.4 || ^5.0",
+ "symfony/yaml": "~3.4 || ~4.0 || ^5.0"
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Bundle\\MonologBundle\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "http://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony MonologBundle",
+ "homepage": "http://symfony.com",
+ "keywords": [
+ "log",
+ "logging"
+ ],
+ "support": {
+ "issues": "https://github.com/symfony/monolog-bundle/issues",
+ "source": "https://github.com/symfony/monolog-bundle/tree/v3.6.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-10-06T15:12:11+00:00"
+ },
+ {
+ "name": "symfony/options-resolver",
+ "version": "v5.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/options-resolver.git",
+ "reference": "87a2a4a766244e796dd9cb9d6f58c123358cd986"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/options-resolver/zipball/87a2a4a766244e796dd9cb9d6f58c123358cd986",
+ "reference": "87a2a4a766244e796dd9cb9d6f58c123358cd986",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/deprecation-contracts": "^2.1",
+ "symfony/polyfill-php73": "~1.0",
+ "symfony/polyfill-php80": "^1.15"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\OptionsResolver\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony OptionsResolver Component",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "config",
+ "configuration",
+ "options"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/options-resolver/tree/v5.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-10-24T12:08:07+00:00"
+ },
+ {
+ "name": "symfony/orm-pack",
+ "version": "v1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/orm-pack.git",
+ "reference": "21ac491414b5815e5ebb7425908c1d1568d2e775"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/orm-pack/zipball/21ac491414b5815e5ebb7425908c1d1568d2e775",
+ "reference": "21ac491414b5815e5ebb7425908c1d1568d2e775",
+ "shasum": ""
+ },
+ "require": {
+ "composer/package-versions-deprecated": "*",
+ "doctrine/common": "^2",
+ "doctrine/doctrine-bundle": "^2",
+ "doctrine/doctrine-migrations-bundle": "^2",
+ "doctrine/orm": "^2"
+ },
+ "type": "symfony-pack",
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "A pack for the Doctrine ORM",
+ "support": {
+ "issues": "https://github.com/symfony/orm-pack/issues",
+ "source": "https://github.com/symfony/orm-pack/tree/v1.2.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-08-31T10:20:18+00:00"
+ },
+ {
+ "name": "symfony/polyfill-intl-grapheme",
+ "version": "v1.20.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-intl-grapheme.git",
+ "reference": "c7cf3f858ec7d70b89559d6e6eb1f7c2517d479c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/c7cf3f858ec7d70b89559d6e6eb1f7c2517d479c",
+ "reference": "c7cf3f858ec7d70b89559d6e6eb1f7c2517d479c",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "suggest": {
+ "ext-intl": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.20-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Intl\\Grapheme\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for intl's grapheme_* functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "grapheme",
+ "intl",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.20.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-10-23T14:02:19+00:00"
+ },
+ {
+ "name": "symfony/polyfill-intl-icu",
+ "version": "v1.20.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-intl-icu.git",
+ "reference": "c44d5bf6a75eed79555c6bf37505c6d39559353e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/c44d5bf6a75eed79555c6bf37505c6d39559353e",
+ "reference": "c44d5bf6a75eed79555c6bf37505c6d39559353e",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1",
+ "symfony/intl": "~2.3|~3.0|~4.0|~5.0"
+ },
+ "suggest": {
+ "ext-intl": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.20-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for intl's ICU-related data and classes",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "icu",
+ "intl",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.20.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-10-23T14:02:19+00:00"
+ },
+ {
+ "name": "symfony/polyfill-intl-idn",
+ "version": "v1.20.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-intl-idn.git",
+ "reference": "3b75acd829741c768bc8b1f84eb33265e7cc5117"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/3b75acd829741c768bc8b1f84eb33265e7cc5117",
+ "reference": "3b75acd829741c768bc8b1f84eb33265e7cc5117",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1",
+ "symfony/polyfill-intl-normalizer": "^1.10",
+ "symfony/polyfill-php72": "^1.10"
+ },
+ "suggest": {
+ "ext-intl": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.20-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Intl\\Idn\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Laurent Bassin",
+ "email": "laurent@bassin.info"
+ },
+ {
+ "name": "Trevor Rowbotham",
+ "email": "trevor.rowbotham@pm.me"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "idn",
+ "intl",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.20.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-10-23T14:02:19+00:00"
+ },
+ {
+ "name": "symfony/polyfill-intl-normalizer",
+ "version": "v1.20.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
+ "reference": "727d1096295d807c309fb01a851577302394c897"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/727d1096295d807c309fb01a851577302394c897",
+ "reference": "727d1096295d807c309fb01a851577302394c897",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "suggest": {
+ "ext-intl": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.20-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Intl\\Normalizer\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ],
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for intl's Normalizer class and related functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "intl",
+ "normalizer",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.20.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-10-23T14:02:19+00:00"
+ },
+ {
+ "name": "symfony/polyfill-mbstring",
+ "version": "v1.20.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-mbstring.git",
+ "reference": "39d483bdf39be819deabf04ec872eb0b2410b531"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/39d483bdf39be819deabf04ec872eb0b2410b531",
+ "reference": "39d483bdf39be819deabf04ec872eb0b2410b531",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "suggest": {
+ "ext-mbstring": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.20-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Mbstring\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for the Mbstring extension",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "mbstring",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.20.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-10-23T14:02:19+00:00"
+ },
+ {
+ "name": "symfony/polyfill-php72",
+ "version": "v1.20.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php72.git",
+ "reference": "cede45fcdfabdd6043b3592e83678e42ec69e930"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/cede45fcdfabdd6043b3592e83678e42ec69e930",
+ "reference": "cede45fcdfabdd6043b3592e83678e42ec69e930",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.20-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Php72\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php72/tree/v1.20.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-10-23T14:02:19+00:00"
+ },
+ {
+ "name": "symfony/polyfill-php73",
+ "version": "v1.20.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php73.git",
+ "reference": "8ff431c517be11c78c48a39a66d37431e26a6bed"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/8ff431c517be11c78c48a39a66d37431e26a6bed",
+ "reference": "8ff431c517be11c78c48a39a66d37431e26a6bed",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.20-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Php73\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ],
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php73/tree/v1.20.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-10-23T14:02:19+00:00"
+ },
+ {
+ "name": "symfony/polyfill-php80",
+ "version": "v1.20.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php80.git",
+ "reference": "e70aa8b064c5b72d3df2abd5ab1e90464ad009de"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/e70aa8b064c5b72d3df2abd5ab1e90464ad009de",
+ "reference": "e70aa8b064c5b72d3df2abd5ab1e90464ad009de",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.20-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Php80\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ],
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Ion Bazan",
+ "email": "ion.bazan@gmail.com"
+ },
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php80/tree/v1.20.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-10-23T14:02:19+00:00"
+ },
+ {
+ "name": "symfony/property-access",
+ "version": "v5.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/property-access.git",
+ "reference": "243dcdda2f276cb31efa31a015d0fdb5076931ce"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/property-access/zipball/243dcdda2f276cb31efa31a015d0fdb5076931ce",
+ "reference": "243dcdda2f276cb31efa31a015d0fdb5076931ce",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/deprecation-contracts": "^2.1",
+ "symfony/polyfill-php80": "^1.15",
+ "symfony/property-info": "^5.2"
+ },
+ "require-dev": {
+ "symfony/cache": "^4.4|^5.0"
+ },
+ "suggest": {
+ "psr/cache-implementation": "To cache access methods."
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\PropertyAccess\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony PropertyAccess Component",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "access",
+ "array",
+ "extraction",
+ "index",
+ "injection",
+ "object",
+ "property",
+ "property path",
+ "reflection"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/property-access/tree/v5.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-12-10T19:16:15+00:00"
+ },
+ {
+ "name": "symfony/property-info",
+ "version": "v5.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/property-info.git",
+ "reference": "f65694a05eb7742c5f2951f20676de367ffaaaea"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/property-info/zipball/f65694a05eb7742c5f2951f20676de367ffaaaea",
+ "reference": "f65694a05eb7742c5f2951f20676de367ffaaaea",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/deprecation-contracts": "^2.1",
+ "symfony/polyfill-php80": "^1.15",
+ "symfony/string": "^5.1"
+ },
+ "conflict": {
+ "phpdocumentor/reflection-docblock": "<3.2.2",
+ "phpdocumentor/type-resolver": "<0.3.0",
+ "symfony/dependency-injection": "<4.4"
+ },
+ "require-dev": {
+ "doctrine/annotations": "~1.7",
+ "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0",
+ "symfony/cache": "^4.4|^5.0",
+ "symfony/dependency-injection": "^4.4|^5.0",
+ "symfony/serializer": "^4.4|^5.0"
+ },
+ "suggest": {
+ "phpdocumentor/reflection-docblock": "To use the PHPDoc",
+ "psr/cache-implementation": "To cache results",
+ "symfony/doctrine-bridge": "To use Doctrine metadata",
+ "symfony/serializer": "To use Serializer metadata"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\PropertyInfo\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Kévin Dunglas",
+ "email": "dunglas@gmail.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Property Info Component",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "doctrine",
+ "phpdoc",
+ "property",
+ "symfony",
+ "type",
+ "validator"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/property-info/tree/v5.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-12-11T23:40:07+00:00"
+ },
+ {
+ "name": "symfony/routing",
+ "version": "v5.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/routing.git",
+ "reference": "934ac2720dcc878a47a45c986b483a7ee7193620"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/routing/zipball/934ac2720dcc878a47a45c986b483a7ee7193620",
+ "reference": "934ac2720dcc878a47a45c986b483a7ee7193620",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/deprecation-contracts": "^2.1",
+ "symfony/polyfill-php80": "^1.15"
+ },
+ "conflict": {
+ "symfony/config": "<5.0",
+ "symfony/dependency-injection": "<4.4",
+ "symfony/yaml": "<4.4"
+ },
+ "require-dev": {
+ "doctrine/annotations": "^1.7",
+ "psr/log": "~1.0",
+ "symfony/config": "^5.0",
+ "symfony/dependency-injection": "^4.4|^5.0",
+ "symfony/expression-language": "^4.4|^5.0",
+ "symfony/http-foundation": "^4.4|^5.0",
+ "symfony/yaml": "^4.4|^5.0"
+ },
+ "suggest": {
+ "doctrine/annotations": "For using the annotation loader",
+ "symfony/config": "For using the all-in-one router or any loader",
+ "symfony/expression-language": "For using expression matching",
+ "symfony/http-foundation": "For using a Symfony Request object",
+ "symfony/yaml": "For using the YAML loader"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Routing\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Routing Component",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "router",
+ "routing",
+ "uri",
+ "url"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/routing/tree/v5.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-12-08T17:03:37+00:00"
+ },
+ {
+ "name": "symfony/security-bundle",
+ "version": "v5.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/security-bundle.git",
+ "reference": "5a4e431445432c02b88c885c778765b50d92c6d5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/security-bundle/zipball/5a4e431445432c02b88c885c778765b50d92c6d5",
+ "reference": "5a4e431445432c02b88c885c778765b50d92c6d5",
+ "shasum": ""
+ },
+ "require": {
+ "ext-xml": "*",
+ "php": ">=7.2.5",
+ "symfony/config": "^4.4|^5.0",
+ "symfony/dependency-injection": "^5.2",
+ "symfony/deprecation-contracts": "^2.1",
+ "symfony/event-dispatcher": "^5.1",
+ "symfony/http-kernel": "^5.0",
+ "symfony/polyfill-php80": "^1.15",
+ "symfony/security-core": "^5.2",
+ "symfony/security-csrf": "^4.4|^5.0",
+ "symfony/security-guard": "^5.2",
+ "symfony/security-http": "^5.2"
+ },
+ "conflict": {
+ "symfony/browser-kit": "<4.4",
+ "symfony/console": "<4.4",
+ "symfony/framework-bundle": "<4.4",
+ "symfony/ldap": "<4.4",
+ "symfony/twig-bundle": "<4.4"
+ },
+ "require-dev": {
+ "doctrine/doctrine-bundle": "^2.0",
+ "symfony/asset": "^4.4|^5.0",
+ "symfony/browser-kit": "^4.4|^5.0",
+ "symfony/console": "^4.4|^5.0",
+ "symfony/css-selector": "^4.4|^5.0",
+ "symfony/dom-crawler": "^4.4|^5.0",
+ "symfony/expression-language": "^4.4|^5.0",
+ "symfony/form": "^4.4|^5.0",
+ "symfony/framework-bundle": "^5.2",
+ "symfony/process": "^4.4|^5.0",
+ "symfony/rate-limiter": "^5.2",
+ "symfony/serializer": "^4.4|^5.0",
+ "symfony/translation": "^4.4|^5.0",
+ "symfony/twig-bridge": "^4.4|^5.0",
+ "symfony/twig-bundle": "^4.4|^5.0",
+ "symfony/validator": "^4.4|^5.0",
+ "symfony/yaml": "^4.4|^5.0",
+ "twig/twig": "^2.10|^3.0"
+ },
+ "type": "symfony-bundle",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Bundle\\SecurityBundle\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony SecurityBundle",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/security-bundle/tree/v5.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-12-18T07:32:35+00:00"
+ },
+ {
+ "name": "symfony/security-core",
+ "version": "v5.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/security-core.git",
+ "reference": "d058598fa48e06c3f774450f08fd926b982e33eb"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/security-core/zipball/d058598fa48e06c3f774450f08fd926b982e33eb",
+ "reference": "d058598fa48e06c3f774450f08fd926b982e33eb",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/deprecation-contracts": "^2.1",
+ "symfony/event-dispatcher-contracts": "^1.1|^2",
+ "symfony/polyfill-php80": "^1.15",
+ "symfony/service-contracts": "^1.1.6|^2"
+ },
+ "conflict": {
+ "symfony/event-dispatcher": "<4.4",
+ "symfony/ldap": "<4.4",
+ "symfony/security-guard": "<4.4",
+ "symfony/validator": "<5.2"
+ },
+ "require-dev": {
+ "psr/container": "^1.0",
+ "psr/log": "~1.0",
+ "symfony/event-dispatcher": "^4.4|^5.0",
+ "symfony/expression-language": "^4.4|^5.0",
+ "symfony/http-foundation": "^4.4|^5.0",
+ "symfony/ldap": "^4.4|^5.0",
+ "symfony/translation": "^4.4|^5.0",
+ "symfony/validator": "^5.2"
+ },
+ "suggest": {
+ "psr/container-implementation": "To instantiate the Security class",
+ "symfony/event-dispatcher": "",
+ "symfony/expression-language": "For using the expression voter",
+ "symfony/http-foundation": "",
+ "symfony/ldap": "For using LDAP integration",
+ "symfony/validator": "For using the user password constraint"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Security\\Core\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Security Component - Core Library",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/security-core/tree/v5.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-12-18T07:32:35+00:00"
+ },
+ {
+ "name": "symfony/security-csrf",
+ "version": "v5.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/security-csrf.git",
+ "reference": "fc91cd67b6fcbeae3e5aff854c722fa05b5d133b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/security-csrf/zipball/fc91cd67b6fcbeae3e5aff854c722fa05b5d133b",
+ "reference": "fc91cd67b6fcbeae3e5aff854c722fa05b5d133b",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/security-core": "^4.4|^5.0"
+ },
+ "conflict": {
+ "symfony/http-foundation": "<4.4"
+ },
+ "require-dev": {
+ "symfony/http-foundation": "^4.4|^5.0"
+ },
+ "suggest": {
+ "symfony/http-foundation": "For using the class SessionTokenStorage."
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Security\\Csrf\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Security Component - CSRF Library",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/security-csrf/tree/v5.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-12-08T17:02:38+00:00"
+ },
+ {
+ "name": "symfony/security-guard",
+ "version": "v5.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/security-guard.git",
+ "reference": "0fb0e644feac3d6a122c2c27c9ef8823ba7f1c49"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/security-guard/zipball/0fb0e644feac3d6a122c2c27c9ef8823ba7f1c49",
+ "reference": "0fb0e644feac3d6a122c2c27c9ef8823ba7f1c49",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/polyfill-php80": "^1.15",
+ "symfony/security-core": "^5.0",
+ "symfony/security-http": "^4.4.1|^5.0.1"
+ },
+ "require-dev": {
+ "psr/log": "~1.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Security\\Guard\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Security Component - Guard",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/security-guard/tree/v5.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-11-27T10:24:53+00:00"
+ },
+ {
+ "name": "symfony/security-http",
+ "version": "v5.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/security-http.git",
+ "reference": "40023b8e14e5928b26df6a099cec0bf0c30eb3be"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/security-http/zipball/40023b8e14e5928b26df6a099cec0bf0c30eb3be",
+ "reference": "40023b8e14e5928b26df6a099cec0bf0c30eb3be",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/deprecation-contracts": "^2.1",
+ "symfony/http-foundation": "^5.2",
+ "symfony/http-kernel": "^5.2",
+ "symfony/polyfill-php80": "^1.15",
+ "symfony/property-access": "^4.4|^5.0",
+ "symfony/security-core": "^5.2"
+ },
+ "conflict": {
+ "symfony/event-dispatcher": "<4.3",
+ "symfony/security-csrf": "<4.4"
+ },
+ "require-dev": {
+ "psr/log": "~1.0",
+ "symfony/cache": "^4.4|^5.0",
+ "symfony/rate-limiter": "^5.2",
+ "symfony/routing": "^4.4|^5.0",
+ "symfony/security-csrf": "^4.4|^5.0",
+ "symfony/translation": "^4.4|^5.0"
+ },
+ "suggest": {
+ "symfony/routing": "For using the HttpUtils class to create sub-requests, redirect the user, and match URLs",
+ "symfony/security-csrf": "For using tokens to protect authentication/logout attempts"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Security\\Http\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Security Component - HTTP Integration",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/security-http/tree/v5.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-12-08T17:03:37+00:00"
+ },
+ {
+ "name": "symfony/serializer",
+ "version": "v5.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/serializer.git",
+ "reference": "4af81510bb603a6d255691a88e118add2bba6337"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/serializer/zipball/4af81510bb603a6d255691a88e118add2bba6337",
+ "reference": "4af81510bb603a6d255691a88e118add2bba6337",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/polyfill-ctype": "~1.8",
+ "symfony/polyfill-php80": "^1.15"
+ },
+ "conflict": {
+ "phpdocumentor/type-resolver": "<0.2.1",
+ "symfony/dependency-injection": "<4.4",
+ "symfony/property-access": "<4.4",
+ "symfony/property-info": "<4.4",
+ "symfony/yaml": "<4.4"
+ },
+ "require-dev": {
+ "doctrine/annotations": "~1.0",
+ "doctrine/cache": "~1.0",
+ "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0",
+ "symfony/cache": "^4.4|^5.0",
+ "symfony/config": "^4.4|^5.0",
+ "symfony/dependency-injection": "^4.4|^5.0",
+ "symfony/error-handler": "^4.4|^5.0",
+ "symfony/filesystem": "^4.4|^5.0",
+ "symfony/form": "^4.4|^5.0",
+ "symfony/http-foundation": "^4.4|^5.0",
+ "symfony/http-kernel": "^4.4|^5.0",
+ "symfony/mime": "^4.4|^5.0",
+ "symfony/property-access": "^4.4|^5.0",
+ "symfony/property-info": "^4.4|^5.0",
+ "symfony/uid": "^5.1",
+ "symfony/validator": "^4.4|^5.0",
+ "symfony/var-exporter": "^4.4|^5.0",
+ "symfony/yaml": "^4.4|^5.0"
+ },
+ "suggest": {
+ "doctrine/annotations": "For using the annotation mapping. You will also need doctrine/cache.",
+ "doctrine/cache": "For using the default cached annotation reader and metadata cache.",
+ "psr/cache-implementation": "For using the metadata cache.",
+ "symfony/config": "For using the XML mapping loader.",
+ "symfony/mime": "For using a MIME type guesser within the DataUriNormalizer.",
+ "symfony/property-access": "For using the ObjectNormalizer.",
+ "symfony/property-info": "To deserialize relations.",
+ "symfony/var-exporter": "For using the metadata compiler.",
+ "symfony/yaml": "For using the default YAML mapping loader."
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Serializer\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Serializer Component",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/serializer/tree/v5.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-12-18T08:03:05+00:00"
+ },
+ {
+ "name": "symfony/serializer-pack",
+ "version": "v1.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/serializer-pack.git",
+ "reference": "61173947057d5e1bf1c79e2a6ab6a8430be0602e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/serializer-pack/zipball/61173947057d5e1bf1c79e2a6ab6a8430be0602e",
+ "reference": "61173947057d5e1bf1c79e2a6ab6a8430be0602e",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/annotations": "^1.0",
+ "phpdocumentor/reflection-docblock": "*",
+ "symfony/property-access": "*",
+ "symfony/property-info": "*",
+ "symfony/serializer": "*"
+ },
+ "type": "symfony-pack",
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "A pack for the Symfony serializer",
+ "support": {
+ "issues": "https://github.com/symfony/serializer-pack/issues",
+ "source": "https://github.com/symfony/serializer-pack/tree/v1.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-10-19T08:52:16+00:00"
+ },
+ {
+ "name": "symfony/stopwatch",
+ "version": "v5.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/stopwatch.git",
+ "reference": "2b105c0354f39a63038a1d8bf776ee92852813af"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/stopwatch/zipball/2b105c0354f39a63038a1d8bf776ee92852813af",
+ "reference": "2b105c0354f39a63038a1d8bf776ee92852813af",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/service-contracts": "^1.0|^2"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Stopwatch\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Stopwatch Component",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/stopwatch/tree/v5.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-11-01T16:14:45+00:00"
+ },
+ {
+ "name": "symfony/string",
+ "version": "v5.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/string.git",
+ "reference": "5bd67751d2e3f7d6f770c9154b8fbcb2aa05f7ed"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/string/zipball/5bd67751d2e3f7d6f770c9154b8fbcb2aa05f7ed",
+ "reference": "5bd67751d2e3f7d6f770c9154b8fbcb2aa05f7ed",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/polyfill-ctype": "~1.8",
+ "symfony/polyfill-intl-grapheme": "~1.0",
+ "symfony/polyfill-intl-normalizer": "~1.0",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/polyfill-php80": "~1.15"
+ },
+ "require-dev": {
+ "symfony/error-handler": "^4.4|^5.0",
+ "symfony/http-client": "^4.4|^5.0",
+ "symfony/translation-contracts": "^1.1|^2",
+ "symfony/var-exporter": "^4.4|^5.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\String\\": ""
+ },
+ "files": [
+ "Resources/functions.php"
+ ],
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony String component",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "grapheme",
+ "i18n",
+ "string",
+ "unicode",
+ "utf-8",
+ "utf8"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/string/tree/v5.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-12-05T07:33:16+00:00"
+ },
+ {
+ "name": "symfony/swiftmailer-bundle",
+ "version": "v3.5.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/swiftmailer-bundle.git",
+ "reference": "933be6a3196fb354615290f53ff7ff61e0bdde58"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/swiftmailer-bundle/zipball/933be6a3196fb354615290f53ff7ff61e0bdde58",
+ "reference": "933be6a3196fb354615290f53ff7ff61e0bdde58",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1",
+ "swiftmailer/swiftmailer": "^6.1.3",
+ "symfony/config": "^4.4|^5.0",
+ "symfony/dependency-injection": "^4.4|^5.0",
+ "symfony/http-kernel": "^4.4|^5.0"
+ },
+ "conflict": {
+ "twig/twig": "<1.41|<2.10"
+ },
+ "require-dev": {
+ "symfony/console": "^4.4|^5.0",
+ "symfony/framework-bundle": "^4.4|^5.0",
+ "symfony/phpunit-bridge": "^4.4|^5.0",
+ "symfony/yaml": "^4.4|^5.0"
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.5-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Bundle\\SwiftmailerBundle\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "http://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony SwiftmailerBundle",
+ "homepage": "http://symfony.com",
+ "support": {
+ "issues": "https://github.com/symfony/swiftmailer-bundle/issues",
+ "source": "https://github.com/symfony/swiftmailer-bundle/tree/v3.5.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-10-06T05:51:35+00:00"
+ },
+ {
+ "name": "symfony/translation",
+ "version": "v5.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/translation.git",
+ "reference": "a04209ba0d1391c828e5b2373181dac63c52ee70"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/translation/zipball/a04209ba0d1391c828e5b2373181dac63c52ee70",
+ "reference": "a04209ba0d1391c828e5b2373181dac63c52ee70",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/polyfill-php80": "^1.15",
+ "symfony/translation-contracts": "^2.3"
+ },
+ "conflict": {
+ "symfony/config": "<4.4",
+ "symfony/dependency-injection": "<5.0",
+ "symfony/http-kernel": "<5.0",
+ "symfony/twig-bundle": "<5.0",
+ "symfony/yaml": "<4.4"
+ },
+ "provide": {
+ "symfony/translation-implementation": "2.0"
+ },
+ "require-dev": {
+ "psr/log": "~1.0",
+ "symfony/config": "^4.4|^5.0",
+ "symfony/console": "^4.4|^5.0",
+ "symfony/dependency-injection": "^5.0",
+ "symfony/finder": "^4.4|^5.0",
+ "symfony/http-kernel": "^5.0",
+ "symfony/intl": "^4.4|^5.0",
+ "symfony/service-contracts": "^1.1.2|^2",
+ "symfony/yaml": "^4.4|^5.0"
+ },
+ "suggest": {
+ "psr/log-implementation": "To use logging capability in translator",
+ "symfony/config": "",
+ "symfony/yaml": ""
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "Resources/functions.php"
+ ],
+ "psr-4": {
+ "Symfony\\Component\\Translation\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Translation Component",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/translation/tree/v5.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-12-08T17:03:37+00:00"
+ },
+ {
+ "name": "symfony/twig-bridge",
+ "version": "v5.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/twig-bridge.git",
+ "reference": "378a136a41c07b5f2086f753d9756fb018921f86"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/378a136a41c07b5f2086f753d9756fb018921f86",
+ "reference": "378a136a41c07b5f2086f753d9756fb018921f86",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/polyfill-php80": "^1.15",
+ "symfony/translation-contracts": "^1.1|^2",
+ "twig/twig": "^2.10|^3.0"
+ },
+ "conflict": {
+ "symfony/console": "<4.4",
+ "symfony/form": "<5.1",
+ "symfony/http-foundation": "<4.4",
+ "symfony/http-kernel": "<4.4",
+ "symfony/translation": "<5.2",
+ "symfony/workflow": "<5.2"
+ },
+ "require-dev": {
+ "egulias/email-validator": "^2.1.10",
+ "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0",
+ "symfony/asset": "^4.4|^5.0",
+ "symfony/console": "^4.4|^5.0",
+ "symfony/dependency-injection": "^4.4|^5.0",
+ "symfony/expression-language": "^4.4|^5.0",
+ "symfony/finder": "^4.4|^5.0",
+ "symfony/form": "^5.1.9",
+ "symfony/http-foundation": "^4.4|^5.0",
+ "symfony/http-kernel": "^4.4|^5.0",
+ "symfony/mime": "^5.2",
+ "symfony/polyfill-intl-icu": "~1.0",
+ "symfony/property-info": "^4.4|^5.1",
+ "symfony/routing": "^4.4|^5.0",
+ "symfony/security-acl": "^2.8|^3.0",
+ "symfony/security-core": "^4.4|^5.0",
+ "symfony/security-csrf": "^4.4|^5.0",
+ "symfony/security-http": "^4.4|^5.0",
+ "symfony/serializer": "^5.2",
+ "symfony/stopwatch": "^4.4|^5.0",
+ "symfony/translation": "^5.2",
+ "symfony/web-link": "^4.4|^5.0",
+ "symfony/workflow": "^5.2",
+ "symfony/yaml": "^4.4|^5.0",
+ "twig/cssinliner-extra": "^2.12",
+ "twig/inky-extra": "^2.12",
+ "twig/markdown-extra": "^2.12"
+ },
+ "suggest": {
+ "symfony/asset": "For using the AssetExtension",
+ "symfony/expression-language": "For using the ExpressionExtension",
+ "symfony/finder": "",
+ "symfony/form": "For using the FormExtension",
+ "symfony/http-kernel": "For using the HttpKernelExtension",
+ "symfony/routing": "For using the RoutingExtension",
+ "symfony/security-core": "For using the SecurityExtension",
+ "symfony/security-csrf": "For using the CsrfExtension",
+ "symfony/security-http": "For using the LogoutUrlExtension",
+ "symfony/stopwatch": "For using the StopwatchExtension",
+ "symfony/translation": "For using the TranslationExtension",
+ "symfony/var-dumper": "For using the DumpExtension",
+ "symfony/web-link": "For using the WebLinkExtension",
+ "symfony/yaml": "For using the YamlExtension"
+ },
+ "type": "symfony-bridge",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Bridge\\Twig\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Twig Bridge",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/twig-bridge/tree/v5.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-12-11T23:40:07+00:00"
+ },
+ {
+ "name": "symfony/twig-bundle",
+ "version": "v5.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/twig-bundle.git",
+ "reference": "8cb3208aec4655ae1495afad7ef3c032a236dfa7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/8cb3208aec4655ae1495afad7ef3c032a236dfa7",
+ "reference": "8cb3208aec4655ae1495afad7ef3c032a236dfa7",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/config": "^4.4|^5.0",
+ "symfony/http-foundation": "^4.4|^5.0",
+ "symfony/http-kernel": "^5.0",
+ "symfony/polyfill-ctype": "~1.8",
+ "symfony/twig-bridge": "^5.0",
+ "twig/twig": "^2.10|^3.0"
+ },
+ "conflict": {
+ "symfony/dependency-injection": "<5.2",
+ "symfony/framework-bundle": "<5.0",
+ "symfony/translation": "<5.0"
+ },
+ "require-dev": {
+ "doctrine/annotations": "~1.7",
+ "doctrine/cache": "~1.0",
+ "symfony/asset": "^4.4|^5.0",
+ "symfony/dependency-injection": "^5.2",
+ "symfony/expression-language": "^4.4|^5.0",
+ "symfony/finder": "^4.4|^5.0",
+ "symfony/form": "^4.4|^5.0",
+ "symfony/framework-bundle": "^5.0",
+ "symfony/routing": "^4.4|^5.0",
+ "symfony/stopwatch": "^4.4|^5.0",
+ "symfony/translation": "^5.0",
+ "symfony/web-link": "^4.4|^5.0",
+ "symfony/yaml": "^4.4|^5.0"
+ },
+ "type": "symfony-bundle",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Bundle\\TwigBundle\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony TwigBundle",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/twig-bundle/tree/v5.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-12-08T16:43:38+00:00"
+ },
+ {
+ "name": "symfony/validator",
+ "version": "v5.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/validator.git",
+ "reference": "312d36715799ca1d195ee8dbf258b31d1a3cbf7b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/validator/zipball/312d36715799ca1d195ee8dbf258b31d1a3cbf7b",
+ "reference": "312d36715799ca1d195ee8dbf258b31d1a3cbf7b",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/deprecation-contracts": "^2.1",
+ "symfony/polyfill-ctype": "~1.8",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/polyfill-php73": "~1.0",
+ "symfony/polyfill-php80": "^1.15",
+ "symfony/translation-contracts": "^1.1|^2"
+ },
+ "conflict": {
+ "doctrine/lexer": "<1.0.2",
+ "phpunit/phpunit": "<5.4.3",
+ "symfony/dependency-injection": "<4.4",
+ "symfony/expression-language": "<5.1",
+ "symfony/http-kernel": "<4.4",
+ "symfony/intl": "<4.4",
+ "symfony/translation": "<4.4",
+ "symfony/yaml": "<4.4"
+ },
+ "require-dev": {
+ "doctrine/annotations": "~1.7",
+ "doctrine/cache": "~1.0",
+ "egulias/email-validator": "^2.1.10",
+ "symfony/cache": "^4.4|^5.0",
+ "symfony/config": "^4.4|^5.0",
+ "symfony/console": "^4.4|^5.0",
+ "symfony/dependency-injection": "^4.4|^5.0",
+ "symfony/expression-language": "^5.1",
+ "symfony/finder": "^4.4|^5.0",
+ "symfony/http-client": "^4.4|^5.0",
+ "symfony/http-foundation": "^4.4|^5.0",
+ "symfony/http-kernel": "^4.4|^5.0",
+ "symfony/intl": "^4.4|^5.0",
+ "symfony/mime": "^4.4|^5.0",
+ "symfony/property-access": "^4.4|^5.0",
+ "symfony/property-info": "^4.4|^5.0",
+ "symfony/translation": "^4.4|^5.0",
+ "symfony/yaml": "^4.4|^5.0"
+ },
+ "suggest": {
+ "doctrine/annotations": "For using the annotation mapping. You will also need doctrine/cache.",
+ "doctrine/cache": "For using the default cached annotation reader.",
+ "egulias/email-validator": "Strict (RFC compliant) email validation",
+ "psr/cache-implementation": "For using the mapping cache.",
+ "symfony/config": "",
+ "symfony/expression-language": "For using the Expression validator and the ExpressionLanguageSyntax constraints",
+ "symfony/http-foundation": "",
+ "symfony/intl": "",
+ "symfony/property-access": "For accessing properties within comparison constraints",
+ "symfony/property-info": "To automatically add NotNull and Type constraints",
+ "symfony/translation": "For translating validation errors.",
+ "symfony/yaml": ""
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Validator\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Validator Component",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/validator/tree/v5.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-12-18T07:32:35+00:00"
+ },
+ {
+ "name": "symfony/var-dumper",
+ "version": "v5.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/var-dumper.git",
+ "reference": "13e7e882eaa55863faa7c4ad7c60f12f1a8b5089"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/var-dumper/zipball/13e7e882eaa55863faa7c4ad7c60f12f1a8b5089",
+ "reference": "13e7e882eaa55863faa7c4ad7c60f12f1a8b5089",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/polyfill-php80": "^1.15"
+ },
+ "conflict": {
+ "phpunit/phpunit": "<5.4.3",
+ "symfony/console": "<4.4"
+ },
+ "require-dev": {
+ "ext-iconv": "*",
+ "symfony/console": "^4.4|^5.0",
+ "symfony/process": "^4.4|^5.0",
+ "twig/twig": "^2.4|^3.0"
+ },
+ "suggest": {
+ "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).",
+ "ext-intl": "To show region name in time zone dump",
+ "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script"
+ },
+ "bin": [
+ "Resources/bin/var-dump-server"
+ ],
+ "type": "library",
+ "autoload": {
+ "files": [
+ "Resources/functions/dump.php"
+ ],
+ "psr-4": {
+ "Symfony\\Component\\VarDumper\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony mechanism for exploring and dumping PHP variables",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "debug",
+ "dump"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/var-dumper/tree/v5.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-12-16T17:02:19+00:00"
+ },
+ {
+ "name": "symfony/var-exporter",
+ "version": "v5.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/var-exporter.git",
+ "reference": "fbc3507f23d263d75417e09a12d77c009f39676c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/var-exporter/zipball/fbc3507f23d263d75417e09a12d77c009f39676c",
+ "reference": "fbc3507f23d263d75417e09a12d77c009f39676c",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/polyfill-php80": "^1.15"
+ },
+ "require-dev": {
+ "symfony/var-dumper": "^4.4.9|^5.0.9"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\VarExporter\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "A blend of var_export() + serialize() to turn any serializable data structure to plain PHP code",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "clone",
+ "construct",
+ "export",
+ "hydrate",
+ "instantiate",
+ "serialize"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/var-exporter/tree/v5.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-10-28T21:31:18+00:00"
+ },
+ {
+ "name": "symfony/web-link",
+ "version": "v5.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/web-link.git",
+ "reference": "e805314ad8c4298d9bfc75335e35f83d6db2f43f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/web-link/zipball/e805314ad8c4298d9bfc75335e35f83d6db2f43f",
+ "reference": "e805314ad8c4298d9bfc75335e35f83d6db2f43f",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "psr/link": "^1.0"
+ },
+ "conflict": {
+ "symfony/http-kernel": "<4.4"
+ },
+ "provide": {
+ "psr/link-implementation": "1.0"
+ },
+ "require-dev": {
+ "symfony/http-foundation": "^4.4|^5.0",
+ "symfony/http-kernel": "^4.4|^5.0"
+ },
+ "suggest": {
+ "symfony/http-kernel": ""
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\WebLink\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Kévin Dunglas",
+ "email": "dunglas@gmail.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony WebLink Component",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "dns-prefetch",
+ "http",
+ "http2",
+ "link",
+ "performance",
+ "prefetch",
+ "preload",
+ "prerender",
+ "psr13",
+ "push"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/web-link/tree/v5.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-10-24T12:01:57+00:00"
+ },
+ {
+ "name": "symfony/yaml",
+ "version": "v5.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/yaml.git",
+ "reference": "290ea5e03b8cf9b42c783163123f54441fb06939"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/290ea5e03b8cf9b42c783163123f54441fb06939",
+ "reference": "290ea5e03b8cf9b42c783163123f54441fb06939",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/deprecation-contracts": "^2.1",
+ "symfony/polyfill-ctype": "~1.8"
+ },
+ "conflict": {
+ "symfony/console": "<4.4"
+ },
+ "require-dev": {
+ "symfony/console": "^4.4|^5.0"
+ },
+ "suggest": {
+ "symfony/console": "For validating YAML files using the lint command"
+ },
+ "bin": [
+ "Resources/bin/yaml-lint"
+ ],
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Yaml\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Yaml Component",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/yaml/tree/v5.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-12-08T17:02:38+00:00"
+ },
+ {
+ "name": "twig/twig",
+ "version": "v3.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/twigphp/Twig.git",
+ "reference": "f795ca686d38530045859b0350b5352f7d63447d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/twigphp/Twig/zipball/f795ca686d38530045859b0350b5352f7d63447d",
+ "reference": "f795ca686d38530045859b0350b5352f7d63447d",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/polyfill-ctype": "^1.8",
+ "symfony/polyfill-mbstring": "^1.3"
+ },
+ "require-dev": {
+ "psr/container": "^1.0",
+ "symfony/phpunit-bridge": "^4.4.9|^5.0.9"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Twig\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com",
+ "homepage": "http://fabien.potencier.org",
+ "role": "Lead Developer"
+ },
+ {
+ "name": "Twig Team",
+ "role": "Contributors"
+ },
+ {
+ "name": "Armin Ronacher",
+ "email": "armin.ronacher@active-4.com",
+ "role": "Project Founder"
+ }
+ ],
+ "description": "Twig, the flexible, fast, and secure template language for PHP",
+ "homepage": "https://twig.symfony.com",
+ "keywords": [
+ "templating"
+ ],
+ "support": {
+ "issues": "https://github.com/twigphp/Twig/issues",
+ "source": "https://github.com/twigphp/Twig/tree/v3.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/twig/twig",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-01-05T15:40:36+00:00"
+ },
+ {
+ "name": "webmozart/assert",
+ "version": "1.9.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/webmozart/assert.git",
+ "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/webmozart/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389",
+ "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.3 || ^7.0 || ^8.0",
+ "symfony/polyfill-ctype": "^1.8"
+ },
+ "conflict": {
+ "phpstan/phpstan": "<0.12.20",
+ "vimeo/psalm": "<3.9.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8.36 || ^7.5.13"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Webmozart\\Assert\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@gmail.com"
+ }
+ ],
+ "description": "Assertions to validate method input/output with nice error messages.",
+ "keywords": [
+ "assert",
+ "check",
+ "validate"
+ ],
+ "support": {
+ "issues": "https://github.com/webmozart/assert/issues",
+ "source": "https://github.com/webmozart/assert/tree/master"
+ },
+ "time": "2020-07-08T17:02:28+00:00"
+ },
+ {
+ "name": "willdurand/negotiation",
+ "version": "3.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/willdurand/Negotiation.git",
+ "reference": "04e14f38d4edfcc974114a07d2777d90c98f3d9c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/willdurand/Negotiation/zipball/04e14f38d4edfcc974114a07d2777d90c98f3d9c",
+ "reference": "04e14f38d4edfcc974114a07d2777d90c98f3d9c",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1.0"
+ },
+ "require-dev": {
+ "symfony/phpunit-bridge": "^5.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Negotiation\\": "src/Negotiation"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "William Durand",
+ "email": "will+git@drnd.me"
+ }
+ ],
+ "description": "Content Negotiation tools for PHP provided as a standalone library.",
+ "homepage": "http://williamdurand.fr/Negotiation/",
+ "keywords": [
+ "accept",
+ "content",
+ "format",
+ "header",
+ "negotiation"
+ ],
+ "support": {
+ "issues": "https://github.com/willdurand/Negotiation/issues",
+ "source": "https://github.com/willdurand/Negotiation/tree/3.0.0"
+ },
+ "time": "2020-09-25T08:01:41+00:00"
+ }
+ ],
+ "packages-dev": [
+ {
+ "name": "doctrine/data-fixtures",
+ "version": "1.4.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/data-fixtures.git",
+ "reference": "16a03fadb5473f49aad70384002dfd5012fe680e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/16a03fadb5473f49aad70384002dfd5012fe680e",
+ "reference": "16a03fadb5473f49aad70384002dfd5012fe680e",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/common": "^2.13|^3.0",
+ "doctrine/persistence": "^1.3.3|^2.0",
+ "php": "^7.2 || ^8.0"
+ },
+ "conflict": {
+ "doctrine/phpcr-odm": "<1.3.0"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^6.0",
+ "doctrine/dbal": "^2.5.4",
+ "doctrine/mongodb-odm": "^1.3.0 || ^2.0.0",
+ "doctrine/orm": "^2.7.0",
+ "phpunit/phpunit": "^7.0"
+ },
+ "suggest": {
+ "alcaeus/mongo-php-adapter": "For using MongoDB ODM 1.3 with PHP 7 (deprecated)",
+ "doctrine/mongodb-odm": "For loading MongoDB ODM fixtures",
+ "doctrine/orm": "For loading ORM fixtures",
+ "doctrine/phpcr-odm": "For loading PHPCR ODM fixtures"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.4.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Common\\DataFixtures\\": "lib/Doctrine/Common/DataFixtures"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ }
+ ],
+ "description": "Data Fixtures for all Doctrine Object Managers",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "database"
+ ],
+ "support": {
+ "issues": "https://github.com/doctrine/data-fixtures/issues",
+ "source": "https://github.com/doctrine/data-fixtures/tree/1.4.x"
+ },
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdata-fixtures",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-09-01T07:13:28+00:00"
+ },
+ {
+ "name": "doctrine/doctrine-fixtures-bundle",
+ "version": "3.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/DoctrineFixturesBundle.git",
+ "reference": "870189619a7770f468ffb0b80925302e065a3b34"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/870189619a7770f468ffb0b80925302e065a3b34",
+ "reference": "870189619a7770f468ffb0b80925302e065a3b34",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/data-fixtures": "^1.3",
+ "doctrine/doctrine-bundle": "^1.11|^2.0",
+ "doctrine/orm": "^2.6.0",
+ "doctrine/persistence": "^1.3.7|^2.0",
+ "php": "^7.1 || ^8.0",
+ "symfony/config": "^3.4|^4.3|^5.0",
+ "symfony/console": "^3.4|^4.3|^5.0",
+ "symfony/dependency-injection": "^3.4|^4.3|^5.0",
+ "symfony/doctrine-bridge": "^3.4|^4.1|^5.0",
+ "symfony/http-kernel": "^3.4|^4.3|^5.0"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^6.0",
+ "phpunit/phpunit": "^7.4 || ^8.0 || ^9.2",
+ "symfony/phpunit-bridge": "^4.1|^5.0"
+ },
+ "type": "symfony-bundle",
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Bundle\\FixturesBundle\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Doctrine Project",
+ "homepage": "http://www.doctrine-project.org"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "http://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony DoctrineFixturesBundle",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "Fixture",
+ "persistence"
+ ],
+ "support": {
+ "issues": "https://github.com/doctrine/DoctrineFixturesBundle/issues",
+ "source": "https://github.com/doctrine/DoctrineFixturesBundle/tree/3.4.0"
+ },
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdoctrine-fixtures-bundle",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-11-14T09:36:49+00:00"
+ },
+ {
+ "name": "fakerphp/faker",
+ "version": "v1.13.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/FakerPHP/Faker.git",
+ "reference": "ab3f5364d01f2c2c16113442fb987d26e4004913"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/ab3f5364d01f2c2c16113442fb987d26e4004913",
+ "reference": "ab3f5364d01f2c2c16113442fb987d26e4004913",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1 || ^8.0"
+ },
+ "conflict": {
+ "fzaninotto/faker": "*"
+ },
+ "require-dev": {
+ "bamarni/composer-bin-plugin": "^1.4.1",
+ "ext-intl": "*",
+ "phpunit/phpunit": "^7.5.20 || ^8.5.8 || ^9.4.2"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Faker\\": "src/Faker/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "François Zaninotto"
+ }
+ ],
+ "description": "Faker is a PHP library that generates fake data for you.",
+ "keywords": [
+ "data",
+ "faker",
+ "fixtures"
+ ],
+ "support": {
+ "issues": "https://github.com/FakerPHP/Faker/issues",
+ "source": "https://github.com/FakerPHP/Faker/tree/v1.13.0"
+ },
+ "time": "2020-12-18T16:50:48+00:00"
+ },
+ {
+ "name": "myclabs/deep-copy",
+ "version": "1.10.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/myclabs/DeepCopy.git",
+ "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220",
+ "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1 || ^8.0"
+ },
+ "replace": {
+ "myclabs/deep-copy": "self.version"
+ },
+ "require-dev": {
+ "doctrine/collections": "^1.0",
+ "doctrine/common": "^2.6",
+ "phpunit/phpunit": "^7.1"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "DeepCopy\\": "src/DeepCopy/"
+ },
+ "files": [
+ "src/DeepCopy/deep_copy.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Create deep copies (clones) of your objects",
+ "keywords": [
+ "clone",
+ "copy",
+ "duplicate",
+ "object",
+ "object graph"
+ ],
+ "support": {
+ "issues": "https://github.com/myclabs/DeepCopy/issues",
+ "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2"
+ },
+ "funding": [
+ {
+ "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-11-13T09:40:50+00:00"
+ },
+ {
+ "name": "nelmio/alice",
+ "version": "3.7.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nelmio/alice.git",
+ "reference": "ce57713de3c3e32ad8ea77674cd318f87e1909a0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nelmio/alice/zipball/ce57713de3c3e32ad8ea77674cd318f87e1909a0",
+ "reference": "ce57713de3c3e32ad8ea77674cd318f87e1909a0",
+ "shasum": ""
+ },
+ "require": {
+ "fakerphp/faker": "^1.10",
+ "myclabs/deep-copy": "^1.5.2",
+ "php": "^7.3",
+ "sebastian/comparator": "^3.0 || ^4.0",
+ "symfony/property-access": "^2.8 || ^3.4 || ^4.0 || ^5.0",
+ "symfony/yaml": "^2.8 || ^3.4 || ^4.0 || ^5.0"
+ },
+ "conflict": {
+ "symfony/framework-bundle": "<3.4"
+ },
+ "require-dev": {
+ "bamarni/composer-bin-plugin": "^1.1.0",
+ "phpspec/prophecy": "^1.6",
+ "phpspec/prophecy-phpunit": "^2.0",
+ "phpunit/phpunit": "^8.5.4 || ^9.3",
+ "symfony/phpunit-bridge": "^5.1.3",
+ "symfony/var-dumper": "^3.4 || ^4.0 || ^5.0"
+ },
+ "suggest": {
+ "theofidry/alice-data-fixtures": "Wrapper for Alice to provide a persistence layer."
+ },
+ "type": "library",
+ "extra": {
+ "bamarni-bin": {
+ "bin-links": false
+ },
+ "branch-alias": {
+ "dev-master": "3.x-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/deep_clone.php"
+ ],
+ "psr-4": {
+ "Nelmio\\Alice\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be"
+ },
+ {
+ "name": "Tim Shelburne",
+ "email": "shelburt02@gmail.com"
+ },
+ {
+ "name": "Théo FIDRY",
+ "email": "theo.fidry@gmail.com"
+ }
+ ],
+ "description": "Expressive fixtures generator",
+ "keywords": [
+ "Fixture",
+ "data",
+ "faker",
+ "test"
+ ],
+ "support": {
+ "issues": "https://github.com/nelmio/alice/issues",
+ "source": "https://github.com/nelmio/alice/tree/3.7.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/theofidry",
+ "type": "github"
+ }
+ ],
+ "time": "2020-11-04T09:20:59+00:00"
+ },
+ {
+ "name": "sebastian/comparator",
+ "version": "4.0.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/comparator.git",
+ "reference": "55f4261989e546dc112258c7a75935a81a7ce382"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382",
+ "reference": "55f4261989e546dc112258c7a75935a81a7ce382",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3",
+ "sebastian/diff": "^4.0",
+ "sebastian/exporter": "^4.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Volker Dusch",
+ "email": "github@wallbash.com"
+ },
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@2bepublished.at"
+ }
+ ],
+ "description": "Provides the functionality to compare PHP values for equality",
+ "homepage": "https://github.com/sebastianbergmann/comparator",
+ "keywords": [
+ "comparator",
+ "compare",
+ "equality"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/comparator/issues",
+ "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T15:49:45+00:00"
+ },
+ {
+ "name": "sebastian/diff",
+ "version": "4.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/diff.git",
+ "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d",
+ "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3",
+ "symfony/process": "^4.2 || ^5"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Kore Nordmann",
+ "email": "mail@kore-nordmann.de"
+ }
+ ],
+ "description": "Diff implementation",
+ "homepage": "https://github.com/sebastianbergmann/diff",
+ "keywords": [
+ "diff",
+ "udiff",
+ "unidiff",
+ "unified diff"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/diff/issues",
+ "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:10:38+00:00"
+ },
+ {
+ "name": "sebastian/exporter",
+ "version": "4.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/exporter.git",
+ "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/d89cc98761b8cb5a1a235a6b703ae50d34080e65",
+ "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3",
+ "sebastian/recursion-context": "^4.0"
+ },
+ "require-dev": {
+ "ext-mbstring": "*",
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Volker Dusch",
+ "email": "github@wallbash.com"
+ },
+ {
+ "name": "Adam Harvey",
+ "email": "aharvey@php.net"
+ },
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@gmail.com"
+ }
+ ],
+ "description": "Provides the functionality to export PHP variables for visualization",
+ "homepage": "http://www.github.com/sebastianbergmann/exporter",
+ "keywords": [
+ "export",
+ "exporter"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/exporter/issues",
+ "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T05:24:23+00:00"
+ },
+ {
+ "name": "sebastian/recursion-context",
+ "version": "4.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/recursion-context.git",
+ "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172",
+ "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Adam Harvey",
+ "email": "aharvey@php.net"
+ }
+ ],
+ "description": "Provides functionality to recursively process PHP variables",
+ "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/recursion-context/issues",
+ "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:17:30+00:00"
+ },
+ {
+ "name": "symfony/debug-bundle",
+ "version": "v5.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/debug-bundle.git",
+ "reference": "c79722fc3d430810d7a764fbc84fe212e532e004"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/c79722fc3d430810d7a764fbc84fe212e532e004",
+ "reference": "c79722fc3d430810d7a764fbc84fe212e532e004",
+ "shasum": ""
+ },
+ "require": {
+ "ext-xml": "*",
+ "php": ">=7.2.5",
+ "symfony/http-kernel": "^4.4|^5.0",
+ "symfony/twig-bridge": "^4.4|^5.0",
+ "symfony/var-dumper": "^4.4|^5.0"
+ },
+ "conflict": {
+ "symfony/config": "<4.4",
+ "symfony/dependency-injection": "<5.2"
+ },
+ "require-dev": {
+ "symfony/config": "^4.4|^5.0",
+ "symfony/dependency-injection": "^4.4|^5.0",
+ "symfony/web-profiler-bundle": "^4.4|^5.0"
+ },
+ "suggest": {
+ "symfony/config": "For service container configuration",
+ "symfony/dependency-injection": "For using as a service from the container"
+ },
+ "type": "symfony-bundle",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Bundle\\DebugBundle\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony DebugBundle",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/debug-bundle/tree/v5.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-10-24T12:08:07+00:00"
+ },
+ {
+ "name": "symfony/debug-pack",
+ "version": "v1.0.9",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/debug-pack.git",
+ "reference": "cfd5093378e9cafe500f05c777a22fe8a64a9342"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/debug-pack/zipball/cfd5093378e9cafe500f05c777a22fe8a64a9342",
+ "reference": "cfd5093378e9cafe500f05c777a22fe8a64a9342",
+ "shasum": ""
+ },
+ "require": {
+ "symfony/debug-bundle": "*",
+ "symfony/monolog-bundle": "^3.0",
+ "symfony/profiler-pack": "*",
+ "symfony/var-dumper": "*"
+ },
+ "type": "symfony-pack",
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "A debug pack for Symfony projects",
+ "support": {
+ "issues": "https://github.com/symfony/debug-pack/issues",
+ "source": "https://github.com/symfony/debug-pack/tree/v1.0.9"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-10-19T08:51:51+00:00"
+ },
+ {
+ "name": "symfony/profiler-pack",
+ "version": "v1.0.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/profiler-pack.git",
+ "reference": "29ec66471082b4eb068db11eb4f0a48c277653f7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/profiler-pack/zipball/29ec66471082b4eb068db11eb4f0a48c277653f7",
+ "reference": "29ec66471082b4eb068db11eb4f0a48c277653f7",
+ "shasum": ""
+ },
+ "require": {
+ "symfony/stopwatch": "*",
+ "symfony/twig-bundle": "*",
+ "symfony/web-profiler-bundle": "*"
+ },
+ "type": "symfony-pack",
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "A pack for the Symfony web profiler",
+ "support": {
+ "issues": "https://github.com/symfony/profiler-pack/issues",
+ "source": "https://github.com/symfony/profiler-pack/tree/v1.0.5"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-08-12T06:50:46+00:00"
+ },
+ {
+ "name": "symfony/web-profiler-bundle",
+ "version": "v5.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/web-profiler-bundle.git",
+ "reference": "6cd2f3d01faf1d77125ec14150a6fbd062dbe211"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/6cd2f3d01faf1d77125ec14150a6fbd062dbe211",
+ "reference": "6cd2f3d01faf1d77125ec14150a6fbd062dbe211",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/config": "^4.4|^5.0",
+ "symfony/framework-bundle": "^5.1",
+ "symfony/http-kernel": "^5.2",
+ "symfony/routing": "^4.4|^5.0",
+ "symfony/twig-bundle": "^4.4|^5.0",
+ "twig/twig": "^2.10|^3.0"
+ },
+ "conflict": {
+ "symfony/dependency-injection": "<5.2",
+ "symfony/form": "<4.4",
+ "symfony/messenger": "<4.4"
+ },
+ "require-dev": {
+ "symfony/browser-kit": "^4.4|^5.0",
+ "symfony/console": "^4.4|^5.0",
+ "symfony/css-selector": "^4.4|^5.0",
+ "symfony/stopwatch": "^4.4|^5.0"
+ },
+ "type": "symfony-bundle",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Bundle\\WebProfilerBundle\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony WebProfilerBundle",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/web-profiler-bundle/tree/v5.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-12-08T17:03:37+00:00"
+ }
+ ],
+ "aliases": [],
+ "minimum-stability": "stable",
+ "stability-flags": [],
+ "prefer-stable": false,
+ "prefer-lowest": false,
+ "platform": {
+ "php": "^7.3.0",
+ "ext-ctype": "*",
+ "ext-iconv": "*",
+ "ext-zip": "^1.15"
+ },
+ "platform-dev": [],
+ "plugin-api-version": "2.0.0"
+}
diff --git a/backend/config/bootstrap.php b/backend/config/bootstrap.php
new file mode 100644
index 00000000..95c1cd41
--- /dev/null
+++ b/backend/config/bootstrap.php
@@ -0,0 +1,21 @@
+loadEnv(dirname(__DIR__).'/.env');
+}
+
+$_SERVER['APP_ENV'] = $_ENV['APP_ENV'] = $_SERVER['APP_ENV'] ?: $_ENV['APP_ENV'] ?: 'dev';
+$_SERVER['APP_DEBUG'] = $_SERVER['APP_DEBUG'] ?? $_ENV['APP_DEBUG'] ?? 'prod' !== $_SERVER['APP_ENV'];
+$_SERVER['APP_DEBUG'] = $_ENV['APP_DEBUG'] = (int) $_SERVER['APP_DEBUG'] || filter_var($_SERVER['APP_DEBUG'], FILTER_VALIDATE_BOOLEAN) ? '1' : '0';
diff --git a/backend/config/bundles.php b/backend/config/bundles.php
new file mode 100644
index 00000000..168da00a
--- /dev/null
+++ b/backend/config/bundles.php
@@ -0,0 +1,20 @@
+ ['all' => true],
+ Symfony\Bundle\TwigBundle\TwigBundle::class => ['all' => true],
+ Symfony\Bundle\WebProfilerBundle\WebProfilerBundle::class => ['dev' => true, 'test' => true],
+ Symfony\Bundle\MonologBundle\MonologBundle::class => ['all' => true],
+ Symfony\Bundle\DebugBundle\DebugBundle::class => ['dev' => true, 'test' => true],
+ Doctrine\Bundle\DoctrineBundle\DoctrineBundle::class => ['all' => true],
+ Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle::class => ['all' => true],
+ Symfony\Bundle\SecurityBundle\SecurityBundle::class => ['all' => true],
+ Nelmio\CorsBundle\NelmioCorsBundle::class => ['all' => true],
+ ApiPlatform\Core\Bridge\Symfony\Bundle\ApiPlatformBundle::class => ['all' => true],
+ Nelmio\Alice\Bridge\Symfony\NelmioAliceBundle::class => ['dev' => true, 'test' => true],
+ Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle::class => ['all' => true],
+ Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle::class => ['dev' => true, 'test' => true],
+ Stof\DoctrineExtensionsBundle\StofDoctrineExtensionsBundle::class => ['all' => true],
+ Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle::class => ['all' => true],
+ Limenius\LiformBundle\LimeniusLiformBundle::class => ['all' => true],
+];
diff --git a/backend/config/packages/api_platform.yaml b/backend/config/packages/api_platform.yaml
new file mode 100644
index 00000000..b4a73152
--- /dev/null
+++ b/backend/config/packages/api_platform.yaml
@@ -0,0 +1,7 @@
+api_platform:
+ formats:
+ jsonapi: ['application/vnd.api+json']
+ html: ['text/html']
+ jsonld: ['application/ld+json']
+ mapping:
+ paths: ['%kernel.project_dir%/src/App/ORM']
diff --git a/backend/config/packages/cache.yaml b/backend/config/packages/cache.yaml
new file mode 100644
index 00000000..dfc68f1e
--- /dev/null
+++ b/backend/config/packages/cache.yaml
@@ -0,0 +1,27 @@
+framework:
+ cache:
+ pools:
+ doctrine_result_cache_pool:
+ adapter: cache.app
+ doctrine_system_cache_pool:
+ adapter: cache.system
+
+ app: cache.adapter.apcu
+
+ # Put the unique name of your app here: the prefix seed
+ # is used to compute stable namespaces for cache keys.
+ #prefix_seed: your_vendor_name/app_name
+
+ # The app cache caches to the filesystem by default.
+ # Other options include:
+
+ # Redis
+ #app: cache.adapter.redis
+ #default_redis_provider: redis://localhost
+
+ # APCu (not recommended with heavy random-write workloads as memory fragmentation can cause perf issues)
+ #app: cache.adapter.apcu
+
+ # Namespaced pools use the above "app" backend by default
+ #pools:
+ #my.dedicated.cache: ~
diff --git a/backend/config/packages/dev/debug.yaml b/backend/config/packages/dev/debug.yaml
new file mode 100644
index 00000000..26d4e53d
--- /dev/null
+++ b/backend/config/packages/dev/debug.yaml
@@ -0,0 +1,4 @@
+debug:
+ # Forwards VarDumper Data clones to a centralized server allowing to inspect dumps on CLI or in your browser.
+ # See the "server:dump" command to start a new server.
+ dump_destination: "tcp://%env(VAR_DUMPER_SERVER)%"
diff --git a/backend/config/packages/dev/easy_log_handler.yaml b/backend/config/packages/dev/easy_log_handler.yaml
new file mode 100644
index 00000000..27bfc608
--- /dev/null
+++ b/backend/config/packages/dev/easy_log_handler.yaml
@@ -0,0 +1,16 @@
+services:
+ EasyCorp\EasyLog\EasyLogHandler:
+ public: false
+ arguments: ['%kernel.logs_dir%/%kernel.environment%.log']
+
+#// FIXME: How to add this configuration automatically without messing up with the monolog configuration?
+#monolog:
+# handlers:
+# buffered:
+# type: buffer
+# handler: easylog
+# channels: ['!event']
+# level: debug
+# easylog:
+# type: service
+# id: EasyCorp\EasyLog\EasyLogHandler
diff --git a/backend/config/packages/dev/monolog.yaml b/backend/config/packages/dev/monolog.yaml
new file mode 100644
index 00000000..0e987ccc
--- /dev/null
+++ b/backend/config/packages/dev/monolog.yaml
@@ -0,0 +1,11 @@
+monolog:
+ handlers:
+ main:
+ type: stream
+ path: "php://stdout"
+ level: debug
+ channels: ["!event"]
+ console:
+ type: console
+ process_psr_3_messages: false
+ channels: ["!event", "!doctrine", "!console"]
diff --git a/backend/config/packages/dev/nelmio_alice.yaml b/backend/config/packages/dev/nelmio_alice.yaml
new file mode 100644
index 00000000..4cb9065c
--- /dev/null
+++ b/backend/config/packages/dev/nelmio_alice.yaml
@@ -0,0 +1,9 @@
+nelmio_alice:
+ functions_blacklist:
+ - 'current'
+ - 'shuffle'
+ - 'date'
+ - 'time'
+ - 'file'
+ - 'md5'
+ - 'sha1'
diff --git a/backend/config/packages/dev/routing.yaml b/backend/config/packages/dev/routing.yaml
new file mode 100644
index 00000000..4116679a
--- /dev/null
+++ b/backend/config/packages/dev/routing.yaml
@@ -0,0 +1,3 @@
+framework:
+ router:
+ strict_requirements: true
diff --git a/backend/config/packages/dev/swiftmailer.yaml b/backend/config/packages/dev/swiftmailer.yaml
new file mode 100644
index 00000000..b98158ee
--- /dev/null
+++ b/backend/config/packages/dev/swiftmailer.yaml
@@ -0,0 +1,4 @@
+# See https://symfony.com/doc/current/email/dev_environment.html
+swiftmailer:
+ # send all emails to a specific address
+ #delivery_addresses: ['me@example.com']
diff --git a/backend/config/packages/dev/web_profiler.yaml b/backend/config/packages/dev/web_profiler.yaml
new file mode 100644
index 00000000..e92166a7
--- /dev/null
+++ b/backend/config/packages/dev/web_profiler.yaml
@@ -0,0 +1,6 @@
+web_profiler:
+ toolbar: true
+ intercept_redirects: false
+
+framework:
+ profiler: { only_exceptions: false }
diff --git a/backend/config/packages/doctrine.yaml b/backend/config/packages/doctrine.yaml
new file mode 100644
index 00000000..ede8ccf6
--- /dev/null
+++ b/backend/config/packages/doctrine.yaml
@@ -0,0 +1,35 @@
+parameters:
+ # Adds a fallback DATABASE_URL if the env var is not set.
+ # This allows you to run cache:warmup even if your
+ # environment variables are not available yet.
+ # You should not need to change this value.
+ env(DATABASE_URL): ''
+
+doctrine:
+ dbal:
+ # configure these for your database server
+ driver: 'pdo_pgsql'
+ server_version: '11.0'
+ charset: utf8
+ url: '%env(resolve:DATABASE_URL)%'
+ orm:
+ auto_generate_proxy_classes: true
+ naming_strategy: doctrine.orm.naming_strategy.underscore
+ auto_mapping: true
+ mappings:
+ App:
+ is_bundle: false
+ type: annotation
+ dir: '%kernel.project_dir%/src/App/ORM'
+ prefix: 'App\ORM'
+ alias: App
+
+ metadata_cache_driver:
+ type: pool
+ pool: doctrine_system_cache_pool
+ query_cache_driver:
+ type: pool
+ pool: doctrine_system_cache_pool
+ result_cache_driver:
+ type: pool
+ pool: doctrine_result_cache_pool
diff --git a/backend/config/packages/doctrine_migrations.yaml b/backend/config/packages/doctrine_migrations.yaml
new file mode 100644
index 00000000..3bf0fbca
--- /dev/null
+++ b/backend/config/packages/doctrine_migrations.yaml
@@ -0,0 +1,5 @@
+doctrine_migrations:
+ dir_name: '%kernel.project_dir%/src/Migrations'
+ # namespace is arbitrary but should be different from App\Migrations
+ # as migrations classes should NOT be autoloaded
+ namespace: DoctrineMigrations
diff --git a/backend/config/packages/framework.yaml b/backend/config/packages/framework.yaml
new file mode 100644
index 00000000..d3f884c4
--- /dev/null
+++ b/backend/config/packages/framework.yaml
@@ -0,0 +1,17 @@
+framework:
+ secret: '%env(APP_SECRET)%'
+ #default_locale: en
+ #csrf_protection: true
+ #http_method_override: true
+
+ # Enables session support. Note that the session will ONLY be started if you read or write from it.
+ # Remove or comment this section to explicitly disable session support.
+ session:
+ handler_id: ~
+ cookie_secure: auto
+ cookie_samesite: lax
+
+ #esi: true
+ #fragments: true
+ php_errors:
+ log: true
diff --git a/backend/config/packages/nelmio_cors.yaml b/backend/config/packages/nelmio_cors.yaml
new file mode 100644
index 00000000..6f202c26
--- /dev/null
+++ b/backend/config/packages/nelmio_cors.yaml
@@ -0,0 +1,10 @@
+nelmio_cors:
+ defaults:
+ origin_regex: true
+ allow_origin: ['%env(CORS_ALLOW_ORIGIN)%']
+ allow_methods: ['GET', 'OPTIONS', 'POST', 'PUT', 'PATCH', 'DELETE']
+ allow_headers: ['Content-Type', 'Authorization']
+ expose_headers: ['Link']
+ max_age: 3600
+ paths:
+ '^/': ~
diff --git a/backend/config/packages/nyholm_psr7.yaml b/backend/config/packages/nyholm_psr7.yaml
new file mode 100644
index 00000000..761aa965
--- /dev/null
+++ b/backend/config/packages/nyholm_psr7.yaml
@@ -0,0 +1,14 @@
+services:
+ _defaults:
+ public: false
+
+ # Register nyholm/psr7 services for autowiring with PSR-17 (HTTP factories)
+ Psr\Http\Message\RequestFactoryInterface: '@nyholm.psr7.psr17_factory'
+ Psr\Http\Message\ResponseFactoryInterface: '@nyholm.psr7.psr17_factory'
+ Psr\Http\Message\ServerRequestFactoryInterface: '@nyholm.psr7.psr17_factory'
+ Psr\Http\Message\StreamFactoryInterface: '@nyholm.psr7.psr17_factory'
+ Psr\Http\Message\UploadedFileFactoryInterface: '@nyholm.psr7.psr17_factory'
+ Psr\Http\Message\UriFactoryInterface: '@nyholm.psr7.psr17_factory'
+
+ nyholm.psr7.psr17_factory:
+ class: Nyholm\Psr7\Factory\Psr17Factory
diff --git a/backend/config/packages/prod/doctrine.yaml b/backend/config/packages/prod/doctrine.yaml
new file mode 100644
index 00000000..87958235
--- /dev/null
+++ b/backend/config/packages/prod/doctrine.yaml
@@ -0,0 +1,3 @@
+doctrine:
+ orm:
+ auto_generate_proxy_classes: false
diff --git a/backend/config/packages/prod/monolog.yaml b/backend/config/packages/prod/monolog.yaml
new file mode 100644
index 00000000..4d4a2a77
--- /dev/null
+++ b/backend/config/packages/prod/monolog.yaml
@@ -0,0 +1,25 @@
+monolog:
+ handlers:
+ main:
+ type: fingers_crossed
+ action_level: error
+ handler: nested
+ excluded_404s:
+ # regex: exclude all 404 errors from the logs
+ - ^/
+ nested:
+ type: stream
+ path: "php://stdout"
+ level: debug
+ console:
+ type: console
+ process_psr_3_messages: false
+ channels: ["!event", "!doctrine"]
+ deprecation:
+ type: stream
+ path: "php://stdout"
+ deprecation_filter:
+ type: filter
+ handler: deprecation
+ max_level: info
+ channels: ["php"]
diff --git a/backend/config/packages/routing.yaml b/backend/config/packages/routing.yaml
new file mode 100644
index 00000000..a15c4ec6
--- /dev/null
+++ b/backend/config/packages/routing.yaml
@@ -0,0 +1,4 @@
+framework:
+ router:
+ strict_requirements: ~
+ utf8: true
diff --git a/backend/config/packages/security.yaml b/backend/config/packages/security.yaml
new file mode 100644
index 00000000..fb4c593e
--- /dev/null
+++ b/backend/config/packages/security.yaml
@@ -0,0 +1,24 @@
+security:
+ # https://symfony.com/doc/current/security.html#where-do-users-come-from-user-providers
+ providers:
+ in_memory: { memory: ~ }
+ firewalls:
+ dev:
+ pattern: ^/(_(profiler|wdt)|css|images|js)/
+ security: false
+ main:
+ anonymous: true
+
+ # activate different ways to authenticate
+
+ # http_basic: true
+ # https://symfony.com/doc/current/security.html#a-configuring-how-your-users-will-authenticate
+
+ # form_login: true
+ # https://symfony.com/doc/current/security/form_login_setup.html
+
+ # Easy way to control access for large sections of your site
+ # Note: Only the *first* access control that matches will be used
+ access_control:
+ # - { path: ^/admin, roles: ROLE_ADMIN }
+ # - { path: ^/profile, roles: ROLE_USER }
diff --git a/backend/config/packages/sensio_framework_extra.yaml b/backend/config/packages/sensio_framework_extra.yaml
new file mode 100644
index 00000000..1821ccc0
--- /dev/null
+++ b/backend/config/packages/sensio_framework_extra.yaml
@@ -0,0 +1,3 @@
+sensio_framework_extra:
+ router:
+ annotations: false
diff --git a/backend/config/packages/stof_doctrine_extensions.yaml b/backend/config/packages/stof_doctrine_extensions.yaml
new file mode 100644
index 00000000..917929d3
--- /dev/null
+++ b/backend/config/packages/stof_doctrine_extensions.yaml
@@ -0,0 +1,8 @@
+# Read the documentation: https://symfony.com/doc/current/bundles/StofDoctrineExtensionsBundle/index.html
+# See the official DoctrineExtensions documentation for more details: https://github.com/Atlantic18/DoctrineExtensions/tree/master/doc/
+stof_doctrine_extensions:
+ default_locale: en_US
+ orm:
+ default:
+ timestampable: true
+ sluggable: true
diff --git a/backend/config/packages/swiftmailer.yaml b/backend/config/packages/swiftmailer.yaml
new file mode 100644
index 00000000..cae65084
--- /dev/null
+++ b/backend/config/packages/swiftmailer.yaml
@@ -0,0 +1,3 @@
+swiftmailer:
+ url: '%env(MAILER_URL)%'
+ spool: { type: 'memory' }
diff --git a/backend/config/packages/test/framework.yaml b/backend/config/packages/test/framework.yaml
new file mode 100644
index 00000000..d051c840
--- /dev/null
+++ b/backend/config/packages/test/framework.yaml
@@ -0,0 +1,4 @@
+framework:
+ test: true
+ session:
+ storage_id: session.storage.mock_file
diff --git a/backend/config/packages/test/monolog.yaml b/backend/config/packages/test/monolog.yaml
new file mode 100644
index 00000000..2762653c
--- /dev/null
+++ b/backend/config/packages/test/monolog.yaml
@@ -0,0 +1,7 @@
+monolog:
+ handlers:
+ main:
+ type: stream
+ path: "%kernel.logs_dir%/%kernel.environment%.log"
+ level: debug
+ channels: ["!event"]
diff --git a/backend/config/packages/test/nelmio_alice.yaml b/backend/config/packages/test/nelmio_alice.yaml
new file mode 100644
index 00000000..caec543d
--- /dev/null
+++ b/backend/config/packages/test/nelmio_alice.yaml
@@ -0,0 +1,2 @@
+imports:
+ - { resource: ../dev/nelmio_alice.yaml }
diff --git a/backend/config/packages/test/routing.yaml b/backend/config/packages/test/routing.yaml
new file mode 100644
index 00000000..4116679a
--- /dev/null
+++ b/backend/config/packages/test/routing.yaml
@@ -0,0 +1,3 @@
+framework:
+ router:
+ strict_requirements: true
diff --git a/backend/config/packages/test/swiftmailer.yaml b/backend/config/packages/test/swiftmailer.yaml
new file mode 100644
index 00000000..f4380780
--- /dev/null
+++ b/backend/config/packages/test/swiftmailer.yaml
@@ -0,0 +1,2 @@
+swiftmailer:
+ disable_delivery: true
diff --git a/backend/config/packages/test/web_profiler.yaml b/backend/config/packages/test/web_profiler.yaml
new file mode 100644
index 00000000..03752de2
--- /dev/null
+++ b/backend/config/packages/test/web_profiler.yaml
@@ -0,0 +1,6 @@
+web_profiler:
+ toolbar: false
+ intercept_redirects: false
+
+framework:
+ profiler: { collect: false }
diff --git a/backend/config/packages/translation.yaml b/backend/config/packages/translation.yaml
new file mode 100644
index 00000000..e6b1cd66
--- /dev/null
+++ b/backend/config/packages/translation.yaml
@@ -0,0 +1,6 @@
+framework:
+ default_locale: '%locale%'
+ translator:
+ default_path: '%kernel.project_dir%/translations'
+ fallbacks:
+ - '%locale%'
diff --git a/backend/config/packages/twig.yaml b/backend/config/packages/twig.yaml
new file mode 100644
index 00000000..42faff68
--- /dev/null
+++ b/backend/config/packages/twig.yaml
@@ -0,0 +1,6 @@
+twig:
+ default_path: '%kernel.project_dir%/src/App/templates'
+ paths:
+ - '%kernel.project_dir%/src/PHPDocker/Generator/templates'
+ debug: '%kernel.debug%'
+ strict_variables: '%kernel.debug%'
diff --git a/backend/config/packages/validator.yaml b/backend/config/packages/validator.yaml
new file mode 100644
index 00000000..a695e1a6
--- /dev/null
+++ b/backend/config/packages/validator.yaml
@@ -0,0 +1,3 @@
+framework:
+ validation:
+ email_validation_mode: html5
diff --git a/backend/config/routes.yaml b/backend/config/routes.yaml
new file mode 100644
index 00000000..1b98bfc3
--- /dev/null
+++ b/backend/config/routes.yaml
@@ -0,0 +1,18 @@
+#index:
+# path: /
+# controller: App\Controller\DefaultController::index
+
+contact:
+ path: /contact
+ controller: App\Controller\ContactController::process
+ methods: ['POST']
+
+generator_get_options:
+ path: /generator
+ controller: App\Controller\GeneratorController::getGeneratorOptions
+ methods: ['GET']
+
+generator_generate:
+ path: /generator
+ controller: App\Controller\GeneratorController::generate
+ methods: ['POST']
diff --git a/backend/config/routes/annotations.yaml b/backend/config/routes/annotations.yaml
new file mode 100644
index 00000000..972916b3
--- /dev/null
+++ b/backend/config/routes/annotations.yaml
@@ -0,0 +1,3 @@
+controllers:
+ resource: ../../src/App/Controller/
+ type: annotation
diff --git a/backend/config/routes/api_platform.yaml b/backend/config/routes/api_platform.yaml
new file mode 100644
index 00000000..040a862c
--- /dev/null
+++ b/backend/config/routes/api_platform.yaml
@@ -0,0 +1,4 @@
+api_platform:
+ resource: .
+ type: api_platform
+ prefix: /content
diff --git a/backend/config/routes/dev/web_profiler.yaml b/backend/config/routes/dev/web_profiler.yaml
new file mode 100644
index 00000000..c82beff2
--- /dev/null
+++ b/backend/config/routes/dev/web_profiler.yaml
@@ -0,0 +1,7 @@
+web_profiler_wdt:
+ resource: '@WebProfilerBundle/Resources/config/routing/wdt.xml'
+ prefix: /_wdt
+
+web_profiler_profiler:
+ resource: '@WebProfilerBundle/Resources/config/routing/profiler.xml'
+ prefix: /_profiler
diff --git a/backend/config/services.yaml b/backend/config/services.yaml
new file mode 100644
index 00000000..34c8e4dd
--- /dev/null
+++ b/backend/config/services.yaml
@@ -0,0 +1,55 @@
+# This file is the entry point to configure your own services.
+# Files in the packages/ subdirectory configure your dependencies.
+
+# Put parameters here that don't need to change on each machine where the app is deployed
+# https://symfony.com/doc/current/best_practices/configuration.html#application-related-configuration
+parameters:
+ contact_email_from: 'automaton@phpdocker.io'
+ contact_email_to: '%env(CONTACT_EMAIL_TO)%'
+ locale: 'en'
+
+services:
+ # default configuration for services in *this* file
+ _defaults:
+ autowire: true # Automatically injects dependencies in your services.
+ autoconfigure: true # Automatically registers your services as commands, event subscribers, etc.
+
+ # makes classes in src/ available to be used as services
+ # this creates a service per class whose id is the fully-qualified class name
+ App\:
+ resource: '../src/App/*'
+ exclude: '../src/App/{DependencyInjection,Entity,Services,Migrations,Tests,Kernel.php}'
+
+ # controllers are imported separately to make sure services can be injected
+ # as action arguments even if you don't extend any base controller class
+ App\Controller\:
+ resource: '../src/App/Controller'
+ tags: ['controller.service_arguments']
+
+ Cocur\Slugify\Slugify: ~
+
+ PHPDocker\Util\SlugifierInterface:
+ alias: App\Service\Slugifier
+
+ PHPDocker\Contact\DispatcherInterface:
+ class: App\Contact\Dispatcher
+ arguments:
+ - '@swiftmailer.mailer.default'
+ - '@twig'
+ - '%contact_email_from%'
+ - '%contact_email_to%'
+
+ PHPDocker\Zip\Archiver: ~
+
+ Michelf\MarkdownExtra: ~
+
+ PHPDocker\Generator\Generator:
+ arguments:
+ - '@PHPDocker\Zip\Archiver'
+ - '@twig'
+ - '@Michelf\MarkdownExtra'
+ - '@PHPDocker\Util\SlugifierInterface'
+
+
+ # add more service definitions when explicit configuration is needed
+ # please note that last definitions always *replace* previous ones
diff --git a/console b/backend/console
similarity index 100%
rename from console
rename to backend/console
diff --git a/backend/docker/README.html b/backend/docker/README.html
new file mode 100644
index 00000000..242e7866
--- /dev/null
+++ b/backend/docker/README.html
@@ -0,0 +1,116 @@
+
+
+ PHPDocker.io Readme
+
+
+
+
+
+
+
+
+
+
PHPDocker.io generated environment
+
+
Add to your project
+
+
Simply, unzip the file into your project, this will create docker-compose.yml
on the root of your project and a folder named phpdocker
containing nginx and php-fpm config for it.
+
+
Ensure the webserver config on docker\nginx.conf
is correct for your project. PHPDocker.io will have customised this file according to the application type you chose on the generator, for instance web/app|app_dev.php
on a Symfony project, or public/index.php
on generic apps.
+
+
Note: you may place the files elsewhere in your project. Make sure you modify the locations for the php-fpm dockerfile, the php.ini overrides and nginx config on docker-compose.yml
if you do so.
+
+
How to run
+
+
Dependencies:
+
+
+
+
Once you're done, simply cd
to your project and run docker-compose up -d
. This will initialise and start all the containers, then leave them running in the background.
+
+
Services exposed outside your environment
+
+
You can access your application via localhost
, if you're running the containers directly, or through `` when run on a vm. nginx and mailhog both respond to any hostname, in case you want to add your own hostname on your /etc/hosts
+
+
+
+
+ Service
+ Address outside containers
+
+
+
+
+ Webserver
+ localhost:5000
+
+
+
+
+
Hosts within your environment
+
+
You'll need to configure your application to use any services you enabled:
+
+
+
+
+ Service
+ Hostname
+ Port number
+
+
+
+
+ php-fpm
+ php-fpm
+ 9000
+
+
+
+
+
Docker compose cheatsheet
+
+
Note: you need to cd first to where your docker-compose.yml file lives.
+
+
+Start containers in the background: docker-compose up -d
+Start containers on the foreground: docker-compose up
. You will see a stream of logs for every container running.
+Stop containers: docker-compose stop
+Kill containers: docker-compose kill
+View container logs: docker-compose logs
+Execute command inside of container: docker-compose exec SERVICE_NAME COMMAND
where COMMAND
is whatever you want to run. Examples:
+ * Shell into the PHP container, docker-compose exec php-fpm bash
+ * Run symfony console, docker-compose exec php-fpm bin/console
+ * Open a mysql shell, docker-compose exec mysql mysql -uroot -pCHOSEN_ROOT_PASSWORD
+
+
+
Recommendations
+
+
It's hard to avoid file permission issues when fiddling about with containers due to the fact that, from your OS point of view, any files created within the container are owned by the process that runs the docker engine (this is usually root). Different OS will also have different problems, for instance you can run stuff in containers using docker exec -it -u $(id -u):$(id -g) CONTAINER_NAME COMMAND
to force your current user ID into the process, but this will only work if your host OS is Linux, not mac. Follow a couple of simple rules and save yourself a world of hurt.
+
+
+Run composer outside of the php container, as doing so would install all your dependencies owned by root
within your vendor folder.
+Run commands (ie Symfony's console, or Laravel's artisan) straight inside of your container. You can easily open a shell as described above and do your thing from there.
+
+
+
+
+
+
+
+
diff --git a/backend/docker/README.md b/backend/docker/README.md
new file mode 100644
index 00000000..b0802987
--- /dev/null
+++ b/backend/docker/README.md
@@ -0,0 +1,56 @@
+PHPDocker.io generated environment
+==================================
+
+# Add to your project #
+
+Simply, unzip the file into your project, this will create `docker-compose.yml` on the root of your project and a folder named `phpdocker` containing nginx and php-fpm config for it.
+
+Ensure the webserver config on `docker\nginx.conf` is correct for your project. PHPDocker.io will have customised this file according to the application type you chose on the generator, for instance `web/app|app_dev.php` on a Symfony project, or `public/index.php` on generic apps.
+
+Note: you may place the files elsewhere in your project. Make sure you modify the locations for the php-fpm dockerfile, the php.ini overrides and nginx config on `docker-compose.yml` if you do so.
+
+# How to run #
+
+Dependencies:
+
+ * Docker engine v1.13 or higher. Your OS provided package might be a little old, if you encounter problems, do upgrade. See [https://docs.docker.com/engine/installation](https://docs.docker.com/engine/installation)
+ * Docker compose v1.12 or higher. See [docs.docker.com/compose/install](https://docs.docker.com/compose/install/)
+
+Once you're done, simply `cd` to your project and run `docker-compose up -d`. This will initialise and start all the containers, then leave them running in the background.
+
+## Services exposed outside your environment ##
+
+You can access your application via **`localhost`**, if you're running the containers directly, or through **``** when run on a vm. nginx and mailhog both respond to any hostname, in case you want to add your own hostname on your `/etc/hosts`
+
+Service|Address outside containers
+------|---------|-----------
+Webserver|[localhost:5000](http://localhost:5000)
+
+## Hosts within your environment ##
+
+You'll need to configure your application to use any services you enabled:
+
+Service|Hostname|Port number
+------|---------|-----------
+php-fpm|php-fpm|9000
+
+# Docker compose cheatsheet #
+
+**Note:** you need to cd first to where your docker-compose.yml file lives.
+
+ * Start containers in the background: `docker-compose up -d`
+ * Start containers on the foreground: `docker-compose up`. You will see a stream of logs for every container running.
+ * Stop containers: `docker-compose stop`
+ * Kill containers: `docker-compose kill`
+ * View container logs: `docker-compose logs`
+ * Execute command inside of container: `docker-compose exec SERVICE_NAME COMMAND` where `COMMAND` is whatever you want to run. Examples:
+ * Shell into the PHP container, `docker-compose exec php-fpm bash`
+ * Run symfony console, `docker-compose exec php-fpm bin/console`
+ * Open a mysql shell, `docker-compose exec mysql mysql -uroot -pCHOSEN_ROOT_PASSWORD`
+
+# Recommendations #
+
+It's hard to avoid file permission issues when fiddling about with containers due to the fact that, from your OS point of view, any files created within the container are owned by the process that runs the docker engine (this is usually root). Different OS will also have different problems, for instance you can run stuff in containers using `docker exec -it -u $(id -u):$(id -g) CONTAINER_NAME COMMAND` to force your current user ID into the process, but this will only work if your host OS is Linux, not mac. Follow a couple of simple rules and save yourself a world of hurt.
+
+ * Run composer outside of the php container, as doing so would install all your dependencies owned by `root` within your vendor folder.
+ * Run commands (ie Symfony's console, or Laravel's artisan) straight inside of your container. You can easily open a shell as described above and do your thing from there.
diff --git a/backend/docker/nginx/nginx.conf b/backend/docker/nginx/nginx.conf
new file mode 100644
index 00000000..61ca3756
--- /dev/null
+++ b/backend/docker/nginx/nginx.conf
@@ -0,0 +1,24 @@
+server {
+ listen 80 default;
+
+ client_max_body_size 108M;
+
+ access_log /var/log/nginx/application.access.log;
+
+ root /application/public;
+ index index.php;
+
+ if (!-e $request_filename) {
+ rewrite ^.*$ /index.php last;
+ }
+
+ location ~ \.php$ {
+ fastcgi_pass php-fpm:9000;
+ fastcgi_index index.php;
+ fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
+ fastcgi_param PHP_VALUE "error_log=/var/log/nginx/application_php_errors.log";
+ fastcgi_buffers 16 16k;
+ fastcgi_buffer_size 32k;
+ include fastcgi_params;
+ }
+}
diff --git a/backend/docker/php-fpm/Dockerfile b/backend/docker/php-fpm/Dockerfile
new file mode 100644
index 00000000..1c4b9a95
--- /dev/null
+++ b/backend/docker/php-fpm/Dockerfile
@@ -0,0 +1,29 @@
+## Dev environment
+FROM phpdockerio/php74-fpm:latest AS base
+WORKDIR "/application"
+
+# Fix debconf warnings upon build
+ARG DEBIAN_FRONTEND=noninteractive
+
+# Install selected extensions and other stuff
+RUN apt-get update \
+ && apt-get -y --no-install-recommends install php7.4-pgsql php7.4-apcu \
+ && apt-get clean; rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/*
+
+## Deployed environment
+FROM base AS deployment
+
+ENV APP_ENV=prod
+
+COPY composer.* /application/
+RUN composer install --no-dev --prefer-dist --no-scripts ; \
+ composer clear-cache
+
+ADD bin /application/bin
+ADD public /application/public
+ADD config /application/config
+ADD src /application/src
+
+RUN mkdir -p /application/var/cache/prod; \
+ composer dump-autoload --optimize --classmap-authoritative; \
+ bin/console cache:warmup
diff --git a/phpdocker/php-fpm/php-ini-overrides.ini b/backend/docker/php-fpm/php-ini-overrides.ini
similarity index 100%
rename from phpdocker/php-fpm/php-ini-overrides.ini
rename to backend/docker/php-fpm/php-ini-overrides.ini
diff --git a/backend/infection.json.dist b/backend/infection.json.dist
new file mode 100644
index 00000000..7b766d56
--- /dev/null
+++ b/backend/infection.json.dist
@@ -0,0 +1,24 @@
+{
+ "timeout": 10,
+ "source": {
+ "directories": [
+ "src"
+ ],
+ "excludes": [
+ "Certbot/ShellExec.php"
+ ]
+ },
+ "logs": {
+ "text": "reports/infection/infection-log.txt"
+ },
+ "mutators": {
+ "@default": true,
+ "IdenticalEqual": false,
+ "NotIdenticalNotEqual": false,
+ "FalseValue": {
+ "ignore": [
+ "PhpDockerIo\\KongCertbot\\Certbot\\Handler::acquireCertificate"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/backend/phpstan.neon b/backend/phpstan.neon
new file mode 100644
index 00000000..4763acb2
--- /dev/null
+++ b/backend/phpstan.neon
@@ -0,0 +1,4 @@
+parameters:
+ autoload_files:
+ - '%rootDir%/../../autoload.php'
+
diff --git a/backend/phpunit.xml b/backend/phpunit.xml
new file mode 100644
index 00000000..14daef3e
--- /dev/null
+++ b/backend/phpunit.xml
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ src
+
+
+
+
+
+ tests/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/backend/public/index.php b/backend/public/index.php
new file mode 100644
index 00000000..0e303701
--- /dev/null
+++ b/backend/public/index.php
@@ -0,0 +1,27 @@
+handle($request);
+$response->send();
+$kernel->terminate($request, $response);
diff --git a/tests/.gitkeep b/backend/reports/infection/.gitkeep
similarity index 100%
rename from tests/.gitkeep
rename to backend/reports/infection/.gitkeep
diff --git a/backend/src/App/Contact/Dispatcher.php b/backend/src/App/Contact/Dispatcher.php
new file mode 100644
index 00000000..c3895e23
--- /dev/null
+++ b/backend/src/App/Contact/Dispatcher.php
@@ -0,0 +1,90 @@
+mailer = $mailer;
+ $this->twig = $twig;
+ $this->emailFrom = $emailFrom;
+ $this->emailTo = $emailTo;
+ }
+
+ /**
+ * Sends a message.
+ *
+ * @param MessageInterface $message
+ *
+ * @throws DispatcherException
+ */
+ public function send(MessageInterface $message): void
+ {
+ try {
+ $messageBody = $this->twig->render('contact-email.html.twig', [
+ 'senderEmail' => $message->getEmail(),
+ 'message' => $message->getMessage(),
+ ]);
+ } catch (LoaderError|RuntimeError|SyntaxError $ex) {
+ throw new DispatcherException('Message composing error', $ex->getCode(), $ex);
+ }
+
+ $swiftMessage = new Swift_Message();
+ $swiftMessage
+ ->setSubject('PHPDocker.io - Contact request')
+ ->setFrom($this->emailFrom)
+ ->setReplyTo($message->getEmail())
+ ->setTo($this->emailTo)
+ ->setBody($messageBody, 'text/html');
+
+ $this->mailer->send($swiftMessage);
+ }
+}
diff --git a/src/AppBundle/Entity/ContactRequest.php b/backend/src/App/Contact/Message.php
similarity index 63%
rename from src/AppBundle/Entity/ContactRequest.php
rename to backend/src/App/Contact/Message.php
index 1b03f110..b3bf7b08 100644
--- a/src/AppBundle/Entity/ContactRequest.php
+++ b/backend/src/App/Contact/Message.php
@@ -1,6 +1,7 @@
senderEmail;
+ return $this->email;
}
/**
- * @param mixed $senderEmail
+ * @param string $email
*
- * @return ContactRequest
+ * @return Message
*/
- public function setSenderEmail(string $senderEmail)
+ public function setEmail(string $email): Message
{
- $this->senderEmail = $senderEmail;
+ $this->email = $email;
return $this;
}
/**
- * @return mixed
+ * @return string
*/
- public function getMessage(): ?string
+ public function getMessage(): string
{
return $this->message;
}
/**
- * @param mixed $message
+ * @param string $message
*
- * @return ContactRequest
+ * @return Message
*/
- public function setMessage(string $message)
+ public function setMessage(string $message): Message
{
$this->message = $message;
diff --git a/var/.gitkeep b/backend/src/App/Controller/.gitignore
old mode 100755
new mode 100644
similarity index 100%
rename from var/.gitkeep
rename to backend/src/App/Controller/.gitignore
diff --git a/backend/src/App/Controller/ContactController.php b/backend/src/App/Controller/ContactController.php
new file mode 100644
index 00000000..20ab6e7f
--- /dev/null
+++ b/backend/src/App/Controller/ContactController.php
@@ -0,0 +1,100 @@
+emailDispatcher = $emailDispatcher;
+ $this->serializer = $serializer;
+ $this->validator = $validator;
+ $this->logger = $logger;
+ }
+
+ /**
+ * Endpoint for the contact page.
+ *
+ * @param Request $request
+ *
+ * @return JsonResponse
+ */
+ public function process(Request $request): JsonResponse
+ {
+ try {
+ /** @var Message $message */
+ $message = $this->serializer->deserialize($request->getContent(), Message::class, 'json');
+ $violations = $this->validator->validate($message);
+
+ if ($violations->count() > 0) {
+ return new ErrorResponse($violations, 400);
+ }
+
+ $this->emailDispatcher->send($message);
+ } catch (NotEncodableValueException $ex) {
+ return new ErrorResponse([new Error('empty-body', 'Request body is empty')], 400);
+ } catch (DispatcherException $ex) {
+ $this->logger->error('Message dispatcher error', ['exception' => $ex]);
+
+ return new ErrorResponse(
+ [new Error('server-error', 'There was a problem trying to send the message')],
+ 500
+ );
+ }
+
+ return new JsonResponse(['success' => true]);
+ }
+}
diff --git a/backend/src/App/Controller/GeneratorController.php b/backend/src/App/Controller/GeneratorController.php
new file mode 100644
index 00000000..01314691
--- /dev/null
+++ b/backend/src/App/Controller/GeneratorController.php
@@ -0,0 +1,137 @@
+liform = $liform;
+ $this->formFactory = $formFactory;
+ $this->generator = $generator;
+ }
+
+ /**
+ * This endpoint provides with the generator form schema, as a JSON schema.
+ *
+ * @return JsonResponse
+ */
+ public function getGeneratorOptions(): JsonResponse
+ {
+ $schema = $this->liform->transform($this->formFactory->create(ProjectType::class));
+
+ return new JsonResponse($schema);
+ }
+
+ /**
+ * This endpoint processes form submission and project generation.
+ *
+ * @param Request $request
+ *
+ * @return Response
+ */
+ public function generate(Request $request): Response
+ {
+ $project = new Project();
+ $form = $this->formFactory->create(ProjectType::class, $project, ['csrf_protection' => false]);
+
+ try {
+ $decoded = json_decode($request->getContent(), true, 512, JSON_THROW_ON_ERROR);
+ } catch (JsonException $ex) {
+ return new ErrorResponse([new Error('validation-error', 'Not valid json', '')], 400);
+ }
+
+ $form->submit($decoded);
+
+ if ($form->isValid() === true) {
+ // Generate zip file with docker project
+ $zipFile = $this->generator->generate($project);
+ $payload = [
+ 'success' => true,
+ 'filename' => $zipFile->getFilename(),
+ 'base64Blob' => $zipFile->getBase64EncodedPayload(),
+ ];
+
+ $zipFile->delete();
+
+ return new JsonResponse($payload);
+ }
+
+ return new ErrorResponse($this->getErrorsFromForm($form), 400);
+ }
+
+ /**
+ * Given the submitted form, parse out all the errors and return as a list of Error
+ *
+ * @param FormInterface $form
+ *
+ * @return Error[]
+ */
+ private function getErrorsFromForm(FormInterface $form): array
+ {
+ $errors = [];
+ foreach ($form->getErrors(true) as $error) {
+ $cause = $error->getCause();
+ $propertyPath = $error->getOrigin()->getName();
+
+ if ($cause instanceof ConstraintViolation) {
+ $propertyPath = preg_replace('/^data\./', '', $cause->getPropertyPath());
+ }
+
+ $errors[] = new Error('validation-error', $error->getMessage(), $propertyPath);
+ }
+
+ return $errors;
+ }
+}
diff --git a/backend/src/App/DataFixtures/LoadFixtures.php b/backend/src/App/DataFixtures/LoadFixtures.php
new file mode 100644
index 00000000..dc64e2eb
--- /dev/null
+++ b/backend/src/App/DataFixtures/LoadFixtures.php
@@ -0,0 +1,43 @@
+loadFile(__DIR__ . '/fixtures.yaml')->getObjects();
+ foreach ($objectSet as $object) {
+ $manager->persist($object);
+ }
+
+ $manager->flush();
+ }
+}
diff --git a/backend/src/App/DataFixtures/fixtures.yaml b/backend/src/App/DataFixtures/fixtures.yaml
new file mode 100644
index 00000000..026177ea
--- /dev/null
+++ b/backend/src/App/DataFixtures/fixtures.yaml
@@ -0,0 +1,10 @@
+App\ORM\Category:
+ news:
+ title: News
+
+App\ORM\Post:
+ post{1..1000}:
+ category: '@news'
+ title: ''
+ bodyIntro: ''
+ body: ''
diff --git a/src/AppBundle/Assert/ApplicationType.php b/backend/src/App/Generator/Assert/ApplicationType.php
similarity index 84%
rename from src/AppBundle/Assert/ApplicationType.php
rename to backend/src/App/Generator/Assert/ApplicationType.php
index 5380fad0..4fbf858b 100644
--- a/src/AppBundle/Assert/ApplicationType.php
+++ b/backend/src/App/Generator/Assert/ApplicationType.php
@@ -1,6 +1,7 @@
isEnabled();
}
+
+ public function setVersion(?string $version): AbstractMySQL
+ {
+ if ($version !== null) {
+ $this->version = $version;
+ }
+
+ return $this;
+ }
+
+ public function setRootPassword(string $rootPassword = null): AbstractMySQL
+ {
+ $this->rootPassword = $rootPassword;
+
+ return $this;
+ }
+
+ public function setDatabaseName(string $databaseName = null): AbstractMySQL
+ {
+ $this->databaseName = $databaseName;
+
+ return $this;
+ }
+
+ public function setUsername(string $username = null): AbstractMySQL
+ {
+ $this->username = $username;
+
+ return $this;
+ }
+
+ public function setPassword(string $password = null): AbstractMySQL
+ {
+ $this->password = $password;
+
+ return $this;
+ }
}
diff --git a/src/AppBundle/Entity/Generator/MySQLOptions.php b/backend/src/App/Generator/Entity/MySQLOptions.php
similarity index 69%
rename from src/AppBundle/Entity/Generator/MySQLOptions.php
rename to backend/src/App/Generator/Entity/MySQLOptions.php
index 176c48b1..98af93da 100644
--- a/src/AppBundle/Entity/Generator/MySQLOptions.php
+++ b/backend/src/App/Generator/Entity/MySQLOptions.php
@@ -1,6 +1,7 @@
isEnabled();
}
+
+ public function setVersion(?string $version): AbstractMySQL
+ {
+ if ($version !== null) {
+ $this->version = $version;
+ }
+
+ return $this;
+ }
+
+ public function setRootPassword(string $rootPassword = null): AbstractMySQL
+ {
+ $this->rootPassword = $rootPassword;
+
+ return $this;
+ }
+
+ public function setDatabaseName(string $databaseName = null): AbstractMySQL
+ {
+ $this->databaseName = $databaseName;
+
+ return $this;
+ }
+
+ public function setUsername(string $username = null): AbstractMySQL
+ {
+ $this->username = $username;
+
+ return $this;
+ }
+
+ public function setPassword(string $password = null): AbstractMySQL
+ {
+ $this->password = $password;
+
+ return $this;
+ }
}
diff --git a/src/AppBundle/Entity/Generator/PhpOptions.php b/backend/src/App/Generator/Entity/PhpOptions.php
similarity index 95%
rename from src/AppBundle/Entity/Generator/PhpOptions.php
rename to backend/src/App/Generator/Entity/PhpOptions.php
index 56219b71..b71bf320 100644
--- a/src/AppBundle/Entity/Generator/PhpOptions.php
+++ b/backend/src/App/Generator/Entity/PhpOptions.php
@@ -1,6 +1,7 @@
isEnabled();
}
+
+ public function setVersion(?string $version): Postgres
+ {
+ if ($version !== null) {
+ $this->version = $version;
+ }
+
+ return $this;
+ }
+
+ public function setRootPassword(string $rootPassword): Postgres
+ {
+ $this->rootPassword = $rootPassword;
+
+ return $this;
+ }
+
+ public function setDatabaseName(string $databaseName): Postgres
+ {
+ $this->databaseName = $databaseName;
+
+ return $this;
+ }
+
}
diff --git a/src/AppBundle/Entity/Generator/Project.php b/backend/src/App/Generator/Entity/Project.php
similarity index 80%
rename from src/AppBundle/Entity/Generator/Project.php
rename to backend/src/App/Generator/Entity/Project.php
index e5da6f0b..a5e0037d 100644
--- a/src/AppBundle/Entity/Generator/Project.php
+++ b/backend/src/App/Generator/Entity/Project.php
@@ -1,6 +1,7 @@
applicationOptions = new ApplicationOptions();
$this->mysqlOptions = new MySQLOptions();
$this->mariadbOptions = new MariaDBOptions();
$this->postgresOptions = new PostgresOptions();
diff --git a/src/AppBundle/Form/Generator/AbstractGeneratorType.php b/backend/src/App/Generator/Form/AbstractGeneratorType.php
similarity index 83%
rename from src/AppBundle/Form/Generator/AbstractGeneratorType.php
rename to backend/src/App/Generator/Form/AbstractGeneratorType.php
index 2c4fa26e..93619ccf 100644
--- a/src/AppBundle/Form/Generator/AbstractGeneratorType.php
+++ b/backend/src/App/Generator/Form/AbstractGeneratorType.php
@@ -1,6 +1,7 @@
false,
])
->add('version', ChoiceType::class, [
- 'choices' => array_flip(Elasticsearch::getChoices()),
+ 'choices' => array_flip(ElasticsearchOptions::getChoices()),
'expanded' => false,
'multiple' => false,
'label' => 'Version',
@@ -68,7 +69,7 @@ protected function getDataClass(): string
*/
protected function getValidationGroups(): callable
{
- return function (FormInterface $form) {
+ return static function (FormInterface $form) {
/** @var ElasticsearchOptions $data */
$data = $form->getData();
$groups = ['Default'];
diff --git a/src/AppBundle/Form/Generator/MariaDBType.php b/backend/src/App/Generator/Form/MariaDBType.php
similarity index 89%
rename from src/AppBundle/Form/Generator/MariaDBType.php
rename to backend/src/App/Generator/Form/MariaDBType.php
index cc721383..ea3678ff 100644
--- a/src/AppBundle/Form/Generator/MariaDBType.php
+++ b/backend/src/App/Generator/Form/MariaDBType.php
@@ -1,6 +1,7 @@
getData();
$groups = ['Default'];
diff --git a/src/AppBundle/Form/Generator/ProjectType.php b/backend/src/App/Generator/Form/ProjectType.php
similarity index 84%
rename from src/AppBundle/Form/Generator/ProjectType.php
rename to backend/src/App/Generator/Form/ProjectType.php
index e439bb8e..bef04dc9 100644
--- a/src/AppBundle/Form/Generator/ProjectType.php
+++ b/backend/src/App/Generator/Form/ProjectType.php
@@ -1,6 +1,7 @@
add('name', TextType::class, [
- 'label' => 'Project name',
- 'attr' => ['placeholder' => 'Used on host, container, vm and folder names'],
+ 'label' => 'Project name',
+ 'attr' => ['placeholder' => 'Used on host, container, vm and folder names'],
+ 'empty_data' => '',
])
->add('basePort', IntegerType::class, [
'label' => 'Base port',
- 'attr' => ['placeholder' => 'For nginx, Mailhog control panel...'],
+ 'attr' => ['placeholder' => 'Ports exposed on the different services will start at this port number'],
])
->add('hasMemcached', CheckboxType::class, [
'required' => false,
@@ -70,6 +73,7 @@ public function buildForm(FormBuilderInterface $builder, array $options)
->add('postgresOptions', PostgresType::class, ['label' => 'Postgres'])
->add('applicationOptions', ApplicationType::class, ['label' => 'Application options'])
->add('elasticsearchOptions', ElasticsearchType::class, ['label' => 'Elasticsearch']);
+ ;
}
/**
diff --git a/backend/src/App/Http/Error.php b/backend/src/App/Http/Error.php
new file mode 100644
index 00000000..b307b810
--- /dev/null
+++ b/backend/src/App/Http/Error.php
@@ -0,0 +1,83 @@
+code = $code;
+ $this->description = $description;
+ $this->property = $property;
+ }
+
+ /**
+ * @return string
+ */
+ public function getCode(): string
+ {
+ return $this->code;
+ }
+
+ /**
+ * @return string
+ */
+ public function getDescription(): string
+ {
+ return $this->description;
+ }
+
+ /**
+ * @return string
+ */
+ public function getProperty(): string
+ {
+ return $this->property;
+ }
+
+ public function toArray(): array
+ {
+ return [
+ 'code' => $this->code,
+ 'description' => $this->description,
+ 'property' => $this->property,
+ ];
+ }
+}
diff --git a/backend/src/App/Http/ErrorResponse.php b/backend/src/App/Http/ErrorResponse.php
new file mode 100644
index 00000000..baf5bfd3
--- /dev/null
+++ b/backend/src/App/Http/ErrorResponse.php
@@ -0,0 +1,64 @@
+toArray();
+ break;
+
+ case $error instanceof ConstraintViolationInterface:
+ $parsedErrors[] = (new Error(
+ 'validation-error',
+ $error->getMessage(),
+ $error->getPropertyPath()
+ ))->toArray();
+ break;
+
+ default:
+ throw new InvalidArgumentException('Unsupported error type');
+ }
+ }
+
+ parent::__construct(json_encode(['errors' => $parsedErrors]), $status, $headers, true);
+ }
+}
diff --git a/backend/src/App/Kernel.php b/backend/src/App/Kernel.php
new file mode 100644
index 00000000..f5531b8a
--- /dev/null
+++ b/backend/src/App/Kernel.php
@@ -0,0 +1,75 @@
+getProjectDir() . '/var/cache/' . $this->environment;
+ }
+
+ public function getLogDir()
+ {
+ return $this->getProjectDir() . '/var/log';
+ }
+
+ public function registerBundles()
+ {
+ $contents = require $this->getProjectDir() . '/config/bundles.php';
+ foreach ($contents as $class => $envs) {
+ if ($envs[$this->environment] ?? $envs['all'] ?? false) {
+ yield new $class();
+ }
+ }
+ }
+
+ protected function configureContainer(ContainerBuilder $container, LoaderInterface $loader)
+ {
+ $container->addResource(new FileResource($this->getProjectDir() . '/config/bundles.php'));
+ $container->setParameter('container.dumper.inline_class_loader', true);
+ $confDir = $this->getProjectDir() . '/config';
+
+ $loader->load($confDir . '/{packages}/*' . self::CONFIG_EXTS, 'glob');
+ $loader->load($confDir . '/{packages}/' . $this->environment . '/**/*' . self::CONFIG_EXTS, 'glob');
+ $loader->load($confDir . '/{services}' . self::CONFIG_EXTS, 'glob');
+ $loader->load($confDir . '/{services}_' . $this->environment . self::CONFIG_EXTS, 'glob');
+ }
+
+ protected function configureRoutes(RouteCollectionBuilder $routes)
+ {
+ $confDir = $this->getProjectDir() . '/config';
+
+ $routes->import($confDir . '/{routes}/*' . self::CONFIG_EXTS, '/', 'glob');
+ $routes->import($confDir . '/{routes}/' . $this->environment . '/**/*' . self::CONFIG_EXTS, '/', 'glob');
+ $routes->import($confDir . '/{routes}' . self::CONFIG_EXTS, '/', 'glob');
+ }
+}
diff --git a/src/AppBundle/Entity/ORM/Category.php b/backend/src/App/ORM/Category.php
similarity index 90%
rename from src/AppBundle/Entity/ORM/Category.php
rename to backend/src/App/ORM/Category.php
index c76e10cc..fd6ef793 100644
--- a/src/AppBundle/Entity/ORM/Category.php
+++ b/backend/src/App/ORM/Category.php
@@ -1,6 +1,7 @@
postComments = new ArrayCollection();
- }
-
/**
* @return string
*/
@@ -117,49 +106,6 @@ public function setSlug(string $slug): self
return $this;
}
- /**
- * @param PostComment $postComment
- *
- * @return self
- */
- public function addPostComment(PostComment $postComment): self
- {
- $this->postComments[] = $postComment;
- $postComment->setPost($this);
-
- return $this;
- }
-
- /**
- * @param PostComment $postComment
- *
- * @return self
- */
- public function removePostComment(PostComment $postComment): self
- {
- $this->postComments->removeElement($postComment);
-
- return $this;
- }
-
- /**
- * @return Collection
- */
- public function getPostComments(): Collection
- {
- return $this->postComments;
- }
-
- /**
- * Returns a count of all post comments associated to this post
- *
- * @return int
- */
- public function getCountPostComments(): int
- {
- return $this->postComments->count();
- }
-
/**
* @return Category
*/
diff --git a/src/AppBundle/Entity/ORM/PropertyTrait/ActiveTrait.php b/backend/src/App/ORM/PropertyTrait/ActiveTrait.php
similarity index 86%
rename from src/AppBundle/Entity/ORM/PropertyTrait/ActiveTrait.php
rename to backend/src/App/ORM/PropertyTrait/ActiveTrait.php
index a39460f4..ae100ffe 100644
--- a/src/AppBundle/Entity/ORM/PropertyTrait/ActiveTrait.php
+++ b/backend/src/App/ORM/PropertyTrait/ActiveTrait.php
@@ -1,6 +1,7 @@
id;
}
-
- /**
- * @param int $id
- *
- * @return self
- */
- public function setId($id): self
- {
- $this->id = $id;
-
- return $this;
- }
}
diff --git a/src/AppBundle/Entity/ORM/PropertyTrait/TimestampableTrait.php b/backend/src/App/ORM/PropertyTrait/TimestampableTrait.php
similarity index 83%
rename from src/AppBundle/Entity/ORM/PropertyTrait/TimestampableTrait.php
rename to backend/src/App/ORM/PropertyTrait/TimestampableTrait.php
index 4da0e467..eb0d1397 100644
--- a/src/AppBundle/Entity/ORM/PropertyTrait/TimestampableTrait.php
+++ b/backend/src/App/ORM/PropertyTrait/TimestampableTrait.php
@@ -1,6 +1,7 @@
createdAt = $createdAt;
@@ -77,7 +80,7 @@ public function getUpdatedAt()
*
* @return self
*/
- public function setUpdatedAt(\DateTime $updatedAt): self
+ public function setUpdatedAt(DateTime $updatedAt): self
{
$this->updatedAt = $updatedAt;
diff --git a/src/AppBundle/Entity/ORM/PropertyTrait/TitleTrait.php b/backend/src/App/ORM/PropertyTrait/TitleTrait.php
similarity index 90%
rename from src/AppBundle/Entity/ORM/PropertyTrait/TitleTrait.php
rename to backend/src/App/ORM/PropertyTrait/TitleTrait.php
index f2aa313e..3ce76617 100644
--- a/src/AppBundle/Entity/ORM/PropertyTrait/TitleTrait.php
+++ b/backend/src/App/ORM/PropertyTrait/TitleTrait.php
@@ -1,6 +1,7 @@
abortIf($this->connection->getDatabasePlatform()->getName() !== 'postgresql',
+ 'Migration can only be executed safely on \'postgresql\'.');
+
+ $this->addSql('CREATE SEQUENCE category_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
+ $this->addSql('CREATE SEQUENCE post_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
+ $this->addSql('CREATE SEQUENCE post_comment_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
+ $this->addSql('CREATE TABLE category (id INT NOT NULL, slug VARCHAR(255) NOT NULL, title VARCHAR(255) NOT NULL, created_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, updated_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, PRIMARY KEY(id))');
+ $this->addSql('CREATE TABLE post (id INT NOT NULL, category_id INT NOT NULL, body_intro TEXT NOT NULL, slug VARCHAR(255) NOT NULL, title VARCHAR(255) NOT NULL, body TEXT NOT NULL, active BOOLEAN DEFAULT \'false\' NOT NULL, created_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, updated_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, PRIMARY KEY(id))');
+ $this->addSql('CREATE UNIQUE INDEX UNIQ_5A8A6C8D989D9B62 ON post (slug)');
+ $this->addSql('CREATE INDEX IDX_5A8A6C8D12469DE2 ON post (category_id)');
+ $this->addSql('CREATE TABLE post_comment (id INT NOT NULL, post_id INT NOT NULL, poster_name VARCHAR(255) NOT NULL, poster_url VARCHAR(255) DEFAULT NULL, body TEXT NOT NULL, created_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, updated_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, PRIMARY KEY(id))');
+ $this->addSql('CREATE INDEX IDX_A99CE55F4B89032C ON post_comment (post_id)');
+ $this->addSql('ALTER TABLE post ADD CONSTRAINT FK_5A8A6C8D12469DE2 FOREIGN KEY (category_id) REFERENCES category (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
+ $this->addSql('ALTER TABLE post_comment ADD CONSTRAINT FK_A99CE55F4B89032C FOREIGN KEY (post_id) REFERENCES post (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
+ }
+
+ public function down(Schema $schema): void
+ {
+ // this down() migration is auto-generated, please modify it to your needs
+ $this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'postgresql',
+ 'Migration can only be executed safely on \'postgresql\'.');
+
+ $this->addSql('CREATE SCHEMA public');
+ $this->addSql('ALTER TABLE post DROP CONSTRAINT FK_5A8A6C8D12469DE2');
+ $this->addSql('ALTER TABLE post_comment DROP CONSTRAINT FK_A99CE55F4B89032C');
+ $this->addSql('DROP SEQUENCE category_id_seq CASCADE');
+ $this->addSql('DROP SEQUENCE post_id_seq CASCADE');
+ $this->addSql('DROP SEQUENCE post_comment_id_seq CASCADE');
+ $this->addSql('DROP TABLE category');
+ $this->addSql('DROP TABLE post');
+ $this->addSql('DROP TABLE post_comment');
+ }
+}
diff --git a/backend/src/PHPDocker/Contact/DispatcherException.php b/backend/src/PHPDocker/Contact/DispatcherException.php
new file mode 100644
index 00000000..6cc9a363
--- /dev/null
+++ b/backend/src/PHPDocker/Contact/DispatcherException.php
@@ -0,0 +1,32 @@
+zipArchiver = $archiver;
$this->twig = $twig;
- $this->markdownExtra = $markdownExtra;
+ $this->markdownExtra = $markdown;
+ $this->slugifier = $slugifier;
$this->zipArchiver->setBaseFolder(self::BASE_ZIP_FOLDER);
}
@@ -60,12 +64,12 @@ public function __construct(Archiver $archiver, \Twig_Environment $twig, Markdow
/**
* Generates all the files from the Project, and returns as an archive file.
*
- * @param Project $project
- *
- * @return ArchiveInterface
+ * @throws ArchiveNotCreatedException
*/
- public function generate(Project $project): ArchiveInterface
+ public function generate(Project $project): ZipFile
{
+ $this->projectSlug = $this->slugifier->slugify($project->getName());
+
$this
->zipArchiver
->addFile($this->getReadmeMd($project))
@@ -75,15 +79,15 @@ public function generate(Project $project): ArchiveInterface
->addFile($this->getNginxConf($project))
->addFile($this->getDockerCompose($project), true);
- return $this->zipArchiver->generateArchive(sprintf('%s.zip', $project->getProjectNameSlug()));
+ return $this->zipArchiver->generateArchive(sprintf('%s.zip', $this->projectSlug));
}
/**
* Generates the Readme file in Markdown format.
*
- * @param Project $project
- *
- * @return GeneratedFile\ReadmeMd
+ * @throws LoaderError
+ * @throws RuntimeError
+ * @throws SyntaxError
*/
private function getReadmeMd(Project $project): GeneratedFile\ReadmeMd
{
@@ -99,9 +103,9 @@ private function getReadmeMd(Project $project): GeneratedFile\ReadmeMd
/**
* Returns the HTML readme, converted off Markdown.
*
- * @param Project $project
- *
- * @return GeneratedFile\ReadmeHtml
+ * @throws LoaderError
+ * @throws RuntimeError
+ * @throws SyntaxError
*/
private function getReadmeHtml(Project $project): GeneratedFile\ReadmeHtml
{
@@ -118,16 +122,17 @@ private function getReadmeHtml(Project $project): GeneratedFile\ReadmeHtml
/**
* Generates the docker-compose file, and returns as a string of its contents.
*
- * @param Project $project
- *
* @return GeneratedFile\DockerCompose
+ * @throws LoaderError
+ * @throws RuntimeError
+ * @throws SyntaxError
*/
private function getDockerCompose(Project $project): GeneratedFile\DockerCompose
{
$data = [
'phpVersion' => $project->getPhpOptions()->getVersion(),
'phpIniOverrides' => (new GeneratedFile\PhpIniOverrides(''))->getFilename(),
- 'slug' => $project->getProjectNameSlug(),
+ 'slug' => $this->projectSlug,
'project' => $project,
];
@@ -142,9 +147,9 @@ private function getDockerCompose(Project $project): GeneratedFile\DockerCompose
/**
* Returns the dockerfile for php-fpm.
*
- * @param Project $project
- *
- * @return GeneratedFile\PhpDockerConf
+ * @throws LoaderError
+ * @throws RuntimeError
+ * @throws SyntaxError
*/
private function getPhpDockerConf(Project $project): GeneratedFile\PhpDockerConf
{
@@ -170,13 +175,16 @@ private function getPhpDockerConf(Project $project): GeneratedFile\PhpDockerConf
/**
* Returns the contents of php.ini
*
- * @param Project $project
- *
- * @return GeneratedFile\PhpIniOverrides
+ * @throws LoaderError
+ * @throws RuntimeError
+ * @throws SyntaxError
*/
private function getPhpIniOverrides(Project $project): GeneratedFile\PhpIniOverrides
{
- $data = ['maxUploadSize' => $project->getApplicationOptions()->getUploadSize()];
+ $data = [
+ 'maxUploadSize' => $project->getApplicationOptions()->getUploadSize(),
+ 'xdebugEnabled' => true, // @todo
+ ];
return new GeneratedFile\PhpIniOverrides($this->twig->render('php-ini-overrides.ini.twig', $data));
}
@@ -184,15 +192,15 @@ private function getPhpIniOverrides(Project $project): GeneratedFile\PhpIniOverr
/**
* Generates and returns the nginx.conf file.
*
- * @param Project $project
- *
- * @return GeneratedFile\NginxConf
+ * @throws LoaderError
+ * @throws RuntimeError
+ * @throws SyntaxError
*/
private function getNginxConf(Project $project): GeneratedFile\NginxConf
{
$data = [
'projectName' => $project->getName(),
- 'projectNameSlug' => $project->getProjectNameSlug(),
+ 'projectNameSlug' => $this->projectSlug,
'applicationType' => $project->getApplicationOptions()->getApplicationType(),
'maxUploadSize' => $project->getApplicationOptions()->getUploadSize(),
];
diff --git a/src/PHPDocker/Template/README.html.twig b/backend/src/PHPDocker/Generator/templates/README.html.twig
similarity index 79%
rename from src/PHPDocker/Template/README.html.twig
rename to backend/src/PHPDocker/Generator/templates/README.html.twig
index 33c25d95..7c219f7c 100644
--- a/src/PHPDocker/Template/README.html.twig
+++ b/backend/src/PHPDocker/Generator/templates/README.html.twig
@@ -23,10 +23,10 @@