├── .gitignore ├── phpstan.neon ├── .travis.yml ├── phpstan └── functions.php ├── src ├── Exception │ ├── ParserException.php │ ├── GeneralHolidayException.php │ └── ConfigurationException.php ├── Facade │ └── HolidayClientFacade.php ├── Parser │ ├── Contract │ │ └── ParserInterface.php │ ├── Factory │ │ └── ParserFactory.php │ ├── XmlParser.php │ └── JsonParser.php ├── Enum │ ├── ResponseTypeEnum.php │ └── HolidayTypeEnum.php ├── Provider │ └── LaravelHolidayCalendarServiceProvider.php ├── Helper │ └── MainlHelper.php ├── Entity │ └── HolidayEntity.php └── HolidayClient.php ├── config └── holiday_calendar.php ├── phpunit.xml ├── tests ├── Parser │ ├── XmlParserTest.php │ ├── JsonParserTest.php │ └── Factory │ │ └── ParserFactoryTest.php └── Helper │ └── MainHelperTest.php ├── composer.json ├── README.md └── composer.lock /.gitignore: -------------------------------------------------------------------------------- 1 | /vendor/ 2 | -------------------------------------------------------------------------------- /phpstan.neon: -------------------------------------------------------------------------------- 1 | parameters: 2 | autoload_files: 3 | - vendor/autoload.php -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: php 2 | php: 3 | - 7.3 4 | branches: 5 | only: 6 | master 7 | before_install: 8 | - travis_retry composer self-update 9 | - composer install 10 | script: phpunit --exclude-group FITS --bootstrap vendor/autoload.php tests -------------------------------------------------------------------------------- /phpstan/functions.php: -------------------------------------------------------------------------------- 1 | 10 | */ 11 | class ParserException extends GeneralHolidayException 12 | { 13 | 14 | } -------------------------------------------------------------------------------- /config/holiday_calendar.php: -------------------------------------------------------------------------------- 1 | env('LARAVEL_HOLIDAY_CALENDAR_TOKEN'), 8 | 9 | 'url_api' => env('LARAVEL_HOLIDAY_CALENDAR_URL_API', 'https://api.calendario.com.br') 10 | ]; -------------------------------------------------------------------------------- /src/Exception/GeneralHolidayException.php: -------------------------------------------------------------------------------- 1 | 10 | */ 11 | class GeneralHolidayException extends \Exception 12 | { 13 | 14 | } -------------------------------------------------------------------------------- /src/Exception/ConfigurationException.php: -------------------------------------------------------------------------------- 1 | 10 | */ 11 | class ConfigurationException extends GeneralHolidayException 12 | { 13 | 14 | } -------------------------------------------------------------------------------- /src/Facade/HolidayClientFacade.php: -------------------------------------------------------------------------------- 1 | 13 | */ 14 | class HolidayClientFacade extends Facade 15 | { 16 | /** 17 | * @return string 18 | */ 19 | protected static function getFacadeAccessor() 20 | { 21 | return 'holiday_calendar_client'; 22 | } 23 | } -------------------------------------------------------------------------------- /phpunit.xml: -------------------------------------------------------------------------------- 1 | 2 | 11 | 12 | 13 | ./tests 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /tests/Parser/XmlParserTest.php: -------------------------------------------------------------------------------- 1 | 13 | * 14 | */ 15 | class XmlParserTest extends TestCase 16 | { 17 | /** 18 | * Testa a formatação de através de uma string Xml. 19 | * 20 | * TODO: Implement it. 21 | */ 22 | public function testParseFromXmlString() 23 | { 24 | $this->assertTrue(true); 25 | } 26 | } -------------------------------------------------------------------------------- /tests/Parser/JsonParserTest.php: -------------------------------------------------------------------------------- 1 | 13 | * 14 | */ 15 | class JsonParserTest extends TestCase 16 | { 17 | /** 18 | * Testa a formatação de através de uma string Json. 19 | * 20 | * TODO: Implement it. 21 | */ 22 | public function testParseFromJsonString() 23 | { 24 | $this->assertTrue(true); 25 | } 26 | } -------------------------------------------------------------------------------- /src/Parser/Contract/ParserInterface.php: -------------------------------------------------------------------------------- 1 | 12 | */ 13 | interface ParserInterface 14 | { 15 | /** 16 | * Método responsável por formatar o retorno da API. 17 | * 18 | * @param string $rawResponse 19 | * @return HolidayEntity[] 20 | */ 21 | public function parse(string $rawResponse): array; 22 | } -------------------------------------------------------------------------------- /src/Enum/ResponseTypeEnum.php: -------------------------------------------------------------------------------- 1 | 15 | */ 16 | class ResponseTypeEnum extends AbstractEnumeration 17 | { 18 | /** @var string JSON_RESPONSE Tipo de resposta em formato Json. */ 19 | const JSON_RESPONSE = 'json'; 20 | 21 | /** @var string XML_RESPONSE Tipo de resposta em forma XML. */ 22 | const XML_RESPONSE = 'xml'; 23 | } -------------------------------------------------------------------------------- /src/Enum/HolidayTypeEnum.php: -------------------------------------------------------------------------------- 1 | 18 | */ 19 | class HolidayTypeEnum extends AbstractEnumeration 20 | { 21 | /** @var int NATIONAL Feriado nacional. */ 22 | const NATIONAL = 1; 23 | 24 | /** @var int STATE Feriado estadual. */ 25 | const STATE = 2; 26 | 27 | /** @var int MUNICIPAL Feriado municipal. */ 28 | const MUNICIPAL = 3; 29 | 30 | /** @var int OPTIONAL Feriado facultativo. */ 31 | const OPTIONAL = 4; 32 | 33 | /** @var int CONVENTIONAL Feriado convencional. */ 34 | const CONVENTIONAL = 9; 35 | } -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "stargrid/laravel-calendario-feriados", 3 | "description": "Pacote desenvolvido e mantido pela StarGrid (https://stargrid.pro) para facilitar a integração com a API (http://www.calendario.com.br/api_feriados_municipais_estaduais_nacionais.php) para a busca de feriados nacionais, estaduais e municipais.", 4 | "type": "library", 5 | "license": "AGPL-3.0-only", 6 | "authors": [ 7 | { 8 | "name": "Tiago Fiorenza", 9 | "email": "tiago@stargrid.pro" 10 | }, 11 | { 12 | "name": "Gabriel Anhaia", 13 | "email": "anhaia.gabriel@gmail.com" 14 | } 15 | ], 16 | "require": { 17 | "guzzlehttp/guzzle": "^6.3", 18 | "eloquent/enumeration": "^6.0", 19 | "illuminate/support": "^7.0" 20 | }, 21 | "require-dev": { 22 | "phpunit/phpunit": "^7.5", 23 | "phpstan/phpstan": "^0.11.8" 24 | }, 25 | "extra": { 26 | "laravel": { 27 | "providers": [ 28 | "StarGrid\\LaravelHolidayCalendar\\Provider\\LaravelHolidayCalendarServiceProvider" 29 | ] 30 | } 31 | }, 32 | "autoload": { 33 | "psr-4": { 34 | "StarGrid\\LaravelHolidayCalendar\\": [ 35 | "src/", 36 | "tests" 37 | ] 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /tests/Parser/Factory/ParserFactoryTest.php: -------------------------------------------------------------------------------- 1 | 16 | */ 17 | class ParserFactoryTest extends TestCase 18 | { 19 | /** 20 | * Testa sucesso ao contruir uma parser to tipo Json. 21 | */ 22 | public function testMakeJsonParser() 23 | { 24 | $parserFactory = new ParserFactory; 25 | 26 | $jsonParser = $parserFactory->makeParser(ResponseTypeEnum::JSON_RESPONSE()); 27 | 28 | $this->assertEquals(new JsonParser, $jsonParser); 29 | } 30 | 31 | /** 32 | * Testa sucesso ao contruir uma parser to tipo XML. 33 | */ 34 | public function testMakeXmlParser() 35 | { 36 | $parserFactory = new ParserFactory; 37 | 38 | $xmlParser = $parserFactory->makeParser(ResponseTypeEnum::XML_RESPONSE()); 39 | 40 | $this->assertEquals(new XmlParser, $xmlParser); 41 | } 42 | } -------------------------------------------------------------------------------- /src/Parser/Factory/ParserFactory.php: -------------------------------------------------------------------------------- 1 | 16 | */ 17 | class ParserFactory 18 | { 19 | /** 20 | * Método responsável por criar uma instância de um determinado parser para converter o retorno da API. 21 | * 22 | * @param ResponseTypeEnum $responseTypeEnum 23 | * @return ParserInterface 24 | * @throws ParserException 25 | */ 26 | public function makeParser(ResponseTypeEnum $responseTypeEnum) : ParserInterface 27 | { 28 | if ($responseTypeEnum->value() === ResponseTypeEnum::JSON_RESPONSE) { 29 | return new JsonParser; 30 | } elseif ($responseTypeEnum->value() === ResponseTypeEnum::XML_RESPONSE) { 31 | return new XmlParser; 32 | } else { 33 | throw new ParserException('Parser not found (invalid response type).'); 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /src/Parser/XmlParser.php: -------------------------------------------------------------------------------- 1 | 15 | */ 16 | class XmlParser implements ParserInterface 17 | { 18 | /** 19 | * {@inheritdoc} 20 | */ 21 | public function parse(string $rawResponse): array 22 | { 23 | $holidays = simplexml_load_string($rawResponse); 24 | 25 | if (empty($holidays)) { 26 | throw new ParserException('Invalid response.'); 27 | } 28 | 29 | $formattedResponse = []; 30 | 31 | foreach ($holidays->event as $holiday) { 32 | $holidayType = (int) $holiday->type_code; 33 | 34 | try { 35 | $formattedResponse[] = new HolidayEntity( 36 | \DateTime::createFromFormat('d/m/Y', $holiday->date), 37 | $holiday->name, 38 | $holiday->description, 39 | $holiday->link, 40 | HolidayTypeEnum::memberByValue($holidayType), 41 | $holiday->type, 42 | json_encode($holiday) 43 | ); 44 | } catch (\Exception $exception) { 45 | echo $exception->getMessage(); 46 | continue; 47 | } 48 | } 49 | 50 | return $formattedResponse; 51 | } 52 | } -------------------------------------------------------------------------------- /src/Parser/JsonParser.php: -------------------------------------------------------------------------------- 1 | 15 | */ 16 | class JsonParser implements ParserInterface 17 | { 18 | /** 19 | * {@inheritdoc} 20 | */ 21 | public function parse(string $rawResponse): array 22 | { 23 | $holidays = json_decode($rawResponse, true); 24 | 25 | if (empty($holidays)) { 26 | throw new ParserException('Invalid response.'); 27 | } 28 | 29 | $formattedResponse = []; 30 | 31 | foreach ($holidays as $holiday) { 32 | $holidayType = (int) $holiday['type_code']; 33 | 34 | try { 35 | $formattedResponse[] = new HolidayEntity( 36 | \DateTime::createFromFormat('d/m/Y', $holiday['date']), 37 | $holiday['name'], 38 | $holiday['description'], 39 | $holiday['link'], 40 | HolidayTypeEnum::memberByValue($holidayType), 41 | $holiday['type'], 42 | json_encode($holiday) 43 | ); 44 | } catch (\Exception $exception) { 45 | echo $exception->getMessage(); 46 | continue; 47 | } 48 | } 49 | 50 | return $formattedResponse; 51 | } 52 | } -------------------------------------------------------------------------------- /tests/Helper/MainHelperTest.php: -------------------------------------------------------------------------------- 1 | 12 | */ 13 | class MainHelperTest extends TestCase 14 | { 15 | /** 16 | * Testa sucesso ao contruir uma parser to tipo Json. 17 | * 18 | * @param string $cityName Nome da cidade a ser formatado. 19 | * @param string $expectedResult Resultado do nome da cidade após a formatação. 20 | * 21 | * @dataProvider normalizeCityNameDataProvider 22 | */ 23 | public function testNormalizeCityName(string $cityName, string $expectedResult) 24 | { 25 | $result = MainlHelper::normalizeCityName($cityName); 26 | 27 | $this->assertEquals($expectedResult, $result); 28 | } 29 | 30 | /** 31 | * Provedor de dados para os testes de normalização de nomes de cidades. 32 | * 33 | * @return array 34 | */ 35 | public function normalizeCityNameDataProvider() 36 | { 37 | return [ 38 | [ 39 | 'cityName' => 'porto alégRe', 40 | 'expectedResult' => 'Porto_Alegre' 41 | ], 42 | [ 43 | 'cityName' => 'Canoas', 44 | 'expectedResult' => 'Canoas' 45 | ], 46 | [ 47 | 'cityName' => 'são sEbAstiãO DO CAÍ ', 48 | 'expectedResult' => 'Sao_Sebastiao_Do_Cai' 49 | ], 50 | [ 51 | 'cityName' => ' cAchoeirinha', 52 | 'expectedResult' => 'Cachoeirinha' 53 | ], 54 | [ 55 | 'cityName' => ' sãOPaulo -', 56 | 'expectedResult' => 'Saopaulo_-' 57 | ], 58 | ]; 59 | } 60 | } -------------------------------------------------------------------------------- /src/Provider/LaravelHolidayCalendarServiceProvider.php: -------------------------------------------------------------------------------- 1 | 15 | */ 16 | class LaravelHolidayCalendarServiceProvider extends ServiceProvider 17 | { 18 | /** 19 | * Publishes configuration file. 20 | * 21 | * @return void 22 | */ 23 | public function boot() 24 | { 25 | $path = realpath(__DIR__.'/../../config/holiday_calendar.php'); 26 | $this->publishes([$path => config_path('holiday_calendar.php')], 'holiday-calendar'); 27 | $this->mergeConfigFrom($path, 'holiday-calendar'); 28 | } 29 | 30 | /** 31 | * Make config publishment optional by merging the config from the package. 32 | * 33 | * @return void 34 | */ 35 | public function register() 36 | { 37 | $this->app->bind(HolidayClient::class, function ($app) { 38 | $urlApi = config('holiday-calendar.url_api'); 39 | $token = config('holiday-calendar.token'); 40 | 41 | if (empty($urlApi)) { 42 | throw new ConfigurationException('Url not defined (LARAVEL_HOLIDAY_CALENDAR_URL_API)'); 43 | } 44 | 45 | if (empty($token)) { 46 | throw new ConfigurationException('Token not defined (LARAVEL_HOLIDAY_CALENDAR_URL_API)'); 47 | } 48 | 49 | $holidayClient = new HolidayClient( 50 | $urlApi, 51 | $token 52 | ); 53 | 54 | return $holidayClient; 55 | }); 56 | 57 | $this->app->bind('holiday_calendar_client', function () { 58 | return app(HolidayClient::class); 59 | }); 60 | } 61 | } -------------------------------------------------------------------------------- /src/Helper/MainlHelper.php: -------------------------------------------------------------------------------- 1 | 10 | */ 11 | class MainlHelper 12 | { 13 | /** 14 | * Normaliza o nome de cidades de acordo com o esperado pela API de feriados. 15 | * 16 | * @param string $cityName Nome da cidade a ser normalizado. 17 | * @return string Nome da cidade formatado com os padrões esperados pela API. 18 | */ 19 | public static function normalizeCityName(string $cityName): string 20 | { 21 | $table = [ 22 | 'Š' => 'S', 'š' => 's', 'Ð' => 'Dj', 'd' => 'dj', 'Ž' => 'Z', 'ž' => 'z', 'c' => 'c', 'C' => 'C', 23 | 'À' => 'A', 'Á' => 'A', 'Â' => 'A', 'Ã' => 'A', 'Ä' => 'A', 'Å' => 'A', 'Æ' => 'A', 'Ç' => 'C', 'È' => 'E', 'É' => 'E', 24 | 'Ê' => 'E', 'Ë' => 'E', 'Ì' => 'I', 'Í' => 'I', 'Î' => 'I', 'Ï' => 'I', 'Ñ' => 'N', 'Ò' => 'O', 'Ó' => 'O', 'Ô' => 'O', 25 | 'Õ' => 'O', 'Ö' => 'O', 'Ø' => 'O', 'Ù' => 'U', 'Ú' => 'U', 'Û' => 'U', 'Ü' => 'U', 'Ý' => 'Y', 'Þ' => 'B', 'ß' => 'Ss', 26 | 'à' => 'a', 'á' => 'a', 'â' => 'a', 'ã' => 'a', 'ä' => 'a', 'å' => 'a', 'æ' => 'a', 'ç' => 'c', 'è' => 'e', 'é' => 'e', 27 | 'ê' => 'e', 'ë' => 'e', 'ì' => 'i', 'í' => 'i', 'î' => 'i', 'ï' => 'i', 'ð' => 'o', 'ñ' => 'n', 'ò' => 'o', 'ó' => 'o', 28 | 'ô' => 'o', 'õ' => 'o', 'ö' => 'o', 'ø' => 'o', 'ù' => 'u', 'ú' => 'u', 'û' => 'u', 'ý' => 'y', 'þ' => 'b', 29 | 'ÿ' => 'y', 'R' => 'R', 'r' => 'r', ' ' => ' ', ' ' => '', ' ' => ' ' 30 | ]; 31 | 32 | $cityName = trim($cityName); 33 | $cityName = strtr($cityName, $table); 34 | 35 | $formattedCityNames = []; 36 | foreach (explode(' ', $cityName) as $name) { 37 | $name = strtolower($name); 38 | $formattedCityNames[] = ucfirst($name); 39 | } 40 | 41 | $cityName = implode('_', $formattedCityNames); 42 | 43 | return $cityName; 44 | } 45 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![Build Status](https://travis-ci.org/stargrid/laravel-calendario-feriados.svg?branch=master)](https://travis-ci.org/stargrid/laravel-calendario-feriados) 2 | 3 | # Calendário nacional de feriados. 4 | 5 | Este projeto foi iniciado pela [StarGrid](https://stargrid.pro) para ajudar os usuários do Laravel que pretendem integrar seus sistemas com a API [http://www.calendario.com.br](http://www.calendario.com.br) para busca de feriados nacionais, estaduais e municipais. 6 | 7 | ## Instalação 8 | 9 | Para instalar a dependência através do composer, através do terminal, entre na pasta de seu projeto e digite: 10 | 11 | ```sh 12 | $ composer require stargrid/laravel-calendario-feriados:"v2.0.0" 13 | ``` 14 | 15 | Obs: Caso esteja usando versões inferiores: 16 | 17 | ```sh 18 | $ composer require stargrid/laravel-calendario-feriados:"v1.0.0" 19 | ``` 20 | 21 | 22 | Após a instalação do pacote, execute o próximo comando: 23 | ```sh 24 | $ php artisan vendor:publish --provider="StarGrid\LaravelHolidayCalendar\Provider\LaravelHolidayCalendarServiceProvider" 25 | ``` 26 | 27 | Agora é necessário configurar no ```.env``` o seu *token* de acesso da API: 28 | ```env 29 | LARAVEL_HOLIDAY_CALENDAR_TOKEN=SEU_TOKEN_AQUI 30 | ``` 31 | 32 | ## Utilização 33 | 34 | Para utilizar basta primeiramente instânciar a classe `StarGrid\LaravelHolidayCalendar\HolidayClient` conforme o exemplo a seguir: 35 | ```php 36 | $holidayClient = new StarGrid\LaravelHolidayCalendar\HolidayClient(env('LARAVEL_HOLIDAY_CALENDAR_TOKEN')); 37 | ``` 38 | 39 | Antes de efetuar as chamadas da API, é necessário definir o tipo de retorno (Response). A [API Calendário](http://www.calendario.com.br/api_feriados_municipais_estaduais_nacionais.php) permite dois formatos, **JSON** ou **XML**. 40 | 41 | Para definir o retorno do tipo **JSON**: 42 | ```php 43 | $holidayClient = new StarGrid\LaravelHolidayCalendar\HolidayClient(env('LARAVEL_HOLIDAY_CALENDAR_TOKEN')); 44 | $holidayClient->setJsonResponse(); 45 | ``` 46 | Para definir o retorno do tipo **XML**: 47 | ```php 48 | $holidayClient = new StarGrid\LaravelHolidayCalendar\HolidayClient(env('LARAVEL_HOLIDAY_CALENDAR_TOKEN')); 49 | $holidayClient->setXmlResponse(); 50 | ``` 51 | 52 | Finalmente para fazer a chamada da API, exitem dois tipos de consultas. 53 | 54 | #### Consulta através do código do IBGE do município: 55 | ```php 56 | $response = $client->setJsonResponse() 57 | ->getHolidaysByIbgeCode(2019, 4314902); 58 | ``` 59 | - O primeiro parâmetro é o ano para a consulta dos feriados. 60 | - O segundo parâmetro é o código do IBGE. 61 | 62 | #### Consulta através do nome do município: 63 | ```php 64 | $response = $client->setJsonResponse() 65 | ->getHolidaysByCity(2019, 'São Paulo' , 'SP'); 66 | ``` 67 | - O primeiro parâmetro é o ano para a consulta dos feriados. 68 | - O segundo parâmetro é o nome da cidade a ser consultada. 69 | - O terceiro parâmetro é a sigla do estado (UF). 70 | 71 | Obs: Não é necessário se preocupar com os acentos e letras minúsculas ou maiúsculas, este tratamento é feito diretamente pelo pacote. 72 | 73 | ___ 74 | 75 | No final o resultado será um array de objetos ```StarGrid\LaravelHolidayCalendar\Entity\HolidayEntity```. 76 | 77 | Esse objeto possuí os seguintes métodos para se obter os dados (`getters`): 78 | 79 | ```php 80 | public function getDate(): \DateTime 81 | public function getName(): string 82 | public function getDescription(): string 83 | public function getLink(): string 84 | public function getTypeEnum(): HolidayTypeEnum 85 | public function getTypeName(): string 86 | public function getRawData(): string 87 | ``` 88 | 89 | Também possuí seus respectivos `setters`. 90 | 91 | ## Service-Provider e Facade 92 | 93 | É possível utilizar o DI do próprio Laravel para se obter uma instância de `StarGrid\LaravelHolidayCalendar\HolidayClient`, se você estiver em uma controller, por exemplo: 94 | ```php 95 | setJsonResponse() 106 | ->getHolidaysByCity(2019, 'São Paulo' , 'SP'); 107 | } 108 | } 109 | ``` 110 | 111 | Ou utiliza-lo através do *Facade* do próprio pacote: 112 | ```php 113 | getHolidaysByCity(2019, 'São Paulo' , 'SP'); 125 | } 126 | } 127 | ``` 128 | -------------------------------------------------------------------------------- /src/Entity/HolidayEntity.php: -------------------------------------------------------------------------------- 1 | 12 | */ 13 | class HolidayEntity 14 | { 15 | /** @var \DateTime $date Data do feriado. */ 16 | protected $date; 17 | 18 | /** @var string $name Nome do feriado. */ 19 | protected $name; 20 | 21 | /** @var string $description Descrição do feriado. */ 22 | protected $description; 23 | 24 | /** @var string $link Endereço da web para consultar informações sobre o feriado. */ 25 | protected $link; 26 | 27 | /** @var HolidayTypeEnum $typeEnum Objeto com o tipo de feriado. */ 28 | protected $typeEnum; 29 | 30 | /** @var string $typeName Nome do tipo de feriado (descrição retornada da API). */ 31 | protected $typeName; 32 | 33 | /** @var string $rawData Dados do feriado retornado da API. */ 34 | protected $rawData; 35 | 36 | /** 37 | * HolidayEntity constructor. 38 | * 39 | * @param \DateTime $date Data do feriado. 40 | * @param string $name Nome do feriado. 41 | * @param string $description Descrição do feriado. 42 | * @param string $link Endereço da web para consultar informações sobre o feriado. 43 | * @param HolidayTypeEnum $typeEnum Objeto com o tipo de feriado. 44 | * @param string $typeName Nome do tipo de feriado (descrição retornada da API). 45 | * @param string $rawData Dados do feriado retornado da API. 46 | */ 47 | public function __construct(\DateTime $date, string $name, string $description, string $link, HolidayTypeEnum $typeEnum, string $typeName, string $rawData) 48 | { 49 | $this->date = $date; 50 | $this->name = $name; 51 | $this->description = $description; 52 | $this->link = $link; 53 | $this->typeEnum = $typeEnum; 54 | $this->typeName = $typeName; 55 | $this->rawData = $rawData; 56 | } 57 | 58 | /** 59 | * @return \DateTime 60 | */ 61 | public function getDate(): \DateTime 62 | { 63 | return $this->date; 64 | } 65 | 66 | /** 67 | * @param \DateTime $date 68 | * @return HolidayEntity 69 | */ 70 | public function setDate(\DateTime $date): HolidayEntity 71 | { 72 | $this->date = $date; 73 | return $this; 74 | } 75 | 76 | /** 77 | * @return string 78 | */ 79 | public function getName(): string 80 | { 81 | return $this->name; 82 | } 83 | 84 | /** 85 | * @param string $name 86 | * @return HolidayEntity 87 | */ 88 | public function setName(string $name): HolidayEntity 89 | { 90 | $this->name = $name; 91 | return $this; 92 | } 93 | 94 | /** 95 | * @return string 96 | */ 97 | public function getDescription(): string 98 | { 99 | return $this->description; 100 | } 101 | 102 | /** 103 | * @param string $description 104 | * @return HolidayEntity 105 | */ 106 | public function setDescription(string $description): HolidayEntity 107 | { 108 | $this->description = $description; 109 | return $this; 110 | } 111 | 112 | /** 113 | * @return string 114 | */ 115 | public function getLink(): string 116 | { 117 | return $this->link; 118 | } 119 | 120 | /** 121 | * @param string $link 122 | * @return HolidayEntity 123 | */ 124 | public function setLink(string $link): HolidayEntity 125 | { 126 | $this->link = $link; 127 | return $this; 128 | } 129 | 130 | /** 131 | * @return HolidayTypeEnum 132 | */ 133 | public function getTypeEnum(): HolidayTypeEnum 134 | { 135 | return $this->typeEnum; 136 | } 137 | 138 | /** 139 | * @param HolidayTypeEnum $typeEnum 140 | * @return HolidayEntity 141 | */ 142 | public function setTypeEnum(HolidayTypeEnum $typeEnum): HolidayEntity 143 | { 144 | $this->typeEnum = $typeEnum; 145 | return $this; 146 | } 147 | 148 | /** 149 | * @return string 150 | */ 151 | public function getTypeName(): string 152 | { 153 | return $this->typeName; 154 | } 155 | 156 | /** 157 | * @param string $typeName 158 | * @return HolidayEntity 159 | */ 160 | public function setTypeName(string $typeName): HolidayEntity 161 | { 162 | $this->typeName = $typeName; 163 | return $this; 164 | } 165 | 166 | /** 167 | * @return string 168 | */ 169 | public function getRawData(): string 170 | { 171 | return $this->rawData; 172 | } 173 | 174 | /** 175 | * @param string $rawData 176 | * @return HolidayEntity 177 | */ 178 | public function setRawData(string $rawData): HolidayEntity 179 | { 180 | $this->rawData = $rawData; 181 | return $this; 182 | } 183 | } -------------------------------------------------------------------------------- /src/HolidayClient.php: -------------------------------------------------------------------------------- 1 | 20 | */ 21 | class HolidayClient 22 | { 23 | // TODO: Create constant - url 24 | 25 | /** @var Client $guzzleHttp Cliente Http para a integração com a API de feriados. */ 26 | protected $guzzleHttp; 27 | 28 | /** @var ParserInterface $parser Objeto com o formatador de retorno a API. */ 29 | protected $parser; 30 | 31 | /** @var string $baseUrl Url base da API. */ 32 | protected $baseUrl; 33 | 34 | /** @var string $token Token de autorização para utilizar a API. */ 35 | protected $token; 36 | 37 | /** 38 | * HolidayClient constructor. 39 | * 40 | * @param string $baseUrl Url base de comunicação com a API. 41 | * @param string $token Token de autorização para utilizar a API. 42 | */ 43 | public function __construct(string $baseUrl, string $token) 44 | { 45 | $this->guzzleHttp = new Client; 46 | $this->baseUrl = $baseUrl; 47 | $this->token = $token; 48 | } 49 | 50 | /** 51 | * @param Client $guzzleHttp 52 | * @return HolidayClient 53 | */ 54 | public function setHttpClient(Client $guzzleHttp): HolidayClient 55 | { 56 | $this->guzzleHttp = $guzzleHttp; 57 | 58 | return $this; 59 | } 60 | 61 | /** 62 | * Método responsável por definir o parser do tipo Json para o retorno da API. 63 | * 64 | * @return HolidayClient 65 | * @throws ParserException 66 | * @throws Exception\ParserException 67 | */ 68 | public function setJsonResponse(): HolidayClient 69 | { 70 | $parserFactory = new ParserFactory; 71 | 72 | $this->parser = $parserFactory->makeParser(ResponseTypeEnum::JSON_RESPONSE()); 73 | 74 | return $this; 75 | } 76 | 77 | /** 78 | * Método responsável por definir o parser do tipo XML para o retorno da API. 79 | * 80 | * @return HolidayClient 81 | * @throws ParserException 82 | * @throws Exception\ParserException 83 | */ 84 | public function setXmlResponse(): HolidayClient 85 | { 86 | $parserFactory = new ParserFactory; 87 | 88 | $this->parser = $parserFactory->makeParser(ResponseTypeEnum::XML_RESPONSE()); 89 | 90 | return $this; 91 | } 92 | 93 | /** 94 | * Método reponsável por buscar os feriados de uma cidade através do nome da cidade e do estado. 95 | * 96 | * @param int|array $years Ano de busca dos feriados. 97 | * @param string $cityName Nome da cidade a buscar os feriados. 98 | * @param string $stateName Nome do estado a buscar os feriados. 99 | * 100 | * @return HolidayEntity[] 101 | * @throws ParserException 102 | */ 103 | public function getHolidaysByCity($years, string $cityName, string $stateName) 104 | { 105 | if (empty($this->parser)) { 106 | throw new ParserException( 107 | 'Parser not defined. It is necessary to call the method setJsonResponse() or setXmlResponse() before this action.' 108 | ); 109 | } 110 | 111 | if (!is_array($years)) { 112 | $years = [$years]; 113 | } 114 | 115 | $finalResponse = []; 116 | foreach ($years as $year) { 117 | $queryParams = [ 118 | 'token' => $this->token, 119 | 'year' => $year, 120 | 'cidade' => Helper\MainlHelper::normalizeCityName($cityName), 121 | 'state' => strtoupper($stateName) 122 | ]; 123 | 124 | if ($this->parser instanceof JsonParser) { 125 | $queryParams['json'] = true; 126 | } 127 | 128 | $url = $this->baseUrl . '?' . http_build_query($queryParams); 129 | 130 | $guzzleResponse = $this->getHolidays($url); 131 | 132 | $rawResponse = $guzzleResponse->getBody()->getContents(); 133 | 134 | $finalResponse = array_merge($finalResponse, $this->parser->parse($rawResponse)); 135 | } 136 | 137 | return $finalResponse; 138 | } 139 | 140 | /** 141 | * Método reponsável por buscar os feriados de uma cidade através do seu código do IBGE. 142 | * 143 | * @param int $year Ano de busca dos feriados. 144 | * @param string $ibgeCode Código do IBGE usado para consultar os feriados de determinada região. 145 | * 146 | * @return HolidayEntity[] 147 | * @throws ParserException 148 | */ 149 | public function getHolidaysByIbgeCode(int $year, string $ibgeCode) 150 | { 151 | if (empty($this->parser)) { 152 | throw new ParserException( 153 | 'Parser not defined. It is necessary to call the method setJsonResponse() or setXmlResponse() before this action.' 154 | ); 155 | } 156 | 157 | $queryParams = [ 158 | 'token' => $this->token, 159 | 'year' => $year, 160 | 'ibge' => $ibgeCode 161 | ]; 162 | 163 | if ($this->parser instanceof JsonParser) { 164 | $queryParams['json'] = true; 165 | } 166 | 167 | $url = $this->baseUrl . '?' . http_build_query($queryParams); 168 | 169 | $guzzleResponse = $this->getHolidays($url); 170 | 171 | $rawResponse = $guzzleResponse->getBody()->getContents(); 172 | 173 | return $this->parser->parse($rawResponse); 174 | } 175 | 176 | /** 177 | * Método repsonsável por efetuar a consulta de feriados na API. 178 | * 179 | * @param string $apiUrl Url da API já com os parâmetros. 180 | * @return \Psr\Http\Message\ResponseInterface 181 | */ 182 | private function getHolidays(string $apiUrl): ResponseInterface 183 | { 184 | return $this->guzzleHttp->get($apiUrl); 185 | } 186 | } -------------------------------------------------------------------------------- /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": "6ddd61c54c7d8e0ff23abeb3acf32c7f", 8 | "packages": [ 9 | { 10 | "name": "doctrine/inflector", 11 | "version": "1.4.3", 12 | "source": { 13 | "type": "git", 14 | "url": "https://github.com/doctrine/inflector.git", 15 | "reference": "4650c8b30c753a76bf44fb2ed00117d6f367490c" 16 | }, 17 | "dist": { 18 | "type": "zip", 19 | "url": "https://api.github.com/repos/doctrine/inflector/zipball/4650c8b30c753a76bf44fb2ed00117d6f367490c", 20 | "reference": "4650c8b30c753a76bf44fb2ed00117d6f367490c", 21 | "shasum": "" 22 | }, 23 | "require": { 24 | "php": "^7.2 || ^8.0" 25 | }, 26 | "require-dev": { 27 | "doctrine/coding-standard": "^7.0", 28 | "phpstan/phpstan": "^0.11", 29 | "phpstan/phpstan-phpunit": "^0.11", 30 | "phpstan/phpstan-strict-rules": "^0.11", 31 | "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" 32 | }, 33 | "type": "library", 34 | "extra": { 35 | "branch-alias": { 36 | "dev-master": "2.0.x-dev" 37 | } 38 | }, 39 | "autoload": { 40 | "psr-4": { 41 | "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector", 42 | "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" 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": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.", 72 | "homepage": "https://www.doctrine-project.org/projects/inflector.html", 73 | "keywords": [ 74 | "inflection", 75 | "inflector", 76 | "lowercase", 77 | "manipulation", 78 | "php", 79 | "plural", 80 | "singular", 81 | "strings", 82 | "uppercase", 83 | "words" 84 | ], 85 | "time": "2020-05-29T07:19:59+00:00" 86 | }, 87 | { 88 | "name": "eloquent/enumeration", 89 | "version": "6.0.0", 90 | "source": { 91 | "type": "git", 92 | "url": "https://github.com/eloquent/enumeration.git", 93 | "reference": "15a1959683ae4fea75e19ff09d72a344ece3c6a4" 94 | }, 95 | "dist": { 96 | "type": "zip", 97 | "url": "https://api.github.com/repos/eloquent/enumeration/zipball/15a1959683ae4fea75e19ff09d72a344ece3c6a4", 98 | "reference": "15a1959683ae4fea75e19ff09d72a344ece3c6a4", 99 | "shasum": "" 100 | }, 101 | "require": { 102 | "php": ">=7.1" 103 | }, 104 | "require-dev": { 105 | "phpunit/phpunit": "^7" 106 | }, 107 | "type": "library", 108 | "autoload": { 109 | "psr-4": { 110 | "Eloquent\\Enumeration\\": "src" 111 | } 112 | }, 113 | "notification-url": "https://packagist.org/downloads/", 114 | "license": [ 115 | "MIT" 116 | ], 117 | "authors": [ 118 | { 119 | "name": "Erin Millard", 120 | "email": "ezzatron@gmail.com", 121 | "homepage": "http://ezzatron.com/" 122 | } 123 | ], 124 | "description": "An enumeration implementation for PHP.", 125 | "homepage": "https://github.com/eloquent/enumeration", 126 | "keywords": [ 127 | "class", 128 | "enum", 129 | "enumeration", 130 | "multiton", 131 | "set", 132 | "type" 133 | ], 134 | "time": "2018-11-22T02:45:56+00:00" 135 | }, 136 | { 137 | "name": "guzzlehttp/guzzle", 138 | "version": "6.5.4", 139 | "source": { 140 | "type": "git", 141 | "url": "https://github.com/guzzle/guzzle.git", 142 | "reference": "a4a1b6930528a8f7ee03518e6442ec7a44155d9d" 143 | }, 144 | "dist": { 145 | "type": "zip", 146 | "url": "https://api.github.com/repos/guzzle/guzzle/zipball/a4a1b6930528a8f7ee03518e6442ec7a44155d9d", 147 | "reference": "a4a1b6930528a8f7ee03518e6442ec7a44155d9d", 148 | "shasum": "" 149 | }, 150 | "require": { 151 | "ext-json": "*", 152 | "guzzlehttp/promises": "^1.0", 153 | "guzzlehttp/psr7": "^1.6.1", 154 | "php": ">=5.5", 155 | "symfony/polyfill-intl-idn": "1.17.0" 156 | }, 157 | "require-dev": { 158 | "ext-curl": "*", 159 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", 160 | "psr/log": "^1.1" 161 | }, 162 | "suggest": { 163 | "psr/log": "Required for using the Log middleware" 164 | }, 165 | "type": "library", 166 | "extra": { 167 | "branch-alias": { 168 | "dev-master": "6.5-dev" 169 | } 170 | }, 171 | "autoload": { 172 | "psr-4": { 173 | "GuzzleHttp\\": "src/" 174 | }, 175 | "files": [ 176 | "src/functions_include.php" 177 | ] 178 | }, 179 | "notification-url": "https://packagist.org/downloads/", 180 | "license": [ 181 | "MIT" 182 | ], 183 | "authors": [ 184 | { 185 | "name": "Michael Dowling", 186 | "email": "mtdowling@gmail.com", 187 | "homepage": "https://github.com/mtdowling" 188 | } 189 | ], 190 | "description": "Guzzle is a PHP HTTP client library", 191 | "homepage": "http://guzzlephp.org/", 192 | "keywords": [ 193 | "client", 194 | "curl", 195 | "framework", 196 | "http", 197 | "http client", 198 | "rest", 199 | "web service" 200 | ], 201 | "time": "2020-05-25T19:35:05+00:00" 202 | }, 203 | { 204 | "name": "guzzlehttp/promises", 205 | "version": "v1.3.1", 206 | "source": { 207 | "type": "git", 208 | "url": "https://github.com/guzzle/promises.git", 209 | "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646" 210 | }, 211 | "dist": { 212 | "type": "zip", 213 | "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646", 214 | "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646", 215 | "shasum": "" 216 | }, 217 | "require": { 218 | "php": ">=5.5.0" 219 | }, 220 | "require-dev": { 221 | "phpunit/phpunit": "^4.0" 222 | }, 223 | "type": "library", 224 | "extra": { 225 | "branch-alias": { 226 | "dev-master": "1.4-dev" 227 | } 228 | }, 229 | "autoload": { 230 | "psr-4": { 231 | "GuzzleHttp\\Promise\\": "src/" 232 | }, 233 | "files": [ 234 | "src/functions_include.php" 235 | ] 236 | }, 237 | "notification-url": "https://packagist.org/downloads/", 238 | "license": [ 239 | "MIT" 240 | ], 241 | "authors": [ 242 | { 243 | "name": "Michael Dowling", 244 | "email": "mtdowling@gmail.com", 245 | "homepage": "https://github.com/mtdowling" 246 | } 247 | ], 248 | "description": "Guzzle promises library", 249 | "keywords": [ 250 | "promise" 251 | ], 252 | "time": "2016-12-20T10:07:11+00:00" 253 | }, 254 | { 255 | "name": "guzzlehttp/psr7", 256 | "version": "1.6.1", 257 | "source": { 258 | "type": "git", 259 | "url": "https://github.com/guzzle/psr7.git", 260 | "reference": "239400de7a173fe9901b9ac7c06497751f00727a" 261 | }, 262 | "dist": { 263 | "type": "zip", 264 | "url": "https://api.github.com/repos/guzzle/psr7/zipball/239400de7a173fe9901b9ac7c06497751f00727a", 265 | "reference": "239400de7a173fe9901b9ac7c06497751f00727a", 266 | "shasum": "" 267 | }, 268 | "require": { 269 | "php": ">=5.4.0", 270 | "psr/http-message": "~1.0", 271 | "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" 272 | }, 273 | "provide": { 274 | "psr/http-message-implementation": "1.0" 275 | }, 276 | "require-dev": { 277 | "ext-zlib": "*", 278 | "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8" 279 | }, 280 | "suggest": { 281 | "zendframework/zend-httphandlerrunner": "Emit PSR-7 responses" 282 | }, 283 | "type": "library", 284 | "extra": { 285 | "branch-alias": { 286 | "dev-master": "1.6-dev" 287 | } 288 | }, 289 | "autoload": { 290 | "psr-4": { 291 | "GuzzleHttp\\Psr7\\": "src/" 292 | }, 293 | "files": [ 294 | "src/functions_include.php" 295 | ] 296 | }, 297 | "notification-url": "https://packagist.org/downloads/", 298 | "license": [ 299 | "MIT" 300 | ], 301 | "authors": [ 302 | { 303 | "name": "Michael Dowling", 304 | "email": "mtdowling@gmail.com", 305 | "homepage": "https://github.com/mtdowling" 306 | }, 307 | { 308 | "name": "Tobias Schultze", 309 | "homepage": "https://github.com/Tobion" 310 | } 311 | ], 312 | "description": "PSR-7 message implementation that also provides common utility methods", 313 | "keywords": [ 314 | "http", 315 | "message", 316 | "psr-7", 317 | "request", 318 | "response", 319 | "stream", 320 | "uri", 321 | "url" 322 | ], 323 | "time": "2019-07-01T23:21:34+00:00" 324 | }, 325 | { 326 | "name": "illuminate/contracts", 327 | "version": "v5.8.36", 328 | "source": { 329 | "type": "git", 330 | "url": "https://github.com/illuminate/contracts.git", 331 | "reference": "00fc6afee788fa07c311b0650ad276585f8aef96" 332 | }, 333 | "dist": { 334 | "type": "zip", 335 | "url": "https://api.github.com/repos/illuminate/contracts/zipball/00fc6afee788fa07c311b0650ad276585f8aef96", 336 | "reference": "00fc6afee788fa07c311b0650ad276585f8aef96", 337 | "shasum": "" 338 | }, 339 | "require": { 340 | "php": "^7.1.3", 341 | "psr/container": "^1.0", 342 | "psr/simple-cache": "^1.0" 343 | }, 344 | "type": "library", 345 | "extra": { 346 | "branch-alias": { 347 | "dev-master": "5.8-dev" 348 | } 349 | }, 350 | "autoload": { 351 | "psr-4": { 352 | "Illuminate\\Contracts\\": "" 353 | } 354 | }, 355 | "notification-url": "https://packagist.org/downloads/", 356 | "license": [ 357 | "MIT" 358 | ], 359 | "authors": [ 360 | { 361 | "name": "Taylor Otwell", 362 | "email": "taylor@laravel.com" 363 | } 364 | ], 365 | "description": "The Illuminate Contracts package.", 366 | "homepage": "https://laravel.com", 367 | "time": "2019-07-30T13:57:21+00:00" 368 | }, 369 | { 370 | "name": "illuminate/support", 371 | "version": "v5.8.36", 372 | "source": { 373 | "type": "git", 374 | "url": "https://github.com/illuminate/support.git", 375 | "reference": "df4af6a32908f1d89d74348624b57e3233eea247" 376 | }, 377 | "dist": { 378 | "type": "zip", 379 | "url": "https://api.github.com/repos/illuminate/support/zipball/df4af6a32908f1d89d74348624b57e3233eea247", 380 | "reference": "df4af6a32908f1d89d74348624b57e3233eea247", 381 | "shasum": "" 382 | }, 383 | "require": { 384 | "doctrine/inflector": "^1.1", 385 | "ext-json": "*", 386 | "ext-mbstring": "*", 387 | "illuminate/contracts": "5.8.*", 388 | "nesbot/carbon": "^1.26.3 || ^2.0", 389 | "php": "^7.1.3" 390 | }, 391 | "conflict": { 392 | "tightenco/collect": "<5.5.33" 393 | }, 394 | "suggest": { 395 | "illuminate/filesystem": "Required to use the composer class (5.8.*).", 396 | "moontoast/math": "Required to use ordered UUIDs (^1.1).", 397 | "ramsey/uuid": "Required to use Str::uuid() (^3.7).", 398 | "symfony/process": "Required to use the composer class (^4.2).", 399 | "symfony/var-dumper": "Required to use the dd function (^4.2).", 400 | "vlucas/phpdotenv": "Required to use the env helper (^3.3)." 401 | }, 402 | "type": "library", 403 | "extra": { 404 | "branch-alias": { 405 | "dev-master": "5.8-dev" 406 | } 407 | }, 408 | "autoload": { 409 | "psr-4": { 410 | "Illuminate\\Support\\": "" 411 | }, 412 | "files": [ 413 | "helpers.php" 414 | ] 415 | }, 416 | "notification-url": "https://packagist.org/downloads/", 417 | "license": [ 418 | "MIT" 419 | ], 420 | "authors": [ 421 | { 422 | "name": "Taylor Otwell", 423 | "email": "taylor@laravel.com" 424 | } 425 | ], 426 | "description": "The Illuminate Support package.", 427 | "homepage": "https://laravel.com", 428 | "time": "2019-12-12T14:16:47+00:00" 429 | }, 430 | { 431 | "name": "nesbot/carbon", 432 | "version": "2.35.0", 433 | "source": { 434 | "type": "git", 435 | "url": "https://github.com/briannesbitt/Carbon.git", 436 | "reference": "4b9bd835261ef23d36397a46a76b496a458305e5" 437 | }, 438 | "dist": { 439 | "type": "zip", 440 | "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/4b9bd835261ef23d36397a46a76b496a458305e5", 441 | "reference": "4b9bd835261ef23d36397a46a76b496a458305e5", 442 | "shasum": "" 443 | }, 444 | "require": { 445 | "ext-json": "*", 446 | "php": "^7.1.8 || ^8.0", 447 | "symfony/polyfill-mbstring": "^1.0", 448 | "symfony/translation": "^3.4 || ^4.0 || ^5.0" 449 | }, 450 | "require-dev": { 451 | "doctrine/orm": "^2.7", 452 | "friendsofphp/php-cs-fixer": "^2.14 || ^3.0", 453 | "kylekatarnls/multi-tester": "^1.1", 454 | "phpmd/phpmd": "^2.8", 455 | "phpstan/phpstan": "^0.11", 456 | "phpunit/phpunit": "^7.5 || ^8.0", 457 | "squizlabs/php_codesniffer": "^3.4" 458 | }, 459 | "bin": [ 460 | "bin/carbon" 461 | ], 462 | "type": "library", 463 | "extra": { 464 | "branch-alias": { 465 | "dev-master": "2.x-dev", 466 | "dev-3.x": "3.x-dev" 467 | }, 468 | "laravel": { 469 | "providers": [ 470 | "Carbon\\Laravel\\ServiceProvider" 471 | ] 472 | } 473 | }, 474 | "autoload": { 475 | "psr-4": { 476 | "Carbon\\": "src/Carbon/" 477 | } 478 | }, 479 | "notification-url": "https://packagist.org/downloads/", 480 | "license": [ 481 | "MIT" 482 | ], 483 | "authors": [ 484 | { 485 | "name": "Brian Nesbitt", 486 | "email": "brian@nesbot.com", 487 | "homepage": "http://nesbot.com" 488 | }, 489 | { 490 | "name": "kylekatarnls", 491 | "homepage": "http://github.com/kylekatarnls" 492 | } 493 | ], 494 | "description": "An API extension for DateTime that supports 281 different languages.", 495 | "homepage": "http://carbon.nesbot.com", 496 | "keywords": [ 497 | "date", 498 | "datetime", 499 | "time" 500 | ], 501 | "time": "2020-05-24T18:27:52+00:00" 502 | }, 503 | { 504 | "name": "psr/container", 505 | "version": "1.0.0", 506 | "source": { 507 | "type": "git", 508 | "url": "https://github.com/php-fig/container.git", 509 | "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" 510 | }, 511 | "dist": { 512 | "type": "zip", 513 | "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", 514 | "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", 515 | "shasum": "" 516 | }, 517 | "require": { 518 | "php": ">=5.3.0" 519 | }, 520 | "type": "library", 521 | "extra": { 522 | "branch-alias": { 523 | "dev-master": "1.0.x-dev" 524 | } 525 | }, 526 | "autoload": { 527 | "psr-4": { 528 | "Psr\\Container\\": "src/" 529 | } 530 | }, 531 | "notification-url": "https://packagist.org/downloads/", 532 | "license": [ 533 | "MIT" 534 | ], 535 | "authors": [ 536 | { 537 | "name": "PHP-FIG", 538 | "homepage": "http://www.php-fig.org/" 539 | } 540 | ], 541 | "description": "Common Container Interface (PHP FIG PSR-11)", 542 | "homepage": "https://github.com/php-fig/container", 543 | "keywords": [ 544 | "PSR-11", 545 | "container", 546 | "container-interface", 547 | "container-interop", 548 | "psr" 549 | ], 550 | "time": "2017-02-14T16:28:37+00:00" 551 | }, 552 | { 553 | "name": "psr/http-message", 554 | "version": "1.0.1", 555 | "source": { 556 | "type": "git", 557 | "url": "https://github.com/php-fig/http-message.git", 558 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" 559 | }, 560 | "dist": { 561 | "type": "zip", 562 | "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", 563 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", 564 | "shasum": "" 565 | }, 566 | "require": { 567 | "php": ">=5.3.0" 568 | }, 569 | "type": "library", 570 | "extra": { 571 | "branch-alias": { 572 | "dev-master": "1.0.x-dev" 573 | } 574 | }, 575 | "autoload": { 576 | "psr-4": { 577 | "Psr\\Http\\Message\\": "src/" 578 | } 579 | }, 580 | "notification-url": "https://packagist.org/downloads/", 581 | "license": [ 582 | "MIT" 583 | ], 584 | "authors": [ 585 | { 586 | "name": "PHP-FIG", 587 | "homepage": "http://www.php-fig.org/" 588 | } 589 | ], 590 | "description": "Common interface for HTTP messages", 591 | "homepage": "https://github.com/php-fig/http-message", 592 | "keywords": [ 593 | "http", 594 | "http-message", 595 | "psr", 596 | "psr-7", 597 | "request", 598 | "response" 599 | ], 600 | "time": "2016-08-06T14:39:51+00:00" 601 | }, 602 | { 603 | "name": "psr/simple-cache", 604 | "version": "1.0.1", 605 | "source": { 606 | "type": "git", 607 | "url": "https://github.com/php-fig/simple-cache.git", 608 | "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" 609 | }, 610 | "dist": { 611 | "type": "zip", 612 | "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", 613 | "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", 614 | "shasum": "" 615 | }, 616 | "require": { 617 | "php": ">=5.3.0" 618 | }, 619 | "type": "library", 620 | "extra": { 621 | "branch-alias": { 622 | "dev-master": "1.0.x-dev" 623 | } 624 | }, 625 | "autoload": { 626 | "psr-4": { 627 | "Psr\\SimpleCache\\": "src/" 628 | } 629 | }, 630 | "notification-url": "https://packagist.org/downloads/", 631 | "license": [ 632 | "MIT" 633 | ], 634 | "authors": [ 635 | { 636 | "name": "PHP-FIG", 637 | "homepage": "http://www.php-fig.org/" 638 | } 639 | ], 640 | "description": "Common interfaces for simple caching", 641 | "keywords": [ 642 | "cache", 643 | "caching", 644 | "psr", 645 | "psr-16", 646 | "simple-cache" 647 | ], 648 | "time": "2017-10-23T01:57:42+00:00" 649 | }, 650 | { 651 | "name": "ralouphie/getallheaders", 652 | "version": "3.0.3", 653 | "source": { 654 | "type": "git", 655 | "url": "https://github.com/ralouphie/getallheaders.git", 656 | "reference": "120b605dfeb996808c31b6477290a714d356e822" 657 | }, 658 | "dist": { 659 | "type": "zip", 660 | "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", 661 | "reference": "120b605dfeb996808c31b6477290a714d356e822", 662 | "shasum": "" 663 | }, 664 | "require": { 665 | "php": ">=5.6" 666 | }, 667 | "require-dev": { 668 | "php-coveralls/php-coveralls": "^2.1", 669 | "phpunit/phpunit": "^5 || ^6.5" 670 | }, 671 | "type": "library", 672 | "autoload": { 673 | "files": [ 674 | "src/getallheaders.php" 675 | ] 676 | }, 677 | "notification-url": "https://packagist.org/downloads/", 678 | "license": [ 679 | "MIT" 680 | ], 681 | "authors": [ 682 | { 683 | "name": "Ralph Khattar", 684 | "email": "ralph.khattar@gmail.com" 685 | } 686 | ], 687 | "description": "A polyfill for getallheaders.", 688 | "time": "2019-03-08T08:55:37+00:00" 689 | }, 690 | { 691 | "name": "symfony/polyfill-intl-idn", 692 | "version": "v1.17.0", 693 | "source": { 694 | "type": "git", 695 | "url": "https://github.com/symfony/polyfill-intl-idn.git", 696 | "reference": "3bff59ea7047e925be6b7f2059d60af31bb46d6a" 697 | }, 698 | "dist": { 699 | "type": "zip", 700 | "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/3bff59ea7047e925be6b7f2059d60af31bb46d6a", 701 | "reference": "3bff59ea7047e925be6b7f2059d60af31bb46d6a", 702 | "shasum": "" 703 | }, 704 | "require": { 705 | "php": ">=5.3.3", 706 | "symfony/polyfill-mbstring": "^1.3", 707 | "symfony/polyfill-php72": "^1.10" 708 | }, 709 | "suggest": { 710 | "ext-intl": "For best performance" 711 | }, 712 | "type": "library", 713 | "extra": { 714 | "branch-alias": { 715 | "dev-master": "1.17-dev" 716 | } 717 | }, 718 | "autoload": { 719 | "psr-4": { 720 | "Symfony\\Polyfill\\Intl\\Idn\\": "" 721 | }, 722 | "files": [ 723 | "bootstrap.php" 724 | ] 725 | }, 726 | "notification-url": "https://packagist.org/downloads/", 727 | "license": [ 728 | "MIT" 729 | ], 730 | "authors": [ 731 | { 732 | "name": "Laurent Bassin", 733 | "email": "laurent@bassin.info" 734 | }, 735 | { 736 | "name": "Symfony Community", 737 | "homepage": "https://symfony.com/contributors" 738 | } 739 | ], 740 | "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", 741 | "homepage": "https://symfony.com", 742 | "keywords": [ 743 | "compatibility", 744 | "idn", 745 | "intl", 746 | "polyfill", 747 | "portable", 748 | "shim" 749 | ], 750 | "time": "2020-05-12T16:47:27+00:00" 751 | }, 752 | { 753 | "name": "symfony/polyfill-mbstring", 754 | "version": "v1.17.0", 755 | "source": { 756 | "type": "git", 757 | "url": "https://github.com/symfony/polyfill-mbstring.git", 758 | "reference": "fa79b11539418b02fc5e1897267673ba2c19419c" 759 | }, 760 | "dist": { 761 | "type": "zip", 762 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fa79b11539418b02fc5e1897267673ba2c19419c", 763 | "reference": "fa79b11539418b02fc5e1897267673ba2c19419c", 764 | "shasum": "" 765 | }, 766 | "require": { 767 | "php": ">=5.3.3" 768 | }, 769 | "suggest": { 770 | "ext-mbstring": "For best performance" 771 | }, 772 | "type": "library", 773 | "extra": { 774 | "branch-alias": { 775 | "dev-master": "1.17-dev" 776 | } 777 | }, 778 | "autoload": { 779 | "psr-4": { 780 | "Symfony\\Polyfill\\Mbstring\\": "" 781 | }, 782 | "files": [ 783 | "bootstrap.php" 784 | ] 785 | }, 786 | "notification-url": "https://packagist.org/downloads/", 787 | "license": [ 788 | "MIT" 789 | ], 790 | "authors": [ 791 | { 792 | "name": "Nicolas Grekas", 793 | "email": "p@tchwork.com" 794 | }, 795 | { 796 | "name": "Symfony Community", 797 | "homepage": "https://symfony.com/contributors" 798 | } 799 | ], 800 | "description": "Symfony polyfill for the Mbstring extension", 801 | "homepage": "https://symfony.com", 802 | "keywords": [ 803 | "compatibility", 804 | "mbstring", 805 | "polyfill", 806 | "portable", 807 | "shim" 808 | ], 809 | "time": "2020-05-12T16:47:27+00:00" 810 | }, 811 | { 812 | "name": "symfony/polyfill-php72", 813 | "version": "v1.17.0", 814 | "source": { 815 | "type": "git", 816 | "url": "https://github.com/symfony/polyfill-php72.git", 817 | "reference": "f048e612a3905f34931127360bdd2def19a5e582" 818 | }, 819 | "dist": { 820 | "type": "zip", 821 | "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/f048e612a3905f34931127360bdd2def19a5e582", 822 | "reference": "f048e612a3905f34931127360bdd2def19a5e582", 823 | "shasum": "" 824 | }, 825 | "require": { 826 | "php": ">=5.3.3" 827 | }, 828 | "type": "library", 829 | "extra": { 830 | "branch-alias": { 831 | "dev-master": "1.17-dev" 832 | } 833 | }, 834 | "autoload": { 835 | "psr-4": { 836 | "Symfony\\Polyfill\\Php72\\": "" 837 | }, 838 | "files": [ 839 | "bootstrap.php" 840 | ] 841 | }, 842 | "notification-url": "https://packagist.org/downloads/", 843 | "license": [ 844 | "MIT" 845 | ], 846 | "authors": [ 847 | { 848 | "name": "Nicolas Grekas", 849 | "email": "p@tchwork.com" 850 | }, 851 | { 852 | "name": "Symfony Community", 853 | "homepage": "https://symfony.com/contributors" 854 | } 855 | ], 856 | "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", 857 | "homepage": "https://symfony.com", 858 | "keywords": [ 859 | "compatibility", 860 | "polyfill", 861 | "portable", 862 | "shim" 863 | ], 864 | "time": "2020-05-12T16:47:27+00:00" 865 | }, 866 | { 867 | "name": "symfony/polyfill-php80", 868 | "version": "v1.17.0", 869 | "source": { 870 | "type": "git", 871 | "url": "https://github.com/symfony/polyfill-php80.git", 872 | "reference": "5e30b2799bc1ad68f7feb62b60a73743589438dd" 873 | }, 874 | "dist": { 875 | "type": "zip", 876 | "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/5e30b2799bc1ad68f7feb62b60a73743589438dd", 877 | "reference": "5e30b2799bc1ad68f7feb62b60a73743589438dd", 878 | "shasum": "" 879 | }, 880 | "require": { 881 | "php": ">=7.0.8" 882 | }, 883 | "type": "library", 884 | "extra": { 885 | "branch-alias": { 886 | "dev-master": "1.17-dev" 887 | } 888 | }, 889 | "autoload": { 890 | "psr-4": { 891 | "Symfony\\Polyfill\\Php80\\": "" 892 | }, 893 | "files": [ 894 | "bootstrap.php" 895 | ], 896 | "classmap": [ 897 | "Resources/stubs" 898 | ] 899 | }, 900 | "notification-url": "https://packagist.org/downloads/", 901 | "license": [ 902 | "MIT" 903 | ], 904 | "authors": [ 905 | { 906 | "name": "Ion Bazan", 907 | "email": "ion.bazan@gmail.com" 908 | }, 909 | { 910 | "name": "Nicolas Grekas", 911 | "email": "p@tchwork.com" 912 | }, 913 | { 914 | "name": "Symfony Community", 915 | "homepage": "https://symfony.com/contributors" 916 | } 917 | ], 918 | "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", 919 | "homepage": "https://symfony.com", 920 | "keywords": [ 921 | "compatibility", 922 | "polyfill", 923 | "portable", 924 | "shim" 925 | ], 926 | "time": "2020-05-12T16:47:27+00:00" 927 | }, 928 | { 929 | "name": "symfony/translation", 930 | "version": "v5.1.2", 931 | "source": { 932 | "type": "git", 933 | "url": "https://github.com/symfony/translation.git", 934 | "reference": "d387f07d4c15f9c09439cf3f13ddbe0b2c5e8be2" 935 | }, 936 | "dist": { 937 | "type": "zip", 938 | "url": "https://api.github.com/repos/symfony/translation/zipball/d387f07d4c15f9c09439cf3f13ddbe0b2c5e8be2", 939 | "reference": "d387f07d4c15f9c09439cf3f13ddbe0b2c5e8be2", 940 | "shasum": "" 941 | }, 942 | "require": { 943 | "php": ">=7.2.5", 944 | "symfony/polyfill-mbstring": "~1.0", 945 | "symfony/polyfill-php80": "^1.15", 946 | "symfony/translation-contracts": "^2" 947 | }, 948 | "conflict": { 949 | "symfony/config": "<4.4", 950 | "symfony/dependency-injection": "<5.0", 951 | "symfony/http-kernel": "<5.0", 952 | "symfony/twig-bundle": "<5.0", 953 | "symfony/yaml": "<4.4" 954 | }, 955 | "provide": { 956 | "symfony/translation-implementation": "2.0" 957 | }, 958 | "require-dev": { 959 | "psr/log": "~1.0", 960 | "symfony/config": "^4.4|^5.0", 961 | "symfony/console": "^4.4|^5.0", 962 | "symfony/dependency-injection": "^5.0", 963 | "symfony/finder": "^4.4|^5.0", 964 | "symfony/http-kernel": "^5.0", 965 | "symfony/intl": "^4.4|^5.0", 966 | "symfony/service-contracts": "^1.1.2|^2", 967 | "symfony/yaml": "^4.4|^5.0" 968 | }, 969 | "suggest": { 970 | "psr/log-implementation": "To use logging capability in translator", 971 | "symfony/config": "", 972 | "symfony/yaml": "" 973 | }, 974 | "type": "library", 975 | "extra": { 976 | "branch-alias": { 977 | "dev-master": "5.1-dev" 978 | } 979 | }, 980 | "autoload": { 981 | "psr-4": { 982 | "Symfony\\Component\\Translation\\": "" 983 | }, 984 | "exclude-from-classmap": [ 985 | "/Tests/" 986 | ] 987 | }, 988 | "notification-url": "https://packagist.org/downloads/", 989 | "license": [ 990 | "MIT" 991 | ], 992 | "authors": [ 993 | { 994 | "name": "Fabien Potencier", 995 | "email": "fabien@symfony.com" 996 | }, 997 | { 998 | "name": "Symfony Community", 999 | "homepage": "https://symfony.com/contributors" 1000 | } 1001 | ], 1002 | "description": "Symfony Translation Component", 1003 | "homepage": "https://symfony.com", 1004 | "time": "2020-05-30T20:35:19+00:00" 1005 | }, 1006 | { 1007 | "name": "symfony/translation-contracts", 1008 | "version": "v2.1.2", 1009 | "source": { 1010 | "type": "git", 1011 | "url": "https://github.com/symfony/translation-contracts.git", 1012 | "reference": "e5ca07c8f817f865f618aa072c2fe8e0e637340e" 1013 | }, 1014 | "dist": { 1015 | "type": "zip", 1016 | "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/e5ca07c8f817f865f618aa072c2fe8e0e637340e", 1017 | "reference": "e5ca07c8f817f865f618aa072c2fe8e0e637340e", 1018 | "shasum": "" 1019 | }, 1020 | "require": { 1021 | "php": ">=7.2.5" 1022 | }, 1023 | "suggest": { 1024 | "symfony/translation-implementation": "" 1025 | }, 1026 | "type": "library", 1027 | "extra": { 1028 | "branch-alias": { 1029 | "dev-master": "2.1-dev" 1030 | } 1031 | }, 1032 | "autoload": { 1033 | "psr-4": { 1034 | "Symfony\\Contracts\\Translation\\": "" 1035 | } 1036 | }, 1037 | "notification-url": "https://packagist.org/downloads/", 1038 | "license": [ 1039 | "MIT" 1040 | ], 1041 | "authors": [ 1042 | { 1043 | "name": "Nicolas Grekas", 1044 | "email": "p@tchwork.com" 1045 | }, 1046 | { 1047 | "name": "Symfony Community", 1048 | "homepage": "https://symfony.com/contributors" 1049 | } 1050 | ], 1051 | "description": "Generic abstractions related to translation", 1052 | "homepage": "https://symfony.com", 1053 | "keywords": [ 1054 | "abstractions", 1055 | "contracts", 1056 | "decoupling", 1057 | "interfaces", 1058 | "interoperability", 1059 | "standards" 1060 | ], 1061 | "time": "2020-05-20T17:43:50+00:00" 1062 | } 1063 | ], 1064 | "packages-dev": [ 1065 | { 1066 | "name": "composer/package-versions-deprecated", 1067 | "version": "1.8.0", 1068 | "source": { 1069 | "type": "git", 1070 | "url": "https://github.com/composer/package-versions-deprecated.git", 1071 | "reference": "98df7f1b293c0550bd5b1ce6b60b59bdda23aa47" 1072 | }, 1073 | "dist": { 1074 | "type": "zip", 1075 | "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/98df7f1b293c0550bd5b1ce6b60b59bdda23aa47", 1076 | "reference": "98df7f1b293c0550bd5b1ce6b60b59bdda23aa47", 1077 | "shasum": "" 1078 | }, 1079 | "require": { 1080 | "composer-plugin-api": "^1.1.0 || ^2.0", 1081 | "php": "^7" 1082 | }, 1083 | "replace": { 1084 | "ocramius/package-versions": "1.2 - 1.8.99" 1085 | }, 1086 | "require-dev": { 1087 | "composer/composer": "^1.9.3 || ^2.0@dev", 1088 | "ext-zip": "^1.13", 1089 | "phpunit/phpunit": "^6.5 || ^7" 1090 | }, 1091 | "type": "composer-plugin", 1092 | "extra": { 1093 | "class": "PackageVersions\\Installer", 1094 | "branch-alias": { 1095 | "dev-master": "1.x-dev" 1096 | } 1097 | }, 1098 | "autoload": { 1099 | "psr-4": { 1100 | "PackageVersions\\": "src/PackageVersions" 1101 | } 1102 | }, 1103 | "notification-url": "https://packagist.org/downloads/", 1104 | "license": [ 1105 | "MIT" 1106 | ], 1107 | "authors": [ 1108 | { 1109 | "name": "Marco Pivetta", 1110 | "email": "ocramius@gmail.com" 1111 | }, 1112 | { 1113 | "name": "Jordi Boggiano", 1114 | "email": "j.boggiano@seld.be" 1115 | } 1116 | ], 1117 | "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", 1118 | "time": "2020-04-23T11:49:37+00:00" 1119 | }, 1120 | { 1121 | "name": "composer/xdebug-handler", 1122 | "version": "1.4.2", 1123 | "source": { 1124 | "type": "git", 1125 | "url": "https://github.com/composer/xdebug-handler.git", 1126 | "reference": "fa2aaf99e2087f013a14f7432c1cd2dd7d8f1f51" 1127 | }, 1128 | "dist": { 1129 | "type": "zip", 1130 | "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/fa2aaf99e2087f013a14f7432c1cd2dd7d8f1f51", 1131 | "reference": "fa2aaf99e2087f013a14f7432c1cd2dd7d8f1f51", 1132 | "shasum": "" 1133 | }, 1134 | "require": { 1135 | "php": "^5.3.2 || ^7.0 || ^8.0", 1136 | "psr/log": "^1.0" 1137 | }, 1138 | "require-dev": { 1139 | "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8" 1140 | }, 1141 | "type": "library", 1142 | "autoload": { 1143 | "psr-4": { 1144 | "Composer\\XdebugHandler\\": "src" 1145 | } 1146 | }, 1147 | "notification-url": "https://packagist.org/downloads/", 1148 | "license": [ 1149 | "MIT" 1150 | ], 1151 | "authors": [ 1152 | { 1153 | "name": "John Stevenson", 1154 | "email": "john-stevenson@blueyonder.co.uk" 1155 | } 1156 | ], 1157 | "description": "Restarts a process without Xdebug.", 1158 | "keywords": [ 1159 | "Xdebug", 1160 | "performance" 1161 | ], 1162 | "time": "2020-06-04T11:16:35+00:00" 1163 | }, 1164 | { 1165 | "name": "doctrine/instantiator", 1166 | "version": "1.3.1", 1167 | "source": { 1168 | "type": "git", 1169 | "url": "https://github.com/doctrine/instantiator.git", 1170 | "reference": "f350df0268e904597e3bd9c4685c53e0e333feea" 1171 | }, 1172 | "dist": { 1173 | "type": "zip", 1174 | "url": "https://api.github.com/repos/doctrine/instantiator/zipball/f350df0268e904597e3bd9c4685c53e0e333feea", 1175 | "reference": "f350df0268e904597e3bd9c4685c53e0e333feea", 1176 | "shasum": "" 1177 | }, 1178 | "require": { 1179 | "php": "^7.1 || ^8.0" 1180 | }, 1181 | "require-dev": { 1182 | "doctrine/coding-standard": "^6.0", 1183 | "ext-pdo": "*", 1184 | "ext-phar": "*", 1185 | "phpbench/phpbench": "^0.13", 1186 | "phpstan/phpstan-phpunit": "^0.11", 1187 | "phpstan/phpstan-shim": "^0.11", 1188 | "phpunit/phpunit": "^7.0" 1189 | }, 1190 | "type": "library", 1191 | "extra": { 1192 | "branch-alias": { 1193 | "dev-master": "1.2.x-dev" 1194 | } 1195 | }, 1196 | "autoload": { 1197 | "psr-4": { 1198 | "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" 1199 | } 1200 | }, 1201 | "notification-url": "https://packagist.org/downloads/", 1202 | "license": [ 1203 | "MIT" 1204 | ], 1205 | "authors": [ 1206 | { 1207 | "name": "Marco Pivetta", 1208 | "email": "ocramius@gmail.com", 1209 | "homepage": "http://ocramius.github.com/" 1210 | } 1211 | ], 1212 | "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", 1213 | "homepage": "https://www.doctrine-project.org/projects/instantiator.html", 1214 | "keywords": [ 1215 | "constructor", 1216 | "instantiate" 1217 | ], 1218 | "time": "2020-05-29T17:27:14+00:00" 1219 | }, 1220 | { 1221 | "name": "jean85/pretty-package-versions", 1222 | "version": "1.3.0", 1223 | "source": { 1224 | "type": "git", 1225 | "url": "https://github.com/Jean85/pretty-package-versions.git", 1226 | "reference": "e3517fb11b67e798239354fe8213927d012ad8f9" 1227 | }, 1228 | "dist": { 1229 | "type": "zip", 1230 | "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/e3517fb11b67e798239354fe8213927d012ad8f9", 1231 | "reference": "e3517fb11b67e798239354fe8213927d012ad8f9", 1232 | "shasum": "" 1233 | }, 1234 | "require": { 1235 | "composer/package-versions-deprecated": "^1.8.0", 1236 | "php": "^7.0" 1237 | }, 1238 | "require-dev": { 1239 | "phpunit/phpunit": "^6.0" 1240 | }, 1241 | "type": "library", 1242 | "extra": { 1243 | "branch-alias": { 1244 | "dev-master": "1.x-dev" 1245 | } 1246 | }, 1247 | "autoload": { 1248 | "psr-4": { 1249 | "Jean85\\": "src/" 1250 | } 1251 | }, 1252 | "notification-url": "https://packagist.org/downloads/", 1253 | "license": [ 1254 | "MIT" 1255 | ], 1256 | "authors": [ 1257 | { 1258 | "name": "Alessandro Lai", 1259 | "email": "alessandro.lai85@gmail.com" 1260 | } 1261 | ], 1262 | "description": "A wrapper for ocramius/package-versions to get pretty versions strings", 1263 | "keywords": [ 1264 | "composer", 1265 | "package", 1266 | "release", 1267 | "versions" 1268 | ], 1269 | "time": "2020-04-24T14:19:45+00:00" 1270 | }, 1271 | { 1272 | "name": "myclabs/deep-copy", 1273 | "version": "1.9.5", 1274 | "source": { 1275 | "type": "git", 1276 | "url": "https://github.com/myclabs/DeepCopy.git", 1277 | "reference": "b2c28789e80a97badd14145fda39b545d83ca3ef" 1278 | }, 1279 | "dist": { 1280 | "type": "zip", 1281 | "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/b2c28789e80a97badd14145fda39b545d83ca3ef", 1282 | "reference": "b2c28789e80a97badd14145fda39b545d83ca3ef", 1283 | "shasum": "" 1284 | }, 1285 | "require": { 1286 | "php": "^7.1" 1287 | }, 1288 | "replace": { 1289 | "myclabs/deep-copy": "self.version" 1290 | }, 1291 | "require-dev": { 1292 | "doctrine/collections": "^1.0", 1293 | "doctrine/common": "^2.6", 1294 | "phpunit/phpunit": "^7.1" 1295 | }, 1296 | "type": "library", 1297 | "autoload": { 1298 | "psr-4": { 1299 | "DeepCopy\\": "src/DeepCopy/" 1300 | }, 1301 | "files": [ 1302 | "src/DeepCopy/deep_copy.php" 1303 | ] 1304 | }, 1305 | "notification-url": "https://packagist.org/downloads/", 1306 | "license": [ 1307 | "MIT" 1308 | ], 1309 | "description": "Create deep copies (clones) of your objects", 1310 | "keywords": [ 1311 | "clone", 1312 | "copy", 1313 | "duplicate", 1314 | "object", 1315 | "object graph" 1316 | ], 1317 | "time": "2020-01-17T21:11:47+00:00" 1318 | }, 1319 | { 1320 | "name": "nette/bootstrap", 1321 | "version": "v3.0.2", 1322 | "source": { 1323 | "type": "git", 1324 | "url": "https://github.com/nette/bootstrap.git", 1325 | "reference": "67830a65b42abfb906f8e371512d336ebfb5da93" 1326 | }, 1327 | "dist": { 1328 | "type": "zip", 1329 | "url": "https://api.github.com/repos/nette/bootstrap/zipball/67830a65b42abfb906f8e371512d336ebfb5da93", 1330 | "reference": "67830a65b42abfb906f8e371512d336ebfb5da93", 1331 | "shasum": "" 1332 | }, 1333 | "require": { 1334 | "nette/di": "^3.0", 1335 | "nette/utils": "^3.0", 1336 | "php": ">=7.1" 1337 | }, 1338 | "conflict": { 1339 | "tracy/tracy": "<2.6" 1340 | }, 1341 | "require-dev": { 1342 | "latte/latte": "^2.2", 1343 | "nette/application": "^3.0", 1344 | "nette/caching": "^3.0", 1345 | "nette/database": "^3.0", 1346 | "nette/forms": "^3.0", 1347 | "nette/http": "^3.0", 1348 | "nette/mail": "^3.0", 1349 | "nette/robot-loader": "^3.0", 1350 | "nette/safe-stream": "^2.2", 1351 | "nette/security": "^3.0", 1352 | "nette/tester": "^2.0", 1353 | "phpstan/phpstan-nette": "^0.12", 1354 | "tracy/tracy": "^2.6" 1355 | }, 1356 | "suggest": { 1357 | "nette/robot-loader": "to use Configurator::createRobotLoader()", 1358 | "tracy/tracy": "to use Configurator::enableTracy()" 1359 | }, 1360 | "type": "library", 1361 | "extra": { 1362 | "branch-alias": { 1363 | "dev-master": "3.0-dev" 1364 | } 1365 | }, 1366 | "autoload": { 1367 | "classmap": [ 1368 | "src/" 1369 | ] 1370 | }, 1371 | "notification-url": "https://packagist.org/downloads/", 1372 | "license": [ 1373 | "BSD-3-Clause", 1374 | "GPL-2.0-only", 1375 | "GPL-3.0-only" 1376 | ], 1377 | "authors": [ 1378 | { 1379 | "name": "David Grudl", 1380 | "homepage": "https://davidgrudl.com" 1381 | }, 1382 | { 1383 | "name": "Nette Community", 1384 | "homepage": "https://nette.org/contributors" 1385 | } 1386 | ], 1387 | "description": "🅱 Nette Bootstrap: the simple way to configure and bootstrap your Nette application.", 1388 | "homepage": "https://nette.org", 1389 | "keywords": [ 1390 | "bootstrapping", 1391 | "configurator", 1392 | "nette" 1393 | ], 1394 | "time": "2020-05-26T08:46:23+00:00" 1395 | }, 1396 | { 1397 | "name": "nette/di", 1398 | "version": "v3.0.4", 1399 | "source": { 1400 | "type": "git", 1401 | "url": "https://github.com/nette/di.git", 1402 | "reference": "34d3e47ebe96229b7671664893a3b1128c102213" 1403 | }, 1404 | "dist": { 1405 | "type": "zip", 1406 | "url": "https://api.github.com/repos/nette/di/zipball/34d3e47ebe96229b7671664893a3b1128c102213", 1407 | "reference": "34d3e47ebe96229b7671664893a3b1128c102213", 1408 | "shasum": "" 1409 | }, 1410 | "require": { 1411 | "ext-tokenizer": "*", 1412 | "nette/neon": "^3.0", 1413 | "nette/php-generator": "^3.3.3", 1414 | "nette/robot-loader": "^3.2", 1415 | "nette/schema": "^1.0", 1416 | "nette/utils": "^3.1", 1417 | "php": ">=7.1" 1418 | }, 1419 | "conflict": { 1420 | "nette/bootstrap": "<3.0" 1421 | }, 1422 | "require-dev": { 1423 | "nette/tester": "^2.2", 1424 | "phpstan/phpstan": "^0.12", 1425 | "tracy/tracy": "^2.3" 1426 | }, 1427 | "type": "library", 1428 | "extra": { 1429 | "branch-alias": { 1430 | "dev-master": "3.0-dev" 1431 | } 1432 | }, 1433 | "autoload": { 1434 | "classmap": [ 1435 | "src/" 1436 | ] 1437 | }, 1438 | "notification-url": "https://packagist.org/downloads/", 1439 | "license": [ 1440 | "BSD-3-Clause", 1441 | "GPL-2.0-only", 1442 | "GPL-3.0-only" 1443 | ], 1444 | "authors": [ 1445 | { 1446 | "name": "David Grudl", 1447 | "homepage": "https://davidgrudl.com" 1448 | }, 1449 | { 1450 | "name": "Nette Community", 1451 | "homepage": "https://nette.org/contributors" 1452 | } 1453 | ], 1454 | "description": "💎 Nette Dependency Injection Container: Flexible, compiled and full-featured DIC with perfectly usable autowiring and support for all new PHP 7.1 features.", 1455 | "homepage": "https://nette.org", 1456 | "keywords": [ 1457 | "compiled", 1458 | "di", 1459 | "dic", 1460 | "factory", 1461 | "ioc", 1462 | "nette", 1463 | "static" 1464 | ], 1465 | "time": "2020-05-14T10:29:59+00:00" 1466 | }, 1467 | { 1468 | "name": "nette/finder", 1469 | "version": "v2.5.2", 1470 | "source": { 1471 | "type": "git", 1472 | "url": "https://github.com/nette/finder.git", 1473 | "reference": "4ad2c298eb8c687dd0e74ae84206a4186eeaed50" 1474 | }, 1475 | "dist": { 1476 | "type": "zip", 1477 | "url": "https://api.github.com/repos/nette/finder/zipball/4ad2c298eb8c687dd0e74ae84206a4186eeaed50", 1478 | "reference": "4ad2c298eb8c687dd0e74ae84206a4186eeaed50", 1479 | "shasum": "" 1480 | }, 1481 | "require": { 1482 | "nette/utils": "^2.4 || ^3.0", 1483 | "php": ">=7.1" 1484 | }, 1485 | "conflict": { 1486 | "nette/nette": "<2.2" 1487 | }, 1488 | "require-dev": { 1489 | "nette/tester": "^2.0", 1490 | "phpstan/phpstan": "^0.12", 1491 | "tracy/tracy": "^2.3" 1492 | }, 1493 | "type": "library", 1494 | "extra": { 1495 | "branch-alias": { 1496 | "dev-master": "2.5-dev" 1497 | } 1498 | }, 1499 | "autoload": { 1500 | "classmap": [ 1501 | "src/" 1502 | ] 1503 | }, 1504 | "notification-url": "https://packagist.org/downloads/", 1505 | "license": [ 1506 | "BSD-3-Clause", 1507 | "GPL-2.0", 1508 | "GPL-3.0" 1509 | ], 1510 | "authors": [ 1511 | { 1512 | "name": "David Grudl", 1513 | "homepage": "https://davidgrudl.com" 1514 | }, 1515 | { 1516 | "name": "Nette Community", 1517 | "homepage": "https://nette.org/contributors" 1518 | } 1519 | ], 1520 | "description": "🔍 Nette Finder: find files and directories with an intuitive API.", 1521 | "homepage": "https://nette.org", 1522 | "keywords": [ 1523 | "filesystem", 1524 | "glob", 1525 | "iterator", 1526 | "nette" 1527 | ], 1528 | "time": "2020-01-03T20:35:40+00:00" 1529 | }, 1530 | { 1531 | "name": "nette/neon", 1532 | "version": "v3.1.2", 1533 | "source": { 1534 | "type": "git", 1535 | "url": "https://github.com/nette/neon.git", 1536 | "reference": "3c3dcbc6bf6c80dc97b1fc4ba9a22ae67930fc0e" 1537 | }, 1538 | "dist": { 1539 | "type": "zip", 1540 | "url": "https://api.github.com/repos/nette/neon/zipball/3c3dcbc6bf6c80dc97b1fc4ba9a22ae67930fc0e", 1541 | "reference": "3c3dcbc6bf6c80dc97b1fc4ba9a22ae67930fc0e", 1542 | "shasum": "" 1543 | }, 1544 | "require": { 1545 | "ext-iconv": "*", 1546 | "ext-json": "*", 1547 | "php": ">=7.1" 1548 | }, 1549 | "require-dev": { 1550 | "nette/tester": "^2.0", 1551 | "phpstan/phpstan": "^0.12", 1552 | "tracy/tracy": "^2.3" 1553 | }, 1554 | "type": "library", 1555 | "extra": { 1556 | "branch-alias": { 1557 | "dev-master": "3.1-dev" 1558 | } 1559 | }, 1560 | "autoload": { 1561 | "classmap": [ 1562 | "src/" 1563 | ] 1564 | }, 1565 | "notification-url": "https://packagist.org/downloads/", 1566 | "license": [ 1567 | "BSD-3-Clause", 1568 | "GPL-2.0-only", 1569 | "GPL-3.0-only" 1570 | ], 1571 | "authors": [ 1572 | { 1573 | "name": "David Grudl", 1574 | "homepage": "https://davidgrudl.com" 1575 | }, 1576 | { 1577 | "name": "Nette Community", 1578 | "homepage": "https://nette.org/contributors" 1579 | } 1580 | ], 1581 | "description": "🍸 Nette NEON: encodes and decodes NEON file format.", 1582 | "homepage": "https://ne-on.org", 1583 | "keywords": [ 1584 | "export", 1585 | "import", 1586 | "neon", 1587 | "nette", 1588 | "yaml" 1589 | ], 1590 | "time": "2020-03-04T11:47:04+00:00" 1591 | }, 1592 | { 1593 | "name": "nette/php-generator", 1594 | "version": "v3.4.0", 1595 | "source": { 1596 | "type": "git", 1597 | "url": "https://github.com/nette/php-generator.git", 1598 | "reference": "ea2c8e8d6439f0a4e3cd3431c572b51a8131539b" 1599 | }, 1600 | "dist": { 1601 | "type": "zip", 1602 | "url": "https://api.github.com/repos/nette/php-generator/zipball/ea2c8e8d6439f0a4e3cd3431c572b51a8131539b", 1603 | "reference": "ea2c8e8d6439f0a4e3cd3431c572b51a8131539b", 1604 | "shasum": "" 1605 | }, 1606 | "require": { 1607 | "ext-tokenizer": "*", 1608 | "nette/utils": "^2.4.2 || ^3.0", 1609 | "php": ">=7.1" 1610 | }, 1611 | "require-dev": { 1612 | "nette/tester": "^2.0", 1613 | "nikic/php-parser": "^4.4", 1614 | "phpstan/phpstan": "^0.12", 1615 | "tracy/tracy": "^2.3" 1616 | }, 1617 | "suggest": { 1618 | "nikic/php-parser": "to use ClassType::withBodiesFrom() & GlobalFunction::withBodyFrom()" 1619 | }, 1620 | "type": "library", 1621 | "extra": { 1622 | "branch-alias": { 1623 | "dev-master": "3.4-dev" 1624 | } 1625 | }, 1626 | "autoload": { 1627 | "classmap": [ 1628 | "src/" 1629 | ] 1630 | }, 1631 | "notification-url": "https://packagist.org/downloads/", 1632 | "license": [ 1633 | "BSD-3-Clause", 1634 | "GPL-2.0-only", 1635 | "GPL-3.0-only" 1636 | ], 1637 | "authors": [ 1638 | { 1639 | "name": "David Grudl", 1640 | "homepage": "https://davidgrudl.com" 1641 | }, 1642 | { 1643 | "name": "Nette Community", 1644 | "homepage": "https://nette.org/contributors" 1645 | } 1646 | ], 1647 | "description": "🐘 Nette PHP Generator: generates neat PHP code for you. Supports new PHP 7.4 features.", 1648 | "homepage": "https://nette.org", 1649 | "keywords": [ 1650 | "code", 1651 | "nette", 1652 | "php", 1653 | "scaffolding" 1654 | ], 1655 | "time": "2020-05-26T16:32:45+00:00" 1656 | }, 1657 | { 1658 | "name": "nette/robot-loader", 1659 | "version": "v3.2.3", 1660 | "source": { 1661 | "type": "git", 1662 | "url": "https://github.com/nette/robot-loader.git", 1663 | "reference": "726c462e73e739e965ec654a667407074cfe83c0" 1664 | }, 1665 | "dist": { 1666 | "type": "zip", 1667 | "url": "https://api.github.com/repos/nette/robot-loader/zipball/726c462e73e739e965ec654a667407074cfe83c0", 1668 | "reference": "726c462e73e739e965ec654a667407074cfe83c0", 1669 | "shasum": "" 1670 | }, 1671 | "require": { 1672 | "ext-tokenizer": "*", 1673 | "nette/finder": "^2.5 || ^3.0", 1674 | "nette/utils": "^3.0", 1675 | "php": ">=7.1" 1676 | }, 1677 | "require-dev": { 1678 | "nette/tester": "^2.0", 1679 | "phpstan/phpstan": "^0.12", 1680 | "tracy/tracy": "^2.3" 1681 | }, 1682 | "type": "library", 1683 | "extra": { 1684 | "branch-alias": { 1685 | "dev-master": "3.2-dev" 1686 | } 1687 | }, 1688 | "autoload": { 1689 | "classmap": [ 1690 | "src/" 1691 | ] 1692 | }, 1693 | "notification-url": "https://packagist.org/downloads/", 1694 | "license": [ 1695 | "BSD-3-Clause", 1696 | "GPL-2.0-only", 1697 | "GPL-3.0-only" 1698 | ], 1699 | "authors": [ 1700 | { 1701 | "name": "David Grudl", 1702 | "homepage": "https://davidgrudl.com" 1703 | }, 1704 | { 1705 | "name": "Nette Community", 1706 | "homepage": "https://nette.org/contributors" 1707 | } 1708 | ], 1709 | "description": "🍀 Nette RobotLoader: high performance and comfortable autoloader that will search and autoload classes within your application.", 1710 | "homepage": "https://nette.org", 1711 | "keywords": [ 1712 | "autoload", 1713 | "class", 1714 | "interface", 1715 | "nette", 1716 | "trait" 1717 | ], 1718 | "time": "2020-02-28T13:10:07+00:00" 1719 | }, 1720 | { 1721 | "name": "nette/schema", 1722 | "version": "v1.0.2", 1723 | "source": { 1724 | "type": "git", 1725 | "url": "https://github.com/nette/schema.git", 1726 | "reference": "febf71fb4052c824046f5a33f4f769a6e7fa0cb4" 1727 | }, 1728 | "dist": { 1729 | "type": "zip", 1730 | "url": "https://api.github.com/repos/nette/schema/zipball/febf71fb4052c824046f5a33f4f769a6e7fa0cb4", 1731 | "reference": "febf71fb4052c824046f5a33f4f769a6e7fa0cb4", 1732 | "shasum": "" 1733 | }, 1734 | "require": { 1735 | "nette/utils": "^3.1", 1736 | "php": ">=7.1" 1737 | }, 1738 | "require-dev": { 1739 | "nette/tester": "^2.2", 1740 | "phpstan/phpstan-nette": "^0.12", 1741 | "tracy/tracy": "^2.3" 1742 | }, 1743 | "type": "library", 1744 | "extra": { 1745 | "branch-alias": [] 1746 | }, 1747 | "autoload": { 1748 | "classmap": [ 1749 | "src/" 1750 | ] 1751 | }, 1752 | "notification-url": "https://packagist.org/downloads/", 1753 | "license": [ 1754 | "BSD-3-Clause", 1755 | "GPL-2.0", 1756 | "GPL-3.0" 1757 | ], 1758 | "authors": [ 1759 | { 1760 | "name": "David Grudl", 1761 | "homepage": "https://davidgrudl.com" 1762 | }, 1763 | { 1764 | "name": "Nette Community", 1765 | "homepage": "https://nette.org/contributors" 1766 | } 1767 | ], 1768 | "description": "📐 Nette Schema: validating data structures against a given Schema.", 1769 | "homepage": "https://nette.org", 1770 | "keywords": [ 1771 | "config", 1772 | "nette" 1773 | ], 1774 | "time": "2020-01-06T22:52:48+00:00" 1775 | }, 1776 | { 1777 | "name": "nette/utils", 1778 | "version": "v3.1.2", 1779 | "source": { 1780 | "type": "git", 1781 | "url": "https://github.com/nette/utils.git", 1782 | "reference": "488f58378bba71767e7831c83f9e0fa808bf83b9" 1783 | }, 1784 | "dist": { 1785 | "type": "zip", 1786 | "url": "https://api.github.com/repos/nette/utils/zipball/488f58378bba71767e7831c83f9e0fa808bf83b9", 1787 | "reference": "488f58378bba71767e7831c83f9e0fa808bf83b9", 1788 | "shasum": "" 1789 | }, 1790 | "require": { 1791 | "php": ">=7.1" 1792 | }, 1793 | "require-dev": { 1794 | "nette/tester": "~2.0", 1795 | "phpstan/phpstan": "^0.12", 1796 | "tracy/tracy": "^2.3" 1797 | }, 1798 | "suggest": { 1799 | "ext-gd": "to use Image", 1800 | "ext-iconv": "to use Strings::webalize(), toAscii(), chr() and reverse()", 1801 | "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()", 1802 | "ext-json": "to use Nette\\Utils\\Json", 1803 | "ext-mbstring": "to use Strings::lower() etc...", 1804 | "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()", 1805 | "ext-xml": "to use Strings::length() etc. when mbstring is not available" 1806 | }, 1807 | "type": "library", 1808 | "extra": { 1809 | "branch-alias": { 1810 | "dev-master": "3.1-dev" 1811 | } 1812 | }, 1813 | "autoload": { 1814 | "classmap": [ 1815 | "src/" 1816 | ] 1817 | }, 1818 | "notification-url": "https://packagist.org/downloads/", 1819 | "license": [ 1820 | "BSD-3-Clause", 1821 | "GPL-2.0-only", 1822 | "GPL-3.0-only" 1823 | ], 1824 | "authors": [ 1825 | { 1826 | "name": "David Grudl", 1827 | "homepage": "https://davidgrudl.com" 1828 | }, 1829 | { 1830 | "name": "Nette Community", 1831 | "homepage": "https://nette.org/contributors" 1832 | } 1833 | ], 1834 | "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.", 1835 | "homepage": "https://nette.org", 1836 | "keywords": [ 1837 | "array", 1838 | "core", 1839 | "datetime", 1840 | "images", 1841 | "json", 1842 | "nette", 1843 | "paginator", 1844 | "password", 1845 | "slugify", 1846 | "string", 1847 | "unicode", 1848 | "utf-8", 1849 | "utility", 1850 | "validation" 1851 | ], 1852 | "time": "2020-05-27T09:58:51+00:00" 1853 | }, 1854 | { 1855 | "name": "nikic/php-parser", 1856 | "version": "v4.5.0", 1857 | "source": { 1858 | "type": "git", 1859 | "url": "https://github.com/nikic/PHP-Parser.git", 1860 | "reference": "53c2753d756f5adb586dca79c2ec0e2654dd9463" 1861 | }, 1862 | "dist": { 1863 | "type": "zip", 1864 | "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/53c2753d756f5adb586dca79c2ec0e2654dd9463", 1865 | "reference": "53c2753d756f5adb586dca79c2ec0e2654dd9463", 1866 | "shasum": "" 1867 | }, 1868 | "require": { 1869 | "ext-tokenizer": "*", 1870 | "php": ">=7.0" 1871 | }, 1872 | "require-dev": { 1873 | "ircmaxell/php-yacc": "0.0.5", 1874 | "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0" 1875 | }, 1876 | "bin": [ 1877 | "bin/php-parse" 1878 | ], 1879 | "type": "library", 1880 | "extra": { 1881 | "branch-alias": { 1882 | "dev-master": "4.3-dev" 1883 | } 1884 | }, 1885 | "autoload": { 1886 | "psr-4": { 1887 | "PhpParser\\": "lib/PhpParser" 1888 | } 1889 | }, 1890 | "notification-url": "https://packagist.org/downloads/", 1891 | "license": [ 1892 | "BSD-3-Clause" 1893 | ], 1894 | "authors": [ 1895 | { 1896 | "name": "Nikita Popov" 1897 | } 1898 | ], 1899 | "description": "A PHP parser written in PHP", 1900 | "keywords": [ 1901 | "parser", 1902 | "php" 1903 | ], 1904 | "time": "2020-06-03T07:24:19+00:00" 1905 | }, 1906 | { 1907 | "name": "phar-io/manifest", 1908 | "version": "1.0.3", 1909 | "source": { 1910 | "type": "git", 1911 | "url": "https://github.com/phar-io/manifest.git", 1912 | "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4" 1913 | }, 1914 | "dist": { 1915 | "type": "zip", 1916 | "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", 1917 | "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", 1918 | "shasum": "" 1919 | }, 1920 | "require": { 1921 | "ext-dom": "*", 1922 | "ext-phar": "*", 1923 | "phar-io/version": "^2.0", 1924 | "php": "^5.6 || ^7.0" 1925 | }, 1926 | "type": "library", 1927 | "extra": { 1928 | "branch-alias": { 1929 | "dev-master": "1.0.x-dev" 1930 | } 1931 | }, 1932 | "autoload": { 1933 | "classmap": [ 1934 | "src/" 1935 | ] 1936 | }, 1937 | "notification-url": "https://packagist.org/downloads/", 1938 | "license": [ 1939 | "BSD-3-Clause" 1940 | ], 1941 | "authors": [ 1942 | { 1943 | "name": "Arne Blankerts", 1944 | "email": "arne@blankerts.de", 1945 | "role": "Developer" 1946 | }, 1947 | { 1948 | "name": "Sebastian Heuer", 1949 | "email": "sebastian@phpeople.de", 1950 | "role": "Developer" 1951 | }, 1952 | { 1953 | "name": "Sebastian Bergmann", 1954 | "email": "sebastian@phpunit.de", 1955 | "role": "Developer" 1956 | } 1957 | ], 1958 | "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", 1959 | "time": "2018-07-08T19:23:20+00:00" 1960 | }, 1961 | { 1962 | "name": "phar-io/version", 1963 | "version": "2.0.1", 1964 | "source": { 1965 | "type": "git", 1966 | "url": "https://github.com/phar-io/version.git", 1967 | "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6" 1968 | }, 1969 | "dist": { 1970 | "type": "zip", 1971 | "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6", 1972 | "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6", 1973 | "shasum": "" 1974 | }, 1975 | "require": { 1976 | "php": "^5.6 || ^7.0" 1977 | }, 1978 | "type": "library", 1979 | "autoload": { 1980 | "classmap": [ 1981 | "src/" 1982 | ] 1983 | }, 1984 | "notification-url": "https://packagist.org/downloads/", 1985 | "license": [ 1986 | "BSD-3-Clause" 1987 | ], 1988 | "authors": [ 1989 | { 1990 | "name": "Arne Blankerts", 1991 | "email": "arne@blankerts.de", 1992 | "role": "Developer" 1993 | }, 1994 | { 1995 | "name": "Sebastian Heuer", 1996 | "email": "sebastian@phpeople.de", 1997 | "role": "Developer" 1998 | }, 1999 | { 2000 | "name": "Sebastian Bergmann", 2001 | "email": "sebastian@phpunit.de", 2002 | "role": "Developer" 2003 | } 2004 | ], 2005 | "description": "Library for handling version information and constraints", 2006 | "time": "2018-07-08T19:19:57+00:00" 2007 | }, 2008 | { 2009 | "name": "phpdocumentor/reflection-common", 2010 | "version": "2.1.0", 2011 | "source": { 2012 | "type": "git", 2013 | "url": "https://github.com/phpDocumentor/ReflectionCommon.git", 2014 | "reference": "6568f4687e5b41b054365f9ae03fcb1ed5f2069b" 2015 | }, 2016 | "dist": { 2017 | "type": "zip", 2018 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/6568f4687e5b41b054365f9ae03fcb1ed5f2069b", 2019 | "reference": "6568f4687e5b41b054365f9ae03fcb1ed5f2069b", 2020 | "shasum": "" 2021 | }, 2022 | "require": { 2023 | "php": ">=7.1" 2024 | }, 2025 | "type": "library", 2026 | "extra": { 2027 | "branch-alias": { 2028 | "dev-master": "2.x-dev" 2029 | } 2030 | }, 2031 | "autoload": { 2032 | "psr-4": { 2033 | "phpDocumentor\\Reflection\\": "src/" 2034 | } 2035 | }, 2036 | "notification-url": "https://packagist.org/downloads/", 2037 | "license": [ 2038 | "MIT" 2039 | ], 2040 | "authors": [ 2041 | { 2042 | "name": "Jaap van Otterdijk", 2043 | "email": "opensource@ijaap.nl" 2044 | } 2045 | ], 2046 | "description": "Common reflection classes used by phpdocumentor to reflect the code structure", 2047 | "homepage": "http://www.phpdoc.org", 2048 | "keywords": [ 2049 | "FQSEN", 2050 | "phpDocumentor", 2051 | "phpdoc", 2052 | "reflection", 2053 | "static analysis" 2054 | ], 2055 | "time": "2020-04-27T09:25:28+00:00" 2056 | }, 2057 | { 2058 | "name": "phpdocumentor/reflection-docblock", 2059 | "version": "5.1.0", 2060 | "source": { 2061 | "type": "git", 2062 | "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", 2063 | "reference": "cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e" 2064 | }, 2065 | "dist": { 2066 | "type": "zip", 2067 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e", 2068 | "reference": "cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e", 2069 | "shasum": "" 2070 | }, 2071 | "require": { 2072 | "ext-filter": "^7.1", 2073 | "php": "^7.2", 2074 | "phpdocumentor/reflection-common": "^2.0", 2075 | "phpdocumentor/type-resolver": "^1.0", 2076 | "webmozart/assert": "^1" 2077 | }, 2078 | "require-dev": { 2079 | "doctrine/instantiator": "^1", 2080 | "mockery/mockery": "^1" 2081 | }, 2082 | "type": "library", 2083 | "extra": { 2084 | "branch-alias": { 2085 | "dev-master": "5.x-dev" 2086 | } 2087 | }, 2088 | "autoload": { 2089 | "psr-4": { 2090 | "phpDocumentor\\Reflection\\": "src" 2091 | } 2092 | }, 2093 | "notification-url": "https://packagist.org/downloads/", 2094 | "license": [ 2095 | "MIT" 2096 | ], 2097 | "authors": [ 2098 | { 2099 | "name": "Mike van Riel", 2100 | "email": "me@mikevanriel.com" 2101 | }, 2102 | { 2103 | "name": "Jaap van Otterdijk", 2104 | "email": "account@ijaap.nl" 2105 | } 2106 | ], 2107 | "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", 2108 | "time": "2020-02-22T12:28:44+00:00" 2109 | }, 2110 | { 2111 | "name": "phpdocumentor/type-resolver", 2112 | "version": "1.1.0", 2113 | "source": { 2114 | "type": "git", 2115 | "url": "https://github.com/phpDocumentor/TypeResolver.git", 2116 | "reference": "7462d5f123dfc080dfdf26897032a6513644fc95" 2117 | }, 2118 | "dist": { 2119 | "type": "zip", 2120 | "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/7462d5f123dfc080dfdf26897032a6513644fc95", 2121 | "reference": "7462d5f123dfc080dfdf26897032a6513644fc95", 2122 | "shasum": "" 2123 | }, 2124 | "require": { 2125 | "php": "^7.2", 2126 | "phpdocumentor/reflection-common": "^2.0" 2127 | }, 2128 | "require-dev": { 2129 | "ext-tokenizer": "^7.2", 2130 | "mockery/mockery": "~1" 2131 | }, 2132 | "type": "library", 2133 | "extra": { 2134 | "branch-alias": { 2135 | "dev-master": "1.x-dev" 2136 | } 2137 | }, 2138 | "autoload": { 2139 | "psr-4": { 2140 | "phpDocumentor\\Reflection\\": "src" 2141 | } 2142 | }, 2143 | "notification-url": "https://packagist.org/downloads/", 2144 | "license": [ 2145 | "MIT" 2146 | ], 2147 | "authors": [ 2148 | { 2149 | "name": "Mike van Riel", 2150 | "email": "me@mikevanriel.com" 2151 | } 2152 | ], 2153 | "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", 2154 | "time": "2020-02-18T18:59:58+00:00" 2155 | }, 2156 | { 2157 | "name": "phpspec/prophecy", 2158 | "version": "v1.10.3", 2159 | "source": { 2160 | "type": "git", 2161 | "url": "https://github.com/phpspec/prophecy.git", 2162 | "reference": "451c3cd1418cf640de218914901e51b064abb093" 2163 | }, 2164 | "dist": { 2165 | "type": "zip", 2166 | "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093", 2167 | "reference": "451c3cd1418cf640de218914901e51b064abb093", 2168 | "shasum": "" 2169 | }, 2170 | "require": { 2171 | "doctrine/instantiator": "^1.0.2", 2172 | "php": "^5.3|^7.0", 2173 | "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0", 2174 | "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0", 2175 | "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0" 2176 | }, 2177 | "require-dev": { 2178 | "phpspec/phpspec": "^2.5 || ^3.2", 2179 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" 2180 | }, 2181 | "type": "library", 2182 | "extra": { 2183 | "branch-alias": { 2184 | "dev-master": "1.10.x-dev" 2185 | } 2186 | }, 2187 | "autoload": { 2188 | "psr-4": { 2189 | "Prophecy\\": "src/Prophecy" 2190 | } 2191 | }, 2192 | "notification-url": "https://packagist.org/downloads/", 2193 | "license": [ 2194 | "MIT" 2195 | ], 2196 | "authors": [ 2197 | { 2198 | "name": "Konstantin Kudryashov", 2199 | "email": "ever.zet@gmail.com", 2200 | "homepage": "http://everzet.com" 2201 | }, 2202 | { 2203 | "name": "Marcello Duarte", 2204 | "email": "marcello.duarte@gmail.com" 2205 | } 2206 | ], 2207 | "description": "Highly opinionated mocking framework for PHP 5.3+", 2208 | "homepage": "https://github.com/phpspec/prophecy", 2209 | "keywords": [ 2210 | "Double", 2211 | "Dummy", 2212 | "fake", 2213 | "mock", 2214 | "spy", 2215 | "stub" 2216 | ], 2217 | "time": "2020-03-05T15:02:03+00:00" 2218 | }, 2219 | { 2220 | "name": "phpstan/phpdoc-parser", 2221 | "version": "0.3.5", 2222 | "source": { 2223 | "type": "git", 2224 | "url": "https://github.com/phpstan/phpdoc-parser.git", 2225 | "reference": "8c4ef2aefd9788238897b678a985e1d5c8df6db4" 2226 | }, 2227 | "dist": { 2228 | "type": "zip", 2229 | "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/8c4ef2aefd9788238897b678a985e1d5c8df6db4", 2230 | "reference": "8c4ef2aefd9788238897b678a985e1d5c8df6db4", 2231 | "shasum": "" 2232 | }, 2233 | "require": { 2234 | "php": "~7.1" 2235 | }, 2236 | "require-dev": { 2237 | "consistence/coding-standard": "^3.5", 2238 | "jakub-onderka/php-parallel-lint": "^0.9.2", 2239 | "phing/phing": "^2.16.0", 2240 | "phpstan/phpstan": "^0.10", 2241 | "phpunit/phpunit": "^6.3", 2242 | "slevomat/coding-standard": "^4.7.2", 2243 | "squizlabs/php_codesniffer": "^3.3.2", 2244 | "symfony/process": "^3.4 || ^4.0" 2245 | }, 2246 | "type": "library", 2247 | "extra": { 2248 | "branch-alias": { 2249 | "dev-master": "0.3-dev" 2250 | } 2251 | }, 2252 | "autoload": { 2253 | "psr-4": { 2254 | "PHPStan\\PhpDocParser\\": [ 2255 | "src/" 2256 | ] 2257 | } 2258 | }, 2259 | "notification-url": "https://packagist.org/downloads/", 2260 | "license": [ 2261 | "MIT" 2262 | ], 2263 | "description": "PHPDoc parser with support for nullable, intersection and generic types", 2264 | "time": "2019-06-07T19:13:52+00:00" 2265 | }, 2266 | { 2267 | "name": "phpstan/phpstan", 2268 | "version": "0.11.19", 2269 | "source": { 2270 | "type": "git", 2271 | "url": "https://github.com/phpstan/phpstan.git", 2272 | "reference": "63cc502f6957b7f74efbac444b4cf219dcadffd7" 2273 | }, 2274 | "dist": { 2275 | "type": "zip", 2276 | "url": "https://api.github.com/repos/phpstan/phpstan/zipball/63cc502f6957b7f74efbac444b4cf219dcadffd7", 2277 | "reference": "63cc502f6957b7f74efbac444b4cf219dcadffd7", 2278 | "shasum": "" 2279 | }, 2280 | "require": { 2281 | "composer/xdebug-handler": "^1.3.0", 2282 | "jean85/pretty-package-versions": "^1.0.3", 2283 | "nette/bootstrap": "^2.4 || ^3.0", 2284 | "nette/di": "^2.4.7 || ^3.0", 2285 | "nette/neon": "^2.4.3 || ^3.0", 2286 | "nette/robot-loader": "^3.0.1", 2287 | "nette/schema": "^1.0", 2288 | "nette/utils": "^2.4.5 || ^3.0", 2289 | "nikic/php-parser": "^4.2.3", 2290 | "php": "~7.1", 2291 | "phpstan/phpdoc-parser": "^0.3.5", 2292 | "symfony/console": "~3.2 || ~4.0", 2293 | "symfony/finder": "~3.2 || ~4.0" 2294 | }, 2295 | "conflict": { 2296 | "symfony/console": "3.4.16 || 4.1.5" 2297 | }, 2298 | "require-dev": { 2299 | "brianium/paratest": "^2.0 || ^3.0", 2300 | "consistence/coding-standard": "^3.5", 2301 | "dealerdirect/phpcodesniffer-composer-installer": "^0.4.4", 2302 | "ext-intl": "*", 2303 | "ext-mysqli": "*", 2304 | "ext-simplexml": "*", 2305 | "ext-soap": "*", 2306 | "ext-zip": "*", 2307 | "jakub-onderka/php-parallel-lint": "^1.0", 2308 | "localheinz/composer-normalize": "^1.1.0", 2309 | "phing/phing": "^2.16.0", 2310 | "phpstan/phpstan-deprecation-rules": "^0.11", 2311 | "phpstan/phpstan-php-parser": "^0.11", 2312 | "phpstan/phpstan-phpunit": "^0.11", 2313 | "phpstan/phpstan-strict-rules": "^0.11", 2314 | "phpunit/phpunit": "^7.5.14 || ^8.0", 2315 | "slevomat/coding-standard": "^4.7.2", 2316 | "squizlabs/php_codesniffer": "^3.3.2" 2317 | }, 2318 | "bin": [ 2319 | "bin/phpstan" 2320 | ], 2321 | "type": "library", 2322 | "extra": { 2323 | "branch-alias": { 2324 | "dev-master": "0.11-dev" 2325 | } 2326 | }, 2327 | "autoload": { 2328 | "psr-4": { 2329 | "PHPStan\\": [ 2330 | "src/" 2331 | ] 2332 | } 2333 | }, 2334 | "notification-url": "https://packagist.org/downloads/", 2335 | "license": [ 2336 | "MIT" 2337 | ], 2338 | "description": "PHPStan - PHP Static Analysis Tool", 2339 | "time": "2019-10-22T20:20:22+00:00" 2340 | }, 2341 | { 2342 | "name": "phpunit/php-code-coverage", 2343 | "version": "6.1.4", 2344 | "source": { 2345 | "type": "git", 2346 | "url": "https://github.com/sebastianbergmann/php-code-coverage.git", 2347 | "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d" 2348 | }, 2349 | "dist": { 2350 | "type": "zip", 2351 | "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", 2352 | "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", 2353 | "shasum": "" 2354 | }, 2355 | "require": { 2356 | "ext-dom": "*", 2357 | "ext-xmlwriter": "*", 2358 | "php": "^7.1", 2359 | "phpunit/php-file-iterator": "^2.0", 2360 | "phpunit/php-text-template": "^1.2.1", 2361 | "phpunit/php-token-stream": "^3.0", 2362 | "sebastian/code-unit-reverse-lookup": "^1.0.1", 2363 | "sebastian/environment": "^3.1 || ^4.0", 2364 | "sebastian/version": "^2.0.1", 2365 | "theseer/tokenizer": "^1.1" 2366 | }, 2367 | "require-dev": { 2368 | "phpunit/phpunit": "^7.0" 2369 | }, 2370 | "suggest": { 2371 | "ext-xdebug": "^2.6.0" 2372 | }, 2373 | "type": "library", 2374 | "extra": { 2375 | "branch-alias": { 2376 | "dev-master": "6.1-dev" 2377 | } 2378 | }, 2379 | "autoload": { 2380 | "classmap": [ 2381 | "src/" 2382 | ] 2383 | }, 2384 | "notification-url": "https://packagist.org/downloads/", 2385 | "license": [ 2386 | "BSD-3-Clause" 2387 | ], 2388 | "authors": [ 2389 | { 2390 | "name": "Sebastian Bergmann", 2391 | "email": "sebastian@phpunit.de", 2392 | "role": "lead" 2393 | } 2394 | ], 2395 | "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", 2396 | "homepage": "https://github.com/sebastianbergmann/php-code-coverage", 2397 | "keywords": [ 2398 | "coverage", 2399 | "testing", 2400 | "xunit" 2401 | ], 2402 | "time": "2018-10-31T16:06:48+00:00" 2403 | }, 2404 | { 2405 | "name": "phpunit/php-file-iterator", 2406 | "version": "2.0.2", 2407 | "source": { 2408 | "type": "git", 2409 | "url": "https://github.com/sebastianbergmann/php-file-iterator.git", 2410 | "reference": "050bedf145a257b1ff02746c31894800e5122946" 2411 | }, 2412 | "dist": { 2413 | "type": "zip", 2414 | "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/050bedf145a257b1ff02746c31894800e5122946", 2415 | "reference": "050bedf145a257b1ff02746c31894800e5122946", 2416 | "shasum": "" 2417 | }, 2418 | "require": { 2419 | "php": "^7.1" 2420 | }, 2421 | "require-dev": { 2422 | "phpunit/phpunit": "^7.1" 2423 | }, 2424 | "type": "library", 2425 | "extra": { 2426 | "branch-alias": { 2427 | "dev-master": "2.0.x-dev" 2428 | } 2429 | }, 2430 | "autoload": { 2431 | "classmap": [ 2432 | "src/" 2433 | ] 2434 | }, 2435 | "notification-url": "https://packagist.org/downloads/", 2436 | "license": [ 2437 | "BSD-3-Clause" 2438 | ], 2439 | "authors": [ 2440 | { 2441 | "name": "Sebastian Bergmann", 2442 | "email": "sebastian@phpunit.de", 2443 | "role": "lead" 2444 | } 2445 | ], 2446 | "description": "FilterIterator implementation that filters files based on a list of suffixes.", 2447 | "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", 2448 | "keywords": [ 2449 | "filesystem", 2450 | "iterator" 2451 | ], 2452 | "time": "2018-09-13T20:33:42+00:00" 2453 | }, 2454 | { 2455 | "name": "phpunit/php-text-template", 2456 | "version": "1.2.1", 2457 | "source": { 2458 | "type": "git", 2459 | "url": "https://github.com/sebastianbergmann/php-text-template.git", 2460 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" 2461 | }, 2462 | "dist": { 2463 | "type": "zip", 2464 | "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 2465 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 2466 | "shasum": "" 2467 | }, 2468 | "require": { 2469 | "php": ">=5.3.3" 2470 | }, 2471 | "type": "library", 2472 | "autoload": { 2473 | "classmap": [ 2474 | "src/" 2475 | ] 2476 | }, 2477 | "notification-url": "https://packagist.org/downloads/", 2478 | "license": [ 2479 | "BSD-3-Clause" 2480 | ], 2481 | "authors": [ 2482 | { 2483 | "name": "Sebastian Bergmann", 2484 | "email": "sebastian@phpunit.de", 2485 | "role": "lead" 2486 | } 2487 | ], 2488 | "description": "Simple template engine.", 2489 | "homepage": "https://github.com/sebastianbergmann/php-text-template/", 2490 | "keywords": [ 2491 | "template" 2492 | ], 2493 | "time": "2015-06-21T13:50:34+00:00" 2494 | }, 2495 | { 2496 | "name": "phpunit/php-timer", 2497 | "version": "2.1.2", 2498 | "source": { 2499 | "type": "git", 2500 | "url": "https://github.com/sebastianbergmann/php-timer.git", 2501 | "reference": "1038454804406b0b5f5f520358e78c1c2f71501e" 2502 | }, 2503 | "dist": { 2504 | "type": "zip", 2505 | "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/1038454804406b0b5f5f520358e78c1c2f71501e", 2506 | "reference": "1038454804406b0b5f5f520358e78c1c2f71501e", 2507 | "shasum": "" 2508 | }, 2509 | "require": { 2510 | "php": "^7.1" 2511 | }, 2512 | "require-dev": { 2513 | "phpunit/phpunit": "^7.0" 2514 | }, 2515 | "type": "library", 2516 | "extra": { 2517 | "branch-alias": { 2518 | "dev-master": "2.1-dev" 2519 | } 2520 | }, 2521 | "autoload": { 2522 | "classmap": [ 2523 | "src/" 2524 | ] 2525 | }, 2526 | "notification-url": "https://packagist.org/downloads/", 2527 | "license": [ 2528 | "BSD-3-Clause" 2529 | ], 2530 | "authors": [ 2531 | { 2532 | "name": "Sebastian Bergmann", 2533 | "email": "sebastian@phpunit.de", 2534 | "role": "lead" 2535 | } 2536 | ], 2537 | "description": "Utility class for timing", 2538 | "homepage": "https://github.com/sebastianbergmann/php-timer/", 2539 | "keywords": [ 2540 | "timer" 2541 | ], 2542 | "time": "2019-06-07T04:22:29+00:00" 2543 | }, 2544 | { 2545 | "name": "phpunit/php-token-stream", 2546 | "version": "3.1.1", 2547 | "source": { 2548 | "type": "git", 2549 | "url": "https://github.com/sebastianbergmann/php-token-stream.git", 2550 | "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff" 2551 | }, 2552 | "dist": { 2553 | "type": "zip", 2554 | "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/995192df77f63a59e47f025390d2d1fdf8f425ff", 2555 | "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff", 2556 | "shasum": "" 2557 | }, 2558 | "require": { 2559 | "ext-tokenizer": "*", 2560 | "php": "^7.1" 2561 | }, 2562 | "require-dev": { 2563 | "phpunit/phpunit": "^7.0" 2564 | }, 2565 | "type": "library", 2566 | "extra": { 2567 | "branch-alias": { 2568 | "dev-master": "3.1-dev" 2569 | } 2570 | }, 2571 | "autoload": { 2572 | "classmap": [ 2573 | "src/" 2574 | ] 2575 | }, 2576 | "notification-url": "https://packagist.org/downloads/", 2577 | "license": [ 2578 | "BSD-3-Clause" 2579 | ], 2580 | "authors": [ 2581 | { 2582 | "name": "Sebastian Bergmann", 2583 | "email": "sebastian@phpunit.de" 2584 | } 2585 | ], 2586 | "description": "Wrapper around PHP's tokenizer extension.", 2587 | "homepage": "https://github.com/sebastianbergmann/php-token-stream/", 2588 | "keywords": [ 2589 | "tokenizer" 2590 | ], 2591 | "time": "2019-09-17T06:23:10+00:00" 2592 | }, 2593 | { 2594 | "name": "phpunit/phpunit", 2595 | "version": "7.5.20", 2596 | "source": { 2597 | "type": "git", 2598 | "url": "https://github.com/sebastianbergmann/phpunit.git", 2599 | "reference": "9467db479d1b0487c99733bb1e7944d32deded2c" 2600 | }, 2601 | "dist": { 2602 | "type": "zip", 2603 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9467db479d1b0487c99733bb1e7944d32deded2c", 2604 | "reference": "9467db479d1b0487c99733bb1e7944d32deded2c", 2605 | "shasum": "" 2606 | }, 2607 | "require": { 2608 | "doctrine/instantiator": "^1.1", 2609 | "ext-dom": "*", 2610 | "ext-json": "*", 2611 | "ext-libxml": "*", 2612 | "ext-mbstring": "*", 2613 | "ext-xml": "*", 2614 | "myclabs/deep-copy": "^1.7", 2615 | "phar-io/manifest": "^1.0.2", 2616 | "phar-io/version": "^2.0", 2617 | "php": "^7.1", 2618 | "phpspec/prophecy": "^1.7", 2619 | "phpunit/php-code-coverage": "^6.0.7", 2620 | "phpunit/php-file-iterator": "^2.0.1", 2621 | "phpunit/php-text-template": "^1.2.1", 2622 | "phpunit/php-timer": "^2.1", 2623 | "sebastian/comparator": "^3.0", 2624 | "sebastian/diff": "^3.0", 2625 | "sebastian/environment": "^4.0", 2626 | "sebastian/exporter": "^3.1", 2627 | "sebastian/global-state": "^2.0", 2628 | "sebastian/object-enumerator": "^3.0.3", 2629 | "sebastian/resource-operations": "^2.0", 2630 | "sebastian/version": "^2.0.1" 2631 | }, 2632 | "conflict": { 2633 | "phpunit/phpunit-mock-objects": "*" 2634 | }, 2635 | "require-dev": { 2636 | "ext-pdo": "*" 2637 | }, 2638 | "suggest": { 2639 | "ext-soap": "*", 2640 | "ext-xdebug": "*", 2641 | "phpunit/php-invoker": "^2.0" 2642 | }, 2643 | "bin": [ 2644 | "phpunit" 2645 | ], 2646 | "type": "library", 2647 | "extra": { 2648 | "branch-alias": { 2649 | "dev-master": "7.5-dev" 2650 | } 2651 | }, 2652 | "autoload": { 2653 | "classmap": [ 2654 | "src/" 2655 | ] 2656 | }, 2657 | "notification-url": "https://packagist.org/downloads/", 2658 | "license": [ 2659 | "BSD-3-Clause" 2660 | ], 2661 | "authors": [ 2662 | { 2663 | "name": "Sebastian Bergmann", 2664 | "email": "sebastian@phpunit.de", 2665 | "role": "lead" 2666 | } 2667 | ], 2668 | "description": "The PHP Unit Testing framework.", 2669 | "homepage": "https://phpunit.de/", 2670 | "keywords": [ 2671 | "phpunit", 2672 | "testing", 2673 | "xunit" 2674 | ], 2675 | "time": "2020-01-08T08:45:45+00:00" 2676 | }, 2677 | { 2678 | "name": "psr/log", 2679 | "version": "1.1.3", 2680 | "source": { 2681 | "type": "git", 2682 | "url": "https://github.com/php-fig/log.git", 2683 | "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc" 2684 | }, 2685 | "dist": { 2686 | "type": "zip", 2687 | "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc", 2688 | "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc", 2689 | "shasum": "" 2690 | }, 2691 | "require": { 2692 | "php": ">=5.3.0" 2693 | }, 2694 | "type": "library", 2695 | "extra": { 2696 | "branch-alias": { 2697 | "dev-master": "1.1.x-dev" 2698 | } 2699 | }, 2700 | "autoload": { 2701 | "psr-4": { 2702 | "Psr\\Log\\": "Psr/Log/" 2703 | } 2704 | }, 2705 | "notification-url": "https://packagist.org/downloads/", 2706 | "license": [ 2707 | "MIT" 2708 | ], 2709 | "authors": [ 2710 | { 2711 | "name": "PHP-FIG", 2712 | "homepage": "http://www.php-fig.org/" 2713 | } 2714 | ], 2715 | "description": "Common interface for logging libraries", 2716 | "homepage": "https://github.com/php-fig/log", 2717 | "keywords": [ 2718 | "log", 2719 | "psr", 2720 | "psr-3" 2721 | ], 2722 | "time": "2020-03-23T09:12:05+00:00" 2723 | }, 2724 | { 2725 | "name": "sebastian/code-unit-reverse-lookup", 2726 | "version": "1.0.1", 2727 | "source": { 2728 | "type": "git", 2729 | "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", 2730 | "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" 2731 | }, 2732 | "dist": { 2733 | "type": "zip", 2734 | "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", 2735 | "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", 2736 | "shasum": "" 2737 | }, 2738 | "require": { 2739 | "php": "^5.6 || ^7.0" 2740 | }, 2741 | "require-dev": { 2742 | "phpunit/phpunit": "^5.7 || ^6.0" 2743 | }, 2744 | "type": "library", 2745 | "extra": { 2746 | "branch-alias": { 2747 | "dev-master": "1.0.x-dev" 2748 | } 2749 | }, 2750 | "autoload": { 2751 | "classmap": [ 2752 | "src/" 2753 | ] 2754 | }, 2755 | "notification-url": "https://packagist.org/downloads/", 2756 | "license": [ 2757 | "BSD-3-Clause" 2758 | ], 2759 | "authors": [ 2760 | { 2761 | "name": "Sebastian Bergmann", 2762 | "email": "sebastian@phpunit.de" 2763 | } 2764 | ], 2765 | "description": "Looks up which function or method a line of code belongs to", 2766 | "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", 2767 | "time": "2017-03-04T06:30:41+00:00" 2768 | }, 2769 | { 2770 | "name": "sebastian/comparator", 2771 | "version": "3.0.2", 2772 | "source": { 2773 | "type": "git", 2774 | "url": "https://github.com/sebastianbergmann/comparator.git", 2775 | "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da" 2776 | }, 2777 | "dist": { 2778 | "type": "zip", 2779 | "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/5de4fc177adf9bce8df98d8d141a7559d7ccf6da", 2780 | "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da", 2781 | "shasum": "" 2782 | }, 2783 | "require": { 2784 | "php": "^7.1", 2785 | "sebastian/diff": "^3.0", 2786 | "sebastian/exporter": "^3.1" 2787 | }, 2788 | "require-dev": { 2789 | "phpunit/phpunit": "^7.1" 2790 | }, 2791 | "type": "library", 2792 | "extra": { 2793 | "branch-alias": { 2794 | "dev-master": "3.0-dev" 2795 | } 2796 | }, 2797 | "autoload": { 2798 | "classmap": [ 2799 | "src/" 2800 | ] 2801 | }, 2802 | "notification-url": "https://packagist.org/downloads/", 2803 | "license": [ 2804 | "BSD-3-Clause" 2805 | ], 2806 | "authors": [ 2807 | { 2808 | "name": "Jeff Welch", 2809 | "email": "whatthejeff@gmail.com" 2810 | }, 2811 | { 2812 | "name": "Volker Dusch", 2813 | "email": "github@wallbash.com" 2814 | }, 2815 | { 2816 | "name": "Bernhard Schussek", 2817 | "email": "bschussek@2bepublished.at" 2818 | }, 2819 | { 2820 | "name": "Sebastian Bergmann", 2821 | "email": "sebastian@phpunit.de" 2822 | } 2823 | ], 2824 | "description": "Provides the functionality to compare PHP values for equality", 2825 | "homepage": "https://github.com/sebastianbergmann/comparator", 2826 | "keywords": [ 2827 | "comparator", 2828 | "compare", 2829 | "equality" 2830 | ], 2831 | "time": "2018-07-12T15:12:46+00:00" 2832 | }, 2833 | { 2834 | "name": "sebastian/diff", 2835 | "version": "3.0.2", 2836 | "source": { 2837 | "type": "git", 2838 | "url": "https://github.com/sebastianbergmann/diff.git", 2839 | "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29" 2840 | }, 2841 | "dist": { 2842 | "type": "zip", 2843 | "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/720fcc7e9b5cf384ea68d9d930d480907a0c1a29", 2844 | "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29", 2845 | "shasum": "" 2846 | }, 2847 | "require": { 2848 | "php": "^7.1" 2849 | }, 2850 | "require-dev": { 2851 | "phpunit/phpunit": "^7.5 || ^8.0", 2852 | "symfony/process": "^2 || ^3.3 || ^4" 2853 | }, 2854 | "type": "library", 2855 | "extra": { 2856 | "branch-alias": { 2857 | "dev-master": "3.0-dev" 2858 | } 2859 | }, 2860 | "autoload": { 2861 | "classmap": [ 2862 | "src/" 2863 | ] 2864 | }, 2865 | "notification-url": "https://packagist.org/downloads/", 2866 | "license": [ 2867 | "BSD-3-Clause" 2868 | ], 2869 | "authors": [ 2870 | { 2871 | "name": "Kore Nordmann", 2872 | "email": "mail@kore-nordmann.de" 2873 | }, 2874 | { 2875 | "name": "Sebastian Bergmann", 2876 | "email": "sebastian@phpunit.de" 2877 | } 2878 | ], 2879 | "description": "Diff implementation", 2880 | "homepage": "https://github.com/sebastianbergmann/diff", 2881 | "keywords": [ 2882 | "diff", 2883 | "udiff", 2884 | "unidiff", 2885 | "unified diff" 2886 | ], 2887 | "time": "2019-02-04T06:01:07+00:00" 2888 | }, 2889 | { 2890 | "name": "sebastian/environment", 2891 | "version": "4.2.3", 2892 | "source": { 2893 | "type": "git", 2894 | "url": "https://github.com/sebastianbergmann/environment.git", 2895 | "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368" 2896 | }, 2897 | "dist": { 2898 | "type": "zip", 2899 | "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/464c90d7bdf5ad4e8a6aea15c091fec0603d4368", 2900 | "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368", 2901 | "shasum": "" 2902 | }, 2903 | "require": { 2904 | "php": "^7.1" 2905 | }, 2906 | "require-dev": { 2907 | "phpunit/phpunit": "^7.5" 2908 | }, 2909 | "suggest": { 2910 | "ext-posix": "*" 2911 | }, 2912 | "type": "library", 2913 | "extra": { 2914 | "branch-alias": { 2915 | "dev-master": "4.2-dev" 2916 | } 2917 | }, 2918 | "autoload": { 2919 | "classmap": [ 2920 | "src/" 2921 | ] 2922 | }, 2923 | "notification-url": "https://packagist.org/downloads/", 2924 | "license": [ 2925 | "BSD-3-Clause" 2926 | ], 2927 | "authors": [ 2928 | { 2929 | "name": "Sebastian Bergmann", 2930 | "email": "sebastian@phpunit.de" 2931 | } 2932 | ], 2933 | "description": "Provides functionality to handle HHVM/PHP environments", 2934 | "homepage": "http://www.github.com/sebastianbergmann/environment", 2935 | "keywords": [ 2936 | "Xdebug", 2937 | "environment", 2938 | "hhvm" 2939 | ], 2940 | "time": "2019-11-20T08:46:58+00:00" 2941 | }, 2942 | { 2943 | "name": "sebastian/exporter", 2944 | "version": "3.1.2", 2945 | "source": { 2946 | "type": "git", 2947 | "url": "https://github.com/sebastianbergmann/exporter.git", 2948 | "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e" 2949 | }, 2950 | "dist": { 2951 | "type": "zip", 2952 | "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/68609e1261d215ea5b21b7987539cbfbe156ec3e", 2953 | "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e", 2954 | "shasum": "" 2955 | }, 2956 | "require": { 2957 | "php": "^7.0", 2958 | "sebastian/recursion-context": "^3.0" 2959 | }, 2960 | "require-dev": { 2961 | "ext-mbstring": "*", 2962 | "phpunit/phpunit": "^6.0" 2963 | }, 2964 | "type": "library", 2965 | "extra": { 2966 | "branch-alias": { 2967 | "dev-master": "3.1.x-dev" 2968 | } 2969 | }, 2970 | "autoload": { 2971 | "classmap": [ 2972 | "src/" 2973 | ] 2974 | }, 2975 | "notification-url": "https://packagist.org/downloads/", 2976 | "license": [ 2977 | "BSD-3-Clause" 2978 | ], 2979 | "authors": [ 2980 | { 2981 | "name": "Sebastian Bergmann", 2982 | "email": "sebastian@phpunit.de" 2983 | }, 2984 | { 2985 | "name": "Jeff Welch", 2986 | "email": "whatthejeff@gmail.com" 2987 | }, 2988 | { 2989 | "name": "Volker Dusch", 2990 | "email": "github@wallbash.com" 2991 | }, 2992 | { 2993 | "name": "Adam Harvey", 2994 | "email": "aharvey@php.net" 2995 | }, 2996 | { 2997 | "name": "Bernhard Schussek", 2998 | "email": "bschussek@gmail.com" 2999 | } 3000 | ], 3001 | "description": "Provides the functionality to export PHP variables for visualization", 3002 | "homepage": "http://www.github.com/sebastianbergmann/exporter", 3003 | "keywords": [ 3004 | "export", 3005 | "exporter" 3006 | ], 3007 | "time": "2019-09-14T09:02:43+00:00" 3008 | }, 3009 | { 3010 | "name": "sebastian/global-state", 3011 | "version": "2.0.0", 3012 | "source": { 3013 | "type": "git", 3014 | "url": "https://github.com/sebastianbergmann/global-state.git", 3015 | "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4" 3016 | }, 3017 | "dist": { 3018 | "type": "zip", 3019 | "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", 3020 | "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", 3021 | "shasum": "" 3022 | }, 3023 | "require": { 3024 | "php": "^7.0" 3025 | }, 3026 | "require-dev": { 3027 | "phpunit/phpunit": "^6.0" 3028 | }, 3029 | "suggest": { 3030 | "ext-uopz": "*" 3031 | }, 3032 | "type": "library", 3033 | "extra": { 3034 | "branch-alias": { 3035 | "dev-master": "2.0-dev" 3036 | } 3037 | }, 3038 | "autoload": { 3039 | "classmap": [ 3040 | "src/" 3041 | ] 3042 | }, 3043 | "notification-url": "https://packagist.org/downloads/", 3044 | "license": [ 3045 | "BSD-3-Clause" 3046 | ], 3047 | "authors": [ 3048 | { 3049 | "name": "Sebastian Bergmann", 3050 | "email": "sebastian@phpunit.de" 3051 | } 3052 | ], 3053 | "description": "Snapshotting of global state", 3054 | "homepage": "http://www.github.com/sebastianbergmann/global-state", 3055 | "keywords": [ 3056 | "global state" 3057 | ], 3058 | "time": "2017-04-27T15:39:26+00:00" 3059 | }, 3060 | { 3061 | "name": "sebastian/object-enumerator", 3062 | "version": "3.0.3", 3063 | "source": { 3064 | "type": "git", 3065 | "url": "https://github.com/sebastianbergmann/object-enumerator.git", 3066 | "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" 3067 | }, 3068 | "dist": { 3069 | "type": "zip", 3070 | "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", 3071 | "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", 3072 | "shasum": "" 3073 | }, 3074 | "require": { 3075 | "php": "^7.0", 3076 | "sebastian/object-reflector": "^1.1.1", 3077 | "sebastian/recursion-context": "^3.0" 3078 | }, 3079 | "require-dev": { 3080 | "phpunit/phpunit": "^6.0" 3081 | }, 3082 | "type": "library", 3083 | "extra": { 3084 | "branch-alias": { 3085 | "dev-master": "3.0.x-dev" 3086 | } 3087 | }, 3088 | "autoload": { 3089 | "classmap": [ 3090 | "src/" 3091 | ] 3092 | }, 3093 | "notification-url": "https://packagist.org/downloads/", 3094 | "license": [ 3095 | "BSD-3-Clause" 3096 | ], 3097 | "authors": [ 3098 | { 3099 | "name": "Sebastian Bergmann", 3100 | "email": "sebastian@phpunit.de" 3101 | } 3102 | ], 3103 | "description": "Traverses array structures and object graphs to enumerate all referenced objects", 3104 | "homepage": "https://github.com/sebastianbergmann/object-enumerator/", 3105 | "time": "2017-08-03T12:35:26+00:00" 3106 | }, 3107 | { 3108 | "name": "sebastian/object-reflector", 3109 | "version": "1.1.1", 3110 | "source": { 3111 | "type": "git", 3112 | "url": "https://github.com/sebastianbergmann/object-reflector.git", 3113 | "reference": "773f97c67f28de00d397be301821b06708fca0be" 3114 | }, 3115 | "dist": { 3116 | "type": "zip", 3117 | "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", 3118 | "reference": "773f97c67f28de00d397be301821b06708fca0be", 3119 | "shasum": "" 3120 | }, 3121 | "require": { 3122 | "php": "^7.0" 3123 | }, 3124 | "require-dev": { 3125 | "phpunit/phpunit": "^6.0" 3126 | }, 3127 | "type": "library", 3128 | "extra": { 3129 | "branch-alias": { 3130 | "dev-master": "1.1-dev" 3131 | } 3132 | }, 3133 | "autoload": { 3134 | "classmap": [ 3135 | "src/" 3136 | ] 3137 | }, 3138 | "notification-url": "https://packagist.org/downloads/", 3139 | "license": [ 3140 | "BSD-3-Clause" 3141 | ], 3142 | "authors": [ 3143 | { 3144 | "name": "Sebastian Bergmann", 3145 | "email": "sebastian@phpunit.de" 3146 | } 3147 | ], 3148 | "description": "Allows reflection of object attributes, including inherited and non-public ones", 3149 | "homepage": "https://github.com/sebastianbergmann/object-reflector/", 3150 | "time": "2017-03-29T09:07:27+00:00" 3151 | }, 3152 | { 3153 | "name": "sebastian/recursion-context", 3154 | "version": "3.0.0", 3155 | "source": { 3156 | "type": "git", 3157 | "url": "https://github.com/sebastianbergmann/recursion-context.git", 3158 | "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8" 3159 | }, 3160 | "dist": { 3161 | "type": "zip", 3162 | "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", 3163 | "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", 3164 | "shasum": "" 3165 | }, 3166 | "require": { 3167 | "php": "^7.0" 3168 | }, 3169 | "require-dev": { 3170 | "phpunit/phpunit": "^6.0" 3171 | }, 3172 | "type": "library", 3173 | "extra": { 3174 | "branch-alias": { 3175 | "dev-master": "3.0.x-dev" 3176 | } 3177 | }, 3178 | "autoload": { 3179 | "classmap": [ 3180 | "src/" 3181 | ] 3182 | }, 3183 | "notification-url": "https://packagist.org/downloads/", 3184 | "license": [ 3185 | "BSD-3-Clause" 3186 | ], 3187 | "authors": [ 3188 | { 3189 | "name": "Jeff Welch", 3190 | "email": "whatthejeff@gmail.com" 3191 | }, 3192 | { 3193 | "name": "Sebastian Bergmann", 3194 | "email": "sebastian@phpunit.de" 3195 | }, 3196 | { 3197 | "name": "Adam Harvey", 3198 | "email": "aharvey@php.net" 3199 | } 3200 | ], 3201 | "description": "Provides functionality to recursively process PHP variables", 3202 | "homepage": "http://www.github.com/sebastianbergmann/recursion-context", 3203 | "time": "2017-03-03T06:23:57+00:00" 3204 | }, 3205 | { 3206 | "name": "sebastian/resource-operations", 3207 | "version": "2.0.1", 3208 | "source": { 3209 | "type": "git", 3210 | "url": "https://github.com/sebastianbergmann/resource-operations.git", 3211 | "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9" 3212 | }, 3213 | "dist": { 3214 | "type": "zip", 3215 | "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/4d7a795d35b889bf80a0cc04e08d77cedfa917a9", 3216 | "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9", 3217 | "shasum": "" 3218 | }, 3219 | "require": { 3220 | "php": "^7.1" 3221 | }, 3222 | "type": "library", 3223 | "extra": { 3224 | "branch-alias": { 3225 | "dev-master": "2.0-dev" 3226 | } 3227 | }, 3228 | "autoload": { 3229 | "classmap": [ 3230 | "src/" 3231 | ] 3232 | }, 3233 | "notification-url": "https://packagist.org/downloads/", 3234 | "license": [ 3235 | "BSD-3-Clause" 3236 | ], 3237 | "authors": [ 3238 | { 3239 | "name": "Sebastian Bergmann", 3240 | "email": "sebastian@phpunit.de" 3241 | } 3242 | ], 3243 | "description": "Provides a list of PHP built-in functions that operate on resources", 3244 | "homepage": "https://www.github.com/sebastianbergmann/resource-operations", 3245 | "time": "2018-10-04T04:07:39+00:00" 3246 | }, 3247 | { 3248 | "name": "sebastian/version", 3249 | "version": "2.0.1", 3250 | "source": { 3251 | "type": "git", 3252 | "url": "https://github.com/sebastianbergmann/version.git", 3253 | "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" 3254 | }, 3255 | "dist": { 3256 | "type": "zip", 3257 | "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", 3258 | "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", 3259 | "shasum": "" 3260 | }, 3261 | "require": { 3262 | "php": ">=5.6" 3263 | }, 3264 | "type": "library", 3265 | "extra": { 3266 | "branch-alias": { 3267 | "dev-master": "2.0.x-dev" 3268 | } 3269 | }, 3270 | "autoload": { 3271 | "classmap": [ 3272 | "src/" 3273 | ] 3274 | }, 3275 | "notification-url": "https://packagist.org/downloads/", 3276 | "license": [ 3277 | "BSD-3-Clause" 3278 | ], 3279 | "authors": [ 3280 | { 3281 | "name": "Sebastian Bergmann", 3282 | "email": "sebastian@phpunit.de", 3283 | "role": "lead" 3284 | } 3285 | ], 3286 | "description": "Library that helps with managing the version number of Git-hosted PHP projects", 3287 | "homepage": "https://github.com/sebastianbergmann/version", 3288 | "time": "2016-10-03T07:35:21+00:00" 3289 | }, 3290 | { 3291 | "name": "symfony/console", 3292 | "version": "v4.4.10", 3293 | "source": { 3294 | "type": "git", 3295 | "url": "https://github.com/symfony/console.git", 3296 | "reference": "326b064d804043005526f5a0494cfb49edb59bb0" 3297 | }, 3298 | "dist": { 3299 | "type": "zip", 3300 | "url": "https://api.github.com/repos/symfony/console/zipball/326b064d804043005526f5a0494cfb49edb59bb0", 3301 | "reference": "326b064d804043005526f5a0494cfb49edb59bb0", 3302 | "shasum": "" 3303 | }, 3304 | "require": { 3305 | "php": ">=7.1.3", 3306 | "symfony/polyfill-mbstring": "~1.0", 3307 | "symfony/polyfill-php73": "^1.8", 3308 | "symfony/polyfill-php80": "^1.15", 3309 | "symfony/service-contracts": "^1.1|^2" 3310 | }, 3311 | "conflict": { 3312 | "symfony/dependency-injection": "<3.4", 3313 | "symfony/event-dispatcher": "<4.3|>=5", 3314 | "symfony/lock": "<4.4", 3315 | "symfony/process": "<3.3" 3316 | }, 3317 | "provide": { 3318 | "psr/log-implementation": "1.0" 3319 | }, 3320 | "require-dev": { 3321 | "psr/log": "~1.0", 3322 | "symfony/config": "^3.4|^4.0|^5.0", 3323 | "symfony/dependency-injection": "^3.4|^4.0|^5.0", 3324 | "symfony/event-dispatcher": "^4.3", 3325 | "symfony/lock": "^4.4|^5.0", 3326 | "symfony/process": "^3.4|^4.0|^5.0", 3327 | "symfony/var-dumper": "^4.3|^5.0" 3328 | }, 3329 | "suggest": { 3330 | "psr/log": "For using the console logger", 3331 | "symfony/event-dispatcher": "", 3332 | "symfony/lock": "", 3333 | "symfony/process": "" 3334 | }, 3335 | "type": "library", 3336 | "extra": { 3337 | "branch-alias": { 3338 | "dev-master": "4.4-dev" 3339 | } 3340 | }, 3341 | "autoload": { 3342 | "psr-4": { 3343 | "Symfony\\Component\\Console\\": "" 3344 | }, 3345 | "exclude-from-classmap": [ 3346 | "/Tests/" 3347 | ] 3348 | }, 3349 | "notification-url": "https://packagist.org/downloads/", 3350 | "license": [ 3351 | "MIT" 3352 | ], 3353 | "authors": [ 3354 | { 3355 | "name": "Fabien Potencier", 3356 | "email": "fabien@symfony.com" 3357 | }, 3358 | { 3359 | "name": "Symfony Community", 3360 | "homepage": "https://symfony.com/contributors" 3361 | } 3362 | ], 3363 | "description": "Symfony Console Component", 3364 | "homepage": "https://symfony.com", 3365 | "time": "2020-05-30T20:06:45+00:00" 3366 | }, 3367 | { 3368 | "name": "symfony/finder", 3369 | "version": "v4.4.10", 3370 | "source": { 3371 | "type": "git", 3372 | "url": "https://github.com/symfony/finder.git", 3373 | "reference": "5729f943f9854c5781984ed4907bbb817735776b" 3374 | }, 3375 | "dist": { 3376 | "type": "zip", 3377 | "url": "https://api.github.com/repos/symfony/finder/zipball/5729f943f9854c5781984ed4907bbb817735776b", 3378 | "reference": "5729f943f9854c5781984ed4907bbb817735776b", 3379 | "shasum": "" 3380 | }, 3381 | "require": { 3382 | "php": "^7.1.3" 3383 | }, 3384 | "type": "library", 3385 | "extra": { 3386 | "branch-alias": { 3387 | "dev-master": "4.4-dev" 3388 | } 3389 | }, 3390 | "autoload": { 3391 | "psr-4": { 3392 | "Symfony\\Component\\Finder\\": "" 3393 | }, 3394 | "exclude-from-classmap": [ 3395 | "/Tests/" 3396 | ] 3397 | }, 3398 | "notification-url": "https://packagist.org/downloads/", 3399 | "license": [ 3400 | "MIT" 3401 | ], 3402 | "authors": [ 3403 | { 3404 | "name": "Fabien Potencier", 3405 | "email": "fabien@symfony.com" 3406 | }, 3407 | { 3408 | "name": "Symfony Community", 3409 | "homepage": "https://symfony.com/contributors" 3410 | } 3411 | ], 3412 | "description": "Symfony Finder Component", 3413 | "homepage": "https://symfony.com", 3414 | "time": "2020-03-27T16:54:36+00:00" 3415 | }, 3416 | { 3417 | "name": "symfony/polyfill-ctype", 3418 | "version": "v1.17.0", 3419 | "source": { 3420 | "type": "git", 3421 | "url": "https://github.com/symfony/polyfill-ctype.git", 3422 | "reference": "e94c8b1bbe2bc77507a1056cdb06451c75b427f9" 3423 | }, 3424 | "dist": { 3425 | "type": "zip", 3426 | "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e94c8b1bbe2bc77507a1056cdb06451c75b427f9", 3427 | "reference": "e94c8b1bbe2bc77507a1056cdb06451c75b427f9", 3428 | "shasum": "" 3429 | }, 3430 | "require": { 3431 | "php": ">=5.3.3" 3432 | }, 3433 | "suggest": { 3434 | "ext-ctype": "For best performance" 3435 | }, 3436 | "type": "library", 3437 | "extra": { 3438 | "branch-alias": { 3439 | "dev-master": "1.17-dev" 3440 | } 3441 | }, 3442 | "autoload": { 3443 | "psr-4": { 3444 | "Symfony\\Polyfill\\Ctype\\": "" 3445 | }, 3446 | "files": [ 3447 | "bootstrap.php" 3448 | ] 3449 | }, 3450 | "notification-url": "https://packagist.org/downloads/", 3451 | "license": [ 3452 | "MIT" 3453 | ], 3454 | "authors": [ 3455 | { 3456 | "name": "Gert de Pagter", 3457 | "email": "BackEndTea@gmail.com" 3458 | }, 3459 | { 3460 | "name": "Symfony Community", 3461 | "homepage": "https://symfony.com/contributors" 3462 | } 3463 | ], 3464 | "description": "Symfony polyfill for ctype functions", 3465 | "homepage": "https://symfony.com", 3466 | "keywords": [ 3467 | "compatibility", 3468 | "ctype", 3469 | "polyfill", 3470 | "portable" 3471 | ], 3472 | "time": "2020-05-12T16:14:59+00:00" 3473 | }, 3474 | { 3475 | "name": "symfony/polyfill-php73", 3476 | "version": "v1.17.0", 3477 | "source": { 3478 | "type": "git", 3479 | "url": "https://github.com/symfony/polyfill-php73.git", 3480 | "reference": "a760d8964ff79ab9bf057613a5808284ec852ccc" 3481 | }, 3482 | "dist": { 3483 | "type": "zip", 3484 | "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/a760d8964ff79ab9bf057613a5808284ec852ccc", 3485 | "reference": "a760d8964ff79ab9bf057613a5808284ec852ccc", 3486 | "shasum": "" 3487 | }, 3488 | "require": { 3489 | "php": ">=5.3.3" 3490 | }, 3491 | "type": "library", 3492 | "extra": { 3493 | "branch-alias": { 3494 | "dev-master": "1.17-dev" 3495 | } 3496 | }, 3497 | "autoload": { 3498 | "psr-4": { 3499 | "Symfony\\Polyfill\\Php73\\": "" 3500 | }, 3501 | "files": [ 3502 | "bootstrap.php" 3503 | ], 3504 | "classmap": [ 3505 | "Resources/stubs" 3506 | ] 3507 | }, 3508 | "notification-url": "https://packagist.org/downloads/", 3509 | "license": [ 3510 | "MIT" 3511 | ], 3512 | "authors": [ 3513 | { 3514 | "name": "Nicolas Grekas", 3515 | "email": "p@tchwork.com" 3516 | }, 3517 | { 3518 | "name": "Symfony Community", 3519 | "homepage": "https://symfony.com/contributors" 3520 | } 3521 | ], 3522 | "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", 3523 | "homepage": "https://symfony.com", 3524 | "keywords": [ 3525 | "compatibility", 3526 | "polyfill", 3527 | "portable", 3528 | "shim" 3529 | ], 3530 | "time": "2020-05-12T16:47:27+00:00" 3531 | }, 3532 | { 3533 | "name": "symfony/service-contracts", 3534 | "version": "v2.1.2", 3535 | "source": { 3536 | "type": "git", 3537 | "url": "https://github.com/symfony/service-contracts.git", 3538 | "reference": "66a8f0957a3ca54e4f724e49028ab19d75a8918b" 3539 | }, 3540 | "dist": { 3541 | "type": "zip", 3542 | "url": "https://api.github.com/repos/symfony/service-contracts/zipball/66a8f0957a3ca54e4f724e49028ab19d75a8918b", 3543 | "reference": "66a8f0957a3ca54e4f724e49028ab19d75a8918b", 3544 | "shasum": "" 3545 | }, 3546 | "require": { 3547 | "php": ">=7.2.5", 3548 | "psr/container": "^1.0" 3549 | }, 3550 | "suggest": { 3551 | "symfony/service-implementation": "" 3552 | }, 3553 | "type": "library", 3554 | "extra": { 3555 | "branch-alias": { 3556 | "dev-master": "2.1-dev" 3557 | } 3558 | }, 3559 | "autoload": { 3560 | "psr-4": { 3561 | "Symfony\\Contracts\\Service\\": "" 3562 | } 3563 | }, 3564 | "notification-url": "https://packagist.org/downloads/", 3565 | "license": [ 3566 | "MIT" 3567 | ], 3568 | "authors": [ 3569 | { 3570 | "name": "Nicolas Grekas", 3571 | "email": "p@tchwork.com" 3572 | }, 3573 | { 3574 | "name": "Symfony Community", 3575 | "homepage": "https://symfony.com/contributors" 3576 | } 3577 | ], 3578 | "description": "Generic abstractions related to writing services", 3579 | "homepage": "https://symfony.com", 3580 | "keywords": [ 3581 | "abstractions", 3582 | "contracts", 3583 | "decoupling", 3584 | "interfaces", 3585 | "interoperability", 3586 | "standards" 3587 | ], 3588 | "time": "2020-05-20T17:43:50+00:00" 3589 | }, 3590 | { 3591 | "name": "theseer/tokenizer", 3592 | "version": "1.1.3", 3593 | "source": { 3594 | "type": "git", 3595 | "url": "https://github.com/theseer/tokenizer.git", 3596 | "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9" 3597 | }, 3598 | "dist": { 3599 | "type": "zip", 3600 | "url": "https://api.github.com/repos/theseer/tokenizer/zipball/11336f6f84e16a720dae9d8e6ed5019efa85a0f9", 3601 | "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9", 3602 | "shasum": "" 3603 | }, 3604 | "require": { 3605 | "ext-dom": "*", 3606 | "ext-tokenizer": "*", 3607 | "ext-xmlwriter": "*", 3608 | "php": "^7.0" 3609 | }, 3610 | "type": "library", 3611 | "autoload": { 3612 | "classmap": [ 3613 | "src/" 3614 | ] 3615 | }, 3616 | "notification-url": "https://packagist.org/downloads/", 3617 | "license": [ 3618 | "BSD-3-Clause" 3619 | ], 3620 | "authors": [ 3621 | { 3622 | "name": "Arne Blankerts", 3623 | "email": "arne@blankerts.de", 3624 | "role": "Developer" 3625 | } 3626 | ], 3627 | "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", 3628 | "time": "2019-06-13T22:48:21+00:00" 3629 | }, 3630 | { 3631 | "name": "webmozart/assert", 3632 | "version": "1.8.0", 3633 | "source": { 3634 | "type": "git", 3635 | "url": "https://github.com/webmozart/assert.git", 3636 | "reference": "ab2cb0b3b559010b75981b1bdce728da3ee90ad6" 3637 | }, 3638 | "dist": { 3639 | "type": "zip", 3640 | "url": "https://api.github.com/repos/webmozart/assert/zipball/ab2cb0b3b559010b75981b1bdce728da3ee90ad6", 3641 | "reference": "ab2cb0b3b559010b75981b1bdce728da3ee90ad6", 3642 | "shasum": "" 3643 | }, 3644 | "require": { 3645 | "php": "^5.3.3 || ^7.0", 3646 | "symfony/polyfill-ctype": "^1.8" 3647 | }, 3648 | "conflict": { 3649 | "vimeo/psalm": "<3.9.1" 3650 | }, 3651 | "require-dev": { 3652 | "phpunit/phpunit": "^4.8.36 || ^7.5.13" 3653 | }, 3654 | "type": "library", 3655 | "autoload": { 3656 | "psr-4": { 3657 | "Webmozart\\Assert\\": "src/" 3658 | } 3659 | }, 3660 | "notification-url": "https://packagist.org/downloads/", 3661 | "license": [ 3662 | "MIT" 3663 | ], 3664 | "authors": [ 3665 | { 3666 | "name": "Bernhard Schussek", 3667 | "email": "bschussek@gmail.com" 3668 | } 3669 | ], 3670 | "description": "Assertions to validate method input/output with nice error messages.", 3671 | "keywords": [ 3672 | "assert", 3673 | "check", 3674 | "validate" 3675 | ], 3676 | "time": "2020-04-18T12:12:48+00:00" 3677 | } 3678 | ], 3679 | "aliases": [], 3680 | "minimum-stability": "stable", 3681 | "stability-flags": [], 3682 | "prefer-stable": false, 3683 | "prefer-lowest": false, 3684 | "platform": [], 3685 | "platform-dev": [] 3686 | } 3687 | --------------------------------------------------------------------------------