├── .gitignore ├── images └── preview.png ├── fonts └── noto-sans-tc.ttf ├── .gitattributes ├── tests ├── TestCase.php ├── Feature │ └── ImageTest.php ├── Unit │ ├── WrapperTest.php │ └── ConverterTest.php └── Pest.php ├── .editorconfig ├── examples ├── output.php └── save.php ├── phpunit.xml ├── composer.json ├── README.md ├── src ├── Color │ └── Converter.php └── Image │ ├── Writer.php │ └── Builder.php └── composer.lock /.gitignore: -------------------------------------------------------------------------------- 1 | vendor 2 | .idea 3 | .vscode 4 | -------------------------------------------------------------------------------- /images/preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yilanboy/preview/main/images/preview.png -------------------------------------------------------------------------------- /fonts/noto-sans-tc.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yilanboy/preview/main/fonts/noto-sans-tc.ttf -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto eol=lf 2 | 3 | *.php diff=php 4 | 5 | /.github export-ignore 6 | CHANGELOG.md export-ignore 7 | -------------------------------------------------------------------------------- /tests/TestCase.php: -------------------------------------------------------------------------------- 1 | size(width: 1200, height: 600) 9 | ->backgroundColor('#777bb3') 10 | ->header(text: 'Preview', color: 'white', fontSize: 75) 11 | ->title(text: 'A simple PHP package to create preview image', color: 'white', fontSize: 50) 12 | ->output(); 13 | -------------------------------------------------------------------------------- /examples/save.php: -------------------------------------------------------------------------------- 1 | size(width: 1200, height: 600) 9 | ->backgroundColor('#777bb3') 10 | ->header(text: 'Preview', color: 'white', fontSize: 75) 11 | ->title(text: 'A simple PHP package to create preview image', color: 'white', fontSize: 50) 12 | ->save('preview.png'); 13 | -------------------------------------------------------------------------------- /tests/Feature/ImageTest.php: -------------------------------------------------------------------------------- 1 | size(width: 1200, height: 600) 10 | ->backgroundColor('#10b981') 11 | ->title(text: 'A true master is an eternal student', color: 'white') 12 | ->save($filename); 13 | 14 | expect(file_exists($filename))->toBeTrue(); 15 | unlink($filename); 16 | }); 17 | -------------------------------------------------------------------------------- /phpunit.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | ./tests 10 | 11 | 12 | 13 | 14 | ./src 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /tests/Unit/WrapperTest.php: -------------------------------------------------------------------------------- 1 | splitStringToArray('Hello World!')) 9 | ->toBe(['Hello', ' ', 'World', '!']); 10 | }); 11 | 12 | it('can wrap the chinese sentence into character', function () { 13 | $writer = new Writer(); 14 | 15 | expect($writer->splitStringToArray('你好世界!')) 16 | ->toBe(['你', '好', '世', '界', '!']); 17 | }); 18 | 19 | it('can wrap sentence that mix english and chinese', function () { 20 | $writer = new Writer(); 21 | 22 | expect($writer->splitStringToArray('Hello 世界!')) 23 | ->toBe(['Hello', ' ', '世', '界', '!']); 24 | }); 25 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "yilanboy/preview", 3 | "description": "Generate the preview image", 4 | "type": "library", 5 | "license": "MIT", 6 | "authors": [ 7 | { 8 | "name": "allenjiang", 9 | "email": "allenjianggo@yahoo.com" 10 | } 11 | ], 12 | "scripts": { 13 | "run-tests": "./vendor/bin/pest" 14 | }, 15 | "keywords": [ 16 | "preview", 17 | "image" 18 | ], 19 | "require": { 20 | "php": "^8.2", 21 | "ext-gd": "*" 22 | }, 23 | "require-dev": { 24 | "pestphp/pest": "^3.0.0" 25 | }, 26 | "config": { 27 | "allow-plugins": { 28 | "pestphp/pest-plugin": true 29 | } 30 | }, 31 | "autoload": { 32 | "psr-4": { 33 | "Yilanboy\\Preview\\": "src/" 34 | } 35 | }, 36 | "minimum-stability": "dev", 37 | "prefer-stable": true 38 | } 39 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Preview 2 | 3 | A simple package to generate preview image. 4 | 5 | ## Installation 6 | 7 | Install the package with composer. 8 | 9 | ```bash 10 | composer require yilanboy/preview 11 | ``` 12 | 13 | Then create an image builder. 14 | 15 | ```php 16 | use Yilanboy\Preview\Image\Builder; 17 | 18 | (new Builder()) 19 | ->size(width: 1200, height: 600) 20 | ->backgroundColor('#777bb3') 21 | ->header(text: 'Preview', color: 'white', fontSize: 75) 22 | ->title(text: 'A simple PHP package to create preview image', color: 'white', fontSize: 50) 23 | ->output(); 24 | ``` 25 | 26 | This code will display the following image on the web page. 27 | 28 | ![preview](images/preview.png) 29 | 30 | You can modify the text on the preview image. 31 | 32 | > Currently, the text only support english and chinese. 33 | 34 | ## Start a Local Server to Show the Image 35 | 36 | There is a `output.php` file in `examples` folder, you can simply start a local server to see the image in browser. 37 | 38 | ```bash 39 | php -S localhost:8000 examples/output.php 40 | ``` 41 | 42 | Then open your browser and visit [localhost:8000](http://localhost:8000). 43 | 44 | ## Run Tests 45 | 46 | ```bash 47 | composer run-tests 48 | ``` 49 | -------------------------------------------------------------------------------- /src/Color/Converter.php: -------------------------------------------------------------------------------- 1 | isHexColor($hex)) { 25 | throw new InvalidArgumentException('Invalid hex color'); 26 | } 27 | 28 | return sscanf($hex, '#%02x%02x%02x'); 29 | } 30 | 31 | /** 32 | * Convert color name to hex code 33 | */ 34 | public static function nameToHex(string $word): string 35 | { 36 | return match (strtolower($word)) { 37 | 'red' => '#ff0000', 38 | 'green' => '#00ff00', 39 | 'blue' => '#0000ff', 40 | 'yellow' => '#ffff00', 41 | 'orange' => '#ffa500', 42 | 'white' => '#ffffff', 43 | 'black' => '#000000', 44 | default => throw new InvalidArgumentException('Invalid color name'), 45 | }; 46 | } 47 | 48 | } 49 | -------------------------------------------------------------------------------- /tests/Unit/ConverterTest.php: -------------------------------------------------------------------------------- 1 | hexToRgb('#ffffff'))->toBe([255, 255, 255]) 9 | ->and($converter->hexToRgb('#000000'))->toBe([0, 0, 0]); 10 | }); 11 | 12 | it('will throw invalid argument exception, if hex format is not correct', function () { 13 | $converter = new Converter(); 14 | 15 | $converter->hexToRgb('invalid'); 16 | })->throws(InvalidArgumentException::class, 'Invalid hex color'); 17 | 18 | it('can convert color name to hex', function () { 19 | $converter = new Converter(); 20 | 21 | expect($converter->nameToHex('white'))->toBe('#ffffff') 22 | ->and($converter->nameToHex('black'))->toBe('#000000'); 23 | }); 24 | 25 | it('will throw invalid argument exception, if color name is not correct', function () { 26 | $converter = new Converter(); 27 | 28 | $converter->nameToHex('invalid'); 29 | })->throws(InvalidArgumentException::class, 'Invalid color name'); 30 | 31 | it('can check string is correct hex format', function () { 32 | $converter = new Converter(); 33 | 34 | expect($converter->isHexColor('#ffffff'))->toBeOne() 35 | ->and($converter->isHexColor('#000000'))->toBeOne() 36 | ->and($converter->isHexColor('ffffff'))->toBe(0) 37 | ->and($converter->isHexColor('000000'))->toBe(0); 38 | }); 39 | -------------------------------------------------------------------------------- /tests/Pest.php: -------------------------------------------------------------------------------- 1 | extend(Tests\TestCase::class)->in('Feature'); 15 | 16 | /* 17 | |-------------------------------------------------------------------------- 18 | | Expectations 19 | |-------------------------------------------------------------------------- 20 | | 21 | | When you're writing tests, you often need to check that values meet certain conditions. The 22 | | "expect()" function gives you access to a set of "expectations" methods that you can use 23 | | to assert different things. Of course, you may extend the Expectation API at any time. 24 | | 25 | */ 26 | 27 | expect()->extend('toBeOne', function () { 28 | return $this->toBe(1); 29 | }); 30 | 31 | /* 32 | |-------------------------------------------------------------------------- 33 | | Functions 34 | |-------------------------------------------------------------------------- 35 | | 36 | | While Pest is very powerful out-of-the-box, you may have some testing code specific to your 37 | | project that you don't want to repeat in every file. Here you can also expose helpers as 38 | | global functions to help you to reduce the number of lines of code in your test files. 39 | | 40 | */ 41 | 42 | function something() 43 | { 44 | // .. 45 | } 46 | -------------------------------------------------------------------------------- /src/Image/Writer.php: -------------------------------------------------------------------------------- 1 | 15 | */ 16 | public static function splitStringToArray($input): array 17 | { 18 | preg_match_all('/\p{Han}|[a-zA-Z0-9]+|\s|[^\p{Han}\s\w]/u', $input, $matches); 19 | 20 | return $matches[0]; 21 | } 22 | 23 | /** 24 | * Calculate the width of the text image. 25 | */ 26 | public static function calculateTextImageWidth( 27 | string $text, 28 | int $fontSize, 29 | string $fontPath 30 | ): int { 31 | $bbox = imagettfbbox( 32 | size: $fontSize, 33 | angle: 0, 34 | font_filename: $fontPath, 35 | string: $text 36 | ); 37 | 38 | return $bbox[2] - $bbox[0]; 39 | } 40 | 41 | /** 42 | * Wrap the text to multiple lines based on the maximum width. 43 | */ 44 | public function wrapTextImage( 45 | string $text, 46 | int $fontSize, 47 | string $fontPath, 48 | int $maxWidth 49 | ): string { 50 | $wrapText = ''; 51 | $words = $this->splitStringToArray($text); 52 | $length = count($words); 53 | 54 | for ($i = 0; $i < $length; $i++) { 55 | $currentWord = $words[$i]; 56 | $proposedText = $wrapText.$currentWord; 57 | 58 | if ($this->calculateTextImageWidth($proposedText, $fontSize, $fontPath) < $maxWidth) { 59 | $wrapText .= $currentWord; 60 | continue; 61 | } 62 | 63 | $wrapText = trim($wrapText); 64 | $wrapText .= PHP_EOL.$currentWord; 65 | } 66 | 67 | return $wrapText; 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /src/Image/Builder.php: -------------------------------------------------------------------------------- 1 | '', 22 | 'font_path' => self::DEFAULT_FONT_PATH, 23 | 'font_size' => 50, 24 | 'color' => '#030712', 25 | ]; 26 | 27 | public array $title = [ 28 | 'text' => '', 29 | 'font_path' => self::DEFAULT_FONT_PATH, 30 | 'font_size' => 50, 31 | 'color' => '#030712', 32 | ]; 33 | 34 | public string $backgroundColor = '#f9fafb'; 35 | 36 | public false|GdImage $image; 37 | 38 | public function __construct( 39 | public Converter $converter = new Converter(), 40 | public Writer $writer = new Writer() 41 | ) { 42 | } 43 | 44 | public function size(int $width, int $height): Builder 45 | { 46 | $this->width = $width; 47 | $this->height = $height; 48 | 49 | return $this; 50 | } 51 | 52 | public function backgroundColor(string $color): Builder 53 | { 54 | if ($this->converter->isHexColor($color)) { 55 | $this->backgroundColor = $color; 56 | } else { 57 | $this->backgroundColor = $this->converter->nameToHex($color); 58 | } 59 | 60 | return $this; 61 | } 62 | 63 | public function title( 64 | string $text, 65 | ?string $color = null, 66 | ?int $fontSize = null, 67 | ?string $fontPath = null, 68 | ): Builder { 69 | $this->title['text'] = $text; 70 | 71 | if (! is_null($color)) { 72 | if ($color[0] !== '#') { 73 | $this->title['color'] = $this->converter->nameToHex($color); 74 | } else { 75 | $this->title['color'] = $color; 76 | } 77 | } 78 | 79 | if (! is_null($fontSize)) { 80 | $this->title['font_size'] = $fontSize; 81 | } 82 | 83 | if (! is_null($fontPath)) { 84 | $this->title['font_path'] = $fontPath; 85 | } 86 | 87 | return $this; 88 | } 89 | 90 | public function header( 91 | string $text, 92 | ?string $color = null, 93 | ?int $fontSize = null, 94 | ?string $fontPath = null, 95 | ): Builder { 96 | $this->header['text'] = $text; 97 | 98 | if (! is_null($color)) { 99 | if ($color[0] !== '#') { 100 | $this->header['color'] = $this->converter->nameToHex($color); 101 | } else { 102 | $this->header['color'] = $color; 103 | } 104 | } 105 | 106 | if (! is_null($fontSize)) { 107 | $this->header['font_size'] = $fontSize; 108 | } 109 | 110 | if (! is_null($fontPath)) { 111 | $this->header['font_path'] = $fontPath; 112 | } 113 | 114 | return $this; 115 | } 116 | 117 | private function configureCanvas(): void 118 | { 119 | $this->image = imagecreatetruecolor($this->width, $this->height); 120 | $backgroundColor = imagecolorallocate( 121 | $this->image, ...$this->converter->hexToRgb($this->backgroundColor)); 122 | imagefill($this->image, 0, 0, $backgroundColor); 123 | } 124 | 125 | private function configureHeader(): void 126 | { 127 | $wrapHeader = $this->writer->wrapTextImage( 128 | text: $this->header['text'], 129 | fontSize: $this->header['font_size'], 130 | fontPath: $this->header['font_path'], 131 | // The maximum width should subtract the width of the border on both sides. 132 | maxWidth: intval($this->width - $this->width * self::MARGIN_RATIO * 2) 133 | ); 134 | 135 | $headerBbox = imagettfbbox( 136 | $this->header['font_size'], 0, $this->header['font_path'], $wrapHeader); 137 | 138 | $headerHeight = $headerBbox[1] - $headerBbox[5]; 139 | 140 | $x = intval($this->width * self::MARGIN_RATIO); 141 | $y = intval(imagesy($this->image) / 3 - $headerHeight / 2); 142 | 143 | $headerColor = imagecolorallocate( 144 | $this->image, ...$this->converter->hexToRgb($this->header['color'])); 145 | 146 | imagettftext( 147 | image: $this->image, 148 | size: $this->header['font_size'], 149 | angle: 0, 150 | x: $x, 151 | y: $y, 152 | color: $headerColor, 153 | font_filename: $this->header['font_path'], 154 | text: $wrapHeader 155 | ); 156 | } 157 | 158 | private function configureTitle(): void 159 | { 160 | $wrapTitle = $this->writer->wrapTextImage( 161 | text: $this->title['text'], 162 | fontSize: $this->title['font_size'], 163 | fontPath: $this->title['font_path'], 164 | maxWidth: intval($this->width - $this->width * self::MARGIN_RATIO * 2) 165 | ); 166 | 167 | $titleBbox = imagettfbbox( 168 | $this->title['font_size'], 0, $this->title['font_path'], $wrapTitle); 169 | 170 | $titleHeight = $titleBbox[1] - $titleBbox[5]; 171 | 172 | $x = intval($this->width * self::MARGIN_RATIO); 173 | $y = intval((imagesy($this->image) - $titleHeight) / 2 - $titleBbox[5]); 174 | 175 | $titleColor = imagecolorallocate( 176 | $this->image, ...$this->converter->hexToRgb($this->title['color'])); 177 | 178 | imagettftext( 179 | image: $this->image, 180 | size: $this->title['font_size'], 181 | angle: 0, 182 | x: $x, 183 | y: $y, 184 | color: $titleColor, 185 | font_filename: $this->title['font_path'], 186 | text: $wrapTitle 187 | ); 188 | } 189 | 190 | public function output(): void 191 | { 192 | $this->configureCanvas(); 193 | $this->configureHeader(); 194 | $this->configureTitle(); 195 | 196 | header('Content-Type: image/png'); 197 | imagepng($this->image); 198 | imagedestroy($this->image); 199 | } 200 | 201 | public function save(string $path): void 202 | { 203 | $this->configureCanvas(); 204 | $this->configureHeader(); 205 | $this->configureTitle(); 206 | 207 | imagepng($this->image, $path); 208 | imagedestroy($this->image); 209 | } 210 | } 211 | -------------------------------------------------------------------------------- /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": "afd7eec9c6f25ce2cca100a374dd25d3", 8 | "packages": [], 9 | "packages-dev": [ 10 | { 11 | "name": "brianium/paratest", 12 | "version": "v7.6.0", 13 | "source": { 14 | "type": "git", 15 | "url": "https://github.com/paratestphp/paratest.git", 16 | "reference": "68ff89a8de47d086588e391a516d2a5b5fde6254" 17 | }, 18 | "dist": { 19 | "type": "zip", 20 | "url": "https://api.github.com/repos/paratestphp/paratest/zipball/68ff89a8de47d086588e391a516d2a5b5fde6254", 21 | "reference": "68ff89a8de47d086588e391a516d2a5b5fde6254", 22 | "shasum": "" 23 | }, 24 | "require": { 25 | "ext-dom": "*", 26 | "ext-pcre": "*", 27 | "ext-reflection": "*", 28 | "ext-simplexml": "*", 29 | "fidry/cpu-core-counter": "^1.2.0", 30 | "jean85/pretty-package-versions": "^2.0.6", 31 | "php": "~8.2.0 || ~8.3.0 || ~8.4.0", 32 | "phpunit/php-code-coverage": "^11.0.7", 33 | "phpunit/php-file-iterator": "^5.1.0", 34 | "phpunit/php-timer": "^7.0.1", 35 | "phpunit/phpunit": "^11.4.1", 36 | "sebastian/environment": "^7.2.0", 37 | "symfony/console": "^6.4.11 || ^7.1.5", 38 | "symfony/process": "^6.4.8 || ^7.1.5" 39 | }, 40 | "require-dev": { 41 | "doctrine/coding-standard": "^12.0.0", 42 | "ext-pcov": "*", 43 | "ext-posix": "*", 44 | "phpstan/phpstan": "^1.12.6", 45 | "phpstan/phpstan-deprecation-rules": "^1.2.1", 46 | "phpstan/phpstan-phpunit": "^1.4.0", 47 | "phpstan/phpstan-strict-rules": "^1.6.1", 48 | "squizlabs/php_codesniffer": "^3.10.3", 49 | "symfony/filesystem": "^6.4.9 || ^7.1.5" 50 | }, 51 | "bin": [ 52 | "bin/paratest", 53 | "bin/paratest_for_phpstorm" 54 | ], 55 | "type": "library", 56 | "autoload": { 57 | "psr-4": { 58 | "ParaTest\\": [ 59 | "src/" 60 | ] 61 | } 62 | }, 63 | "notification-url": "https://packagist.org/downloads/", 64 | "license": [ 65 | "MIT" 66 | ], 67 | "authors": [ 68 | { 69 | "name": "Brian Scaturro", 70 | "email": "scaturrob@gmail.com", 71 | "role": "Developer" 72 | }, 73 | { 74 | "name": "Filippo Tessarotto", 75 | "email": "zoeslam@gmail.com", 76 | "role": "Developer" 77 | } 78 | ], 79 | "description": "Parallel testing for PHP", 80 | "homepage": "https://github.com/paratestphp/paratest", 81 | "keywords": [ 82 | "concurrent", 83 | "parallel", 84 | "phpunit", 85 | "testing" 86 | ], 87 | "support": { 88 | "issues": "https://github.com/paratestphp/paratest/issues", 89 | "source": "https://github.com/paratestphp/paratest/tree/v7.6.0" 90 | }, 91 | "funding": [ 92 | { 93 | "url": "https://github.com/sponsors/Slamdunk", 94 | "type": "github" 95 | }, 96 | { 97 | "url": "https://paypal.me/filippotessarotto", 98 | "type": "paypal" 99 | } 100 | ], 101 | "time": "2024-10-15T12:38:31+00:00" 102 | }, 103 | { 104 | "name": "doctrine/deprecations", 105 | "version": "1.1.3", 106 | "source": { 107 | "type": "git", 108 | "url": "https://github.com/doctrine/deprecations.git", 109 | "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab" 110 | }, 111 | "dist": { 112 | "type": "zip", 113 | "url": "https://api.github.com/repos/doctrine/deprecations/zipball/dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", 114 | "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", 115 | "shasum": "" 116 | }, 117 | "require": { 118 | "php": "^7.1 || ^8.0" 119 | }, 120 | "require-dev": { 121 | "doctrine/coding-standard": "^9", 122 | "phpstan/phpstan": "1.4.10 || 1.10.15", 123 | "phpstan/phpstan-phpunit": "^1.0", 124 | "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", 125 | "psalm/plugin-phpunit": "0.18.4", 126 | "psr/log": "^1 || ^2 || ^3", 127 | "vimeo/psalm": "4.30.0 || 5.12.0" 128 | }, 129 | "suggest": { 130 | "psr/log": "Allows logging deprecations via PSR-3 logger implementation" 131 | }, 132 | "type": "library", 133 | "autoload": { 134 | "psr-4": { 135 | "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" 136 | } 137 | }, 138 | "notification-url": "https://packagist.org/downloads/", 139 | "license": [ 140 | "MIT" 141 | ], 142 | "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", 143 | "homepage": "https://www.doctrine-project.org/", 144 | "support": { 145 | "issues": "https://github.com/doctrine/deprecations/issues", 146 | "source": "https://github.com/doctrine/deprecations/tree/1.1.3" 147 | }, 148 | "time": "2024-01-30T19:34:25+00:00" 149 | }, 150 | { 151 | "name": "fidry/cpu-core-counter", 152 | "version": "1.2.0", 153 | "source": { 154 | "type": "git", 155 | "url": "https://github.com/theofidry/cpu-core-counter.git", 156 | "reference": "8520451a140d3f46ac33042715115e290cf5785f" 157 | }, 158 | "dist": { 159 | "type": "zip", 160 | "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/8520451a140d3f46ac33042715115e290cf5785f", 161 | "reference": "8520451a140d3f46ac33042715115e290cf5785f", 162 | "shasum": "" 163 | }, 164 | "require": { 165 | "php": "^7.2 || ^8.0" 166 | }, 167 | "require-dev": { 168 | "fidry/makefile": "^0.2.0", 169 | "fidry/php-cs-fixer-config": "^1.1.2", 170 | "phpstan/extension-installer": "^1.2.0", 171 | "phpstan/phpstan": "^1.9.2", 172 | "phpstan/phpstan-deprecation-rules": "^1.0.0", 173 | "phpstan/phpstan-phpunit": "^1.2.2", 174 | "phpstan/phpstan-strict-rules": "^1.4.4", 175 | "phpunit/phpunit": "^8.5.31 || ^9.5.26", 176 | "webmozarts/strict-phpunit": "^7.5" 177 | }, 178 | "type": "library", 179 | "autoload": { 180 | "psr-4": { 181 | "Fidry\\CpuCoreCounter\\": "src/" 182 | } 183 | }, 184 | "notification-url": "https://packagist.org/downloads/", 185 | "license": [ 186 | "MIT" 187 | ], 188 | "authors": [ 189 | { 190 | "name": "Théo FIDRY", 191 | "email": "theo.fidry@gmail.com" 192 | } 193 | ], 194 | "description": "Tiny utility to get the number of CPU cores.", 195 | "keywords": [ 196 | "CPU", 197 | "core" 198 | ], 199 | "support": { 200 | "issues": "https://github.com/theofidry/cpu-core-counter/issues", 201 | "source": "https://github.com/theofidry/cpu-core-counter/tree/1.2.0" 202 | }, 203 | "funding": [ 204 | { 205 | "url": "https://github.com/theofidry", 206 | "type": "github" 207 | } 208 | ], 209 | "time": "2024-08-06T10:04:20+00:00" 210 | }, 211 | { 212 | "name": "filp/whoops", 213 | "version": "2.16.0", 214 | "source": { 215 | "type": "git", 216 | "url": "https://github.com/filp/whoops.git", 217 | "reference": "befcdc0e5dce67252aa6322d82424be928214fa2" 218 | }, 219 | "dist": { 220 | "type": "zip", 221 | "url": "https://api.github.com/repos/filp/whoops/zipball/befcdc0e5dce67252aa6322d82424be928214fa2", 222 | "reference": "befcdc0e5dce67252aa6322d82424be928214fa2", 223 | "shasum": "" 224 | }, 225 | "require": { 226 | "php": "^7.1 || ^8.0", 227 | "psr/log": "^1.0.1 || ^2.0 || ^3.0" 228 | }, 229 | "require-dev": { 230 | "mockery/mockery": "^1.0", 231 | "phpunit/phpunit": "^7.5.20 || ^8.5.8 || ^9.3.3", 232 | "symfony/var-dumper": "^4.0 || ^5.0" 233 | }, 234 | "suggest": { 235 | "symfony/var-dumper": "Pretty print complex values better with var-dumper available", 236 | "whoops/soap": "Formats errors as SOAP responses" 237 | }, 238 | "type": "library", 239 | "extra": { 240 | "branch-alias": { 241 | "dev-master": "2.7-dev" 242 | } 243 | }, 244 | "autoload": { 245 | "psr-4": { 246 | "Whoops\\": "src/Whoops/" 247 | } 248 | }, 249 | "notification-url": "https://packagist.org/downloads/", 250 | "license": [ 251 | "MIT" 252 | ], 253 | "authors": [ 254 | { 255 | "name": "Filipe Dobreira", 256 | "homepage": "https://github.com/filp", 257 | "role": "Developer" 258 | } 259 | ], 260 | "description": "php error handling for cool kids", 261 | "homepage": "https://filp.github.io/whoops/", 262 | "keywords": [ 263 | "error", 264 | "exception", 265 | "handling", 266 | "library", 267 | "throwable", 268 | "whoops" 269 | ], 270 | "support": { 271 | "issues": "https://github.com/filp/whoops/issues", 272 | "source": "https://github.com/filp/whoops/tree/2.16.0" 273 | }, 274 | "funding": [ 275 | { 276 | "url": "https://github.com/denis-sokolov", 277 | "type": "github" 278 | } 279 | ], 280 | "time": "2024-09-25T12:00:00+00:00" 281 | }, 282 | { 283 | "name": "jean85/pretty-package-versions", 284 | "version": "2.1.0", 285 | "source": { 286 | "type": "git", 287 | "url": "https://github.com/Jean85/pretty-package-versions.git", 288 | "reference": "3c4e5f62ba8d7de1734312e4fff32f67a8daaf10" 289 | }, 290 | "dist": { 291 | "type": "zip", 292 | "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/3c4e5f62ba8d7de1734312e4fff32f67a8daaf10", 293 | "reference": "3c4e5f62ba8d7de1734312e4fff32f67a8daaf10", 294 | "shasum": "" 295 | }, 296 | "require": { 297 | "composer-runtime-api": "^2.1.0", 298 | "php": "^7.4|^8.0" 299 | }, 300 | "require-dev": { 301 | "friendsofphp/php-cs-fixer": "^3.2", 302 | "jean85/composer-provided-replaced-stub-package": "^1.0", 303 | "phpstan/phpstan": "^1.4", 304 | "phpunit/phpunit": "^7.5|^8.5|^9.6", 305 | "vimeo/psalm": "^4.3 || ^5.0" 306 | }, 307 | "type": "library", 308 | "extra": { 309 | "branch-alias": { 310 | "dev-master": "1.x-dev" 311 | } 312 | }, 313 | "autoload": { 314 | "psr-4": { 315 | "Jean85\\": "src/" 316 | } 317 | }, 318 | "notification-url": "https://packagist.org/downloads/", 319 | "license": [ 320 | "MIT" 321 | ], 322 | "authors": [ 323 | { 324 | "name": "Alessandro Lai", 325 | "email": "alessandro.lai85@gmail.com" 326 | } 327 | ], 328 | "description": "A library to get pretty versions strings of installed dependencies", 329 | "keywords": [ 330 | "composer", 331 | "package", 332 | "release", 333 | "versions" 334 | ], 335 | "support": { 336 | "issues": "https://github.com/Jean85/pretty-package-versions/issues", 337 | "source": "https://github.com/Jean85/pretty-package-versions/tree/2.1.0" 338 | }, 339 | "time": "2024-11-18T16:19:46+00:00" 340 | }, 341 | { 342 | "name": "myclabs/deep-copy", 343 | "version": "1.12.1", 344 | "source": { 345 | "type": "git", 346 | "url": "https://github.com/myclabs/DeepCopy.git", 347 | "reference": "123267b2c49fbf30d78a7b2d333f6be754b94845" 348 | }, 349 | "dist": { 350 | "type": "zip", 351 | "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/123267b2c49fbf30d78a7b2d333f6be754b94845", 352 | "reference": "123267b2c49fbf30d78a7b2d333f6be754b94845", 353 | "shasum": "" 354 | }, 355 | "require": { 356 | "php": "^7.1 || ^8.0" 357 | }, 358 | "conflict": { 359 | "doctrine/collections": "<1.6.8", 360 | "doctrine/common": "<2.13.3 || >=3 <3.2.2" 361 | }, 362 | "require-dev": { 363 | "doctrine/collections": "^1.6.8", 364 | "doctrine/common": "^2.13.3 || ^3.2.2", 365 | "phpspec/prophecy": "^1.10", 366 | "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" 367 | }, 368 | "type": "library", 369 | "autoload": { 370 | "files": [ 371 | "src/DeepCopy/deep_copy.php" 372 | ], 373 | "psr-4": { 374 | "DeepCopy\\": "src/DeepCopy/" 375 | } 376 | }, 377 | "notification-url": "https://packagist.org/downloads/", 378 | "license": [ 379 | "MIT" 380 | ], 381 | "description": "Create deep copies (clones) of your objects", 382 | "keywords": [ 383 | "clone", 384 | "copy", 385 | "duplicate", 386 | "object", 387 | "object graph" 388 | ], 389 | "support": { 390 | "issues": "https://github.com/myclabs/DeepCopy/issues", 391 | "source": "https://github.com/myclabs/DeepCopy/tree/1.12.1" 392 | }, 393 | "funding": [ 394 | { 395 | "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", 396 | "type": "tidelift" 397 | } 398 | ], 399 | "time": "2024-11-08T17:47:46+00:00" 400 | }, 401 | { 402 | "name": "nikic/php-parser", 403 | "version": "v5.3.1", 404 | "source": { 405 | "type": "git", 406 | "url": "https://github.com/nikic/PHP-Parser.git", 407 | "reference": "8eea230464783aa9671db8eea6f8c6ac5285794b" 408 | }, 409 | "dist": { 410 | "type": "zip", 411 | "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/8eea230464783aa9671db8eea6f8c6ac5285794b", 412 | "reference": "8eea230464783aa9671db8eea6f8c6ac5285794b", 413 | "shasum": "" 414 | }, 415 | "require": { 416 | "ext-ctype": "*", 417 | "ext-json": "*", 418 | "ext-tokenizer": "*", 419 | "php": ">=7.4" 420 | }, 421 | "require-dev": { 422 | "ircmaxell/php-yacc": "^0.0.7", 423 | "phpunit/phpunit": "^9.0" 424 | }, 425 | "bin": [ 426 | "bin/php-parse" 427 | ], 428 | "type": "library", 429 | "extra": { 430 | "branch-alias": { 431 | "dev-master": "5.0-dev" 432 | } 433 | }, 434 | "autoload": { 435 | "psr-4": { 436 | "PhpParser\\": "lib/PhpParser" 437 | } 438 | }, 439 | "notification-url": "https://packagist.org/downloads/", 440 | "license": [ 441 | "BSD-3-Clause" 442 | ], 443 | "authors": [ 444 | { 445 | "name": "Nikita Popov" 446 | } 447 | ], 448 | "description": "A PHP parser written in PHP", 449 | "keywords": [ 450 | "parser", 451 | "php" 452 | ], 453 | "support": { 454 | "issues": "https://github.com/nikic/PHP-Parser/issues", 455 | "source": "https://github.com/nikic/PHP-Parser/tree/v5.3.1" 456 | }, 457 | "time": "2024-10-08T18:51:32+00:00" 458 | }, 459 | { 460 | "name": "nunomaduro/collision", 461 | "version": "v8.5.0", 462 | "source": { 463 | "type": "git", 464 | "url": "https://github.com/nunomaduro/collision.git", 465 | "reference": "f5c101b929c958e849a633283adff296ed5f38f5" 466 | }, 467 | "dist": { 468 | "type": "zip", 469 | "url": "https://api.github.com/repos/nunomaduro/collision/zipball/f5c101b929c958e849a633283adff296ed5f38f5", 470 | "reference": "f5c101b929c958e849a633283adff296ed5f38f5", 471 | "shasum": "" 472 | }, 473 | "require": { 474 | "filp/whoops": "^2.16.0", 475 | "nunomaduro/termwind": "^2.1.0", 476 | "php": "^8.2.0", 477 | "symfony/console": "^7.1.5" 478 | }, 479 | "conflict": { 480 | "laravel/framework": "<11.0.0 || >=12.0.0", 481 | "phpunit/phpunit": "<10.5.1 || >=12.0.0" 482 | }, 483 | "require-dev": { 484 | "larastan/larastan": "^2.9.8", 485 | "laravel/framework": "^11.28.0", 486 | "laravel/pint": "^1.18.1", 487 | "laravel/sail": "^1.36.0", 488 | "laravel/sanctum": "^4.0.3", 489 | "laravel/tinker": "^2.10.0", 490 | "orchestra/testbench-core": "^9.5.3", 491 | "pestphp/pest": "^2.36.0 || ^3.4.0", 492 | "sebastian/environment": "^6.1.0 || ^7.2.0" 493 | }, 494 | "type": "library", 495 | "extra": { 496 | "laravel": { 497 | "providers": [ 498 | "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" 499 | ] 500 | }, 501 | "branch-alias": { 502 | "dev-8.x": "8.x-dev" 503 | } 504 | }, 505 | "autoload": { 506 | "files": [ 507 | "./src/Adapters/Phpunit/Autoload.php" 508 | ], 509 | "psr-4": { 510 | "NunoMaduro\\Collision\\": "src/" 511 | } 512 | }, 513 | "notification-url": "https://packagist.org/downloads/", 514 | "license": [ 515 | "MIT" 516 | ], 517 | "authors": [ 518 | { 519 | "name": "Nuno Maduro", 520 | "email": "enunomaduro@gmail.com" 521 | } 522 | ], 523 | "description": "Cli error handling for console/command-line PHP applications.", 524 | "keywords": [ 525 | "artisan", 526 | "cli", 527 | "command-line", 528 | "console", 529 | "error", 530 | "handling", 531 | "laravel", 532 | "laravel-zero", 533 | "php", 534 | "symfony" 535 | ], 536 | "support": { 537 | "issues": "https://github.com/nunomaduro/collision/issues", 538 | "source": "https://github.com/nunomaduro/collision" 539 | }, 540 | "funding": [ 541 | { 542 | "url": "https://www.paypal.com/paypalme/enunomaduro", 543 | "type": "custom" 544 | }, 545 | { 546 | "url": "https://github.com/nunomaduro", 547 | "type": "github" 548 | }, 549 | { 550 | "url": "https://www.patreon.com/nunomaduro", 551 | "type": "patreon" 552 | } 553 | ], 554 | "time": "2024-10-15T16:06:32+00:00" 555 | }, 556 | { 557 | "name": "nunomaduro/termwind", 558 | "version": "v2.3.0", 559 | "source": { 560 | "type": "git", 561 | "url": "https://github.com/nunomaduro/termwind.git", 562 | "reference": "52915afe6a1044e8b9cee1bcff836fb63acf9cda" 563 | }, 564 | "dist": { 565 | "type": "zip", 566 | "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/52915afe6a1044e8b9cee1bcff836fb63acf9cda", 567 | "reference": "52915afe6a1044e8b9cee1bcff836fb63acf9cda", 568 | "shasum": "" 569 | }, 570 | "require": { 571 | "ext-mbstring": "*", 572 | "php": "^8.2", 573 | "symfony/console": "^7.1.8" 574 | }, 575 | "require-dev": { 576 | "illuminate/console": "^11.33.2", 577 | "laravel/pint": "^1.18.2", 578 | "mockery/mockery": "^1.6.12", 579 | "pestphp/pest": "^2.36.0", 580 | "phpstan/phpstan": "^1.12.11", 581 | "phpstan/phpstan-strict-rules": "^1.6.1", 582 | "symfony/var-dumper": "^7.1.8", 583 | "thecodingmachine/phpstan-strict-rules": "^1.0.0" 584 | }, 585 | "type": "library", 586 | "extra": { 587 | "laravel": { 588 | "providers": [ 589 | "Termwind\\Laravel\\TermwindServiceProvider" 590 | ] 591 | }, 592 | "branch-alias": { 593 | "dev-2.x": "2.x-dev" 594 | } 595 | }, 596 | "autoload": { 597 | "files": [ 598 | "src/Functions.php" 599 | ], 600 | "psr-4": { 601 | "Termwind\\": "src/" 602 | } 603 | }, 604 | "notification-url": "https://packagist.org/downloads/", 605 | "license": [ 606 | "MIT" 607 | ], 608 | "authors": [ 609 | { 610 | "name": "Nuno Maduro", 611 | "email": "enunomaduro@gmail.com" 612 | } 613 | ], 614 | "description": "Its like Tailwind CSS, but for the console.", 615 | "keywords": [ 616 | "cli", 617 | "console", 618 | "css", 619 | "package", 620 | "php", 621 | "style" 622 | ], 623 | "support": { 624 | "issues": "https://github.com/nunomaduro/termwind/issues", 625 | "source": "https://github.com/nunomaduro/termwind/tree/v2.3.0" 626 | }, 627 | "funding": [ 628 | { 629 | "url": "https://www.paypal.com/paypalme/enunomaduro", 630 | "type": "custom" 631 | }, 632 | { 633 | "url": "https://github.com/nunomaduro", 634 | "type": "github" 635 | }, 636 | { 637 | "url": "https://github.com/xiCO2k", 638 | "type": "github" 639 | } 640 | ], 641 | "time": "2024-11-21T10:39:51+00:00" 642 | }, 643 | { 644 | "name": "pestphp/pest", 645 | "version": "v3.6.0", 646 | "source": { 647 | "type": "git", 648 | "url": "https://github.com/pestphp/pest.git", 649 | "reference": "918a8fc16996849937e281482bd34f236881ce96" 650 | }, 651 | "dist": { 652 | "type": "zip", 653 | "url": "https://api.github.com/repos/pestphp/pest/zipball/918a8fc16996849937e281482bd34f236881ce96", 654 | "reference": "918a8fc16996849937e281482bd34f236881ce96", 655 | "shasum": "" 656 | }, 657 | "require": { 658 | "brianium/paratest": "^7.6.0", 659 | "nunomaduro/collision": "^8.5.0", 660 | "nunomaduro/termwind": "^2.3.0", 661 | "pestphp/pest-plugin": "^3.0.0", 662 | "pestphp/pest-plugin-arch": "^3.0.0", 663 | "pestphp/pest-plugin-mutate": "^3.0.5", 664 | "php": "^8.2.0", 665 | "phpunit/phpunit": "^11.4.4" 666 | }, 667 | "conflict": { 668 | "filp/whoops": "<2.16.0", 669 | "phpunit/phpunit": ">11.4.4", 670 | "sebastian/exporter": "<6.0.0", 671 | "webmozart/assert": "<1.11.0" 672 | }, 673 | "require-dev": { 674 | "pestphp/pest-dev-tools": "^3.3.0", 675 | "pestphp/pest-plugin-type-coverage": "^3.2.0", 676 | "symfony/process": "^7.1.8" 677 | }, 678 | "bin": [ 679 | "bin/pest" 680 | ], 681 | "type": "library", 682 | "extra": { 683 | "pest": { 684 | "plugins": [ 685 | "Pest\\Mutate\\Plugins\\Mutate", 686 | "Pest\\Plugins\\Configuration", 687 | "Pest\\Plugins\\Bail", 688 | "Pest\\Plugins\\Cache", 689 | "Pest\\Plugins\\Coverage", 690 | "Pest\\Plugins\\Init", 691 | "Pest\\Plugins\\Environment", 692 | "Pest\\Plugins\\Help", 693 | "Pest\\Plugins\\Memory", 694 | "Pest\\Plugins\\Only", 695 | "Pest\\Plugins\\Printer", 696 | "Pest\\Plugins\\ProcessIsolation", 697 | "Pest\\Plugins\\Profile", 698 | "Pest\\Plugins\\Retry", 699 | "Pest\\Plugins\\Snapshot", 700 | "Pest\\Plugins\\Verbose", 701 | "Pest\\Plugins\\Version", 702 | "Pest\\Plugins\\Parallel" 703 | ] 704 | }, 705 | "phpstan": { 706 | "includes": [ 707 | "extension.neon" 708 | ] 709 | } 710 | }, 711 | "autoload": { 712 | "files": [ 713 | "src/Functions.php", 714 | "src/Pest.php" 715 | ], 716 | "psr-4": { 717 | "Pest\\": "src/" 718 | } 719 | }, 720 | "notification-url": "https://packagist.org/downloads/", 721 | "license": [ 722 | "MIT" 723 | ], 724 | "authors": [ 725 | { 726 | "name": "Nuno Maduro", 727 | "email": "enunomaduro@gmail.com" 728 | } 729 | ], 730 | "description": "The elegant PHP Testing Framework.", 731 | "keywords": [ 732 | "framework", 733 | "pest", 734 | "php", 735 | "test", 736 | "testing", 737 | "unit" 738 | ], 739 | "support": { 740 | "issues": "https://github.com/pestphp/pest/issues", 741 | "source": "https://github.com/pestphp/pest/tree/v3.6.0" 742 | }, 743 | "funding": [ 744 | { 745 | "url": "https://www.paypal.com/paypalme/enunomaduro", 746 | "type": "custom" 747 | }, 748 | { 749 | "url": "https://github.com/nunomaduro", 750 | "type": "github" 751 | } 752 | ], 753 | "time": "2024-12-01T22:46:00+00:00" 754 | }, 755 | { 756 | "name": "pestphp/pest-plugin", 757 | "version": "v3.0.0", 758 | "source": { 759 | "type": "git", 760 | "url": "https://github.com/pestphp/pest-plugin.git", 761 | "reference": "e79b26c65bc11c41093b10150c1341cc5cdbea83" 762 | }, 763 | "dist": { 764 | "type": "zip", 765 | "url": "https://api.github.com/repos/pestphp/pest-plugin/zipball/e79b26c65bc11c41093b10150c1341cc5cdbea83", 766 | "reference": "e79b26c65bc11c41093b10150c1341cc5cdbea83", 767 | "shasum": "" 768 | }, 769 | "require": { 770 | "composer-plugin-api": "^2.0.0", 771 | "composer-runtime-api": "^2.2.2", 772 | "php": "^8.2" 773 | }, 774 | "conflict": { 775 | "pestphp/pest": "<3.0.0" 776 | }, 777 | "require-dev": { 778 | "composer/composer": "^2.7.9", 779 | "pestphp/pest": "^3.0.0", 780 | "pestphp/pest-dev-tools": "^3.0.0" 781 | }, 782 | "type": "composer-plugin", 783 | "extra": { 784 | "class": "Pest\\Plugin\\Manager" 785 | }, 786 | "autoload": { 787 | "psr-4": { 788 | "Pest\\Plugin\\": "src/" 789 | } 790 | }, 791 | "notification-url": "https://packagist.org/downloads/", 792 | "license": [ 793 | "MIT" 794 | ], 795 | "description": "The Pest plugin manager", 796 | "keywords": [ 797 | "framework", 798 | "manager", 799 | "pest", 800 | "php", 801 | "plugin", 802 | "test", 803 | "testing", 804 | "unit" 805 | ], 806 | "support": { 807 | "source": "https://github.com/pestphp/pest-plugin/tree/v3.0.0" 808 | }, 809 | "funding": [ 810 | { 811 | "url": "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=66BYDWAT92N6L", 812 | "type": "custom" 813 | }, 814 | { 815 | "url": "https://github.com/nunomaduro", 816 | "type": "github" 817 | }, 818 | { 819 | "url": "https://www.patreon.com/nunomaduro", 820 | "type": "patreon" 821 | } 822 | ], 823 | "time": "2024-09-08T23:21:41+00:00" 824 | }, 825 | { 826 | "name": "pestphp/pest-plugin-arch", 827 | "version": "v3.0.0", 828 | "source": { 829 | "type": "git", 830 | "url": "https://github.com/pestphp/pest-plugin-arch.git", 831 | "reference": "0a27e55a270cfe73d8cb70551b91002ee2cb64b0" 832 | }, 833 | "dist": { 834 | "type": "zip", 835 | "url": "https://api.github.com/repos/pestphp/pest-plugin-arch/zipball/0a27e55a270cfe73d8cb70551b91002ee2cb64b0", 836 | "reference": "0a27e55a270cfe73d8cb70551b91002ee2cb64b0", 837 | "shasum": "" 838 | }, 839 | "require": { 840 | "pestphp/pest-plugin": "^3.0.0", 841 | "php": "^8.2", 842 | "ta-tikoma/phpunit-architecture-test": "^0.8.4" 843 | }, 844 | "require-dev": { 845 | "pestphp/pest": "^3.0.0", 846 | "pestphp/pest-dev-tools": "^3.0.0" 847 | }, 848 | "type": "library", 849 | "extra": { 850 | "pest": { 851 | "plugins": [ 852 | "Pest\\Arch\\Plugin" 853 | ] 854 | } 855 | }, 856 | "autoload": { 857 | "files": [ 858 | "src/Autoload.php" 859 | ], 860 | "psr-4": { 861 | "Pest\\Arch\\": "src/" 862 | } 863 | }, 864 | "notification-url": "https://packagist.org/downloads/", 865 | "license": [ 866 | "MIT" 867 | ], 868 | "description": "The Arch plugin for Pest PHP.", 869 | "keywords": [ 870 | "arch", 871 | "architecture", 872 | "framework", 873 | "pest", 874 | "php", 875 | "plugin", 876 | "test", 877 | "testing", 878 | "unit" 879 | ], 880 | "support": { 881 | "source": "https://github.com/pestphp/pest-plugin-arch/tree/v3.0.0" 882 | }, 883 | "funding": [ 884 | { 885 | "url": "https://www.paypal.com/paypalme/enunomaduro", 886 | "type": "custom" 887 | }, 888 | { 889 | "url": "https://github.com/nunomaduro", 890 | "type": "github" 891 | } 892 | ], 893 | "time": "2024-09-08T23:23:55+00:00" 894 | }, 895 | { 896 | "name": "pestphp/pest-plugin-mutate", 897 | "version": "v3.0.5", 898 | "source": { 899 | "type": "git", 900 | "url": "https://github.com/pestphp/pest-plugin-mutate.git", 901 | "reference": "e10dbdc98c9e2f3890095b4fe2144f63a5717e08" 902 | }, 903 | "dist": { 904 | "type": "zip", 905 | "url": "https://api.github.com/repos/pestphp/pest-plugin-mutate/zipball/e10dbdc98c9e2f3890095b4fe2144f63a5717e08", 906 | "reference": "e10dbdc98c9e2f3890095b4fe2144f63a5717e08", 907 | "shasum": "" 908 | }, 909 | "require": { 910 | "nikic/php-parser": "^5.2.0", 911 | "pestphp/pest-plugin": "^3.0.0", 912 | "php": "^8.2", 913 | "psr/simple-cache": "^3.0.0" 914 | }, 915 | "require-dev": { 916 | "pestphp/pest": "^3.0.8", 917 | "pestphp/pest-dev-tools": "^3.0.0", 918 | "pestphp/pest-plugin-type-coverage": "^3.0.0" 919 | }, 920 | "type": "library", 921 | "autoload": { 922 | "psr-4": { 923 | "Pest\\Mutate\\": "src/" 924 | } 925 | }, 926 | "notification-url": "https://packagist.org/downloads/", 927 | "license": [ 928 | "MIT" 929 | ], 930 | "authors": [ 931 | { 932 | "name": "Sandro Gehri", 933 | "email": "sandrogehri@gmail.com" 934 | } 935 | ], 936 | "description": "Mutates your code to find untested cases", 937 | "keywords": [ 938 | "framework", 939 | "mutate", 940 | "mutation", 941 | "pest", 942 | "php", 943 | "plugin", 944 | "test", 945 | "testing", 946 | "unit" 947 | ], 948 | "support": { 949 | "source": "https://github.com/pestphp/pest-plugin-mutate/tree/v3.0.5" 950 | }, 951 | "funding": [ 952 | { 953 | "url": "https://www.paypal.com/paypalme/enunomaduro", 954 | "type": "custom" 955 | }, 956 | { 957 | "url": "https://github.com/gehrisandro", 958 | "type": "github" 959 | }, 960 | { 961 | "url": "https://github.com/nunomaduro", 962 | "type": "github" 963 | } 964 | ], 965 | "time": "2024-09-22T07:54:40+00:00" 966 | }, 967 | { 968 | "name": "phar-io/manifest", 969 | "version": "2.0.4", 970 | "source": { 971 | "type": "git", 972 | "url": "https://github.com/phar-io/manifest.git", 973 | "reference": "54750ef60c58e43759730615a392c31c80e23176" 974 | }, 975 | "dist": { 976 | "type": "zip", 977 | "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", 978 | "reference": "54750ef60c58e43759730615a392c31c80e23176", 979 | "shasum": "" 980 | }, 981 | "require": { 982 | "ext-dom": "*", 983 | "ext-libxml": "*", 984 | "ext-phar": "*", 985 | "ext-xmlwriter": "*", 986 | "phar-io/version": "^3.0.1", 987 | "php": "^7.2 || ^8.0" 988 | }, 989 | "type": "library", 990 | "extra": { 991 | "branch-alias": { 992 | "dev-master": "2.0.x-dev" 993 | } 994 | }, 995 | "autoload": { 996 | "classmap": [ 997 | "src/" 998 | ] 999 | }, 1000 | "notification-url": "https://packagist.org/downloads/", 1001 | "license": [ 1002 | "BSD-3-Clause" 1003 | ], 1004 | "authors": [ 1005 | { 1006 | "name": "Arne Blankerts", 1007 | "email": "arne@blankerts.de", 1008 | "role": "Developer" 1009 | }, 1010 | { 1011 | "name": "Sebastian Heuer", 1012 | "email": "sebastian@phpeople.de", 1013 | "role": "Developer" 1014 | }, 1015 | { 1016 | "name": "Sebastian Bergmann", 1017 | "email": "sebastian@phpunit.de", 1018 | "role": "Developer" 1019 | } 1020 | ], 1021 | "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", 1022 | "support": { 1023 | "issues": "https://github.com/phar-io/manifest/issues", 1024 | "source": "https://github.com/phar-io/manifest/tree/2.0.4" 1025 | }, 1026 | "funding": [ 1027 | { 1028 | "url": "https://github.com/theseer", 1029 | "type": "github" 1030 | } 1031 | ], 1032 | "time": "2024-03-03T12:33:53+00:00" 1033 | }, 1034 | { 1035 | "name": "phar-io/version", 1036 | "version": "3.2.1", 1037 | "source": { 1038 | "type": "git", 1039 | "url": "https://github.com/phar-io/version.git", 1040 | "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" 1041 | }, 1042 | "dist": { 1043 | "type": "zip", 1044 | "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", 1045 | "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", 1046 | "shasum": "" 1047 | }, 1048 | "require": { 1049 | "php": "^7.2 || ^8.0" 1050 | }, 1051 | "type": "library", 1052 | "autoload": { 1053 | "classmap": [ 1054 | "src/" 1055 | ] 1056 | }, 1057 | "notification-url": "https://packagist.org/downloads/", 1058 | "license": [ 1059 | "BSD-3-Clause" 1060 | ], 1061 | "authors": [ 1062 | { 1063 | "name": "Arne Blankerts", 1064 | "email": "arne@blankerts.de", 1065 | "role": "Developer" 1066 | }, 1067 | { 1068 | "name": "Sebastian Heuer", 1069 | "email": "sebastian@phpeople.de", 1070 | "role": "Developer" 1071 | }, 1072 | { 1073 | "name": "Sebastian Bergmann", 1074 | "email": "sebastian@phpunit.de", 1075 | "role": "Developer" 1076 | } 1077 | ], 1078 | "description": "Library for handling version information and constraints", 1079 | "support": { 1080 | "issues": "https://github.com/phar-io/version/issues", 1081 | "source": "https://github.com/phar-io/version/tree/3.2.1" 1082 | }, 1083 | "time": "2022-02-21T01:04:05+00:00" 1084 | }, 1085 | { 1086 | "name": "phpdocumentor/reflection-common", 1087 | "version": "2.2.0", 1088 | "source": { 1089 | "type": "git", 1090 | "url": "https://github.com/phpDocumentor/ReflectionCommon.git", 1091 | "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" 1092 | }, 1093 | "dist": { 1094 | "type": "zip", 1095 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", 1096 | "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", 1097 | "shasum": "" 1098 | }, 1099 | "require": { 1100 | "php": "^7.2 || ^8.0" 1101 | }, 1102 | "type": "library", 1103 | "extra": { 1104 | "branch-alias": { 1105 | "dev-2.x": "2.x-dev" 1106 | } 1107 | }, 1108 | "autoload": { 1109 | "psr-4": { 1110 | "phpDocumentor\\Reflection\\": "src/" 1111 | } 1112 | }, 1113 | "notification-url": "https://packagist.org/downloads/", 1114 | "license": [ 1115 | "MIT" 1116 | ], 1117 | "authors": [ 1118 | { 1119 | "name": "Jaap van Otterdijk", 1120 | "email": "opensource@ijaap.nl" 1121 | } 1122 | ], 1123 | "description": "Common reflection classes used by phpdocumentor to reflect the code structure", 1124 | "homepage": "http://www.phpdoc.org", 1125 | "keywords": [ 1126 | "FQSEN", 1127 | "phpDocumentor", 1128 | "phpdoc", 1129 | "reflection", 1130 | "static analysis" 1131 | ], 1132 | "support": { 1133 | "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", 1134 | "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" 1135 | }, 1136 | "time": "2020-06-27T09:03:43+00:00" 1137 | }, 1138 | { 1139 | "name": "phpdocumentor/reflection-docblock", 1140 | "version": "5.6.0", 1141 | "source": { 1142 | "type": "git", 1143 | "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", 1144 | "reference": "f3558a4c23426d12bffeaab463f8a8d8b681193c" 1145 | }, 1146 | "dist": { 1147 | "type": "zip", 1148 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/f3558a4c23426d12bffeaab463f8a8d8b681193c", 1149 | "reference": "f3558a4c23426d12bffeaab463f8a8d8b681193c", 1150 | "shasum": "" 1151 | }, 1152 | "require": { 1153 | "doctrine/deprecations": "^1.1", 1154 | "ext-filter": "*", 1155 | "php": "^7.4 || ^8.0", 1156 | "phpdocumentor/reflection-common": "^2.2", 1157 | "phpdocumentor/type-resolver": "^1.7", 1158 | "phpstan/phpdoc-parser": "^1.7|^2.0", 1159 | "webmozart/assert": "^1.9.1" 1160 | }, 1161 | "require-dev": { 1162 | "mockery/mockery": "~1.3.5 || ~1.6.0", 1163 | "phpstan/extension-installer": "^1.1", 1164 | "phpstan/phpstan": "^1.8", 1165 | "phpstan/phpstan-mockery": "^1.1", 1166 | "phpstan/phpstan-webmozart-assert": "^1.2", 1167 | "phpunit/phpunit": "^9.5", 1168 | "psalm/phar": "^5.26" 1169 | }, 1170 | "type": "library", 1171 | "extra": { 1172 | "branch-alias": { 1173 | "dev-master": "5.x-dev" 1174 | } 1175 | }, 1176 | "autoload": { 1177 | "psr-4": { 1178 | "phpDocumentor\\Reflection\\": "src" 1179 | } 1180 | }, 1181 | "notification-url": "https://packagist.org/downloads/", 1182 | "license": [ 1183 | "MIT" 1184 | ], 1185 | "authors": [ 1186 | { 1187 | "name": "Mike van Riel", 1188 | "email": "me@mikevanriel.com" 1189 | }, 1190 | { 1191 | "name": "Jaap van Otterdijk", 1192 | "email": "opensource@ijaap.nl" 1193 | } 1194 | ], 1195 | "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", 1196 | "support": { 1197 | "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", 1198 | "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.6.0" 1199 | }, 1200 | "time": "2024-11-12T11:25:25+00:00" 1201 | }, 1202 | { 1203 | "name": "phpdocumentor/type-resolver", 1204 | "version": "1.10.0", 1205 | "source": { 1206 | "type": "git", 1207 | "url": "https://github.com/phpDocumentor/TypeResolver.git", 1208 | "reference": "679e3ce485b99e84c775d28e2e96fade9a7fb50a" 1209 | }, 1210 | "dist": { 1211 | "type": "zip", 1212 | "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/679e3ce485b99e84c775d28e2e96fade9a7fb50a", 1213 | "reference": "679e3ce485b99e84c775d28e2e96fade9a7fb50a", 1214 | "shasum": "" 1215 | }, 1216 | "require": { 1217 | "doctrine/deprecations": "^1.0", 1218 | "php": "^7.3 || ^8.0", 1219 | "phpdocumentor/reflection-common": "^2.0", 1220 | "phpstan/phpdoc-parser": "^1.18|^2.0" 1221 | }, 1222 | "require-dev": { 1223 | "ext-tokenizer": "*", 1224 | "phpbench/phpbench": "^1.2", 1225 | "phpstan/extension-installer": "^1.1", 1226 | "phpstan/phpstan": "^1.8", 1227 | "phpstan/phpstan-phpunit": "^1.1", 1228 | "phpunit/phpunit": "^9.5", 1229 | "rector/rector": "^0.13.9", 1230 | "vimeo/psalm": "^4.25" 1231 | }, 1232 | "type": "library", 1233 | "extra": { 1234 | "branch-alias": { 1235 | "dev-1.x": "1.x-dev" 1236 | } 1237 | }, 1238 | "autoload": { 1239 | "psr-4": { 1240 | "phpDocumentor\\Reflection\\": "src" 1241 | } 1242 | }, 1243 | "notification-url": "https://packagist.org/downloads/", 1244 | "license": [ 1245 | "MIT" 1246 | ], 1247 | "authors": [ 1248 | { 1249 | "name": "Mike van Riel", 1250 | "email": "me@mikevanriel.com" 1251 | } 1252 | ], 1253 | "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", 1254 | "support": { 1255 | "issues": "https://github.com/phpDocumentor/TypeResolver/issues", 1256 | "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.10.0" 1257 | }, 1258 | "time": "2024-11-09T15:12:26+00:00" 1259 | }, 1260 | { 1261 | "name": "phpstan/phpdoc-parser", 1262 | "version": "2.0.0", 1263 | "source": { 1264 | "type": "git", 1265 | "url": "https://github.com/phpstan/phpdoc-parser.git", 1266 | "reference": "c00d78fb6b29658347f9d37ebe104bffadf36299" 1267 | }, 1268 | "dist": { 1269 | "type": "zip", 1270 | "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/c00d78fb6b29658347f9d37ebe104bffadf36299", 1271 | "reference": "c00d78fb6b29658347f9d37ebe104bffadf36299", 1272 | "shasum": "" 1273 | }, 1274 | "require": { 1275 | "php": "^7.4 || ^8.0" 1276 | }, 1277 | "require-dev": { 1278 | "doctrine/annotations": "^2.0", 1279 | "nikic/php-parser": "^5.3.0", 1280 | "php-parallel-lint/php-parallel-lint": "^1.2", 1281 | "phpstan/extension-installer": "^1.0", 1282 | "phpstan/phpstan": "^2.0", 1283 | "phpstan/phpstan-phpunit": "^2.0", 1284 | "phpstan/phpstan-strict-rules": "^2.0", 1285 | "phpunit/phpunit": "^9.6", 1286 | "symfony/process": "^5.2" 1287 | }, 1288 | "type": "library", 1289 | "autoload": { 1290 | "psr-4": { 1291 | "PHPStan\\PhpDocParser\\": [ 1292 | "src/" 1293 | ] 1294 | } 1295 | }, 1296 | "notification-url": "https://packagist.org/downloads/", 1297 | "license": [ 1298 | "MIT" 1299 | ], 1300 | "description": "PHPDoc parser with support for nullable, intersection and generic types", 1301 | "support": { 1302 | "issues": "https://github.com/phpstan/phpdoc-parser/issues", 1303 | "source": "https://github.com/phpstan/phpdoc-parser/tree/2.0.0" 1304 | }, 1305 | "time": "2024-10-13T11:29:49+00:00" 1306 | }, 1307 | { 1308 | "name": "phpunit/php-code-coverage", 1309 | "version": "11.0.7", 1310 | "source": { 1311 | "type": "git", 1312 | "url": "https://github.com/sebastianbergmann/php-code-coverage.git", 1313 | "reference": "f7f08030e8811582cc459871d28d6f5a1a4d35ca" 1314 | }, 1315 | "dist": { 1316 | "type": "zip", 1317 | "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f7f08030e8811582cc459871d28d6f5a1a4d35ca", 1318 | "reference": "f7f08030e8811582cc459871d28d6f5a1a4d35ca", 1319 | "shasum": "" 1320 | }, 1321 | "require": { 1322 | "ext-dom": "*", 1323 | "ext-libxml": "*", 1324 | "ext-xmlwriter": "*", 1325 | "nikic/php-parser": "^5.3.1", 1326 | "php": ">=8.2", 1327 | "phpunit/php-file-iterator": "^5.1.0", 1328 | "phpunit/php-text-template": "^4.0.1", 1329 | "sebastian/code-unit-reverse-lookup": "^4.0.1", 1330 | "sebastian/complexity": "^4.0.1", 1331 | "sebastian/environment": "^7.2.0", 1332 | "sebastian/lines-of-code": "^3.0.1", 1333 | "sebastian/version": "^5.0.2", 1334 | "theseer/tokenizer": "^1.2.3" 1335 | }, 1336 | "require-dev": { 1337 | "phpunit/phpunit": "^11.4.1" 1338 | }, 1339 | "suggest": { 1340 | "ext-pcov": "PHP extension that provides line coverage", 1341 | "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" 1342 | }, 1343 | "type": "library", 1344 | "extra": { 1345 | "branch-alias": { 1346 | "dev-main": "11.0.x-dev" 1347 | } 1348 | }, 1349 | "autoload": { 1350 | "classmap": [ 1351 | "src/" 1352 | ] 1353 | }, 1354 | "notification-url": "https://packagist.org/downloads/", 1355 | "license": [ 1356 | "BSD-3-Clause" 1357 | ], 1358 | "authors": [ 1359 | { 1360 | "name": "Sebastian Bergmann", 1361 | "email": "sebastian@phpunit.de", 1362 | "role": "lead" 1363 | } 1364 | ], 1365 | "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", 1366 | "homepage": "https://github.com/sebastianbergmann/php-code-coverage", 1367 | "keywords": [ 1368 | "coverage", 1369 | "testing", 1370 | "xunit" 1371 | ], 1372 | "support": { 1373 | "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", 1374 | "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", 1375 | "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/11.0.7" 1376 | }, 1377 | "funding": [ 1378 | { 1379 | "url": "https://github.com/sebastianbergmann", 1380 | "type": "github" 1381 | } 1382 | ], 1383 | "time": "2024-10-09T06:21:38+00:00" 1384 | }, 1385 | { 1386 | "name": "phpunit/php-file-iterator", 1387 | "version": "5.1.0", 1388 | "source": { 1389 | "type": "git", 1390 | "url": "https://github.com/sebastianbergmann/php-file-iterator.git", 1391 | "reference": "118cfaaa8bc5aef3287bf315b6060b1174754af6" 1392 | }, 1393 | "dist": { 1394 | "type": "zip", 1395 | "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/118cfaaa8bc5aef3287bf315b6060b1174754af6", 1396 | "reference": "118cfaaa8bc5aef3287bf315b6060b1174754af6", 1397 | "shasum": "" 1398 | }, 1399 | "require": { 1400 | "php": ">=8.2" 1401 | }, 1402 | "require-dev": { 1403 | "phpunit/phpunit": "^11.0" 1404 | }, 1405 | "type": "library", 1406 | "extra": { 1407 | "branch-alias": { 1408 | "dev-main": "5.0-dev" 1409 | } 1410 | }, 1411 | "autoload": { 1412 | "classmap": [ 1413 | "src/" 1414 | ] 1415 | }, 1416 | "notification-url": "https://packagist.org/downloads/", 1417 | "license": [ 1418 | "BSD-3-Clause" 1419 | ], 1420 | "authors": [ 1421 | { 1422 | "name": "Sebastian Bergmann", 1423 | "email": "sebastian@phpunit.de", 1424 | "role": "lead" 1425 | } 1426 | ], 1427 | "description": "FilterIterator implementation that filters files based on a list of suffixes.", 1428 | "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", 1429 | "keywords": [ 1430 | "filesystem", 1431 | "iterator" 1432 | ], 1433 | "support": { 1434 | "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", 1435 | "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", 1436 | "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/5.1.0" 1437 | }, 1438 | "funding": [ 1439 | { 1440 | "url": "https://github.com/sebastianbergmann", 1441 | "type": "github" 1442 | } 1443 | ], 1444 | "time": "2024-08-27T05:02:59+00:00" 1445 | }, 1446 | { 1447 | "name": "phpunit/php-invoker", 1448 | "version": "5.0.1", 1449 | "source": { 1450 | "type": "git", 1451 | "url": "https://github.com/sebastianbergmann/php-invoker.git", 1452 | "reference": "c1ca3814734c07492b3d4c5f794f4b0995333da2" 1453 | }, 1454 | "dist": { 1455 | "type": "zip", 1456 | "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/c1ca3814734c07492b3d4c5f794f4b0995333da2", 1457 | "reference": "c1ca3814734c07492b3d4c5f794f4b0995333da2", 1458 | "shasum": "" 1459 | }, 1460 | "require": { 1461 | "php": ">=8.2" 1462 | }, 1463 | "require-dev": { 1464 | "ext-pcntl": "*", 1465 | "phpunit/phpunit": "^11.0" 1466 | }, 1467 | "suggest": { 1468 | "ext-pcntl": "*" 1469 | }, 1470 | "type": "library", 1471 | "extra": { 1472 | "branch-alias": { 1473 | "dev-main": "5.0-dev" 1474 | } 1475 | }, 1476 | "autoload": { 1477 | "classmap": [ 1478 | "src/" 1479 | ] 1480 | }, 1481 | "notification-url": "https://packagist.org/downloads/", 1482 | "license": [ 1483 | "BSD-3-Clause" 1484 | ], 1485 | "authors": [ 1486 | { 1487 | "name": "Sebastian Bergmann", 1488 | "email": "sebastian@phpunit.de", 1489 | "role": "lead" 1490 | } 1491 | ], 1492 | "description": "Invoke callables with a timeout", 1493 | "homepage": "https://github.com/sebastianbergmann/php-invoker/", 1494 | "keywords": [ 1495 | "process" 1496 | ], 1497 | "support": { 1498 | "issues": "https://github.com/sebastianbergmann/php-invoker/issues", 1499 | "security": "https://github.com/sebastianbergmann/php-invoker/security/policy", 1500 | "source": "https://github.com/sebastianbergmann/php-invoker/tree/5.0.1" 1501 | }, 1502 | "funding": [ 1503 | { 1504 | "url": "https://github.com/sebastianbergmann", 1505 | "type": "github" 1506 | } 1507 | ], 1508 | "time": "2024-07-03T05:07:44+00:00" 1509 | }, 1510 | { 1511 | "name": "phpunit/php-text-template", 1512 | "version": "4.0.1", 1513 | "source": { 1514 | "type": "git", 1515 | "url": "https://github.com/sebastianbergmann/php-text-template.git", 1516 | "reference": "3e0404dc6b300e6bf56415467ebcb3fe4f33e964" 1517 | }, 1518 | "dist": { 1519 | "type": "zip", 1520 | "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/3e0404dc6b300e6bf56415467ebcb3fe4f33e964", 1521 | "reference": "3e0404dc6b300e6bf56415467ebcb3fe4f33e964", 1522 | "shasum": "" 1523 | }, 1524 | "require": { 1525 | "php": ">=8.2" 1526 | }, 1527 | "require-dev": { 1528 | "phpunit/phpunit": "^11.0" 1529 | }, 1530 | "type": "library", 1531 | "extra": { 1532 | "branch-alias": { 1533 | "dev-main": "4.0-dev" 1534 | } 1535 | }, 1536 | "autoload": { 1537 | "classmap": [ 1538 | "src/" 1539 | ] 1540 | }, 1541 | "notification-url": "https://packagist.org/downloads/", 1542 | "license": [ 1543 | "BSD-3-Clause" 1544 | ], 1545 | "authors": [ 1546 | { 1547 | "name": "Sebastian Bergmann", 1548 | "email": "sebastian@phpunit.de", 1549 | "role": "lead" 1550 | } 1551 | ], 1552 | "description": "Simple template engine.", 1553 | "homepage": "https://github.com/sebastianbergmann/php-text-template/", 1554 | "keywords": [ 1555 | "template" 1556 | ], 1557 | "support": { 1558 | "issues": "https://github.com/sebastianbergmann/php-text-template/issues", 1559 | "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", 1560 | "source": "https://github.com/sebastianbergmann/php-text-template/tree/4.0.1" 1561 | }, 1562 | "funding": [ 1563 | { 1564 | "url": "https://github.com/sebastianbergmann", 1565 | "type": "github" 1566 | } 1567 | ], 1568 | "time": "2024-07-03T05:08:43+00:00" 1569 | }, 1570 | { 1571 | "name": "phpunit/php-timer", 1572 | "version": "7.0.1", 1573 | "source": { 1574 | "type": "git", 1575 | "url": "https://github.com/sebastianbergmann/php-timer.git", 1576 | "reference": "3b415def83fbcb41f991d9ebf16ae4ad8b7837b3" 1577 | }, 1578 | "dist": { 1579 | "type": "zip", 1580 | "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3b415def83fbcb41f991d9ebf16ae4ad8b7837b3", 1581 | "reference": "3b415def83fbcb41f991d9ebf16ae4ad8b7837b3", 1582 | "shasum": "" 1583 | }, 1584 | "require": { 1585 | "php": ">=8.2" 1586 | }, 1587 | "require-dev": { 1588 | "phpunit/phpunit": "^11.0" 1589 | }, 1590 | "type": "library", 1591 | "extra": { 1592 | "branch-alias": { 1593 | "dev-main": "7.0-dev" 1594 | } 1595 | }, 1596 | "autoload": { 1597 | "classmap": [ 1598 | "src/" 1599 | ] 1600 | }, 1601 | "notification-url": "https://packagist.org/downloads/", 1602 | "license": [ 1603 | "BSD-3-Clause" 1604 | ], 1605 | "authors": [ 1606 | { 1607 | "name": "Sebastian Bergmann", 1608 | "email": "sebastian@phpunit.de", 1609 | "role": "lead" 1610 | } 1611 | ], 1612 | "description": "Utility class for timing", 1613 | "homepage": "https://github.com/sebastianbergmann/php-timer/", 1614 | "keywords": [ 1615 | "timer" 1616 | ], 1617 | "support": { 1618 | "issues": "https://github.com/sebastianbergmann/php-timer/issues", 1619 | "security": "https://github.com/sebastianbergmann/php-timer/security/policy", 1620 | "source": "https://github.com/sebastianbergmann/php-timer/tree/7.0.1" 1621 | }, 1622 | "funding": [ 1623 | { 1624 | "url": "https://github.com/sebastianbergmann", 1625 | "type": "github" 1626 | } 1627 | ], 1628 | "time": "2024-07-03T05:09:35+00:00" 1629 | }, 1630 | { 1631 | "name": "phpunit/phpunit", 1632 | "version": "11.4.4", 1633 | "source": { 1634 | "type": "git", 1635 | "url": "https://github.com/sebastianbergmann/phpunit.git", 1636 | "reference": "f9ba7bd3c9f3ff54ec379d7a1c2e3f13fe0bbde4" 1637 | }, 1638 | "dist": { 1639 | "type": "zip", 1640 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/f9ba7bd3c9f3ff54ec379d7a1c2e3f13fe0bbde4", 1641 | "reference": "f9ba7bd3c9f3ff54ec379d7a1c2e3f13fe0bbde4", 1642 | "shasum": "" 1643 | }, 1644 | "require": { 1645 | "ext-dom": "*", 1646 | "ext-json": "*", 1647 | "ext-libxml": "*", 1648 | "ext-mbstring": "*", 1649 | "ext-xml": "*", 1650 | "ext-xmlwriter": "*", 1651 | "myclabs/deep-copy": "^1.12.1", 1652 | "phar-io/manifest": "^2.0.4", 1653 | "phar-io/version": "^3.2.1", 1654 | "php": ">=8.2", 1655 | "phpunit/php-code-coverage": "^11.0.7", 1656 | "phpunit/php-file-iterator": "^5.1.0", 1657 | "phpunit/php-invoker": "^5.0.1", 1658 | "phpunit/php-text-template": "^4.0.1", 1659 | "phpunit/php-timer": "^7.0.1", 1660 | "sebastian/cli-parser": "^3.0.2", 1661 | "sebastian/code-unit": "^3.0.1", 1662 | "sebastian/comparator": "^6.2.1", 1663 | "sebastian/diff": "^6.0.2", 1664 | "sebastian/environment": "^7.2.0", 1665 | "sebastian/exporter": "^6.1.3", 1666 | "sebastian/global-state": "^7.0.2", 1667 | "sebastian/object-enumerator": "^6.0.1", 1668 | "sebastian/type": "^5.1.0", 1669 | "sebastian/version": "^5.0.2" 1670 | }, 1671 | "suggest": { 1672 | "ext-soap": "To be able to generate mocks based on WSDL files" 1673 | }, 1674 | "bin": [ 1675 | "phpunit" 1676 | ], 1677 | "type": "library", 1678 | "extra": { 1679 | "branch-alias": { 1680 | "dev-main": "11.4-dev" 1681 | } 1682 | }, 1683 | "autoload": { 1684 | "files": [ 1685 | "src/Framework/Assert/Functions.php" 1686 | ], 1687 | "classmap": [ 1688 | "src/" 1689 | ] 1690 | }, 1691 | "notification-url": "https://packagist.org/downloads/", 1692 | "license": [ 1693 | "BSD-3-Clause" 1694 | ], 1695 | "authors": [ 1696 | { 1697 | "name": "Sebastian Bergmann", 1698 | "email": "sebastian@phpunit.de", 1699 | "role": "lead" 1700 | } 1701 | ], 1702 | "description": "The PHP Unit Testing framework.", 1703 | "homepage": "https://phpunit.de/", 1704 | "keywords": [ 1705 | "phpunit", 1706 | "testing", 1707 | "xunit" 1708 | ], 1709 | "support": { 1710 | "issues": "https://github.com/sebastianbergmann/phpunit/issues", 1711 | "security": "https://github.com/sebastianbergmann/phpunit/security/policy", 1712 | "source": "https://github.com/sebastianbergmann/phpunit/tree/11.4.4" 1713 | }, 1714 | "funding": [ 1715 | { 1716 | "url": "https://phpunit.de/sponsors.html", 1717 | "type": "custom" 1718 | }, 1719 | { 1720 | "url": "https://github.com/sebastianbergmann", 1721 | "type": "github" 1722 | }, 1723 | { 1724 | "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", 1725 | "type": "tidelift" 1726 | } 1727 | ], 1728 | "time": "2024-11-27T10:44:52+00:00" 1729 | }, 1730 | { 1731 | "name": "psr/container", 1732 | "version": "2.0.2", 1733 | "source": { 1734 | "type": "git", 1735 | "url": "https://github.com/php-fig/container.git", 1736 | "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" 1737 | }, 1738 | "dist": { 1739 | "type": "zip", 1740 | "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", 1741 | "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", 1742 | "shasum": "" 1743 | }, 1744 | "require": { 1745 | "php": ">=7.4.0" 1746 | }, 1747 | "type": "library", 1748 | "extra": { 1749 | "branch-alias": { 1750 | "dev-master": "2.0.x-dev" 1751 | } 1752 | }, 1753 | "autoload": { 1754 | "psr-4": { 1755 | "Psr\\Container\\": "src/" 1756 | } 1757 | }, 1758 | "notification-url": "https://packagist.org/downloads/", 1759 | "license": [ 1760 | "MIT" 1761 | ], 1762 | "authors": [ 1763 | { 1764 | "name": "PHP-FIG", 1765 | "homepage": "https://www.php-fig.org/" 1766 | } 1767 | ], 1768 | "description": "Common Container Interface (PHP FIG PSR-11)", 1769 | "homepage": "https://github.com/php-fig/container", 1770 | "keywords": [ 1771 | "PSR-11", 1772 | "container", 1773 | "container-interface", 1774 | "container-interop", 1775 | "psr" 1776 | ], 1777 | "support": { 1778 | "issues": "https://github.com/php-fig/container/issues", 1779 | "source": "https://github.com/php-fig/container/tree/2.0.2" 1780 | }, 1781 | "time": "2021-11-05T16:47:00+00:00" 1782 | }, 1783 | { 1784 | "name": "psr/log", 1785 | "version": "3.0.2", 1786 | "source": { 1787 | "type": "git", 1788 | "url": "https://github.com/php-fig/log.git", 1789 | "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3" 1790 | }, 1791 | "dist": { 1792 | "type": "zip", 1793 | "url": "https://api.github.com/repos/php-fig/log/zipball/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", 1794 | "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", 1795 | "shasum": "" 1796 | }, 1797 | "require": { 1798 | "php": ">=8.0.0" 1799 | }, 1800 | "type": "library", 1801 | "extra": { 1802 | "branch-alias": { 1803 | "dev-master": "3.x-dev" 1804 | } 1805 | }, 1806 | "autoload": { 1807 | "psr-4": { 1808 | "Psr\\Log\\": "src" 1809 | } 1810 | }, 1811 | "notification-url": "https://packagist.org/downloads/", 1812 | "license": [ 1813 | "MIT" 1814 | ], 1815 | "authors": [ 1816 | { 1817 | "name": "PHP-FIG", 1818 | "homepage": "https://www.php-fig.org/" 1819 | } 1820 | ], 1821 | "description": "Common interface for logging libraries", 1822 | "homepage": "https://github.com/php-fig/log", 1823 | "keywords": [ 1824 | "log", 1825 | "psr", 1826 | "psr-3" 1827 | ], 1828 | "support": { 1829 | "source": "https://github.com/php-fig/log/tree/3.0.2" 1830 | }, 1831 | "time": "2024-09-11T13:17:53+00:00" 1832 | }, 1833 | { 1834 | "name": "psr/simple-cache", 1835 | "version": "3.0.0", 1836 | "source": { 1837 | "type": "git", 1838 | "url": "https://github.com/php-fig/simple-cache.git", 1839 | "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865" 1840 | }, 1841 | "dist": { 1842 | "type": "zip", 1843 | "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/764e0b3939f5ca87cb904f570ef9be2d78a07865", 1844 | "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865", 1845 | "shasum": "" 1846 | }, 1847 | "require": { 1848 | "php": ">=8.0.0" 1849 | }, 1850 | "type": "library", 1851 | "extra": { 1852 | "branch-alias": { 1853 | "dev-master": "3.0.x-dev" 1854 | } 1855 | }, 1856 | "autoload": { 1857 | "psr-4": { 1858 | "Psr\\SimpleCache\\": "src/" 1859 | } 1860 | }, 1861 | "notification-url": "https://packagist.org/downloads/", 1862 | "license": [ 1863 | "MIT" 1864 | ], 1865 | "authors": [ 1866 | { 1867 | "name": "PHP-FIG", 1868 | "homepage": "https://www.php-fig.org/" 1869 | } 1870 | ], 1871 | "description": "Common interfaces for simple caching", 1872 | "keywords": [ 1873 | "cache", 1874 | "caching", 1875 | "psr", 1876 | "psr-16", 1877 | "simple-cache" 1878 | ], 1879 | "support": { 1880 | "source": "https://github.com/php-fig/simple-cache/tree/3.0.0" 1881 | }, 1882 | "time": "2021-10-29T13:26:27+00:00" 1883 | }, 1884 | { 1885 | "name": "sebastian/cli-parser", 1886 | "version": "3.0.2", 1887 | "source": { 1888 | "type": "git", 1889 | "url": "https://github.com/sebastianbergmann/cli-parser.git", 1890 | "reference": "15c5dd40dc4f38794d383bb95465193f5e0ae180" 1891 | }, 1892 | "dist": { 1893 | "type": "zip", 1894 | "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/15c5dd40dc4f38794d383bb95465193f5e0ae180", 1895 | "reference": "15c5dd40dc4f38794d383bb95465193f5e0ae180", 1896 | "shasum": "" 1897 | }, 1898 | "require": { 1899 | "php": ">=8.2" 1900 | }, 1901 | "require-dev": { 1902 | "phpunit/phpunit": "^11.0" 1903 | }, 1904 | "type": "library", 1905 | "extra": { 1906 | "branch-alias": { 1907 | "dev-main": "3.0-dev" 1908 | } 1909 | }, 1910 | "autoload": { 1911 | "classmap": [ 1912 | "src/" 1913 | ] 1914 | }, 1915 | "notification-url": "https://packagist.org/downloads/", 1916 | "license": [ 1917 | "BSD-3-Clause" 1918 | ], 1919 | "authors": [ 1920 | { 1921 | "name": "Sebastian Bergmann", 1922 | "email": "sebastian@phpunit.de", 1923 | "role": "lead" 1924 | } 1925 | ], 1926 | "description": "Library for parsing CLI options", 1927 | "homepage": "https://github.com/sebastianbergmann/cli-parser", 1928 | "support": { 1929 | "issues": "https://github.com/sebastianbergmann/cli-parser/issues", 1930 | "security": "https://github.com/sebastianbergmann/cli-parser/security/policy", 1931 | "source": "https://github.com/sebastianbergmann/cli-parser/tree/3.0.2" 1932 | }, 1933 | "funding": [ 1934 | { 1935 | "url": "https://github.com/sebastianbergmann", 1936 | "type": "github" 1937 | } 1938 | ], 1939 | "time": "2024-07-03T04:41:36+00:00" 1940 | }, 1941 | { 1942 | "name": "sebastian/code-unit", 1943 | "version": "3.0.1", 1944 | "source": { 1945 | "type": "git", 1946 | "url": "https://github.com/sebastianbergmann/code-unit.git", 1947 | "reference": "6bb7d09d6623567178cf54126afa9c2310114268" 1948 | }, 1949 | "dist": { 1950 | "type": "zip", 1951 | "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/6bb7d09d6623567178cf54126afa9c2310114268", 1952 | "reference": "6bb7d09d6623567178cf54126afa9c2310114268", 1953 | "shasum": "" 1954 | }, 1955 | "require": { 1956 | "php": ">=8.2" 1957 | }, 1958 | "require-dev": { 1959 | "phpunit/phpunit": "^11.0" 1960 | }, 1961 | "type": "library", 1962 | "extra": { 1963 | "branch-alias": { 1964 | "dev-main": "3.0-dev" 1965 | } 1966 | }, 1967 | "autoload": { 1968 | "classmap": [ 1969 | "src/" 1970 | ] 1971 | }, 1972 | "notification-url": "https://packagist.org/downloads/", 1973 | "license": [ 1974 | "BSD-3-Clause" 1975 | ], 1976 | "authors": [ 1977 | { 1978 | "name": "Sebastian Bergmann", 1979 | "email": "sebastian@phpunit.de", 1980 | "role": "lead" 1981 | } 1982 | ], 1983 | "description": "Collection of value objects that represent the PHP code units", 1984 | "homepage": "https://github.com/sebastianbergmann/code-unit", 1985 | "support": { 1986 | "issues": "https://github.com/sebastianbergmann/code-unit/issues", 1987 | "security": "https://github.com/sebastianbergmann/code-unit/security/policy", 1988 | "source": "https://github.com/sebastianbergmann/code-unit/tree/3.0.1" 1989 | }, 1990 | "funding": [ 1991 | { 1992 | "url": "https://github.com/sebastianbergmann", 1993 | "type": "github" 1994 | } 1995 | ], 1996 | "time": "2024-07-03T04:44:28+00:00" 1997 | }, 1998 | { 1999 | "name": "sebastian/code-unit-reverse-lookup", 2000 | "version": "4.0.1", 2001 | "source": { 2002 | "type": "git", 2003 | "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", 2004 | "reference": "183a9b2632194febd219bb9246eee421dad8d45e" 2005 | }, 2006 | "dist": { 2007 | "type": "zip", 2008 | "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/183a9b2632194febd219bb9246eee421dad8d45e", 2009 | "reference": "183a9b2632194febd219bb9246eee421dad8d45e", 2010 | "shasum": "" 2011 | }, 2012 | "require": { 2013 | "php": ">=8.2" 2014 | }, 2015 | "require-dev": { 2016 | "phpunit/phpunit": "^11.0" 2017 | }, 2018 | "type": "library", 2019 | "extra": { 2020 | "branch-alias": { 2021 | "dev-main": "4.0-dev" 2022 | } 2023 | }, 2024 | "autoload": { 2025 | "classmap": [ 2026 | "src/" 2027 | ] 2028 | }, 2029 | "notification-url": "https://packagist.org/downloads/", 2030 | "license": [ 2031 | "BSD-3-Clause" 2032 | ], 2033 | "authors": [ 2034 | { 2035 | "name": "Sebastian Bergmann", 2036 | "email": "sebastian@phpunit.de" 2037 | } 2038 | ], 2039 | "description": "Looks up which function or method a line of code belongs to", 2040 | "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", 2041 | "support": { 2042 | "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", 2043 | "security": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/security/policy", 2044 | "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/4.0.1" 2045 | }, 2046 | "funding": [ 2047 | { 2048 | "url": "https://github.com/sebastianbergmann", 2049 | "type": "github" 2050 | } 2051 | ], 2052 | "time": "2024-07-03T04:45:54+00:00" 2053 | }, 2054 | { 2055 | "name": "sebastian/comparator", 2056 | "version": "6.2.1", 2057 | "source": { 2058 | "type": "git", 2059 | "url": "https://github.com/sebastianbergmann/comparator.git", 2060 | "reference": "43d129d6a0f81c78bee378b46688293eb7ea3739" 2061 | }, 2062 | "dist": { 2063 | "type": "zip", 2064 | "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/43d129d6a0f81c78bee378b46688293eb7ea3739", 2065 | "reference": "43d129d6a0f81c78bee378b46688293eb7ea3739", 2066 | "shasum": "" 2067 | }, 2068 | "require": { 2069 | "ext-dom": "*", 2070 | "ext-mbstring": "*", 2071 | "php": ">=8.2", 2072 | "sebastian/diff": "^6.0", 2073 | "sebastian/exporter": "^6.0" 2074 | }, 2075 | "require-dev": { 2076 | "phpunit/phpunit": "^11.4" 2077 | }, 2078 | "type": "library", 2079 | "extra": { 2080 | "branch-alias": { 2081 | "dev-main": "6.2-dev" 2082 | } 2083 | }, 2084 | "autoload": { 2085 | "classmap": [ 2086 | "src/" 2087 | ] 2088 | }, 2089 | "notification-url": "https://packagist.org/downloads/", 2090 | "license": [ 2091 | "BSD-3-Clause" 2092 | ], 2093 | "authors": [ 2094 | { 2095 | "name": "Sebastian Bergmann", 2096 | "email": "sebastian@phpunit.de" 2097 | }, 2098 | { 2099 | "name": "Jeff Welch", 2100 | "email": "whatthejeff@gmail.com" 2101 | }, 2102 | { 2103 | "name": "Volker Dusch", 2104 | "email": "github@wallbash.com" 2105 | }, 2106 | { 2107 | "name": "Bernhard Schussek", 2108 | "email": "bschussek@2bepublished.at" 2109 | } 2110 | ], 2111 | "description": "Provides the functionality to compare PHP values for equality", 2112 | "homepage": "https://github.com/sebastianbergmann/comparator", 2113 | "keywords": [ 2114 | "comparator", 2115 | "compare", 2116 | "equality" 2117 | ], 2118 | "support": { 2119 | "issues": "https://github.com/sebastianbergmann/comparator/issues", 2120 | "security": "https://github.com/sebastianbergmann/comparator/security/policy", 2121 | "source": "https://github.com/sebastianbergmann/comparator/tree/6.2.1" 2122 | }, 2123 | "funding": [ 2124 | { 2125 | "url": "https://github.com/sebastianbergmann", 2126 | "type": "github" 2127 | } 2128 | ], 2129 | "time": "2024-10-31T05:30:08+00:00" 2130 | }, 2131 | { 2132 | "name": "sebastian/complexity", 2133 | "version": "4.0.1", 2134 | "source": { 2135 | "type": "git", 2136 | "url": "https://github.com/sebastianbergmann/complexity.git", 2137 | "reference": "ee41d384ab1906c68852636b6de493846e13e5a0" 2138 | }, 2139 | "dist": { 2140 | "type": "zip", 2141 | "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/ee41d384ab1906c68852636b6de493846e13e5a0", 2142 | "reference": "ee41d384ab1906c68852636b6de493846e13e5a0", 2143 | "shasum": "" 2144 | }, 2145 | "require": { 2146 | "nikic/php-parser": "^5.0", 2147 | "php": ">=8.2" 2148 | }, 2149 | "require-dev": { 2150 | "phpunit/phpunit": "^11.0" 2151 | }, 2152 | "type": "library", 2153 | "extra": { 2154 | "branch-alias": { 2155 | "dev-main": "4.0-dev" 2156 | } 2157 | }, 2158 | "autoload": { 2159 | "classmap": [ 2160 | "src/" 2161 | ] 2162 | }, 2163 | "notification-url": "https://packagist.org/downloads/", 2164 | "license": [ 2165 | "BSD-3-Clause" 2166 | ], 2167 | "authors": [ 2168 | { 2169 | "name": "Sebastian Bergmann", 2170 | "email": "sebastian@phpunit.de", 2171 | "role": "lead" 2172 | } 2173 | ], 2174 | "description": "Library for calculating the complexity of PHP code units", 2175 | "homepage": "https://github.com/sebastianbergmann/complexity", 2176 | "support": { 2177 | "issues": "https://github.com/sebastianbergmann/complexity/issues", 2178 | "security": "https://github.com/sebastianbergmann/complexity/security/policy", 2179 | "source": "https://github.com/sebastianbergmann/complexity/tree/4.0.1" 2180 | }, 2181 | "funding": [ 2182 | { 2183 | "url": "https://github.com/sebastianbergmann", 2184 | "type": "github" 2185 | } 2186 | ], 2187 | "time": "2024-07-03T04:49:50+00:00" 2188 | }, 2189 | { 2190 | "name": "sebastian/diff", 2191 | "version": "6.0.2", 2192 | "source": { 2193 | "type": "git", 2194 | "url": "https://github.com/sebastianbergmann/diff.git", 2195 | "reference": "b4ccd857127db5d41a5b676f24b51371d76d8544" 2196 | }, 2197 | "dist": { 2198 | "type": "zip", 2199 | "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/b4ccd857127db5d41a5b676f24b51371d76d8544", 2200 | "reference": "b4ccd857127db5d41a5b676f24b51371d76d8544", 2201 | "shasum": "" 2202 | }, 2203 | "require": { 2204 | "php": ">=8.2" 2205 | }, 2206 | "require-dev": { 2207 | "phpunit/phpunit": "^11.0", 2208 | "symfony/process": "^4.2 || ^5" 2209 | }, 2210 | "type": "library", 2211 | "extra": { 2212 | "branch-alias": { 2213 | "dev-main": "6.0-dev" 2214 | } 2215 | }, 2216 | "autoload": { 2217 | "classmap": [ 2218 | "src/" 2219 | ] 2220 | }, 2221 | "notification-url": "https://packagist.org/downloads/", 2222 | "license": [ 2223 | "BSD-3-Clause" 2224 | ], 2225 | "authors": [ 2226 | { 2227 | "name": "Sebastian Bergmann", 2228 | "email": "sebastian@phpunit.de" 2229 | }, 2230 | { 2231 | "name": "Kore Nordmann", 2232 | "email": "mail@kore-nordmann.de" 2233 | } 2234 | ], 2235 | "description": "Diff implementation", 2236 | "homepage": "https://github.com/sebastianbergmann/diff", 2237 | "keywords": [ 2238 | "diff", 2239 | "udiff", 2240 | "unidiff", 2241 | "unified diff" 2242 | ], 2243 | "support": { 2244 | "issues": "https://github.com/sebastianbergmann/diff/issues", 2245 | "security": "https://github.com/sebastianbergmann/diff/security/policy", 2246 | "source": "https://github.com/sebastianbergmann/diff/tree/6.0.2" 2247 | }, 2248 | "funding": [ 2249 | { 2250 | "url": "https://github.com/sebastianbergmann", 2251 | "type": "github" 2252 | } 2253 | ], 2254 | "time": "2024-07-03T04:53:05+00:00" 2255 | }, 2256 | { 2257 | "name": "sebastian/environment", 2258 | "version": "7.2.0", 2259 | "source": { 2260 | "type": "git", 2261 | "url": "https://github.com/sebastianbergmann/environment.git", 2262 | "reference": "855f3ae0ab316bbafe1ba4e16e9f3c078d24a0c5" 2263 | }, 2264 | "dist": { 2265 | "type": "zip", 2266 | "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/855f3ae0ab316bbafe1ba4e16e9f3c078d24a0c5", 2267 | "reference": "855f3ae0ab316bbafe1ba4e16e9f3c078d24a0c5", 2268 | "shasum": "" 2269 | }, 2270 | "require": { 2271 | "php": ">=8.2" 2272 | }, 2273 | "require-dev": { 2274 | "phpunit/phpunit": "^11.0" 2275 | }, 2276 | "suggest": { 2277 | "ext-posix": "*" 2278 | }, 2279 | "type": "library", 2280 | "extra": { 2281 | "branch-alias": { 2282 | "dev-main": "7.2-dev" 2283 | } 2284 | }, 2285 | "autoload": { 2286 | "classmap": [ 2287 | "src/" 2288 | ] 2289 | }, 2290 | "notification-url": "https://packagist.org/downloads/", 2291 | "license": [ 2292 | "BSD-3-Clause" 2293 | ], 2294 | "authors": [ 2295 | { 2296 | "name": "Sebastian Bergmann", 2297 | "email": "sebastian@phpunit.de" 2298 | } 2299 | ], 2300 | "description": "Provides functionality to handle HHVM/PHP environments", 2301 | "homepage": "https://github.com/sebastianbergmann/environment", 2302 | "keywords": [ 2303 | "Xdebug", 2304 | "environment", 2305 | "hhvm" 2306 | ], 2307 | "support": { 2308 | "issues": "https://github.com/sebastianbergmann/environment/issues", 2309 | "security": "https://github.com/sebastianbergmann/environment/security/policy", 2310 | "source": "https://github.com/sebastianbergmann/environment/tree/7.2.0" 2311 | }, 2312 | "funding": [ 2313 | { 2314 | "url": "https://github.com/sebastianbergmann", 2315 | "type": "github" 2316 | } 2317 | ], 2318 | "time": "2024-07-03T04:54:44+00:00" 2319 | }, 2320 | { 2321 | "name": "sebastian/exporter", 2322 | "version": "6.1.3", 2323 | "source": { 2324 | "type": "git", 2325 | "url": "https://github.com/sebastianbergmann/exporter.git", 2326 | "reference": "c414673eee9a8f9d51bbf8d61fc9e3ef1e85b20e" 2327 | }, 2328 | "dist": { 2329 | "type": "zip", 2330 | "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/c414673eee9a8f9d51bbf8d61fc9e3ef1e85b20e", 2331 | "reference": "c414673eee9a8f9d51bbf8d61fc9e3ef1e85b20e", 2332 | "shasum": "" 2333 | }, 2334 | "require": { 2335 | "ext-mbstring": "*", 2336 | "php": ">=8.2", 2337 | "sebastian/recursion-context": "^6.0" 2338 | }, 2339 | "require-dev": { 2340 | "phpunit/phpunit": "^11.2" 2341 | }, 2342 | "type": "library", 2343 | "extra": { 2344 | "branch-alias": { 2345 | "dev-main": "6.1-dev" 2346 | } 2347 | }, 2348 | "autoload": { 2349 | "classmap": [ 2350 | "src/" 2351 | ] 2352 | }, 2353 | "notification-url": "https://packagist.org/downloads/", 2354 | "license": [ 2355 | "BSD-3-Clause" 2356 | ], 2357 | "authors": [ 2358 | { 2359 | "name": "Sebastian Bergmann", 2360 | "email": "sebastian@phpunit.de" 2361 | }, 2362 | { 2363 | "name": "Jeff Welch", 2364 | "email": "whatthejeff@gmail.com" 2365 | }, 2366 | { 2367 | "name": "Volker Dusch", 2368 | "email": "github@wallbash.com" 2369 | }, 2370 | { 2371 | "name": "Adam Harvey", 2372 | "email": "aharvey@php.net" 2373 | }, 2374 | { 2375 | "name": "Bernhard Schussek", 2376 | "email": "bschussek@gmail.com" 2377 | } 2378 | ], 2379 | "description": "Provides the functionality to export PHP variables for visualization", 2380 | "homepage": "https://www.github.com/sebastianbergmann/exporter", 2381 | "keywords": [ 2382 | "export", 2383 | "exporter" 2384 | ], 2385 | "support": { 2386 | "issues": "https://github.com/sebastianbergmann/exporter/issues", 2387 | "security": "https://github.com/sebastianbergmann/exporter/security/policy", 2388 | "source": "https://github.com/sebastianbergmann/exporter/tree/6.1.3" 2389 | }, 2390 | "funding": [ 2391 | { 2392 | "url": "https://github.com/sebastianbergmann", 2393 | "type": "github" 2394 | } 2395 | ], 2396 | "time": "2024-07-03T04:56:19+00:00" 2397 | }, 2398 | { 2399 | "name": "sebastian/global-state", 2400 | "version": "7.0.2", 2401 | "source": { 2402 | "type": "git", 2403 | "url": "https://github.com/sebastianbergmann/global-state.git", 2404 | "reference": "3be331570a721f9a4b5917f4209773de17f747d7" 2405 | }, 2406 | "dist": { 2407 | "type": "zip", 2408 | "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/3be331570a721f9a4b5917f4209773de17f747d7", 2409 | "reference": "3be331570a721f9a4b5917f4209773de17f747d7", 2410 | "shasum": "" 2411 | }, 2412 | "require": { 2413 | "php": ">=8.2", 2414 | "sebastian/object-reflector": "^4.0", 2415 | "sebastian/recursion-context": "^6.0" 2416 | }, 2417 | "require-dev": { 2418 | "ext-dom": "*", 2419 | "phpunit/phpunit": "^11.0" 2420 | }, 2421 | "type": "library", 2422 | "extra": { 2423 | "branch-alias": { 2424 | "dev-main": "7.0-dev" 2425 | } 2426 | }, 2427 | "autoload": { 2428 | "classmap": [ 2429 | "src/" 2430 | ] 2431 | }, 2432 | "notification-url": "https://packagist.org/downloads/", 2433 | "license": [ 2434 | "BSD-3-Clause" 2435 | ], 2436 | "authors": [ 2437 | { 2438 | "name": "Sebastian Bergmann", 2439 | "email": "sebastian@phpunit.de" 2440 | } 2441 | ], 2442 | "description": "Snapshotting of global state", 2443 | "homepage": "https://www.github.com/sebastianbergmann/global-state", 2444 | "keywords": [ 2445 | "global state" 2446 | ], 2447 | "support": { 2448 | "issues": "https://github.com/sebastianbergmann/global-state/issues", 2449 | "security": "https://github.com/sebastianbergmann/global-state/security/policy", 2450 | "source": "https://github.com/sebastianbergmann/global-state/tree/7.0.2" 2451 | }, 2452 | "funding": [ 2453 | { 2454 | "url": "https://github.com/sebastianbergmann", 2455 | "type": "github" 2456 | } 2457 | ], 2458 | "time": "2024-07-03T04:57:36+00:00" 2459 | }, 2460 | { 2461 | "name": "sebastian/lines-of-code", 2462 | "version": "3.0.1", 2463 | "source": { 2464 | "type": "git", 2465 | "url": "https://github.com/sebastianbergmann/lines-of-code.git", 2466 | "reference": "d36ad0d782e5756913e42ad87cb2890f4ffe467a" 2467 | }, 2468 | "dist": { 2469 | "type": "zip", 2470 | "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/d36ad0d782e5756913e42ad87cb2890f4ffe467a", 2471 | "reference": "d36ad0d782e5756913e42ad87cb2890f4ffe467a", 2472 | "shasum": "" 2473 | }, 2474 | "require": { 2475 | "nikic/php-parser": "^5.0", 2476 | "php": ">=8.2" 2477 | }, 2478 | "require-dev": { 2479 | "phpunit/phpunit": "^11.0" 2480 | }, 2481 | "type": "library", 2482 | "extra": { 2483 | "branch-alias": { 2484 | "dev-main": "3.0-dev" 2485 | } 2486 | }, 2487 | "autoload": { 2488 | "classmap": [ 2489 | "src/" 2490 | ] 2491 | }, 2492 | "notification-url": "https://packagist.org/downloads/", 2493 | "license": [ 2494 | "BSD-3-Clause" 2495 | ], 2496 | "authors": [ 2497 | { 2498 | "name": "Sebastian Bergmann", 2499 | "email": "sebastian@phpunit.de", 2500 | "role": "lead" 2501 | } 2502 | ], 2503 | "description": "Library for counting the lines of code in PHP source code", 2504 | "homepage": "https://github.com/sebastianbergmann/lines-of-code", 2505 | "support": { 2506 | "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", 2507 | "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", 2508 | "source": "https://github.com/sebastianbergmann/lines-of-code/tree/3.0.1" 2509 | }, 2510 | "funding": [ 2511 | { 2512 | "url": "https://github.com/sebastianbergmann", 2513 | "type": "github" 2514 | } 2515 | ], 2516 | "time": "2024-07-03T04:58:38+00:00" 2517 | }, 2518 | { 2519 | "name": "sebastian/object-enumerator", 2520 | "version": "6.0.1", 2521 | "source": { 2522 | "type": "git", 2523 | "url": "https://github.com/sebastianbergmann/object-enumerator.git", 2524 | "reference": "f5b498e631a74204185071eb41f33f38d64608aa" 2525 | }, 2526 | "dist": { 2527 | "type": "zip", 2528 | "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/f5b498e631a74204185071eb41f33f38d64608aa", 2529 | "reference": "f5b498e631a74204185071eb41f33f38d64608aa", 2530 | "shasum": "" 2531 | }, 2532 | "require": { 2533 | "php": ">=8.2", 2534 | "sebastian/object-reflector": "^4.0", 2535 | "sebastian/recursion-context": "^6.0" 2536 | }, 2537 | "require-dev": { 2538 | "phpunit/phpunit": "^11.0" 2539 | }, 2540 | "type": "library", 2541 | "extra": { 2542 | "branch-alias": { 2543 | "dev-main": "6.0-dev" 2544 | } 2545 | }, 2546 | "autoload": { 2547 | "classmap": [ 2548 | "src/" 2549 | ] 2550 | }, 2551 | "notification-url": "https://packagist.org/downloads/", 2552 | "license": [ 2553 | "BSD-3-Clause" 2554 | ], 2555 | "authors": [ 2556 | { 2557 | "name": "Sebastian Bergmann", 2558 | "email": "sebastian@phpunit.de" 2559 | } 2560 | ], 2561 | "description": "Traverses array structures and object graphs to enumerate all referenced objects", 2562 | "homepage": "https://github.com/sebastianbergmann/object-enumerator/", 2563 | "support": { 2564 | "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", 2565 | "security": "https://github.com/sebastianbergmann/object-enumerator/security/policy", 2566 | "source": "https://github.com/sebastianbergmann/object-enumerator/tree/6.0.1" 2567 | }, 2568 | "funding": [ 2569 | { 2570 | "url": "https://github.com/sebastianbergmann", 2571 | "type": "github" 2572 | } 2573 | ], 2574 | "time": "2024-07-03T05:00:13+00:00" 2575 | }, 2576 | { 2577 | "name": "sebastian/object-reflector", 2578 | "version": "4.0.1", 2579 | "source": { 2580 | "type": "git", 2581 | "url": "https://github.com/sebastianbergmann/object-reflector.git", 2582 | "reference": "6e1a43b411b2ad34146dee7524cb13a068bb35f9" 2583 | }, 2584 | "dist": { 2585 | "type": "zip", 2586 | "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/6e1a43b411b2ad34146dee7524cb13a068bb35f9", 2587 | "reference": "6e1a43b411b2ad34146dee7524cb13a068bb35f9", 2588 | "shasum": "" 2589 | }, 2590 | "require": { 2591 | "php": ">=8.2" 2592 | }, 2593 | "require-dev": { 2594 | "phpunit/phpunit": "^11.0" 2595 | }, 2596 | "type": "library", 2597 | "extra": { 2598 | "branch-alias": { 2599 | "dev-main": "4.0-dev" 2600 | } 2601 | }, 2602 | "autoload": { 2603 | "classmap": [ 2604 | "src/" 2605 | ] 2606 | }, 2607 | "notification-url": "https://packagist.org/downloads/", 2608 | "license": [ 2609 | "BSD-3-Clause" 2610 | ], 2611 | "authors": [ 2612 | { 2613 | "name": "Sebastian Bergmann", 2614 | "email": "sebastian@phpunit.de" 2615 | } 2616 | ], 2617 | "description": "Allows reflection of object attributes, including inherited and non-public ones", 2618 | "homepage": "https://github.com/sebastianbergmann/object-reflector/", 2619 | "support": { 2620 | "issues": "https://github.com/sebastianbergmann/object-reflector/issues", 2621 | "security": "https://github.com/sebastianbergmann/object-reflector/security/policy", 2622 | "source": "https://github.com/sebastianbergmann/object-reflector/tree/4.0.1" 2623 | }, 2624 | "funding": [ 2625 | { 2626 | "url": "https://github.com/sebastianbergmann", 2627 | "type": "github" 2628 | } 2629 | ], 2630 | "time": "2024-07-03T05:01:32+00:00" 2631 | }, 2632 | { 2633 | "name": "sebastian/recursion-context", 2634 | "version": "6.0.2", 2635 | "source": { 2636 | "type": "git", 2637 | "url": "https://github.com/sebastianbergmann/recursion-context.git", 2638 | "reference": "694d156164372abbd149a4b85ccda2e4670c0e16" 2639 | }, 2640 | "dist": { 2641 | "type": "zip", 2642 | "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/694d156164372abbd149a4b85ccda2e4670c0e16", 2643 | "reference": "694d156164372abbd149a4b85ccda2e4670c0e16", 2644 | "shasum": "" 2645 | }, 2646 | "require": { 2647 | "php": ">=8.2" 2648 | }, 2649 | "require-dev": { 2650 | "phpunit/phpunit": "^11.0" 2651 | }, 2652 | "type": "library", 2653 | "extra": { 2654 | "branch-alias": { 2655 | "dev-main": "6.0-dev" 2656 | } 2657 | }, 2658 | "autoload": { 2659 | "classmap": [ 2660 | "src/" 2661 | ] 2662 | }, 2663 | "notification-url": "https://packagist.org/downloads/", 2664 | "license": [ 2665 | "BSD-3-Clause" 2666 | ], 2667 | "authors": [ 2668 | { 2669 | "name": "Sebastian Bergmann", 2670 | "email": "sebastian@phpunit.de" 2671 | }, 2672 | { 2673 | "name": "Jeff Welch", 2674 | "email": "whatthejeff@gmail.com" 2675 | }, 2676 | { 2677 | "name": "Adam Harvey", 2678 | "email": "aharvey@php.net" 2679 | } 2680 | ], 2681 | "description": "Provides functionality to recursively process PHP variables", 2682 | "homepage": "https://github.com/sebastianbergmann/recursion-context", 2683 | "support": { 2684 | "issues": "https://github.com/sebastianbergmann/recursion-context/issues", 2685 | "security": "https://github.com/sebastianbergmann/recursion-context/security/policy", 2686 | "source": "https://github.com/sebastianbergmann/recursion-context/tree/6.0.2" 2687 | }, 2688 | "funding": [ 2689 | { 2690 | "url": "https://github.com/sebastianbergmann", 2691 | "type": "github" 2692 | } 2693 | ], 2694 | "time": "2024-07-03T05:10:34+00:00" 2695 | }, 2696 | { 2697 | "name": "sebastian/type", 2698 | "version": "5.1.0", 2699 | "source": { 2700 | "type": "git", 2701 | "url": "https://github.com/sebastianbergmann/type.git", 2702 | "reference": "461b9c5da241511a2a0e8f240814fb23ce5c0aac" 2703 | }, 2704 | "dist": { 2705 | "type": "zip", 2706 | "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/461b9c5da241511a2a0e8f240814fb23ce5c0aac", 2707 | "reference": "461b9c5da241511a2a0e8f240814fb23ce5c0aac", 2708 | "shasum": "" 2709 | }, 2710 | "require": { 2711 | "php": ">=8.2" 2712 | }, 2713 | "require-dev": { 2714 | "phpunit/phpunit": "^11.3" 2715 | }, 2716 | "type": "library", 2717 | "extra": { 2718 | "branch-alias": { 2719 | "dev-main": "5.1-dev" 2720 | } 2721 | }, 2722 | "autoload": { 2723 | "classmap": [ 2724 | "src/" 2725 | ] 2726 | }, 2727 | "notification-url": "https://packagist.org/downloads/", 2728 | "license": [ 2729 | "BSD-3-Clause" 2730 | ], 2731 | "authors": [ 2732 | { 2733 | "name": "Sebastian Bergmann", 2734 | "email": "sebastian@phpunit.de", 2735 | "role": "lead" 2736 | } 2737 | ], 2738 | "description": "Collection of value objects that represent the types of the PHP type system", 2739 | "homepage": "https://github.com/sebastianbergmann/type", 2740 | "support": { 2741 | "issues": "https://github.com/sebastianbergmann/type/issues", 2742 | "security": "https://github.com/sebastianbergmann/type/security/policy", 2743 | "source": "https://github.com/sebastianbergmann/type/tree/5.1.0" 2744 | }, 2745 | "funding": [ 2746 | { 2747 | "url": "https://github.com/sebastianbergmann", 2748 | "type": "github" 2749 | } 2750 | ], 2751 | "time": "2024-09-17T13:12:04+00:00" 2752 | }, 2753 | { 2754 | "name": "sebastian/version", 2755 | "version": "5.0.2", 2756 | "source": { 2757 | "type": "git", 2758 | "url": "https://github.com/sebastianbergmann/version.git", 2759 | "reference": "c687e3387b99f5b03b6caa64c74b63e2936ff874" 2760 | }, 2761 | "dist": { 2762 | "type": "zip", 2763 | "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c687e3387b99f5b03b6caa64c74b63e2936ff874", 2764 | "reference": "c687e3387b99f5b03b6caa64c74b63e2936ff874", 2765 | "shasum": "" 2766 | }, 2767 | "require": { 2768 | "php": ">=8.2" 2769 | }, 2770 | "type": "library", 2771 | "extra": { 2772 | "branch-alias": { 2773 | "dev-main": "5.0-dev" 2774 | } 2775 | }, 2776 | "autoload": { 2777 | "classmap": [ 2778 | "src/" 2779 | ] 2780 | }, 2781 | "notification-url": "https://packagist.org/downloads/", 2782 | "license": [ 2783 | "BSD-3-Clause" 2784 | ], 2785 | "authors": [ 2786 | { 2787 | "name": "Sebastian Bergmann", 2788 | "email": "sebastian@phpunit.de", 2789 | "role": "lead" 2790 | } 2791 | ], 2792 | "description": "Library that helps with managing the version number of Git-hosted PHP projects", 2793 | "homepage": "https://github.com/sebastianbergmann/version", 2794 | "support": { 2795 | "issues": "https://github.com/sebastianbergmann/version/issues", 2796 | "security": "https://github.com/sebastianbergmann/version/security/policy", 2797 | "source": "https://github.com/sebastianbergmann/version/tree/5.0.2" 2798 | }, 2799 | "funding": [ 2800 | { 2801 | "url": "https://github.com/sebastianbergmann", 2802 | "type": "github" 2803 | } 2804 | ], 2805 | "time": "2024-10-09T05:16:32+00:00" 2806 | }, 2807 | { 2808 | "name": "symfony/console", 2809 | "version": "v7.2.0", 2810 | "source": { 2811 | "type": "git", 2812 | "url": "https://github.com/symfony/console.git", 2813 | "reference": "23c8aae6d764e2bae02d2a99f7532a7f6ed619cf" 2814 | }, 2815 | "dist": { 2816 | "type": "zip", 2817 | "url": "https://api.github.com/repos/symfony/console/zipball/23c8aae6d764e2bae02d2a99f7532a7f6ed619cf", 2818 | "reference": "23c8aae6d764e2bae02d2a99f7532a7f6ed619cf", 2819 | "shasum": "" 2820 | }, 2821 | "require": { 2822 | "php": ">=8.2", 2823 | "symfony/polyfill-mbstring": "~1.0", 2824 | "symfony/service-contracts": "^2.5|^3", 2825 | "symfony/string": "^6.4|^7.0" 2826 | }, 2827 | "conflict": { 2828 | "symfony/dependency-injection": "<6.4", 2829 | "symfony/dotenv": "<6.4", 2830 | "symfony/event-dispatcher": "<6.4", 2831 | "symfony/lock": "<6.4", 2832 | "symfony/process": "<6.4" 2833 | }, 2834 | "provide": { 2835 | "psr/log-implementation": "1.0|2.0|3.0" 2836 | }, 2837 | "require-dev": { 2838 | "psr/log": "^1|^2|^3", 2839 | "symfony/config": "^6.4|^7.0", 2840 | "symfony/dependency-injection": "^6.4|^7.0", 2841 | "symfony/event-dispatcher": "^6.4|^7.0", 2842 | "symfony/http-foundation": "^6.4|^7.0", 2843 | "symfony/http-kernel": "^6.4|^7.0", 2844 | "symfony/lock": "^6.4|^7.0", 2845 | "symfony/messenger": "^6.4|^7.0", 2846 | "symfony/process": "^6.4|^7.0", 2847 | "symfony/stopwatch": "^6.4|^7.0", 2848 | "symfony/var-dumper": "^6.4|^7.0" 2849 | }, 2850 | "type": "library", 2851 | "autoload": { 2852 | "psr-4": { 2853 | "Symfony\\Component\\Console\\": "" 2854 | }, 2855 | "exclude-from-classmap": [ 2856 | "/Tests/" 2857 | ] 2858 | }, 2859 | "notification-url": "https://packagist.org/downloads/", 2860 | "license": [ 2861 | "MIT" 2862 | ], 2863 | "authors": [ 2864 | { 2865 | "name": "Fabien Potencier", 2866 | "email": "fabien@symfony.com" 2867 | }, 2868 | { 2869 | "name": "Symfony Community", 2870 | "homepage": "https://symfony.com/contributors" 2871 | } 2872 | ], 2873 | "description": "Eases the creation of beautiful and testable command line interfaces", 2874 | "homepage": "https://symfony.com", 2875 | "keywords": [ 2876 | "cli", 2877 | "command-line", 2878 | "console", 2879 | "terminal" 2880 | ], 2881 | "support": { 2882 | "source": "https://github.com/symfony/console/tree/v7.2.0" 2883 | }, 2884 | "funding": [ 2885 | { 2886 | "url": "https://symfony.com/sponsor", 2887 | "type": "custom" 2888 | }, 2889 | { 2890 | "url": "https://github.com/fabpot", 2891 | "type": "github" 2892 | }, 2893 | { 2894 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2895 | "type": "tidelift" 2896 | } 2897 | ], 2898 | "time": "2024-11-06T14:24:19+00:00" 2899 | }, 2900 | { 2901 | "name": "symfony/deprecation-contracts", 2902 | "version": "v3.5.1", 2903 | "source": { 2904 | "type": "git", 2905 | "url": "https://github.com/symfony/deprecation-contracts.git", 2906 | "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6" 2907 | }, 2908 | "dist": { 2909 | "type": "zip", 2910 | "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", 2911 | "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", 2912 | "shasum": "" 2913 | }, 2914 | "require": { 2915 | "php": ">=8.1" 2916 | }, 2917 | "type": "library", 2918 | "extra": { 2919 | "branch-alias": { 2920 | "dev-main": "3.5-dev" 2921 | }, 2922 | "thanks": { 2923 | "name": "symfony/contracts", 2924 | "url": "https://github.com/symfony/contracts" 2925 | } 2926 | }, 2927 | "autoload": { 2928 | "files": [ 2929 | "function.php" 2930 | ] 2931 | }, 2932 | "notification-url": "https://packagist.org/downloads/", 2933 | "license": [ 2934 | "MIT" 2935 | ], 2936 | "authors": [ 2937 | { 2938 | "name": "Nicolas Grekas", 2939 | "email": "p@tchwork.com" 2940 | }, 2941 | { 2942 | "name": "Symfony Community", 2943 | "homepage": "https://symfony.com/contributors" 2944 | } 2945 | ], 2946 | "description": "A generic function and convention to trigger deprecation notices", 2947 | "homepage": "https://symfony.com", 2948 | "support": { 2949 | "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.1" 2950 | }, 2951 | "funding": [ 2952 | { 2953 | "url": "https://symfony.com/sponsor", 2954 | "type": "custom" 2955 | }, 2956 | { 2957 | "url": "https://github.com/fabpot", 2958 | "type": "github" 2959 | }, 2960 | { 2961 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2962 | "type": "tidelift" 2963 | } 2964 | ], 2965 | "time": "2024-09-25T14:20:29+00:00" 2966 | }, 2967 | { 2968 | "name": "symfony/finder", 2969 | "version": "v7.2.0", 2970 | "source": { 2971 | "type": "git", 2972 | "url": "https://github.com/symfony/finder.git", 2973 | "reference": "6de263e5868b9a137602dd1e33e4d48bfae99c49" 2974 | }, 2975 | "dist": { 2976 | "type": "zip", 2977 | "url": "https://api.github.com/repos/symfony/finder/zipball/6de263e5868b9a137602dd1e33e4d48bfae99c49", 2978 | "reference": "6de263e5868b9a137602dd1e33e4d48bfae99c49", 2979 | "shasum": "" 2980 | }, 2981 | "require": { 2982 | "php": ">=8.2" 2983 | }, 2984 | "require-dev": { 2985 | "symfony/filesystem": "^6.4|^7.0" 2986 | }, 2987 | "type": "library", 2988 | "autoload": { 2989 | "psr-4": { 2990 | "Symfony\\Component\\Finder\\": "" 2991 | }, 2992 | "exclude-from-classmap": [ 2993 | "/Tests/" 2994 | ] 2995 | }, 2996 | "notification-url": "https://packagist.org/downloads/", 2997 | "license": [ 2998 | "MIT" 2999 | ], 3000 | "authors": [ 3001 | { 3002 | "name": "Fabien Potencier", 3003 | "email": "fabien@symfony.com" 3004 | }, 3005 | { 3006 | "name": "Symfony Community", 3007 | "homepage": "https://symfony.com/contributors" 3008 | } 3009 | ], 3010 | "description": "Finds files and directories via an intuitive fluent interface", 3011 | "homepage": "https://symfony.com", 3012 | "support": { 3013 | "source": "https://github.com/symfony/finder/tree/v7.2.0" 3014 | }, 3015 | "funding": [ 3016 | { 3017 | "url": "https://symfony.com/sponsor", 3018 | "type": "custom" 3019 | }, 3020 | { 3021 | "url": "https://github.com/fabpot", 3022 | "type": "github" 3023 | }, 3024 | { 3025 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3026 | "type": "tidelift" 3027 | } 3028 | ], 3029 | "time": "2024-10-23T06:56:12+00:00" 3030 | }, 3031 | { 3032 | "name": "symfony/polyfill-ctype", 3033 | "version": "v1.31.0", 3034 | "source": { 3035 | "type": "git", 3036 | "url": "https://github.com/symfony/polyfill-ctype.git", 3037 | "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638" 3038 | }, 3039 | "dist": { 3040 | "type": "zip", 3041 | "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638", 3042 | "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638", 3043 | "shasum": "" 3044 | }, 3045 | "require": { 3046 | "php": ">=7.2" 3047 | }, 3048 | "provide": { 3049 | "ext-ctype": "*" 3050 | }, 3051 | "suggest": { 3052 | "ext-ctype": "For best performance" 3053 | }, 3054 | "type": "library", 3055 | "extra": { 3056 | "thanks": { 3057 | "name": "symfony/polyfill", 3058 | "url": "https://github.com/symfony/polyfill" 3059 | } 3060 | }, 3061 | "autoload": { 3062 | "files": [ 3063 | "bootstrap.php" 3064 | ], 3065 | "psr-4": { 3066 | "Symfony\\Polyfill\\Ctype\\": "" 3067 | } 3068 | }, 3069 | "notification-url": "https://packagist.org/downloads/", 3070 | "license": [ 3071 | "MIT" 3072 | ], 3073 | "authors": [ 3074 | { 3075 | "name": "Gert de Pagter", 3076 | "email": "BackEndTea@gmail.com" 3077 | }, 3078 | { 3079 | "name": "Symfony Community", 3080 | "homepage": "https://symfony.com/contributors" 3081 | } 3082 | ], 3083 | "description": "Symfony polyfill for ctype functions", 3084 | "homepage": "https://symfony.com", 3085 | "keywords": [ 3086 | "compatibility", 3087 | "ctype", 3088 | "polyfill", 3089 | "portable" 3090 | ], 3091 | "support": { 3092 | "source": "https://github.com/symfony/polyfill-ctype/tree/v1.31.0" 3093 | }, 3094 | "funding": [ 3095 | { 3096 | "url": "https://symfony.com/sponsor", 3097 | "type": "custom" 3098 | }, 3099 | { 3100 | "url": "https://github.com/fabpot", 3101 | "type": "github" 3102 | }, 3103 | { 3104 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3105 | "type": "tidelift" 3106 | } 3107 | ], 3108 | "time": "2024-09-09T11:45:10+00:00" 3109 | }, 3110 | { 3111 | "name": "symfony/polyfill-intl-grapheme", 3112 | "version": "v1.31.0", 3113 | "source": { 3114 | "type": "git", 3115 | "url": "https://github.com/symfony/polyfill-intl-grapheme.git", 3116 | "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe" 3117 | }, 3118 | "dist": { 3119 | "type": "zip", 3120 | "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", 3121 | "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", 3122 | "shasum": "" 3123 | }, 3124 | "require": { 3125 | "php": ">=7.2" 3126 | }, 3127 | "suggest": { 3128 | "ext-intl": "For best performance" 3129 | }, 3130 | "type": "library", 3131 | "extra": { 3132 | "thanks": { 3133 | "name": "symfony/polyfill", 3134 | "url": "https://github.com/symfony/polyfill" 3135 | } 3136 | }, 3137 | "autoload": { 3138 | "files": [ 3139 | "bootstrap.php" 3140 | ], 3141 | "psr-4": { 3142 | "Symfony\\Polyfill\\Intl\\Grapheme\\": "" 3143 | } 3144 | }, 3145 | "notification-url": "https://packagist.org/downloads/", 3146 | "license": [ 3147 | "MIT" 3148 | ], 3149 | "authors": [ 3150 | { 3151 | "name": "Nicolas Grekas", 3152 | "email": "p@tchwork.com" 3153 | }, 3154 | { 3155 | "name": "Symfony Community", 3156 | "homepage": "https://symfony.com/contributors" 3157 | } 3158 | ], 3159 | "description": "Symfony polyfill for intl's grapheme_* functions", 3160 | "homepage": "https://symfony.com", 3161 | "keywords": [ 3162 | "compatibility", 3163 | "grapheme", 3164 | "intl", 3165 | "polyfill", 3166 | "portable", 3167 | "shim" 3168 | ], 3169 | "support": { 3170 | "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.31.0" 3171 | }, 3172 | "funding": [ 3173 | { 3174 | "url": "https://symfony.com/sponsor", 3175 | "type": "custom" 3176 | }, 3177 | { 3178 | "url": "https://github.com/fabpot", 3179 | "type": "github" 3180 | }, 3181 | { 3182 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3183 | "type": "tidelift" 3184 | } 3185 | ], 3186 | "time": "2024-09-09T11:45:10+00:00" 3187 | }, 3188 | { 3189 | "name": "symfony/polyfill-intl-normalizer", 3190 | "version": "v1.31.0", 3191 | "source": { 3192 | "type": "git", 3193 | "url": "https://github.com/symfony/polyfill-intl-normalizer.git", 3194 | "reference": "3833d7255cc303546435cb650316bff708a1c75c" 3195 | }, 3196 | "dist": { 3197 | "type": "zip", 3198 | "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c", 3199 | "reference": "3833d7255cc303546435cb650316bff708a1c75c", 3200 | "shasum": "" 3201 | }, 3202 | "require": { 3203 | "php": ">=7.2" 3204 | }, 3205 | "suggest": { 3206 | "ext-intl": "For best performance" 3207 | }, 3208 | "type": "library", 3209 | "extra": { 3210 | "thanks": { 3211 | "name": "symfony/polyfill", 3212 | "url": "https://github.com/symfony/polyfill" 3213 | } 3214 | }, 3215 | "autoload": { 3216 | "files": [ 3217 | "bootstrap.php" 3218 | ], 3219 | "psr-4": { 3220 | "Symfony\\Polyfill\\Intl\\Normalizer\\": "" 3221 | }, 3222 | "classmap": [ 3223 | "Resources/stubs" 3224 | ] 3225 | }, 3226 | "notification-url": "https://packagist.org/downloads/", 3227 | "license": [ 3228 | "MIT" 3229 | ], 3230 | "authors": [ 3231 | { 3232 | "name": "Nicolas Grekas", 3233 | "email": "p@tchwork.com" 3234 | }, 3235 | { 3236 | "name": "Symfony Community", 3237 | "homepage": "https://symfony.com/contributors" 3238 | } 3239 | ], 3240 | "description": "Symfony polyfill for intl's Normalizer class and related functions", 3241 | "homepage": "https://symfony.com", 3242 | "keywords": [ 3243 | "compatibility", 3244 | "intl", 3245 | "normalizer", 3246 | "polyfill", 3247 | "portable", 3248 | "shim" 3249 | ], 3250 | "support": { 3251 | "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.31.0" 3252 | }, 3253 | "funding": [ 3254 | { 3255 | "url": "https://symfony.com/sponsor", 3256 | "type": "custom" 3257 | }, 3258 | { 3259 | "url": "https://github.com/fabpot", 3260 | "type": "github" 3261 | }, 3262 | { 3263 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3264 | "type": "tidelift" 3265 | } 3266 | ], 3267 | "time": "2024-09-09T11:45:10+00:00" 3268 | }, 3269 | { 3270 | "name": "symfony/polyfill-mbstring", 3271 | "version": "v1.31.0", 3272 | "source": { 3273 | "type": "git", 3274 | "url": "https://github.com/symfony/polyfill-mbstring.git", 3275 | "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341" 3276 | }, 3277 | "dist": { 3278 | "type": "zip", 3279 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/85181ba99b2345b0ef10ce42ecac37612d9fd341", 3280 | "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341", 3281 | "shasum": "" 3282 | }, 3283 | "require": { 3284 | "php": ">=7.2" 3285 | }, 3286 | "provide": { 3287 | "ext-mbstring": "*" 3288 | }, 3289 | "suggest": { 3290 | "ext-mbstring": "For best performance" 3291 | }, 3292 | "type": "library", 3293 | "extra": { 3294 | "thanks": { 3295 | "name": "symfony/polyfill", 3296 | "url": "https://github.com/symfony/polyfill" 3297 | } 3298 | }, 3299 | "autoload": { 3300 | "files": [ 3301 | "bootstrap.php" 3302 | ], 3303 | "psr-4": { 3304 | "Symfony\\Polyfill\\Mbstring\\": "" 3305 | } 3306 | }, 3307 | "notification-url": "https://packagist.org/downloads/", 3308 | "license": [ 3309 | "MIT" 3310 | ], 3311 | "authors": [ 3312 | { 3313 | "name": "Nicolas Grekas", 3314 | "email": "p@tchwork.com" 3315 | }, 3316 | { 3317 | "name": "Symfony Community", 3318 | "homepage": "https://symfony.com/contributors" 3319 | } 3320 | ], 3321 | "description": "Symfony polyfill for the Mbstring extension", 3322 | "homepage": "https://symfony.com", 3323 | "keywords": [ 3324 | "compatibility", 3325 | "mbstring", 3326 | "polyfill", 3327 | "portable", 3328 | "shim" 3329 | ], 3330 | "support": { 3331 | "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.31.0" 3332 | }, 3333 | "funding": [ 3334 | { 3335 | "url": "https://symfony.com/sponsor", 3336 | "type": "custom" 3337 | }, 3338 | { 3339 | "url": "https://github.com/fabpot", 3340 | "type": "github" 3341 | }, 3342 | { 3343 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3344 | "type": "tidelift" 3345 | } 3346 | ], 3347 | "time": "2024-09-09T11:45:10+00:00" 3348 | }, 3349 | { 3350 | "name": "symfony/process", 3351 | "version": "v7.2.0", 3352 | "source": { 3353 | "type": "git", 3354 | "url": "https://github.com/symfony/process.git", 3355 | "reference": "d34b22ba9390ec19d2dd966c40aa9e8462f27a7e" 3356 | }, 3357 | "dist": { 3358 | "type": "zip", 3359 | "url": "https://api.github.com/repos/symfony/process/zipball/d34b22ba9390ec19d2dd966c40aa9e8462f27a7e", 3360 | "reference": "d34b22ba9390ec19d2dd966c40aa9e8462f27a7e", 3361 | "shasum": "" 3362 | }, 3363 | "require": { 3364 | "php": ">=8.2" 3365 | }, 3366 | "type": "library", 3367 | "autoload": { 3368 | "psr-4": { 3369 | "Symfony\\Component\\Process\\": "" 3370 | }, 3371 | "exclude-from-classmap": [ 3372 | "/Tests/" 3373 | ] 3374 | }, 3375 | "notification-url": "https://packagist.org/downloads/", 3376 | "license": [ 3377 | "MIT" 3378 | ], 3379 | "authors": [ 3380 | { 3381 | "name": "Fabien Potencier", 3382 | "email": "fabien@symfony.com" 3383 | }, 3384 | { 3385 | "name": "Symfony Community", 3386 | "homepage": "https://symfony.com/contributors" 3387 | } 3388 | ], 3389 | "description": "Executes commands in sub-processes", 3390 | "homepage": "https://symfony.com", 3391 | "support": { 3392 | "source": "https://github.com/symfony/process/tree/v7.2.0" 3393 | }, 3394 | "funding": [ 3395 | { 3396 | "url": "https://symfony.com/sponsor", 3397 | "type": "custom" 3398 | }, 3399 | { 3400 | "url": "https://github.com/fabpot", 3401 | "type": "github" 3402 | }, 3403 | { 3404 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3405 | "type": "tidelift" 3406 | } 3407 | ], 3408 | "time": "2024-11-06T14:24:19+00:00" 3409 | }, 3410 | { 3411 | "name": "symfony/service-contracts", 3412 | "version": "v3.5.1", 3413 | "source": { 3414 | "type": "git", 3415 | "url": "https://github.com/symfony/service-contracts.git", 3416 | "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0" 3417 | }, 3418 | "dist": { 3419 | "type": "zip", 3420 | "url": "https://api.github.com/repos/symfony/service-contracts/zipball/e53260aabf78fb3d63f8d79d69ece59f80d5eda0", 3421 | "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0", 3422 | "shasum": "" 3423 | }, 3424 | "require": { 3425 | "php": ">=8.1", 3426 | "psr/container": "^1.1|^2.0", 3427 | "symfony/deprecation-contracts": "^2.5|^3" 3428 | }, 3429 | "conflict": { 3430 | "ext-psr": "<1.1|>=2" 3431 | }, 3432 | "type": "library", 3433 | "extra": { 3434 | "branch-alias": { 3435 | "dev-main": "3.5-dev" 3436 | }, 3437 | "thanks": { 3438 | "name": "symfony/contracts", 3439 | "url": "https://github.com/symfony/contracts" 3440 | } 3441 | }, 3442 | "autoload": { 3443 | "psr-4": { 3444 | "Symfony\\Contracts\\Service\\": "" 3445 | }, 3446 | "exclude-from-classmap": [ 3447 | "/Test/" 3448 | ] 3449 | }, 3450 | "notification-url": "https://packagist.org/downloads/", 3451 | "license": [ 3452 | "MIT" 3453 | ], 3454 | "authors": [ 3455 | { 3456 | "name": "Nicolas Grekas", 3457 | "email": "p@tchwork.com" 3458 | }, 3459 | { 3460 | "name": "Symfony Community", 3461 | "homepage": "https://symfony.com/contributors" 3462 | } 3463 | ], 3464 | "description": "Generic abstractions related to writing services", 3465 | "homepage": "https://symfony.com", 3466 | "keywords": [ 3467 | "abstractions", 3468 | "contracts", 3469 | "decoupling", 3470 | "interfaces", 3471 | "interoperability", 3472 | "standards" 3473 | ], 3474 | "support": { 3475 | "source": "https://github.com/symfony/service-contracts/tree/v3.5.1" 3476 | }, 3477 | "funding": [ 3478 | { 3479 | "url": "https://symfony.com/sponsor", 3480 | "type": "custom" 3481 | }, 3482 | { 3483 | "url": "https://github.com/fabpot", 3484 | "type": "github" 3485 | }, 3486 | { 3487 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3488 | "type": "tidelift" 3489 | } 3490 | ], 3491 | "time": "2024-09-25T14:20:29+00:00" 3492 | }, 3493 | { 3494 | "name": "symfony/string", 3495 | "version": "v7.2.0", 3496 | "source": { 3497 | "type": "git", 3498 | "url": "https://github.com/symfony/string.git", 3499 | "reference": "446e0d146f991dde3e73f45f2c97a9faad773c82" 3500 | }, 3501 | "dist": { 3502 | "type": "zip", 3503 | "url": "https://api.github.com/repos/symfony/string/zipball/446e0d146f991dde3e73f45f2c97a9faad773c82", 3504 | "reference": "446e0d146f991dde3e73f45f2c97a9faad773c82", 3505 | "shasum": "" 3506 | }, 3507 | "require": { 3508 | "php": ">=8.2", 3509 | "symfony/polyfill-ctype": "~1.8", 3510 | "symfony/polyfill-intl-grapheme": "~1.0", 3511 | "symfony/polyfill-intl-normalizer": "~1.0", 3512 | "symfony/polyfill-mbstring": "~1.0" 3513 | }, 3514 | "conflict": { 3515 | "symfony/translation-contracts": "<2.5" 3516 | }, 3517 | "require-dev": { 3518 | "symfony/emoji": "^7.1", 3519 | "symfony/error-handler": "^6.4|^7.0", 3520 | "symfony/http-client": "^6.4|^7.0", 3521 | "symfony/intl": "^6.4|^7.0", 3522 | "symfony/translation-contracts": "^2.5|^3.0", 3523 | "symfony/var-exporter": "^6.4|^7.0" 3524 | }, 3525 | "type": "library", 3526 | "autoload": { 3527 | "files": [ 3528 | "Resources/functions.php" 3529 | ], 3530 | "psr-4": { 3531 | "Symfony\\Component\\String\\": "" 3532 | }, 3533 | "exclude-from-classmap": [ 3534 | "/Tests/" 3535 | ] 3536 | }, 3537 | "notification-url": "https://packagist.org/downloads/", 3538 | "license": [ 3539 | "MIT" 3540 | ], 3541 | "authors": [ 3542 | { 3543 | "name": "Nicolas Grekas", 3544 | "email": "p@tchwork.com" 3545 | }, 3546 | { 3547 | "name": "Symfony Community", 3548 | "homepage": "https://symfony.com/contributors" 3549 | } 3550 | ], 3551 | "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", 3552 | "homepage": "https://symfony.com", 3553 | "keywords": [ 3554 | "grapheme", 3555 | "i18n", 3556 | "string", 3557 | "unicode", 3558 | "utf-8", 3559 | "utf8" 3560 | ], 3561 | "support": { 3562 | "source": "https://github.com/symfony/string/tree/v7.2.0" 3563 | }, 3564 | "funding": [ 3565 | { 3566 | "url": "https://symfony.com/sponsor", 3567 | "type": "custom" 3568 | }, 3569 | { 3570 | "url": "https://github.com/fabpot", 3571 | "type": "github" 3572 | }, 3573 | { 3574 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3575 | "type": "tidelift" 3576 | } 3577 | ], 3578 | "time": "2024-11-13T13:31:26+00:00" 3579 | }, 3580 | { 3581 | "name": "ta-tikoma/phpunit-architecture-test", 3582 | "version": "0.8.4", 3583 | "source": { 3584 | "type": "git", 3585 | "url": "https://github.com/ta-tikoma/phpunit-architecture-test.git", 3586 | "reference": "89f0dea1cb0f0d5744d3ec1764a286af5e006636" 3587 | }, 3588 | "dist": { 3589 | "type": "zip", 3590 | "url": "https://api.github.com/repos/ta-tikoma/phpunit-architecture-test/zipball/89f0dea1cb0f0d5744d3ec1764a286af5e006636", 3591 | "reference": "89f0dea1cb0f0d5744d3ec1764a286af5e006636", 3592 | "shasum": "" 3593 | }, 3594 | "require": { 3595 | "nikic/php-parser": "^4.18.0 || ^5.0.0", 3596 | "php": "^8.1.0", 3597 | "phpdocumentor/reflection-docblock": "^5.3.0", 3598 | "phpunit/phpunit": "^10.5.5 || ^11.0.0", 3599 | "symfony/finder": "^6.4.0 || ^7.0.0" 3600 | }, 3601 | "require-dev": { 3602 | "laravel/pint": "^1.13.7", 3603 | "phpstan/phpstan": "^1.10.52" 3604 | }, 3605 | "type": "library", 3606 | "autoload": { 3607 | "psr-4": { 3608 | "PHPUnit\\Architecture\\": "src/" 3609 | } 3610 | }, 3611 | "notification-url": "https://packagist.org/downloads/", 3612 | "license": [ 3613 | "MIT" 3614 | ], 3615 | "authors": [ 3616 | { 3617 | "name": "Ni Shi", 3618 | "email": "futik0ma011@gmail.com" 3619 | }, 3620 | { 3621 | "name": "Nuno Maduro", 3622 | "email": "enunomaduro@gmail.com" 3623 | } 3624 | ], 3625 | "description": "Methods for testing application architecture", 3626 | "keywords": [ 3627 | "architecture", 3628 | "phpunit", 3629 | "stucture", 3630 | "test", 3631 | "testing" 3632 | ], 3633 | "support": { 3634 | "issues": "https://github.com/ta-tikoma/phpunit-architecture-test/issues", 3635 | "source": "https://github.com/ta-tikoma/phpunit-architecture-test/tree/0.8.4" 3636 | }, 3637 | "time": "2024-01-05T14:10:56+00:00" 3638 | }, 3639 | { 3640 | "name": "theseer/tokenizer", 3641 | "version": "1.2.3", 3642 | "source": { 3643 | "type": "git", 3644 | "url": "https://github.com/theseer/tokenizer.git", 3645 | "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2" 3646 | }, 3647 | "dist": { 3648 | "type": "zip", 3649 | "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", 3650 | "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", 3651 | "shasum": "" 3652 | }, 3653 | "require": { 3654 | "ext-dom": "*", 3655 | "ext-tokenizer": "*", 3656 | "ext-xmlwriter": "*", 3657 | "php": "^7.2 || ^8.0" 3658 | }, 3659 | "type": "library", 3660 | "autoload": { 3661 | "classmap": [ 3662 | "src/" 3663 | ] 3664 | }, 3665 | "notification-url": "https://packagist.org/downloads/", 3666 | "license": [ 3667 | "BSD-3-Clause" 3668 | ], 3669 | "authors": [ 3670 | { 3671 | "name": "Arne Blankerts", 3672 | "email": "arne@blankerts.de", 3673 | "role": "Developer" 3674 | } 3675 | ], 3676 | "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", 3677 | "support": { 3678 | "issues": "https://github.com/theseer/tokenizer/issues", 3679 | "source": "https://github.com/theseer/tokenizer/tree/1.2.3" 3680 | }, 3681 | "funding": [ 3682 | { 3683 | "url": "https://github.com/theseer", 3684 | "type": "github" 3685 | } 3686 | ], 3687 | "time": "2024-03-03T12:36:25+00:00" 3688 | }, 3689 | { 3690 | "name": "webmozart/assert", 3691 | "version": "1.11.0", 3692 | "source": { 3693 | "type": "git", 3694 | "url": "https://github.com/webmozarts/assert.git", 3695 | "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" 3696 | }, 3697 | "dist": { 3698 | "type": "zip", 3699 | "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", 3700 | "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", 3701 | "shasum": "" 3702 | }, 3703 | "require": { 3704 | "ext-ctype": "*", 3705 | "php": "^7.2 || ^8.0" 3706 | }, 3707 | "conflict": { 3708 | "phpstan/phpstan": "<0.12.20", 3709 | "vimeo/psalm": "<4.6.1 || 4.6.2" 3710 | }, 3711 | "require-dev": { 3712 | "phpunit/phpunit": "^8.5.13" 3713 | }, 3714 | "type": "library", 3715 | "extra": { 3716 | "branch-alias": { 3717 | "dev-master": "1.10-dev" 3718 | } 3719 | }, 3720 | "autoload": { 3721 | "psr-4": { 3722 | "Webmozart\\Assert\\": "src/" 3723 | } 3724 | }, 3725 | "notification-url": "https://packagist.org/downloads/", 3726 | "license": [ 3727 | "MIT" 3728 | ], 3729 | "authors": [ 3730 | { 3731 | "name": "Bernhard Schussek", 3732 | "email": "bschussek@gmail.com" 3733 | } 3734 | ], 3735 | "description": "Assertions to validate method input/output with nice error messages.", 3736 | "keywords": [ 3737 | "assert", 3738 | "check", 3739 | "validate" 3740 | ], 3741 | "support": { 3742 | "issues": "https://github.com/webmozarts/assert/issues", 3743 | "source": "https://github.com/webmozarts/assert/tree/1.11.0" 3744 | }, 3745 | "time": "2022-06-03T18:03:27+00:00" 3746 | } 3747 | ], 3748 | "aliases": [], 3749 | "minimum-stability": "dev", 3750 | "stability-flags": {}, 3751 | "prefer-stable": true, 3752 | "prefer-lowest": false, 3753 | "platform": { 3754 | "php": "^8.1", 3755 | "ext-gd": "*" 3756 | }, 3757 | "platform-dev": {}, 3758 | "plugin-api-version": "2.6.0" 3759 | } 3760 | --------------------------------------------------------------------------------