├── src ├── .gitkeep ├── Anonymizer │ ├── EmailAnonymizer.php │ ├── NameAnonymizer.php │ ├── CpfAnonymizer.php │ ├── RgAnonymizer.php │ ├── CreditCardNumberAnonymizer.php │ ├── CnpjAnonymizer.php │ ├── PhoneAnonymizer.php │ └── GenericAnonymizer.php └── Anonymizer.php ├── tests ├── .gitkeep └── Anonymizer │ ├── EmailAnonymizerTest.php │ ├── CpfAnonymizerTest.php │ ├── CnpjAnonymizerTest.php │ ├── GenericAnonymizerTest.php │ ├── NameAnonymizerTest.php │ ├── CreditCardNumberAnonymizerTest.php │ ├── RgAnonymizerTest.php │ └── PhoneAnonymizerTest.php ├── .styleci.yml ├── .gitignore ├── .travis.yml ├── phpunit.xml ├── composer.json ├── .github └── workflows │ └── php.yml ├── LICENSE ├── README.md └── composer.lock /src/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.styleci.yml: -------------------------------------------------------------------------------- 1 | preset: recommended 2 | disabled: 3 | - phpdoc_align -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | composer.phar 2 | /vendor/ 3 | 4 | # Commit your application's lock file https://getcomposer.org/doc/01-basic-usage.md#commit-your-composer-lock-file-to-version-control 5 | # You may choose to ignore a library lock file http://getcomposer.org/doc/02-libraries.md#lock-file 6 | # composer.lock 7 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: php 2 | 3 | php: 4 | - '7.2' 5 | - hhvm 6 | - nightly 7 | 8 | before_script: 9 | - composer self-update 10 | - composer install 11 | 12 | matrix: 13 | allow_failures: 14 | - php: nightly 15 | - php: hhvm 16 | 17 | sudo: false 18 | 19 | cache: 20 | directories: 21 | - $HOME/.composer/cache -------------------------------------------------------------------------------- /phpunit.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | ./tests/ 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/Anonymizer/EmailAnonymizer.php: -------------------------------------------------------------------------------- 1 | =7.2" 12 | }, 13 | "require-dev": { 14 | "phpunit/phpunit": "^8" 15 | }, 16 | "autoload": { 17 | "psr-4": { 18 | "Corviz\\BrGpdpl\\": "./src" 19 | } 20 | }, 21 | "scripts": { 22 | "test": "./vendor/bin/phpunit", 23 | "test-w": ".\\vendor\\bin\\phpunit" 24 | } 25 | } -------------------------------------------------------------------------------- /src/Anonymizer/CnpjAnonymizer.php: -------------------------------------------------------------------------------- 1 | assertEquals( 14 | 't****@domain.com', 15 | (new EmailAnonymizer('test_123@domain.com'))->anonymized() 16 | ); 17 | 18 | $this->assertEquals( 19 | 'n****@domain.ext1.ext2.ru', 20 | (new EmailAnonymizer('next.test@domain.ext1.ext2.ru'))->anonymized() 21 | ); 22 | } 23 | 24 | public function testInvalidValue() 25 | { 26 | $this->expectException(Exception::class); 27 | (new EmailAnonymizer('invalid')); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /tests/Anonymizer/CpfAnonymizerTest.php: -------------------------------------------------------------------------------- 1 | assertEquals( 14 | '111.***.***-**', 15 | (new CpfAnonymizer('111.111.111-11'))->anonymized() 16 | ); 17 | } 18 | 19 | public function testCpfMaskWithoutSeparators() 20 | { 21 | $this->assertEquals( 22 | '111********', 23 | (new CpfAnonymizer('11111111111'))->anonymized() 24 | ); 25 | } 26 | 27 | public function testInvalidValue() 28 | { 29 | $this->expectException(Exception::class); 30 | (new CpfAnonymizer('invalid')); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /tests/Anonymizer/CnpjAnonymizerTest.php: -------------------------------------------------------------------------------- 1 | assertEquals( 14 | '11.1**.***/1111-**', 15 | (new CnpjAnonymizer('11.111.111/1111-11'))->anonymized() 16 | ); 17 | } 18 | 19 | public function testCpfMaskWithoutSeparators() 20 | { 21 | $this->assertEquals( 22 | '111*****1111**', 23 | (new CnpjAnonymizer('11111111111111'))->anonymized() 24 | ); 25 | } 26 | 27 | public function testInvalidValue() 28 | { 29 | $this->expectException(Exception::class); 30 | (new CnpjAnonymizer('invalid')); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /tests/Anonymizer/GenericAnonymizerTest.php: -------------------------------------------------------------------------------- 1 | assertEquals( 13 | str_repeat('*', 8), 14 | (new GenericAnonymizer('mystring'))->anonymized() 15 | ); 16 | } 17 | 18 | public function testKeepStart() 19 | { 20 | $this->assertEquals( 21 | 'my'.str_repeat('*', 6), 22 | (new GenericAnonymizer('mystring', 2))->anonymized() 23 | ); 24 | } 25 | 26 | public function testKeepEnd() 27 | { 28 | $this->assertEquals( 29 | str_repeat('*', 6).'ng', 30 | (new GenericAnonymizer('mystring', 0, 2))->anonymized() 31 | ); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/Anonymizer/PhoneAnonymizer.php: -------------------------------------------------------------------------------- 1 | assertEquals( 14 | 'João********a', 15 | (new NameAnonymizer('João da Silva'))->anonymized() 16 | ); 17 | } 18 | 19 | public function testShortenedName() 20 | { 21 | $this->assertEquals( 22 | 'José********o', 23 | (new NameAnonymizer('José S. Francisco'))->anonymized() 24 | ); 25 | } 26 | 27 | public function testFirstName() 28 | { 29 | $this->assertEquals( 30 | 'Carl********s', 31 | (new NameAnonymizer('Carlos'))->anonymized() 32 | ); 33 | } 34 | 35 | public function testInvalidValue() 36 | { 37 | $this->expectException(Exception::class); 38 | (new NameAnonymizer('.')); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Corviz 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /tests/Anonymizer/CreditCardNumberAnonymizerTest.php: -------------------------------------------------------------------------------- 1 | anonymized() 16 | ); 17 | } 18 | 19 | public function testSpaceSeparators() 20 | { 21 | self::assertEquals( 22 | '1234 12** **** 1234', 23 | (new CreditCardNumberAnonymizer('1234 1234 1234 1234'))->anonymized() 24 | ); 25 | } 26 | 27 | public function testDashSeparators() 28 | { 29 | self::assertEquals( 30 | '1234-12**-****-1234', 31 | (new CreditCardNumberAnonymizer('1234-1234-1234-1234'))->anonymized() 32 | ); 33 | } 34 | 35 | public function testInvalidValue() 36 | { 37 | $this->expectException(Exception::class); 38 | (new CreditCardNumberAnonymizer('invalid')); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /tests/Anonymizer/RgAnonymizerTest.php: -------------------------------------------------------------------------------- 1 | assertEquals( 14 | '12.345.***-*', 15 | (new RgAnonymizer('12.345.678-0'))->anonymized() 16 | ); 17 | } 18 | 19 | public function testCpfMaskWithoutSeparators() 20 | { 21 | $this->assertEquals( 22 | '12345****', 23 | (new RgAnonymizer('123456780'))->anonymized() 24 | ); 25 | } 26 | 27 | public function testTrailingX() 28 | { 29 | $this->assertEquals( 30 | '12.345.***-*', 31 | (new RgAnonymizer('12.345.678-X'))->anonymized() 32 | ); 33 | 34 | $this->assertEquals( 35 | '12.345.***-*', 36 | (new RgAnonymizer('12.345.678-x'))->anonymized() 37 | ); 38 | 39 | $this->assertEquals( 40 | '12345****', 41 | (new RgAnonymizer('12345678X'))->anonymized() 42 | ); 43 | } 44 | 45 | public function testInvalidValue() 46 | { 47 | $this->expectException(Exception::class); 48 | (new RgAnonymizer('invalid')); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/Anonymizer/GenericAnonymizer.php: -------------------------------------------------------------------------------- 1 | keepAtStart > 0 ? substr($original, 0, $this->keepAtStart) : ''; 34 | $end = $this->keepAtEnd > 0 ? substr($original, -($this->keepAtEnd)) : ''; 35 | 36 | $repeat = strlen($original) - ($this->keepAtStart + $this->keepAtEnd); 37 | $anonymous = $repeat > 0 ? str_repeat('*', $repeat) : ''; 38 | 39 | return "{$start}{$anonymous}{$end}"; 40 | } 41 | 42 | /** 43 | * GenericAnonymizer constructor. 44 | * 45 | * @param string $original 46 | * @param int $keepAtStart 47 | * @param int $keepAtEnd 48 | * 49 | * @throws Exception 50 | */ 51 | public function __construct(string $original, int $keepAtStart = 0, int $keepAtEnd = 0) 52 | { 53 | $this->keepAtStart = $keepAtStart; 54 | $this->keepAtEnd = $keepAtEnd; 55 | 56 | parent::__construct($original); 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /tests/Anonymizer/PhoneAnonymizerTest.php: -------------------------------------------------------------------------------- 1 | assertEquals( 14 | '****-1234', 15 | (new PhoneAnonymizer('3000-1234'))->anonymized() 16 | ); 17 | } 18 | 19 | public function testCelphoneMaskWithoutRegion() 20 | { 21 | $this->assertEquals( 22 | '*****-1234', 23 | (new PhoneAnonymizer('90000-1234'))->anonymized() 24 | ); 25 | } 26 | 27 | public function testPhoneMaskWithDdd() 28 | { 29 | $this->assertEquals( 30 | '(**) ****-1234', 31 | (new PhoneAnonymizer('(11) 3000-1234'))->anonymized() 32 | ); 33 | } 34 | 35 | public function testCelphoneMaskDdi() 36 | { 37 | $this->assertEquals( 38 | '+55 ** *****-5678', 39 | (new PhoneAnonymizer('+55 11 91234-5678'))->anonymized() 40 | ); 41 | } 42 | 43 | public function testUsPhoneNumber() 44 | { 45 | $this->assertEquals( 46 | '+1 (***) ***-2671', 47 | (new PhoneAnonymizer('+1 (415) 555-2671'))->anonymized() 48 | ); 49 | } 50 | 51 | public function testCelphoneMaskDdiDigitsonly() 52 | { 53 | $this->assertEquals( 54 | '+551******5678', 55 | (new PhoneAnonymizer('+5511912345678'))->anonymized() 56 | ); 57 | } 58 | 59 | public function testInvalidValue() 60 | { 61 | $this->expectException(Exception::class); 62 | (new PhoneAnonymizer('invalid')); 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /src/Anonymizer.php: -------------------------------------------------------------------------------- 1 | anonymous)) { 40 | $this->anonymous = $this->anonymize($this->original, static::getPattern()); 41 | } 42 | 43 | return $this->anonymous; 44 | } 45 | 46 | /** 47 | * @return string 48 | */ 49 | public function original(): string 50 | { 51 | return $this->original; 52 | } 53 | 54 | /** 55 | * @param string $original 56 | * @param string $pattern 57 | * 58 | * @return string 59 | */ 60 | abstract protected function anonymize(string $original, string $pattern): string; 61 | 62 | /** 63 | * Anonymizer constructor. 64 | * 65 | * @param string $original 66 | */ 67 | public function __construct(string $original) 68 | { 69 | if (!static::matches($original)) { 70 | throw new Exception("'$original' does not match current anonymizer."); 71 | } 72 | 73 | $this->original = $original; 74 | } 75 | 76 | /** 77 | * @return string 78 | */ 79 | public function __toString() 80 | { 81 | return $this->anonymized(); 82 | } 83 | } 84 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # br-gpdpl-php 2 | 3 | This lib provides a series of data anonymizer classes, compliant with brazilian General Personal Data Protection Law (aka LGPD, in pt-br) 4 | 5 | [![StyleCI](https://github.styleci.io/repos/348778629/shield?branch=main)](https://github.styleci.io/repos/348778629?branch=main) 6 | [![Build Status](https://travis-ci.org/Corviz/br-gpdpl-php.svg?branch=main)](https://travis-ci.org/Corviz/br-gpdpl-php) 7 | [![PHP Composer](https://github.com/Corviz/br-gpdpl-php/actions/workflows/php.yml/badge.svg)](https://github.com/Corviz/br-gpdpl-php/actions/workflows/php.yml) 8 | 9 | ## What is GPDPL (or LGPD)? 10 | 11 | According to Wikipedia, 12 | 13 | The General Personal Data Protection Law (Brazil) 13709/2018 (Portuguese: Lei Geral de Proteção de Dados Pessoais, or LGPD), is a statutory law on data protection and privacy in the Federative Republic of Brazil. The law's primary aim is to unify 40 different Brazilian laws that regulate the processing of personal data. The LGPD contains provisions and requirements related to the processing of personal data of individuals, where the data is of individuals located in Brazil, where the data is collected or processed in Brazil, or where the data is used to offer goods or services to individuals in Brazil. 14 | 15 | The LGPD became law on September 18, 2020 but its enforceability was backdated August 16, 2020. Sanctions under the regulation will only be applied from August 1, 2021. 16 | 17 | The national data protection authority responsible for enforcement of the LGPD is the Autoridade Nacional de Proteção de Dados, or ANPD. 18 | 19 | Further information can be found at: https://en.wikipedia.org/wiki/General_Personal_Data_Protection_Law 20 | 21 | ## Installation 22 | 23 | Installing via composer CLI: 24 | ``` 25 | composer require corviz/br-gpdpl 26 | ``` 27 | 28 | Or add the following to your composer.json 29 | 30 | ``` 31 | { 32 | "require": { 33 | "corviz/br-gpdpl": "1.*" 34 | } 35 | } 36 | ``` 37 | 38 | ## Usage examples 39 | 40 | ```php 41 | use Corviz\BrGpdpl\Anonymizer\GenericAnonymizer; 42 | 43 | $text = 'my content'; 44 | $anonymizer = new GenericAnonymizer($text); 45 | 46 | echo $anonymizer->anonymized(); //********** 47 | ``` 48 | 49 | ```php 50 | use Corviz\BrGpdpl\Anonymizer\CreditCardNumberAnonymizer; 51 | 52 | $cardNumber = '1234 5678 9012 3456'; 53 | $anonymizer = new CreditCardNumberAnonymizer($cardNumber); 54 | 55 | echo $anonymizer->anonymized(); //1234 56** **** 3456 56 | ``` 57 | 58 | [See complete list of examples...](https://corviz.github.io/br-gpdpl-php/) 59 | -------------------------------------------------------------------------------- /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": "4142260fc66ea069681b4203943a8387", 8 | "packages": [], 9 | "packages-dev": [ 10 | { 11 | "name": "doctrine/instantiator", 12 | "version": "1.4.1", 13 | "source": { 14 | "type": "git", 15 | "url": "https://github.com/doctrine/instantiator.git", 16 | "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc" 17 | }, 18 | "dist": { 19 | "type": "zip", 20 | "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc", 21 | "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc", 22 | "shasum": "" 23 | }, 24 | "require": { 25 | "php": "^7.1 || ^8.0" 26 | }, 27 | "require-dev": { 28 | "doctrine/coding-standard": "^9", 29 | "ext-pdo": "*", 30 | "ext-phar": "*", 31 | "phpbench/phpbench": "^0.16 || ^1", 32 | "phpstan/phpstan": "^1.4", 33 | "phpstan/phpstan-phpunit": "^1", 34 | "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", 35 | "vimeo/psalm": "^4.22" 36 | }, 37 | "type": "library", 38 | "autoload": { 39 | "psr-4": { 40 | "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" 41 | } 42 | }, 43 | "notification-url": "https://packagist.org/downloads/", 44 | "license": [ 45 | "MIT" 46 | ], 47 | "authors": [ 48 | { 49 | "name": "Marco Pivetta", 50 | "email": "ocramius@gmail.com", 51 | "homepage": "https://ocramius.github.io/" 52 | } 53 | ], 54 | "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", 55 | "homepage": "https://www.doctrine-project.org/projects/instantiator.html", 56 | "keywords": [ 57 | "constructor", 58 | "instantiate" 59 | ], 60 | "support": { 61 | "issues": "https://github.com/doctrine/instantiator/issues", 62 | "source": "https://github.com/doctrine/instantiator/tree/1.4.1" 63 | }, 64 | "funding": [ 65 | { 66 | "url": "https://www.doctrine-project.org/sponsorship.html", 67 | "type": "custom" 68 | }, 69 | { 70 | "url": "https://www.patreon.com/phpdoctrine", 71 | "type": "patreon" 72 | }, 73 | { 74 | "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", 75 | "type": "tidelift" 76 | } 77 | ], 78 | "time": "2022-03-03T08:28:38+00:00" 79 | }, 80 | { 81 | "name": "myclabs/deep-copy", 82 | "version": "1.11.0", 83 | "source": { 84 | "type": "git", 85 | "url": "https://github.com/myclabs/DeepCopy.git", 86 | "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614" 87 | }, 88 | "dist": { 89 | "type": "zip", 90 | "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614", 91 | "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614", 92 | "shasum": "" 93 | }, 94 | "require": { 95 | "php": "^7.1 || ^8.0" 96 | }, 97 | "conflict": { 98 | "doctrine/collections": "<1.6.8", 99 | "doctrine/common": "<2.13.3 || >=3,<3.2.2" 100 | }, 101 | "require-dev": { 102 | "doctrine/collections": "^1.6.8", 103 | "doctrine/common": "^2.13.3 || ^3.2.2", 104 | "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" 105 | }, 106 | "type": "library", 107 | "autoload": { 108 | "files": [ 109 | "src/DeepCopy/deep_copy.php" 110 | ], 111 | "psr-4": { 112 | "DeepCopy\\": "src/DeepCopy/" 113 | } 114 | }, 115 | "notification-url": "https://packagist.org/downloads/", 116 | "license": [ 117 | "MIT" 118 | ], 119 | "description": "Create deep copies (clones) of your objects", 120 | "keywords": [ 121 | "clone", 122 | "copy", 123 | "duplicate", 124 | "object", 125 | "object graph" 126 | ], 127 | "support": { 128 | "issues": "https://github.com/myclabs/DeepCopy/issues", 129 | "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0" 130 | }, 131 | "funding": [ 132 | { 133 | "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", 134 | "type": "tidelift" 135 | } 136 | ], 137 | "time": "2022-03-03T13:19:32+00:00" 138 | }, 139 | { 140 | "name": "phar-io/manifest", 141 | "version": "2.0.3", 142 | "source": { 143 | "type": "git", 144 | "url": "https://github.com/phar-io/manifest.git", 145 | "reference": "97803eca37d319dfa7826cc2437fc020857acb53" 146 | }, 147 | "dist": { 148 | "type": "zip", 149 | "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", 150 | "reference": "97803eca37d319dfa7826cc2437fc020857acb53", 151 | "shasum": "" 152 | }, 153 | "require": { 154 | "ext-dom": "*", 155 | "ext-phar": "*", 156 | "ext-xmlwriter": "*", 157 | "phar-io/version": "^3.0.1", 158 | "php": "^7.2 || ^8.0" 159 | }, 160 | "type": "library", 161 | "extra": { 162 | "branch-alias": { 163 | "dev-master": "2.0.x-dev" 164 | } 165 | }, 166 | "autoload": { 167 | "classmap": [ 168 | "src/" 169 | ] 170 | }, 171 | "notification-url": "https://packagist.org/downloads/", 172 | "license": [ 173 | "BSD-3-Clause" 174 | ], 175 | "authors": [ 176 | { 177 | "name": "Arne Blankerts", 178 | "email": "arne@blankerts.de", 179 | "role": "Developer" 180 | }, 181 | { 182 | "name": "Sebastian Heuer", 183 | "email": "sebastian@phpeople.de", 184 | "role": "Developer" 185 | }, 186 | { 187 | "name": "Sebastian Bergmann", 188 | "email": "sebastian@phpunit.de", 189 | "role": "Developer" 190 | } 191 | ], 192 | "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", 193 | "support": { 194 | "issues": "https://github.com/phar-io/manifest/issues", 195 | "source": "https://github.com/phar-io/manifest/tree/2.0.3" 196 | }, 197 | "time": "2021-07-20T11:28:43+00:00" 198 | }, 199 | { 200 | "name": "phar-io/version", 201 | "version": "3.2.1", 202 | "source": { 203 | "type": "git", 204 | "url": "https://github.com/phar-io/version.git", 205 | "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" 206 | }, 207 | "dist": { 208 | "type": "zip", 209 | "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", 210 | "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", 211 | "shasum": "" 212 | }, 213 | "require": { 214 | "php": "^7.2 || ^8.0" 215 | }, 216 | "type": "library", 217 | "autoload": { 218 | "classmap": [ 219 | "src/" 220 | ] 221 | }, 222 | "notification-url": "https://packagist.org/downloads/", 223 | "license": [ 224 | "BSD-3-Clause" 225 | ], 226 | "authors": [ 227 | { 228 | "name": "Arne Blankerts", 229 | "email": "arne@blankerts.de", 230 | "role": "Developer" 231 | }, 232 | { 233 | "name": "Sebastian Heuer", 234 | "email": "sebastian@phpeople.de", 235 | "role": "Developer" 236 | }, 237 | { 238 | "name": "Sebastian Bergmann", 239 | "email": "sebastian@phpunit.de", 240 | "role": "Developer" 241 | } 242 | ], 243 | "description": "Library for handling version information and constraints", 244 | "support": { 245 | "issues": "https://github.com/phar-io/version/issues", 246 | "source": "https://github.com/phar-io/version/tree/3.2.1" 247 | }, 248 | "time": "2022-02-21T01:04:05+00:00" 249 | }, 250 | { 251 | "name": "phpdocumentor/reflection-common", 252 | "version": "2.2.0", 253 | "source": { 254 | "type": "git", 255 | "url": "https://github.com/phpDocumentor/ReflectionCommon.git", 256 | "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" 257 | }, 258 | "dist": { 259 | "type": "zip", 260 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", 261 | "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", 262 | "shasum": "" 263 | }, 264 | "require": { 265 | "php": "^7.2 || ^8.0" 266 | }, 267 | "type": "library", 268 | "extra": { 269 | "branch-alias": { 270 | "dev-2.x": "2.x-dev" 271 | } 272 | }, 273 | "autoload": { 274 | "psr-4": { 275 | "phpDocumentor\\Reflection\\": "src/" 276 | } 277 | }, 278 | "notification-url": "https://packagist.org/downloads/", 279 | "license": [ 280 | "MIT" 281 | ], 282 | "authors": [ 283 | { 284 | "name": "Jaap van Otterdijk", 285 | "email": "opensource@ijaap.nl" 286 | } 287 | ], 288 | "description": "Common reflection classes used by phpdocumentor to reflect the code structure", 289 | "homepage": "http://www.phpdoc.org", 290 | "keywords": [ 291 | "FQSEN", 292 | "phpDocumentor", 293 | "phpdoc", 294 | "reflection", 295 | "static analysis" 296 | ], 297 | "support": { 298 | "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", 299 | "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" 300 | }, 301 | "time": "2020-06-27T09:03:43+00:00" 302 | }, 303 | { 304 | "name": "phpdocumentor/reflection-docblock", 305 | "version": "5.3.0", 306 | "source": { 307 | "type": "git", 308 | "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", 309 | "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" 310 | }, 311 | "dist": { 312 | "type": "zip", 313 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", 314 | "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", 315 | "shasum": "" 316 | }, 317 | "require": { 318 | "ext-filter": "*", 319 | "php": "^7.2 || ^8.0", 320 | "phpdocumentor/reflection-common": "^2.2", 321 | "phpdocumentor/type-resolver": "^1.3", 322 | "webmozart/assert": "^1.9.1" 323 | }, 324 | "require-dev": { 325 | "mockery/mockery": "~1.3.2", 326 | "psalm/phar": "^4.8" 327 | }, 328 | "type": "library", 329 | "extra": { 330 | "branch-alias": { 331 | "dev-master": "5.x-dev" 332 | } 333 | }, 334 | "autoload": { 335 | "psr-4": { 336 | "phpDocumentor\\Reflection\\": "src" 337 | } 338 | }, 339 | "notification-url": "https://packagist.org/downloads/", 340 | "license": [ 341 | "MIT" 342 | ], 343 | "authors": [ 344 | { 345 | "name": "Mike van Riel", 346 | "email": "me@mikevanriel.com" 347 | }, 348 | { 349 | "name": "Jaap van Otterdijk", 350 | "email": "account@ijaap.nl" 351 | } 352 | ], 353 | "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", 354 | "support": { 355 | "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", 356 | "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" 357 | }, 358 | "time": "2021-10-19T17:43:47+00:00" 359 | }, 360 | { 361 | "name": "phpdocumentor/type-resolver", 362 | "version": "1.6.1", 363 | "source": { 364 | "type": "git", 365 | "url": "https://github.com/phpDocumentor/TypeResolver.git", 366 | "reference": "77a32518733312af16a44300404e945338981de3" 367 | }, 368 | "dist": { 369 | "type": "zip", 370 | "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/77a32518733312af16a44300404e945338981de3", 371 | "reference": "77a32518733312af16a44300404e945338981de3", 372 | "shasum": "" 373 | }, 374 | "require": { 375 | "php": "^7.2 || ^8.0", 376 | "phpdocumentor/reflection-common": "^2.0" 377 | }, 378 | "require-dev": { 379 | "ext-tokenizer": "*", 380 | "psalm/phar": "^4.8" 381 | }, 382 | "type": "library", 383 | "extra": { 384 | "branch-alias": { 385 | "dev-1.x": "1.x-dev" 386 | } 387 | }, 388 | "autoload": { 389 | "psr-4": { 390 | "phpDocumentor\\Reflection\\": "src" 391 | } 392 | }, 393 | "notification-url": "https://packagist.org/downloads/", 394 | "license": [ 395 | "MIT" 396 | ], 397 | "authors": [ 398 | { 399 | "name": "Mike van Riel", 400 | "email": "me@mikevanriel.com" 401 | } 402 | ], 403 | "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", 404 | "support": { 405 | "issues": "https://github.com/phpDocumentor/TypeResolver/issues", 406 | "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.1" 407 | }, 408 | "time": "2022-03-15T21:29:03+00:00" 409 | }, 410 | { 411 | "name": "phpspec/prophecy", 412 | "version": "v1.15.0", 413 | "source": { 414 | "type": "git", 415 | "url": "https://github.com/phpspec/prophecy.git", 416 | "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" 417 | }, 418 | "dist": { 419 | "type": "zip", 420 | "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", 421 | "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", 422 | "shasum": "" 423 | }, 424 | "require": { 425 | "doctrine/instantiator": "^1.2", 426 | "php": "^7.2 || ~8.0, <8.2", 427 | "phpdocumentor/reflection-docblock": "^5.2", 428 | "sebastian/comparator": "^3.0 || ^4.0", 429 | "sebastian/recursion-context": "^3.0 || ^4.0" 430 | }, 431 | "require-dev": { 432 | "phpspec/phpspec": "^6.0 || ^7.0", 433 | "phpunit/phpunit": "^8.0 || ^9.0" 434 | }, 435 | "type": "library", 436 | "extra": { 437 | "branch-alias": { 438 | "dev-master": "1.x-dev" 439 | } 440 | }, 441 | "autoload": { 442 | "psr-4": { 443 | "Prophecy\\": "src/Prophecy" 444 | } 445 | }, 446 | "notification-url": "https://packagist.org/downloads/", 447 | "license": [ 448 | "MIT" 449 | ], 450 | "authors": [ 451 | { 452 | "name": "Konstantin Kudryashov", 453 | "email": "ever.zet@gmail.com", 454 | "homepage": "http://everzet.com" 455 | }, 456 | { 457 | "name": "Marcello Duarte", 458 | "email": "marcello.duarte@gmail.com" 459 | } 460 | ], 461 | "description": "Highly opinionated mocking framework for PHP 5.3+", 462 | "homepage": "https://github.com/phpspec/prophecy", 463 | "keywords": [ 464 | "Double", 465 | "Dummy", 466 | "fake", 467 | "mock", 468 | "spy", 469 | "stub" 470 | ], 471 | "support": { 472 | "issues": "https://github.com/phpspec/prophecy/issues", 473 | "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" 474 | }, 475 | "time": "2021-12-08T12:19:24+00:00" 476 | }, 477 | { 478 | "name": "phpunit/php-code-coverage", 479 | "version": "7.0.15", 480 | "source": { 481 | "type": "git", 482 | "url": "https://github.com/sebastianbergmann/php-code-coverage.git", 483 | "reference": "819f92bba8b001d4363065928088de22f25a3a48" 484 | }, 485 | "dist": { 486 | "type": "zip", 487 | "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/819f92bba8b001d4363065928088de22f25a3a48", 488 | "reference": "819f92bba8b001d4363065928088de22f25a3a48", 489 | "shasum": "" 490 | }, 491 | "require": { 492 | "ext-dom": "*", 493 | "ext-xmlwriter": "*", 494 | "php": ">=7.2", 495 | "phpunit/php-file-iterator": "^2.0.2", 496 | "phpunit/php-text-template": "^1.2.1", 497 | "phpunit/php-token-stream": "^3.1.3 || ^4.0", 498 | "sebastian/code-unit-reverse-lookup": "^1.0.1", 499 | "sebastian/environment": "^4.2.2", 500 | "sebastian/version": "^2.0.1", 501 | "theseer/tokenizer": "^1.1.3" 502 | }, 503 | "require-dev": { 504 | "phpunit/phpunit": "^8.2.2" 505 | }, 506 | "suggest": { 507 | "ext-xdebug": "^2.7.2" 508 | }, 509 | "type": "library", 510 | "extra": { 511 | "branch-alias": { 512 | "dev-master": "7.0-dev" 513 | } 514 | }, 515 | "autoload": { 516 | "classmap": [ 517 | "src/" 518 | ] 519 | }, 520 | "notification-url": "https://packagist.org/downloads/", 521 | "license": [ 522 | "BSD-3-Clause" 523 | ], 524 | "authors": [ 525 | { 526 | "name": "Sebastian Bergmann", 527 | "email": "sebastian@phpunit.de", 528 | "role": "lead" 529 | } 530 | ], 531 | "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", 532 | "homepage": "https://github.com/sebastianbergmann/php-code-coverage", 533 | "keywords": [ 534 | "coverage", 535 | "testing", 536 | "xunit" 537 | ], 538 | "support": { 539 | "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", 540 | "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/7.0.15" 541 | }, 542 | "funding": [ 543 | { 544 | "url": "https://github.com/sebastianbergmann", 545 | "type": "github" 546 | } 547 | ], 548 | "time": "2021-07-26T12:20:09+00:00" 549 | }, 550 | { 551 | "name": "phpunit/php-file-iterator", 552 | "version": "2.0.5", 553 | "source": { 554 | "type": "git", 555 | "url": "https://github.com/sebastianbergmann/php-file-iterator.git", 556 | "reference": "42c5ba5220e6904cbfe8b1a1bda7c0cfdc8c12f5" 557 | }, 558 | "dist": { 559 | "type": "zip", 560 | "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/42c5ba5220e6904cbfe8b1a1bda7c0cfdc8c12f5", 561 | "reference": "42c5ba5220e6904cbfe8b1a1bda7c0cfdc8c12f5", 562 | "shasum": "" 563 | }, 564 | "require": { 565 | "php": ">=7.1" 566 | }, 567 | "require-dev": { 568 | "phpunit/phpunit": "^8.5" 569 | }, 570 | "type": "library", 571 | "extra": { 572 | "branch-alias": { 573 | "dev-master": "2.0.x-dev" 574 | } 575 | }, 576 | "autoload": { 577 | "classmap": [ 578 | "src/" 579 | ] 580 | }, 581 | "notification-url": "https://packagist.org/downloads/", 582 | "license": [ 583 | "BSD-3-Clause" 584 | ], 585 | "authors": [ 586 | { 587 | "name": "Sebastian Bergmann", 588 | "email": "sebastian@phpunit.de", 589 | "role": "lead" 590 | } 591 | ], 592 | "description": "FilterIterator implementation that filters files based on a list of suffixes.", 593 | "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", 594 | "keywords": [ 595 | "filesystem", 596 | "iterator" 597 | ], 598 | "support": { 599 | "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", 600 | "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/2.0.5" 601 | }, 602 | "funding": [ 603 | { 604 | "url": "https://github.com/sebastianbergmann", 605 | "type": "github" 606 | } 607 | ], 608 | "time": "2021-12-02T12:42:26+00:00" 609 | }, 610 | { 611 | "name": "phpunit/php-text-template", 612 | "version": "1.2.1", 613 | "source": { 614 | "type": "git", 615 | "url": "https://github.com/sebastianbergmann/php-text-template.git", 616 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" 617 | }, 618 | "dist": { 619 | "type": "zip", 620 | "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 621 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 622 | "shasum": "" 623 | }, 624 | "require": { 625 | "php": ">=5.3.3" 626 | }, 627 | "type": "library", 628 | "autoload": { 629 | "classmap": [ 630 | "src/" 631 | ] 632 | }, 633 | "notification-url": "https://packagist.org/downloads/", 634 | "license": [ 635 | "BSD-3-Clause" 636 | ], 637 | "authors": [ 638 | { 639 | "name": "Sebastian Bergmann", 640 | "email": "sebastian@phpunit.de", 641 | "role": "lead" 642 | } 643 | ], 644 | "description": "Simple template engine.", 645 | "homepage": "https://github.com/sebastianbergmann/php-text-template/", 646 | "keywords": [ 647 | "template" 648 | ], 649 | "support": { 650 | "issues": "https://github.com/sebastianbergmann/php-text-template/issues", 651 | "source": "https://github.com/sebastianbergmann/php-text-template/tree/1.2.1" 652 | }, 653 | "time": "2015-06-21T13:50:34+00:00" 654 | }, 655 | { 656 | "name": "phpunit/php-timer", 657 | "version": "2.1.3", 658 | "source": { 659 | "type": "git", 660 | "url": "https://github.com/sebastianbergmann/php-timer.git", 661 | "reference": "2454ae1765516d20c4ffe103d85a58a9a3bd5662" 662 | }, 663 | "dist": { 664 | "type": "zip", 665 | "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/2454ae1765516d20c4ffe103d85a58a9a3bd5662", 666 | "reference": "2454ae1765516d20c4ffe103d85a58a9a3bd5662", 667 | "shasum": "" 668 | }, 669 | "require": { 670 | "php": ">=7.1" 671 | }, 672 | "require-dev": { 673 | "phpunit/phpunit": "^8.5" 674 | }, 675 | "type": "library", 676 | "extra": { 677 | "branch-alias": { 678 | "dev-master": "2.1-dev" 679 | } 680 | }, 681 | "autoload": { 682 | "classmap": [ 683 | "src/" 684 | ] 685 | }, 686 | "notification-url": "https://packagist.org/downloads/", 687 | "license": [ 688 | "BSD-3-Clause" 689 | ], 690 | "authors": [ 691 | { 692 | "name": "Sebastian Bergmann", 693 | "email": "sebastian@phpunit.de", 694 | "role": "lead" 695 | } 696 | ], 697 | "description": "Utility class for timing", 698 | "homepage": "https://github.com/sebastianbergmann/php-timer/", 699 | "keywords": [ 700 | "timer" 701 | ], 702 | "support": { 703 | "issues": "https://github.com/sebastianbergmann/php-timer/issues", 704 | "source": "https://github.com/sebastianbergmann/php-timer/tree/2.1.3" 705 | }, 706 | "funding": [ 707 | { 708 | "url": "https://github.com/sebastianbergmann", 709 | "type": "github" 710 | } 711 | ], 712 | "time": "2020-11-30T08:20:02+00:00" 713 | }, 714 | { 715 | "name": "phpunit/php-token-stream", 716 | "version": "4.0.4", 717 | "source": { 718 | "type": "git", 719 | "url": "https://github.com/sebastianbergmann/php-token-stream.git", 720 | "reference": "a853a0e183b9db7eed023d7933a858fa1c8d25a3" 721 | }, 722 | "dist": { 723 | "type": "zip", 724 | "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/a853a0e183b9db7eed023d7933a858fa1c8d25a3", 725 | "reference": "a853a0e183b9db7eed023d7933a858fa1c8d25a3", 726 | "shasum": "" 727 | }, 728 | "require": { 729 | "ext-tokenizer": "*", 730 | "php": "^7.3 || ^8.0" 731 | }, 732 | "require-dev": { 733 | "phpunit/phpunit": "^9.0" 734 | }, 735 | "type": "library", 736 | "extra": { 737 | "branch-alias": { 738 | "dev-master": "4.0-dev" 739 | } 740 | }, 741 | "autoload": { 742 | "classmap": [ 743 | "src/" 744 | ] 745 | }, 746 | "notification-url": "https://packagist.org/downloads/", 747 | "license": [ 748 | "BSD-3-Clause" 749 | ], 750 | "authors": [ 751 | { 752 | "name": "Sebastian Bergmann", 753 | "email": "sebastian@phpunit.de" 754 | } 755 | ], 756 | "description": "Wrapper around PHP's tokenizer extension.", 757 | "homepage": "https://github.com/sebastianbergmann/php-token-stream/", 758 | "keywords": [ 759 | "tokenizer" 760 | ], 761 | "support": { 762 | "issues": "https://github.com/sebastianbergmann/php-token-stream/issues", 763 | "source": "https://github.com/sebastianbergmann/php-token-stream/tree/master" 764 | }, 765 | "funding": [ 766 | { 767 | "url": "https://github.com/sebastianbergmann", 768 | "type": "github" 769 | } 770 | ], 771 | "abandoned": true, 772 | "time": "2020-08-04T08:28:15+00:00" 773 | }, 774 | { 775 | "name": "phpunit/phpunit", 776 | "version": "8.5.27", 777 | "source": { 778 | "type": "git", 779 | "url": "https://github.com/sebastianbergmann/phpunit.git", 780 | "reference": "df70070f2711b8fe8dcca0797c1239ede8c94be6" 781 | }, 782 | "dist": { 783 | "type": "zip", 784 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/df70070f2711b8fe8dcca0797c1239ede8c94be6", 785 | "reference": "df70070f2711b8fe8dcca0797c1239ede8c94be6", 786 | "shasum": "" 787 | }, 788 | "require": { 789 | "doctrine/instantiator": "^1.3.1", 790 | "ext-dom": "*", 791 | "ext-json": "*", 792 | "ext-libxml": "*", 793 | "ext-mbstring": "*", 794 | "ext-xml": "*", 795 | "ext-xmlwriter": "*", 796 | "myclabs/deep-copy": "^1.10.0", 797 | "phar-io/manifest": "^2.0.3", 798 | "phar-io/version": "^3.0.2", 799 | "php": ">=7.2", 800 | "phpspec/prophecy": "^1.10.3", 801 | "phpunit/php-code-coverage": "^7.0.12", 802 | "phpunit/php-file-iterator": "^2.0.4", 803 | "phpunit/php-text-template": "^1.2.1", 804 | "phpunit/php-timer": "^2.1.2", 805 | "sebastian/comparator": "^3.0.2", 806 | "sebastian/diff": "^3.0.2", 807 | "sebastian/environment": "^4.2.3", 808 | "sebastian/exporter": "^3.1.2", 809 | "sebastian/global-state": "^3.0.0", 810 | "sebastian/object-enumerator": "^3.0.3", 811 | "sebastian/resource-operations": "^2.0.1", 812 | "sebastian/type": "^1.1.3", 813 | "sebastian/version": "^2.0.1" 814 | }, 815 | "suggest": { 816 | "ext-soap": "*", 817 | "ext-xdebug": "*", 818 | "phpunit/php-invoker": "^2.0.0" 819 | }, 820 | "bin": [ 821 | "phpunit" 822 | ], 823 | "type": "library", 824 | "extra": { 825 | "branch-alias": { 826 | "dev-master": "8.5-dev" 827 | } 828 | }, 829 | "autoload": { 830 | "classmap": [ 831 | "src/" 832 | ] 833 | }, 834 | "notification-url": "https://packagist.org/downloads/", 835 | "license": [ 836 | "BSD-3-Clause" 837 | ], 838 | "authors": [ 839 | { 840 | "name": "Sebastian Bergmann", 841 | "email": "sebastian@phpunit.de", 842 | "role": "lead" 843 | } 844 | ], 845 | "description": "The PHP Unit Testing framework.", 846 | "homepage": "https://phpunit.de/", 847 | "keywords": [ 848 | "phpunit", 849 | "testing", 850 | "xunit" 851 | ], 852 | "support": { 853 | "issues": "https://github.com/sebastianbergmann/phpunit/issues", 854 | "source": "https://github.com/sebastianbergmann/phpunit/tree/8.5.27" 855 | }, 856 | "funding": [ 857 | { 858 | "url": "https://phpunit.de/sponsors.html", 859 | "type": "custom" 860 | }, 861 | { 862 | "url": "https://github.com/sebastianbergmann", 863 | "type": "github" 864 | } 865 | ], 866 | "time": "2022-06-19T12:11:16+00:00" 867 | }, 868 | { 869 | "name": "sebastian/code-unit-reverse-lookup", 870 | "version": "1.0.2", 871 | "source": { 872 | "type": "git", 873 | "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", 874 | "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619" 875 | }, 876 | "dist": { 877 | "type": "zip", 878 | "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/1de8cd5c010cb153fcd68b8d0f64606f523f7619", 879 | "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619", 880 | "shasum": "" 881 | }, 882 | "require": { 883 | "php": ">=5.6" 884 | }, 885 | "require-dev": { 886 | "phpunit/phpunit": "^8.5" 887 | }, 888 | "type": "library", 889 | "extra": { 890 | "branch-alias": { 891 | "dev-master": "1.0.x-dev" 892 | } 893 | }, 894 | "autoload": { 895 | "classmap": [ 896 | "src/" 897 | ] 898 | }, 899 | "notification-url": "https://packagist.org/downloads/", 900 | "license": [ 901 | "BSD-3-Clause" 902 | ], 903 | "authors": [ 904 | { 905 | "name": "Sebastian Bergmann", 906 | "email": "sebastian@phpunit.de" 907 | } 908 | ], 909 | "description": "Looks up which function or method a line of code belongs to", 910 | "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", 911 | "support": { 912 | "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", 913 | "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/1.0.2" 914 | }, 915 | "funding": [ 916 | { 917 | "url": "https://github.com/sebastianbergmann", 918 | "type": "github" 919 | } 920 | ], 921 | "time": "2020-11-30T08:15:22+00:00" 922 | }, 923 | { 924 | "name": "sebastian/comparator", 925 | "version": "3.0.3", 926 | "source": { 927 | "type": "git", 928 | "url": "https://github.com/sebastianbergmann/comparator.git", 929 | "reference": "1071dfcef776a57013124ff35e1fc41ccd294758" 930 | }, 931 | "dist": { 932 | "type": "zip", 933 | "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/1071dfcef776a57013124ff35e1fc41ccd294758", 934 | "reference": "1071dfcef776a57013124ff35e1fc41ccd294758", 935 | "shasum": "" 936 | }, 937 | "require": { 938 | "php": ">=7.1", 939 | "sebastian/diff": "^3.0", 940 | "sebastian/exporter": "^3.1" 941 | }, 942 | "require-dev": { 943 | "phpunit/phpunit": "^8.5" 944 | }, 945 | "type": "library", 946 | "extra": { 947 | "branch-alias": { 948 | "dev-master": "3.0-dev" 949 | } 950 | }, 951 | "autoload": { 952 | "classmap": [ 953 | "src/" 954 | ] 955 | }, 956 | "notification-url": "https://packagist.org/downloads/", 957 | "license": [ 958 | "BSD-3-Clause" 959 | ], 960 | "authors": [ 961 | { 962 | "name": "Sebastian Bergmann", 963 | "email": "sebastian@phpunit.de" 964 | }, 965 | { 966 | "name": "Jeff Welch", 967 | "email": "whatthejeff@gmail.com" 968 | }, 969 | { 970 | "name": "Volker Dusch", 971 | "email": "github@wallbash.com" 972 | }, 973 | { 974 | "name": "Bernhard Schussek", 975 | "email": "bschussek@2bepublished.at" 976 | } 977 | ], 978 | "description": "Provides the functionality to compare PHP values for equality", 979 | "homepage": "https://github.com/sebastianbergmann/comparator", 980 | "keywords": [ 981 | "comparator", 982 | "compare", 983 | "equality" 984 | ], 985 | "support": { 986 | "issues": "https://github.com/sebastianbergmann/comparator/issues", 987 | "source": "https://github.com/sebastianbergmann/comparator/tree/3.0.3" 988 | }, 989 | "funding": [ 990 | { 991 | "url": "https://github.com/sebastianbergmann", 992 | "type": "github" 993 | } 994 | ], 995 | "time": "2020-11-30T08:04:30+00:00" 996 | }, 997 | { 998 | "name": "sebastian/diff", 999 | "version": "3.0.3", 1000 | "source": { 1001 | "type": "git", 1002 | "url": "https://github.com/sebastianbergmann/diff.git", 1003 | "reference": "14f72dd46eaf2f2293cbe79c93cc0bc43161a211" 1004 | }, 1005 | "dist": { 1006 | "type": "zip", 1007 | "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/14f72dd46eaf2f2293cbe79c93cc0bc43161a211", 1008 | "reference": "14f72dd46eaf2f2293cbe79c93cc0bc43161a211", 1009 | "shasum": "" 1010 | }, 1011 | "require": { 1012 | "php": ">=7.1" 1013 | }, 1014 | "require-dev": { 1015 | "phpunit/phpunit": "^7.5 || ^8.0", 1016 | "symfony/process": "^2 || ^3.3 || ^4" 1017 | }, 1018 | "type": "library", 1019 | "extra": { 1020 | "branch-alias": { 1021 | "dev-master": "3.0-dev" 1022 | } 1023 | }, 1024 | "autoload": { 1025 | "classmap": [ 1026 | "src/" 1027 | ] 1028 | }, 1029 | "notification-url": "https://packagist.org/downloads/", 1030 | "license": [ 1031 | "BSD-3-Clause" 1032 | ], 1033 | "authors": [ 1034 | { 1035 | "name": "Sebastian Bergmann", 1036 | "email": "sebastian@phpunit.de" 1037 | }, 1038 | { 1039 | "name": "Kore Nordmann", 1040 | "email": "mail@kore-nordmann.de" 1041 | } 1042 | ], 1043 | "description": "Diff implementation", 1044 | "homepage": "https://github.com/sebastianbergmann/diff", 1045 | "keywords": [ 1046 | "diff", 1047 | "udiff", 1048 | "unidiff", 1049 | "unified diff" 1050 | ], 1051 | "support": { 1052 | "issues": "https://github.com/sebastianbergmann/diff/issues", 1053 | "source": "https://github.com/sebastianbergmann/diff/tree/3.0.3" 1054 | }, 1055 | "funding": [ 1056 | { 1057 | "url": "https://github.com/sebastianbergmann", 1058 | "type": "github" 1059 | } 1060 | ], 1061 | "time": "2020-11-30T07:59:04+00:00" 1062 | }, 1063 | { 1064 | "name": "sebastian/environment", 1065 | "version": "4.2.4", 1066 | "source": { 1067 | "type": "git", 1068 | "url": "https://github.com/sebastianbergmann/environment.git", 1069 | "reference": "d47bbbad83711771f167c72d4e3f25f7fcc1f8b0" 1070 | }, 1071 | "dist": { 1072 | "type": "zip", 1073 | "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/d47bbbad83711771f167c72d4e3f25f7fcc1f8b0", 1074 | "reference": "d47bbbad83711771f167c72d4e3f25f7fcc1f8b0", 1075 | "shasum": "" 1076 | }, 1077 | "require": { 1078 | "php": ">=7.1" 1079 | }, 1080 | "require-dev": { 1081 | "phpunit/phpunit": "^7.5" 1082 | }, 1083 | "suggest": { 1084 | "ext-posix": "*" 1085 | }, 1086 | "type": "library", 1087 | "extra": { 1088 | "branch-alias": { 1089 | "dev-master": "4.2-dev" 1090 | } 1091 | }, 1092 | "autoload": { 1093 | "classmap": [ 1094 | "src/" 1095 | ] 1096 | }, 1097 | "notification-url": "https://packagist.org/downloads/", 1098 | "license": [ 1099 | "BSD-3-Clause" 1100 | ], 1101 | "authors": [ 1102 | { 1103 | "name": "Sebastian Bergmann", 1104 | "email": "sebastian@phpunit.de" 1105 | } 1106 | ], 1107 | "description": "Provides functionality to handle HHVM/PHP environments", 1108 | "homepage": "http://www.github.com/sebastianbergmann/environment", 1109 | "keywords": [ 1110 | "Xdebug", 1111 | "environment", 1112 | "hhvm" 1113 | ], 1114 | "support": { 1115 | "issues": "https://github.com/sebastianbergmann/environment/issues", 1116 | "source": "https://github.com/sebastianbergmann/environment/tree/4.2.4" 1117 | }, 1118 | "funding": [ 1119 | { 1120 | "url": "https://github.com/sebastianbergmann", 1121 | "type": "github" 1122 | } 1123 | ], 1124 | "time": "2020-11-30T07:53:42+00:00" 1125 | }, 1126 | { 1127 | "name": "sebastian/exporter", 1128 | "version": "3.1.4", 1129 | "source": { 1130 | "type": "git", 1131 | "url": "https://github.com/sebastianbergmann/exporter.git", 1132 | "reference": "0c32ea2e40dbf59de29f3b49bf375176ce7dd8db" 1133 | }, 1134 | "dist": { 1135 | "type": "zip", 1136 | "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/0c32ea2e40dbf59de29f3b49bf375176ce7dd8db", 1137 | "reference": "0c32ea2e40dbf59de29f3b49bf375176ce7dd8db", 1138 | "shasum": "" 1139 | }, 1140 | "require": { 1141 | "php": ">=7.0", 1142 | "sebastian/recursion-context": "^3.0" 1143 | }, 1144 | "require-dev": { 1145 | "ext-mbstring": "*", 1146 | "phpunit/phpunit": "^8.5" 1147 | }, 1148 | "type": "library", 1149 | "extra": { 1150 | "branch-alias": { 1151 | "dev-master": "3.1.x-dev" 1152 | } 1153 | }, 1154 | "autoload": { 1155 | "classmap": [ 1156 | "src/" 1157 | ] 1158 | }, 1159 | "notification-url": "https://packagist.org/downloads/", 1160 | "license": [ 1161 | "BSD-3-Clause" 1162 | ], 1163 | "authors": [ 1164 | { 1165 | "name": "Sebastian Bergmann", 1166 | "email": "sebastian@phpunit.de" 1167 | }, 1168 | { 1169 | "name": "Jeff Welch", 1170 | "email": "whatthejeff@gmail.com" 1171 | }, 1172 | { 1173 | "name": "Volker Dusch", 1174 | "email": "github@wallbash.com" 1175 | }, 1176 | { 1177 | "name": "Adam Harvey", 1178 | "email": "aharvey@php.net" 1179 | }, 1180 | { 1181 | "name": "Bernhard Schussek", 1182 | "email": "bschussek@gmail.com" 1183 | } 1184 | ], 1185 | "description": "Provides the functionality to export PHP variables for visualization", 1186 | "homepage": "http://www.github.com/sebastianbergmann/exporter", 1187 | "keywords": [ 1188 | "export", 1189 | "exporter" 1190 | ], 1191 | "support": { 1192 | "issues": "https://github.com/sebastianbergmann/exporter/issues", 1193 | "source": "https://github.com/sebastianbergmann/exporter/tree/3.1.4" 1194 | }, 1195 | "funding": [ 1196 | { 1197 | "url": "https://github.com/sebastianbergmann", 1198 | "type": "github" 1199 | } 1200 | ], 1201 | "time": "2021-11-11T13:51:24+00:00" 1202 | }, 1203 | { 1204 | "name": "sebastian/global-state", 1205 | "version": "3.0.2", 1206 | "source": { 1207 | "type": "git", 1208 | "url": "https://github.com/sebastianbergmann/global-state.git", 1209 | "reference": "de036ec91d55d2a9e0db2ba975b512cdb1c23921" 1210 | }, 1211 | "dist": { 1212 | "type": "zip", 1213 | "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/de036ec91d55d2a9e0db2ba975b512cdb1c23921", 1214 | "reference": "de036ec91d55d2a9e0db2ba975b512cdb1c23921", 1215 | "shasum": "" 1216 | }, 1217 | "require": { 1218 | "php": ">=7.2", 1219 | "sebastian/object-reflector": "^1.1.1", 1220 | "sebastian/recursion-context": "^3.0" 1221 | }, 1222 | "require-dev": { 1223 | "ext-dom": "*", 1224 | "phpunit/phpunit": "^8.0" 1225 | }, 1226 | "suggest": { 1227 | "ext-uopz": "*" 1228 | }, 1229 | "type": "library", 1230 | "extra": { 1231 | "branch-alias": { 1232 | "dev-master": "3.0-dev" 1233 | } 1234 | }, 1235 | "autoload": { 1236 | "classmap": [ 1237 | "src/" 1238 | ] 1239 | }, 1240 | "notification-url": "https://packagist.org/downloads/", 1241 | "license": [ 1242 | "BSD-3-Clause" 1243 | ], 1244 | "authors": [ 1245 | { 1246 | "name": "Sebastian Bergmann", 1247 | "email": "sebastian@phpunit.de" 1248 | } 1249 | ], 1250 | "description": "Snapshotting of global state", 1251 | "homepage": "http://www.github.com/sebastianbergmann/global-state", 1252 | "keywords": [ 1253 | "global state" 1254 | ], 1255 | "support": { 1256 | "issues": "https://github.com/sebastianbergmann/global-state/issues", 1257 | "source": "https://github.com/sebastianbergmann/global-state/tree/3.0.2" 1258 | }, 1259 | "funding": [ 1260 | { 1261 | "url": "https://github.com/sebastianbergmann", 1262 | "type": "github" 1263 | } 1264 | ], 1265 | "time": "2022-02-10T06:55:38+00:00" 1266 | }, 1267 | { 1268 | "name": "sebastian/object-enumerator", 1269 | "version": "3.0.4", 1270 | "source": { 1271 | "type": "git", 1272 | "url": "https://github.com/sebastianbergmann/object-enumerator.git", 1273 | "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2" 1274 | }, 1275 | "dist": { 1276 | "type": "zip", 1277 | "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2", 1278 | "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2", 1279 | "shasum": "" 1280 | }, 1281 | "require": { 1282 | "php": ">=7.0", 1283 | "sebastian/object-reflector": "^1.1.1", 1284 | "sebastian/recursion-context": "^3.0" 1285 | }, 1286 | "require-dev": { 1287 | "phpunit/phpunit": "^6.0" 1288 | }, 1289 | "type": "library", 1290 | "extra": { 1291 | "branch-alias": { 1292 | "dev-master": "3.0.x-dev" 1293 | } 1294 | }, 1295 | "autoload": { 1296 | "classmap": [ 1297 | "src/" 1298 | ] 1299 | }, 1300 | "notification-url": "https://packagist.org/downloads/", 1301 | "license": [ 1302 | "BSD-3-Clause" 1303 | ], 1304 | "authors": [ 1305 | { 1306 | "name": "Sebastian Bergmann", 1307 | "email": "sebastian@phpunit.de" 1308 | } 1309 | ], 1310 | "description": "Traverses array structures and object graphs to enumerate all referenced objects", 1311 | "homepage": "https://github.com/sebastianbergmann/object-enumerator/", 1312 | "support": { 1313 | "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", 1314 | "source": "https://github.com/sebastianbergmann/object-enumerator/tree/3.0.4" 1315 | }, 1316 | "funding": [ 1317 | { 1318 | "url": "https://github.com/sebastianbergmann", 1319 | "type": "github" 1320 | } 1321 | ], 1322 | "time": "2020-11-30T07:40:27+00:00" 1323 | }, 1324 | { 1325 | "name": "sebastian/object-reflector", 1326 | "version": "1.1.2", 1327 | "source": { 1328 | "type": "git", 1329 | "url": "https://github.com/sebastianbergmann/object-reflector.git", 1330 | "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d" 1331 | }, 1332 | "dist": { 1333 | "type": "zip", 1334 | "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/9b8772b9cbd456ab45d4a598d2dd1a1bced6363d", 1335 | "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d", 1336 | "shasum": "" 1337 | }, 1338 | "require": { 1339 | "php": ">=7.0" 1340 | }, 1341 | "require-dev": { 1342 | "phpunit/phpunit": "^6.0" 1343 | }, 1344 | "type": "library", 1345 | "extra": { 1346 | "branch-alias": { 1347 | "dev-master": "1.1-dev" 1348 | } 1349 | }, 1350 | "autoload": { 1351 | "classmap": [ 1352 | "src/" 1353 | ] 1354 | }, 1355 | "notification-url": "https://packagist.org/downloads/", 1356 | "license": [ 1357 | "BSD-3-Clause" 1358 | ], 1359 | "authors": [ 1360 | { 1361 | "name": "Sebastian Bergmann", 1362 | "email": "sebastian@phpunit.de" 1363 | } 1364 | ], 1365 | "description": "Allows reflection of object attributes, including inherited and non-public ones", 1366 | "homepage": "https://github.com/sebastianbergmann/object-reflector/", 1367 | "support": { 1368 | "issues": "https://github.com/sebastianbergmann/object-reflector/issues", 1369 | "source": "https://github.com/sebastianbergmann/object-reflector/tree/1.1.2" 1370 | }, 1371 | "funding": [ 1372 | { 1373 | "url": "https://github.com/sebastianbergmann", 1374 | "type": "github" 1375 | } 1376 | ], 1377 | "time": "2020-11-30T07:37:18+00:00" 1378 | }, 1379 | { 1380 | "name": "sebastian/recursion-context", 1381 | "version": "3.0.1", 1382 | "source": { 1383 | "type": "git", 1384 | "url": "https://github.com/sebastianbergmann/recursion-context.git", 1385 | "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb" 1386 | }, 1387 | "dist": { 1388 | "type": "zip", 1389 | "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/367dcba38d6e1977be014dc4b22f47a484dac7fb", 1390 | "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb", 1391 | "shasum": "" 1392 | }, 1393 | "require": { 1394 | "php": ">=7.0" 1395 | }, 1396 | "require-dev": { 1397 | "phpunit/phpunit": "^6.0" 1398 | }, 1399 | "type": "library", 1400 | "extra": { 1401 | "branch-alias": { 1402 | "dev-master": "3.0.x-dev" 1403 | } 1404 | }, 1405 | "autoload": { 1406 | "classmap": [ 1407 | "src/" 1408 | ] 1409 | }, 1410 | "notification-url": "https://packagist.org/downloads/", 1411 | "license": [ 1412 | "BSD-3-Clause" 1413 | ], 1414 | "authors": [ 1415 | { 1416 | "name": "Sebastian Bergmann", 1417 | "email": "sebastian@phpunit.de" 1418 | }, 1419 | { 1420 | "name": "Jeff Welch", 1421 | "email": "whatthejeff@gmail.com" 1422 | }, 1423 | { 1424 | "name": "Adam Harvey", 1425 | "email": "aharvey@php.net" 1426 | } 1427 | ], 1428 | "description": "Provides functionality to recursively process PHP variables", 1429 | "homepage": "http://www.github.com/sebastianbergmann/recursion-context", 1430 | "support": { 1431 | "issues": "https://github.com/sebastianbergmann/recursion-context/issues", 1432 | "source": "https://github.com/sebastianbergmann/recursion-context/tree/3.0.1" 1433 | }, 1434 | "funding": [ 1435 | { 1436 | "url": "https://github.com/sebastianbergmann", 1437 | "type": "github" 1438 | } 1439 | ], 1440 | "time": "2020-11-30T07:34:24+00:00" 1441 | }, 1442 | { 1443 | "name": "sebastian/resource-operations", 1444 | "version": "2.0.2", 1445 | "source": { 1446 | "type": "git", 1447 | "url": "https://github.com/sebastianbergmann/resource-operations.git", 1448 | "reference": "31d35ca87926450c44eae7e2611d45a7a65ea8b3" 1449 | }, 1450 | "dist": { 1451 | "type": "zip", 1452 | "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/31d35ca87926450c44eae7e2611d45a7a65ea8b3", 1453 | "reference": "31d35ca87926450c44eae7e2611d45a7a65ea8b3", 1454 | "shasum": "" 1455 | }, 1456 | "require": { 1457 | "php": ">=7.1" 1458 | }, 1459 | "type": "library", 1460 | "extra": { 1461 | "branch-alias": { 1462 | "dev-master": "2.0-dev" 1463 | } 1464 | }, 1465 | "autoload": { 1466 | "classmap": [ 1467 | "src/" 1468 | ] 1469 | }, 1470 | "notification-url": "https://packagist.org/downloads/", 1471 | "license": [ 1472 | "BSD-3-Clause" 1473 | ], 1474 | "authors": [ 1475 | { 1476 | "name": "Sebastian Bergmann", 1477 | "email": "sebastian@phpunit.de" 1478 | } 1479 | ], 1480 | "description": "Provides a list of PHP built-in functions that operate on resources", 1481 | "homepage": "https://www.github.com/sebastianbergmann/resource-operations", 1482 | "support": { 1483 | "issues": "https://github.com/sebastianbergmann/resource-operations/issues", 1484 | "source": "https://github.com/sebastianbergmann/resource-operations/tree/2.0.2" 1485 | }, 1486 | "funding": [ 1487 | { 1488 | "url": "https://github.com/sebastianbergmann", 1489 | "type": "github" 1490 | } 1491 | ], 1492 | "time": "2020-11-30T07:30:19+00:00" 1493 | }, 1494 | { 1495 | "name": "sebastian/type", 1496 | "version": "1.1.4", 1497 | "source": { 1498 | "type": "git", 1499 | "url": "https://github.com/sebastianbergmann/type.git", 1500 | "reference": "0150cfbc4495ed2df3872fb31b26781e4e077eb4" 1501 | }, 1502 | "dist": { 1503 | "type": "zip", 1504 | "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/0150cfbc4495ed2df3872fb31b26781e4e077eb4", 1505 | "reference": "0150cfbc4495ed2df3872fb31b26781e4e077eb4", 1506 | "shasum": "" 1507 | }, 1508 | "require": { 1509 | "php": ">=7.2" 1510 | }, 1511 | "require-dev": { 1512 | "phpunit/phpunit": "^8.2" 1513 | }, 1514 | "type": "library", 1515 | "extra": { 1516 | "branch-alias": { 1517 | "dev-master": "1.1-dev" 1518 | } 1519 | }, 1520 | "autoload": { 1521 | "classmap": [ 1522 | "src/" 1523 | ] 1524 | }, 1525 | "notification-url": "https://packagist.org/downloads/", 1526 | "license": [ 1527 | "BSD-3-Clause" 1528 | ], 1529 | "authors": [ 1530 | { 1531 | "name": "Sebastian Bergmann", 1532 | "email": "sebastian@phpunit.de", 1533 | "role": "lead" 1534 | } 1535 | ], 1536 | "description": "Collection of value objects that represent the types of the PHP type system", 1537 | "homepage": "https://github.com/sebastianbergmann/type", 1538 | "support": { 1539 | "issues": "https://github.com/sebastianbergmann/type/issues", 1540 | "source": "https://github.com/sebastianbergmann/type/tree/1.1.4" 1541 | }, 1542 | "funding": [ 1543 | { 1544 | "url": "https://github.com/sebastianbergmann", 1545 | "type": "github" 1546 | } 1547 | ], 1548 | "time": "2020-11-30T07:25:11+00:00" 1549 | }, 1550 | { 1551 | "name": "sebastian/version", 1552 | "version": "2.0.1", 1553 | "source": { 1554 | "type": "git", 1555 | "url": "https://github.com/sebastianbergmann/version.git", 1556 | "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" 1557 | }, 1558 | "dist": { 1559 | "type": "zip", 1560 | "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", 1561 | "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", 1562 | "shasum": "" 1563 | }, 1564 | "require": { 1565 | "php": ">=5.6" 1566 | }, 1567 | "type": "library", 1568 | "extra": { 1569 | "branch-alias": { 1570 | "dev-master": "2.0.x-dev" 1571 | } 1572 | }, 1573 | "autoload": { 1574 | "classmap": [ 1575 | "src/" 1576 | ] 1577 | }, 1578 | "notification-url": "https://packagist.org/downloads/", 1579 | "license": [ 1580 | "BSD-3-Clause" 1581 | ], 1582 | "authors": [ 1583 | { 1584 | "name": "Sebastian Bergmann", 1585 | "email": "sebastian@phpunit.de", 1586 | "role": "lead" 1587 | } 1588 | ], 1589 | "description": "Library that helps with managing the version number of Git-hosted PHP projects", 1590 | "homepage": "https://github.com/sebastianbergmann/version", 1591 | "support": { 1592 | "issues": "https://github.com/sebastianbergmann/version/issues", 1593 | "source": "https://github.com/sebastianbergmann/version/tree/master" 1594 | }, 1595 | "time": "2016-10-03T07:35:21+00:00" 1596 | }, 1597 | { 1598 | "name": "theseer/tokenizer", 1599 | "version": "1.2.1", 1600 | "source": { 1601 | "type": "git", 1602 | "url": "https://github.com/theseer/tokenizer.git", 1603 | "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" 1604 | }, 1605 | "dist": { 1606 | "type": "zip", 1607 | "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", 1608 | "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", 1609 | "shasum": "" 1610 | }, 1611 | "require": { 1612 | "ext-dom": "*", 1613 | "ext-tokenizer": "*", 1614 | "ext-xmlwriter": "*", 1615 | "php": "^7.2 || ^8.0" 1616 | }, 1617 | "type": "library", 1618 | "autoload": { 1619 | "classmap": [ 1620 | "src/" 1621 | ] 1622 | }, 1623 | "notification-url": "https://packagist.org/downloads/", 1624 | "license": [ 1625 | "BSD-3-Clause" 1626 | ], 1627 | "authors": [ 1628 | { 1629 | "name": "Arne Blankerts", 1630 | "email": "arne@blankerts.de", 1631 | "role": "Developer" 1632 | } 1633 | ], 1634 | "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", 1635 | "support": { 1636 | "issues": "https://github.com/theseer/tokenizer/issues", 1637 | "source": "https://github.com/theseer/tokenizer/tree/1.2.1" 1638 | }, 1639 | "funding": [ 1640 | { 1641 | "url": "https://github.com/theseer", 1642 | "type": "github" 1643 | } 1644 | ], 1645 | "time": "2021-07-28T10:34:58+00:00" 1646 | }, 1647 | { 1648 | "name": "webmozart/assert", 1649 | "version": "1.11.0", 1650 | "source": { 1651 | "type": "git", 1652 | "url": "https://github.com/webmozarts/assert.git", 1653 | "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" 1654 | }, 1655 | "dist": { 1656 | "type": "zip", 1657 | "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", 1658 | "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", 1659 | "shasum": "" 1660 | }, 1661 | "require": { 1662 | "ext-ctype": "*", 1663 | "php": "^7.2 || ^8.0" 1664 | }, 1665 | "conflict": { 1666 | "phpstan/phpstan": "<0.12.20", 1667 | "vimeo/psalm": "<4.6.1 || 4.6.2" 1668 | }, 1669 | "require-dev": { 1670 | "phpunit/phpunit": "^8.5.13" 1671 | }, 1672 | "type": "library", 1673 | "extra": { 1674 | "branch-alias": { 1675 | "dev-master": "1.10-dev" 1676 | } 1677 | }, 1678 | "autoload": { 1679 | "psr-4": { 1680 | "Webmozart\\Assert\\": "src/" 1681 | } 1682 | }, 1683 | "notification-url": "https://packagist.org/downloads/", 1684 | "license": [ 1685 | "MIT" 1686 | ], 1687 | "authors": [ 1688 | { 1689 | "name": "Bernhard Schussek", 1690 | "email": "bschussek@gmail.com" 1691 | } 1692 | ], 1693 | "description": "Assertions to validate method input/output with nice error messages.", 1694 | "keywords": [ 1695 | "assert", 1696 | "check", 1697 | "validate" 1698 | ], 1699 | "support": { 1700 | "issues": "https://github.com/webmozarts/assert/issues", 1701 | "source": "https://github.com/webmozarts/assert/tree/1.11.0" 1702 | }, 1703 | "time": "2022-06-03T18:03:27+00:00" 1704 | } 1705 | ], 1706 | "aliases": [], 1707 | "minimum-stability": "stable", 1708 | "stability-flags": [], 1709 | "prefer-stable": false, 1710 | "prefer-lowest": false, 1711 | "platform": { 1712 | "php": ">=7.2" 1713 | }, 1714 | "platform-dev": [], 1715 | "plugin-api-version": "2.3.0" 1716 | } 1717 | --------------------------------------------------------------------------------