├── phpcs.xml.dist ├── .editorconfig ├── src ├── Lib │ ├── PurifierTrait.php │ └── Purifier.php ├── View │ └── Helper │ │ └── HtmlPurifierHelper.php ├── Model │ └── Behavior │ │ └── HtmlPurifierBehavior.php └── Shell │ └── PurifierShell.php ├── composer.json ├── license.txt ├── README.md └── composer.lock /phpcs.xml.dist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 0 8 | 9 | 10 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | ; This file is for unifying the coding style for different editors and IDEs. 2 | ; More information at http://editorconfig.org 3 | 4 | root = true 5 | 6 | [*] 7 | indent_style = space 8 | end_of_line = lf 9 | insert_final_newline = true 10 | trim_trailing_whitespace = true 11 | charset = utf-8 12 | 13 | [*.js] 14 | indent_style = tabs 15 | indent_size = 4 16 | 17 | [*.css] 18 | indent_style = tabs 19 | indent_size = 4 20 | 21 | [*.bat] 22 | indent_style = tabs 23 | indent_size = 4 24 | end_of_line = crlf 25 | 26 | [*.yml] 27 | indent_style = tabs 28 | indent_size = 4 29 | -------------------------------------------------------------------------------- /src/Lib/PurifierTrait.php: -------------------------------------------------------------------------------- 1 | 'default' 27 | ]; 28 | 29 | /** 30 | * Clean markup 31 | * 32 | * @param string $markup Markup string to be sanitized 33 | * @param string $config Purifier config name 34 | * @return string 35 | */ 36 | public function clean($markup, $config = null) 37 | { 38 | if (empty($config) && !empty($this->_config['config'])) { 39 | $config = $this->getConfig('config'); 40 | } 41 | 42 | return Purifier::clean($markup, $config); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /license.txt: -------------------------------------------------------------------------------- 1 | The MIT License 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a 4 | copy of this software and associated documentation files (the "Software"), 5 | to deal in the Software without restriction, including without limitation 6 | the rights to use, copy, modify, merge, publish, distribute, sublicense, 7 | and/or sell copies of the Software, and to permit persons to whom the 8 | Software is furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 18 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 19 | DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /src/Model/Behavior/HtmlPurifierBehavior.php: -------------------------------------------------------------------------------- 1 | [], 33 | 'purifierConfig' => 'default', 34 | 'implementedEvents' => [ 35 | 'Model.beforeMarshal' => 'beforeMarshal', 36 | ], 37 | 'implementedMethods' => [ 38 | 'purifyHtml' => 'purifyHtml' 39 | ] 40 | ]; 41 | 42 | /** 43 | * Before marshal callaback 44 | * 45 | * @param \Cake\Event\Event $event The Model.beforeMarshal event. 46 | * @param \ArrayObject $data Data. 47 | * @return void 48 | */ 49 | public function beforeMarshal(Event $event, ArrayObject $data) 50 | { 51 | foreach ($this->getConfig('fields') as $key => $field) { 52 | if (is_int($key) && isset($data[$field])) { 53 | $data[$field] = $this->purifyHtml($data[$field], $this->getConfig('purifierConfig')); 54 | } 55 | 56 | if (is_string($key) && is_string($field)) { 57 | $data[$key] = $this->purifyHtml($data[$key], $this->getConfig($field)); 58 | } 59 | } 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | CakePHP HTML Purifier Plugin 2 | ---------------------------- 3 | 4 | [![Software License](https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square)](LICENSE.txt) 5 | [![Build Status](https://img.shields.io/travis/burzum/cakephp-html-purifier/2.0.svg?style=flat-square)](https://travis-ci.org/burzum/cakephp-html-purifier) 6 | [![Scrutinizer Coverage](https://img.shields.io/scrutinizer/coverage/g/burzum/cakephp-html-purifier/master.svg?style=flat-square)](https://scrutinizer-ci.com/g/cakephp-html-purifier/) 7 | [![Code Quality](https://img.shields.io/scrutinizer/g/burzum/cakephp-html-purifier.svg?branch=2.0?style=flat-square)](https://scrutinizer.io/r/burzum/cakephp-html-purifier) 8 | 9 | This is a CakePHP wrapper for [the HTML Purifier lib](http://htmlpurifier.org/). 10 | 11 | HTML Purifier is a standards-compliant HTML filter library written in PHP. HTML Purifier will not only remove all malicious code (better known as XSS) with a thoroughly audited, secure yet permissive whitelist, it will also make sure your documents are standards compliant, something only achievable with a comprehensive knowledge of W3C's specifications. 12 | 13 | The plugin includes a trait, a view helper, a behavior and a shell to clean your markup wherever you like, in the view or in the model layer or clean any table and field using the shell. 14 | 15 | --- 16 | 17 | * For **CakePHP 2.x** use the 1.x version or branch. 18 | * For **CakePHP <=3.5** use the 2.0 version or branch. 19 | * For **CakePHP > 3.5** use the 3.0 version or branch. 20 | 21 | Documentation 22 | ------------- 23 | 24 | For documentation, as well as tutorials, see the [docs](docs/Home.md) directory of this repository. 25 | 26 | Support 27 | ------- 28 | 29 | For support and feature request, please visit the [Support Site](https://github.com/burzum/cakephp-html-purifier/issues). 30 | 31 | Contributing to this Plugin 32 | --------------------------- 33 | 34 | Please feel free to contribute to the plugin with new issues, requests, unit tests and code fixes or new features. If you want to contribute some code, create a feature branch from develop, and send us your pull request. Unit tests for new features and issues detected are mandatory to keep quality high. 35 | 36 | * Contributions must follow the [PSR2 coding standard recommendation](https://github.com/php-fig-rectified/fig-rectified-standards). 37 | * [Unit tests](https://book.cakephp.org/4/en/development/testing.html) are required. 38 | 39 | License 40 | ------- 41 | 42 | Copyright 2012 - 2018 Florian Krämer 43 | 44 | Licensed under the [MIT](http://www.opensource.org/licenses/mit-license.php) License. Redistributions of the source code included in this repository must retain the copyright notice found in each file. 45 | -------------------------------------------------------------------------------- /src/Lib/Purifier.php: -------------------------------------------------------------------------------- 1 | _configs[$configName])) { 60 | throw new \InvalidArgumentException(sprintf('Purifier configuration `%s` does not exist!', $configName)); 61 | } 62 | return $_this->_configs[$configName]; 63 | } 64 | 65 | if (is_array($config)) { 66 | $purifierConfig = \HTMLPurifier_Config::createDefault(); 67 | foreach ($config as $key => $value) { 68 | $purifierConfig->set($key, $value); 69 | } 70 | 71 | return $_this->_configs[$configName] = $purifierConfig; 72 | } elseif (is_object($config) && is_a($config, 'HTMLPurifier_Config')) { 73 | return $_this->_configs[$configName] = $config; 74 | } else { 75 | throw new \InvalidArgumentException('Invalid purifier config passed!'); 76 | } 77 | } 78 | 79 | /** 80 | * Gets an instance of the purifier lib only when needed, lazy loading it 81 | * 82 | * @param string $configName 83 | * @return HTMLPurifier 84 | */ 85 | public static function getPurifierInstance($configName = 'default') 86 | { 87 | $_this = Purifier::getInstance(); 88 | 89 | if (!isset($_this->_instances[$configName])) { 90 | if (!isset($_this->_configs[$configName])) { 91 | throw new \InvalidArgumentException(sprintf('Configuration and instance `%s` does not exist!', $configName)); 92 | } 93 | $_this->_instances[$configName] = new \HTMLPurifier($_this->_configs[$configName]); 94 | } 95 | 96 | return $_this->_instances[$configName]; 97 | } 98 | 99 | /** 100 | * Cleans Markup using a given config 101 | * 102 | * @param string $markup 103 | * @param string $configName 104 | */ 105 | public static function clean($markup, $configName = 'default') 106 | { 107 | $_this = Purifier::getInstance(); 108 | 109 | if (!isset($_this->_configs[$configName])) { 110 | throw new \InvalidArgumentException(sprintf('Invalid HtmlPurifier configuration "%s"!', $configName)); 111 | } 112 | 113 | return $_this->getPurifierInstance($configName)->purify($markup); 114 | } 115 | } 116 | -------------------------------------------------------------------------------- /src/Shell/PurifierShell.php: -------------------------------------------------------------------------------- 1 | purify(); 31 | } 32 | 33 | /** 34 | * Gets the table from the shell args. 35 | * 36 | * @return \Cake\ORM\Table 37 | */ 38 | protected function _getTable() 39 | { 40 | $table = (new TableLocator())->get($this->args[0]); 41 | $connection = $table->getConnection(); 42 | $tables = $connection->getSchemaCollection()->listTables(); 43 | 44 | if (!in_array($table->getTable(), $tables)) { 45 | $this->abort(__d('Burzum/HtmlPurifier', 'Table `{0}` does not exist in connection `{1}`!', $table->getTable(), $connection->configName())); 46 | } 47 | 48 | return $table; 49 | } 50 | 51 | /** 52 | * Gets the field(s) from the args and checks if they're present in the table. 53 | * 54 | * @param \Cake\ORM\Table $table Table object. 55 | * @return array Set of of fields explode()'ed from the args 56 | */ 57 | protected function _getFields(Table $table) 58 | { 59 | $fields = explode(',', $this->args[1]); 60 | foreach ($fields as $field) { 61 | if (!$table->hasField($field)) { 62 | $this->abort(sprintf('Table `%s` is missing the field `%s`.', $table->getTable(), $field)); 63 | } 64 | } 65 | 66 | return $fields; 67 | } 68 | 69 | /** 70 | * Loads the purifier behavior for the given table if not already attached. 71 | * 72 | * @param \Cake\ORM\Table $table Table object. 73 | * @param array Set of fields to sanitize 74 | * @return void 75 | */ 76 | protected function _loadBehavior(Table $table, $fields) 77 | { 78 | if (!in_array('HtmlPurifier', $table->behaviors()->loaded())) { 79 | $table->addBehavior( 80 | 'Burzum/HtmlPurifier.HtmlPurifier', [ 81 | 'fields' => $fields, 82 | 'purifierConfig' => $this->param('config') 83 | ] 84 | ); 85 | } 86 | } 87 | 88 | /** 89 | * Purifies data base content. 90 | * 91 | * @return void 92 | */ 93 | public function purify() 94 | { 95 | $table = $this->_getTable(); 96 | $fields = $this->_getFields($table); 97 | $this->_loadBehavior($table, $fields); 98 | 99 | $query = $table->find(); 100 | if ($table->hasFinder('purifier')) { 101 | $query->find('purifier'); 102 | } 103 | $total = $query->all()->count(); 104 | 105 | $this->info(__d('Burzum/HtmlPurifier', 'Sanitizing fields `{0}` in table `{1}`', implode(',', $fields), $table->getTable())); 106 | 107 | $this->helper('progress')->output( 108 | [ 109 | 'total' => $total, 110 | 'callback' => function ($progress) use ($total, $table, $fields) { 111 | $chunkSize = 25; 112 | $chunkCount = 0; 113 | while ($chunkCount <= $total) { 114 | $this->_process($table, $chunkCount, $chunkSize, $fields); 115 | $chunkCount = $chunkCount + $chunkSize; 116 | $progress->increment($chunkSize); 117 | $progress->draw(); 118 | } 119 | return; 120 | } 121 | ] 122 | ); 123 | } 124 | 125 | /** 126 | * Processes the records. 127 | * 128 | * @param \Cake\ORM\Table $table Table instance 129 | * @param int $chunkCount Chunk Count 130 | * @param int $chunkSize Chunk Size 131 | * @param array $fields Fields to sanitize 132 | * @return void 133 | */ 134 | protected function _process(Table $table, $chunkCount, $chunkSize, $fields) 135 | { 136 | $query = $table->find(); 137 | if ($table->hasFinder('purifier')) { 138 | $query->find('purifier'); 139 | } 140 | 141 | $fields[] = $table->getPrimaryKey(); 142 | 143 | $results = $query 144 | ->select($fields) 145 | ->offset($chunkCount) 146 | ->limit($chunkSize) 147 | ->orderDesc($table->aliasField($table->getPrimaryKey())) 148 | ->all(); 149 | 150 | if (empty($results)) { 151 | return; 152 | } 153 | 154 | foreach ($results as $result) { 155 | try { 156 | $table->patchEntity($result, $result->toArray()); 157 | $table->save($result); 158 | $chunkCount++; 159 | } catch (\Exception $e) { 160 | $this->abort($e->getMessage()); 161 | } 162 | } 163 | } 164 | 165 | /** 166 | * {@inheritDoc} 167 | */ 168 | public function getOptionParser(): ConsoleOptionParser 169 | { 170 | $parser = parent::getOptionParser(); 171 | 172 | $parser->setDescription([ 173 | __d('Burzum/HtmlPurifier', 'This shell allows you to clean database content with the HTML Purifier.'), 174 | ]); 175 | 176 | $parser->addArguments( 177 | [ 178 | 'table' => [ 179 | 'help' => __d('Burzum/HtmlPurifier', 'The table to sanitize'), 180 | 'required' => true, 181 | ], 182 | 'fields' => [ 183 | 'help' => __d('Burzum/HtmlPurifier', 'The field(s) to purify, comma separated'), 184 | 'required' => true, 185 | ], 186 | ] 187 | ); 188 | 189 | $parser->addOption( 190 | 'config', [ 191 | 'short' => 'c', 192 | 'help' => __d('Burzum/HtmlPurifier', 'The purifier config you want to use'), 193 | 'default' => 'default' 194 | ] 195 | ); 196 | 197 | return $parser; 198 | } 199 | } 200 | -------------------------------------------------------------------------------- /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": "03f5b429c36ede4e3dc06444a5de8007", 8 | "packages": [ 9 | { 10 | "name": "aura/intl", 11 | "version": "3.0.0", 12 | "source": { 13 | "type": "git", 14 | "url": "https://github.com/auraphp/Aura.Intl.git", 15 | "reference": "7fce228980b19bf4dee2d7bbd6202a69b0dde926" 16 | }, 17 | "dist": { 18 | "type": "zip", 19 | "url": "https://api.github.com/repos/auraphp/Aura.Intl/zipball/7fce228980b19bf4dee2d7bbd6202a69b0dde926", 20 | "reference": "7fce228980b19bf4dee2d7bbd6202a69b0dde926", 21 | "shasum": "" 22 | }, 23 | "require": { 24 | "php": "^5.6|^7.0" 25 | }, 26 | "type": "library", 27 | "autoload": { 28 | "psr-4": { 29 | "Aura\\Intl\\": "src/" 30 | } 31 | }, 32 | "notification-url": "https://packagist.org/downloads/", 33 | "license": [ 34 | "MIT" 35 | ], 36 | "authors": [ 37 | { 38 | "name": "Aura.Intl Contributors", 39 | "homepage": "https://github.com/auraphp/Aura.Intl/contributors" 40 | } 41 | ], 42 | "description": "The Aura Intl package provides internationalization tools, specifically message translation.", 43 | "homepage": "https://github.com/auraphp/Aura.Intl", 44 | "keywords": [ 45 | "g11n", 46 | "globalization", 47 | "i18n", 48 | "internationalization", 49 | "intl", 50 | "l10n", 51 | "localization" 52 | ], 53 | "time": "2017-01-20T05:00:11+00:00" 54 | }, 55 | { 56 | "name": "cakephp/cakephp", 57 | "version": "4.1.1", 58 | "source": { 59 | "type": "git", 60 | "url": "https://github.com/cakephp/cakephp.git", 61 | "reference": "ec1afe59755717c25492bdb50efcd5f06fe52c0b" 62 | }, 63 | "dist": { 64 | "type": "zip", 65 | "url": "https://api.github.com/repos/cakephp/cakephp/zipball/ec1afe59755717c25492bdb50efcd5f06fe52c0b", 66 | "reference": "ec1afe59755717c25492bdb50efcd5f06fe52c0b", 67 | "shasum": "" 68 | }, 69 | "require": { 70 | "aura/intl": "^3.0.0", 71 | "cakephp/chronos": "^2.0", 72 | "composer/ca-bundle": "^1.2", 73 | "ext-intl": "*", 74 | "ext-json": "*", 75 | "ext-mbstring": "*", 76 | "laminas/laminas-diactoros": "^2.2.2", 77 | "laminas/laminas-httphandlerrunner": "^1.1", 78 | "php": ">=7.2.0", 79 | "psr/http-client": "^1.0", 80 | "psr/http-server-handler": "^1.0", 81 | "psr/http-server-middleware": "^1.0", 82 | "psr/log": "^1.0.0", 83 | "psr/simple-cache": "^1.0.0" 84 | }, 85 | "replace": { 86 | "cakephp/cache": "self.version", 87 | "cakephp/collection": "self.version", 88 | "cakephp/console": "self.version", 89 | "cakephp/core": "self.version", 90 | "cakephp/database": "self.version", 91 | "cakephp/datasource": "self.version", 92 | "cakephp/event": "self.version", 93 | "cakephp/filesystem": "self.version", 94 | "cakephp/form": "self.version", 95 | "cakephp/http": "self.version", 96 | "cakephp/i18n": "self.version", 97 | "cakephp/log": "self.version", 98 | "cakephp/orm": "self.version", 99 | "cakephp/utility": "self.version", 100 | "cakephp/validation": "self.version" 101 | }, 102 | "require-dev": { 103 | "cakephp/cakephp-codesniffer": "^4.0", 104 | "mikey179/vfsstream": "^1.6", 105 | "paragonie/csp-builder": "^2.3", 106 | "phpunit/phpunit": "~8.5.0" 107 | }, 108 | "suggest": { 109 | "ext-curl": "To enable more efficient network calls in Http\\Client.", 110 | "ext-openssl": "To use Security::encrypt() or have secure CSRF token generation.", 111 | "lib-ICU": "The intl PHP library, to use Text::transliterate() or Text::slug()", 112 | "paragonie/csp-builder": "CSP builder, to use the CSP Middleware" 113 | }, 114 | "type": "library", 115 | "autoload": { 116 | "psr-4": { 117 | "Cake\\": "src/" 118 | }, 119 | "files": [ 120 | "src/Core/functions.php", 121 | "src/Collection/functions.php", 122 | "src/I18n/functions.php", 123 | "src/Routing/functions.php", 124 | "src/Utility/bootstrap.php" 125 | ] 126 | }, 127 | "notification-url": "https://packagist.org/downloads/", 128 | "license": [ 129 | "MIT" 130 | ], 131 | "authors": [ 132 | { 133 | "name": "CakePHP Community", 134 | "homepage": "https://github.com/cakephp/cakephp/graphs/contributors" 135 | } 136 | ], 137 | "description": "The CakePHP framework", 138 | "homepage": "https://cakephp.org", 139 | "keywords": [ 140 | "conventions over configuration", 141 | "dry", 142 | "form", 143 | "framework", 144 | "mvc", 145 | "orm", 146 | "psr-7", 147 | "rapid-development", 148 | "validation" 149 | ], 150 | "time": "2020-07-19T02:28:50+00:00" 151 | }, 152 | { 153 | "name": "cakephp/cakephp-codesniffer", 154 | "version": "3.3.0", 155 | "source": { 156 | "type": "git", 157 | "url": "https://github.com/cakephp/cakephp-codesniffer.git", 158 | "reference": "7998a191e787fd5b68cb635d7050cb0d7b55e1a1" 159 | }, 160 | "dist": { 161 | "type": "zip", 162 | "url": "https://api.github.com/repos/cakephp/cakephp-codesniffer/zipball/7998a191e787fd5b68cb635d7050cb0d7b55e1a1", 163 | "reference": "7998a191e787fd5b68cb635d7050cb0d7b55e1a1", 164 | "shasum": "" 165 | }, 166 | "require": { 167 | "php": ">=5.6", 168 | "squizlabs/php_codesniffer": "^3.0.0" 169 | }, 170 | "require-dev": { 171 | "phpunit/phpunit": "<6.0" 172 | }, 173 | "type": "phpcodesniffer-standard", 174 | "autoload": { 175 | "psr-4": { 176 | "CakePHP\\": "CakePHP/" 177 | } 178 | }, 179 | "notification-url": "https://packagist.org/downloads/", 180 | "license": [ 181 | "MIT" 182 | ], 183 | "authors": [ 184 | { 185 | "name": "CakePHP Community", 186 | "homepage": "https://github.com/cakephp/cakephp-codesniffer/graphs/contributors" 187 | } 188 | ], 189 | "description": "CakePHP CodeSniffer Standards", 190 | "homepage": "https://cakephp.org", 191 | "keywords": [ 192 | "codesniffer", 193 | "framework" 194 | ], 195 | "time": "2019-12-07T03:02:34+00:00" 196 | }, 197 | { 198 | "name": "cakephp/chronos", 199 | "version": "2.0.5", 200 | "source": { 201 | "type": "git", 202 | "url": "https://github.com/cakephp/chronos.git", 203 | "reference": "9309d85c33c65917c0e582c0a6b07df56fe27dd9" 204 | }, 205 | "dist": { 206 | "type": "zip", 207 | "url": "https://api.github.com/repos/cakephp/chronos/zipball/9309d85c33c65917c0e582c0a6b07df56fe27dd9", 208 | "reference": "9309d85c33c65917c0e582c0a6b07df56fe27dd9", 209 | "shasum": "" 210 | }, 211 | "require": { 212 | "php": ">=7.2" 213 | }, 214 | "require-dev": { 215 | "cakephp/cakephp-codesniffer": "^4.0", 216 | "phpbench/phpbench": "^1.0@dev", 217 | "phpunit/phpunit": "^8.0" 218 | }, 219 | "type": "library", 220 | "autoload": { 221 | "psr-4": { 222 | "Cake\\Chronos\\": "src/" 223 | }, 224 | "files": [ 225 | "src/carbon_compat.php" 226 | ] 227 | }, 228 | "notification-url": "https://packagist.org/downloads/", 229 | "license": [ 230 | "MIT" 231 | ], 232 | "authors": [ 233 | { 234 | "name": "Brian Nesbitt", 235 | "email": "brian@nesbot.com", 236 | "homepage": "http://nesbot.com" 237 | }, 238 | { 239 | "name": "The CakePHP Team", 240 | "homepage": "http://cakephp.org" 241 | } 242 | ], 243 | "description": "A simple API extension for DateTime.", 244 | "homepage": "http://cakephp.org", 245 | "keywords": [ 246 | "date", 247 | "datetime", 248 | "time" 249 | ], 250 | "time": "2020-05-26T01:27:20+00:00" 251 | }, 252 | { 253 | "name": "composer/ca-bundle", 254 | "version": "1.2.7", 255 | "source": { 256 | "type": "git", 257 | "url": "https://github.com/composer/ca-bundle.git", 258 | "reference": "95c63ab2117a72f48f5a55da9740a3273d45b7fd" 259 | }, 260 | "dist": { 261 | "type": "zip", 262 | "url": "https://api.github.com/repos/composer/ca-bundle/zipball/95c63ab2117a72f48f5a55da9740a3273d45b7fd", 263 | "reference": "95c63ab2117a72f48f5a55da9740a3273d45b7fd", 264 | "shasum": "" 265 | }, 266 | "require": { 267 | "ext-openssl": "*", 268 | "ext-pcre": "*", 269 | "php": "^5.3.2 || ^7.0 || ^8.0" 270 | }, 271 | "require-dev": { 272 | "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8", 273 | "psr/log": "^1.0", 274 | "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0" 275 | }, 276 | "type": "library", 277 | "extra": { 278 | "branch-alias": { 279 | "dev-master": "1.x-dev" 280 | } 281 | }, 282 | "autoload": { 283 | "psr-4": { 284 | "Composer\\CaBundle\\": "src" 285 | } 286 | }, 287 | "notification-url": "https://packagist.org/downloads/", 288 | "license": [ 289 | "MIT" 290 | ], 291 | "authors": [ 292 | { 293 | "name": "Jordi Boggiano", 294 | "email": "j.boggiano@seld.be", 295 | "homepage": "http://seld.be" 296 | } 297 | ], 298 | "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.", 299 | "keywords": [ 300 | "cabundle", 301 | "cacert", 302 | "certificate", 303 | "ssl", 304 | "tls" 305 | ], 306 | "funding": [ 307 | { 308 | "url": "https://packagist.com", 309 | "type": "custom" 310 | }, 311 | { 312 | "url": "https://tidelift.com/funding/github/packagist/composer/composer", 313 | "type": "tidelift" 314 | } 315 | ], 316 | "time": "2020-04-08T08:27:21+00:00" 317 | }, 318 | { 319 | "name": "ezyang/htmlpurifier", 320 | "version": "v4.13.0", 321 | "source": { 322 | "type": "git", 323 | "url": "https://github.com/ezyang/htmlpurifier.git", 324 | "reference": "08e27c97e4c6ed02f37c5b2b20488046c8d90d75" 325 | }, 326 | "dist": { 327 | "type": "zip", 328 | "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/08e27c97e4c6ed02f37c5b2b20488046c8d90d75", 329 | "reference": "08e27c97e4c6ed02f37c5b2b20488046c8d90d75", 330 | "shasum": "" 331 | }, 332 | "require": { 333 | "php": ">=5.2" 334 | }, 335 | "require-dev": { 336 | "simpletest/simpletest": "dev-master#72de02a7b80c6bb8864ef9bf66d41d2f58f826bd" 337 | }, 338 | "type": "library", 339 | "autoload": { 340 | "psr-0": { 341 | "HTMLPurifier": "library/" 342 | }, 343 | "files": [ 344 | "library/HTMLPurifier.composer.php" 345 | ], 346 | "exclude-from-classmap": [ 347 | "/library/HTMLPurifier/Language/" 348 | ] 349 | }, 350 | "notification-url": "https://packagist.org/downloads/", 351 | "license": [ 352 | "LGPL-2.1-or-later" 353 | ], 354 | "authors": [ 355 | { 356 | "name": "Edward Z. Yang", 357 | "email": "admin@htmlpurifier.org", 358 | "homepage": "http://ezyang.com" 359 | } 360 | ], 361 | "description": "Standards compliant HTML filter written in PHP", 362 | "homepage": "http://htmlpurifier.org/", 363 | "keywords": [ 364 | "html" 365 | ], 366 | "time": "2020-06-29T00:56:53+00:00" 367 | }, 368 | { 369 | "name": "laminas/laminas-diactoros", 370 | "version": "2.3.1", 371 | "source": { 372 | "type": "git", 373 | "url": "https://github.com/laminas/laminas-diactoros.git", 374 | "reference": "2ffc7cc816f6207b27923ee15edf6fac668390aa" 375 | }, 376 | "dist": { 377 | "type": "zip", 378 | "url": "https://api.github.com/repos/laminas/laminas-diactoros/zipball/2ffc7cc816f6207b27923ee15edf6fac668390aa", 379 | "reference": "2ffc7cc816f6207b27923ee15edf6fac668390aa", 380 | "shasum": "" 381 | }, 382 | "require": { 383 | "laminas/laminas-zendframework-bridge": "^1.0", 384 | "php": "^7.1", 385 | "psr/http-factory": "^1.0", 386 | "psr/http-message": "^1.0" 387 | }, 388 | "conflict": { 389 | "phpspec/prophecy": "<1.9.0" 390 | }, 391 | "provide": { 392 | "psr/http-factory-implementation": "1.0", 393 | "psr/http-message-implementation": "1.0" 394 | }, 395 | "replace": { 396 | "zendframework/zend-diactoros": "^2.2.1" 397 | }, 398 | "require-dev": { 399 | "ext-curl": "*", 400 | "ext-dom": "*", 401 | "ext-libxml": "*", 402 | "http-interop/http-factory-tests": "^0.5.0", 403 | "laminas/laminas-coding-standard": "~1.0.0", 404 | "php-http/psr7-integration-tests": "^1.0", 405 | "phpunit/phpunit": "^7.5.18" 406 | }, 407 | "type": "library", 408 | "extra": { 409 | "branch-alias": { 410 | "dev-master": "2.3.x-dev", 411 | "dev-develop": "2.4.x-dev" 412 | }, 413 | "laminas": { 414 | "config-provider": "Laminas\\Diactoros\\ConfigProvider", 415 | "module": "Laminas\\Diactoros" 416 | } 417 | }, 418 | "autoload": { 419 | "files": [ 420 | "src/functions/create_uploaded_file.php", 421 | "src/functions/marshal_headers_from_sapi.php", 422 | "src/functions/marshal_method_from_sapi.php", 423 | "src/functions/marshal_protocol_version_from_sapi.php", 424 | "src/functions/marshal_uri_from_sapi.php", 425 | "src/functions/normalize_server.php", 426 | "src/functions/normalize_uploaded_files.php", 427 | "src/functions/parse_cookie_header.php", 428 | "src/functions/create_uploaded_file.legacy.php", 429 | "src/functions/marshal_headers_from_sapi.legacy.php", 430 | "src/functions/marshal_method_from_sapi.legacy.php", 431 | "src/functions/marshal_protocol_version_from_sapi.legacy.php", 432 | "src/functions/marshal_uri_from_sapi.legacy.php", 433 | "src/functions/normalize_server.legacy.php", 434 | "src/functions/normalize_uploaded_files.legacy.php", 435 | "src/functions/parse_cookie_header.legacy.php" 436 | ], 437 | "psr-4": { 438 | "Laminas\\Diactoros\\": "src/" 439 | } 440 | }, 441 | "notification-url": "https://packagist.org/downloads/", 442 | "license": [ 443 | "BSD-3-Clause" 444 | ], 445 | "description": "PSR HTTP Message implementations", 446 | "homepage": "https://laminas.dev", 447 | "keywords": [ 448 | "http", 449 | "laminas", 450 | "psr", 451 | "psr-17", 452 | "psr-7" 453 | ], 454 | "funding": [ 455 | { 456 | "url": "https://funding.communitybridge.org/projects/laminas-project", 457 | "type": "community_bridge" 458 | } 459 | ], 460 | "time": "2020-07-07T15:34:31+00:00" 461 | }, 462 | { 463 | "name": "laminas/laminas-httphandlerrunner", 464 | "version": "1.2.0", 465 | "source": { 466 | "type": "git", 467 | "url": "https://github.com/laminas/laminas-httphandlerrunner.git", 468 | "reference": "e1a5dad040e0043135e8095ee27d1fbf6fb640e1" 469 | }, 470 | "dist": { 471 | "type": "zip", 472 | "url": "https://api.github.com/repos/laminas/laminas-httphandlerrunner/zipball/e1a5dad040e0043135e8095ee27d1fbf6fb640e1", 473 | "reference": "e1a5dad040e0043135e8095ee27d1fbf6fb640e1", 474 | "shasum": "" 475 | }, 476 | "require": { 477 | "laminas/laminas-zendframework-bridge": "^1.0", 478 | "php": "^7.1", 479 | "psr/http-message": "^1.0", 480 | "psr/http-message-implementation": "^1.0", 481 | "psr/http-server-handler": "^1.0" 482 | }, 483 | "replace": { 484 | "zendframework/zend-httphandlerrunner": "^1.1.0" 485 | }, 486 | "require-dev": { 487 | "laminas/laminas-coding-standard": "~1.0.0", 488 | "laminas/laminas-diactoros": "^1.7 || ^2.1.1", 489 | "phpunit/phpunit": "^7.0.2" 490 | }, 491 | "type": "library", 492 | "extra": { 493 | "branch-alias": { 494 | "dev-master": "1.2.x-dev", 495 | "dev-develop": "1.3.x-dev" 496 | }, 497 | "laminas": { 498 | "config-provider": "Laminas\\HttpHandlerRunner\\ConfigProvider" 499 | } 500 | }, 501 | "autoload": { 502 | "psr-4": { 503 | "Laminas\\HttpHandlerRunner\\": "src/" 504 | } 505 | }, 506 | "notification-url": "https://packagist.org/downloads/", 507 | "license": [ 508 | "BSD-3-Clause" 509 | ], 510 | "description": "Execute PSR-15 RequestHandlerInterface instances and emit responses they generate.", 511 | "homepage": "https://laminas.dev", 512 | "keywords": [ 513 | "components", 514 | "laminas", 515 | "mezzio", 516 | "psr-15", 517 | "psr-7" 518 | ], 519 | "funding": [ 520 | { 521 | "url": "https://funding.communitybridge.org/projects/laminas-project", 522 | "type": "community_bridge" 523 | } 524 | ], 525 | "time": "2020-06-03T15:52:17+00:00" 526 | }, 527 | { 528 | "name": "laminas/laminas-zendframework-bridge", 529 | "version": "1.0.4", 530 | "source": { 531 | "type": "git", 532 | "url": "https://github.com/laminas/laminas-zendframework-bridge.git", 533 | "reference": "fcd87520e4943d968557803919523772475e8ea3" 534 | }, 535 | "dist": { 536 | "type": "zip", 537 | "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/fcd87520e4943d968557803919523772475e8ea3", 538 | "reference": "fcd87520e4943d968557803919523772475e8ea3", 539 | "shasum": "" 540 | }, 541 | "require": { 542 | "php": "^5.6 || ^7.0" 543 | }, 544 | "require-dev": { 545 | "phpunit/phpunit": "^5.7 || ^6.5 || ^7.5 || ^8.1", 546 | "squizlabs/php_codesniffer": "^3.5" 547 | }, 548 | "type": "library", 549 | "extra": { 550 | "branch-alias": { 551 | "dev-master": "1.0.x-dev", 552 | "dev-develop": "1.1.x-dev" 553 | }, 554 | "laminas": { 555 | "module": "Laminas\\ZendFrameworkBridge" 556 | } 557 | }, 558 | "autoload": { 559 | "files": [ 560 | "src/autoload.php" 561 | ], 562 | "psr-4": { 563 | "Laminas\\ZendFrameworkBridge\\": "src//" 564 | } 565 | }, 566 | "notification-url": "https://packagist.org/downloads/", 567 | "license": [ 568 | "BSD-3-Clause" 569 | ], 570 | "description": "Alias legacy ZF class names to Laminas Project equivalents.", 571 | "keywords": [ 572 | "ZendFramework", 573 | "autoloading", 574 | "laminas", 575 | "zf" 576 | ], 577 | "funding": [ 578 | { 579 | "url": "https://funding.communitybridge.org/projects/laminas-project", 580 | "type": "community_bridge" 581 | } 582 | ], 583 | "time": "2020-05-20T16:45:56+00:00" 584 | }, 585 | { 586 | "name": "psr/http-client", 587 | "version": "1.0.1", 588 | "source": { 589 | "type": "git", 590 | "url": "https://github.com/php-fig/http-client.git", 591 | "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" 592 | }, 593 | "dist": { 594 | "type": "zip", 595 | "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", 596 | "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", 597 | "shasum": "" 598 | }, 599 | "require": { 600 | "php": "^7.0 || ^8.0", 601 | "psr/http-message": "^1.0" 602 | }, 603 | "type": "library", 604 | "extra": { 605 | "branch-alias": { 606 | "dev-master": "1.0.x-dev" 607 | } 608 | }, 609 | "autoload": { 610 | "psr-4": { 611 | "Psr\\Http\\Client\\": "src/" 612 | } 613 | }, 614 | "notification-url": "https://packagist.org/downloads/", 615 | "license": [ 616 | "MIT" 617 | ], 618 | "authors": [ 619 | { 620 | "name": "PHP-FIG", 621 | "homepage": "http://www.php-fig.org/" 622 | } 623 | ], 624 | "description": "Common interface for HTTP clients", 625 | "homepage": "https://github.com/php-fig/http-client", 626 | "keywords": [ 627 | "http", 628 | "http-client", 629 | "psr", 630 | "psr-18" 631 | ], 632 | "time": "2020-06-29T06:28:15+00:00" 633 | }, 634 | { 635 | "name": "psr/http-factory", 636 | "version": "1.0.1", 637 | "source": { 638 | "type": "git", 639 | "url": "https://github.com/php-fig/http-factory.git", 640 | "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" 641 | }, 642 | "dist": { 643 | "type": "zip", 644 | "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", 645 | "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", 646 | "shasum": "" 647 | }, 648 | "require": { 649 | "php": ">=7.0.0", 650 | "psr/http-message": "^1.0" 651 | }, 652 | "type": "library", 653 | "extra": { 654 | "branch-alias": { 655 | "dev-master": "1.0.x-dev" 656 | } 657 | }, 658 | "autoload": { 659 | "psr-4": { 660 | "Psr\\Http\\Message\\": "src/" 661 | } 662 | }, 663 | "notification-url": "https://packagist.org/downloads/", 664 | "license": [ 665 | "MIT" 666 | ], 667 | "authors": [ 668 | { 669 | "name": "PHP-FIG", 670 | "homepage": "http://www.php-fig.org/" 671 | } 672 | ], 673 | "description": "Common interfaces for PSR-7 HTTP message factories", 674 | "keywords": [ 675 | "factory", 676 | "http", 677 | "message", 678 | "psr", 679 | "psr-17", 680 | "psr-7", 681 | "request", 682 | "response" 683 | ], 684 | "time": "2019-04-30T12:38:16+00:00" 685 | }, 686 | { 687 | "name": "psr/http-message", 688 | "version": "1.0.1", 689 | "source": { 690 | "type": "git", 691 | "url": "https://github.com/php-fig/http-message.git", 692 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" 693 | }, 694 | "dist": { 695 | "type": "zip", 696 | "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", 697 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", 698 | "shasum": "" 699 | }, 700 | "require": { 701 | "php": ">=5.3.0" 702 | }, 703 | "type": "library", 704 | "extra": { 705 | "branch-alias": { 706 | "dev-master": "1.0.x-dev" 707 | } 708 | }, 709 | "autoload": { 710 | "psr-4": { 711 | "Psr\\Http\\Message\\": "src/" 712 | } 713 | }, 714 | "notification-url": "https://packagist.org/downloads/", 715 | "license": [ 716 | "MIT" 717 | ], 718 | "authors": [ 719 | { 720 | "name": "PHP-FIG", 721 | "homepage": "http://www.php-fig.org/" 722 | } 723 | ], 724 | "description": "Common interface for HTTP messages", 725 | "homepage": "https://github.com/php-fig/http-message", 726 | "keywords": [ 727 | "http", 728 | "http-message", 729 | "psr", 730 | "psr-7", 731 | "request", 732 | "response" 733 | ], 734 | "time": "2016-08-06T14:39:51+00:00" 735 | }, 736 | { 737 | "name": "psr/http-server-handler", 738 | "version": "1.0.1", 739 | "source": { 740 | "type": "git", 741 | "url": "https://github.com/php-fig/http-server-handler.git", 742 | "reference": "aff2f80e33b7f026ec96bb42f63242dc50ffcae7" 743 | }, 744 | "dist": { 745 | "type": "zip", 746 | "url": "https://api.github.com/repos/php-fig/http-server-handler/zipball/aff2f80e33b7f026ec96bb42f63242dc50ffcae7", 747 | "reference": "aff2f80e33b7f026ec96bb42f63242dc50ffcae7", 748 | "shasum": "" 749 | }, 750 | "require": { 751 | "php": ">=7.0", 752 | "psr/http-message": "^1.0" 753 | }, 754 | "type": "library", 755 | "extra": { 756 | "branch-alias": { 757 | "dev-master": "1.0.x-dev" 758 | } 759 | }, 760 | "autoload": { 761 | "psr-4": { 762 | "Psr\\Http\\Server\\": "src/" 763 | } 764 | }, 765 | "notification-url": "https://packagist.org/downloads/", 766 | "license": [ 767 | "MIT" 768 | ], 769 | "authors": [ 770 | { 771 | "name": "PHP-FIG", 772 | "homepage": "http://www.php-fig.org/" 773 | } 774 | ], 775 | "description": "Common interface for HTTP server-side request handler", 776 | "keywords": [ 777 | "handler", 778 | "http", 779 | "http-interop", 780 | "psr", 781 | "psr-15", 782 | "psr-7", 783 | "request", 784 | "response", 785 | "server" 786 | ], 787 | "time": "2018-10-30T16:46:14+00:00" 788 | }, 789 | { 790 | "name": "psr/http-server-middleware", 791 | "version": "1.0.1", 792 | "source": { 793 | "type": "git", 794 | "url": "https://github.com/php-fig/http-server-middleware.git", 795 | "reference": "2296f45510945530b9dceb8bcedb5cb84d40c5f5" 796 | }, 797 | "dist": { 798 | "type": "zip", 799 | "url": "https://api.github.com/repos/php-fig/http-server-middleware/zipball/2296f45510945530b9dceb8bcedb5cb84d40c5f5", 800 | "reference": "2296f45510945530b9dceb8bcedb5cb84d40c5f5", 801 | "shasum": "" 802 | }, 803 | "require": { 804 | "php": ">=7.0", 805 | "psr/http-message": "^1.0", 806 | "psr/http-server-handler": "^1.0" 807 | }, 808 | "type": "library", 809 | "extra": { 810 | "branch-alias": { 811 | "dev-master": "1.0.x-dev" 812 | } 813 | }, 814 | "autoload": { 815 | "psr-4": { 816 | "Psr\\Http\\Server\\": "src/" 817 | } 818 | }, 819 | "notification-url": "https://packagist.org/downloads/", 820 | "license": [ 821 | "MIT" 822 | ], 823 | "authors": [ 824 | { 825 | "name": "PHP-FIG", 826 | "homepage": "http://www.php-fig.org/" 827 | } 828 | ], 829 | "description": "Common interface for HTTP server-side middleware", 830 | "keywords": [ 831 | "http", 832 | "http-interop", 833 | "middleware", 834 | "psr", 835 | "psr-15", 836 | "psr-7", 837 | "request", 838 | "response" 839 | ], 840 | "time": "2018-10-30T17:12:04+00:00" 841 | }, 842 | { 843 | "name": "psr/log", 844 | "version": "1.1.3", 845 | "source": { 846 | "type": "git", 847 | "url": "https://github.com/php-fig/log.git", 848 | "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc" 849 | }, 850 | "dist": { 851 | "type": "zip", 852 | "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc", 853 | "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc", 854 | "shasum": "" 855 | }, 856 | "require": { 857 | "php": ">=5.3.0" 858 | }, 859 | "type": "library", 860 | "extra": { 861 | "branch-alias": { 862 | "dev-master": "1.1.x-dev" 863 | } 864 | }, 865 | "autoload": { 866 | "psr-4": { 867 | "Psr\\Log\\": "Psr/Log/" 868 | } 869 | }, 870 | "notification-url": "https://packagist.org/downloads/", 871 | "license": [ 872 | "MIT" 873 | ], 874 | "authors": [ 875 | { 876 | "name": "PHP-FIG", 877 | "homepage": "http://www.php-fig.org/" 878 | } 879 | ], 880 | "description": "Common interface for logging libraries", 881 | "homepage": "https://github.com/php-fig/log", 882 | "keywords": [ 883 | "log", 884 | "psr", 885 | "psr-3" 886 | ], 887 | "time": "2020-03-23T09:12:05+00:00" 888 | }, 889 | { 890 | "name": "psr/simple-cache", 891 | "version": "1.0.1", 892 | "source": { 893 | "type": "git", 894 | "url": "https://github.com/php-fig/simple-cache.git", 895 | "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" 896 | }, 897 | "dist": { 898 | "type": "zip", 899 | "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", 900 | "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", 901 | "shasum": "" 902 | }, 903 | "require": { 904 | "php": ">=5.3.0" 905 | }, 906 | "type": "library", 907 | "extra": { 908 | "branch-alias": { 909 | "dev-master": "1.0.x-dev" 910 | } 911 | }, 912 | "autoload": { 913 | "psr-4": { 914 | "Psr\\SimpleCache\\": "src/" 915 | } 916 | }, 917 | "notification-url": "https://packagist.org/downloads/", 918 | "license": [ 919 | "MIT" 920 | ], 921 | "authors": [ 922 | { 923 | "name": "PHP-FIG", 924 | "homepage": "http://www.php-fig.org/" 925 | } 926 | ], 927 | "description": "Common interfaces for simple caching", 928 | "keywords": [ 929 | "cache", 930 | "caching", 931 | "psr", 932 | "psr-16", 933 | "simple-cache" 934 | ], 935 | "time": "2017-10-23T01:57:42+00:00" 936 | }, 937 | { 938 | "name": "squizlabs/php_codesniffer", 939 | "version": "3.5.5", 940 | "source": { 941 | "type": "git", 942 | "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", 943 | "reference": "73e2e7f57d958e7228fce50dc0c61f58f017f9f6" 944 | }, 945 | "dist": { 946 | "type": "zip", 947 | "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/73e2e7f57d958e7228fce50dc0c61f58f017f9f6", 948 | "reference": "73e2e7f57d958e7228fce50dc0c61f58f017f9f6", 949 | "shasum": "" 950 | }, 951 | "require": { 952 | "ext-simplexml": "*", 953 | "ext-tokenizer": "*", 954 | "ext-xmlwriter": "*", 955 | "php": ">=5.4.0" 956 | }, 957 | "require-dev": { 958 | "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" 959 | }, 960 | "bin": [ 961 | "bin/phpcs", 962 | "bin/phpcbf" 963 | ], 964 | "type": "library", 965 | "extra": { 966 | "branch-alias": { 967 | "dev-master": "3.x-dev" 968 | } 969 | }, 970 | "notification-url": "https://packagist.org/downloads/", 971 | "license": [ 972 | "BSD-3-Clause" 973 | ], 974 | "authors": [ 975 | { 976 | "name": "Greg Sherwood", 977 | "role": "lead" 978 | } 979 | ], 980 | "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", 981 | "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", 982 | "keywords": [ 983 | "phpcs", 984 | "standards" 985 | ], 986 | "time": "2020-04-17T01:09:41+00:00" 987 | } 988 | ], 989 | "packages-dev": [ 990 | { 991 | "name": "doctrine/instantiator", 992 | "version": "1.3.1", 993 | "source": { 994 | "type": "git", 995 | "url": "https://github.com/doctrine/instantiator.git", 996 | "reference": "f350df0268e904597e3bd9c4685c53e0e333feea" 997 | }, 998 | "dist": { 999 | "type": "zip", 1000 | "url": "https://api.github.com/repos/doctrine/instantiator/zipball/f350df0268e904597e3bd9c4685c53e0e333feea", 1001 | "reference": "f350df0268e904597e3bd9c4685c53e0e333feea", 1002 | "shasum": "" 1003 | }, 1004 | "require": { 1005 | "php": "^7.1 || ^8.0" 1006 | }, 1007 | "require-dev": { 1008 | "doctrine/coding-standard": "^6.0", 1009 | "ext-pdo": "*", 1010 | "ext-phar": "*", 1011 | "phpbench/phpbench": "^0.13", 1012 | "phpstan/phpstan-phpunit": "^0.11", 1013 | "phpstan/phpstan-shim": "^0.11", 1014 | "phpunit/phpunit": "^7.0" 1015 | }, 1016 | "type": "library", 1017 | "extra": { 1018 | "branch-alias": { 1019 | "dev-master": "1.2.x-dev" 1020 | } 1021 | }, 1022 | "autoload": { 1023 | "psr-4": { 1024 | "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" 1025 | } 1026 | }, 1027 | "notification-url": "https://packagist.org/downloads/", 1028 | "license": [ 1029 | "MIT" 1030 | ], 1031 | "authors": [ 1032 | { 1033 | "name": "Marco Pivetta", 1034 | "email": "ocramius@gmail.com", 1035 | "homepage": "http://ocramius.github.com/" 1036 | } 1037 | ], 1038 | "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", 1039 | "homepage": "https://www.doctrine-project.org/projects/instantiator.html", 1040 | "keywords": [ 1041 | "constructor", 1042 | "instantiate" 1043 | ], 1044 | "funding": [ 1045 | { 1046 | "url": "https://www.doctrine-project.org/sponsorship.html", 1047 | "type": "custom" 1048 | }, 1049 | { 1050 | "url": "https://www.patreon.com/phpdoctrine", 1051 | "type": "patreon" 1052 | }, 1053 | { 1054 | "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", 1055 | "type": "tidelift" 1056 | } 1057 | ], 1058 | "time": "2020-05-29T17:27:14+00:00" 1059 | }, 1060 | { 1061 | "name": "myclabs/deep-copy", 1062 | "version": "1.10.1", 1063 | "source": { 1064 | "type": "git", 1065 | "url": "https://github.com/myclabs/DeepCopy.git", 1066 | "reference": "969b211f9a51aa1f6c01d1d2aef56d3bd91598e5" 1067 | }, 1068 | "dist": { 1069 | "type": "zip", 1070 | "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/969b211f9a51aa1f6c01d1d2aef56d3bd91598e5", 1071 | "reference": "969b211f9a51aa1f6c01d1d2aef56d3bd91598e5", 1072 | "shasum": "" 1073 | }, 1074 | "require": { 1075 | "php": "^7.1 || ^8.0" 1076 | }, 1077 | "replace": { 1078 | "myclabs/deep-copy": "self.version" 1079 | }, 1080 | "require-dev": { 1081 | "doctrine/collections": "^1.0", 1082 | "doctrine/common": "^2.6", 1083 | "phpunit/phpunit": "^7.1" 1084 | }, 1085 | "type": "library", 1086 | "autoload": { 1087 | "psr-4": { 1088 | "DeepCopy\\": "src/DeepCopy/" 1089 | }, 1090 | "files": [ 1091 | "src/DeepCopy/deep_copy.php" 1092 | ] 1093 | }, 1094 | "notification-url": "https://packagist.org/downloads/", 1095 | "license": [ 1096 | "MIT" 1097 | ], 1098 | "description": "Create deep copies (clones) of your objects", 1099 | "keywords": [ 1100 | "clone", 1101 | "copy", 1102 | "duplicate", 1103 | "object", 1104 | "object graph" 1105 | ], 1106 | "funding": [ 1107 | { 1108 | "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", 1109 | "type": "tidelift" 1110 | } 1111 | ], 1112 | "time": "2020-06-29T13:22:24+00:00" 1113 | }, 1114 | { 1115 | "name": "phar-io/manifest", 1116 | "version": "1.0.3", 1117 | "source": { 1118 | "type": "git", 1119 | "url": "https://github.com/phar-io/manifest.git", 1120 | "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4" 1121 | }, 1122 | "dist": { 1123 | "type": "zip", 1124 | "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", 1125 | "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", 1126 | "shasum": "" 1127 | }, 1128 | "require": { 1129 | "ext-dom": "*", 1130 | "ext-phar": "*", 1131 | "phar-io/version": "^2.0", 1132 | "php": "^5.6 || ^7.0" 1133 | }, 1134 | "type": "library", 1135 | "extra": { 1136 | "branch-alias": { 1137 | "dev-master": "1.0.x-dev" 1138 | } 1139 | }, 1140 | "autoload": { 1141 | "classmap": [ 1142 | "src/" 1143 | ] 1144 | }, 1145 | "notification-url": "https://packagist.org/downloads/", 1146 | "license": [ 1147 | "BSD-3-Clause" 1148 | ], 1149 | "authors": [ 1150 | { 1151 | "name": "Arne Blankerts", 1152 | "email": "arne@blankerts.de", 1153 | "role": "Developer" 1154 | }, 1155 | { 1156 | "name": "Sebastian Heuer", 1157 | "email": "sebastian@phpeople.de", 1158 | "role": "Developer" 1159 | }, 1160 | { 1161 | "name": "Sebastian Bergmann", 1162 | "email": "sebastian@phpunit.de", 1163 | "role": "Developer" 1164 | } 1165 | ], 1166 | "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", 1167 | "time": "2018-07-08T19:23:20+00:00" 1168 | }, 1169 | { 1170 | "name": "phar-io/version", 1171 | "version": "2.0.1", 1172 | "source": { 1173 | "type": "git", 1174 | "url": "https://github.com/phar-io/version.git", 1175 | "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6" 1176 | }, 1177 | "dist": { 1178 | "type": "zip", 1179 | "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6", 1180 | "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6", 1181 | "shasum": "" 1182 | }, 1183 | "require": { 1184 | "php": "^5.6 || ^7.0" 1185 | }, 1186 | "type": "library", 1187 | "autoload": { 1188 | "classmap": [ 1189 | "src/" 1190 | ] 1191 | }, 1192 | "notification-url": "https://packagist.org/downloads/", 1193 | "license": [ 1194 | "BSD-3-Clause" 1195 | ], 1196 | "authors": [ 1197 | { 1198 | "name": "Arne Blankerts", 1199 | "email": "arne@blankerts.de", 1200 | "role": "Developer" 1201 | }, 1202 | { 1203 | "name": "Sebastian Heuer", 1204 | "email": "sebastian@phpeople.de", 1205 | "role": "Developer" 1206 | }, 1207 | { 1208 | "name": "Sebastian Bergmann", 1209 | "email": "sebastian@phpunit.de", 1210 | "role": "Developer" 1211 | } 1212 | ], 1213 | "description": "Library for handling version information and constraints", 1214 | "time": "2018-07-08T19:19:57+00:00" 1215 | }, 1216 | { 1217 | "name": "phpdocumentor/reflection-common", 1218 | "version": "2.2.0", 1219 | "source": { 1220 | "type": "git", 1221 | "url": "https://github.com/phpDocumentor/ReflectionCommon.git", 1222 | "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" 1223 | }, 1224 | "dist": { 1225 | "type": "zip", 1226 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", 1227 | "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", 1228 | "shasum": "" 1229 | }, 1230 | "require": { 1231 | "php": "^7.2 || ^8.0" 1232 | }, 1233 | "type": "library", 1234 | "extra": { 1235 | "branch-alias": { 1236 | "dev-2.x": "2.x-dev" 1237 | } 1238 | }, 1239 | "autoload": { 1240 | "psr-4": { 1241 | "phpDocumentor\\Reflection\\": "src/" 1242 | } 1243 | }, 1244 | "notification-url": "https://packagist.org/downloads/", 1245 | "license": [ 1246 | "MIT" 1247 | ], 1248 | "authors": [ 1249 | { 1250 | "name": "Jaap van Otterdijk", 1251 | "email": "opensource@ijaap.nl" 1252 | } 1253 | ], 1254 | "description": "Common reflection classes used by phpdocumentor to reflect the code structure", 1255 | "homepage": "http://www.phpdoc.org", 1256 | "keywords": [ 1257 | "FQSEN", 1258 | "phpDocumentor", 1259 | "phpdoc", 1260 | "reflection", 1261 | "static analysis" 1262 | ], 1263 | "time": "2020-06-27T09:03:43+00:00" 1264 | }, 1265 | { 1266 | "name": "phpdocumentor/reflection-docblock", 1267 | "version": "5.2.0", 1268 | "source": { 1269 | "type": "git", 1270 | "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", 1271 | "reference": "3170448f5769fe19f456173d833734e0ff1b84df" 1272 | }, 1273 | "dist": { 1274 | "type": "zip", 1275 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/3170448f5769fe19f456173d833734e0ff1b84df", 1276 | "reference": "3170448f5769fe19f456173d833734e0ff1b84df", 1277 | "shasum": "" 1278 | }, 1279 | "require": { 1280 | "ext-filter": "*", 1281 | "php": "^7.2 || ^8.0", 1282 | "phpdocumentor/reflection-common": "^2.2", 1283 | "phpdocumentor/type-resolver": "^1.3", 1284 | "webmozart/assert": "^1.9.1" 1285 | }, 1286 | "require-dev": { 1287 | "mockery/mockery": "~1.3.2" 1288 | }, 1289 | "type": "library", 1290 | "extra": { 1291 | "branch-alias": { 1292 | "dev-master": "5.x-dev" 1293 | } 1294 | }, 1295 | "autoload": { 1296 | "psr-4": { 1297 | "phpDocumentor\\Reflection\\": "src" 1298 | } 1299 | }, 1300 | "notification-url": "https://packagist.org/downloads/", 1301 | "license": [ 1302 | "MIT" 1303 | ], 1304 | "authors": [ 1305 | { 1306 | "name": "Mike van Riel", 1307 | "email": "me@mikevanriel.com" 1308 | }, 1309 | { 1310 | "name": "Jaap van Otterdijk", 1311 | "email": "account@ijaap.nl" 1312 | } 1313 | ], 1314 | "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", 1315 | "time": "2020-07-20T20:05:34+00:00" 1316 | }, 1317 | { 1318 | "name": "phpdocumentor/type-resolver", 1319 | "version": "1.3.0", 1320 | "source": { 1321 | "type": "git", 1322 | "url": "https://github.com/phpDocumentor/TypeResolver.git", 1323 | "reference": "e878a14a65245fbe78f8080eba03b47c3b705651" 1324 | }, 1325 | "dist": { 1326 | "type": "zip", 1327 | "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/e878a14a65245fbe78f8080eba03b47c3b705651", 1328 | "reference": "e878a14a65245fbe78f8080eba03b47c3b705651", 1329 | "shasum": "" 1330 | }, 1331 | "require": { 1332 | "php": "^7.2 || ^8.0", 1333 | "phpdocumentor/reflection-common": "^2.0" 1334 | }, 1335 | "require-dev": { 1336 | "ext-tokenizer": "*" 1337 | }, 1338 | "type": "library", 1339 | "extra": { 1340 | "branch-alias": { 1341 | "dev-1.x": "1.x-dev" 1342 | } 1343 | }, 1344 | "autoload": { 1345 | "psr-4": { 1346 | "phpDocumentor\\Reflection\\": "src" 1347 | } 1348 | }, 1349 | "notification-url": "https://packagist.org/downloads/", 1350 | "license": [ 1351 | "MIT" 1352 | ], 1353 | "authors": [ 1354 | { 1355 | "name": "Mike van Riel", 1356 | "email": "me@mikevanriel.com" 1357 | } 1358 | ], 1359 | "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", 1360 | "time": "2020-06-27T10:12:23+00:00" 1361 | }, 1362 | { 1363 | "name": "phpspec/prophecy", 1364 | "version": "1.11.1", 1365 | "source": { 1366 | "type": "git", 1367 | "url": "https://github.com/phpspec/prophecy.git", 1368 | "reference": "b20034be5efcdab4fb60ca3a29cba2949aead160" 1369 | }, 1370 | "dist": { 1371 | "type": "zip", 1372 | "url": "https://api.github.com/repos/phpspec/prophecy/zipball/b20034be5efcdab4fb60ca3a29cba2949aead160", 1373 | "reference": "b20034be5efcdab4fb60ca3a29cba2949aead160", 1374 | "shasum": "" 1375 | }, 1376 | "require": { 1377 | "doctrine/instantiator": "^1.2", 1378 | "php": "^7.2", 1379 | "phpdocumentor/reflection-docblock": "^5.0", 1380 | "sebastian/comparator": "^3.0 || ^4.0", 1381 | "sebastian/recursion-context": "^3.0 || ^4.0" 1382 | }, 1383 | "require-dev": { 1384 | "phpspec/phpspec": "^6.0", 1385 | "phpunit/phpunit": "^8.0" 1386 | }, 1387 | "type": "library", 1388 | "extra": { 1389 | "branch-alias": { 1390 | "dev-master": "1.11.x-dev" 1391 | } 1392 | }, 1393 | "autoload": { 1394 | "psr-4": { 1395 | "Prophecy\\": "src/Prophecy" 1396 | } 1397 | }, 1398 | "notification-url": "https://packagist.org/downloads/", 1399 | "license": [ 1400 | "MIT" 1401 | ], 1402 | "authors": [ 1403 | { 1404 | "name": "Konstantin Kudryashov", 1405 | "email": "ever.zet@gmail.com", 1406 | "homepage": "http://everzet.com" 1407 | }, 1408 | { 1409 | "name": "Marcello Duarte", 1410 | "email": "marcello.duarte@gmail.com" 1411 | } 1412 | ], 1413 | "description": "Highly opinionated mocking framework for PHP 5.3+", 1414 | "homepage": "https://github.com/phpspec/prophecy", 1415 | "keywords": [ 1416 | "Double", 1417 | "Dummy", 1418 | "fake", 1419 | "mock", 1420 | "spy", 1421 | "stub" 1422 | ], 1423 | "time": "2020-07-08T12:44:21+00:00" 1424 | }, 1425 | { 1426 | "name": "phpunit/php-code-coverage", 1427 | "version": "7.0.10", 1428 | "source": { 1429 | "type": "git", 1430 | "url": "https://github.com/sebastianbergmann/php-code-coverage.git", 1431 | "reference": "f1884187926fbb755a9aaf0b3836ad3165b478bf" 1432 | }, 1433 | "dist": { 1434 | "type": "zip", 1435 | "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f1884187926fbb755a9aaf0b3836ad3165b478bf", 1436 | "reference": "f1884187926fbb755a9aaf0b3836ad3165b478bf", 1437 | "shasum": "" 1438 | }, 1439 | "require": { 1440 | "ext-dom": "*", 1441 | "ext-xmlwriter": "*", 1442 | "php": "^7.2", 1443 | "phpunit/php-file-iterator": "^2.0.2", 1444 | "phpunit/php-text-template": "^1.2.1", 1445 | "phpunit/php-token-stream": "^3.1.1", 1446 | "sebastian/code-unit-reverse-lookup": "^1.0.1", 1447 | "sebastian/environment": "^4.2.2", 1448 | "sebastian/version": "^2.0.1", 1449 | "theseer/tokenizer": "^1.1.3" 1450 | }, 1451 | "require-dev": { 1452 | "phpunit/phpunit": "^8.2.2" 1453 | }, 1454 | "suggest": { 1455 | "ext-xdebug": "^2.7.2" 1456 | }, 1457 | "type": "library", 1458 | "extra": { 1459 | "branch-alias": { 1460 | "dev-master": "7.0-dev" 1461 | } 1462 | }, 1463 | "autoload": { 1464 | "classmap": [ 1465 | "src/" 1466 | ] 1467 | }, 1468 | "notification-url": "https://packagist.org/downloads/", 1469 | "license": [ 1470 | "BSD-3-Clause" 1471 | ], 1472 | "authors": [ 1473 | { 1474 | "name": "Sebastian Bergmann", 1475 | "email": "sebastian@phpunit.de", 1476 | "role": "lead" 1477 | } 1478 | ], 1479 | "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", 1480 | "homepage": "https://github.com/sebastianbergmann/php-code-coverage", 1481 | "keywords": [ 1482 | "coverage", 1483 | "testing", 1484 | "xunit" 1485 | ], 1486 | "time": "2019-11-20T13:55:58+00:00" 1487 | }, 1488 | { 1489 | "name": "phpunit/php-file-iterator", 1490 | "version": "2.0.2", 1491 | "source": { 1492 | "type": "git", 1493 | "url": "https://github.com/sebastianbergmann/php-file-iterator.git", 1494 | "reference": "050bedf145a257b1ff02746c31894800e5122946" 1495 | }, 1496 | "dist": { 1497 | "type": "zip", 1498 | "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/050bedf145a257b1ff02746c31894800e5122946", 1499 | "reference": "050bedf145a257b1ff02746c31894800e5122946", 1500 | "shasum": "" 1501 | }, 1502 | "require": { 1503 | "php": "^7.1" 1504 | }, 1505 | "require-dev": { 1506 | "phpunit/phpunit": "^7.1" 1507 | }, 1508 | "type": "library", 1509 | "extra": { 1510 | "branch-alias": { 1511 | "dev-master": "2.0.x-dev" 1512 | } 1513 | }, 1514 | "autoload": { 1515 | "classmap": [ 1516 | "src/" 1517 | ] 1518 | }, 1519 | "notification-url": "https://packagist.org/downloads/", 1520 | "license": [ 1521 | "BSD-3-Clause" 1522 | ], 1523 | "authors": [ 1524 | { 1525 | "name": "Sebastian Bergmann", 1526 | "email": "sebastian@phpunit.de", 1527 | "role": "lead" 1528 | } 1529 | ], 1530 | "description": "FilterIterator implementation that filters files based on a list of suffixes.", 1531 | "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", 1532 | "keywords": [ 1533 | "filesystem", 1534 | "iterator" 1535 | ], 1536 | "time": "2018-09-13T20:33:42+00:00" 1537 | }, 1538 | { 1539 | "name": "phpunit/php-text-template", 1540 | "version": "1.2.1", 1541 | "source": { 1542 | "type": "git", 1543 | "url": "https://github.com/sebastianbergmann/php-text-template.git", 1544 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" 1545 | }, 1546 | "dist": { 1547 | "type": "zip", 1548 | "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 1549 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 1550 | "shasum": "" 1551 | }, 1552 | "require": { 1553 | "php": ">=5.3.3" 1554 | }, 1555 | "type": "library", 1556 | "autoload": { 1557 | "classmap": [ 1558 | "src/" 1559 | ] 1560 | }, 1561 | "notification-url": "https://packagist.org/downloads/", 1562 | "license": [ 1563 | "BSD-3-Clause" 1564 | ], 1565 | "authors": [ 1566 | { 1567 | "name": "Sebastian Bergmann", 1568 | "email": "sebastian@phpunit.de", 1569 | "role": "lead" 1570 | } 1571 | ], 1572 | "description": "Simple template engine.", 1573 | "homepage": "https://github.com/sebastianbergmann/php-text-template/", 1574 | "keywords": [ 1575 | "template" 1576 | ], 1577 | "time": "2015-06-21T13:50:34+00:00" 1578 | }, 1579 | { 1580 | "name": "phpunit/php-timer", 1581 | "version": "2.1.2", 1582 | "source": { 1583 | "type": "git", 1584 | "url": "https://github.com/sebastianbergmann/php-timer.git", 1585 | "reference": "1038454804406b0b5f5f520358e78c1c2f71501e" 1586 | }, 1587 | "dist": { 1588 | "type": "zip", 1589 | "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/1038454804406b0b5f5f520358e78c1c2f71501e", 1590 | "reference": "1038454804406b0b5f5f520358e78c1c2f71501e", 1591 | "shasum": "" 1592 | }, 1593 | "require": { 1594 | "php": "^7.1" 1595 | }, 1596 | "require-dev": { 1597 | "phpunit/phpunit": "^7.0" 1598 | }, 1599 | "type": "library", 1600 | "extra": { 1601 | "branch-alias": { 1602 | "dev-master": "2.1-dev" 1603 | } 1604 | }, 1605 | "autoload": { 1606 | "classmap": [ 1607 | "src/" 1608 | ] 1609 | }, 1610 | "notification-url": "https://packagist.org/downloads/", 1611 | "license": [ 1612 | "BSD-3-Clause" 1613 | ], 1614 | "authors": [ 1615 | { 1616 | "name": "Sebastian Bergmann", 1617 | "email": "sebastian@phpunit.de", 1618 | "role": "lead" 1619 | } 1620 | ], 1621 | "description": "Utility class for timing", 1622 | "homepage": "https://github.com/sebastianbergmann/php-timer/", 1623 | "keywords": [ 1624 | "timer" 1625 | ], 1626 | "time": "2019-06-07T04:22:29+00:00" 1627 | }, 1628 | { 1629 | "name": "phpunit/php-token-stream", 1630 | "version": "3.1.1", 1631 | "source": { 1632 | "type": "git", 1633 | "url": "https://github.com/sebastianbergmann/php-token-stream.git", 1634 | "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff" 1635 | }, 1636 | "dist": { 1637 | "type": "zip", 1638 | "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/995192df77f63a59e47f025390d2d1fdf8f425ff", 1639 | "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff", 1640 | "shasum": "" 1641 | }, 1642 | "require": { 1643 | "ext-tokenizer": "*", 1644 | "php": "^7.1" 1645 | }, 1646 | "require-dev": { 1647 | "phpunit/phpunit": "^7.0" 1648 | }, 1649 | "type": "library", 1650 | "extra": { 1651 | "branch-alias": { 1652 | "dev-master": "3.1-dev" 1653 | } 1654 | }, 1655 | "autoload": { 1656 | "classmap": [ 1657 | "src/" 1658 | ] 1659 | }, 1660 | "notification-url": "https://packagist.org/downloads/", 1661 | "license": [ 1662 | "BSD-3-Clause" 1663 | ], 1664 | "authors": [ 1665 | { 1666 | "name": "Sebastian Bergmann", 1667 | "email": "sebastian@phpunit.de" 1668 | } 1669 | ], 1670 | "description": "Wrapper around PHP's tokenizer extension.", 1671 | "homepage": "https://github.com/sebastianbergmann/php-token-stream/", 1672 | "keywords": [ 1673 | "tokenizer" 1674 | ], 1675 | "time": "2019-09-17T06:23:10+00:00" 1676 | }, 1677 | { 1678 | "name": "phpunit/phpunit", 1679 | "version": "8.5.8", 1680 | "source": { 1681 | "type": "git", 1682 | "url": "https://github.com/sebastianbergmann/phpunit.git", 1683 | "reference": "34c18baa6a44f1d1fbf0338907139e9dce95b997" 1684 | }, 1685 | "dist": { 1686 | "type": "zip", 1687 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/34c18baa6a44f1d1fbf0338907139e9dce95b997", 1688 | "reference": "34c18baa6a44f1d1fbf0338907139e9dce95b997", 1689 | "shasum": "" 1690 | }, 1691 | "require": { 1692 | "doctrine/instantiator": "^1.2.0", 1693 | "ext-dom": "*", 1694 | "ext-json": "*", 1695 | "ext-libxml": "*", 1696 | "ext-mbstring": "*", 1697 | "ext-xml": "*", 1698 | "ext-xmlwriter": "*", 1699 | "myclabs/deep-copy": "^1.9.1", 1700 | "phar-io/manifest": "^1.0.3", 1701 | "phar-io/version": "^2.0.1", 1702 | "php": "^7.2", 1703 | "phpspec/prophecy": "^1.8.1", 1704 | "phpunit/php-code-coverage": "^7.0.7", 1705 | "phpunit/php-file-iterator": "^2.0.2", 1706 | "phpunit/php-text-template": "^1.2.1", 1707 | "phpunit/php-timer": "^2.1.2", 1708 | "sebastian/comparator": "^3.0.2", 1709 | "sebastian/diff": "^3.0.2", 1710 | "sebastian/environment": "^4.2.2", 1711 | "sebastian/exporter": "^3.1.1", 1712 | "sebastian/global-state": "^3.0.0", 1713 | "sebastian/object-enumerator": "^3.0.3", 1714 | "sebastian/resource-operations": "^2.0.1", 1715 | "sebastian/type": "^1.1.3", 1716 | "sebastian/version": "^2.0.1" 1717 | }, 1718 | "require-dev": { 1719 | "ext-pdo": "*" 1720 | }, 1721 | "suggest": { 1722 | "ext-soap": "*", 1723 | "ext-xdebug": "*", 1724 | "phpunit/php-invoker": "^2.0.0" 1725 | }, 1726 | "bin": [ 1727 | "phpunit" 1728 | ], 1729 | "type": "library", 1730 | "extra": { 1731 | "branch-alias": { 1732 | "dev-master": "8.5-dev" 1733 | } 1734 | }, 1735 | "autoload": { 1736 | "classmap": [ 1737 | "src/" 1738 | ] 1739 | }, 1740 | "notification-url": "https://packagist.org/downloads/", 1741 | "license": [ 1742 | "BSD-3-Clause" 1743 | ], 1744 | "authors": [ 1745 | { 1746 | "name": "Sebastian Bergmann", 1747 | "email": "sebastian@phpunit.de", 1748 | "role": "lead" 1749 | } 1750 | ], 1751 | "description": "The PHP Unit Testing framework.", 1752 | "homepage": "https://phpunit.de/", 1753 | "keywords": [ 1754 | "phpunit", 1755 | "testing", 1756 | "xunit" 1757 | ], 1758 | "funding": [ 1759 | { 1760 | "url": "https://phpunit.de/donate.html", 1761 | "type": "custom" 1762 | }, 1763 | { 1764 | "url": "https://github.com/sebastianbergmann", 1765 | "type": "github" 1766 | } 1767 | ], 1768 | "time": "2020-06-22T07:06:58+00:00" 1769 | }, 1770 | { 1771 | "name": "sebastian/code-unit-reverse-lookup", 1772 | "version": "1.0.1", 1773 | "source": { 1774 | "type": "git", 1775 | "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", 1776 | "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" 1777 | }, 1778 | "dist": { 1779 | "type": "zip", 1780 | "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", 1781 | "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", 1782 | "shasum": "" 1783 | }, 1784 | "require": { 1785 | "php": "^5.6 || ^7.0" 1786 | }, 1787 | "require-dev": { 1788 | "phpunit/phpunit": "^5.7 || ^6.0" 1789 | }, 1790 | "type": "library", 1791 | "extra": { 1792 | "branch-alias": { 1793 | "dev-master": "1.0.x-dev" 1794 | } 1795 | }, 1796 | "autoload": { 1797 | "classmap": [ 1798 | "src/" 1799 | ] 1800 | }, 1801 | "notification-url": "https://packagist.org/downloads/", 1802 | "license": [ 1803 | "BSD-3-Clause" 1804 | ], 1805 | "authors": [ 1806 | { 1807 | "name": "Sebastian Bergmann", 1808 | "email": "sebastian@phpunit.de" 1809 | } 1810 | ], 1811 | "description": "Looks up which function or method a line of code belongs to", 1812 | "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", 1813 | "time": "2017-03-04T06:30:41+00:00" 1814 | }, 1815 | { 1816 | "name": "sebastian/comparator", 1817 | "version": "3.0.2", 1818 | "source": { 1819 | "type": "git", 1820 | "url": "https://github.com/sebastianbergmann/comparator.git", 1821 | "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da" 1822 | }, 1823 | "dist": { 1824 | "type": "zip", 1825 | "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/5de4fc177adf9bce8df98d8d141a7559d7ccf6da", 1826 | "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da", 1827 | "shasum": "" 1828 | }, 1829 | "require": { 1830 | "php": "^7.1", 1831 | "sebastian/diff": "^3.0", 1832 | "sebastian/exporter": "^3.1" 1833 | }, 1834 | "require-dev": { 1835 | "phpunit/phpunit": "^7.1" 1836 | }, 1837 | "type": "library", 1838 | "extra": { 1839 | "branch-alias": { 1840 | "dev-master": "3.0-dev" 1841 | } 1842 | }, 1843 | "autoload": { 1844 | "classmap": [ 1845 | "src/" 1846 | ] 1847 | }, 1848 | "notification-url": "https://packagist.org/downloads/", 1849 | "license": [ 1850 | "BSD-3-Clause" 1851 | ], 1852 | "authors": [ 1853 | { 1854 | "name": "Jeff Welch", 1855 | "email": "whatthejeff@gmail.com" 1856 | }, 1857 | { 1858 | "name": "Volker Dusch", 1859 | "email": "github@wallbash.com" 1860 | }, 1861 | { 1862 | "name": "Bernhard Schussek", 1863 | "email": "bschussek@2bepublished.at" 1864 | }, 1865 | { 1866 | "name": "Sebastian Bergmann", 1867 | "email": "sebastian@phpunit.de" 1868 | } 1869 | ], 1870 | "description": "Provides the functionality to compare PHP values for equality", 1871 | "homepage": "https://github.com/sebastianbergmann/comparator", 1872 | "keywords": [ 1873 | "comparator", 1874 | "compare", 1875 | "equality" 1876 | ], 1877 | "time": "2018-07-12T15:12:46+00:00" 1878 | }, 1879 | { 1880 | "name": "sebastian/diff", 1881 | "version": "3.0.2", 1882 | "source": { 1883 | "type": "git", 1884 | "url": "https://github.com/sebastianbergmann/diff.git", 1885 | "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29" 1886 | }, 1887 | "dist": { 1888 | "type": "zip", 1889 | "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/720fcc7e9b5cf384ea68d9d930d480907a0c1a29", 1890 | "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29", 1891 | "shasum": "" 1892 | }, 1893 | "require": { 1894 | "php": "^7.1" 1895 | }, 1896 | "require-dev": { 1897 | "phpunit/phpunit": "^7.5 || ^8.0", 1898 | "symfony/process": "^2 || ^3.3 || ^4" 1899 | }, 1900 | "type": "library", 1901 | "extra": { 1902 | "branch-alias": { 1903 | "dev-master": "3.0-dev" 1904 | } 1905 | }, 1906 | "autoload": { 1907 | "classmap": [ 1908 | "src/" 1909 | ] 1910 | }, 1911 | "notification-url": "https://packagist.org/downloads/", 1912 | "license": [ 1913 | "BSD-3-Clause" 1914 | ], 1915 | "authors": [ 1916 | { 1917 | "name": "Kore Nordmann", 1918 | "email": "mail@kore-nordmann.de" 1919 | }, 1920 | { 1921 | "name": "Sebastian Bergmann", 1922 | "email": "sebastian@phpunit.de" 1923 | } 1924 | ], 1925 | "description": "Diff implementation", 1926 | "homepage": "https://github.com/sebastianbergmann/diff", 1927 | "keywords": [ 1928 | "diff", 1929 | "udiff", 1930 | "unidiff", 1931 | "unified diff" 1932 | ], 1933 | "time": "2019-02-04T06:01:07+00:00" 1934 | }, 1935 | { 1936 | "name": "sebastian/environment", 1937 | "version": "4.2.3", 1938 | "source": { 1939 | "type": "git", 1940 | "url": "https://github.com/sebastianbergmann/environment.git", 1941 | "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368" 1942 | }, 1943 | "dist": { 1944 | "type": "zip", 1945 | "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/464c90d7bdf5ad4e8a6aea15c091fec0603d4368", 1946 | "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368", 1947 | "shasum": "" 1948 | }, 1949 | "require": { 1950 | "php": "^7.1" 1951 | }, 1952 | "require-dev": { 1953 | "phpunit/phpunit": "^7.5" 1954 | }, 1955 | "suggest": { 1956 | "ext-posix": "*" 1957 | }, 1958 | "type": "library", 1959 | "extra": { 1960 | "branch-alias": { 1961 | "dev-master": "4.2-dev" 1962 | } 1963 | }, 1964 | "autoload": { 1965 | "classmap": [ 1966 | "src/" 1967 | ] 1968 | }, 1969 | "notification-url": "https://packagist.org/downloads/", 1970 | "license": [ 1971 | "BSD-3-Clause" 1972 | ], 1973 | "authors": [ 1974 | { 1975 | "name": "Sebastian Bergmann", 1976 | "email": "sebastian@phpunit.de" 1977 | } 1978 | ], 1979 | "description": "Provides functionality to handle HHVM/PHP environments", 1980 | "homepage": "http://www.github.com/sebastianbergmann/environment", 1981 | "keywords": [ 1982 | "Xdebug", 1983 | "environment", 1984 | "hhvm" 1985 | ], 1986 | "time": "2019-11-20T08:46:58+00:00" 1987 | }, 1988 | { 1989 | "name": "sebastian/exporter", 1990 | "version": "3.1.2", 1991 | "source": { 1992 | "type": "git", 1993 | "url": "https://github.com/sebastianbergmann/exporter.git", 1994 | "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e" 1995 | }, 1996 | "dist": { 1997 | "type": "zip", 1998 | "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/68609e1261d215ea5b21b7987539cbfbe156ec3e", 1999 | "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e", 2000 | "shasum": "" 2001 | }, 2002 | "require": { 2003 | "php": "^7.0", 2004 | "sebastian/recursion-context": "^3.0" 2005 | }, 2006 | "require-dev": { 2007 | "ext-mbstring": "*", 2008 | "phpunit/phpunit": "^6.0" 2009 | }, 2010 | "type": "library", 2011 | "extra": { 2012 | "branch-alias": { 2013 | "dev-master": "3.1.x-dev" 2014 | } 2015 | }, 2016 | "autoload": { 2017 | "classmap": [ 2018 | "src/" 2019 | ] 2020 | }, 2021 | "notification-url": "https://packagist.org/downloads/", 2022 | "license": [ 2023 | "BSD-3-Clause" 2024 | ], 2025 | "authors": [ 2026 | { 2027 | "name": "Sebastian Bergmann", 2028 | "email": "sebastian@phpunit.de" 2029 | }, 2030 | { 2031 | "name": "Jeff Welch", 2032 | "email": "whatthejeff@gmail.com" 2033 | }, 2034 | { 2035 | "name": "Volker Dusch", 2036 | "email": "github@wallbash.com" 2037 | }, 2038 | { 2039 | "name": "Adam Harvey", 2040 | "email": "aharvey@php.net" 2041 | }, 2042 | { 2043 | "name": "Bernhard Schussek", 2044 | "email": "bschussek@gmail.com" 2045 | } 2046 | ], 2047 | "description": "Provides the functionality to export PHP variables for visualization", 2048 | "homepage": "http://www.github.com/sebastianbergmann/exporter", 2049 | "keywords": [ 2050 | "export", 2051 | "exporter" 2052 | ], 2053 | "time": "2019-09-14T09:02:43+00:00" 2054 | }, 2055 | { 2056 | "name": "sebastian/global-state", 2057 | "version": "3.0.0", 2058 | "source": { 2059 | "type": "git", 2060 | "url": "https://github.com/sebastianbergmann/global-state.git", 2061 | "reference": "edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4" 2062 | }, 2063 | "dist": { 2064 | "type": "zip", 2065 | "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4", 2066 | "reference": "edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4", 2067 | "shasum": "" 2068 | }, 2069 | "require": { 2070 | "php": "^7.2", 2071 | "sebastian/object-reflector": "^1.1.1", 2072 | "sebastian/recursion-context": "^3.0" 2073 | }, 2074 | "require-dev": { 2075 | "ext-dom": "*", 2076 | "phpunit/phpunit": "^8.0" 2077 | }, 2078 | "suggest": { 2079 | "ext-uopz": "*" 2080 | }, 2081 | "type": "library", 2082 | "extra": { 2083 | "branch-alias": { 2084 | "dev-master": "3.0-dev" 2085 | } 2086 | }, 2087 | "autoload": { 2088 | "classmap": [ 2089 | "src/" 2090 | ] 2091 | }, 2092 | "notification-url": "https://packagist.org/downloads/", 2093 | "license": [ 2094 | "BSD-3-Clause" 2095 | ], 2096 | "authors": [ 2097 | { 2098 | "name": "Sebastian Bergmann", 2099 | "email": "sebastian@phpunit.de" 2100 | } 2101 | ], 2102 | "description": "Snapshotting of global state", 2103 | "homepage": "http://www.github.com/sebastianbergmann/global-state", 2104 | "keywords": [ 2105 | "global state" 2106 | ], 2107 | "time": "2019-02-01T05:30:01+00:00" 2108 | }, 2109 | { 2110 | "name": "sebastian/object-enumerator", 2111 | "version": "3.0.3", 2112 | "source": { 2113 | "type": "git", 2114 | "url": "https://github.com/sebastianbergmann/object-enumerator.git", 2115 | "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" 2116 | }, 2117 | "dist": { 2118 | "type": "zip", 2119 | "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", 2120 | "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", 2121 | "shasum": "" 2122 | }, 2123 | "require": { 2124 | "php": "^7.0", 2125 | "sebastian/object-reflector": "^1.1.1", 2126 | "sebastian/recursion-context": "^3.0" 2127 | }, 2128 | "require-dev": { 2129 | "phpunit/phpunit": "^6.0" 2130 | }, 2131 | "type": "library", 2132 | "extra": { 2133 | "branch-alias": { 2134 | "dev-master": "3.0.x-dev" 2135 | } 2136 | }, 2137 | "autoload": { 2138 | "classmap": [ 2139 | "src/" 2140 | ] 2141 | }, 2142 | "notification-url": "https://packagist.org/downloads/", 2143 | "license": [ 2144 | "BSD-3-Clause" 2145 | ], 2146 | "authors": [ 2147 | { 2148 | "name": "Sebastian Bergmann", 2149 | "email": "sebastian@phpunit.de" 2150 | } 2151 | ], 2152 | "description": "Traverses array structures and object graphs to enumerate all referenced objects", 2153 | "homepage": "https://github.com/sebastianbergmann/object-enumerator/", 2154 | "time": "2017-08-03T12:35:26+00:00" 2155 | }, 2156 | { 2157 | "name": "sebastian/object-reflector", 2158 | "version": "1.1.1", 2159 | "source": { 2160 | "type": "git", 2161 | "url": "https://github.com/sebastianbergmann/object-reflector.git", 2162 | "reference": "773f97c67f28de00d397be301821b06708fca0be" 2163 | }, 2164 | "dist": { 2165 | "type": "zip", 2166 | "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", 2167 | "reference": "773f97c67f28de00d397be301821b06708fca0be", 2168 | "shasum": "" 2169 | }, 2170 | "require": { 2171 | "php": "^7.0" 2172 | }, 2173 | "require-dev": { 2174 | "phpunit/phpunit": "^6.0" 2175 | }, 2176 | "type": "library", 2177 | "extra": { 2178 | "branch-alias": { 2179 | "dev-master": "1.1-dev" 2180 | } 2181 | }, 2182 | "autoload": { 2183 | "classmap": [ 2184 | "src/" 2185 | ] 2186 | }, 2187 | "notification-url": "https://packagist.org/downloads/", 2188 | "license": [ 2189 | "BSD-3-Clause" 2190 | ], 2191 | "authors": [ 2192 | { 2193 | "name": "Sebastian Bergmann", 2194 | "email": "sebastian@phpunit.de" 2195 | } 2196 | ], 2197 | "description": "Allows reflection of object attributes, including inherited and non-public ones", 2198 | "homepage": "https://github.com/sebastianbergmann/object-reflector/", 2199 | "time": "2017-03-29T09:07:27+00:00" 2200 | }, 2201 | { 2202 | "name": "sebastian/recursion-context", 2203 | "version": "3.0.0", 2204 | "source": { 2205 | "type": "git", 2206 | "url": "https://github.com/sebastianbergmann/recursion-context.git", 2207 | "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8" 2208 | }, 2209 | "dist": { 2210 | "type": "zip", 2211 | "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", 2212 | "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", 2213 | "shasum": "" 2214 | }, 2215 | "require": { 2216 | "php": "^7.0" 2217 | }, 2218 | "require-dev": { 2219 | "phpunit/phpunit": "^6.0" 2220 | }, 2221 | "type": "library", 2222 | "extra": { 2223 | "branch-alias": { 2224 | "dev-master": "3.0.x-dev" 2225 | } 2226 | }, 2227 | "autoload": { 2228 | "classmap": [ 2229 | "src/" 2230 | ] 2231 | }, 2232 | "notification-url": "https://packagist.org/downloads/", 2233 | "license": [ 2234 | "BSD-3-Clause" 2235 | ], 2236 | "authors": [ 2237 | { 2238 | "name": "Jeff Welch", 2239 | "email": "whatthejeff@gmail.com" 2240 | }, 2241 | { 2242 | "name": "Sebastian Bergmann", 2243 | "email": "sebastian@phpunit.de" 2244 | }, 2245 | { 2246 | "name": "Adam Harvey", 2247 | "email": "aharvey@php.net" 2248 | } 2249 | ], 2250 | "description": "Provides functionality to recursively process PHP variables", 2251 | "homepage": "http://www.github.com/sebastianbergmann/recursion-context", 2252 | "time": "2017-03-03T06:23:57+00:00" 2253 | }, 2254 | { 2255 | "name": "sebastian/resource-operations", 2256 | "version": "2.0.1", 2257 | "source": { 2258 | "type": "git", 2259 | "url": "https://github.com/sebastianbergmann/resource-operations.git", 2260 | "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9" 2261 | }, 2262 | "dist": { 2263 | "type": "zip", 2264 | "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/4d7a795d35b889bf80a0cc04e08d77cedfa917a9", 2265 | "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9", 2266 | "shasum": "" 2267 | }, 2268 | "require": { 2269 | "php": "^7.1" 2270 | }, 2271 | "type": "library", 2272 | "extra": { 2273 | "branch-alias": { 2274 | "dev-master": "2.0-dev" 2275 | } 2276 | }, 2277 | "autoload": { 2278 | "classmap": [ 2279 | "src/" 2280 | ] 2281 | }, 2282 | "notification-url": "https://packagist.org/downloads/", 2283 | "license": [ 2284 | "BSD-3-Clause" 2285 | ], 2286 | "authors": [ 2287 | { 2288 | "name": "Sebastian Bergmann", 2289 | "email": "sebastian@phpunit.de" 2290 | } 2291 | ], 2292 | "description": "Provides a list of PHP built-in functions that operate on resources", 2293 | "homepage": "https://www.github.com/sebastianbergmann/resource-operations", 2294 | "time": "2018-10-04T04:07:39+00:00" 2295 | }, 2296 | { 2297 | "name": "sebastian/type", 2298 | "version": "1.1.3", 2299 | "source": { 2300 | "type": "git", 2301 | "url": "https://github.com/sebastianbergmann/type.git", 2302 | "reference": "3aaaa15fa71d27650d62a948be022fe3b48541a3" 2303 | }, 2304 | "dist": { 2305 | "type": "zip", 2306 | "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/3aaaa15fa71d27650d62a948be022fe3b48541a3", 2307 | "reference": "3aaaa15fa71d27650d62a948be022fe3b48541a3", 2308 | "shasum": "" 2309 | }, 2310 | "require": { 2311 | "php": "^7.2" 2312 | }, 2313 | "require-dev": { 2314 | "phpunit/phpunit": "^8.2" 2315 | }, 2316 | "type": "library", 2317 | "extra": { 2318 | "branch-alias": { 2319 | "dev-master": "1.1-dev" 2320 | } 2321 | }, 2322 | "autoload": { 2323 | "classmap": [ 2324 | "src/" 2325 | ] 2326 | }, 2327 | "notification-url": "https://packagist.org/downloads/", 2328 | "license": [ 2329 | "BSD-3-Clause" 2330 | ], 2331 | "authors": [ 2332 | { 2333 | "name": "Sebastian Bergmann", 2334 | "email": "sebastian@phpunit.de", 2335 | "role": "lead" 2336 | } 2337 | ], 2338 | "description": "Collection of value objects that represent the types of the PHP type system", 2339 | "homepage": "https://github.com/sebastianbergmann/type", 2340 | "time": "2019-07-02T08:10:15+00:00" 2341 | }, 2342 | { 2343 | "name": "sebastian/version", 2344 | "version": "2.0.1", 2345 | "source": { 2346 | "type": "git", 2347 | "url": "https://github.com/sebastianbergmann/version.git", 2348 | "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" 2349 | }, 2350 | "dist": { 2351 | "type": "zip", 2352 | "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", 2353 | "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", 2354 | "shasum": "" 2355 | }, 2356 | "require": { 2357 | "php": ">=5.6" 2358 | }, 2359 | "type": "library", 2360 | "extra": { 2361 | "branch-alias": { 2362 | "dev-master": "2.0.x-dev" 2363 | } 2364 | }, 2365 | "autoload": { 2366 | "classmap": [ 2367 | "src/" 2368 | ] 2369 | }, 2370 | "notification-url": "https://packagist.org/downloads/", 2371 | "license": [ 2372 | "BSD-3-Clause" 2373 | ], 2374 | "authors": [ 2375 | { 2376 | "name": "Sebastian Bergmann", 2377 | "email": "sebastian@phpunit.de", 2378 | "role": "lead" 2379 | } 2380 | ], 2381 | "description": "Library that helps with managing the version number of Git-hosted PHP projects", 2382 | "homepage": "https://github.com/sebastianbergmann/version", 2383 | "time": "2016-10-03T07:35:21+00:00" 2384 | }, 2385 | { 2386 | "name": "symfony/polyfill-ctype", 2387 | "version": "v1.18.1", 2388 | "source": { 2389 | "type": "git", 2390 | "url": "https://github.com/symfony/polyfill-ctype.git", 2391 | "reference": "1c302646f6efc070cd46856e600e5e0684d6b454" 2392 | }, 2393 | "dist": { 2394 | "type": "zip", 2395 | "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/1c302646f6efc070cd46856e600e5e0684d6b454", 2396 | "reference": "1c302646f6efc070cd46856e600e5e0684d6b454", 2397 | "shasum": "" 2398 | }, 2399 | "require": { 2400 | "php": ">=5.3.3" 2401 | }, 2402 | "suggest": { 2403 | "ext-ctype": "For best performance" 2404 | }, 2405 | "type": "library", 2406 | "extra": { 2407 | "branch-alias": { 2408 | "dev-master": "1.18-dev" 2409 | }, 2410 | "thanks": { 2411 | "name": "symfony/polyfill", 2412 | "url": "https://github.com/symfony/polyfill" 2413 | } 2414 | }, 2415 | "autoload": { 2416 | "psr-4": { 2417 | "Symfony\\Polyfill\\Ctype\\": "" 2418 | }, 2419 | "files": [ 2420 | "bootstrap.php" 2421 | ] 2422 | }, 2423 | "notification-url": "https://packagist.org/downloads/", 2424 | "license": [ 2425 | "MIT" 2426 | ], 2427 | "authors": [ 2428 | { 2429 | "name": "Gert de Pagter", 2430 | "email": "BackEndTea@gmail.com" 2431 | }, 2432 | { 2433 | "name": "Symfony Community", 2434 | "homepage": "https://symfony.com/contributors" 2435 | } 2436 | ], 2437 | "description": "Symfony polyfill for ctype functions", 2438 | "homepage": "https://symfony.com", 2439 | "keywords": [ 2440 | "compatibility", 2441 | "ctype", 2442 | "polyfill", 2443 | "portable" 2444 | ], 2445 | "funding": [ 2446 | { 2447 | "url": "https://symfony.com/sponsor", 2448 | "type": "custom" 2449 | }, 2450 | { 2451 | "url": "https://github.com/fabpot", 2452 | "type": "github" 2453 | }, 2454 | { 2455 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2456 | "type": "tidelift" 2457 | } 2458 | ], 2459 | "time": "2020-07-14T12:35:20+00:00" 2460 | }, 2461 | { 2462 | "name": "theseer/tokenizer", 2463 | "version": "1.2.0", 2464 | "source": { 2465 | "type": "git", 2466 | "url": "https://github.com/theseer/tokenizer.git", 2467 | "reference": "75a63c33a8577608444246075ea0af0d052e452a" 2468 | }, 2469 | "dist": { 2470 | "type": "zip", 2471 | "url": "https://api.github.com/repos/theseer/tokenizer/zipball/75a63c33a8577608444246075ea0af0d052e452a", 2472 | "reference": "75a63c33a8577608444246075ea0af0d052e452a", 2473 | "shasum": "" 2474 | }, 2475 | "require": { 2476 | "ext-dom": "*", 2477 | "ext-tokenizer": "*", 2478 | "ext-xmlwriter": "*", 2479 | "php": "^7.2 || ^8.0" 2480 | }, 2481 | "type": "library", 2482 | "autoload": { 2483 | "classmap": [ 2484 | "src/" 2485 | ] 2486 | }, 2487 | "notification-url": "https://packagist.org/downloads/", 2488 | "license": [ 2489 | "BSD-3-Clause" 2490 | ], 2491 | "authors": [ 2492 | { 2493 | "name": "Arne Blankerts", 2494 | "email": "arne@blankerts.de", 2495 | "role": "Developer" 2496 | } 2497 | ], 2498 | "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", 2499 | "funding": [ 2500 | { 2501 | "url": "https://github.com/theseer", 2502 | "type": "github" 2503 | } 2504 | ], 2505 | "time": "2020-07-12T23:59:07+00:00" 2506 | }, 2507 | { 2508 | "name": "webmozart/assert", 2509 | "version": "1.9.1", 2510 | "source": { 2511 | "type": "git", 2512 | "url": "https://github.com/webmozart/assert.git", 2513 | "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389" 2514 | }, 2515 | "dist": { 2516 | "type": "zip", 2517 | "url": "https://api.github.com/repos/webmozart/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389", 2518 | "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389", 2519 | "shasum": "" 2520 | }, 2521 | "require": { 2522 | "php": "^5.3.3 || ^7.0 || ^8.0", 2523 | "symfony/polyfill-ctype": "^1.8" 2524 | }, 2525 | "conflict": { 2526 | "phpstan/phpstan": "<0.12.20", 2527 | "vimeo/psalm": "<3.9.1" 2528 | }, 2529 | "require-dev": { 2530 | "phpunit/phpunit": "^4.8.36 || ^7.5.13" 2531 | }, 2532 | "type": "library", 2533 | "autoload": { 2534 | "psr-4": { 2535 | "Webmozart\\Assert\\": "src/" 2536 | } 2537 | }, 2538 | "notification-url": "https://packagist.org/downloads/", 2539 | "license": [ 2540 | "MIT" 2541 | ], 2542 | "authors": [ 2543 | { 2544 | "name": "Bernhard Schussek", 2545 | "email": "bschussek@gmail.com" 2546 | } 2547 | ], 2548 | "description": "Assertions to validate method input/output with nice error messages.", 2549 | "keywords": [ 2550 | "assert", 2551 | "check", 2552 | "validate" 2553 | ], 2554 | "time": "2020-07-08T17:02:28+00:00" 2555 | } 2556 | ], 2557 | "aliases": [], 2558 | "minimum-stability": "stable", 2559 | "stability-flags": [], 2560 | "prefer-stable": false, 2561 | "prefer-lowest": false, 2562 | "platform": { 2563 | "php": "^7.2" 2564 | }, 2565 | "platform-dev": [], 2566 | "plugin-api-version": "1.1.0" 2567 | } 2568 | --------------------------------------------------------------------------------