├── config ├── packages │ ├── prod │ │ └── routing.yaml │ ├── sensio_framework_extra.yaml │ ├── test │ │ ├── validator.yaml │ │ └── framework.yaml │ ├── routing.yaml │ ├── validator.yaml │ ├── framework.yaml │ └── cache.yaml ├── routes │ ├── annotations.yaml │ └── dev │ │ └── framework.yaml ├── routes.yaml ├── preload.php ├── bundles.php └── services.yaml ├── src ├── Domain │ ├── Model │ │ ├── Users.php │ │ └── User.php │ ├── Service │ │ └── PasswordEncoder.php │ └── Factory │ │ └── UserFactory.php ├── Infrastructure │ ├── ParamConverter │ │ ├── InputFactory │ │ │ ├── InputFactoryProvider.php │ │ │ ├── InputFactory.php │ │ │ ├── ServiceLocatorInputFactoryProvider.php │ │ │ └── AddUserInputFactory.php │ │ └── InputParamConverter.php │ ├── Validator │ │ ├── DataValidator.php │ │ └── SymfonyValidator.php │ ├── Responder │ │ ├── ConsoleResponder.php │ │ ├── TableConsoleResponder.php │ │ └── JsonResponder.php │ ├── Storage │ │ └── InMemory │ │ │ └── InMemoryUsers.php │ ├── Service │ │ ├── Md5PasswordEncoder.php │ │ └── SymfonyViolationListConverter.php │ ├── Exception │ │ └── DataValidationException.php │ ├── ExceptionHandler │ │ └── DataValidationExceptionHandler.php │ └── Command │ │ └── AddUserCommand.php ├── Action │ ├── Output │ │ └── AddUserOutput.php │ ├── Input │ │ └── AddUserInput.php │ └── AddUser.php └── Kernel.php ├── .gitignore ├── README.md ├── public └── index.php ├── .env ├── bin └── console ├── composer.json ├── symfony.lock └── composer.lock /config/packages/prod/routing.yaml: -------------------------------------------------------------------------------- 1 | framework: 2 | router: 3 | strict_requirements: null 4 | -------------------------------------------------------------------------------- /config/routes/annotations.yaml: -------------------------------------------------------------------------------- 1 | kernel: 2 | resource: ../../src/Kernel.php 3 | type: annotation 4 | -------------------------------------------------------------------------------- /config/packages/sensio_framework_extra.yaml: -------------------------------------------------------------------------------- 1 | sensio_framework_extra: 2 | router: 3 | annotations: false 4 | -------------------------------------------------------------------------------- /config/packages/test/validator.yaml: -------------------------------------------------------------------------------- 1 | framework: 2 | validation: 3 | not_compromised_password: false 4 | -------------------------------------------------------------------------------- /config/packages/test/framework.yaml: -------------------------------------------------------------------------------- 1 | framework: 2 | test: true 3 | session: 4 | storage_id: session.storage.mock_file 5 | -------------------------------------------------------------------------------- /config/routes/dev/framework.yaml: -------------------------------------------------------------------------------- 1 | _errors: 2 | resource: '@FrameworkBundle/Resources/config/routing/errors.xml' 3 | prefix: /_error 4 | -------------------------------------------------------------------------------- /config/routes.yaml: -------------------------------------------------------------------------------- 1 | add_user: 2 | path: /user/add 3 | controller: App\Action\AddUser 4 | #index: 5 | # path: / 6 | # controller: App\Controller\DefaultController::index 7 | -------------------------------------------------------------------------------- /src/Domain/Model/Users.php: -------------------------------------------------------------------------------- 1 | symfony/framework-bundle ### 3 | /.env.local 4 | /.env.local.php 5 | /.env.*.local 6 | /config/secrets/prod/prod.decrypt.private.php 7 | /public/bundles/ 8 | /var/ 9 | /vendor/ 10 | ###< symfony/framework-bundle ### 11 | /.idea 12 | -------------------------------------------------------------------------------- /src/Infrastructure/ParamConverter/InputFactory/InputFactoryProvider.php: -------------------------------------------------------------------------------- 1 | ['all' => true], 5 | Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle::class => ['all' => true], 6 | SymfonyBundles\JsonRequestBundle\SymfonyBundlesJsonRequestBundle::class => ['all' => true], 7 | ]; 8 | -------------------------------------------------------------------------------- /src/Infrastructure/Validator/DataValidator.php: -------------------------------------------------------------------------------- 1 | userId = $userId; 13 | } 14 | 15 | public function getUserId(): string 16 | { 17 | return $this->userId; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/Infrastructure/Storage/InMemory/InMemoryUsers.php: -------------------------------------------------------------------------------- 1 | users[$user->id()] = $user; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /config/packages/framework.yaml: -------------------------------------------------------------------------------- 1 | # see https://symfony.com/doc/current/reference/configuration/framework.html 2 | framework: 3 | secret: '%env(APP_SECRET)%' 4 | #csrf_protection: true 5 | #http_method_override: true 6 | 7 | # Enables session support. Note that the session will ONLY be started if you read or write from it. 8 | # Remove or comment this section to explicitly disable session support. 9 | session: 10 | handler_id: null 11 | cookie_secure: auto 12 | cookie_samesite: lax 13 | 14 | #esi: true 15 | #fragments: true 16 | php_errors: 17 | log: true 18 | -------------------------------------------------------------------------------- /public/index.php: -------------------------------------------------------------------------------- 1 | bootEnv(dirname(__DIR__).'/.env'); 11 | 12 | if ($_SERVER['APP_DEBUG']) { 13 | umask(0000); 14 | 15 | Debug::enable(); 16 | } 17 | 18 | $kernel = new Kernel($_SERVER['APP_ENV'], (bool) $_SERVER['APP_DEBUG']); 19 | $request = Request::createFromGlobals(); 20 | $response = $kernel->handle($request); 21 | $response->send(); 22 | $kernel->terminate($request, $response); 23 | -------------------------------------------------------------------------------- /src/Infrastructure/ParamConverter/InputFactory/ServiceLocatorInputFactoryProvider.php: -------------------------------------------------------------------------------- 1 | serviceLocator = $serviceLocator; 15 | } 16 | 17 | public function getFactory(string $className): InputFactory 18 | { 19 | return $this->serviceLocator->get($className); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/Infrastructure/Service/Md5PasswordEncoder.php: -------------------------------------------------------------------------------- 1 | salt = $salt; 15 | } 16 | 17 | public function encode(string $password): string 18 | { 19 | return md5($this->salt . $password); 20 | } 21 | 22 | public function matches(string $givenPassword, string $password): bool 23 | { 24 | return $this->encode($givenPassword) === $password; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/Infrastructure/Service/SymfonyViolationListConverter.php: -------------------------------------------------------------------------------- 1 | getPropertyPath()][] = $violation->getMessage(); 17 | } 18 | 19 | return $errors; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/Domain/Factory/UserFactory.php: -------------------------------------------------------------------------------- 1 | passwordEncoder = $passwordEncoder; 17 | } 18 | public function fromAddUserInput(AddUserInput $input): User 19 | { 20 | return new User( 21 | $input->getEmail(), 22 | $this->passwordEncoder->encode($input->getPassword()) 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/Infrastructure/Exception/DataValidationException.php: -------------------------------------------------------------------------------- 1 | errors = $errorMessages; 17 | } 18 | 19 | public function getErrors(): array 20 | { 21 | return $this->errors; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/Action/Input/AddUserInput.php: -------------------------------------------------------------------------------- 1 | email = $email; 19 | $this->password = $password; 20 | } 21 | 22 | public function getEmail(): string 23 | { 24 | return $this->email; 25 | } 26 | 27 | public function getPassword(): string 28 | { 29 | return $this->password; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /config/packages/cache.yaml: -------------------------------------------------------------------------------- 1 | framework: 2 | cache: 3 | # Unique name of your app: used to compute stable namespaces for cache keys. 4 | #prefix_seed: your_vendor_name/app_name 5 | 6 | # The "app" cache stores to the filesystem by default. 7 | # The data in this cache should persist between deploys. 8 | # Other options include: 9 | 10 | # Redis 11 | #app: cache.adapter.redis 12 | #default_redis_provider: redis://localhost 13 | 14 | # APCu (not recommended with heavy random-write workloads as memory fragmentation can cause perf issues) 15 | #app: cache.adapter.apcu 16 | 17 | # Namespaced pools use the above "app" backend by default 18 | #pools: 19 | #my.dedicated.cache: null 20 | -------------------------------------------------------------------------------- /src/Infrastructure/ExceptionHandler/DataValidationExceptionHandler.php: -------------------------------------------------------------------------------- 1 | getThrowable(); 15 | 16 | if (!$exception instanceof DataValidationException) { 17 | return; 18 | } 19 | 20 | $exceptionEvent->setResponse( 21 | new JsonResponse($exception->getErrors(), $exception->getStatusCode()) 22 | ); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/Domain/Model/User.php: -------------------------------------------------------------------------------- 1 | id = uniqid(); 17 | $this->email = $email; 18 | $this->changePassword($encodedPassword); 19 | } 20 | 21 | public function id(): string 22 | { 23 | return $this->id; 24 | } 25 | 26 | public function email(): string 27 | { 28 | return $this->email; 29 | } 30 | 31 | public function changePassword(string $encodedPassword): void 32 | { 33 | $this->encodedPassword = $encodedPassword; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/Infrastructure/ParamConverter/InputFactory/AddUserInputFactory.php: -------------------------------------------------------------------------------- 1 | request->get('email', ''), 15 | (string)$request->request->get('password', '') 16 | ); 17 | } 18 | 19 | public function createFromData(string $email, $password): AddUserInput 20 | { 21 | return new AddUserInput( 22 | $email, 23 | $password 24 | ); 25 | } 26 | 27 | public static function supportedInput(): string 28 | { 29 | return AddUserInput::class; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /.env: -------------------------------------------------------------------------------- 1 | # In all environments, the following files are loaded if they exist, 2 | # the latter taking precedence over the former: 3 | # 4 | # * .env contains default values for the environment variables needed by the app 5 | # * .env.local uncommitted file with local overrides 6 | # * .env.$APP_ENV committed environment-specific defaults 7 | # * .env.$APP_ENV.local uncommitted environment-specific overrides 8 | # 9 | # Real environment variables win over .env files. 10 | # 11 | # DO NOT DEFINE PRODUCTION SECRETS IN THIS FILE NOR IN ANY OTHER COMMITTED FILES. 12 | # 13 | # Run "composer dump-env prod" to compile .env files for production use (requires symfony/flex >=1.2). 14 | # https://symfony.com/doc/current/best_practices.html#use-environment-variables-for-infrastructure-configuration 15 | 16 | ###> symfony/framework-bundle ### 17 | APP_ENV=dev 18 | APP_SECRET=6b9f6311816f3d579b7cc1717c499098 19 | ###< symfony/framework-bundle ### 20 | -------------------------------------------------------------------------------- /src/Action/AddUser.php: -------------------------------------------------------------------------------- 1 | users = $users; 21 | $this->userFactory = $userFactory; 22 | } 23 | 24 | /** 25 | * @ParamConverter(converter="converter.action_input", name="input") 26 | */ 27 | public function __invoke(AddUserInput $input): AddUserOutput 28 | { 29 | $user = $this->userFactory->fromAddUserInput($input); 30 | 31 | $this->users->add($user); 32 | 33 | return new AddUserOutput($user->id()); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/Infrastructure/Validator/SymfonyValidator.php: -------------------------------------------------------------------------------- 1 | validator = $validator; 19 | $this->converter = $converter; 20 | } 21 | public function validate($data): void 22 | { 23 | $errors = $this->validator->validate($data); 24 | 25 | if (count($errors) === 0) { 26 | return; 27 | } 28 | 29 | throw new DataValidationException($this->converter->convertToArray($errors)); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/Infrastructure/Responder/TableConsoleResponder.php: -------------------------------------------------------------------------------- 1 | normalizer = $normalizer; 17 | } 18 | public function __invoke(OutputInterface $output, $data): void 19 | { 20 | $dataAsArray = $this->normalizer->normalize($data, 'array'); 21 | $this->writeToOutput($dataAsArray, $output); 22 | } 23 | 24 | private function writeToOutput(array $data, OutputInterface $output): void 25 | { 26 | $table = new Table($output); 27 | $table->setHeaders(array_keys($data)); 28 | $table->addRow(array_values($data)); 29 | $table->render(); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/Infrastructure/Responder/JsonResponder.php: -------------------------------------------------------------------------------- 1 | serializer = $serializer; 18 | } 19 | 20 | public function __invoke(ViewEvent $viewEvent): void 21 | { 22 | if (self::SUPPORTED_CONTENT_TYPE !== $viewEvent->getRequest()->getContentType()) { 23 | return; 24 | } 25 | 26 | $viewEvent->setResponse( 27 | new JsonResponse( 28 | $this->serializer->serialize($viewEvent->getControllerResult(), 'json'), 29 | JsonResponse::HTTP_OK, 30 | [], 31 | true 32 | ) 33 | ); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /bin/console: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env php 2 | getParameterOption(['--env', '-e'], null, true)) { 24 | putenv('APP_ENV='.$_SERVER['APP_ENV'] = $_ENV['APP_ENV'] = $env); 25 | } 26 | 27 | if ($input->hasParameterOption('--no-debug', true)) { 28 | putenv('APP_DEBUG='.$_SERVER['APP_DEBUG'] = $_ENV['APP_DEBUG'] = '0'); 29 | } 30 | 31 | (new Dotenv())->bootEnv(dirname(__DIR__).'/.env'); 32 | 33 | if ($_SERVER['APP_DEBUG']) { 34 | umask(0000); 35 | 36 | if (class_exists(Debug::class)) { 37 | Debug::enable(); 38 | } 39 | } 40 | 41 | $kernel = new Kernel($_SERVER['APP_ENV'], (bool) $_SERVER['APP_DEBUG']); 42 | $application = new Application($kernel); 43 | $application->run($input); 44 | -------------------------------------------------------------------------------- /src/Kernel.php: -------------------------------------------------------------------------------- 1 | import('../config/{packages}/*.yaml'); 17 | $container->import('../config/{packages}/'.$this->environment.'/*.yaml'); 18 | 19 | if (is_file(\dirname(__DIR__).'/config/services.yaml')) { 20 | $container->import('../config/services.yaml'); 21 | $container->import('../config/{services}_'.$this->environment.'.yaml'); 22 | } elseif (is_file($path = \dirname(__DIR__).'/config/services.php')) { 23 | (require $path)($container->withPath($path), $this); 24 | } 25 | } 26 | 27 | protected function configureRoutes(RoutingConfigurator $routes): void 28 | { 29 | $routes->import('../config/{routes}/'.$this->environment.'/*.yaml'); 30 | $routes->import('../config/{routes}/*.yaml'); 31 | 32 | if (is_file(\dirname(__DIR__).'/config/routes.yaml')) { 33 | $routes->import('../config/routes.yaml'); 34 | } elseif (is_file($path = \dirname(__DIR__).'/config/routes.php')) { 35 | (require $path)($routes->withPath($path), $this); 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/Infrastructure/ParamConverter/InputParamConverter.php: -------------------------------------------------------------------------------- 1 | validator = $validator; 25 | $this->inputFactoryProvider = $inputFactoryProvider; 26 | } 27 | 28 | public function apply(Request $request, ParamConverter $configuration) 29 | { 30 | $input = $this->inputFactory->createFromRequest($request); 31 | 32 | $this->validator->validate($input); 33 | 34 | $request->attributes->set($configuration->getName(), $input); 35 | } 36 | 37 | public function supports(ParamConverter $configuration): bool 38 | { 39 | try { 40 | $this->inputFactory = $this->inputFactoryProvider->getFactory($configuration->getClass()); 41 | } catch (ServiceNotFoundException $e) { 42 | return false; 43 | } 44 | 45 | return true; 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "project", 3 | "license": "proprietary", 4 | "minimum-stability": "dev", 5 | "prefer-stable": true, 6 | "require": { 7 | "php": ">=7.4", 8 | "ext-ctype": "*", 9 | "ext-iconv": "*", 10 | "sensio/framework-extra-bundle": "^5.6", 11 | "symfony-bundles/json-request-bundle": "^3.1", 12 | "symfony/console": "5.2.*", 13 | "symfony/dotenv": "5.2.*", 14 | "symfony/flex": "^1.3.1", 15 | "symfony/framework-bundle": "5.2.*", 16 | "symfony/serializer": "5.2.*", 17 | "symfony/validator": "5.2.*", 18 | "symfony/yaml": "5.2.*" 19 | }, 20 | "require-dev": { 21 | }, 22 | "config": { 23 | "optimize-autoloader": true, 24 | "preferred-install": { 25 | "*": "dist" 26 | }, 27 | "sort-packages": true 28 | }, 29 | "autoload": { 30 | "psr-4": { 31 | "App\\": "src/" 32 | } 33 | }, 34 | "autoload-dev": { 35 | "psr-4": { 36 | "App\\Tests\\": "tests/" 37 | } 38 | }, 39 | "replace": { 40 | "symfony/polyfill-ctype": "*", 41 | "symfony/polyfill-iconv": "*", 42 | "symfony/polyfill-php72": "*" 43 | }, 44 | "scripts": { 45 | "auto-scripts": { 46 | "cache:clear": "symfony-cmd", 47 | "assets:install %PUBLIC_DIR%": "symfony-cmd" 48 | }, 49 | "post-install-cmd": [ 50 | "@auto-scripts" 51 | ], 52 | "post-update-cmd": [ 53 | "@auto-scripts" 54 | ] 55 | }, 56 | "conflict": { 57 | "symfony/symfony": "*" 58 | }, 59 | "extra": { 60 | "symfony": { 61 | "allow-contrib": false, 62 | "require": "5.2.*" 63 | } 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /src/Infrastructure/Command/AddUserCommand.php: -------------------------------------------------------------------------------- 1 | addUser = $addUser; 39 | $this->inputFactory = $inputFactory; 40 | $this->validator = $validator; 41 | $this->consoleResponder = $consoleResponder; 42 | } 43 | 44 | protected function configure() 45 | { 46 | $this 47 | ->setDescription('Creates new User') 48 | ->addArgument(self::EMAIL, InputArgument::REQUIRED, 'User email') 49 | ->addArgument(self::PASSWORD, InputArgument::REQUIRED, 'User password'); 50 | } 51 | 52 | protected function execute(InputInterface $input, OutputInterface $output) 53 | { 54 | $addUserInput = $this->inputFactory->createFromData( 55 | $input->getArgument(self::EMAIL), 56 | $input->getArgument(self::PASSWORD) 57 | ); 58 | 59 | $this->validator->validate($addUserInput); 60 | 61 | $addUserOutput = $this->addUser->__invoke($addUserInput); 62 | 63 | $this->consoleResponder->__invoke($output, $addUserOutput); 64 | 65 | return Command::SUCCESS; 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /config/services.yaml: -------------------------------------------------------------------------------- 1 | # This file is the entry point to configure your own services. 2 | # Files in the packages/ subdirectory configure your dependencies. 3 | 4 | # Put parameters here that don't need to change on each machine where the app is deployed 5 | # https://symfony.com/doc/current/best_practices/configuration.html#application-related-configuration 6 | parameters: 7 | 8 | services: 9 | # default configuration for services in *this* file 10 | _defaults: 11 | autowire: true # Automatically injects dependencies in your services. 12 | autoconfigure: true # Automatically registers your services as commands, event subscribers, etc. 13 | public: true 14 | bind: 15 | $salt: 'some_salt' 16 | 17 | _instanceof: 18 | App\Infrastructure\ParamConverter\InputFactory\InputFactory: 19 | tags: 20 | - {name: app.input_factory} 21 | 22 | # makes classes in src/ available to be used as services 23 | # this creates a service per class whose id is the fully-qualified class name 24 | App\: 25 | resource: '../src/' 26 | exclude: 27 | - '../src/Kernel.php' 28 | - '../src/Tests/' 29 | - '../src/Action/Input/' 30 | - '../src/Action/Output' 31 | - '../src/Domain/Model/' 32 | - '../src/Infrastructure/Exception/' 33 | 34 | # add more service definitions when explicit configuration is needed 35 | # please note that last definitions always *replace* previous ones 36 | 37 | App\Domain\Model\Users: 38 | class: App\Infrastructure\Storage\InMemory\InMemoryUsers 39 | 40 | App\Infrastructure\Responder\JsonResponder: 41 | tags: 42 | - {name: kernel.event_listener, event: kernel.view} 43 | 44 | App\Infrastructure\ParamConverter\InputParamConverter: 45 | tags: 46 | - {name: request.param_converter, converter: converter.action_input, priority: false} 47 | 48 | App\Infrastructure\ExceptionHandler\DataValidationExceptionHandler: 49 | tags: 50 | - {name: kernel.event_listener, event: kernel.exception} 51 | 52 | get_set_method_normalizer: 53 | class: Symfony\Component\Serializer\Normalizer\GetSetMethodNormalizer 54 | tags: [serializer.normalizer] 55 | 56 | App\Infrastructure\ParamConverter\InputFactory\ServiceLocatorInputFactoryProvider: 57 | class: App\Infrastructure\ParamConverter\InputFactory\ServiceLocatorInputFactoryProvider 58 | arguments: 59 | - !tagged_locator {tag: app.input_factory, index_by: 'key', default_index_method: 'supportedInput'} 60 | -------------------------------------------------------------------------------- /symfony.lock: -------------------------------------------------------------------------------- 1 | { 2 | "doctrine/annotations": { 3 | "version": "1.0", 4 | "recipe": { 5 | "repo": "github.com/symfony/recipes", 6 | "branch": "master", 7 | "version": "1.0", 8 | "ref": "a2759dd6123694c8d901d0ec80006e044c2e6457" 9 | }, 10 | "files": [ 11 | "config/routes/annotations.yaml" 12 | ] 13 | }, 14 | "doctrine/lexer": { 15 | "version": "1.2.1" 16 | }, 17 | "php": { 18 | "version": "7.4" 19 | }, 20 | "psr/cache": { 21 | "version": "1.0.1" 22 | }, 23 | "psr/container": { 24 | "version": "1.0.0" 25 | }, 26 | "psr/event-dispatcher": { 27 | "version": "1.0.0" 28 | }, 29 | "psr/log": { 30 | "version": "1.1.3" 31 | }, 32 | "sensio/framework-extra-bundle": { 33 | "version": "5.2", 34 | "recipe": { 35 | "repo": "github.com/symfony/recipes", 36 | "branch": "master", 37 | "version": "5.2", 38 | "ref": "fb7e19da7f013d0d422fa9bce16f5c510e27609b" 39 | }, 40 | "files": [ 41 | "config/packages/sensio_framework_extra.yaml" 42 | ] 43 | }, 44 | "symfony-bundles/json-request-bundle": { 45 | "version": "v3.1.1" 46 | }, 47 | "symfony/cache": { 48 | "version": "v5.2.0" 49 | }, 50 | "symfony/cache-contracts": { 51 | "version": "v2.2.0" 52 | }, 53 | "symfony/config": { 54 | "version": "v5.2.0" 55 | }, 56 | "symfony/console": { 57 | "version": "5.1", 58 | "recipe": { 59 | "repo": "github.com/symfony/recipes", 60 | "branch": "master", 61 | "version": "5.1", 62 | "ref": "c6d02bdfba9da13c22157520e32a602dbee8a75c" 63 | }, 64 | "files": [ 65 | "bin/console" 66 | ] 67 | }, 68 | "symfony/dependency-injection": { 69 | "version": "v5.2.0" 70 | }, 71 | "symfony/deprecation-contracts": { 72 | "version": "v2.2.0" 73 | }, 74 | "symfony/dotenv": { 75 | "version": "v5.2.0" 76 | }, 77 | "symfony/error-handler": { 78 | "version": "v5.2.0" 79 | }, 80 | "symfony/event-dispatcher": { 81 | "version": "v5.2.0" 82 | }, 83 | "symfony/event-dispatcher-contracts": { 84 | "version": "v2.2.0" 85 | }, 86 | "symfony/filesystem": { 87 | "version": "v5.2.0" 88 | }, 89 | "symfony/finder": { 90 | "version": "v5.2.0" 91 | }, 92 | "symfony/flex": { 93 | "version": "1.0", 94 | "recipe": { 95 | "repo": "github.com/symfony/recipes", 96 | "branch": "master", 97 | "version": "1.0", 98 | "ref": "c0eeb50665f0f77226616b6038a9b06c03752d8e" 99 | }, 100 | "files": [ 101 | ".env" 102 | ] 103 | }, 104 | "symfony/framework-bundle": { 105 | "version": "5.2", 106 | "recipe": { 107 | "repo": "github.com/symfony/recipes", 108 | "branch": "master", 109 | "version": "5.2", 110 | "ref": "6ec87563dcc85cd0c48856dcfbfc29610506d250" 111 | }, 112 | "files": [ 113 | "config/packages/cache.yaml", 114 | "config/packages/framework.yaml", 115 | "config/packages/test/framework.yaml", 116 | "config/preload.php", 117 | "config/routes/dev/framework.yaml", 118 | "config/services.yaml", 119 | "public/index.php", 120 | "src/Controller/.gitignore", 121 | "src/Kernel.php" 122 | ] 123 | }, 124 | "symfony/http-client-contracts": { 125 | "version": "v2.3.1" 126 | }, 127 | "symfony/http-foundation": { 128 | "version": "v5.2.0" 129 | }, 130 | "symfony/http-kernel": { 131 | "version": "v5.2.0" 132 | }, 133 | "symfony/polyfill-intl-grapheme": { 134 | "version": "v1.20.0" 135 | }, 136 | "symfony/polyfill-intl-normalizer": { 137 | "version": "v1.20.0" 138 | }, 139 | "symfony/polyfill-mbstring": { 140 | "version": "v1.20.0" 141 | }, 142 | "symfony/polyfill-php73": { 143 | "version": "v1.20.0" 144 | }, 145 | "symfony/polyfill-php80": { 146 | "version": "v1.20.0" 147 | }, 148 | "symfony/routing": { 149 | "version": "5.1", 150 | "recipe": { 151 | "repo": "github.com/symfony/recipes", 152 | "branch": "master", 153 | "version": "5.1", 154 | "ref": "b4f3e7c95e38b606eef467e8a42a8408fc460c43" 155 | }, 156 | "files": [ 157 | "config/packages/prod/routing.yaml", 158 | "config/packages/routing.yaml", 159 | "config/routes.yaml" 160 | ] 161 | }, 162 | "symfony/serializer": { 163 | "version": "v5.2.0" 164 | }, 165 | "symfony/service-contracts": { 166 | "version": "v2.2.0" 167 | }, 168 | "symfony/string": { 169 | "version": "v5.2.0" 170 | }, 171 | "symfony/translation-contracts": { 172 | "version": "v2.3.0" 173 | }, 174 | "symfony/validator": { 175 | "version": "4.3", 176 | "recipe": { 177 | "repo": "github.com/symfony/recipes", 178 | "branch": "master", 179 | "version": "4.3", 180 | "ref": "d902da3e4952f18d3bf05aab29512eb61cabd869" 181 | }, 182 | "files": [ 183 | "config/packages/test/validator.yaml", 184 | "config/packages/validator.yaml" 185 | ] 186 | }, 187 | "symfony/var-dumper": { 188 | "version": "v5.2.0" 189 | }, 190 | "symfony/var-exporter": { 191 | "version": "v5.2.0" 192 | }, 193 | "symfony/yaml": { 194 | "version": "v5.2.0" 195 | } 196 | } 197 | -------------------------------------------------------------------------------- /composer.lock: -------------------------------------------------------------------------------- 1 | { 2 | "_readme": [ 3 | "This file locks the dependencies of your project to a known state", 4 | "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", 5 | "This file is @generated automatically" 6 | ], 7 | "content-hash": "4cba4ac864a544f5ca2aa802eb07bce8", 8 | "packages": [ 9 | { 10 | "name": "doctrine/annotations", 11 | "version": "1.11.1", 12 | "source": { 13 | "type": "git", 14 | "url": "https://github.com/doctrine/annotations.git", 15 | "reference": "ce77a7ba1770462cd705a91a151b6c3746f9c6ad" 16 | }, 17 | "dist": { 18 | "type": "zip", 19 | "url": "https://api.github.com/repos/doctrine/annotations/zipball/ce77a7ba1770462cd705a91a151b6c3746f9c6ad", 20 | "reference": "ce77a7ba1770462cd705a91a151b6c3746f9c6ad", 21 | "shasum": "" 22 | }, 23 | "require": { 24 | "doctrine/lexer": "1.*", 25 | "ext-tokenizer": "*", 26 | "php": "^7.1 || ^8.0" 27 | }, 28 | "require-dev": { 29 | "doctrine/cache": "1.*", 30 | "doctrine/coding-standard": "^6.0 || ^8.1", 31 | "phpstan/phpstan": "^0.12.20", 32 | "phpunit/phpunit": "^7.5 || ^9.1.5" 33 | }, 34 | "type": "library", 35 | "extra": { 36 | "branch-alias": { 37 | "dev-master": "1.11.x-dev" 38 | } 39 | }, 40 | "autoload": { 41 | "psr-4": { 42 | "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" 43 | } 44 | }, 45 | "notification-url": "https://packagist.org/downloads/", 46 | "license": [ 47 | "MIT" 48 | ], 49 | "authors": [ 50 | { 51 | "name": "Guilherme Blanco", 52 | "email": "guilhermeblanco@gmail.com" 53 | }, 54 | { 55 | "name": "Roman Borschel", 56 | "email": "roman@code-factory.org" 57 | }, 58 | { 59 | "name": "Benjamin Eberlei", 60 | "email": "kontakt@beberlei.de" 61 | }, 62 | { 63 | "name": "Jonathan Wage", 64 | "email": "jonwage@gmail.com" 65 | }, 66 | { 67 | "name": "Johannes Schmitt", 68 | "email": "schmittjoh@gmail.com" 69 | } 70 | ], 71 | "description": "Docblock Annotations Parser", 72 | "homepage": "https://www.doctrine-project.org/projects/annotations.html", 73 | "keywords": [ 74 | "annotations", 75 | "docblock", 76 | "parser" 77 | ], 78 | "time": "2020-10-26T10:28:16+00:00" 79 | }, 80 | { 81 | "name": "doctrine/lexer", 82 | "version": "1.2.1", 83 | "source": { 84 | "type": "git", 85 | "url": "https://github.com/doctrine/lexer.git", 86 | "reference": "e864bbf5904cb8f5bb334f99209b48018522f042" 87 | }, 88 | "dist": { 89 | "type": "zip", 90 | "url": "https://api.github.com/repos/doctrine/lexer/zipball/e864bbf5904cb8f5bb334f99209b48018522f042", 91 | "reference": "e864bbf5904cb8f5bb334f99209b48018522f042", 92 | "shasum": "" 93 | }, 94 | "require": { 95 | "php": "^7.2 || ^8.0" 96 | }, 97 | "require-dev": { 98 | "doctrine/coding-standard": "^6.0", 99 | "phpstan/phpstan": "^0.11.8", 100 | "phpunit/phpunit": "^8.2" 101 | }, 102 | "type": "library", 103 | "extra": { 104 | "branch-alias": { 105 | "dev-master": "1.2.x-dev" 106 | } 107 | }, 108 | "autoload": { 109 | "psr-4": { 110 | "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" 111 | } 112 | }, 113 | "notification-url": "https://packagist.org/downloads/", 114 | "license": [ 115 | "MIT" 116 | ], 117 | "authors": [ 118 | { 119 | "name": "Guilherme Blanco", 120 | "email": "guilhermeblanco@gmail.com" 121 | }, 122 | { 123 | "name": "Roman Borschel", 124 | "email": "roman@code-factory.org" 125 | }, 126 | { 127 | "name": "Johannes Schmitt", 128 | "email": "schmittjoh@gmail.com" 129 | } 130 | ], 131 | "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", 132 | "homepage": "https://www.doctrine-project.org/projects/lexer.html", 133 | "keywords": [ 134 | "annotations", 135 | "docblock", 136 | "lexer", 137 | "parser", 138 | "php" 139 | ], 140 | "funding": [ 141 | { 142 | "url": "https://www.doctrine-project.org/sponsorship.html", 143 | "type": "custom" 144 | }, 145 | { 146 | "url": "https://www.patreon.com/phpdoctrine", 147 | "type": "patreon" 148 | }, 149 | { 150 | "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", 151 | "type": "tidelift" 152 | } 153 | ], 154 | "time": "2020-05-25T17:44:05+00:00" 155 | }, 156 | { 157 | "name": "psr/cache", 158 | "version": "1.0.1", 159 | "source": { 160 | "type": "git", 161 | "url": "https://github.com/php-fig/cache.git", 162 | "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" 163 | }, 164 | "dist": { 165 | "type": "zip", 166 | "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", 167 | "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", 168 | "shasum": "" 169 | }, 170 | "require": { 171 | "php": ">=5.3.0" 172 | }, 173 | "type": "library", 174 | "extra": { 175 | "branch-alias": { 176 | "dev-master": "1.0.x-dev" 177 | } 178 | }, 179 | "autoload": { 180 | "psr-4": { 181 | "Psr\\Cache\\": "src/" 182 | } 183 | }, 184 | "notification-url": "https://packagist.org/downloads/", 185 | "license": [ 186 | "MIT" 187 | ], 188 | "authors": [ 189 | { 190 | "name": "PHP-FIG", 191 | "homepage": "http://www.php-fig.org/" 192 | } 193 | ], 194 | "description": "Common interface for caching libraries", 195 | "keywords": [ 196 | "cache", 197 | "psr", 198 | "psr-6" 199 | ], 200 | "time": "2016-08-06T20:24:11+00:00" 201 | }, 202 | { 203 | "name": "psr/container", 204 | "version": "1.0.0", 205 | "source": { 206 | "type": "git", 207 | "url": "https://github.com/php-fig/container.git", 208 | "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" 209 | }, 210 | "dist": { 211 | "type": "zip", 212 | "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", 213 | "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", 214 | "shasum": "" 215 | }, 216 | "require": { 217 | "php": ">=5.3.0" 218 | }, 219 | "type": "library", 220 | "extra": { 221 | "branch-alias": { 222 | "dev-master": "1.0.x-dev" 223 | } 224 | }, 225 | "autoload": { 226 | "psr-4": { 227 | "Psr\\Container\\": "src/" 228 | } 229 | }, 230 | "notification-url": "https://packagist.org/downloads/", 231 | "license": [ 232 | "MIT" 233 | ], 234 | "authors": [ 235 | { 236 | "name": "PHP-FIG", 237 | "homepage": "http://www.php-fig.org/" 238 | } 239 | ], 240 | "description": "Common Container Interface (PHP FIG PSR-11)", 241 | "homepage": "https://github.com/php-fig/container", 242 | "keywords": [ 243 | "PSR-11", 244 | "container", 245 | "container-interface", 246 | "container-interop", 247 | "psr" 248 | ], 249 | "time": "2017-02-14T16:28:37+00:00" 250 | }, 251 | { 252 | "name": "psr/event-dispatcher", 253 | "version": "1.0.0", 254 | "source": { 255 | "type": "git", 256 | "url": "https://github.com/php-fig/event-dispatcher.git", 257 | "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" 258 | }, 259 | "dist": { 260 | "type": "zip", 261 | "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", 262 | "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", 263 | "shasum": "" 264 | }, 265 | "require": { 266 | "php": ">=7.2.0" 267 | }, 268 | "type": "library", 269 | "extra": { 270 | "branch-alias": { 271 | "dev-master": "1.0.x-dev" 272 | } 273 | }, 274 | "autoload": { 275 | "psr-4": { 276 | "Psr\\EventDispatcher\\": "src/" 277 | } 278 | }, 279 | "notification-url": "https://packagist.org/downloads/", 280 | "license": [ 281 | "MIT" 282 | ], 283 | "authors": [ 284 | { 285 | "name": "PHP-FIG", 286 | "homepage": "http://www.php-fig.org/" 287 | } 288 | ], 289 | "description": "Standard interfaces for event handling.", 290 | "keywords": [ 291 | "events", 292 | "psr", 293 | "psr-14" 294 | ], 295 | "time": "2019-01-08T18:20:26+00:00" 296 | }, 297 | { 298 | "name": "psr/log", 299 | "version": "1.1.3", 300 | "source": { 301 | "type": "git", 302 | "url": "https://github.com/php-fig/log.git", 303 | "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc" 304 | }, 305 | "dist": { 306 | "type": "zip", 307 | "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc", 308 | "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc", 309 | "shasum": "" 310 | }, 311 | "require": { 312 | "php": ">=5.3.0" 313 | }, 314 | "type": "library", 315 | "extra": { 316 | "branch-alias": { 317 | "dev-master": "1.1.x-dev" 318 | } 319 | }, 320 | "autoload": { 321 | "psr-4": { 322 | "Psr\\Log\\": "Psr/Log/" 323 | } 324 | }, 325 | "notification-url": "https://packagist.org/downloads/", 326 | "license": [ 327 | "MIT" 328 | ], 329 | "authors": [ 330 | { 331 | "name": "PHP-FIG", 332 | "homepage": "http://www.php-fig.org/" 333 | } 334 | ], 335 | "description": "Common interface for logging libraries", 336 | "homepage": "https://github.com/php-fig/log", 337 | "keywords": [ 338 | "log", 339 | "psr", 340 | "psr-3" 341 | ], 342 | "time": "2020-03-23T09:12:05+00:00" 343 | }, 344 | { 345 | "name": "sensio/framework-extra-bundle", 346 | "version": "v5.6.1", 347 | "source": { 348 | "type": "git", 349 | "url": "https://github.com/sensiolabs/SensioFrameworkExtraBundle.git", 350 | "reference": "430d14c01836b77c28092883d195a43ce413ee32" 351 | }, 352 | "dist": { 353 | "type": "zip", 354 | "url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/430d14c01836b77c28092883d195a43ce413ee32", 355 | "reference": "430d14c01836b77c28092883d195a43ce413ee32", 356 | "shasum": "" 357 | }, 358 | "require": { 359 | "doctrine/annotations": "^1.0", 360 | "php": ">=7.2.5", 361 | "symfony/config": "^4.4|^5.0", 362 | "symfony/dependency-injection": "^4.4|^5.0", 363 | "symfony/framework-bundle": "^4.4|^5.0", 364 | "symfony/http-kernel": "^4.4|^5.0" 365 | }, 366 | "conflict": { 367 | "doctrine/doctrine-cache-bundle": "<1.3.1", 368 | "doctrine/persistence": "<1.3" 369 | }, 370 | "require-dev": { 371 | "doctrine/dbal": "^2.10|^3.0", 372 | "doctrine/doctrine-bundle": "^1.11|^2.0", 373 | "doctrine/orm": "^2.5", 374 | "nyholm/psr7": "^1.1", 375 | "symfony/browser-kit": "^4.4|^5.0", 376 | "symfony/doctrine-bridge": "^4.4|^5.0", 377 | "symfony/dom-crawler": "^4.4|^5.0", 378 | "symfony/expression-language": "^4.4|^5.0", 379 | "symfony/finder": "^4.4|^5.0", 380 | "symfony/monolog-bridge": "^4.0|^5.0", 381 | "symfony/monolog-bundle": "^3.2", 382 | "symfony/phpunit-bridge": "^4.4.9|^5.0.9", 383 | "symfony/psr-http-message-bridge": "^1.1", 384 | "symfony/security-bundle": "^4.4|^5.0", 385 | "symfony/twig-bundle": "^4.4|^5.0", 386 | "symfony/yaml": "^4.4|^5.0", 387 | "twig/twig": "^1.34|^2.4|^3.0" 388 | }, 389 | "type": "symfony-bundle", 390 | "extra": { 391 | "branch-alias": { 392 | "dev-master": "5.6.x-dev" 393 | } 394 | }, 395 | "autoload": { 396 | "psr-4": { 397 | "Sensio\\Bundle\\FrameworkExtraBundle\\": "src/" 398 | }, 399 | "exclude-from-classmap": [ 400 | "/tests/" 401 | ] 402 | }, 403 | "notification-url": "https://packagist.org/downloads/", 404 | "license": [ 405 | "MIT" 406 | ], 407 | "authors": [ 408 | { 409 | "name": "Fabien Potencier", 410 | "email": "fabien@symfony.com" 411 | } 412 | ], 413 | "description": "This bundle provides a way to configure your controllers with annotations", 414 | "keywords": [ 415 | "annotations", 416 | "controllers" 417 | ], 418 | "time": "2020-08-25T19:10:18+00:00" 419 | }, 420 | { 421 | "name": "symfony-bundles/json-request-bundle", 422 | "version": "v3.1.1", 423 | "source": { 424 | "type": "git", 425 | "url": "https://github.com/symfony-bundles/json-request-bundle.git", 426 | "reference": "649e9da58ab574d528ad1b6fe874df5b331a6457" 427 | }, 428 | "dist": { 429 | "type": "zip", 430 | "url": "https://api.github.com/repos/symfony-bundles/json-request-bundle/zipball/649e9da58ab574d528ad1b6fe874df5b331a6457", 431 | "reference": "649e9da58ab574d528ad1b6fe874df5b331a6457", 432 | "shasum": "" 433 | }, 434 | "require": { 435 | "php": "^7.3", 436 | "symfony/framework-bundle": "^4.3||^5.0" 437 | }, 438 | "require-dev": { 439 | "phpunit/php-code-coverage": "^5.0", 440 | "phpunit/phpunit": "^6.4", 441 | "symfony/phpunit-bridge": "^4.3||^5.0", 442 | "symfony/yaml": "^4.3||^5.0" 443 | }, 444 | "type": "symfony-bundle", 445 | "extra": { 446 | "branch-alias": { 447 | "dev-master": "3.x-dev" 448 | } 449 | }, 450 | "autoload": { 451 | "psr-4": { 452 | "SymfonyBundles\\JsonRequestBundle\\": "" 453 | }, 454 | "exclude-from-classmap": [ 455 | "/Tests/" 456 | ] 457 | }, 458 | "notification-url": "https://packagist.org/downloads/", 459 | "license": [ 460 | "MIT" 461 | ], 462 | "authors": [ 463 | { 464 | "name": "Dmitry Khaperets", 465 | "email": "khaperets@gmail.com" 466 | } 467 | ], 468 | "description": "Symfony JsonRequest Bundle", 469 | "homepage": "https://github.com/symfony-bundles/json-request-bundle", 470 | "keywords": [ 471 | "angular", 472 | "bundle", 473 | "json", 474 | "symfony" 475 | ], 476 | "time": "2020-06-19T20:46:32+00:00" 477 | }, 478 | { 479 | "name": "symfony/cache", 480 | "version": "v5.2.0", 481 | "source": { 482 | "type": "git", 483 | "url": "https://github.com/symfony/cache.git", 484 | "reference": "c15fd2b3dcf2bd7d5ee3265874870d6cc694306b" 485 | }, 486 | "dist": { 487 | "type": "zip", 488 | "url": "https://api.github.com/repos/symfony/cache/zipball/c15fd2b3dcf2bd7d5ee3265874870d6cc694306b", 489 | "reference": "c15fd2b3dcf2bd7d5ee3265874870d6cc694306b", 490 | "shasum": "" 491 | }, 492 | "require": { 493 | "php": ">=7.2.5", 494 | "psr/cache": "~1.0", 495 | "psr/log": "^1.1", 496 | "symfony/cache-contracts": "^1.1.7|^2", 497 | "symfony/polyfill-php80": "^1.15", 498 | "symfony/service-contracts": "^1.1|^2", 499 | "symfony/var-exporter": "^4.4|^5.0" 500 | }, 501 | "conflict": { 502 | "doctrine/dbal": "<2.10", 503 | "symfony/dependency-injection": "<4.4", 504 | "symfony/http-kernel": "<4.4", 505 | "symfony/var-dumper": "<4.4" 506 | }, 507 | "provide": { 508 | "psr/cache-implementation": "1.0", 509 | "psr/simple-cache-implementation": "1.0", 510 | "symfony/cache-implementation": "1.0" 511 | }, 512 | "require-dev": { 513 | "cache/integration-tests": "dev-master", 514 | "doctrine/cache": "^1.6", 515 | "doctrine/dbal": "^2.10|^3.0", 516 | "predis/predis": "^1.1", 517 | "psr/simple-cache": "^1.0", 518 | "symfony/config": "^4.4|^5.0", 519 | "symfony/dependency-injection": "^4.4|^5.0", 520 | "symfony/filesystem": "^4.4|^5.0", 521 | "symfony/http-kernel": "^4.4|^5.0", 522 | "symfony/messenger": "^4.4|^5.0", 523 | "symfony/var-dumper": "^4.4|^5.0" 524 | }, 525 | "type": "library", 526 | "autoload": { 527 | "psr-4": { 528 | "Symfony\\Component\\Cache\\": "" 529 | }, 530 | "exclude-from-classmap": [ 531 | "/Tests/" 532 | ] 533 | }, 534 | "notification-url": "https://packagist.org/downloads/", 535 | "license": [ 536 | "MIT" 537 | ], 538 | "authors": [ 539 | { 540 | "name": "Nicolas Grekas", 541 | "email": "p@tchwork.com" 542 | }, 543 | { 544 | "name": "Symfony Community", 545 | "homepage": "https://symfony.com/contributors" 546 | } 547 | ], 548 | "description": "Symfony Cache component with PSR-6, PSR-16, and tags", 549 | "homepage": "https://symfony.com", 550 | "keywords": [ 551 | "caching", 552 | "psr6" 553 | ], 554 | "funding": [ 555 | { 556 | "url": "https://symfony.com/sponsor", 557 | "type": "custom" 558 | }, 559 | { 560 | "url": "https://github.com/fabpot", 561 | "type": "github" 562 | }, 563 | { 564 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 565 | "type": "tidelift" 566 | } 567 | ], 568 | "time": "2020-11-21T09:39:55+00:00" 569 | }, 570 | { 571 | "name": "symfony/cache-contracts", 572 | "version": "v2.2.0", 573 | "source": { 574 | "type": "git", 575 | "url": "https://github.com/symfony/cache-contracts.git", 576 | "reference": "8034ca0b61d4dd967f3698aaa1da2507b631d0cb" 577 | }, 578 | "dist": { 579 | "type": "zip", 580 | "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/8034ca0b61d4dd967f3698aaa1da2507b631d0cb", 581 | "reference": "8034ca0b61d4dd967f3698aaa1da2507b631d0cb", 582 | "shasum": "" 583 | }, 584 | "require": { 585 | "php": ">=7.2.5", 586 | "psr/cache": "^1.0" 587 | }, 588 | "suggest": { 589 | "symfony/cache-implementation": "" 590 | }, 591 | "type": "library", 592 | "extra": { 593 | "branch-alias": { 594 | "dev-master": "2.2-dev" 595 | }, 596 | "thanks": { 597 | "name": "symfony/contracts", 598 | "url": "https://github.com/symfony/contracts" 599 | } 600 | }, 601 | "autoload": { 602 | "psr-4": { 603 | "Symfony\\Contracts\\Cache\\": "" 604 | } 605 | }, 606 | "notification-url": "https://packagist.org/downloads/", 607 | "license": [ 608 | "MIT" 609 | ], 610 | "authors": [ 611 | { 612 | "name": "Nicolas Grekas", 613 | "email": "p@tchwork.com" 614 | }, 615 | { 616 | "name": "Symfony Community", 617 | "homepage": "https://symfony.com/contributors" 618 | } 619 | ], 620 | "description": "Generic abstractions related to caching", 621 | "homepage": "https://symfony.com", 622 | "keywords": [ 623 | "abstractions", 624 | "contracts", 625 | "decoupling", 626 | "interfaces", 627 | "interoperability", 628 | "standards" 629 | ], 630 | "funding": [ 631 | { 632 | "url": "https://symfony.com/sponsor", 633 | "type": "custom" 634 | }, 635 | { 636 | "url": "https://github.com/fabpot", 637 | "type": "github" 638 | }, 639 | { 640 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 641 | "type": "tidelift" 642 | } 643 | ], 644 | "time": "2020-09-07T11:33:47+00:00" 645 | }, 646 | { 647 | "name": "symfony/config", 648 | "version": "v5.2.0", 649 | "source": { 650 | "type": "git", 651 | "url": "https://github.com/symfony/config.git", 652 | "reference": "fa1219ecbf96bb5db59f2599cba0960a0d9c3aea" 653 | }, 654 | "dist": { 655 | "type": "zip", 656 | "url": "https://api.github.com/repos/symfony/config/zipball/fa1219ecbf96bb5db59f2599cba0960a0d9c3aea", 657 | "reference": "fa1219ecbf96bb5db59f2599cba0960a0d9c3aea", 658 | "shasum": "" 659 | }, 660 | "require": { 661 | "php": ">=7.2.5", 662 | "symfony/deprecation-contracts": "^2.1", 663 | "symfony/filesystem": "^4.4|^5.0", 664 | "symfony/polyfill-ctype": "~1.8", 665 | "symfony/polyfill-php80": "^1.15" 666 | }, 667 | "conflict": { 668 | "symfony/finder": "<4.4" 669 | }, 670 | "require-dev": { 671 | "symfony/event-dispatcher": "^4.4|^5.0", 672 | "symfony/finder": "^4.4|^5.0", 673 | "symfony/messenger": "^4.4|^5.0", 674 | "symfony/service-contracts": "^1.1|^2", 675 | "symfony/yaml": "^4.4|^5.0" 676 | }, 677 | "suggest": { 678 | "symfony/yaml": "To use the yaml reference dumper" 679 | }, 680 | "type": "library", 681 | "autoload": { 682 | "psr-4": { 683 | "Symfony\\Component\\Config\\": "" 684 | }, 685 | "exclude-from-classmap": [ 686 | "/Tests/" 687 | ] 688 | }, 689 | "notification-url": "https://packagist.org/downloads/", 690 | "license": [ 691 | "MIT" 692 | ], 693 | "authors": [ 694 | { 695 | "name": "Fabien Potencier", 696 | "email": "fabien@symfony.com" 697 | }, 698 | { 699 | "name": "Symfony Community", 700 | "homepage": "https://symfony.com/contributors" 701 | } 702 | ], 703 | "description": "Symfony Config Component", 704 | "homepage": "https://symfony.com", 705 | "funding": [ 706 | { 707 | "url": "https://symfony.com/sponsor", 708 | "type": "custom" 709 | }, 710 | { 711 | "url": "https://github.com/fabpot", 712 | "type": "github" 713 | }, 714 | { 715 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 716 | "type": "tidelift" 717 | } 718 | ], 719 | "time": "2020-11-16T18:02:40+00:00" 720 | }, 721 | { 722 | "name": "symfony/console", 723 | "version": "v5.2.0", 724 | "source": { 725 | "type": "git", 726 | "url": "https://github.com/symfony/console.git", 727 | "reference": "3e0564fb08d44a98bd5f1960204c958e57bd586b" 728 | }, 729 | "dist": { 730 | "type": "zip", 731 | "url": "https://api.github.com/repos/symfony/console/zipball/3e0564fb08d44a98bd5f1960204c958e57bd586b", 732 | "reference": "3e0564fb08d44a98bd5f1960204c958e57bd586b", 733 | "shasum": "" 734 | }, 735 | "require": { 736 | "php": ">=7.2.5", 737 | "symfony/polyfill-mbstring": "~1.0", 738 | "symfony/polyfill-php73": "^1.8", 739 | "symfony/polyfill-php80": "^1.15", 740 | "symfony/service-contracts": "^1.1|^2", 741 | "symfony/string": "^5.1" 742 | }, 743 | "conflict": { 744 | "symfony/dependency-injection": "<4.4", 745 | "symfony/dotenv": "<5.1", 746 | "symfony/event-dispatcher": "<4.4", 747 | "symfony/lock": "<4.4", 748 | "symfony/process": "<4.4" 749 | }, 750 | "provide": { 751 | "psr/log-implementation": "1.0" 752 | }, 753 | "require-dev": { 754 | "psr/log": "~1.0", 755 | "symfony/config": "^4.4|^5.0", 756 | "symfony/dependency-injection": "^4.4|^5.0", 757 | "symfony/event-dispatcher": "^4.4|^5.0", 758 | "symfony/lock": "^4.4|^5.0", 759 | "symfony/process": "^4.4|^5.0", 760 | "symfony/var-dumper": "^4.4|^5.0" 761 | }, 762 | "suggest": { 763 | "psr/log": "For using the console logger", 764 | "symfony/event-dispatcher": "", 765 | "symfony/lock": "", 766 | "symfony/process": "" 767 | }, 768 | "type": "library", 769 | "autoload": { 770 | "psr-4": { 771 | "Symfony\\Component\\Console\\": "" 772 | }, 773 | "exclude-from-classmap": [ 774 | "/Tests/" 775 | ] 776 | }, 777 | "notification-url": "https://packagist.org/downloads/", 778 | "license": [ 779 | "MIT" 780 | ], 781 | "authors": [ 782 | { 783 | "name": "Fabien Potencier", 784 | "email": "fabien@symfony.com" 785 | }, 786 | { 787 | "name": "Symfony Community", 788 | "homepage": "https://symfony.com/contributors" 789 | } 790 | ], 791 | "description": "Symfony Console Component", 792 | "homepage": "https://symfony.com", 793 | "keywords": [ 794 | "cli", 795 | "command line", 796 | "console", 797 | "terminal" 798 | ], 799 | "funding": [ 800 | { 801 | "url": "https://symfony.com/sponsor", 802 | "type": "custom" 803 | }, 804 | { 805 | "url": "https://github.com/fabpot", 806 | "type": "github" 807 | }, 808 | { 809 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 810 | "type": "tidelift" 811 | } 812 | ], 813 | "time": "2020-11-28T11:24:18+00:00" 814 | }, 815 | { 816 | "name": "symfony/dependency-injection", 817 | "version": "v5.2.0", 818 | "source": { 819 | "type": "git", 820 | "url": "https://github.com/symfony/dependency-injection.git", 821 | "reference": "98cec9b9f410a4832e239949a41d47182862c3a4" 822 | }, 823 | "dist": { 824 | "type": "zip", 825 | "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/98cec9b9f410a4832e239949a41d47182862c3a4", 826 | "reference": "98cec9b9f410a4832e239949a41d47182862c3a4", 827 | "shasum": "" 828 | }, 829 | "require": { 830 | "php": ">=7.2.5", 831 | "psr/container": "^1.0", 832 | "symfony/deprecation-contracts": "^2.1", 833 | "symfony/polyfill-php80": "^1.15", 834 | "symfony/service-contracts": "^1.1.6|^2" 835 | }, 836 | "conflict": { 837 | "symfony/config": "<5.1", 838 | "symfony/finder": "<4.4", 839 | "symfony/proxy-manager-bridge": "<4.4", 840 | "symfony/yaml": "<4.4" 841 | }, 842 | "provide": { 843 | "psr/container-implementation": "1.0", 844 | "symfony/service-implementation": "1.0" 845 | }, 846 | "require-dev": { 847 | "symfony/config": "^5.1", 848 | "symfony/expression-language": "^4.4|^5.0", 849 | "symfony/yaml": "^4.4|^5.0" 850 | }, 851 | "suggest": { 852 | "symfony/config": "", 853 | "symfony/expression-language": "For using expressions in service container configuration", 854 | "symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required", 855 | "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", 856 | "symfony/yaml": "" 857 | }, 858 | "type": "library", 859 | "autoload": { 860 | "psr-4": { 861 | "Symfony\\Component\\DependencyInjection\\": "" 862 | }, 863 | "exclude-from-classmap": [ 864 | "/Tests/" 865 | ] 866 | }, 867 | "notification-url": "https://packagist.org/downloads/", 868 | "license": [ 869 | "MIT" 870 | ], 871 | "authors": [ 872 | { 873 | "name": "Fabien Potencier", 874 | "email": "fabien@symfony.com" 875 | }, 876 | { 877 | "name": "Symfony Community", 878 | "homepage": "https://symfony.com/contributors" 879 | } 880 | ], 881 | "description": "Symfony DependencyInjection Component", 882 | "homepage": "https://symfony.com", 883 | "funding": [ 884 | { 885 | "url": "https://symfony.com/sponsor", 886 | "type": "custom" 887 | }, 888 | { 889 | "url": "https://github.com/fabpot", 890 | "type": "github" 891 | }, 892 | { 893 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 894 | "type": "tidelift" 895 | } 896 | ], 897 | "time": "2020-11-28T11:24:18+00:00" 898 | }, 899 | { 900 | "name": "symfony/deprecation-contracts", 901 | "version": "v2.2.0", 902 | "source": { 903 | "type": "git", 904 | "url": "https://github.com/symfony/deprecation-contracts.git", 905 | "reference": "5fa56b4074d1ae755beb55617ddafe6f5d78f665" 906 | }, 907 | "dist": { 908 | "type": "zip", 909 | "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5fa56b4074d1ae755beb55617ddafe6f5d78f665", 910 | "reference": "5fa56b4074d1ae755beb55617ddafe6f5d78f665", 911 | "shasum": "" 912 | }, 913 | "require": { 914 | "php": ">=7.1" 915 | }, 916 | "type": "library", 917 | "extra": { 918 | "branch-alias": { 919 | "dev-master": "2.2-dev" 920 | }, 921 | "thanks": { 922 | "name": "symfony/contracts", 923 | "url": "https://github.com/symfony/contracts" 924 | } 925 | }, 926 | "autoload": { 927 | "files": [ 928 | "function.php" 929 | ] 930 | }, 931 | "notification-url": "https://packagist.org/downloads/", 932 | "license": [ 933 | "MIT" 934 | ], 935 | "authors": [ 936 | { 937 | "name": "Nicolas Grekas", 938 | "email": "p@tchwork.com" 939 | }, 940 | { 941 | "name": "Symfony Community", 942 | "homepage": "https://symfony.com/contributors" 943 | } 944 | ], 945 | "description": "A generic function and convention to trigger deprecation notices", 946 | "homepage": "https://symfony.com", 947 | "funding": [ 948 | { 949 | "url": "https://symfony.com/sponsor", 950 | "type": "custom" 951 | }, 952 | { 953 | "url": "https://github.com/fabpot", 954 | "type": "github" 955 | }, 956 | { 957 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 958 | "type": "tidelift" 959 | } 960 | ], 961 | "time": "2020-09-07T11:33:47+00:00" 962 | }, 963 | { 964 | "name": "symfony/dotenv", 965 | "version": "v5.2.0", 966 | "source": { 967 | "type": "git", 968 | "url": "https://github.com/symfony/dotenv.git", 969 | "reference": "264ca18dd6e4ab3cfa525ee52cceff9540a1019e" 970 | }, 971 | "dist": { 972 | "type": "zip", 973 | "url": "https://api.github.com/repos/symfony/dotenv/zipball/264ca18dd6e4ab3cfa525ee52cceff9540a1019e", 974 | "reference": "264ca18dd6e4ab3cfa525ee52cceff9540a1019e", 975 | "shasum": "" 976 | }, 977 | "require": { 978 | "php": ">=7.2.5", 979 | "symfony/deprecation-contracts": "^2.1" 980 | }, 981 | "require-dev": { 982 | "symfony/process": "^4.4|^5.0" 983 | }, 984 | "type": "library", 985 | "autoload": { 986 | "psr-4": { 987 | "Symfony\\Component\\Dotenv\\": "" 988 | }, 989 | "exclude-from-classmap": [ 990 | "/Tests/" 991 | ] 992 | }, 993 | "notification-url": "https://packagist.org/downloads/", 994 | "license": [ 995 | "MIT" 996 | ], 997 | "authors": [ 998 | { 999 | "name": "Fabien Potencier", 1000 | "email": "fabien@symfony.com" 1001 | }, 1002 | { 1003 | "name": "Symfony Community", 1004 | "homepage": "https://symfony.com/contributors" 1005 | } 1006 | ], 1007 | "description": "Registers environment variables from a .env file", 1008 | "homepage": "https://symfony.com", 1009 | "keywords": [ 1010 | "dotenv", 1011 | "env", 1012 | "environment" 1013 | ], 1014 | "funding": [ 1015 | { 1016 | "url": "https://symfony.com/sponsor", 1017 | "type": "custom" 1018 | }, 1019 | { 1020 | "url": "https://github.com/fabpot", 1021 | "type": "github" 1022 | }, 1023 | { 1024 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1025 | "type": "tidelift" 1026 | } 1027 | ], 1028 | "time": "2020-11-18T09:42:36+00:00" 1029 | }, 1030 | { 1031 | "name": "symfony/error-handler", 1032 | "version": "v5.2.0", 1033 | "source": { 1034 | "type": "git", 1035 | "url": "https://github.com/symfony/error-handler.git", 1036 | "reference": "289008c5be039e39908d33ae0a8ac99be1210bba" 1037 | }, 1038 | "dist": { 1039 | "type": "zip", 1040 | "url": "https://api.github.com/repos/symfony/error-handler/zipball/289008c5be039e39908d33ae0a8ac99be1210bba", 1041 | "reference": "289008c5be039e39908d33ae0a8ac99be1210bba", 1042 | "shasum": "" 1043 | }, 1044 | "require": { 1045 | "php": ">=7.2.5", 1046 | "psr/log": "^1.0", 1047 | "symfony/polyfill-php80": "^1.15", 1048 | "symfony/var-dumper": "^4.4|^5.0" 1049 | }, 1050 | "require-dev": { 1051 | "symfony/deprecation-contracts": "^2.1", 1052 | "symfony/http-kernel": "^4.4|^5.0", 1053 | "symfony/serializer": "^4.4|^5.0" 1054 | }, 1055 | "type": "library", 1056 | "autoload": { 1057 | "psr-4": { 1058 | "Symfony\\Component\\ErrorHandler\\": "" 1059 | }, 1060 | "exclude-from-classmap": [ 1061 | "/Tests/" 1062 | ] 1063 | }, 1064 | "notification-url": "https://packagist.org/downloads/", 1065 | "license": [ 1066 | "MIT" 1067 | ], 1068 | "authors": [ 1069 | { 1070 | "name": "Fabien Potencier", 1071 | "email": "fabien@symfony.com" 1072 | }, 1073 | { 1074 | "name": "Symfony Community", 1075 | "homepage": "https://symfony.com/contributors" 1076 | } 1077 | ], 1078 | "description": "Symfony ErrorHandler Component", 1079 | "homepage": "https://symfony.com", 1080 | "funding": [ 1081 | { 1082 | "url": "https://symfony.com/sponsor", 1083 | "type": "custom" 1084 | }, 1085 | { 1086 | "url": "https://github.com/fabpot", 1087 | "type": "github" 1088 | }, 1089 | { 1090 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1091 | "type": "tidelift" 1092 | } 1093 | ], 1094 | "time": "2020-10-28T21:46:03+00:00" 1095 | }, 1096 | { 1097 | "name": "symfony/event-dispatcher", 1098 | "version": "v5.2.0", 1099 | "source": { 1100 | "type": "git", 1101 | "url": "https://github.com/symfony/event-dispatcher.git", 1102 | "reference": "aa13a09811e6d2ad43f8fb336bebdb7691d85d3c" 1103 | }, 1104 | "dist": { 1105 | "type": "zip", 1106 | "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/aa13a09811e6d2ad43f8fb336bebdb7691d85d3c", 1107 | "reference": "aa13a09811e6d2ad43f8fb336bebdb7691d85d3c", 1108 | "shasum": "" 1109 | }, 1110 | "require": { 1111 | "php": ">=7.2.5", 1112 | "symfony/deprecation-contracts": "^2.1", 1113 | "symfony/event-dispatcher-contracts": "^2", 1114 | "symfony/polyfill-php80": "^1.15" 1115 | }, 1116 | "conflict": { 1117 | "symfony/dependency-injection": "<4.4" 1118 | }, 1119 | "provide": { 1120 | "psr/event-dispatcher-implementation": "1.0", 1121 | "symfony/event-dispatcher-implementation": "2.0" 1122 | }, 1123 | "require-dev": { 1124 | "psr/log": "~1.0", 1125 | "symfony/config": "^4.4|^5.0", 1126 | "symfony/dependency-injection": "^4.4|^5.0", 1127 | "symfony/error-handler": "^4.4|^5.0", 1128 | "symfony/expression-language": "^4.4|^5.0", 1129 | "symfony/http-foundation": "^4.4|^5.0", 1130 | "symfony/service-contracts": "^1.1|^2", 1131 | "symfony/stopwatch": "^4.4|^5.0" 1132 | }, 1133 | "suggest": { 1134 | "symfony/dependency-injection": "", 1135 | "symfony/http-kernel": "" 1136 | }, 1137 | "type": "library", 1138 | "autoload": { 1139 | "psr-4": { 1140 | "Symfony\\Component\\EventDispatcher\\": "" 1141 | }, 1142 | "exclude-from-classmap": [ 1143 | "/Tests/" 1144 | ] 1145 | }, 1146 | "notification-url": "https://packagist.org/downloads/", 1147 | "license": [ 1148 | "MIT" 1149 | ], 1150 | "authors": [ 1151 | { 1152 | "name": "Fabien Potencier", 1153 | "email": "fabien@symfony.com" 1154 | }, 1155 | { 1156 | "name": "Symfony Community", 1157 | "homepage": "https://symfony.com/contributors" 1158 | } 1159 | ], 1160 | "description": "Symfony EventDispatcher Component", 1161 | "homepage": "https://symfony.com", 1162 | "funding": [ 1163 | { 1164 | "url": "https://symfony.com/sponsor", 1165 | "type": "custom" 1166 | }, 1167 | { 1168 | "url": "https://github.com/fabpot", 1169 | "type": "github" 1170 | }, 1171 | { 1172 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1173 | "type": "tidelift" 1174 | } 1175 | ], 1176 | "time": "2020-11-01T16:14:45+00:00" 1177 | }, 1178 | { 1179 | "name": "symfony/event-dispatcher-contracts", 1180 | "version": "v2.2.0", 1181 | "source": { 1182 | "type": "git", 1183 | "url": "https://github.com/symfony/event-dispatcher-contracts.git", 1184 | "reference": "0ba7d54483095a198fa51781bc608d17e84dffa2" 1185 | }, 1186 | "dist": { 1187 | "type": "zip", 1188 | "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/0ba7d54483095a198fa51781bc608d17e84dffa2", 1189 | "reference": "0ba7d54483095a198fa51781bc608d17e84dffa2", 1190 | "shasum": "" 1191 | }, 1192 | "require": { 1193 | "php": ">=7.2.5", 1194 | "psr/event-dispatcher": "^1" 1195 | }, 1196 | "suggest": { 1197 | "symfony/event-dispatcher-implementation": "" 1198 | }, 1199 | "type": "library", 1200 | "extra": { 1201 | "branch-alias": { 1202 | "dev-master": "2.2-dev" 1203 | }, 1204 | "thanks": { 1205 | "name": "symfony/contracts", 1206 | "url": "https://github.com/symfony/contracts" 1207 | } 1208 | }, 1209 | "autoload": { 1210 | "psr-4": { 1211 | "Symfony\\Contracts\\EventDispatcher\\": "" 1212 | } 1213 | }, 1214 | "notification-url": "https://packagist.org/downloads/", 1215 | "license": [ 1216 | "MIT" 1217 | ], 1218 | "authors": [ 1219 | { 1220 | "name": "Nicolas Grekas", 1221 | "email": "p@tchwork.com" 1222 | }, 1223 | { 1224 | "name": "Symfony Community", 1225 | "homepage": "https://symfony.com/contributors" 1226 | } 1227 | ], 1228 | "description": "Generic abstractions related to dispatching event", 1229 | "homepage": "https://symfony.com", 1230 | "keywords": [ 1231 | "abstractions", 1232 | "contracts", 1233 | "decoupling", 1234 | "interfaces", 1235 | "interoperability", 1236 | "standards" 1237 | ], 1238 | "funding": [ 1239 | { 1240 | "url": "https://symfony.com/sponsor", 1241 | "type": "custom" 1242 | }, 1243 | { 1244 | "url": "https://github.com/fabpot", 1245 | "type": "github" 1246 | }, 1247 | { 1248 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1249 | "type": "tidelift" 1250 | } 1251 | ], 1252 | "time": "2020-09-07T11:33:47+00:00" 1253 | }, 1254 | { 1255 | "name": "symfony/filesystem", 1256 | "version": "v5.2.0", 1257 | "source": { 1258 | "type": "git", 1259 | "url": "https://github.com/symfony/filesystem.git", 1260 | "reference": "bb92ba7f38b037e531908590a858a04d85c0e238" 1261 | }, 1262 | "dist": { 1263 | "type": "zip", 1264 | "url": "https://api.github.com/repos/symfony/filesystem/zipball/bb92ba7f38b037e531908590a858a04d85c0e238", 1265 | "reference": "bb92ba7f38b037e531908590a858a04d85c0e238", 1266 | "shasum": "" 1267 | }, 1268 | "require": { 1269 | "php": ">=7.2.5", 1270 | "symfony/polyfill-ctype": "~1.8" 1271 | }, 1272 | "type": "library", 1273 | "autoload": { 1274 | "psr-4": { 1275 | "Symfony\\Component\\Filesystem\\": "" 1276 | }, 1277 | "exclude-from-classmap": [ 1278 | "/Tests/" 1279 | ] 1280 | }, 1281 | "notification-url": "https://packagist.org/downloads/", 1282 | "license": [ 1283 | "MIT" 1284 | ], 1285 | "authors": [ 1286 | { 1287 | "name": "Fabien Potencier", 1288 | "email": "fabien@symfony.com" 1289 | }, 1290 | { 1291 | "name": "Symfony Community", 1292 | "homepage": "https://symfony.com/contributors" 1293 | } 1294 | ], 1295 | "description": "Symfony Filesystem Component", 1296 | "homepage": "https://symfony.com", 1297 | "funding": [ 1298 | { 1299 | "url": "https://symfony.com/sponsor", 1300 | "type": "custom" 1301 | }, 1302 | { 1303 | "url": "https://github.com/fabpot", 1304 | "type": "github" 1305 | }, 1306 | { 1307 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1308 | "type": "tidelift" 1309 | } 1310 | ], 1311 | "time": "2020-11-12T09:58:18+00:00" 1312 | }, 1313 | { 1314 | "name": "symfony/finder", 1315 | "version": "v5.2.0", 1316 | "source": { 1317 | "type": "git", 1318 | "url": "https://github.com/symfony/finder.git", 1319 | "reference": "fd8305521692f27eae3263895d1ef1571c71a78d" 1320 | }, 1321 | "dist": { 1322 | "type": "zip", 1323 | "url": "https://api.github.com/repos/symfony/finder/zipball/fd8305521692f27eae3263895d1ef1571c71a78d", 1324 | "reference": "fd8305521692f27eae3263895d1ef1571c71a78d", 1325 | "shasum": "" 1326 | }, 1327 | "require": { 1328 | "php": ">=7.2.5" 1329 | }, 1330 | "type": "library", 1331 | "autoload": { 1332 | "psr-4": { 1333 | "Symfony\\Component\\Finder\\": "" 1334 | }, 1335 | "exclude-from-classmap": [ 1336 | "/Tests/" 1337 | ] 1338 | }, 1339 | "notification-url": "https://packagist.org/downloads/", 1340 | "license": [ 1341 | "MIT" 1342 | ], 1343 | "authors": [ 1344 | { 1345 | "name": "Fabien Potencier", 1346 | "email": "fabien@symfony.com" 1347 | }, 1348 | { 1349 | "name": "Symfony Community", 1350 | "homepage": "https://symfony.com/contributors" 1351 | } 1352 | ], 1353 | "description": "Symfony Finder Component", 1354 | "homepage": "https://symfony.com", 1355 | "funding": [ 1356 | { 1357 | "url": "https://symfony.com/sponsor", 1358 | "type": "custom" 1359 | }, 1360 | { 1361 | "url": "https://github.com/fabpot", 1362 | "type": "github" 1363 | }, 1364 | { 1365 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1366 | "type": "tidelift" 1367 | } 1368 | ], 1369 | "time": "2020-11-18T09:42:36+00:00" 1370 | }, 1371 | { 1372 | "name": "symfony/flex", 1373 | "version": "v1.11.0", 1374 | "source": { 1375 | "type": "git", 1376 | "url": "https://github.com/symfony/flex.git", 1377 | "reference": "ceb2b4e612bd0b4bb36a4d7fb2e800c861652f48" 1378 | }, 1379 | "dist": { 1380 | "type": "zip", 1381 | "url": "https://api.github.com/repos/symfony/flex/zipball/ceb2b4e612bd0b4bb36a4d7fb2e800c861652f48", 1382 | "reference": "ceb2b4e612bd0b4bb36a4d7fb2e800c861652f48", 1383 | "shasum": "" 1384 | }, 1385 | "require": { 1386 | "composer-plugin-api": "^1.0|^2.0", 1387 | "php": ">=7.1" 1388 | }, 1389 | "require-dev": { 1390 | "composer/composer": "^1.0.2|^2.0", 1391 | "symfony/dotenv": "^4.4|^5.0", 1392 | "symfony/filesystem": "^4.4|^5.0", 1393 | "symfony/phpunit-bridge": "^4.4|^5.0", 1394 | "symfony/process": "^3.4|^4.4|^5.0" 1395 | }, 1396 | "type": "composer-plugin", 1397 | "extra": { 1398 | "branch-alias": { 1399 | "dev-main": "1.9-dev" 1400 | }, 1401 | "class": "Symfony\\Flex\\Flex" 1402 | }, 1403 | "autoload": { 1404 | "psr-4": { 1405 | "Symfony\\Flex\\": "src" 1406 | } 1407 | }, 1408 | "notification-url": "https://packagist.org/downloads/", 1409 | "license": [ 1410 | "MIT" 1411 | ], 1412 | "authors": [ 1413 | { 1414 | "name": "Fabien Potencier", 1415 | "email": "fabien.potencier@gmail.com" 1416 | } 1417 | ], 1418 | "description": "Composer plugin for Symfony", 1419 | "funding": [ 1420 | { 1421 | "url": "https://symfony.com/sponsor", 1422 | "type": "custom" 1423 | }, 1424 | { 1425 | "url": "https://github.com/fabpot", 1426 | "type": "github" 1427 | }, 1428 | { 1429 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1430 | "type": "tidelift" 1431 | } 1432 | ], 1433 | "time": "2020-12-03T10:57:35+00:00" 1434 | }, 1435 | { 1436 | "name": "symfony/framework-bundle", 1437 | "version": "v5.2.0", 1438 | "source": { 1439 | "type": "git", 1440 | "url": "https://github.com/symfony/framework-bundle.git", 1441 | "reference": "c5eedac1a2a07419d1d35f81a6b63cfccd91ea1d" 1442 | }, 1443 | "dist": { 1444 | "type": "zip", 1445 | "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/c5eedac1a2a07419d1d35f81a6b63cfccd91ea1d", 1446 | "reference": "c5eedac1a2a07419d1d35f81a6b63cfccd91ea1d", 1447 | "shasum": "" 1448 | }, 1449 | "require": { 1450 | "ext-xml": "*", 1451 | "php": ">=7.2.5", 1452 | "symfony/cache": "^5.2", 1453 | "symfony/config": "^5.0", 1454 | "symfony/dependency-injection": "^5.2", 1455 | "symfony/error-handler": "^4.4.1|^5.0.1", 1456 | "symfony/event-dispatcher": "^5.1", 1457 | "symfony/filesystem": "^4.4|^5.0", 1458 | "symfony/finder": "^4.4|^5.0", 1459 | "symfony/http-foundation": "^5.2", 1460 | "symfony/http-kernel": "^5.2", 1461 | "symfony/polyfill-mbstring": "~1.0", 1462 | "symfony/polyfill-php80": "^1.15", 1463 | "symfony/routing": "^5.2" 1464 | }, 1465 | "conflict": { 1466 | "doctrine/persistence": "<1.3", 1467 | "phpdocumentor/reflection-docblock": "<3.0", 1468 | "phpdocumentor/type-resolver": "<0.2.1", 1469 | "phpunit/phpunit": "<5.4.3", 1470 | "symfony/asset": "<5.1", 1471 | "symfony/browser-kit": "<4.4", 1472 | "symfony/console": "<5.2", 1473 | "symfony/dom-crawler": "<4.4", 1474 | "symfony/dotenv": "<5.1", 1475 | "symfony/form": "<5.2", 1476 | "symfony/http-client": "<4.4", 1477 | "symfony/lock": "<4.4", 1478 | "symfony/mailer": "<5.2", 1479 | "symfony/messenger": "<4.4", 1480 | "symfony/mime": "<4.4", 1481 | "symfony/property-access": "<5.2", 1482 | "symfony/property-info": "<4.4", 1483 | "symfony/serializer": "<5.2", 1484 | "symfony/stopwatch": "<4.4", 1485 | "symfony/translation": "<5.0", 1486 | "symfony/twig-bridge": "<4.4", 1487 | "symfony/twig-bundle": "<4.4", 1488 | "symfony/validator": "<5.2", 1489 | "symfony/web-profiler-bundle": "<4.4", 1490 | "symfony/workflow": "<5.2" 1491 | }, 1492 | "require-dev": { 1493 | "doctrine/annotations": "~1.7", 1494 | "doctrine/cache": "~1.0", 1495 | "paragonie/sodium_compat": "^1.8", 1496 | "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", 1497 | "symfony/asset": "^5.1", 1498 | "symfony/browser-kit": "^4.4|^5.0", 1499 | "symfony/console": "^5.2", 1500 | "symfony/css-selector": "^4.4|^5.0", 1501 | "symfony/dom-crawler": "^4.4|^5.0", 1502 | "symfony/dotenv": "^5.1", 1503 | "symfony/expression-language": "^4.4|^5.0", 1504 | "symfony/form": "^5.2", 1505 | "symfony/http-client": "^4.4|^5.0", 1506 | "symfony/lock": "^4.4|^5.0", 1507 | "symfony/mailer": "^5.2", 1508 | "symfony/messenger": "^5.2", 1509 | "symfony/mime": "^4.4|^5.0", 1510 | "symfony/polyfill-intl-icu": "~1.0", 1511 | "symfony/process": "^4.4|^5.0", 1512 | "symfony/property-info": "^4.4|^5.0", 1513 | "symfony/security-bundle": "^5.1", 1514 | "symfony/security-csrf": "^4.4|^5.0", 1515 | "symfony/security-http": "^4.4|^5.0", 1516 | "symfony/serializer": "^5.2", 1517 | "symfony/stopwatch": "^4.4|^5.0", 1518 | "symfony/string": "^5.0", 1519 | "symfony/translation": "^5.0", 1520 | "symfony/twig-bundle": "^4.4|^5.0", 1521 | "symfony/validator": "^5.2", 1522 | "symfony/web-link": "^4.4|^5.0", 1523 | "symfony/workflow": "^5.2", 1524 | "symfony/yaml": "^4.4|^5.0", 1525 | "twig/twig": "^2.10|^3.0" 1526 | }, 1527 | "suggest": { 1528 | "ext-apcu": "For best performance of the system caches", 1529 | "symfony/console": "For using the console commands", 1530 | "symfony/form": "For using forms", 1531 | "symfony/property-info": "For using the property_info service", 1532 | "symfony/serializer": "For using the serializer service", 1533 | "symfony/validator": "For using validation", 1534 | "symfony/web-link": "For using web links, features such as preloading, prefetching or prerendering", 1535 | "symfony/yaml": "For using the debug:config and lint:yaml commands" 1536 | }, 1537 | "type": "symfony-bundle", 1538 | "autoload": { 1539 | "psr-4": { 1540 | "Symfony\\Bundle\\FrameworkBundle\\": "" 1541 | }, 1542 | "exclude-from-classmap": [ 1543 | "/Tests/" 1544 | ] 1545 | }, 1546 | "notification-url": "https://packagist.org/downloads/", 1547 | "license": [ 1548 | "MIT" 1549 | ], 1550 | "authors": [ 1551 | { 1552 | "name": "Fabien Potencier", 1553 | "email": "fabien@symfony.com" 1554 | }, 1555 | { 1556 | "name": "Symfony Community", 1557 | "homepage": "https://symfony.com/contributors" 1558 | } 1559 | ], 1560 | "description": "Symfony FrameworkBundle", 1561 | "homepage": "https://symfony.com", 1562 | "funding": [ 1563 | { 1564 | "url": "https://symfony.com/sponsor", 1565 | "type": "custom" 1566 | }, 1567 | { 1568 | "url": "https://github.com/fabpot", 1569 | "type": "github" 1570 | }, 1571 | { 1572 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1573 | "type": "tidelift" 1574 | } 1575 | ], 1576 | "time": "2020-11-28T11:24:18+00:00" 1577 | }, 1578 | { 1579 | "name": "symfony/http-client-contracts", 1580 | "version": "v2.3.1", 1581 | "source": { 1582 | "type": "git", 1583 | "url": "https://github.com/symfony/http-client-contracts.git", 1584 | "reference": "41db680a15018f9c1d4b23516059633ce280ca33" 1585 | }, 1586 | "dist": { 1587 | "type": "zip", 1588 | "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/41db680a15018f9c1d4b23516059633ce280ca33", 1589 | "reference": "41db680a15018f9c1d4b23516059633ce280ca33", 1590 | "shasum": "" 1591 | }, 1592 | "require": { 1593 | "php": ">=7.2.5" 1594 | }, 1595 | "suggest": { 1596 | "symfony/http-client-implementation": "" 1597 | }, 1598 | "type": "library", 1599 | "extra": { 1600 | "branch-version": "2.3", 1601 | "branch-alias": { 1602 | "dev-main": "2.3-dev" 1603 | }, 1604 | "thanks": { 1605 | "name": "symfony/contracts", 1606 | "url": "https://github.com/symfony/contracts" 1607 | } 1608 | }, 1609 | "autoload": { 1610 | "psr-4": { 1611 | "Symfony\\Contracts\\HttpClient\\": "" 1612 | } 1613 | }, 1614 | "notification-url": "https://packagist.org/downloads/", 1615 | "license": [ 1616 | "MIT" 1617 | ], 1618 | "authors": [ 1619 | { 1620 | "name": "Nicolas Grekas", 1621 | "email": "p@tchwork.com" 1622 | }, 1623 | { 1624 | "name": "Symfony Community", 1625 | "homepage": "https://symfony.com/contributors" 1626 | } 1627 | ], 1628 | "description": "Generic abstractions related to HTTP clients", 1629 | "homepage": "https://symfony.com", 1630 | "keywords": [ 1631 | "abstractions", 1632 | "contracts", 1633 | "decoupling", 1634 | "interfaces", 1635 | "interoperability", 1636 | "standards" 1637 | ], 1638 | "funding": [ 1639 | { 1640 | "url": "https://symfony.com/sponsor", 1641 | "type": "custom" 1642 | }, 1643 | { 1644 | "url": "https://github.com/fabpot", 1645 | "type": "github" 1646 | }, 1647 | { 1648 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1649 | "type": "tidelift" 1650 | } 1651 | ], 1652 | "time": "2020-10-14T17:08:19+00:00" 1653 | }, 1654 | { 1655 | "name": "symfony/http-foundation", 1656 | "version": "v5.2.0", 1657 | "source": { 1658 | "type": "git", 1659 | "url": "https://github.com/symfony/http-foundation.git", 1660 | "reference": "e4576271ee99123aa59a40564c7b5405f0ebd1e6" 1661 | }, 1662 | "dist": { 1663 | "type": "zip", 1664 | "url": "https://api.github.com/repos/symfony/http-foundation/zipball/e4576271ee99123aa59a40564c7b5405f0ebd1e6", 1665 | "reference": "e4576271ee99123aa59a40564c7b5405f0ebd1e6", 1666 | "shasum": "" 1667 | }, 1668 | "require": { 1669 | "php": ">=7.2.5", 1670 | "symfony/deprecation-contracts": "^2.1", 1671 | "symfony/polyfill-mbstring": "~1.1", 1672 | "symfony/polyfill-php80": "^1.15" 1673 | }, 1674 | "require-dev": { 1675 | "predis/predis": "~1.0", 1676 | "symfony/cache": "^4.4|^5.0", 1677 | "symfony/expression-language": "^4.4|^5.0", 1678 | "symfony/mime": "^4.4|^5.0" 1679 | }, 1680 | "suggest": { 1681 | "symfony/mime": "To use the file extension guesser" 1682 | }, 1683 | "type": "library", 1684 | "autoload": { 1685 | "psr-4": { 1686 | "Symfony\\Component\\HttpFoundation\\": "" 1687 | }, 1688 | "exclude-from-classmap": [ 1689 | "/Tests/" 1690 | ] 1691 | }, 1692 | "notification-url": "https://packagist.org/downloads/", 1693 | "license": [ 1694 | "MIT" 1695 | ], 1696 | "authors": [ 1697 | { 1698 | "name": "Fabien Potencier", 1699 | "email": "fabien@symfony.com" 1700 | }, 1701 | { 1702 | "name": "Symfony Community", 1703 | "homepage": "https://symfony.com/contributors" 1704 | } 1705 | ], 1706 | "description": "Symfony HttpFoundation Component", 1707 | "homepage": "https://symfony.com", 1708 | "funding": [ 1709 | { 1710 | "url": "https://symfony.com/sponsor", 1711 | "type": "custom" 1712 | }, 1713 | { 1714 | "url": "https://github.com/fabpot", 1715 | "type": "github" 1716 | }, 1717 | { 1718 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1719 | "type": "tidelift" 1720 | } 1721 | ], 1722 | "time": "2020-11-27T06:13:25+00:00" 1723 | }, 1724 | { 1725 | "name": "symfony/http-kernel", 1726 | "version": "v5.2.0", 1727 | "source": { 1728 | "type": "git", 1729 | "url": "https://github.com/symfony/http-kernel.git", 1730 | "reference": "38907e5ccb2d9d371191a946734afc83c7a03160" 1731 | }, 1732 | "dist": { 1733 | "type": "zip", 1734 | "url": "https://api.github.com/repos/symfony/http-kernel/zipball/38907e5ccb2d9d371191a946734afc83c7a03160", 1735 | "reference": "38907e5ccb2d9d371191a946734afc83c7a03160", 1736 | "shasum": "" 1737 | }, 1738 | "require": { 1739 | "php": ">=7.2.5", 1740 | "psr/log": "~1.0", 1741 | "symfony/deprecation-contracts": "^2.1", 1742 | "symfony/error-handler": "^4.4|^5.0", 1743 | "symfony/event-dispatcher": "^5.0", 1744 | "symfony/http-client-contracts": "^1.1|^2", 1745 | "symfony/http-foundation": "^4.4|^5.0", 1746 | "symfony/polyfill-ctype": "^1.8", 1747 | "symfony/polyfill-php73": "^1.9", 1748 | "symfony/polyfill-php80": "^1.15" 1749 | }, 1750 | "conflict": { 1751 | "symfony/browser-kit": "<4.4", 1752 | "symfony/cache": "<5.0", 1753 | "symfony/config": "<5.0", 1754 | "symfony/console": "<4.4", 1755 | "symfony/dependency-injection": "<5.1.8", 1756 | "symfony/doctrine-bridge": "<5.0", 1757 | "symfony/form": "<5.0", 1758 | "symfony/http-client": "<5.0", 1759 | "symfony/mailer": "<5.0", 1760 | "symfony/messenger": "<5.0", 1761 | "symfony/translation": "<5.0", 1762 | "symfony/twig-bridge": "<5.0", 1763 | "symfony/validator": "<5.0", 1764 | "twig/twig": "<2.4" 1765 | }, 1766 | "provide": { 1767 | "psr/log-implementation": "1.0" 1768 | }, 1769 | "require-dev": { 1770 | "psr/cache": "~1.0", 1771 | "symfony/browser-kit": "^4.4|^5.0", 1772 | "symfony/config": "^5.0", 1773 | "symfony/console": "^4.4|^5.0", 1774 | "symfony/css-selector": "^4.4|^5.0", 1775 | "symfony/dependency-injection": "^5.1.8", 1776 | "symfony/dom-crawler": "^4.4|^5.0", 1777 | "symfony/expression-language": "^4.4|^5.0", 1778 | "symfony/finder": "^4.4|^5.0", 1779 | "symfony/process": "^4.4|^5.0", 1780 | "symfony/routing": "^4.4|^5.0", 1781 | "symfony/stopwatch": "^4.4|^5.0", 1782 | "symfony/translation": "^4.4|^5.0", 1783 | "symfony/translation-contracts": "^1.1|^2", 1784 | "twig/twig": "^2.4|^3.0" 1785 | }, 1786 | "suggest": { 1787 | "symfony/browser-kit": "", 1788 | "symfony/config": "", 1789 | "symfony/console": "", 1790 | "symfony/dependency-injection": "" 1791 | }, 1792 | "type": "library", 1793 | "autoload": { 1794 | "psr-4": { 1795 | "Symfony\\Component\\HttpKernel\\": "" 1796 | }, 1797 | "exclude-from-classmap": [ 1798 | "/Tests/" 1799 | ] 1800 | }, 1801 | "notification-url": "https://packagist.org/downloads/", 1802 | "license": [ 1803 | "MIT" 1804 | ], 1805 | "authors": [ 1806 | { 1807 | "name": "Fabien Potencier", 1808 | "email": "fabien@symfony.com" 1809 | }, 1810 | { 1811 | "name": "Symfony Community", 1812 | "homepage": "https://symfony.com/contributors" 1813 | } 1814 | ], 1815 | "description": "Symfony HttpKernel Component", 1816 | "homepage": "https://symfony.com", 1817 | "funding": [ 1818 | { 1819 | "url": "https://symfony.com/sponsor", 1820 | "type": "custom" 1821 | }, 1822 | { 1823 | "url": "https://github.com/fabpot", 1824 | "type": "github" 1825 | }, 1826 | { 1827 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1828 | "type": "tidelift" 1829 | } 1830 | ], 1831 | "time": "2020-11-30T05:54:18+00:00" 1832 | }, 1833 | { 1834 | "name": "symfony/polyfill-intl-grapheme", 1835 | "version": "v1.20.0", 1836 | "source": { 1837 | "type": "git", 1838 | "url": "https://github.com/symfony/polyfill-intl-grapheme.git", 1839 | "reference": "c7cf3f858ec7d70b89559d6e6eb1f7c2517d479c" 1840 | }, 1841 | "dist": { 1842 | "type": "zip", 1843 | "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/c7cf3f858ec7d70b89559d6e6eb1f7c2517d479c", 1844 | "reference": "c7cf3f858ec7d70b89559d6e6eb1f7c2517d479c", 1845 | "shasum": "" 1846 | }, 1847 | "require": { 1848 | "php": ">=7.1" 1849 | }, 1850 | "suggest": { 1851 | "ext-intl": "For best performance" 1852 | }, 1853 | "type": "library", 1854 | "extra": { 1855 | "branch-alias": { 1856 | "dev-main": "1.20-dev" 1857 | }, 1858 | "thanks": { 1859 | "name": "symfony/polyfill", 1860 | "url": "https://github.com/symfony/polyfill" 1861 | } 1862 | }, 1863 | "autoload": { 1864 | "psr-4": { 1865 | "Symfony\\Polyfill\\Intl\\Grapheme\\": "" 1866 | }, 1867 | "files": [ 1868 | "bootstrap.php" 1869 | ] 1870 | }, 1871 | "notification-url": "https://packagist.org/downloads/", 1872 | "license": [ 1873 | "MIT" 1874 | ], 1875 | "authors": [ 1876 | { 1877 | "name": "Nicolas Grekas", 1878 | "email": "p@tchwork.com" 1879 | }, 1880 | { 1881 | "name": "Symfony Community", 1882 | "homepage": "https://symfony.com/contributors" 1883 | } 1884 | ], 1885 | "description": "Symfony polyfill for intl's grapheme_* functions", 1886 | "homepage": "https://symfony.com", 1887 | "keywords": [ 1888 | "compatibility", 1889 | "grapheme", 1890 | "intl", 1891 | "polyfill", 1892 | "portable", 1893 | "shim" 1894 | ], 1895 | "funding": [ 1896 | { 1897 | "url": "https://symfony.com/sponsor", 1898 | "type": "custom" 1899 | }, 1900 | { 1901 | "url": "https://github.com/fabpot", 1902 | "type": "github" 1903 | }, 1904 | { 1905 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1906 | "type": "tidelift" 1907 | } 1908 | ], 1909 | "time": "2020-10-23T14:02:19+00:00" 1910 | }, 1911 | { 1912 | "name": "symfony/polyfill-intl-normalizer", 1913 | "version": "v1.20.0", 1914 | "source": { 1915 | "type": "git", 1916 | "url": "https://github.com/symfony/polyfill-intl-normalizer.git", 1917 | "reference": "727d1096295d807c309fb01a851577302394c897" 1918 | }, 1919 | "dist": { 1920 | "type": "zip", 1921 | "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/727d1096295d807c309fb01a851577302394c897", 1922 | "reference": "727d1096295d807c309fb01a851577302394c897", 1923 | "shasum": "" 1924 | }, 1925 | "require": { 1926 | "php": ">=7.1" 1927 | }, 1928 | "suggest": { 1929 | "ext-intl": "For best performance" 1930 | }, 1931 | "type": "library", 1932 | "extra": { 1933 | "branch-alias": { 1934 | "dev-main": "1.20-dev" 1935 | }, 1936 | "thanks": { 1937 | "name": "symfony/polyfill", 1938 | "url": "https://github.com/symfony/polyfill" 1939 | } 1940 | }, 1941 | "autoload": { 1942 | "psr-4": { 1943 | "Symfony\\Polyfill\\Intl\\Normalizer\\": "" 1944 | }, 1945 | "files": [ 1946 | "bootstrap.php" 1947 | ], 1948 | "classmap": [ 1949 | "Resources/stubs" 1950 | ] 1951 | }, 1952 | "notification-url": "https://packagist.org/downloads/", 1953 | "license": [ 1954 | "MIT" 1955 | ], 1956 | "authors": [ 1957 | { 1958 | "name": "Nicolas Grekas", 1959 | "email": "p@tchwork.com" 1960 | }, 1961 | { 1962 | "name": "Symfony Community", 1963 | "homepage": "https://symfony.com/contributors" 1964 | } 1965 | ], 1966 | "description": "Symfony polyfill for intl's Normalizer class and related functions", 1967 | "homepage": "https://symfony.com", 1968 | "keywords": [ 1969 | "compatibility", 1970 | "intl", 1971 | "normalizer", 1972 | "polyfill", 1973 | "portable", 1974 | "shim" 1975 | ], 1976 | "funding": [ 1977 | { 1978 | "url": "https://symfony.com/sponsor", 1979 | "type": "custom" 1980 | }, 1981 | { 1982 | "url": "https://github.com/fabpot", 1983 | "type": "github" 1984 | }, 1985 | { 1986 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1987 | "type": "tidelift" 1988 | } 1989 | ], 1990 | "time": "2020-10-23T14:02:19+00:00" 1991 | }, 1992 | { 1993 | "name": "symfony/polyfill-mbstring", 1994 | "version": "v1.20.0", 1995 | "source": { 1996 | "type": "git", 1997 | "url": "https://github.com/symfony/polyfill-mbstring.git", 1998 | "reference": "39d483bdf39be819deabf04ec872eb0b2410b531" 1999 | }, 2000 | "dist": { 2001 | "type": "zip", 2002 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/39d483bdf39be819deabf04ec872eb0b2410b531", 2003 | "reference": "39d483bdf39be819deabf04ec872eb0b2410b531", 2004 | "shasum": "" 2005 | }, 2006 | "require": { 2007 | "php": ">=7.1" 2008 | }, 2009 | "suggest": { 2010 | "ext-mbstring": "For best performance" 2011 | }, 2012 | "type": "library", 2013 | "extra": { 2014 | "branch-alias": { 2015 | "dev-main": "1.20-dev" 2016 | }, 2017 | "thanks": { 2018 | "name": "symfony/polyfill", 2019 | "url": "https://github.com/symfony/polyfill" 2020 | } 2021 | }, 2022 | "autoload": { 2023 | "psr-4": { 2024 | "Symfony\\Polyfill\\Mbstring\\": "" 2025 | }, 2026 | "files": [ 2027 | "bootstrap.php" 2028 | ] 2029 | }, 2030 | "notification-url": "https://packagist.org/downloads/", 2031 | "license": [ 2032 | "MIT" 2033 | ], 2034 | "authors": [ 2035 | { 2036 | "name": "Nicolas Grekas", 2037 | "email": "p@tchwork.com" 2038 | }, 2039 | { 2040 | "name": "Symfony Community", 2041 | "homepage": "https://symfony.com/contributors" 2042 | } 2043 | ], 2044 | "description": "Symfony polyfill for the Mbstring extension", 2045 | "homepage": "https://symfony.com", 2046 | "keywords": [ 2047 | "compatibility", 2048 | "mbstring", 2049 | "polyfill", 2050 | "portable", 2051 | "shim" 2052 | ], 2053 | "funding": [ 2054 | { 2055 | "url": "https://symfony.com/sponsor", 2056 | "type": "custom" 2057 | }, 2058 | { 2059 | "url": "https://github.com/fabpot", 2060 | "type": "github" 2061 | }, 2062 | { 2063 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2064 | "type": "tidelift" 2065 | } 2066 | ], 2067 | "time": "2020-10-23T14:02:19+00:00" 2068 | }, 2069 | { 2070 | "name": "symfony/polyfill-php73", 2071 | "version": "v1.20.0", 2072 | "source": { 2073 | "type": "git", 2074 | "url": "https://github.com/symfony/polyfill-php73.git", 2075 | "reference": "8ff431c517be11c78c48a39a66d37431e26a6bed" 2076 | }, 2077 | "dist": { 2078 | "type": "zip", 2079 | "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/8ff431c517be11c78c48a39a66d37431e26a6bed", 2080 | "reference": "8ff431c517be11c78c48a39a66d37431e26a6bed", 2081 | "shasum": "" 2082 | }, 2083 | "require": { 2084 | "php": ">=7.1" 2085 | }, 2086 | "type": "library", 2087 | "extra": { 2088 | "branch-alias": { 2089 | "dev-main": "1.20-dev" 2090 | }, 2091 | "thanks": { 2092 | "name": "symfony/polyfill", 2093 | "url": "https://github.com/symfony/polyfill" 2094 | } 2095 | }, 2096 | "autoload": { 2097 | "psr-4": { 2098 | "Symfony\\Polyfill\\Php73\\": "" 2099 | }, 2100 | "files": [ 2101 | "bootstrap.php" 2102 | ], 2103 | "classmap": [ 2104 | "Resources/stubs" 2105 | ] 2106 | }, 2107 | "notification-url": "https://packagist.org/downloads/", 2108 | "license": [ 2109 | "MIT" 2110 | ], 2111 | "authors": [ 2112 | { 2113 | "name": "Nicolas Grekas", 2114 | "email": "p@tchwork.com" 2115 | }, 2116 | { 2117 | "name": "Symfony Community", 2118 | "homepage": "https://symfony.com/contributors" 2119 | } 2120 | ], 2121 | "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", 2122 | "homepage": "https://symfony.com", 2123 | "keywords": [ 2124 | "compatibility", 2125 | "polyfill", 2126 | "portable", 2127 | "shim" 2128 | ], 2129 | "funding": [ 2130 | { 2131 | "url": "https://symfony.com/sponsor", 2132 | "type": "custom" 2133 | }, 2134 | { 2135 | "url": "https://github.com/fabpot", 2136 | "type": "github" 2137 | }, 2138 | { 2139 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2140 | "type": "tidelift" 2141 | } 2142 | ], 2143 | "time": "2020-10-23T14:02:19+00:00" 2144 | }, 2145 | { 2146 | "name": "symfony/polyfill-php80", 2147 | "version": "v1.20.0", 2148 | "source": { 2149 | "type": "git", 2150 | "url": "https://github.com/symfony/polyfill-php80.git", 2151 | "reference": "e70aa8b064c5b72d3df2abd5ab1e90464ad009de" 2152 | }, 2153 | "dist": { 2154 | "type": "zip", 2155 | "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/e70aa8b064c5b72d3df2abd5ab1e90464ad009de", 2156 | "reference": "e70aa8b064c5b72d3df2abd5ab1e90464ad009de", 2157 | "shasum": "" 2158 | }, 2159 | "require": { 2160 | "php": ">=7.1" 2161 | }, 2162 | "type": "library", 2163 | "extra": { 2164 | "branch-alias": { 2165 | "dev-main": "1.20-dev" 2166 | }, 2167 | "thanks": { 2168 | "name": "symfony/polyfill", 2169 | "url": "https://github.com/symfony/polyfill" 2170 | } 2171 | }, 2172 | "autoload": { 2173 | "psr-4": { 2174 | "Symfony\\Polyfill\\Php80\\": "" 2175 | }, 2176 | "files": [ 2177 | "bootstrap.php" 2178 | ], 2179 | "classmap": [ 2180 | "Resources/stubs" 2181 | ] 2182 | }, 2183 | "notification-url": "https://packagist.org/downloads/", 2184 | "license": [ 2185 | "MIT" 2186 | ], 2187 | "authors": [ 2188 | { 2189 | "name": "Ion Bazan", 2190 | "email": "ion.bazan@gmail.com" 2191 | }, 2192 | { 2193 | "name": "Nicolas Grekas", 2194 | "email": "p@tchwork.com" 2195 | }, 2196 | { 2197 | "name": "Symfony Community", 2198 | "homepage": "https://symfony.com/contributors" 2199 | } 2200 | ], 2201 | "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", 2202 | "homepage": "https://symfony.com", 2203 | "keywords": [ 2204 | "compatibility", 2205 | "polyfill", 2206 | "portable", 2207 | "shim" 2208 | ], 2209 | "funding": [ 2210 | { 2211 | "url": "https://symfony.com/sponsor", 2212 | "type": "custom" 2213 | }, 2214 | { 2215 | "url": "https://github.com/fabpot", 2216 | "type": "github" 2217 | }, 2218 | { 2219 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2220 | "type": "tidelift" 2221 | } 2222 | ], 2223 | "time": "2020-10-23T14:02:19+00:00" 2224 | }, 2225 | { 2226 | "name": "symfony/routing", 2227 | "version": "v5.2.0", 2228 | "source": { 2229 | "type": "git", 2230 | "url": "https://github.com/symfony/routing.git", 2231 | "reference": "130ac5175ad2fd417978baebd8062e2e6b2bc28b" 2232 | }, 2233 | "dist": { 2234 | "type": "zip", 2235 | "url": "https://api.github.com/repos/symfony/routing/zipball/130ac5175ad2fd417978baebd8062e2e6b2bc28b", 2236 | "reference": "130ac5175ad2fd417978baebd8062e2e6b2bc28b", 2237 | "shasum": "" 2238 | }, 2239 | "require": { 2240 | "php": ">=7.2.5", 2241 | "symfony/deprecation-contracts": "^2.1", 2242 | "symfony/polyfill-php80": "^1.15" 2243 | }, 2244 | "conflict": { 2245 | "symfony/config": "<5.0", 2246 | "symfony/dependency-injection": "<4.4", 2247 | "symfony/yaml": "<4.4" 2248 | }, 2249 | "require-dev": { 2250 | "doctrine/annotations": "^1.7", 2251 | "psr/log": "~1.0", 2252 | "symfony/config": "^5.0", 2253 | "symfony/dependency-injection": "^4.4|^5.0", 2254 | "symfony/expression-language": "^4.4|^5.0", 2255 | "symfony/http-foundation": "^4.4|^5.0", 2256 | "symfony/yaml": "^4.4|^5.0" 2257 | }, 2258 | "suggest": { 2259 | "doctrine/annotations": "For using the annotation loader", 2260 | "symfony/config": "For using the all-in-one router or any loader", 2261 | "symfony/expression-language": "For using expression matching", 2262 | "symfony/http-foundation": "For using a Symfony Request object", 2263 | "symfony/yaml": "For using the YAML loader" 2264 | }, 2265 | "type": "library", 2266 | "autoload": { 2267 | "psr-4": { 2268 | "Symfony\\Component\\Routing\\": "" 2269 | }, 2270 | "exclude-from-classmap": [ 2271 | "/Tests/" 2272 | ] 2273 | }, 2274 | "notification-url": "https://packagist.org/downloads/", 2275 | "license": [ 2276 | "MIT" 2277 | ], 2278 | "authors": [ 2279 | { 2280 | "name": "Fabien Potencier", 2281 | "email": "fabien@symfony.com" 2282 | }, 2283 | { 2284 | "name": "Symfony Community", 2285 | "homepage": "https://symfony.com/contributors" 2286 | } 2287 | ], 2288 | "description": "Symfony Routing Component", 2289 | "homepage": "https://symfony.com", 2290 | "keywords": [ 2291 | "router", 2292 | "routing", 2293 | "uri", 2294 | "url" 2295 | ], 2296 | "funding": [ 2297 | { 2298 | "url": "https://symfony.com/sponsor", 2299 | "type": "custom" 2300 | }, 2301 | { 2302 | "url": "https://github.com/fabpot", 2303 | "type": "github" 2304 | }, 2305 | { 2306 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2307 | "type": "tidelift" 2308 | } 2309 | ], 2310 | "time": "2020-11-27T00:39:34+00:00" 2311 | }, 2312 | { 2313 | "name": "symfony/serializer", 2314 | "version": "v5.2.0", 2315 | "source": { 2316 | "type": "git", 2317 | "url": "https://github.com/symfony/serializer.git", 2318 | "reference": "bfb225b1bf797f9d6a3b6a8501927cc72e92b549" 2319 | }, 2320 | "dist": { 2321 | "type": "zip", 2322 | "url": "https://api.github.com/repos/symfony/serializer/zipball/bfb225b1bf797f9d6a3b6a8501927cc72e92b549", 2323 | "reference": "bfb225b1bf797f9d6a3b6a8501927cc72e92b549", 2324 | "shasum": "" 2325 | }, 2326 | "require": { 2327 | "php": ">=7.2.5", 2328 | "symfony/polyfill-ctype": "~1.8", 2329 | "symfony/polyfill-php80": "^1.15" 2330 | }, 2331 | "conflict": { 2332 | "phpdocumentor/type-resolver": "<0.2.1", 2333 | "symfony/dependency-injection": "<4.4", 2334 | "symfony/property-access": "<4.4", 2335 | "symfony/property-info": "<4.4", 2336 | "symfony/yaml": "<4.4" 2337 | }, 2338 | "require-dev": { 2339 | "doctrine/annotations": "~1.0", 2340 | "doctrine/cache": "~1.0", 2341 | "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", 2342 | "symfony/cache": "^4.4|^5.0", 2343 | "symfony/config": "^4.4|^5.0", 2344 | "symfony/dependency-injection": "^4.4|^5.0", 2345 | "symfony/error-handler": "^4.4|^5.0", 2346 | "symfony/filesystem": "^4.4|^5.0", 2347 | "symfony/form": "^4.4|^5.0", 2348 | "symfony/http-foundation": "^4.4|^5.0", 2349 | "symfony/http-kernel": "^4.4|^5.0", 2350 | "symfony/mime": "^4.4|^5.0", 2351 | "symfony/property-access": "^4.4|^5.0", 2352 | "symfony/property-info": "^4.4|^5.0", 2353 | "symfony/uid": "^5.1", 2354 | "symfony/validator": "^4.4|^5.0", 2355 | "symfony/var-exporter": "^4.4|^5.0", 2356 | "symfony/yaml": "^4.4|^5.0" 2357 | }, 2358 | "suggest": { 2359 | "doctrine/annotations": "For using the annotation mapping. You will also need doctrine/cache.", 2360 | "doctrine/cache": "For using the default cached annotation reader and metadata cache.", 2361 | "psr/cache-implementation": "For using the metadata cache.", 2362 | "symfony/config": "For using the XML mapping loader.", 2363 | "symfony/mime": "For using a MIME type guesser within the DataUriNormalizer.", 2364 | "symfony/property-access": "For using the ObjectNormalizer.", 2365 | "symfony/property-info": "To deserialize relations.", 2366 | "symfony/var-exporter": "For using the metadata compiler.", 2367 | "symfony/yaml": "For using the default YAML mapping loader." 2368 | }, 2369 | "type": "library", 2370 | "autoload": { 2371 | "psr-4": { 2372 | "Symfony\\Component\\Serializer\\": "" 2373 | }, 2374 | "exclude-from-classmap": [ 2375 | "/Tests/" 2376 | ] 2377 | }, 2378 | "notification-url": "https://packagist.org/downloads/", 2379 | "license": [ 2380 | "MIT" 2381 | ], 2382 | "authors": [ 2383 | { 2384 | "name": "Fabien Potencier", 2385 | "email": "fabien@symfony.com" 2386 | }, 2387 | { 2388 | "name": "Symfony Community", 2389 | "homepage": "https://symfony.com/contributors" 2390 | } 2391 | ], 2392 | "description": "Symfony Serializer Component", 2393 | "homepage": "https://symfony.com", 2394 | "funding": [ 2395 | { 2396 | "url": "https://symfony.com/sponsor", 2397 | "type": "custom" 2398 | }, 2399 | { 2400 | "url": "https://github.com/fabpot", 2401 | "type": "github" 2402 | }, 2403 | { 2404 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2405 | "type": "tidelift" 2406 | } 2407 | ], 2408 | "time": "2020-11-27T10:27:27+00:00" 2409 | }, 2410 | { 2411 | "name": "symfony/service-contracts", 2412 | "version": "v2.2.0", 2413 | "source": { 2414 | "type": "git", 2415 | "url": "https://github.com/symfony/service-contracts.git", 2416 | "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1" 2417 | }, 2418 | "dist": { 2419 | "type": "zip", 2420 | "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d15da7ba4957ffb8f1747218be9e1a121fd298a1", 2421 | "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1", 2422 | "shasum": "" 2423 | }, 2424 | "require": { 2425 | "php": ">=7.2.5", 2426 | "psr/container": "^1.0" 2427 | }, 2428 | "suggest": { 2429 | "symfony/service-implementation": "" 2430 | }, 2431 | "type": "library", 2432 | "extra": { 2433 | "branch-alias": { 2434 | "dev-master": "2.2-dev" 2435 | }, 2436 | "thanks": { 2437 | "name": "symfony/contracts", 2438 | "url": "https://github.com/symfony/contracts" 2439 | } 2440 | }, 2441 | "autoload": { 2442 | "psr-4": { 2443 | "Symfony\\Contracts\\Service\\": "" 2444 | } 2445 | }, 2446 | "notification-url": "https://packagist.org/downloads/", 2447 | "license": [ 2448 | "MIT" 2449 | ], 2450 | "authors": [ 2451 | { 2452 | "name": "Nicolas Grekas", 2453 | "email": "p@tchwork.com" 2454 | }, 2455 | { 2456 | "name": "Symfony Community", 2457 | "homepage": "https://symfony.com/contributors" 2458 | } 2459 | ], 2460 | "description": "Generic abstractions related to writing services", 2461 | "homepage": "https://symfony.com", 2462 | "keywords": [ 2463 | "abstractions", 2464 | "contracts", 2465 | "decoupling", 2466 | "interfaces", 2467 | "interoperability", 2468 | "standards" 2469 | ], 2470 | "funding": [ 2471 | { 2472 | "url": "https://symfony.com/sponsor", 2473 | "type": "custom" 2474 | }, 2475 | { 2476 | "url": "https://github.com/fabpot", 2477 | "type": "github" 2478 | }, 2479 | { 2480 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2481 | "type": "tidelift" 2482 | } 2483 | ], 2484 | "time": "2020-09-07T11:33:47+00:00" 2485 | }, 2486 | { 2487 | "name": "symfony/string", 2488 | "version": "v5.2.0", 2489 | "source": { 2490 | "type": "git", 2491 | "url": "https://github.com/symfony/string.git", 2492 | "reference": "40e975edadd4e32cd16f3753b3bad65d9ac48242" 2493 | }, 2494 | "dist": { 2495 | "type": "zip", 2496 | "url": "https://api.github.com/repos/symfony/string/zipball/40e975edadd4e32cd16f3753b3bad65d9ac48242", 2497 | "reference": "40e975edadd4e32cd16f3753b3bad65d9ac48242", 2498 | "shasum": "" 2499 | }, 2500 | "require": { 2501 | "php": ">=7.2.5", 2502 | "symfony/polyfill-ctype": "~1.8", 2503 | "symfony/polyfill-intl-grapheme": "~1.0", 2504 | "symfony/polyfill-intl-normalizer": "~1.0", 2505 | "symfony/polyfill-mbstring": "~1.0", 2506 | "symfony/polyfill-php80": "~1.15" 2507 | }, 2508 | "require-dev": { 2509 | "symfony/error-handler": "^4.4|^5.0", 2510 | "symfony/http-client": "^4.4|^5.0", 2511 | "symfony/translation-contracts": "^1.1|^2", 2512 | "symfony/var-exporter": "^4.4|^5.0" 2513 | }, 2514 | "type": "library", 2515 | "autoload": { 2516 | "psr-4": { 2517 | "Symfony\\Component\\String\\": "" 2518 | }, 2519 | "files": [ 2520 | "Resources/functions.php" 2521 | ], 2522 | "exclude-from-classmap": [ 2523 | "/Tests/" 2524 | ] 2525 | }, 2526 | "notification-url": "https://packagist.org/downloads/", 2527 | "license": [ 2528 | "MIT" 2529 | ], 2530 | "authors": [ 2531 | { 2532 | "name": "Nicolas Grekas", 2533 | "email": "p@tchwork.com" 2534 | }, 2535 | { 2536 | "name": "Symfony Community", 2537 | "homepage": "https://symfony.com/contributors" 2538 | } 2539 | ], 2540 | "description": "Symfony String component", 2541 | "homepage": "https://symfony.com", 2542 | "keywords": [ 2543 | "grapheme", 2544 | "i18n", 2545 | "string", 2546 | "unicode", 2547 | "utf-8", 2548 | "utf8" 2549 | ], 2550 | "funding": [ 2551 | { 2552 | "url": "https://symfony.com/sponsor", 2553 | "type": "custom" 2554 | }, 2555 | { 2556 | "url": "https://github.com/fabpot", 2557 | "type": "github" 2558 | }, 2559 | { 2560 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2561 | "type": "tidelift" 2562 | } 2563 | ], 2564 | "time": "2020-10-24T12:08:07+00:00" 2565 | }, 2566 | { 2567 | "name": "symfony/translation-contracts", 2568 | "version": "v2.3.0", 2569 | "source": { 2570 | "type": "git", 2571 | "url": "https://github.com/symfony/translation-contracts.git", 2572 | "reference": "e2eaa60b558f26a4b0354e1bbb25636efaaad105" 2573 | }, 2574 | "dist": { 2575 | "type": "zip", 2576 | "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/e2eaa60b558f26a4b0354e1bbb25636efaaad105", 2577 | "reference": "e2eaa60b558f26a4b0354e1bbb25636efaaad105", 2578 | "shasum": "" 2579 | }, 2580 | "require": { 2581 | "php": ">=7.2.5" 2582 | }, 2583 | "suggest": { 2584 | "symfony/translation-implementation": "" 2585 | }, 2586 | "type": "library", 2587 | "extra": { 2588 | "branch-alias": { 2589 | "dev-master": "2.3-dev" 2590 | }, 2591 | "thanks": { 2592 | "name": "symfony/contracts", 2593 | "url": "https://github.com/symfony/contracts" 2594 | } 2595 | }, 2596 | "autoload": { 2597 | "psr-4": { 2598 | "Symfony\\Contracts\\Translation\\": "" 2599 | } 2600 | }, 2601 | "notification-url": "https://packagist.org/downloads/", 2602 | "license": [ 2603 | "MIT" 2604 | ], 2605 | "authors": [ 2606 | { 2607 | "name": "Nicolas Grekas", 2608 | "email": "p@tchwork.com" 2609 | }, 2610 | { 2611 | "name": "Symfony Community", 2612 | "homepage": "https://symfony.com/contributors" 2613 | } 2614 | ], 2615 | "description": "Generic abstractions related to translation", 2616 | "homepage": "https://symfony.com", 2617 | "keywords": [ 2618 | "abstractions", 2619 | "contracts", 2620 | "decoupling", 2621 | "interfaces", 2622 | "interoperability", 2623 | "standards" 2624 | ], 2625 | "funding": [ 2626 | { 2627 | "url": "https://symfony.com/sponsor", 2628 | "type": "custom" 2629 | }, 2630 | { 2631 | "url": "https://github.com/fabpot", 2632 | "type": "github" 2633 | }, 2634 | { 2635 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2636 | "type": "tidelift" 2637 | } 2638 | ], 2639 | "time": "2020-09-28T13:05:58+00:00" 2640 | }, 2641 | { 2642 | "name": "symfony/validator", 2643 | "version": "v5.2.0", 2644 | "source": { 2645 | "type": "git", 2646 | "url": "https://github.com/symfony/validator.git", 2647 | "reference": "7b2583e2c4cb82b23fcb37730981c868efefd2c0" 2648 | }, 2649 | "dist": { 2650 | "type": "zip", 2651 | "url": "https://api.github.com/repos/symfony/validator/zipball/7b2583e2c4cb82b23fcb37730981c868efefd2c0", 2652 | "reference": "7b2583e2c4cb82b23fcb37730981c868efefd2c0", 2653 | "shasum": "" 2654 | }, 2655 | "require": { 2656 | "php": ">=7.2.5", 2657 | "symfony/deprecation-contracts": "^2.1", 2658 | "symfony/polyfill-ctype": "~1.8", 2659 | "symfony/polyfill-mbstring": "~1.0", 2660 | "symfony/polyfill-php73": "~1.0", 2661 | "symfony/polyfill-php80": "^1.15", 2662 | "symfony/translation-contracts": "^1.1|^2" 2663 | }, 2664 | "conflict": { 2665 | "doctrine/lexer": "<1.0.2", 2666 | "phpunit/phpunit": "<5.4.3", 2667 | "symfony/dependency-injection": "<4.4", 2668 | "symfony/expression-language": "<5.1", 2669 | "symfony/http-kernel": "<4.4", 2670 | "symfony/intl": "<4.4", 2671 | "symfony/translation": "<4.4", 2672 | "symfony/yaml": "<4.4" 2673 | }, 2674 | "require-dev": { 2675 | "doctrine/annotations": "~1.7", 2676 | "doctrine/cache": "~1.0", 2677 | "egulias/email-validator": "^2.1.10", 2678 | "symfony/cache": "^4.4|^5.0", 2679 | "symfony/config": "^4.4|^5.0", 2680 | "symfony/console": "^4.4|^5.0", 2681 | "symfony/dependency-injection": "^4.4|^5.0", 2682 | "symfony/expression-language": "^5.1", 2683 | "symfony/finder": "^4.4|^5.0", 2684 | "symfony/http-client": "^4.4|^5.0", 2685 | "symfony/http-foundation": "^4.4|^5.0", 2686 | "symfony/http-kernel": "^4.4|^5.0", 2687 | "symfony/intl": "^4.4|^5.0", 2688 | "symfony/mime": "^4.4|^5.0", 2689 | "symfony/property-access": "^4.4|^5.0", 2690 | "symfony/property-info": "^4.4|^5.0", 2691 | "symfony/translation": "^4.4|^5.0", 2692 | "symfony/yaml": "^4.4|^5.0" 2693 | }, 2694 | "suggest": { 2695 | "doctrine/annotations": "For using the annotation mapping. You will also need doctrine/cache.", 2696 | "doctrine/cache": "For using the default cached annotation reader.", 2697 | "egulias/email-validator": "Strict (RFC compliant) email validation", 2698 | "psr/cache-implementation": "For using the mapping cache.", 2699 | "symfony/config": "", 2700 | "symfony/expression-language": "For using the Expression validator and the ExpressionLanguageSyntax constraints", 2701 | "symfony/http-foundation": "", 2702 | "symfony/intl": "", 2703 | "symfony/property-access": "For accessing properties within comparison constraints", 2704 | "symfony/property-info": "To automatically add NotNull and Type constraints", 2705 | "symfony/translation": "For translating validation errors.", 2706 | "symfony/yaml": "" 2707 | }, 2708 | "type": "library", 2709 | "autoload": { 2710 | "psr-4": { 2711 | "Symfony\\Component\\Validator\\": "" 2712 | }, 2713 | "exclude-from-classmap": [ 2714 | "/Tests/" 2715 | ] 2716 | }, 2717 | "notification-url": "https://packagist.org/downloads/", 2718 | "license": [ 2719 | "MIT" 2720 | ], 2721 | "authors": [ 2722 | { 2723 | "name": "Fabien Potencier", 2724 | "email": "fabien@symfony.com" 2725 | }, 2726 | { 2727 | "name": "Symfony Community", 2728 | "homepage": "https://symfony.com/contributors" 2729 | } 2730 | ], 2731 | "description": "Symfony Validator Component", 2732 | "homepage": "https://symfony.com", 2733 | "funding": [ 2734 | { 2735 | "url": "https://symfony.com/sponsor", 2736 | "type": "custom" 2737 | }, 2738 | { 2739 | "url": "https://github.com/fabpot", 2740 | "type": "github" 2741 | }, 2742 | { 2743 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2744 | "type": "tidelift" 2745 | } 2746 | ], 2747 | "time": "2020-11-28T11:24:18+00:00" 2748 | }, 2749 | { 2750 | "name": "symfony/var-dumper", 2751 | "version": "v5.2.0", 2752 | "source": { 2753 | "type": "git", 2754 | "url": "https://github.com/symfony/var-dumper.git", 2755 | "reference": "173a79c462b1c81e1fa26129f71e41333d846b26" 2756 | }, 2757 | "dist": { 2758 | "type": "zip", 2759 | "url": "https://api.github.com/repos/symfony/var-dumper/zipball/173a79c462b1c81e1fa26129f71e41333d846b26", 2760 | "reference": "173a79c462b1c81e1fa26129f71e41333d846b26", 2761 | "shasum": "" 2762 | }, 2763 | "require": { 2764 | "php": ">=7.2.5", 2765 | "symfony/polyfill-mbstring": "~1.0", 2766 | "symfony/polyfill-php80": "^1.15" 2767 | }, 2768 | "conflict": { 2769 | "phpunit/phpunit": "<5.4.3", 2770 | "symfony/console": "<4.4" 2771 | }, 2772 | "require-dev": { 2773 | "ext-iconv": "*", 2774 | "symfony/console": "^4.4|^5.0", 2775 | "symfony/process": "^4.4|^5.0", 2776 | "twig/twig": "^2.4|^3.0" 2777 | }, 2778 | "suggest": { 2779 | "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", 2780 | "ext-intl": "To show region name in time zone dump", 2781 | "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" 2782 | }, 2783 | "bin": [ 2784 | "Resources/bin/var-dump-server" 2785 | ], 2786 | "type": "library", 2787 | "autoload": { 2788 | "files": [ 2789 | "Resources/functions/dump.php" 2790 | ], 2791 | "psr-4": { 2792 | "Symfony\\Component\\VarDumper\\": "" 2793 | }, 2794 | "exclude-from-classmap": [ 2795 | "/Tests/" 2796 | ] 2797 | }, 2798 | "notification-url": "https://packagist.org/downloads/", 2799 | "license": [ 2800 | "MIT" 2801 | ], 2802 | "authors": [ 2803 | { 2804 | "name": "Nicolas Grekas", 2805 | "email": "p@tchwork.com" 2806 | }, 2807 | { 2808 | "name": "Symfony Community", 2809 | "homepage": "https://symfony.com/contributors" 2810 | } 2811 | ], 2812 | "description": "Symfony mechanism for exploring and dumping PHP variables", 2813 | "homepage": "https://symfony.com", 2814 | "keywords": [ 2815 | "debug", 2816 | "dump" 2817 | ], 2818 | "funding": [ 2819 | { 2820 | "url": "https://symfony.com/sponsor", 2821 | "type": "custom" 2822 | }, 2823 | { 2824 | "url": "https://github.com/fabpot", 2825 | "type": "github" 2826 | }, 2827 | { 2828 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2829 | "type": "tidelift" 2830 | } 2831 | ], 2832 | "time": "2020-11-27T00:39:34+00:00" 2833 | }, 2834 | { 2835 | "name": "symfony/var-exporter", 2836 | "version": "v5.2.0", 2837 | "source": { 2838 | "type": "git", 2839 | "url": "https://github.com/symfony/var-exporter.git", 2840 | "reference": "fbc3507f23d263d75417e09a12d77c009f39676c" 2841 | }, 2842 | "dist": { 2843 | "type": "zip", 2844 | "url": "https://api.github.com/repos/symfony/var-exporter/zipball/fbc3507f23d263d75417e09a12d77c009f39676c", 2845 | "reference": "fbc3507f23d263d75417e09a12d77c009f39676c", 2846 | "shasum": "" 2847 | }, 2848 | "require": { 2849 | "php": ">=7.2.5", 2850 | "symfony/polyfill-php80": "^1.15" 2851 | }, 2852 | "require-dev": { 2853 | "symfony/var-dumper": "^4.4.9|^5.0.9" 2854 | }, 2855 | "type": "library", 2856 | "autoload": { 2857 | "psr-4": { 2858 | "Symfony\\Component\\VarExporter\\": "" 2859 | }, 2860 | "exclude-from-classmap": [ 2861 | "/Tests/" 2862 | ] 2863 | }, 2864 | "notification-url": "https://packagist.org/downloads/", 2865 | "license": [ 2866 | "MIT" 2867 | ], 2868 | "authors": [ 2869 | { 2870 | "name": "Nicolas Grekas", 2871 | "email": "p@tchwork.com" 2872 | }, 2873 | { 2874 | "name": "Symfony Community", 2875 | "homepage": "https://symfony.com/contributors" 2876 | } 2877 | ], 2878 | "description": "A blend of var_export() + serialize() to turn any serializable data structure to plain PHP code", 2879 | "homepage": "https://symfony.com", 2880 | "keywords": [ 2881 | "clone", 2882 | "construct", 2883 | "export", 2884 | "hydrate", 2885 | "instantiate", 2886 | "serialize" 2887 | ], 2888 | "funding": [ 2889 | { 2890 | "url": "https://symfony.com/sponsor", 2891 | "type": "custom" 2892 | }, 2893 | { 2894 | "url": "https://github.com/fabpot", 2895 | "type": "github" 2896 | }, 2897 | { 2898 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2899 | "type": "tidelift" 2900 | } 2901 | ], 2902 | "time": "2020-10-28T21:31:18+00:00" 2903 | }, 2904 | { 2905 | "name": "symfony/yaml", 2906 | "version": "v5.2.0", 2907 | "source": { 2908 | "type": "git", 2909 | "url": "https://github.com/symfony/yaml.git", 2910 | "reference": "bb73619b2ae5121bbbcd9f191dfd53ded17ae598" 2911 | }, 2912 | "dist": { 2913 | "type": "zip", 2914 | "url": "https://api.github.com/repos/symfony/yaml/zipball/bb73619b2ae5121bbbcd9f191dfd53ded17ae598", 2915 | "reference": "bb73619b2ae5121bbbcd9f191dfd53ded17ae598", 2916 | "shasum": "" 2917 | }, 2918 | "require": { 2919 | "php": ">=7.2.5", 2920 | "symfony/deprecation-contracts": "^2.1", 2921 | "symfony/polyfill-ctype": "~1.8" 2922 | }, 2923 | "conflict": { 2924 | "symfony/console": "<4.4" 2925 | }, 2926 | "require-dev": { 2927 | "symfony/console": "^4.4|^5.0" 2928 | }, 2929 | "suggest": { 2930 | "symfony/console": "For validating YAML files using the lint command" 2931 | }, 2932 | "bin": [ 2933 | "Resources/bin/yaml-lint" 2934 | ], 2935 | "type": "library", 2936 | "autoload": { 2937 | "psr-4": { 2938 | "Symfony\\Component\\Yaml\\": "" 2939 | }, 2940 | "exclude-from-classmap": [ 2941 | "/Tests/" 2942 | ] 2943 | }, 2944 | "notification-url": "https://packagist.org/downloads/", 2945 | "license": [ 2946 | "MIT" 2947 | ], 2948 | "authors": [ 2949 | { 2950 | "name": "Fabien Potencier", 2951 | "email": "fabien@symfony.com" 2952 | }, 2953 | { 2954 | "name": "Symfony Community", 2955 | "homepage": "https://symfony.com/contributors" 2956 | } 2957 | ], 2958 | "description": "Symfony Yaml Component", 2959 | "homepage": "https://symfony.com", 2960 | "funding": [ 2961 | { 2962 | "url": "https://symfony.com/sponsor", 2963 | "type": "custom" 2964 | }, 2965 | { 2966 | "url": "https://github.com/fabpot", 2967 | "type": "github" 2968 | }, 2969 | { 2970 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2971 | "type": "tidelift" 2972 | } 2973 | ], 2974 | "time": "2020-11-28T10:57:20+00:00" 2975 | } 2976 | ], 2977 | "packages-dev": [], 2978 | "aliases": [], 2979 | "minimum-stability": "dev", 2980 | "stability-flags": [], 2981 | "prefer-stable": true, 2982 | "prefer-lowest": false, 2983 | "platform": { 2984 | "php": ">=7.4", 2985 | "ext-ctype": "*", 2986 | "ext-iconv": "*" 2987 | }, 2988 | "platform-dev": [], 2989 | "plugin-api-version": "1.1.0" 2990 | } 2991 | --------------------------------------------------------------------------------