├── .gitignore ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── composer.json ├── composer.lock ├── phpcs.xml ├── phpunit.xml ├── src ├── ThemeInstaller.php └── ThemeInstallerPlugin.php └── tests └── ThemeInstallerTest.php /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | 3 | vendor/ 4 | *.cache 5 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing 2 | 3 | Contributions are **welcome**. We accept contributions via Pull Requests on [Github](https://github.com/hexadog/laravel-theme-installer). 4 | 5 | When contributing to this repository, please first discuss the change you wish to make via issue, email, or any other method with the owners of this repository before making a change. 6 | 7 | Please note we have a code of conduct, please follow it in all your interactions with the project. 8 | 9 | ## Pull Request Process 10 | 11 | 1. **[PSR-2 Coding Standard](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md)** - Check the code style with ``$ composer check-style`` and fix it with ``$ composer fix-style``. 12 | 2. **Document any change in behaviour** - Make sure the `README.md` and any other relevant documentation are kept up-to-date. 13 | variables, exposed ports, useful file locations and container parameters. 14 | 3. **Consider our release cycle** - We try to follow the [SemVer v2.0.0](http://semver.org/) versioning scheme. 15 | 4. **One pull request per feature** - If you want to do more than one thing, send multiple pull requests. 16 | 17 | **Happy coding**! 18 | 19 | ## Code of Conduct 20 | 21 | ### Our Pledge 22 | 23 | In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. 24 | 25 | ### Our Standards 26 | 27 | Examples of behavior that contributes to creating a positive environment 28 | include: 29 | 30 | * Using welcoming and inclusive language 31 | * Being respectful of differing viewpoints and experiences 32 | * Gracefully accepting constructive criticism 33 | * Focusing on what is best for the community 34 | * Showing empathy towards other community members 35 | 36 | Examples of unacceptable behavior by participants include: 37 | 38 | * The use of sexualized language or imagery and unwelcome sexual attention or 39 | advances 40 | * Trolling, insulting/derogatory comments, and personal or political attacks 41 | * Public or private harassment 42 | * Publishing others' private information, such as a physical or electronic 43 | address, without explicit permission 44 | * Other conduct which could reasonably be considered inappropriate in a 45 | professional setting 46 | 47 | ### Our Responsibilities 48 | 49 | Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. 50 | 51 | Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. 52 | 53 | ### Scope 54 | 55 | This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. 56 | 57 | ### Enforcement 58 | 59 | Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at `gaetan@hexadog.com`. All 60 | complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. 61 | Further details of specific enforcement policies may be posted separately. 62 | 63 | Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. 64 | 65 | ### Attribution 66 | 67 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] 68 | 69 | [homepage]: http://contributor-covenant.org 70 | [version]: http://contributor-covenant.org/version/1/4/ 71 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 hexadog 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Laravel Theme Installer 2 | [![Latest Stable Version](https://poser.pugx.org/hexadog/laravel-theme-installer/v)](//packagist.org/packages/hexadog/laravel-theme-installer) [![Total Downloads](https://poser.pugx.org/hexadog/laravel-theme-installer/downloads)](//packagist.org/packages/hexadog/laravel-theme-installer) [![License](https://poser.pugx.org/hexadog/laravel-theme-installer/license)](//packagist.org/packages/hexadog/laravel-theme-installer) 3 | 4 | 5 | This package is a fork of [Laravel Module Installer](https://github.com/joshbrw/laravel-module-installer) to work with Theme packages. 6 | It allows installation of standalone Theme package into the `themes/` directory instead of `vendor/`. 7 | 8 | For example if your Theme package name is `hexadog/admin-theme` then the package will be installed into `themes/hexadog/admin` directory. 9 | 10 | You can specify an alternate directory by including a `theme-dir` in the extra data in your composer.json file: 11 | 12 | "extra": { 13 | "theme-dir": "custom" 14 | } 15 | 16 | ## Installation 17 | 18 | 1. Ensure you have the `type` set to `laravel-theme` in your theme's `composer.json` 19 | 2. Require this package: `composer require hexadog/laravel-theme-installer` 20 | 3. Require your bespoke theme using Composer 21 | 22 | ## Notes 23 | 24 | When working on a theme that is version controlled within an app that is also version controlled, you have to commit and push from inside the Theme directory and then `composer update` within the app itself to ensure that the latest version of your theme (dependant upon constraint) is specified in your composer.lock file. 25 | 26 | ## Related projects 27 | - [Laravel Themes Manager](https://github.com/hexadog/laravel-themes-manager): Develop multi-themes Laravel application with ease. 28 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hexadog/laravel-theme-installer", 3 | "type": "composer-plugin", 4 | "license": "MIT", 5 | "support": { 6 | "issues": "https://github.com/hexadog/laravel-theme-installer/issues", 7 | "source": "https://github.com/hexadog/laravel-theme-installer" 8 | }, 9 | "authors": [ 10 | { 11 | "name": "Gaetan", 12 | "email": "gaetan@hexadog.com" 13 | } 14 | ], 15 | "autoload": { 16 | "psr-0": { 17 | "Hexadog\\LaravelThemeInstaller\\": "src/" 18 | }, 19 | "psr-4": { 20 | "Hexadog\\LaravelThemeInstaller\\": "src" 21 | } 22 | }, 23 | "extra": { 24 | "class": "Hexadog\\LaravelThemeInstaller\\ThemeInstallerPlugin" 25 | }, 26 | "require-dev": { 27 | "composer/composer": "^1.3|^2.7.7", 28 | "mockery/mockery": "^1.4", 29 | "phpunit/phpunit": "^7.0|^8.0|^9.0" 30 | }, 31 | "require": { 32 | "composer-plugin-api": "^1.1|^2.0", 33 | "php": "^7.3|^8.0" 34 | }, 35 | "scripts": { 36 | "test": "vendor/bin/phpunit", 37 | "test:windows": "vendor\\bin\\phpunit", 38 | "check-style": "vendor/bin/phpcs --extensions=php ./src", 39 | "fix-style": "vendor/bin/phpcbf --extensions=php ./src" 40 | } 41 | } -------------------------------------------------------------------------------- /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": "c3b828132c4ae1e951b5a39ea391fb8d", 8 | "packages": [], 9 | "packages-dev": [ 10 | { 11 | "name": "composer/ca-bundle", 12 | "version": "1.5.1", 13 | "source": { 14 | "type": "git", 15 | "url": "https://github.com/composer/ca-bundle.git", 16 | "reference": "063d9aa8696582f5a41dffbbaf3c81024f0a604a" 17 | }, 18 | "dist": { 19 | "type": "zip", 20 | "url": "https://api.github.com/repos/composer/ca-bundle/zipball/063d9aa8696582f5a41dffbbaf3c81024f0a604a", 21 | "reference": "063d9aa8696582f5a41dffbbaf3c81024f0a604a", 22 | "shasum": "" 23 | }, 24 | "require": { 25 | "ext-openssl": "*", 26 | "ext-pcre": "*", 27 | "php": "^7.2 || ^8.0" 28 | }, 29 | "require-dev": { 30 | "phpstan/phpstan": "^1.10", 31 | "psr/log": "^1.0 || ^2.0 || ^3.0", 32 | "symfony/phpunit-bridge": "^4.2 || ^5", 33 | "symfony/process": "^4.0 || ^5.0 || ^6.0 || ^7.0" 34 | }, 35 | "type": "library", 36 | "extra": { 37 | "branch-alias": { 38 | "dev-main": "1.x-dev" 39 | } 40 | }, 41 | "autoload": { 42 | "psr-4": { 43 | "Composer\\CaBundle\\": "src" 44 | } 45 | }, 46 | "notification-url": "https://packagist.org/downloads/", 47 | "license": [ 48 | "MIT" 49 | ], 50 | "authors": [ 51 | { 52 | "name": "Jordi Boggiano", 53 | "email": "j.boggiano@seld.be", 54 | "homepage": "http://seld.be" 55 | } 56 | ], 57 | "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.", 58 | "keywords": [ 59 | "cabundle", 60 | "cacert", 61 | "certificate", 62 | "ssl", 63 | "tls" 64 | ], 65 | "support": { 66 | "irc": "irc://irc.freenode.org/composer", 67 | "issues": "https://github.com/composer/ca-bundle/issues", 68 | "source": "https://github.com/composer/ca-bundle/tree/1.5.1" 69 | }, 70 | "funding": [ 71 | { 72 | "url": "https://packagist.com", 73 | "type": "custom" 74 | }, 75 | { 76 | "url": "https://github.com/composer", 77 | "type": "github" 78 | }, 79 | { 80 | "url": "https://tidelift.com/funding/github/packagist/composer/composer", 81 | "type": "tidelift" 82 | } 83 | ], 84 | "time": "2024-07-08T15:28:20+00:00" 85 | }, 86 | { 87 | "name": "composer/class-map-generator", 88 | "version": "1.3.4", 89 | "source": { 90 | "type": "git", 91 | "url": "https://github.com/composer/class-map-generator.git", 92 | "reference": "b1b3fd0b4eaf3ddf3ee230bc340bf3fff454a1a3" 93 | }, 94 | "dist": { 95 | "type": "zip", 96 | "url": "https://api.github.com/repos/composer/class-map-generator/zipball/b1b3fd0b4eaf3ddf3ee230bc340bf3fff454a1a3", 97 | "reference": "b1b3fd0b4eaf3ddf3ee230bc340bf3fff454a1a3", 98 | "shasum": "" 99 | }, 100 | "require": { 101 | "composer/pcre": "^2.1 || ^3.1", 102 | "php": "^7.2 || ^8.0", 103 | "symfony/finder": "^4.4 || ^5.3 || ^6 || ^7" 104 | }, 105 | "require-dev": { 106 | "phpstan/phpstan": "^1.6", 107 | "phpstan/phpstan-deprecation-rules": "^1", 108 | "phpstan/phpstan-phpunit": "^1", 109 | "phpstan/phpstan-strict-rules": "^1.1", 110 | "symfony/filesystem": "^5.4 || ^6", 111 | "symfony/phpunit-bridge": "^5" 112 | }, 113 | "type": "library", 114 | "extra": { 115 | "branch-alias": { 116 | "dev-main": "1.x-dev" 117 | } 118 | }, 119 | "autoload": { 120 | "psr-4": { 121 | "Composer\\ClassMapGenerator\\": "src" 122 | } 123 | }, 124 | "notification-url": "https://packagist.org/downloads/", 125 | "license": [ 126 | "MIT" 127 | ], 128 | "authors": [ 129 | { 130 | "name": "Jordi Boggiano", 131 | "email": "j.boggiano@seld.be", 132 | "homepage": "https://seld.be" 133 | } 134 | ], 135 | "description": "Utilities to scan PHP code and generate class maps.", 136 | "keywords": [ 137 | "classmap" 138 | ], 139 | "support": { 140 | "issues": "https://github.com/composer/class-map-generator/issues", 141 | "source": "https://github.com/composer/class-map-generator/tree/1.3.4" 142 | }, 143 | "funding": [ 144 | { 145 | "url": "https://packagist.com", 146 | "type": "custom" 147 | }, 148 | { 149 | "url": "https://github.com/composer", 150 | "type": "github" 151 | }, 152 | { 153 | "url": "https://tidelift.com/funding/github/packagist/composer/composer", 154 | "type": "tidelift" 155 | } 156 | ], 157 | "time": "2024-06-12T14:13:04+00:00" 158 | }, 159 | { 160 | "name": "composer/composer", 161 | "version": "2.7.7", 162 | "source": { 163 | "type": "git", 164 | "url": "https://github.com/composer/composer.git", 165 | "reference": "291942978f39435cf904d33739f98d7d4eca7b23" 166 | }, 167 | "dist": { 168 | "type": "zip", 169 | "url": "https://api.github.com/repos/composer/composer/zipball/291942978f39435cf904d33739f98d7d4eca7b23", 170 | "reference": "291942978f39435cf904d33739f98d7d4eca7b23", 171 | "shasum": "" 172 | }, 173 | "require": { 174 | "composer/ca-bundle": "^1.0", 175 | "composer/class-map-generator": "^1.3.3", 176 | "composer/metadata-minifier": "^1.0", 177 | "composer/pcre": "^2.1 || ^3.1", 178 | "composer/semver": "^3.3", 179 | "composer/spdx-licenses": "^1.5.7", 180 | "composer/xdebug-handler": "^2.0.2 || ^3.0.3", 181 | "justinrainbow/json-schema": "^5.2.11", 182 | "php": "^7.2.5 || ^8.0", 183 | "psr/log": "^1.0 || ^2.0 || ^3.0", 184 | "react/promise": "^2.8 || ^3", 185 | "seld/jsonlint": "^1.4", 186 | "seld/phar-utils": "^1.2", 187 | "seld/signal-handler": "^2.0", 188 | "symfony/console": "^5.4.11 || ^6.0.11 || ^7", 189 | "symfony/filesystem": "^5.4 || ^6.0 || ^7", 190 | "symfony/finder": "^5.4 || ^6.0 || ^7", 191 | "symfony/polyfill-php73": "^1.24", 192 | "symfony/polyfill-php80": "^1.24", 193 | "symfony/polyfill-php81": "^1.24", 194 | "symfony/process": "^5.4 || ^6.0 || ^7" 195 | }, 196 | "require-dev": { 197 | "phpstan/phpstan": "^1.11.0", 198 | "phpstan/phpstan-deprecation-rules": "^1.2.0", 199 | "phpstan/phpstan-phpunit": "^1.4.0", 200 | "phpstan/phpstan-strict-rules": "^1.6.0", 201 | "phpstan/phpstan-symfony": "^1.4.0", 202 | "symfony/phpunit-bridge": "^6.4.1 || ^7.0.1" 203 | }, 204 | "suggest": { 205 | "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages", 206 | "ext-zip": "Enabling the zip extension allows you to unzip archives", 207 | "ext-zlib": "Allow gzip compression of HTTP requests" 208 | }, 209 | "bin": [ 210 | "bin/composer" 211 | ], 212 | "type": "library", 213 | "extra": { 214 | "branch-alias": { 215 | "dev-main": "2.7-dev" 216 | }, 217 | "phpstan": { 218 | "includes": [ 219 | "phpstan/rules.neon" 220 | ] 221 | } 222 | }, 223 | "autoload": { 224 | "psr-4": { 225 | "Composer\\": "src/Composer/" 226 | } 227 | }, 228 | "notification-url": "https://packagist.org/downloads/", 229 | "license": [ 230 | "MIT" 231 | ], 232 | "authors": [ 233 | { 234 | "name": "Nils Adermann", 235 | "email": "naderman@naderman.de", 236 | "homepage": "https://www.naderman.de" 237 | }, 238 | { 239 | "name": "Jordi Boggiano", 240 | "email": "j.boggiano@seld.be", 241 | "homepage": "https://seld.be" 242 | } 243 | ], 244 | "description": "Composer helps you declare, manage and install dependencies of PHP projects. It ensures you have the right stack everywhere.", 245 | "homepage": "https://getcomposer.org/", 246 | "keywords": [ 247 | "autoload", 248 | "dependency", 249 | "package" 250 | ], 251 | "support": { 252 | "irc": "ircs://irc.libera.chat:6697/composer", 253 | "issues": "https://github.com/composer/composer/issues", 254 | "security": "https://github.com/composer/composer/security/policy", 255 | "source": "https://github.com/composer/composer/tree/2.7.7" 256 | }, 257 | "funding": [ 258 | { 259 | "url": "https://packagist.com", 260 | "type": "custom" 261 | }, 262 | { 263 | "url": "https://github.com/composer", 264 | "type": "github" 265 | }, 266 | { 267 | "url": "https://tidelift.com/funding/github/packagist/composer/composer", 268 | "type": "tidelift" 269 | } 270 | ], 271 | "time": "2024-06-10T20:11:12+00:00" 272 | }, 273 | { 274 | "name": "composer/metadata-minifier", 275 | "version": "1.0.0", 276 | "source": { 277 | "type": "git", 278 | "url": "https://github.com/composer/metadata-minifier.git", 279 | "reference": "c549d23829536f0d0e984aaabbf02af91f443207" 280 | }, 281 | "dist": { 282 | "type": "zip", 283 | "url": "https://api.github.com/repos/composer/metadata-minifier/zipball/c549d23829536f0d0e984aaabbf02af91f443207", 284 | "reference": "c549d23829536f0d0e984aaabbf02af91f443207", 285 | "shasum": "" 286 | }, 287 | "require": { 288 | "php": "^5.3.2 || ^7.0 || ^8.0" 289 | }, 290 | "require-dev": { 291 | "composer/composer": "^2", 292 | "phpstan/phpstan": "^0.12.55", 293 | "symfony/phpunit-bridge": "^4.2 || ^5" 294 | }, 295 | "type": "library", 296 | "extra": { 297 | "branch-alias": { 298 | "dev-main": "1.x-dev" 299 | } 300 | }, 301 | "autoload": { 302 | "psr-4": { 303 | "Composer\\MetadataMinifier\\": "src" 304 | } 305 | }, 306 | "notification-url": "https://packagist.org/downloads/", 307 | "license": [ 308 | "MIT" 309 | ], 310 | "authors": [ 311 | { 312 | "name": "Jordi Boggiano", 313 | "email": "j.boggiano@seld.be", 314 | "homepage": "http://seld.be" 315 | } 316 | ], 317 | "description": "Small utility library that handles metadata minification and expansion.", 318 | "keywords": [ 319 | "composer", 320 | "compression" 321 | ], 322 | "support": { 323 | "issues": "https://github.com/composer/metadata-minifier/issues", 324 | "source": "https://github.com/composer/metadata-minifier/tree/1.0.0" 325 | }, 326 | "funding": [ 327 | { 328 | "url": "https://packagist.com", 329 | "type": "custom" 330 | }, 331 | { 332 | "url": "https://github.com/composer", 333 | "type": "github" 334 | }, 335 | { 336 | "url": "https://tidelift.com/funding/github/packagist/composer/composer", 337 | "type": "tidelift" 338 | } 339 | ], 340 | "time": "2021-04-07T13:37:33+00:00" 341 | }, 342 | { 343 | "name": "composer/pcre", 344 | "version": "3.2.0", 345 | "source": { 346 | "type": "git", 347 | "url": "https://github.com/composer/pcre.git", 348 | "reference": "ea4ab6f9580a4fd221e0418f2c357cdd39102a90" 349 | }, 350 | "dist": { 351 | "type": "zip", 352 | "url": "https://api.github.com/repos/composer/pcre/zipball/ea4ab6f9580a4fd221e0418f2c357cdd39102a90", 353 | "reference": "ea4ab6f9580a4fd221e0418f2c357cdd39102a90", 354 | "shasum": "" 355 | }, 356 | "require": { 357 | "php": "^7.4 || ^8.0" 358 | }, 359 | "conflict": { 360 | "phpstan/phpstan": "<1.11.8" 361 | }, 362 | "require-dev": { 363 | "phpstan/phpstan": "^1.11.8", 364 | "phpstan/phpstan-strict-rules": "^1.1", 365 | "phpunit/phpunit": "^8 || ^9" 366 | }, 367 | "type": "library", 368 | "extra": { 369 | "branch-alias": { 370 | "dev-main": "3.x-dev" 371 | }, 372 | "phpstan": { 373 | "includes": [ 374 | "extension.neon" 375 | ] 376 | } 377 | }, 378 | "autoload": { 379 | "psr-4": { 380 | "Composer\\Pcre\\": "src" 381 | } 382 | }, 383 | "notification-url": "https://packagist.org/downloads/", 384 | "license": [ 385 | "MIT" 386 | ], 387 | "authors": [ 388 | { 389 | "name": "Jordi Boggiano", 390 | "email": "j.boggiano@seld.be", 391 | "homepage": "http://seld.be" 392 | } 393 | ], 394 | "description": "PCRE wrapping library that offers type-safe preg_* replacements.", 395 | "keywords": [ 396 | "PCRE", 397 | "preg", 398 | "regex", 399 | "regular expression" 400 | ], 401 | "support": { 402 | "issues": "https://github.com/composer/pcre/issues", 403 | "source": "https://github.com/composer/pcre/tree/3.2.0" 404 | }, 405 | "funding": [ 406 | { 407 | "url": "https://packagist.com", 408 | "type": "custom" 409 | }, 410 | { 411 | "url": "https://github.com/composer", 412 | "type": "github" 413 | }, 414 | { 415 | "url": "https://tidelift.com/funding/github/packagist/composer/composer", 416 | "type": "tidelift" 417 | } 418 | ], 419 | "time": "2024-07-25T09:36:02+00:00" 420 | }, 421 | { 422 | "name": "composer/semver", 423 | "version": "3.4.2", 424 | "source": { 425 | "type": "git", 426 | "url": "https://github.com/composer/semver.git", 427 | "reference": "c51258e759afdb17f1fd1fe83bc12baaef6309d6" 428 | }, 429 | "dist": { 430 | "type": "zip", 431 | "url": "https://api.github.com/repos/composer/semver/zipball/c51258e759afdb17f1fd1fe83bc12baaef6309d6", 432 | "reference": "c51258e759afdb17f1fd1fe83bc12baaef6309d6", 433 | "shasum": "" 434 | }, 435 | "require": { 436 | "php": "^5.3.2 || ^7.0 || ^8.0" 437 | }, 438 | "require-dev": { 439 | "phpstan/phpstan": "^1.4", 440 | "symfony/phpunit-bridge": "^4.2 || ^5" 441 | }, 442 | "type": "library", 443 | "extra": { 444 | "branch-alias": { 445 | "dev-main": "3.x-dev" 446 | } 447 | }, 448 | "autoload": { 449 | "psr-4": { 450 | "Composer\\Semver\\": "src" 451 | } 452 | }, 453 | "notification-url": "https://packagist.org/downloads/", 454 | "license": [ 455 | "MIT" 456 | ], 457 | "authors": [ 458 | { 459 | "name": "Nils Adermann", 460 | "email": "naderman@naderman.de", 461 | "homepage": "http://www.naderman.de" 462 | }, 463 | { 464 | "name": "Jordi Boggiano", 465 | "email": "j.boggiano@seld.be", 466 | "homepage": "http://seld.be" 467 | }, 468 | { 469 | "name": "Rob Bast", 470 | "email": "rob.bast@gmail.com", 471 | "homepage": "http://robbast.nl" 472 | } 473 | ], 474 | "description": "Semver library that offers utilities, version constraint parsing and validation.", 475 | "keywords": [ 476 | "semantic", 477 | "semver", 478 | "validation", 479 | "versioning" 480 | ], 481 | "support": { 482 | "irc": "ircs://irc.libera.chat:6697/composer", 483 | "issues": "https://github.com/composer/semver/issues", 484 | "source": "https://github.com/composer/semver/tree/3.4.2" 485 | }, 486 | "funding": [ 487 | { 488 | "url": "https://packagist.com", 489 | "type": "custom" 490 | }, 491 | { 492 | "url": "https://github.com/composer", 493 | "type": "github" 494 | }, 495 | { 496 | "url": "https://tidelift.com/funding/github/packagist/composer/composer", 497 | "type": "tidelift" 498 | } 499 | ], 500 | "time": "2024-07-12T11:35:52+00:00" 501 | }, 502 | { 503 | "name": "composer/spdx-licenses", 504 | "version": "1.5.8", 505 | "source": { 506 | "type": "git", 507 | "url": "https://github.com/composer/spdx-licenses.git", 508 | "reference": "560bdcf8deb88ae5d611c80a2de8ea9d0358cc0a" 509 | }, 510 | "dist": { 511 | "type": "zip", 512 | "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/560bdcf8deb88ae5d611c80a2de8ea9d0358cc0a", 513 | "reference": "560bdcf8deb88ae5d611c80a2de8ea9d0358cc0a", 514 | "shasum": "" 515 | }, 516 | "require": { 517 | "php": "^5.3.2 || ^7.0 || ^8.0" 518 | }, 519 | "require-dev": { 520 | "phpstan/phpstan": "^0.12.55", 521 | "symfony/phpunit-bridge": "^4.2 || ^5" 522 | }, 523 | "type": "library", 524 | "extra": { 525 | "branch-alias": { 526 | "dev-main": "1.x-dev" 527 | } 528 | }, 529 | "autoload": { 530 | "psr-4": { 531 | "Composer\\Spdx\\": "src" 532 | } 533 | }, 534 | "notification-url": "https://packagist.org/downloads/", 535 | "license": [ 536 | "MIT" 537 | ], 538 | "authors": [ 539 | { 540 | "name": "Nils Adermann", 541 | "email": "naderman@naderman.de", 542 | "homepage": "http://www.naderman.de" 543 | }, 544 | { 545 | "name": "Jordi Boggiano", 546 | "email": "j.boggiano@seld.be", 547 | "homepage": "http://seld.be" 548 | }, 549 | { 550 | "name": "Rob Bast", 551 | "email": "rob.bast@gmail.com", 552 | "homepage": "http://robbast.nl" 553 | } 554 | ], 555 | "description": "SPDX licenses list and validation library.", 556 | "keywords": [ 557 | "license", 558 | "spdx", 559 | "validator" 560 | ], 561 | "support": { 562 | "irc": "ircs://irc.libera.chat:6697/composer", 563 | "issues": "https://github.com/composer/spdx-licenses/issues", 564 | "source": "https://github.com/composer/spdx-licenses/tree/1.5.8" 565 | }, 566 | "funding": [ 567 | { 568 | "url": "https://packagist.com", 569 | "type": "custom" 570 | }, 571 | { 572 | "url": "https://github.com/composer", 573 | "type": "github" 574 | }, 575 | { 576 | "url": "https://tidelift.com/funding/github/packagist/composer/composer", 577 | "type": "tidelift" 578 | } 579 | ], 580 | "time": "2023-11-20T07:44:33+00:00" 581 | }, 582 | { 583 | "name": "composer/xdebug-handler", 584 | "version": "3.0.5", 585 | "source": { 586 | "type": "git", 587 | "url": "https://github.com/composer/xdebug-handler.git", 588 | "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef" 589 | }, 590 | "dist": { 591 | "type": "zip", 592 | "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/6c1925561632e83d60a44492e0b344cf48ab85ef", 593 | "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef", 594 | "shasum": "" 595 | }, 596 | "require": { 597 | "composer/pcre": "^1 || ^2 || ^3", 598 | "php": "^7.2.5 || ^8.0", 599 | "psr/log": "^1 || ^2 || ^3" 600 | }, 601 | "require-dev": { 602 | "phpstan/phpstan": "^1.0", 603 | "phpstan/phpstan-strict-rules": "^1.1", 604 | "phpunit/phpunit": "^8.5 || ^9.6 || ^10.5" 605 | }, 606 | "type": "library", 607 | "autoload": { 608 | "psr-4": { 609 | "Composer\\XdebugHandler\\": "src" 610 | } 611 | }, 612 | "notification-url": "https://packagist.org/downloads/", 613 | "license": [ 614 | "MIT" 615 | ], 616 | "authors": [ 617 | { 618 | "name": "John Stevenson", 619 | "email": "john-stevenson@blueyonder.co.uk" 620 | } 621 | ], 622 | "description": "Restarts a process without Xdebug.", 623 | "keywords": [ 624 | "Xdebug", 625 | "performance" 626 | ], 627 | "support": { 628 | "irc": "ircs://irc.libera.chat:6697/composer", 629 | "issues": "https://github.com/composer/xdebug-handler/issues", 630 | "source": "https://github.com/composer/xdebug-handler/tree/3.0.5" 631 | }, 632 | "funding": [ 633 | { 634 | "url": "https://packagist.com", 635 | "type": "custom" 636 | }, 637 | { 638 | "url": "https://github.com/composer", 639 | "type": "github" 640 | }, 641 | { 642 | "url": "https://tidelift.com/funding/github/packagist/composer/composer", 643 | "type": "tidelift" 644 | } 645 | ], 646 | "time": "2024-05-06T16:37:16+00:00" 647 | }, 648 | { 649 | "name": "doctrine/instantiator", 650 | "version": "2.0.0", 651 | "source": { 652 | "type": "git", 653 | "url": "https://github.com/doctrine/instantiator.git", 654 | "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0" 655 | }, 656 | "dist": { 657 | "type": "zip", 658 | "url": "https://api.github.com/repos/doctrine/instantiator/zipball/c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", 659 | "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", 660 | "shasum": "" 661 | }, 662 | "require": { 663 | "php": "^8.1" 664 | }, 665 | "require-dev": { 666 | "doctrine/coding-standard": "^11", 667 | "ext-pdo": "*", 668 | "ext-phar": "*", 669 | "phpbench/phpbench": "^1.2", 670 | "phpstan/phpstan": "^1.9.4", 671 | "phpstan/phpstan-phpunit": "^1.3", 672 | "phpunit/phpunit": "^9.5.27", 673 | "vimeo/psalm": "^5.4" 674 | }, 675 | "type": "library", 676 | "autoload": { 677 | "psr-4": { 678 | "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" 679 | } 680 | }, 681 | "notification-url": "https://packagist.org/downloads/", 682 | "license": [ 683 | "MIT" 684 | ], 685 | "authors": [ 686 | { 687 | "name": "Marco Pivetta", 688 | "email": "ocramius@gmail.com", 689 | "homepage": "https://ocramius.github.io/" 690 | } 691 | ], 692 | "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", 693 | "homepage": "https://www.doctrine-project.org/projects/instantiator.html", 694 | "keywords": [ 695 | "constructor", 696 | "instantiate" 697 | ], 698 | "support": { 699 | "issues": "https://github.com/doctrine/instantiator/issues", 700 | "source": "https://github.com/doctrine/instantiator/tree/2.0.0" 701 | }, 702 | "funding": [ 703 | { 704 | "url": "https://www.doctrine-project.org/sponsorship.html", 705 | "type": "custom" 706 | }, 707 | { 708 | "url": "https://www.patreon.com/phpdoctrine", 709 | "type": "patreon" 710 | }, 711 | { 712 | "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", 713 | "type": "tidelift" 714 | } 715 | ], 716 | "time": "2022-12-30T00:23:10+00:00" 717 | }, 718 | { 719 | "name": "hamcrest/hamcrest-php", 720 | "version": "v2.0.1", 721 | "source": { 722 | "type": "git", 723 | "url": "https://github.com/hamcrest/hamcrest-php.git", 724 | "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" 725 | }, 726 | "dist": { 727 | "type": "zip", 728 | "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", 729 | "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", 730 | "shasum": "" 731 | }, 732 | "require": { 733 | "php": "^5.3|^7.0|^8.0" 734 | }, 735 | "replace": { 736 | "cordoval/hamcrest-php": "*", 737 | "davedevelopment/hamcrest-php": "*", 738 | "kodova/hamcrest-php": "*" 739 | }, 740 | "require-dev": { 741 | "phpunit/php-file-iterator": "^1.4 || ^2.0", 742 | "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" 743 | }, 744 | "type": "library", 745 | "extra": { 746 | "branch-alias": { 747 | "dev-master": "2.1-dev" 748 | } 749 | }, 750 | "autoload": { 751 | "classmap": [ 752 | "hamcrest" 753 | ] 754 | }, 755 | "notification-url": "https://packagist.org/downloads/", 756 | "license": [ 757 | "BSD-3-Clause" 758 | ], 759 | "description": "This is the PHP port of Hamcrest Matchers", 760 | "keywords": [ 761 | "test" 762 | ], 763 | "support": { 764 | "issues": "https://github.com/hamcrest/hamcrest-php/issues", 765 | "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" 766 | }, 767 | "time": "2020-07-09T08:09:16+00:00" 768 | }, 769 | { 770 | "name": "justinrainbow/json-schema", 771 | "version": "5.3.0", 772 | "source": { 773 | "type": "git", 774 | "url": "https://github.com/jsonrainbow/json-schema.git", 775 | "reference": "feb2ca6dd1cebdaf1ed60a4c8de2e53ce11c4fd8" 776 | }, 777 | "dist": { 778 | "type": "zip", 779 | "url": "https://api.github.com/repos/jsonrainbow/json-schema/zipball/feb2ca6dd1cebdaf1ed60a4c8de2e53ce11c4fd8", 780 | "reference": "feb2ca6dd1cebdaf1ed60a4c8de2e53ce11c4fd8", 781 | "shasum": "" 782 | }, 783 | "require": { 784 | "php": ">=7.1" 785 | }, 786 | "require-dev": { 787 | "friendsofphp/php-cs-fixer": "~2.2.20||~2.15.1", 788 | "json-schema/json-schema-test-suite": "1.2.0", 789 | "phpunit/phpunit": "^4.8.35" 790 | }, 791 | "bin": [ 792 | "bin/validate-json" 793 | ], 794 | "type": "library", 795 | "autoload": { 796 | "psr-4": { 797 | "JsonSchema\\": "src/JsonSchema/" 798 | } 799 | }, 800 | "notification-url": "https://packagist.org/downloads/", 801 | "license": [ 802 | "MIT" 803 | ], 804 | "authors": [ 805 | { 806 | "name": "Bruno Prieto Reis", 807 | "email": "bruno.p.reis@gmail.com" 808 | }, 809 | { 810 | "name": "Justin Rainbow", 811 | "email": "justin.rainbow@gmail.com" 812 | }, 813 | { 814 | "name": "Igor Wiedler", 815 | "email": "igor@wiedler.ch" 816 | }, 817 | { 818 | "name": "Robert Schönthal", 819 | "email": "seroscho@googlemail.com" 820 | } 821 | ], 822 | "description": "A library to validate a json schema.", 823 | "homepage": "https://github.com/justinrainbow/json-schema", 824 | "keywords": [ 825 | "json", 826 | "schema" 827 | ], 828 | "support": { 829 | "issues": "https://github.com/jsonrainbow/json-schema/issues", 830 | "source": "https://github.com/jsonrainbow/json-schema/tree/5.3.0" 831 | }, 832 | "time": "2024-07-06T21:00:26+00:00" 833 | }, 834 | { 835 | "name": "mockery/mockery", 836 | "version": "1.6.12", 837 | "source": { 838 | "type": "git", 839 | "url": "https://github.com/mockery/mockery.git", 840 | "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699" 841 | }, 842 | "dist": { 843 | "type": "zip", 844 | "url": "https://api.github.com/repos/mockery/mockery/zipball/1f4efdd7d3beafe9807b08156dfcb176d18f1699", 845 | "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699", 846 | "shasum": "" 847 | }, 848 | "require": { 849 | "hamcrest/hamcrest-php": "^2.0.1", 850 | "lib-pcre": ">=7.0", 851 | "php": ">=7.3" 852 | }, 853 | "conflict": { 854 | "phpunit/phpunit": "<8.0" 855 | }, 856 | "require-dev": { 857 | "phpunit/phpunit": "^8.5 || ^9.6.17", 858 | "symplify/easy-coding-standard": "^12.1.14" 859 | }, 860 | "type": "library", 861 | "autoload": { 862 | "files": [ 863 | "library/helpers.php", 864 | "library/Mockery.php" 865 | ], 866 | "psr-4": { 867 | "Mockery\\": "library/Mockery" 868 | } 869 | }, 870 | "notification-url": "https://packagist.org/downloads/", 871 | "license": [ 872 | "BSD-3-Clause" 873 | ], 874 | "authors": [ 875 | { 876 | "name": "Pádraic Brady", 877 | "email": "padraic.brady@gmail.com", 878 | "homepage": "https://github.com/padraic", 879 | "role": "Author" 880 | }, 881 | { 882 | "name": "Dave Marshall", 883 | "email": "dave.marshall@atstsolutions.co.uk", 884 | "homepage": "https://davedevelopment.co.uk", 885 | "role": "Developer" 886 | }, 887 | { 888 | "name": "Nathanael Esayeas", 889 | "email": "nathanael.esayeas@protonmail.com", 890 | "homepage": "https://github.com/ghostwriter", 891 | "role": "Lead Developer" 892 | } 893 | ], 894 | "description": "Mockery is a simple yet flexible PHP mock object framework", 895 | "homepage": "https://github.com/mockery/mockery", 896 | "keywords": [ 897 | "BDD", 898 | "TDD", 899 | "library", 900 | "mock", 901 | "mock objects", 902 | "mockery", 903 | "stub", 904 | "test", 905 | "test double", 906 | "testing" 907 | ], 908 | "support": { 909 | "docs": "https://docs.mockery.io/", 910 | "issues": "https://github.com/mockery/mockery/issues", 911 | "rss": "https://github.com/mockery/mockery/releases.atom", 912 | "security": "https://github.com/mockery/mockery/security/advisories", 913 | "source": "https://github.com/mockery/mockery" 914 | }, 915 | "time": "2024-05-16T03:13:13+00:00" 916 | }, 917 | { 918 | "name": "myclabs/deep-copy", 919 | "version": "1.12.0", 920 | "source": { 921 | "type": "git", 922 | "url": "https://github.com/myclabs/DeepCopy.git", 923 | "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c" 924 | }, 925 | "dist": { 926 | "type": "zip", 927 | "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", 928 | "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", 929 | "shasum": "" 930 | }, 931 | "require": { 932 | "php": "^7.1 || ^8.0" 933 | }, 934 | "conflict": { 935 | "doctrine/collections": "<1.6.8", 936 | "doctrine/common": "<2.13.3 || >=3 <3.2.2" 937 | }, 938 | "require-dev": { 939 | "doctrine/collections": "^1.6.8", 940 | "doctrine/common": "^2.13.3 || ^3.2.2", 941 | "phpspec/prophecy": "^1.10", 942 | "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" 943 | }, 944 | "type": "library", 945 | "autoload": { 946 | "files": [ 947 | "src/DeepCopy/deep_copy.php" 948 | ], 949 | "psr-4": { 950 | "DeepCopy\\": "src/DeepCopy/" 951 | } 952 | }, 953 | "notification-url": "https://packagist.org/downloads/", 954 | "license": [ 955 | "MIT" 956 | ], 957 | "description": "Create deep copies (clones) of your objects", 958 | "keywords": [ 959 | "clone", 960 | "copy", 961 | "duplicate", 962 | "object", 963 | "object graph" 964 | ], 965 | "support": { 966 | "issues": "https://github.com/myclabs/DeepCopy/issues", 967 | "source": "https://github.com/myclabs/DeepCopy/tree/1.12.0" 968 | }, 969 | "funding": [ 970 | { 971 | "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", 972 | "type": "tidelift" 973 | } 974 | ], 975 | "time": "2024-06-12T14:39:25+00:00" 976 | }, 977 | { 978 | "name": "nikic/php-parser", 979 | "version": "v5.1.0", 980 | "source": { 981 | "type": "git", 982 | "url": "https://github.com/nikic/PHP-Parser.git", 983 | "reference": "683130c2ff8c2739f4822ff7ac5c873ec529abd1" 984 | }, 985 | "dist": { 986 | "type": "zip", 987 | "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/683130c2ff8c2739f4822ff7ac5c873ec529abd1", 988 | "reference": "683130c2ff8c2739f4822ff7ac5c873ec529abd1", 989 | "shasum": "" 990 | }, 991 | "require": { 992 | "ext-ctype": "*", 993 | "ext-json": "*", 994 | "ext-tokenizer": "*", 995 | "php": ">=7.4" 996 | }, 997 | "require-dev": { 998 | "ircmaxell/php-yacc": "^0.0.7", 999 | "phpunit/phpunit": "^9.0" 1000 | }, 1001 | "bin": [ 1002 | "bin/php-parse" 1003 | ], 1004 | "type": "library", 1005 | "extra": { 1006 | "branch-alias": { 1007 | "dev-master": "5.0-dev" 1008 | } 1009 | }, 1010 | "autoload": { 1011 | "psr-4": { 1012 | "PhpParser\\": "lib/PhpParser" 1013 | } 1014 | }, 1015 | "notification-url": "https://packagist.org/downloads/", 1016 | "license": [ 1017 | "BSD-3-Clause" 1018 | ], 1019 | "authors": [ 1020 | { 1021 | "name": "Nikita Popov" 1022 | } 1023 | ], 1024 | "description": "A PHP parser written in PHP", 1025 | "keywords": [ 1026 | "parser", 1027 | "php" 1028 | ], 1029 | "support": { 1030 | "issues": "https://github.com/nikic/PHP-Parser/issues", 1031 | "source": "https://github.com/nikic/PHP-Parser/tree/v5.1.0" 1032 | }, 1033 | "time": "2024-07-01T20:03:41+00:00" 1034 | }, 1035 | { 1036 | "name": "phar-io/manifest", 1037 | "version": "2.0.4", 1038 | "source": { 1039 | "type": "git", 1040 | "url": "https://github.com/phar-io/manifest.git", 1041 | "reference": "54750ef60c58e43759730615a392c31c80e23176" 1042 | }, 1043 | "dist": { 1044 | "type": "zip", 1045 | "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", 1046 | "reference": "54750ef60c58e43759730615a392c31c80e23176", 1047 | "shasum": "" 1048 | }, 1049 | "require": { 1050 | "ext-dom": "*", 1051 | "ext-libxml": "*", 1052 | "ext-phar": "*", 1053 | "ext-xmlwriter": "*", 1054 | "phar-io/version": "^3.0.1", 1055 | "php": "^7.2 || ^8.0" 1056 | }, 1057 | "type": "library", 1058 | "extra": { 1059 | "branch-alias": { 1060 | "dev-master": "2.0.x-dev" 1061 | } 1062 | }, 1063 | "autoload": { 1064 | "classmap": [ 1065 | "src/" 1066 | ] 1067 | }, 1068 | "notification-url": "https://packagist.org/downloads/", 1069 | "license": [ 1070 | "BSD-3-Clause" 1071 | ], 1072 | "authors": [ 1073 | { 1074 | "name": "Arne Blankerts", 1075 | "email": "arne@blankerts.de", 1076 | "role": "Developer" 1077 | }, 1078 | { 1079 | "name": "Sebastian Heuer", 1080 | "email": "sebastian@phpeople.de", 1081 | "role": "Developer" 1082 | }, 1083 | { 1084 | "name": "Sebastian Bergmann", 1085 | "email": "sebastian@phpunit.de", 1086 | "role": "Developer" 1087 | } 1088 | ], 1089 | "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", 1090 | "support": { 1091 | "issues": "https://github.com/phar-io/manifest/issues", 1092 | "source": "https://github.com/phar-io/manifest/tree/2.0.4" 1093 | }, 1094 | "funding": [ 1095 | { 1096 | "url": "https://github.com/theseer", 1097 | "type": "github" 1098 | } 1099 | ], 1100 | "time": "2024-03-03T12:33:53+00:00" 1101 | }, 1102 | { 1103 | "name": "phar-io/version", 1104 | "version": "3.2.1", 1105 | "source": { 1106 | "type": "git", 1107 | "url": "https://github.com/phar-io/version.git", 1108 | "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" 1109 | }, 1110 | "dist": { 1111 | "type": "zip", 1112 | "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", 1113 | "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", 1114 | "shasum": "" 1115 | }, 1116 | "require": { 1117 | "php": "^7.2 || ^8.0" 1118 | }, 1119 | "type": "library", 1120 | "autoload": { 1121 | "classmap": [ 1122 | "src/" 1123 | ] 1124 | }, 1125 | "notification-url": "https://packagist.org/downloads/", 1126 | "license": [ 1127 | "BSD-3-Clause" 1128 | ], 1129 | "authors": [ 1130 | { 1131 | "name": "Arne Blankerts", 1132 | "email": "arne@blankerts.de", 1133 | "role": "Developer" 1134 | }, 1135 | { 1136 | "name": "Sebastian Heuer", 1137 | "email": "sebastian@phpeople.de", 1138 | "role": "Developer" 1139 | }, 1140 | { 1141 | "name": "Sebastian Bergmann", 1142 | "email": "sebastian@phpunit.de", 1143 | "role": "Developer" 1144 | } 1145 | ], 1146 | "description": "Library for handling version information and constraints", 1147 | "support": { 1148 | "issues": "https://github.com/phar-io/version/issues", 1149 | "source": "https://github.com/phar-io/version/tree/3.2.1" 1150 | }, 1151 | "time": "2022-02-21T01:04:05+00:00" 1152 | }, 1153 | { 1154 | "name": "phpunit/php-code-coverage", 1155 | "version": "9.2.31", 1156 | "source": { 1157 | "type": "git", 1158 | "url": "https://github.com/sebastianbergmann/php-code-coverage.git", 1159 | "reference": "48c34b5d8d983006bd2adc2d0de92963b9155965" 1160 | }, 1161 | "dist": { 1162 | "type": "zip", 1163 | "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/48c34b5d8d983006bd2adc2d0de92963b9155965", 1164 | "reference": "48c34b5d8d983006bd2adc2d0de92963b9155965", 1165 | "shasum": "" 1166 | }, 1167 | "require": { 1168 | "ext-dom": "*", 1169 | "ext-libxml": "*", 1170 | "ext-xmlwriter": "*", 1171 | "nikic/php-parser": "^4.18 || ^5.0", 1172 | "php": ">=7.3", 1173 | "phpunit/php-file-iterator": "^3.0.3", 1174 | "phpunit/php-text-template": "^2.0.2", 1175 | "sebastian/code-unit-reverse-lookup": "^2.0.2", 1176 | "sebastian/complexity": "^2.0", 1177 | "sebastian/environment": "^5.1.2", 1178 | "sebastian/lines-of-code": "^1.0.3", 1179 | "sebastian/version": "^3.0.1", 1180 | "theseer/tokenizer": "^1.2.0" 1181 | }, 1182 | "require-dev": { 1183 | "phpunit/phpunit": "^9.3" 1184 | }, 1185 | "suggest": { 1186 | "ext-pcov": "PHP extension that provides line coverage", 1187 | "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" 1188 | }, 1189 | "type": "library", 1190 | "extra": { 1191 | "branch-alias": { 1192 | "dev-master": "9.2-dev" 1193 | } 1194 | }, 1195 | "autoload": { 1196 | "classmap": [ 1197 | "src/" 1198 | ] 1199 | }, 1200 | "notification-url": "https://packagist.org/downloads/", 1201 | "license": [ 1202 | "BSD-3-Clause" 1203 | ], 1204 | "authors": [ 1205 | { 1206 | "name": "Sebastian Bergmann", 1207 | "email": "sebastian@phpunit.de", 1208 | "role": "lead" 1209 | } 1210 | ], 1211 | "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", 1212 | "homepage": "https://github.com/sebastianbergmann/php-code-coverage", 1213 | "keywords": [ 1214 | "coverage", 1215 | "testing", 1216 | "xunit" 1217 | ], 1218 | "support": { 1219 | "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", 1220 | "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", 1221 | "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.31" 1222 | }, 1223 | "funding": [ 1224 | { 1225 | "url": "https://github.com/sebastianbergmann", 1226 | "type": "github" 1227 | } 1228 | ], 1229 | "time": "2024-03-02T06:37:42+00:00" 1230 | }, 1231 | { 1232 | "name": "phpunit/php-file-iterator", 1233 | "version": "3.0.6", 1234 | "source": { 1235 | "type": "git", 1236 | "url": "https://github.com/sebastianbergmann/php-file-iterator.git", 1237 | "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" 1238 | }, 1239 | "dist": { 1240 | "type": "zip", 1241 | "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", 1242 | "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", 1243 | "shasum": "" 1244 | }, 1245 | "require": { 1246 | "php": ">=7.3" 1247 | }, 1248 | "require-dev": { 1249 | "phpunit/phpunit": "^9.3" 1250 | }, 1251 | "type": "library", 1252 | "extra": { 1253 | "branch-alias": { 1254 | "dev-master": "3.0-dev" 1255 | } 1256 | }, 1257 | "autoload": { 1258 | "classmap": [ 1259 | "src/" 1260 | ] 1261 | }, 1262 | "notification-url": "https://packagist.org/downloads/", 1263 | "license": [ 1264 | "BSD-3-Clause" 1265 | ], 1266 | "authors": [ 1267 | { 1268 | "name": "Sebastian Bergmann", 1269 | "email": "sebastian@phpunit.de", 1270 | "role": "lead" 1271 | } 1272 | ], 1273 | "description": "FilterIterator implementation that filters files based on a list of suffixes.", 1274 | "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", 1275 | "keywords": [ 1276 | "filesystem", 1277 | "iterator" 1278 | ], 1279 | "support": { 1280 | "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", 1281 | "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" 1282 | }, 1283 | "funding": [ 1284 | { 1285 | "url": "https://github.com/sebastianbergmann", 1286 | "type": "github" 1287 | } 1288 | ], 1289 | "time": "2021-12-02T12:48:52+00:00" 1290 | }, 1291 | { 1292 | "name": "phpunit/php-invoker", 1293 | "version": "3.1.1", 1294 | "source": { 1295 | "type": "git", 1296 | "url": "https://github.com/sebastianbergmann/php-invoker.git", 1297 | "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" 1298 | }, 1299 | "dist": { 1300 | "type": "zip", 1301 | "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", 1302 | "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", 1303 | "shasum": "" 1304 | }, 1305 | "require": { 1306 | "php": ">=7.3" 1307 | }, 1308 | "require-dev": { 1309 | "ext-pcntl": "*", 1310 | "phpunit/phpunit": "^9.3" 1311 | }, 1312 | "suggest": { 1313 | "ext-pcntl": "*" 1314 | }, 1315 | "type": "library", 1316 | "extra": { 1317 | "branch-alias": { 1318 | "dev-master": "3.1-dev" 1319 | } 1320 | }, 1321 | "autoload": { 1322 | "classmap": [ 1323 | "src/" 1324 | ] 1325 | }, 1326 | "notification-url": "https://packagist.org/downloads/", 1327 | "license": [ 1328 | "BSD-3-Clause" 1329 | ], 1330 | "authors": [ 1331 | { 1332 | "name": "Sebastian Bergmann", 1333 | "email": "sebastian@phpunit.de", 1334 | "role": "lead" 1335 | } 1336 | ], 1337 | "description": "Invoke callables with a timeout", 1338 | "homepage": "https://github.com/sebastianbergmann/php-invoker/", 1339 | "keywords": [ 1340 | "process" 1341 | ], 1342 | "support": { 1343 | "issues": "https://github.com/sebastianbergmann/php-invoker/issues", 1344 | "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" 1345 | }, 1346 | "funding": [ 1347 | { 1348 | "url": "https://github.com/sebastianbergmann", 1349 | "type": "github" 1350 | } 1351 | ], 1352 | "time": "2020-09-28T05:58:55+00:00" 1353 | }, 1354 | { 1355 | "name": "phpunit/php-text-template", 1356 | "version": "2.0.4", 1357 | "source": { 1358 | "type": "git", 1359 | "url": "https://github.com/sebastianbergmann/php-text-template.git", 1360 | "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" 1361 | }, 1362 | "dist": { 1363 | "type": "zip", 1364 | "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", 1365 | "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", 1366 | "shasum": "" 1367 | }, 1368 | "require": { 1369 | "php": ">=7.3" 1370 | }, 1371 | "require-dev": { 1372 | "phpunit/phpunit": "^9.3" 1373 | }, 1374 | "type": "library", 1375 | "extra": { 1376 | "branch-alias": { 1377 | "dev-master": "2.0-dev" 1378 | } 1379 | }, 1380 | "autoload": { 1381 | "classmap": [ 1382 | "src/" 1383 | ] 1384 | }, 1385 | "notification-url": "https://packagist.org/downloads/", 1386 | "license": [ 1387 | "BSD-3-Clause" 1388 | ], 1389 | "authors": [ 1390 | { 1391 | "name": "Sebastian Bergmann", 1392 | "email": "sebastian@phpunit.de", 1393 | "role": "lead" 1394 | } 1395 | ], 1396 | "description": "Simple template engine.", 1397 | "homepage": "https://github.com/sebastianbergmann/php-text-template/", 1398 | "keywords": [ 1399 | "template" 1400 | ], 1401 | "support": { 1402 | "issues": "https://github.com/sebastianbergmann/php-text-template/issues", 1403 | "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" 1404 | }, 1405 | "funding": [ 1406 | { 1407 | "url": "https://github.com/sebastianbergmann", 1408 | "type": "github" 1409 | } 1410 | ], 1411 | "time": "2020-10-26T05:33:50+00:00" 1412 | }, 1413 | { 1414 | "name": "phpunit/php-timer", 1415 | "version": "5.0.3", 1416 | "source": { 1417 | "type": "git", 1418 | "url": "https://github.com/sebastianbergmann/php-timer.git", 1419 | "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" 1420 | }, 1421 | "dist": { 1422 | "type": "zip", 1423 | "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", 1424 | "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", 1425 | "shasum": "" 1426 | }, 1427 | "require": { 1428 | "php": ">=7.3" 1429 | }, 1430 | "require-dev": { 1431 | "phpunit/phpunit": "^9.3" 1432 | }, 1433 | "type": "library", 1434 | "extra": { 1435 | "branch-alias": { 1436 | "dev-master": "5.0-dev" 1437 | } 1438 | }, 1439 | "autoload": { 1440 | "classmap": [ 1441 | "src/" 1442 | ] 1443 | }, 1444 | "notification-url": "https://packagist.org/downloads/", 1445 | "license": [ 1446 | "BSD-3-Clause" 1447 | ], 1448 | "authors": [ 1449 | { 1450 | "name": "Sebastian Bergmann", 1451 | "email": "sebastian@phpunit.de", 1452 | "role": "lead" 1453 | } 1454 | ], 1455 | "description": "Utility class for timing", 1456 | "homepage": "https://github.com/sebastianbergmann/php-timer/", 1457 | "keywords": [ 1458 | "timer" 1459 | ], 1460 | "support": { 1461 | "issues": "https://github.com/sebastianbergmann/php-timer/issues", 1462 | "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" 1463 | }, 1464 | "funding": [ 1465 | { 1466 | "url": "https://github.com/sebastianbergmann", 1467 | "type": "github" 1468 | } 1469 | ], 1470 | "time": "2020-10-26T13:16:10+00:00" 1471 | }, 1472 | { 1473 | "name": "phpunit/phpunit", 1474 | "version": "9.6.20", 1475 | "source": { 1476 | "type": "git", 1477 | "url": "https://github.com/sebastianbergmann/phpunit.git", 1478 | "reference": "49d7820565836236411f5dc002d16dd689cde42f" 1479 | }, 1480 | "dist": { 1481 | "type": "zip", 1482 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/49d7820565836236411f5dc002d16dd689cde42f", 1483 | "reference": "49d7820565836236411f5dc002d16dd689cde42f", 1484 | "shasum": "" 1485 | }, 1486 | "require": { 1487 | "doctrine/instantiator": "^1.5.0 || ^2", 1488 | "ext-dom": "*", 1489 | "ext-json": "*", 1490 | "ext-libxml": "*", 1491 | "ext-mbstring": "*", 1492 | "ext-xml": "*", 1493 | "ext-xmlwriter": "*", 1494 | "myclabs/deep-copy": "^1.12.0", 1495 | "phar-io/manifest": "^2.0.4", 1496 | "phar-io/version": "^3.2.1", 1497 | "php": ">=7.3", 1498 | "phpunit/php-code-coverage": "^9.2.31", 1499 | "phpunit/php-file-iterator": "^3.0.6", 1500 | "phpunit/php-invoker": "^3.1.1", 1501 | "phpunit/php-text-template": "^2.0.4", 1502 | "phpunit/php-timer": "^5.0.3", 1503 | "sebastian/cli-parser": "^1.0.2", 1504 | "sebastian/code-unit": "^1.0.8", 1505 | "sebastian/comparator": "^4.0.8", 1506 | "sebastian/diff": "^4.0.6", 1507 | "sebastian/environment": "^5.1.5", 1508 | "sebastian/exporter": "^4.0.6", 1509 | "sebastian/global-state": "^5.0.7", 1510 | "sebastian/object-enumerator": "^4.0.4", 1511 | "sebastian/resource-operations": "^3.0.4", 1512 | "sebastian/type": "^3.2.1", 1513 | "sebastian/version": "^3.0.2" 1514 | }, 1515 | "suggest": { 1516 | "ext-soap": "To be able to generate mocks based on WSDL files", 1517 | "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" 1518 | }, 1519 | "bin": [ 1520 | "phpunit" 1521 | ], 1522 | "type": "library", 1523 | "extra": { 1524 | "branch-alias": { 1525 | "dev-master": "9.6-dev" 1526 | } 1527 | }, 1528 | "autoload": { 1529 | "files": [ 1530 | "src/Framework/Assert/Functions.php" 1531 | ], 1532 | "classmap": [ 1533 | "src/" 1534 | ] 1535 | }, 1536 | "notification-url": "https://packagist.org/downloads/", 1537 | "license": [ 1538 | "BSD-3-Clause" 1539 | ], 1540 | "authors": [ 1541 | { 1542 | "name": "Sebastian Bergmann", 1543 | "email": "sebastian@phpunit.de", 1544 | "role": "lead" 1545 | } 1546 | ], 1547 | "description": "The PHP Unit Testing framework.", 1548 | "homepage": "https://phpunit.de/", 1549 | "keywords": [ 1550 | "phpunit", 1551 | "testing", 1552 | "xunit" 1553 | ], 1554 | "support": { 1555 | "issues": "https://github.com/sebastianbergmann/phpunit/issues", 1556 | "security": "https://github.com/sebastianbergmann/phpunit/security/policy", 1557 | "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.20" 1558 | }, 1559 | "funding": [ 1560 | { 1561 | "url": "https://phpunit.de/sponsors.html", 1562 | "type": "custom" 1563 | }, 1564 | { 1565 | "url": "https://github.com/sebastianbergmann", 1566 | "type": "github" 1567 | }, 1568 | { 1569 | "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", 1570 | "type": "tidelift" 1571 | } 1572 | ], 1573 | "time": "2024-07-10T11:45:39+00:00" 1574 | }, 1575 | { 1576 | "name": "psr/container", 1577 | "version": "2.0.2", 1578 | "source": { 1579 | "type": "git", 1580 | "url": "https://github.com/php-fig/container.git", 1581 | "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" 1582 | }, 1583 | "dist": { 1584 | "type": "zip", 1585 | "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", 1586 | "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", 1587 | "shasum": "" 1588 | }, 1589 | "require": { 1590 | "php": ">=7.4.0" 1591 | }, 1592 | "type": "library", 1593 | "extra": { 1594 | "branch-alias": { 1595 | "dev-master": "2.0.x-dev" 1596 | } 1597 | }, 1598 | "autoload": { 1599 | "psr-4": { 1600 | "Psr\\Container\\": "src/" 1601 | } 1602 | }, 1603 | "notification-url": "https://packagist.org/downloads/", 1604 | "license": [ 1605 | "MIT" 1606 | ], 1607 | "authors": [ 1608 | { 1609 | "name": "PHP-FIG", 1610 | "homepage": "https://www.php-fig.org/" 1611 | } 1612 | ], 1613 | "description": "Common Container Interface (PHP FIG PSR-11)", 1614 | "homepage": "https://github.com/php-fig/container", 1615 | "keywords": [ 1616 | "PSR-11", 1617 | "container", 1618 | "container-interface", 1619 | "container-interop", 1620 | "psr" 1621 | ], 1622 | "support": { 1623 | "issues": "https://github.com/php-fig/container/issues", 1624 | "source": "https://github.com/php-fig/container/tree/2.0.2" 1625 | }, 1626 | "time": "2021-11-05T16:47:00+00:00" 1627 | }, 1628 | { 1629 | "name": "psr/log", 1630 | "version": "3.0.0", 1631 | "source": { 1632 | "type": "git", 1633 | "url": "https://github.com/php-fig/log.git", 1634 | "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001" 1635 | }, 1636 | "dist": { 1637 | "type": "zip", 1638 | "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001", 1639 | "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001", 1640 | "shasum": "" 1641 | }, 1642 | "require": { 1643 | "php": ">=8.0.0" 1644 | }, 1645 | "type": "library", 1646 | "extra": { 1647 | "branch-alias": { 1648 | "dev-master": "3.x-dev" 1649 | } 1650 | }, 1651 | "autoload": { 1652 | "psr-4": { 1653 | "Psr\\Log\\": "src" 1654 | } 1655 | }, 1656 | "notification-url": "https://packagist.org/downloads/", 1657 | "license": [ 1658 | "MIT" 1659 | ], 1660 | "authors": [ 1661 | { 1662 | "name": "PHP-FIG", 1663 | "homepage": "https://www.php-fig.org/" 1664 | } 1665 | ], 1666 | "description": "Common interface for logging libraries", 1667 | "homepage": "https://github.com/php-fig/log", 1668 | "keywords": [ 1669 | "log", 1670 | "psr", 1671 | "psr-3" 1672 | ], 1673 | "support": { 1674 | "source": "https://github.com/php-fig/log/tree/3.0.0" 1675 | }, 1676 | "time": "2021-07-14T16:46:02+00:00" 1677 | }, 1678 | { 1679 | "name": "react/promise", 1680 | "version": "v3.2.0", 1681 | "source": { 1682 | "type": "git", 1683 | "url": "https://github.com/reactphp/promise.git", 1684 | "reference": "8a164643313c71354582dc850b42b33fa12a4b63" 1685 | }, 1686 | "dist": { 1687 | "type": "zip", 1688 | "url": "https://api.github.com/repos/reactphp/promise/zipball/8a164643313c71354582dc850b42b33fa12a4b63", 1689 | "reference": "8a164643313c71354582dc850b42b33fa12a4b63", 1690 | "shasum": "" 1691 | }, 1692 | "require": { 1693 | "php": ">=7.1.0" 1694 | }, 1695 | "require-dev": { 1696 | "phpstan/phpstan": "1.10.39 || 1.4.10", 1697 | "phpunit/phpunit": "^9.6 || ^7.5" 1698 | }, 1699 | "type": "library", 1700 | "autoload": { 1701 | "files": [ 1702 | "src/functions_include.php" 1703 | ], 1704 | "psr-4": { 1705 | "React\\Promise\\": "src/" 1706 | } 1707 | }, 1708 | "notification-url": "https://packagist.org/downloads/", 1709 | "license": [ 1710 | "MIT" 1711 | ], 1712 | "authors": [ 1713 | { 1714 | "name": "Jan Sorgalla", 1715 | "email": "jsorgalla@gmail.com", 1716 | "homepage": "https://sorgalla.com/" 1717 | }, 1718 | { 1719 | "name": "Christian Lück", 1720 | "email": "christian@clue.engineering", 1721 | "homepage": "https://clue.engineering/" 1722 | }, 1723 | { 1724 | "name": "Cees-Jan Kiewiet", 1725 | "email": "reactphp@ceesjankiewiet.nl", 1726 | "homepage": "https://wyrihaximus.net/" 1727 | }, 1728 | { 1729 | "name": "Chris Boden", 1730 | "email": "cboden@gmail.com", 1731 | "homepage": "https://cboden.dev/" 1732 | } 1733 | ], 1734 | "description": "A lightweight implementation of CommonJS Promises/A for PHP", 1735 | "keywords": [ 1736 | "promise", 1737 | "promises" 1738 | ], 1739 | "support": { 1740 | "issues": "https://github.com/reactphp/promise/issues", 1741 | "source": "https://github.com/reactphp/promise/tree/v3.2.0" 1742 | }, 1743 | "funding": [ 1744 | { 1745 | "url": "https://opencollective.com/reactphp", 1746 | "type": "open_collective" 1747 | } 1748 | ], 1749 | "time": "2024-05-24T10:39:05+00:00" 1750 | }, 1751 | { 1752 | "name": "sebastian/cli-parser", 1753 | "version": "1.0.2", 1754 | "source": { 1755 | "type": "git", 1756 | "url": "https://github.com/sebastianbergmann/cli-parser.git", 1757 | "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b" 1758 | }, 1759 | "dist": { 1760 | "type": "zip", 1761 | "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/2b56bea83a09de3ac06bb18b92f068e60cc6f50b", 1762 | "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b", 1763 | "shasum": "" 1764 | }, 1765 | "require": { 1766 | "php": ">=7.3" 1767 | }, 1768 | "require-dev": { 1769 | "phpunit/phpunit": "^9.3" 1770 | }, 1771 | "type": "library", 1772 | "extra": { 1773 | "branch-alias": { 1774 | "dev-master": "1.0-dev" 1775 | } 1776 | }, 1777 | "autoload": { 1778 | "classmap": [ 1779 | "src/" 1780 | ] 1781 | }, 1782 | "notification-url": "https://packagist.org/downloads/", 1783 | "license": [ 1784 | "BSD-3-Clause" 1785 | ], 1786 | "authors": [ 1787 | { 1788 | "name": "Sebastian Bergmann", 1789 | "email": "sebastian@phpunit.de", 1790 | "role": "lead" 1791 | } 1792 | ], 1793 | "description": "Library for parsing CLI options", 1794 | "homepage": "https://github.com/sebastianbergmann/cli-parser", 1795 | "support": { 1796 | "issues": "https://github.com/sebastianbergmann/cli-parser/issues", 1797 | "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.2" 1798 | }, 1799 | "funding": [ 1800 | { 1801 | "url": "https://github.com/sebastianbergmann", 1802 | "type": "github" 1803 | } 1804 | ], 1805 | "time": "2024-03-02T06:27:43+00:00" 1806 | }, 1807 | { 1808 | "name": "sebastian/code-unit", 1809 | "version": "1.0.8", 1810 | "source": { 1811 | "type": "git", 1812 | "url": "https://github.com/sebastianbergmann/code-unit.git", 1813 | "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" 1814 | }, 1815 | "dist": { 1816 | "type": "zip", 1817 | "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", 1818 | "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", 1819 | "shasum": "" 1820 | }, 1821 | "require": { 1822 | "php": ">=7.3" 1823 | }, 1824 | "require-dev": { 1825 | "phpunit/phpunit": "^9.3" 1826 | }, 1827 | "type": "library", 1828 | "extra": { 1829 | "branch-alias": { 1830 | "dev-master": "1.0-dev" 1831 | } 1832 | }, 1833 | "autoload": { 1834 | "classmap": [ 1835 | "src/" 1836 | ] 1837 | }, 1838 | "notification-url": "https://packagist.org/downloads/", 1839 | "license": [ 1840 | "BSD-3-Clause" 1841 | ], 1842 | "authors": [ 1843 | { 1844 | "name": "Sebastian Bergmann", 1845 | "email": "sebastian@phpunit.de", 1846 | "role": "lead" 1847 | } 1848 | ], 1849 | "description": "Collection of value objects that represent the PHP code units", 1850 | "homepage": "https://github.com/sebastianbergmann/code-unit", 1851 | "support": { 1852 | "issues": "https://github.com/sebastianbergmann/code-unit/issues", 1853 | "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" 1854 | }, 1855 | "funding": [ 1856 | { 1857 | "url": "https://github.com/sebastianbergmann", 1858 | "type": "github" 1859 | } 1860 | ], 1861 | "time": "2020-10-26T13:08:54+00:00" 1862 | }, 1863 | { 1864 | "name": "sebastian/code-unit-reverse-lookup", 1865 | "version": "2.0.3", 1866 | "source": { 1867 | "type": "git", 1868 | "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", 1869 | "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" 1870 | }, 1871 | "dist": { 1872 | "type": "zip", 1873 | "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", 1874 | "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", 1875 | "shasum": "" 1876 | }, 1877 | "require": { 1878 | "php": ">=7.3" 1879 | }, 1880 | "require-dev": { 1881 | "phpunit/phpunit": "^9.3" 1882 | }, 1883 | "type": "library", 1884 | "extra": { 1885 | "branch-alias": { 1886 | "dev-master": "2.0-dev" 1887 | } 1888 | }, 1889 | "autoload": { 1890 | "classmap": [ 1891 | "src/" 1892 | ] 1893 | }, 1894 | "notification-url": "https://packagist.org/downloads/", 1895 | "license": [ 1896 | "BSD-3-Clause" 1897 | ], 1898 | "authors": [ 1899 | { 1900 | "name": "Sebastian Bergmann", 1901 | "email": "sebastian@phpunit.de" 1902 | } 1903 | ], 1904 | "description": "Looks up which function or method a line of code belongs to", 1905 | "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", 1906 | "support": { 1907 | "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", 1908 | "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" 1909 | }, 1910 | "funding": [ 1911 | { 1912 | "url": "https://github.com/sebastianbergmann", 1913 | "type": "github" 1914 | } 1915 | ], 1916 | "time": "2020-09-28T05:30:19+00:00" 1917 | }, 1918 | { 1919 | "name": "sebastian/comparator", 1920 | "version": "4.0.8", 1921 | "source": { 1922 | "type": "git", 1923 | "url": "https://github.com/sebastianbergmann/comparator.git", 1924 | "reference": "fa0f136dd2334583309d32b62544682ee972b51a" 1925 | }, 1926 | "dist": { 1927 | "type": "zip", 1928 | "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", 1929 | "reference": "fa0f136dd2334583309d32b62544682ee972b51a", 1930 | "shasum": "" 1931 | }, 1932 | "require": { 1933 | "php": ">=7.3", 1934 | "sebastian/diff": "^4.0", 1935 | "sebastian/exporter": "^4.0" 1936 | }, 1937 | "require-dev": { 1938 | "phpunit/phpunit": "^9.3" 1939 | }, 1940 | "type": "library", 1941 | "extra": { 1942 | "branch-alias": { 1943 | "dev-master": "4.0-dev" 1944 | } 1945 | }, 1946 | "autoload": { 1947 | "classmap": [ 1948 | "src/" 1949 | ] 1950 | }, 1951 | "notification-url": "https://packagist.org/downloads/", 1952 | "license": [ 1953 | "BSD-3-Clause" 1954 | ], 1955 | "authors": [ 1956 | { 1957 | "name": "Sebastian Bergmann", 1958 | "email": "sebastian@phpunit.de" 1959 | }, 1960 | { 1961 | "name": "Jeff Welch", 1962 | "email": "whatthejeff@gmail.com" 1963 | }, 1964 | { 1965 | "name": "Volker Dusch", 1966 | "email": "github@wallbash.com" 1967 | }, 1968 | { 1969 | "name": "Bernhard Schussek", 1970 | "email": "bschussek@2bepublished.at" 1971 | } 1972 | ], 1973 | "description": "Provides the functionality to compare PHP values for equality", 1974 | "homepage": "https://github.com/sebastianbergmann/comparator", 1975 | "keywords": [ 1976 | "comparator", 1977 | "compare", 1978 | "equality" 1979 | ], 1980 | "support": { 1981 | "issues": "https://github.com/sebastianbergmann/comparator/issues", 1982 | "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8" 1983 | }, 1984 | "funding": [ 1985 | { 1986 | "url": "https://github.com/sebastianbergmann", 1987 | "type": "github" 1988 | } 1989 | ], 1990 | "time": "2022-09-14T12:41:17+00:00" 1991 | }, 1992 | { 1993 | "name": "sebastian/complexity", 1994 | "version": "2.0.3", 1995 | "source": { 1996 | "type": "git", 1997 | "url": "https://github.com/sebastianbergmann/complexity.git", 1998 | "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a" 1999 | }, 2000 | "dist": { 2001 | "type": "zip", 2002 | "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/25f207c40d62b8b7aa32f5ab026c53561964053a", 2003 | "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a", 2004 | "shasum": "" 2005 | }, 2006 | "require": { 2007 | "nikic/php-parser": "^4.18 || ^5.0", 2008 | "php": ">=7.3" 2009 | }, 2010 | "require-dev": { 2011 | "phpunit/phpunit": "^9.3" 2012 | }, 2013 | "type": "library", 2014 | "extra": { 2015 | "branch-alias": { 2016 | "dev-master": "2.0-dev" 2017 | } 2018 | }, 2019 | "autoload": { 2020 | "classmap": [ 2021 | "src/" 2022 | ] 2023 | }, 2024 | "notification-url": "https://packagist.org/downloads/", 2025 | "license": [ 2026 | "BSD-3-Clause" 2027 | ], 2028 | "authors": [ 2029 | { 2030 | "name": "Sebastian Bergmann", 2031 | "email": "sebastian@phpunit.de", 2032 | "role": "lead" 2033 | } 2034 | ], 2035 | "description": "Library for calculating the complexity of PHP code units", 2036 | "homepage": "https://github.com/sebastianbergmann/complexity", 2037 | "support": { 2038 | "issues": "https://github.com/sebastianbergmann/complexity/issues", 2039 | "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.3" 2040 | }, 2041 | "funding": [ 2042 | { 2043 | "url": "https://github.com/sebastianbergmann", 2044 | "type": "github" 2045 | } 2046 | ], 2047 | "time": "2023-12-22T06:19:30+00:00" 2048 | }, 2049 | { 2050 | "name": "sebastian/diff", 2051 | "version": "4.0.6", 2052 | "source": { 2053 | "type": "git", 2054 | "url": "https://github.com/sebastianbergmann/diff.git", 2055 | "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc" 2056 | }, 2057 | "dist": { 2058 | "type": "zip", 2059 | "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/ba01945089c3a293b01ba9badc29ad55b106b0bc", 2060 | "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc", 2061 | "shasum": "" 2062 | }, 2063 | "require": { 2064 | "php": ">=7.3" 2065 | }, 2066 | "require-dev": { 2067 | "phpunit/phpunit": "^9.3", 2068 | "symfony/process": "^4.2 || ^5" 2069 | }, 2070 | "type": "library", 2071 | "extra": { 2072 | "branch-alias": { 2073 | "dev-master": "4.0-dev" 2074 | } 2075 | }, 2076 | "autoload": { 2077 | "classmap": [ 2078 | "src/" 2079 | ] 2080 | }, 2081 | "notification-url": "https://packagist.org/downloads/", 2082 | "license": [ 2083 | "BSD-3-Clause" 2084 | ], 2085 | "authors": [ 2086 | { 2087 | "name": "Sebastian Bergmann", 2088 | "email": "sebastian@phpunit.de" 2089 | }, 2090 | { 2091 | "name": "Kore Nordmann", 2092 | "email": "mail@kore-nordmann.de" 2093 | } 2094 | ], 2095 | "description": "Diff implementation", 2096 | "homepage": "https://github.com/sebastianbergmann/diff", 2097 | "keywords": [ 2098 | "diff", 2099 | "udiff", 2100 | "unidiff", 2101 | "unified diff" 2102 | ], 2103 | "support": { 2104 | "issues": "https://github.com/sebastianbergmann/diff/issues", 2105 | "source": "https://github.com/sebastianbergmann/diff/tree/4.0.6" 2106 | }, 2107 | "funding": [ 2108 | { 2109 | "url": "https://github.com/sebastianbergmann", 2110 | "type": "github" 2111 | } 2112 | ], 2113 | "time": "2024-03-02T06:30:58+00:00" 2114 | }, 2115 | { 2116 | "name": "sebastian/environment", 2117 | "version": "5.1.5", 2118 | "source": { 2119 | "type": "git", 2120 | "url": "https://github.com/sebastianbergmann/environment.git", 2121 | "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed" 2122 | }, 2123 | "dist": { 2124 | "type": "zip", 2125 | "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", 2126 | "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", 2127 | "shasum": "" 2128 | }, 2129 | "require": { 2130 | "php": ">=7.3" 2131 | }, 2132 | "require-dev": { 2133 | "phpunit/phpunit": "^9.3" 2134 | }, 2135 | "suggest": { 2136 | "ext-posix": "*" 2137 | }, 2138 | "type": "library", 2139 | "extra": { 2140 | "branch-alias": { 2141 | "dev-master": "5.1-dev" 2142 | } 2143 | }, 2144 | "autoload": { 2145 | "classmap": [ 2146 | "src/" 2147 | ] 2148 | }, 2149 | "notification-url": "https://packagist.org/downloads/", 2150 | "license": [ 2151 | "BSD-3-Clause" 2152 | ], 2153 | "authors": [ 2154 | { 2155 | "name": "Sebastian Bergmann", 2156 | "email": "sebastian@phpunit.de" 2157 | } 2158 | ], 2159 | "description": "Provides functionality to handle HHVM/PHP environments", 2160 | "homepage": "http://www.github.com/sebastianbergmann/environment", 2161 | "keywords": [ 2162 | "Xdebug", 2163 | "environment", 2164 | "hhvm" 2165 | ], 2166 | "support": { 2167 | "issues": "https://github.com/sebastianbergmann/environment/issues", 2168 | "source": "https://github.com/sebastianbergmann/environment/tree/5.1.5" 2169 | }, 2170 | "funding": [ 2171 | { 2172 | "url": "https://github.com/sebastianbergmann", 2173 | "type": "github" 2174 | } 2175 | ], 2176 | "time": "2023-02-03T06:03:51+00:00" 2177 | }, 2178 | { 2179 | "name": "sebastian/exporter", 2180 | "version": "4.0.6", 2181 | "source": { 2182 | "type": "git", 2183 | "url": "https://github.com/sebastianbergmann/exporter.git", 2184 | "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72" 2185 | }, 2186 | "dist": { 2187 | "type": "zip", 2188 | "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/78c00df8f170e02473b682df15bfcdacc3d32d72", 2189 | "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72", 2190 | "shasum": "" 2191 | }, 2192 | "require": { 2193 | "php": ">=7.3", 2194 | "sebastian/recursion-context": "^4.0" 2195 | }, 2196 | "require-dev": { 2197 | "ext-mbstring": "*", 2198 | "phpunit/phpunit": "^9.3" 2199 | }, 2200 | "type": "library", 2201 | "extra": { 2202 | "branch-alias": { 2203 | "dev-master": "4.0-dev" 2204 | } 2205 | }, 2206 | "autoload": { 2207 | "classmap": [ 2208 | "src/" 2209 | ] 2210 | }, 2211 | "notification-url": "https://packagist.org/downloads/", 2212 | "license": [ 2213 | "BSD-3-Clause" 2214 | ], 2215 | "authors": [ 2216 | { 2217 | "name": "Sebastian Bergmann", 2218 | "email": "sebastian@phpunit.de" 2219 | }, 2220 | { 2221 | "name": "Jeff Welch", 2222 | "email": "whatthejeff@gmail.com" 2223 | }, 2224 | { 2225 | "name": "Volker Dusch", 2226 | "email": "github@wallbash.com" 2227 | }, 2228 | { 2229 | "name": "Adam Harvey", 2230 | "email": "aharvey@php.net" 2231 | }, 2232 | { 2233 | "name": "Bernhard Schussek", 2234 | "email": "bschussek@gmail.com" 2235 | } 2236 | ], 2237 | "description": "Provides the functionality to export PHP variables for visualization", 2238 | "homepage": "https://www.github.com/sebastianbergmann/exporter", 2239 | "keywords": [ 2240 | "export", 2241 | "exporter" 2242 | ], 2243 | "support": { 2244 | "issues": "https://github.com/sebastianbergmann/exporter/issues", 2245 | "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.6" 2246 | }, 2247 | "funding": [ 2248 | { 2249 | "url": "https://github.com/sebastianbergmann", 2250 | "type": "github" 2251 | } 2252 | ], 2253 | "time": "2024-03-02T06:33:00+00:00" 2254 | }, 2255 | { 2256 | "name": "sebastian/global-state", 2257 | "version": "5.0.7", 2258 | "source": { 2259 | "type": "git", 2260 | "url": "https://github.com/sebastianbergmann/global-state.git", 2261 | "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9" 2262 | }, 2263 | "dist": { 2264 | "type": "zip", 2265 | "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9", 2266 | "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9", 2267 | "shasum": "" 2268 | }, 2269 | "require": { 2270 | "php": ">=7.3", 2271 | "sebastian/object-reflector": "^2.0", 2272 | "sebastian/recursion-context": "^4.0" 2273 | }, 2274 | "require-dev": { 2275 | "ext-dom": "*", 2276 | "phpunit/phpunit": "^9.3" 2277 | }, 2278 | "suggest": { 2279 | "ext-uopz": "*" 2280 | }, 2281 | "type": "library", 2282 | "extra": { 2283 | "branch-alias": { 2284 | "dev-master": "5.0-dev" 2285 | } 2286 | }, 2287 | "autoload": { 2288 | "classmap": [ 2289 | "src/" 2290 | ] 2291 | }, 2292 | "notification-url": "https://packagist.org/downloads/", 2293 | "license": [ 2294 | "BSD-3-Clause" 2295 | ], 2296 | "authors": [ 2297 | { 2298 | "name": "Sebastian Bergmann", 2299 | "email": "sebastian@phpunit.de" 2300 | } 2301 | ], 2302 | "description": "Snapshotting of global state", 2303 | "homepage": "http://www.github.com/sebastianbergmann/global-state", 2304 | "keywords": [ 2305 | "global state" 2306 | ], 2307 | "support": { 2308 | "issues": "https://github.com/sebastianbergmann/global-state/issues", 2309 | "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.7" 2310 | }, 2311 | "funding": [ 2312 | { 2313 | "url": "https://github.com/sebastianbergmann", 2314 | "type": "github" 2315 | } 2316 | ], 2317 | "time": "2024-03-02T06:35:11+00:00" 2318 | }, 2319 | { 2320 | "name": "sebastian/lines-of-code", 2321 | "version": "1.0.4", 2322 | "source": { 2323 | "type": "git", 2324 | "url": "https://github.com/sebastianbergmann/lines-of-code.git", 2325 | "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5" 2326 | }, 2327 | "dist": { 2328 | "type": "zip", 2329 | "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/e1e4a170560925c26d424b6a03aed157e7dcc5c5", 2330 | "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5", 2331 | "shasum": "" 2332 | }, 2333 | "require": { 2334 | "nikic/php-parser": "^4.18 || ^5.0", 2335 | "php": ">=7.3" 2336 | }, 2337 | "require-dev": { 2338 | "phpunit/phpunit": "^9.3" 2339 | }, 2340 | "type": "library", 2341 | "extra": { 2342 | "branch-alias": { 2343 | "dev-master": "1.0-dev" 2344 | } 2345 | }, 2346 | "autoload": { 2347 | "classmap": [ 2348 | "src/" 2349 | ] 2350 | }, 2351 | "notification-url": "https://packagist.org/downloads/", 2352 | "license": [ 2353 | "BSD-3-Clause" 2354 | ], 2355 | "authors": [ 2356 | { 2357 | "name": "Sebastian Bergmann", 2358 | "email": "sebastian@phpunit.de", 2359 | "role": "lead" 2360 | } 2361 | ], 2362 | "description": "Library for counting the lines of code in PHP source code", 2363 | "homepage": "https://github.com/sebastianbergmann/lines-of-code", 2364 | "support": { 2365 | "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", 2366 | "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.4" 2367 | }, 2368 | "funding": [ 2369 | { 2370 | "url": "https://github.com/sebastianbergmann", 2371 | "type": "github" 2372 | } 2373 | ], 2374 | "time": "2023-12-22T06:20:34+00:00" 2375 | }, 2376 | { 2377 | "name": "sebastian/object-enumerator", 2378 | "version": "4.0.4", 2379 | "source": { 2380 | "type": "git", 2381 | "url": "https://github.com/sebastianbergmann/object-enumerator.git", 2382 | "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" 2383 | }, 2384 | "dist": { 2385 | "type": "zip", 2386 | "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", 2387 | "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", 2388 | "shasum": "" 2389 | }, 2390 | "require": { 2391 | "php": ">=7.3", 2392 | "sebastian/object-reflector": "^2.0", 2393 | "sebastian/recursion-context": "^4.0" 2394 | }, 2395 | "require-dev": { 2396 | "phpunit/phpunit": "^9.3" 2397 | }, 2398 | "type": "library", 2399 | "extra": { 2400 | "branch-alias": { 2401 | "dev-master": "4.0-dev" 2402 | } 2403 | }, 2404 | "autoload": { 2405 | "classmap": [ 2406 | "src/" 2407 | ] 2408 | }, 2409 | "notification-url": "https://packagist.org/downloads/", 2410 | "license": [ 2411 | "BSD-3-Clause" 2412 | ], 2413 | "authors": [ 2414 | { 2415 | "name": "Sebastian Bergmann", 2416 | "email": "sebastian@phpunit.de" 2417 | } 2418 | ], 2419 | "description": "Traverses array structures and object graphs to enumerate all referenced objects", 2420 | "homepage": "https://github.com/sebastianbergmann/object-enumerator/", 2421 | "support": { 2422 | "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", 2423 | "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" 2424 | }, 2425 | "funding": [ 2426 | { 2427 | "url": "https://github.com/sebastianbergmann", 2428 | "type": "github" 2429 | } 2430 | ], 2431 | "time": "2020-10-26T13:12:34+00:00" 2432 | }, 2433 | { 2434 | "name": "sebastian/object-reflector", 2435 | "version": "2.0.4", 2436 | "source": { 2437 | "type": "git", 2438 | "url": "https://github.com/sebastianbergmann/object-reflector.git", 2439 | "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" 2440 | }, 2441 | "dist": { 2442 | "type": "zip", 2443 | "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", 2444 | "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", 2445 | "shasum": "" 2446 | }, 2447 | "require": { 2448 | "php": ">=7.3" 2449 | }, 2450 | "require-dev": { 2451 | "phpunit/phpunit": "^9.3" 2452 | }, 2453 | "type": "library", 2454 | "extra": { 2455 | "branch-alias": { 2456 | "dev-master": "2.0-dev" 2457 | } 2458 | }, 2459 | "autoload": { 2460 | "classmap": [ 2461 | "src/" 2462 | ] 2463 | }, 2464 | "notification-url": "https://packagist.org/downloads/", 2465 | "license": [ 2466 | "BSD-3-Clause" 2467 | ], 2468 | "authors": [ 2469 | { 2470 | "name": "Sebastian Bergmann", 2471 | "email": "sebastian@phpunit.de" 2472 | } 2473 | ], 2474 | "description": "Allows reflection of object attributes, including inherited and non-public ones", 2475 | "homepage": "https://github.com/sebastianbergmann/object-reflector/", 2476 | "support": { 2477 | "issues": "https://github.com/sebastianbergmann/object-reflector/issues", 2478 | "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" 2479 | }, 2480 | "funding": [ 2481 | { 2482 | "url": "https://github.com/sebastianbergmann", 2483 | "type": "github" 2484 | } 2485 | ], 2486 | "time": "2020-10-26T13:14:26+00:00" 2487 | }, 2488 | { 2489 | "name": "sebastian/recursion-context", 2490 | "version": "4.0.5", 2491 | "source": { 2492 | "type": "git", 2493 | "url": "https://github.com/sebastianbergmann/recursion-context.git", 2494 | "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1" 2495 | }, 2496 | "dist": { 2497 | "type": "zip", 2498 | "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", 2499 | "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", 2500 | "shasum": "" 2501 | }, 2502 | "require": { 2503 | "php": ">=7.3" 2504 | }, 2505 | "require-dev": { 2506 | "phpunit/phpunit": "^9.3" 2507 | }, 2508 | "type": "library", 2509 | "extra": { 2510 | "branch-alias": { 2511 | "dev-master": "4.0-dev" 2512 | } 2513 | }, 2514 | "autoload": { 2515 | "classmap": [ 2516 | "src/" 2517 | ] 2518 | }, 2519 | "notification-url": "https://packagist.org/downloads/", 2520 | "license": [ 2521 | "BSD-3-Clause" 2522 | ], 2523 | "authors": [ 2524 | { 2525 | "name": "Sebastian Bergmann", 2526 | "email": "sebastian@phpunit.de" 2527 | }, 2528 | { 2529 | "name": "Jeff Welch", 2530 | "email": "whatthejeff@gmail.com" 2531 | }, 2532 | { 2533 | "name": "Adam Harvey", 2534 | "email": "aharvey@php.net" 2535 | } 2536 | ], 2537 | "description": "Provides functionality to recursively process PHP variables", 2538 | "homepage": "https://github.com/sebastianbergmann/recursion-context", 2539 | "support": { 2540 | "issues": "https://github.com/sebastianbergmann/recursion-context/issues", 2541 | "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.5" 2542 | }, 2543 | "funding": [ 2544 | { 2545 | "url": "https://github.com/sebastianbergmann", 2546 | "type": "github" 2547 | } 2548 | ], 2549 | "time": "2023-02-03T06:07:39+00:00" 2550 | }, 2551 | { 2552 | "name": "sebastian/resource-operations", 2553 | "version": "3.0.4", 2554 | "source": { 2555 | "type": "git", 2556 | "url": "https://github.com/sebastianbergmann/resource-operations.git", 2557 | "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e" 2558 | }, 2559 | "dist": { 2560 | "type": "zip", 2561 | "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/05d5692a7993ecccd56a03e40cd7e5b09b1d404e", 2562 | "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e", 2563 | "shasum": "" 2564 | }, 2565 | "require": { 2566 | "php": ">=7.3" 2567 | }, 2568 | "require-dev": { 2569 | "phpunit/phpunit": "^9.0" 2570 | }, 2571 | "type": "library", 2572 | "extra": { 2573 | "branch-alias": { 2574 | "dev-main": "3.0-dev" 2575 | } 2576 | }, 2577 | "autoload": { 2578 | "classmap": [ 2579 | "src/" 2580 | ] 2581 | }, 2582 | "notification-url": "https://packagist.org/downloads/", 2583 | "license": [ 2584 | "BSD-3-Clause" 2585 | ], 2586 | "authors": [ 2587 | { 2588 | "name": "Sebastian Bergmann", 2589 | "email": "sebastian@phpunit.de" 2590 | } 2591 | ], 2592 | "description": "Provides a list of PHP built-in functions that operate on resources", 2593 | "homepage": "https://www.github.com/sebastianbergmann/resource-operations", 2594 | "support": { 2595 | "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.4" 2596 | }, 2597 | "funding": [ 2598 | { 2599 | "url": "https://github.com/sebastianbergmann", 2600 | "type": "github" 2601 | } 2602 | ], 2603 | "time": "2024-03-14T16:00:52+00:00" 2604 | }, 2605 | { 2606 | "name": "sebastian/type", 2607 | "version": "3.2.1", 2608 | "source": { 2609 | "type": "git", 2610 | "url": "https://github.com/sebastianbergmann/type.git", 2611 | "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7" 2612 | }, 2613 | "dist": { 2614 | "type": "zip", 2615 | "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", 2616 | "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", 2617 | "shasum": "" 2618 | }, 2619 | "require": { 2620 | "php": ">=7.3" 2621 | }, 2622 | "require-dev": { 2623 | "phpunit/phpunit": "^9.5" 2624 | }, 2625 | "type": "library", 2626 | "extra": { 2627 | "branch-alias": { 2628 | "dev-master": "3.2-dev" 2629 | } 2630 | }, 2631 | "autoload": { 2632 | "classmap": [ 2633 | "src/" 2634 | ] 2635 | }, 2636 | "notification-url": "https://packagist.org/downloads/", 2637 | "license": [ 2638 | "BSD-3-Clause" 2639 | ], 2640 | "authors": [ 2641 | { 2642 | "name": "Sebastian Bergmann", 2643 | "email": "sebastian@phpunit.de", 2644 | "role": "lead" 2645 | } 2646 | ], 2647 | "description": "Collection of value objects that represent the types of the PHP type system", 2648 | "homepage": "https://github.com/sebastianbergmann/type", 2649 | "support": { 2650 | "issues": "https://github.com/sebastianbergmann/type/issues", 2651 | "source": "https://github.com/sebastianbergmann/type/tree/3.2.1" 2652 | }, 2653 | "funding": [ 2654 | { 2655 | "url": "https://github.com/sebastianbergmann", 2656 | "type": "github" 2657 | } 2658 | ], 2659 | "time": "2023-02-03T06:13:03+00:00" 2660 | }, 2661 | { 2662 | "name": "sebastian/version", 2663 | "version": "3.0.2", 2664 | "source": { 2665 | "type": "git", 2666 | "url": "https://github.com/sebastianbergmann/version.git", 2667 | "reference": "c6c1022351a901512170118436c764e473f6de8c" 2668 | }, 2669 | "dist": { 2670 | "type": "zip", 2671 | "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", 2672 | "reference": "c6c1022351a901512170118436c764e473f6de8c", 2673 | "shasum": "" 2674 | }, 2675 | "require": { 2676 | "php": ">=7.3" 2677 | }, 2678 | "type": "library", 2679 | "extra": { 2680 | "branch-alias": { 2681 | "dev-master": "3.0-dev" 2682 | } 2683 | }, 2684 | "autoload": { 2685 | "classmap": [ 2686 | "src/" 2687 | ] 2688 | }, 2689 | "notification-url": "https://packagist.org/downloads/", 2690 | "license": [ 2691 | "BSD-3-Clause" 2692 | ], 2693 | "authors": [ 2694 | { 2695 | "name": "Sebastian Bergmann", 2696 | "email": "sebastian@phpunit.de", 2697 | "role": "lead" 2698 | } 2699 | ], 2700 | "description": "Library that helps with managing the version number of Git-hosted PHP projects", 2701 | "homepage": "https://github.com/sebastianbergmann/version", 2702 | "support": { 2703 | "issues": "https://github.com/sebastianbergmann/version/issues", 2704 | "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" 2705 | }, 2706 | "funding": [ 2707 | { 2708 | "url": "https://github.com/sebastianbergmann", 2709 | "type": "github" 2710 | } 2711 | ], 2712 | "time": "2020-09-28T06:39:44+00:00" 2713 | }, 2714 | { 2715 | "name": "seld/jsonlint", 2716 | "version": "1.11.0", 2717 | "source": { 2718 | "type": "git", 2719 | "url": "https://github.com/Seldaek/jsonlint.git", 2720 | "reference": "1748aaf847fc731cfad7725aec413ee46f0cc3a2" 2721 | }, 2722 | "dist": { 2723 | "type": "zip", 2724 | "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/1748aaf847fc731cfad7725aec413ee46f0cc3a2", 2725 | "reference": "1748aaf847fc731cfad7725aec413ee46f0cc3a2", 2726 | "shasum": "" 2727 | }, 2728 | "require": { 2729 | "php": "^5.3 || ^7.0 || ^8.0" 2730 | }, 2731 | "require-dev": { 2732 | "phpstan/phpstan": "^1.11", 2733 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^8.5.13" 2734 | }, 2735 | "bin": [ 2736 | "bin/jsonlint" 2737 | ], 2738 | "type": "library", 2739 | "autoload": { 2740 | "psr-4": { 2741 | "Seld\\JsonLint\\": "src/Seld/JsonLint/" 2742 | } 2743 | }, 2744 | "notification-url": "https://packagist.org/downloads/", 2745 | "license": [ 2746 | "MIT" 2747 | ], 2748 | "authors": [ 2749 | { 2750 | "name": "Jordi Boggiano", 2751 | "email": "j.boggiano@seld.be", 2752 | "homepage": "https://seld.be" 2753 | } 2754 | ], 2755 | "description": "JSON Linter", 2756 | "keywords": [ 2757 | "json", 2758 | "linter", 2759 | "parser", 2760 | "validator" 2761 | ], 2762 | "support": { 2763 | "issues": "https://github.com/Seldaek/jsonlint/issues", 2764 | "source": "https://github.com/Seldaek/jsonlint/tree/1.11.0" 2765 | }, 2766 | "funding": [ 2767 | { 2768 | "url": "https://github.com/Seldaek", 2769 | "type": "github" 2770 | }, 2771 | { 2772 | "url": "https://tidelift.com/funding/github/packagist/seld/jsonlint", 2773 | "type": "tidelift" 2774 | } 2775 | ], 2776 | "time": "2024-07-11T14:55:45+00:00" 2777 | }, 2778 | { 2779 | "name": "seld/phar-utils", 2780 | "version": "1.2.1", 2781 | "source": { 2782 | "type": "git", 2783 | "url": "https://github.com/Seldaek/phar-utils.git", 2784 | "reference": "ea2f4014f163c1be4c601b9b7bd6af81ba8d701c" 2785 | }, 2786 | "dist": { 2787 | "type": "zip", 2788 | "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/ea2f4014f163c1be4c601b9b7bd6af81ba8d701c", 2789 | "reference": "ea2f4014f163c1be4c601b9b7bd6af81ba8d701c", 2790 | "shasum": "" 2791 | }, 2792 | "require": { 2793 | "php": ">=5.3" 2794 | }, 2795 | "type": "library", 2796 | "extra": { 2797 | "branch-alias": { 2798 | "dev-master": "1.x-dev" 2799 | } 2800 | }, 2801 | "autoload": { 2802 | "psr-4": { 2803 | "Seld\\PharUtils\\": "src/" 2804 | } 2805 | }, 2806 | "notification-url": "https://packagist.org/downloads/", 2807 | "license": [ 2808 | "MIT" 2809 | ], 2810 | "authors": [ 2811 | { 2812 | "name": "Jordi Boggiano", 2813 | "email": "j.boggiano@seld.be" 2814 | } 2815 | ], 2816 | "description": "PHAR file format utilities, for when PHP phars you up", 2817 | "keywords": [ 2818 | "phar" 2819 | ], 2820 | "support": { 2821 | "issues": "https://github.com/Seldaek/phar-utils/issues", 2822 | "source": "https://github.com/Seldaek/phar-utils/tree/1.2.1" 2823 | }, 2824 | "time": "2022-08-31T10:31:18+00:00" 2825 | }, 2826 | { 2827 | "name": "seld/signal-handler", 2828 | "version": "2.0.2", 2829 | "source": { 2830 | "type": "git", 2831 | "url": "https://github.com/Seldaek/signal-handler.git", 2832 | "reference": "04a6112e883ad76c0ada8e4a9f7520bbfdb6bb98" 2833 | }, 2834 | "dist": { 2835 | "type": "zip", 2836 | "url": "https://api.github.com/repos/Seldaek/signal-handler/zipball/04a6112e883ad76c0ada8e4a9f7520bbfdb6bb98", 2837 | "reference": "04a6112e883ad76c0ada8e4a9f7520bbfdb6bb98", 2838 | "shasum": "" 2839 | }, 2840 | "require": { 2841 | "php": ">=7.2.0" 2842 | }, 2843 | "require-dev": { 2844 | "phpstan/phpstan": "^1", 2845 | "phpstan/phpstan-deprecation-rules": "^1.0", 2846 | "phpstan/phpstan-phpunit": "^1", 2847 | "phpstan/phpstan-strict-rules": "^1.3", 2848 | "phpunit/phpunit": "^7.5.20 || ^8.5.23", 2849 | "psr/log": "^1 || ^2 || ^3" 2850 | }, 2851 | "type": "library", 2852 | "extra": { 2853 | "branch-alias": { 2854 | "dev-main": "2.x-dev" 2855 | } 2856 | }, 2857 | "autoload": { 2858 | "psr-4": { 2859 | "Seld\\Signal\\": "src/" 2860 | } 2861 | }, 2862 | "notification-url": "https://packagist.org/downloads/", 2863 | "license": [ 2864 | "MIT" 2865 | ], 2866 | "authors": [ 2867 | { 2868 | "name": "Jordi Boggiano", 2869 | "email": "j.boggiano@seld.be", 2870 | "homepage": "http://seld.be" 2871 | } 2872 | ], 2873 | "description": "Simple unix signal handler that silently fails where signals are not supported for easy cross-platform development", 2874 | "keywords": [ 2875 | "posix", 2876 | "sigint", 2877 | "signal", 2878 | "sigterm", 2879 | "unix" 2880 | ], 2881 | "support": { 2882 | "issues": "https://github.com/Seldaek/signal-handler/issues", 2883 | "source": "https://github.com/Seldaek/signal-handler/tree/2.0.2" 2884 | }, 2885 | "time": "2023-09-03T09:24:00+00:00" 2886 | }, 2887 | { 2888 | "name": "symfony/console", 2889 | "version": "v7.1.3", 2890 | "source": { 2891 | "type": "git", 2892 | "url": "https://github.com/symfony/console.git", 2893 | "reference": "cb1dcb30ebc7005c29864ee78adb47b5fb7c3cd9" 2894 | }, 2895 | "dist": { 2896 | "type": "zip", 2897 | "url": "https://api.github.com/repos/symfony/console/zipball/cb1dcb30ebc7005c29864ee78adb47b5fb7c3cd9", 2898 | "reference": "cb1dcb30ebc7005c29864ee78adb47b5fb7c3cd9", 2899 | "shasum": "" 2900 | }, 2901 | "require": { 2902 | "php": ">=8.2", 2903 | "symfony/polyfill-mbstring": "~1.0", 2904 | "symfony/service-contracts": "^2.5|^3", 2905 | "symfony/string": "^6.4|^7.0" 2906 | }, 2907 | "conflict": { 2908 | "symfony/dependency-injection": "<6.4", 2909 | "symfony/dotenv": "<6.4", 2910 | "symfony/event-dispatcher": "<6.4", 2911 | "symfony/lock": "<6.4", 2912 | "symfony/process": "<6.4" 2913 | }, 2914 | "provide": { 2915 | "psr/log-implementation": "1.0|2.0|3.0" 2916 | }, 2917 | "require-dev": { 2918 | "psr/log": "^1|^2|^3", 2919 | "symfony/config": "^6.4|^7.0", 2920 | "symfony/dependency-injection": "^6.4|^7.0", 2921 | "symfony/event-dispatcher": "^6.4|^7.0", 2922 | "symfony/http-foundation": "^6.4|^7.0", 2923 | "symfony/http-kernel": "^6.4|^7.0", 2924 | "symfony/lock": "^6.4|^7.0", 2925 | "symfony/messenger": "^6.4|^7.0", 2926 | "symfony/process": "^6.4|^7.0", 2927 | "symfony/stopwatch": "^6.4|^7.0", 2928 | "symfony/var-dumper": "^6.4|^7.0" 2929 | }, 2930 | "type": "library", 2931 | "autoload": { 2932 | "psr-4": { 2933 | "Symfony\\Component\\Console\\": "" 2934 | }, 2935 | "exclude-from-classmap": [ 2936 | "/Tests/" 2937 | ] 2938 | }, 2939 | "notification-url": "https://packagist.org/downloads/", 2940 | "license": [ 2941 | "MIT" 2942 | ], 2943 | "authors": [ 2944 | { 2945 | "name": "Fabien Potencier", 2946 | "email": "fabien@symfony.com" 2947 | }, 2948 | { 2949 | "name": "Symfony Community", 2950 | "homepage": "https://symfony.com/contributors" 2951 | } 2952 | ], 2953 | "description": "Eases the creation of beautiful and testable command line interfaces", 2954 | "homepage": "https://symfony.com", 2955 | "keywords": [ 2956 | "cli", 2957 | "command-line", 2958 | "console", 2959 | "terminal" 2960 | ], 2961 | "support": { 2962 | "source": "https://github.com/symfony/console/tree/v7.1.3" 2963 | }, 2964 | "funding": [ 2965 | { 2966 | "url": "https://symfony.com/sponsor", 2967 | "type": "custom" 2968 | }, 2969 | { 2970 | "url": "https://github.com/fabpot", 2971 | "type": "github" 2972 | }, 2973 | { 2974 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2975 | "type": "tidelift" 2976 | } 2977 | ], 2978 | "time": "2024-07-26T12:41:01+00:00" 2979 | }, 2980 | { 2981 | "name": "symfony/deprecation-contracts", 2982 | "version": "v3.5.0", 2983 | "source": { 2984 | "type": "git", 2985 | "url": "https://github.com/symfony/deprecation-contracts.git", 2986 | "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1" 2987 | }, 2988 | "dist": { 2989 | "type": "zip", 2990 | "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", 2991 | "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", 2992 | "shasum": "" 2993 | }, 2994 | "require": { 2995 | "php": ">=8.1" 2996 | }, 2997 | "type": "library", 2998 | "extra": { 2999 | "branch-alias": { 3000 | "dev-main": "3.5-dev" 3001 | }, 3002 | "thanks": { 3003 | "name": "symfony/contracts", 3004 | "url": "https://github.com/symfony/contracts" 3005 | } 3006 | }, 3007 | "autoload": { 3008 | "files": [ 3009 | "function.php" 3010 | ] 3011 | }, 3012 | "notification-url": "https://packagist.org/downloads/", 3013 | "license": [ 3014 | "MIT" 3015 | ], 3016 | "authors": [ 3017 | { 3018 | "name": "Nicolas Grekas", 3019 | "email": "p@tchwork.com" 3020 | }, 3021 | { 3022 | "name": "Symfony Community", 3023 | "homepage": "https://symfony.com/contributors" 3024 | } 3025 | ], 3026 | "description": "A generic function and convention to trigger deprecation notices", 3027 | "homepage": "https://symfony.com", 3028 | "support": { 3029 | "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.0" 3030 | }, 3031 | "funding": [ 3032 | { 3033 | "url": "https://symfony.com/sponsor", 3034 | "type": "custom" 3035 | }, 3036 | { 3037 | "url": "https://github.com/fabpot", 3038 | "type": "github" 3039 | }, 3040 | { 3041 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3042 | "type": "tidelift" 3043 | } 3044 | ], 3045 | "time": "2024-04-18T09:32:20+00:00" 3046 | }, 3047 | { 3048 | "name": "symfony/filesystem", 3049 | "version": "v7.1.2", 3050 | "source": { 3051 | "type": "git", 3052 | "url": "https://github.com/symfony/filesystem.git", 3053 | "reference": "92a91985250c251de9b947a14bb2c9390b1a562c" 3054 | }, 3055 | "dist": { 3056 | "type": "zip", 3057 | "url": "https://api.github.com/repos/symfony/filesystem/zipball/92a91985250c251de9b947a14bb2c9390b1a562c", 3058 | "reference": "92a91985250c251de9b947a14bb2c9390b1a562c", 3059 | "shasum": "" 3060 | }, 3061 | "require": { 3062 | "php": ">=8.2", 3063 | "symfony/polyfill-ctype": "~1.8", 3064 | "symfony/polyfill-mbstring": "~1.8" 3065 | }, 3066 | "require-dev": { 3067 | "symfony/process": "^6.4|^7.0" 3068 | }, 3069 | "type": "library", 3070 | "autoload": { 3071 | "psr-4": { 3072 | "Symfony\\Component\\Filesystem\\": "" 3073 | }, 3074 | "exclude-from-classmap": [ 3075 | "/Tests/" 3076 | ] 3077 | }, 3078 | "notification-url": "https://packagist.org/downloads/", 3079 | "license": [ 3080 | "MIT" 3081 | ], 3082 | "authors": [ 3083 | { 3084 | "name": "Fabien Potencier", 3085 | "email": "fabien@symfony.com" 3086 | }, 3087 | { 3088 | "name": "Symfony Community", 3089 | "homepage": "https://symfony.com/contributors" 3090 | } 3091 | ], 3092 | "description": "Provides basic utilities for the filesystem", 3093 | "homepage": "https://symfony.com", 3094 | "support": { 3095 | "source": "https://github.com/symfony/filesystem/tree/v7.1.2" 3096 | }, 3097 | "funding": [ 3098 | { 3099 | "url": "https://symfony.com/sponsor", 3100 | "type": "custom" 3101 | }, 3102 | { 3103 | "url": "https://github.com/fabpot", 3104 | "type": "github" 3105 | }, 3106 | { 3107 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3108 | "type": "tidelift" 3109 | } 3110 | ], 3111 | "time": "2024-06-28T10:03:55+00:00" 3112 | }, 3113 | { 3114 | "name": "symfony/finder", 3115 | "version": "v7.1.3", 3116 | "source": { 3117 | "type": "git", 3118 | "url": "https://github.com/symfony/finder.git", 3119 | "reference": "717c6329886f32dc65e27461f80f2a465412fdca" 3120 | }, 3121 | "dist": { 3122 | "type": "zip", 3123 | "url": "https://api.github.com/repos/symfony/finder/zipball/717c6329886f32dc65e27461f80f2a465412fdca", 3124 | "reference": "717c6329886f32dc65e27461f80f2a465412fdca", 3125 | "shasum": "" 3126 | }, 3127 | "require": { 3128 | "php": ">=8.2" 3129 | }, 3130 | "require-dev": { 3131 | "symfony/filesystem": "^6.4|^7.0" 3132 | }, 3133 | "type": "library", 3134 | "autoload": { 3135 | "psr-4": { 3136 | "Symfony\\Component\\Finder\\": "" 3137 | }, 3138 | "exclude-from-classmap": [ 3139 | "/Tests/" 3140 | ] 3141 | }, 3142 | "notification-url": "https://packagist.org/downloads/", 3143 | "license": [ 3144 | "MIT" 3145 | ], 3146 | "authors": [ 3147 | { 3148 | "name": "Fabien Potencier", 3149 | "email": "fabien@symfony.com" 3150 | }, 3151 | { 3152 | "name": "Symfony Community", 3153 | "homepage": "https://symfony.com/contributors" 3154 | } 3155 | ], 3156 | "description": "Finds files and directories via an intuitive fluent interface", 3157 | "homepage": "https://symfony.com", 3158 | "support": { 3159 | "source": "https://github.com/symfony/finder/tree/v7.1.3" 3160 | }, 3161 | "funding": [ 3162 | { 3163 | "url": "https://symfony.com/sponsor", 3164 | "type": "custom" 3165 | }, 3166 | { 3167 | "url": "https://github.com/fabpot", 3168 | "type": "github" 3169 | }, 3170 | { 3171 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3172 | "type": "tidelift" 3173 | } 3174 | ], 3175 | "time": "2024-07-24T07:08:44+00:00" 3176 | }, 3177 | { 3178 | "name": "symfony/polyfill-ctype", 3179 | "version": "v1.30.0", 3180 | "source": { 3181 | "type": "git", 3182 | "url": "https://github.com/symfony/polyfill-ctype.git", 3183 | "reference": "0424dff1c58f028c451efff2045f5d92410bd540" 3184 | }, 3185 | "dist": { 3186 | "type": "zip", 3187 | "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/0424dff1c58f028c451efff2045f5d92410bd540", 3188 | "reference": "0424dff1c58f028c451efff2045f5d92410bd540", 3189 | "shasum": "" 3190 | }, 3191 | "require": { 3192 | "php": ">=7.1" 3193 | }, 3194 | "provide": { 3195 | "ext-ctype": "*" 3196 | }, 3197 | "suggest": { 3198 | "ext-ctype": "For best performance" 3199 | }, 3200 | "type": "library", 3201 | "extra": { 3202 | "thanks": { 3203 | "name": "symfony/polyfill", 3204 | "url": "https://github.com/symfony/polyfill" 3205 | } 3206 | }, 3207 | "autoload": { 3208 | "files": [ 3209 | "bootstrap.php" 3210 | ], 3211 | "psr-4": { 3212 | "Symfony\\Polyfill\\Ctype\\": "" 3213 | } 3214 | }, 3215 | "notification-url": "https://packagist.org/downloads/", 3216 | "license": [ 3217 | "MIT" 3218 | ], 3219 | "authors": [ 3220 | { 3221 | "name": "Gert de Pagter", 3222 | "email": "BackEndTea@gmail.com" 3223 | }, 3224 | { 3225 | "name": "Symfony Community", 3226 | "homepage": "https://symfony.com/contributors" 3227 | } 3228 | ], 3229 | "description": "Symfony polyfill for ctype functions", 3230 | "homepage": "https://symfony.com", 3231 | "keywords": [ 3232 | "compatibility", 3233 | "ctype", 3234 | "polyfill", 3235 | "portable" 3236 | ], 3237 | "support": { 3238 | "source": "https://github.com/symfony/polyfill-ctype/tree/v1.30.0" 3239 | }, 3240 | "funding": [ 3241 | { 3242 | "url": "https://symfony.com/sponsor", 3243 | "type": "custom" 3244 | }, 3245 | { 3246 | "url": "https://github.com/fabpot", 3247 | "type": "github" 3248 | }, 3249 | { 3250 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3251 | "type": "tidelift" 3252 | } 3253 | ], 3254 | "time": "2024-05-31T15:07:36+00:00" 3255 | }, 3256 | { 3257 | "name": "symfony/polyfill-intl-grapheme", 3258 | "version": "v1.30.0", 3259 | "source": { 3260 | "type": "git", 3261 | "url": "https://github.com/symfony/polyfill-intl-grapheme.git", 3262 | "reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a" 3263 | }, 3264 | "dist": { 3265 | "type": "zip", 3266 | "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/64647a7c30b2283f5d49b874d84a18fc22054b7a", 3267 | "reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a", 3268 | "shasum": "" 3269 | }, 3270 | "require": { 3271 | "php": ">=7.1" 3272 | }, 3273 | "suggest": { 3274 | "ext-intl": "For best performance" 3275 | }, 3276 | "type": "library", 3277 | "extra": { 3278 | "thanks": { 3279 | "name": "symfony/polyfill", 3280 | "url": "https://github.com/symfony/polyfill" 3281 | } 3282 | }, 3283 | "autoload": { 3284 | "files": [ 3285 | "bootstrap.php" 3286 | ], 3287 | "psr-4": { 3288 | "Symfony\\Polyfill\\Intl\\Grapheme\\": "" 3289 | } 3290 | }, 3291 | "notification-url": "https://packagist.org/downloads/", 3292 | "license": [ 3293 | "MIT" 3294 | ], 3295 | "authors": [ 3296 | { 3297 | "name": "Nicolas Grekas", 3298 | "email": "p@tchwork.com" 3299 | }, 3300 | { 3301 | "name": "Symfony Community", 3302 | "homepage": "https://symfony.com/contributors" 3303 | } 3304 | ], 3305 | "description": "Symfony polyfill for intl's grapheme_* functions", 3306 | "homepage": "https://symfony.com", 3307 | "keywords": [ 3308 | "compatibility", 3309 | "grapheme", 3310 | "intl", 3311 | "polyfill", 3312 | "portable", 3313 | "shim" 3314 | ], 3315 | "support": { 3316 | "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.30.0" 3317 | }, 3318 | "funding": [ 3319 | { 3320 | "url": "https://symfony.com/sponsor", 3321 | "type": "custom" 3322 | }, 3323 | { 3324 | "url": "https://github.com/fabpot", 3325 | "type": "github" 3326 | }, 3327 | { 3328 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3329 | "type": "tidelift" 3330 | } 3331 | ], 3332 | "time": "2024-05-31T15:07:36+00:00" 3333 | }, 3334 | { 3335 | "name": "symfony/polyfill-intl-normalizer", 3336 | "version": "v1.30.0", 3337 | "source": { 3338 | "type": "git", 3339 | "url": "https://github.com/symfony/polyfill-intl-normalizer.git", 3340 | "reference": "a95281b0be0d9ab48050ebd988b967875cdb9fdb" 3341 | }, 3342 | "dist": { 3343 | "type": "zip", 3344 | "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/a95281b0be0d9ab48050ebd988b967875cdb9fdb", 3345 | "reference": "a95281b0be0d9ab48050ebd988b967875cdb9fdb", 3346 | "shasum": "" 3347 | }, 3348 | "require": { 3349 | "php": ">=7.1" 3350 | }, 3351 | "suggest": { 3352 | "ext-intl": "For best performance" 3353 | }, 3354 | "type": "library", 3355 | "extra": { 3356 | "thanks": { 3357 | "name": "symfony/polyfill", 3358 | "url": "https://github.com/symfony/polyfill" 3359 | } 3360 | }, 3361 | "autoload": { 3362 | "files": [ 3363 | "bootstrap.php" 3364 | ], 3365 | "psr-4": { 3366 | "Symfony\\Polyfill\\Intl\\Normalizer\\": "" 3367 | }, 3368 | "classmap": [ 3369 | "Resources/stubs" 3370 | ] 3371 | }, 3372 | "notification-url": "https://packagist.org/downloads/", 3373 | "license": [ 3374 | "MIT" 3375 | ], 3376 | "authors": [ 3377 | { 3378 | "name": "Nicolas Grekas", 3379 | "email": "p@tchwork.com" 3380 | }, 3381 | { 3382 | "name": "Symfony Community", 3383 | "homepage": "https://symfony.com/contributors" 3384 | } 3385 | ], 3386 | "description": "Symfony polyfill for intl's Normalizer class and related functions", 3387 | "homepage": "https://symfony.com", 3388 | "keywords": [ 3389 | "compatibility", 3390 | "intl", 3391 | "normalizer", 3392 | "polyfill", 3393 | "portable", 3394 | "shim" 3395 | ], 3396 | "support": { 3397 | "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.30.0" 3398 | }, 3399 | "funding": [ 3400 | { 3401 | "url": "https://symfony.com/sponsor", 3402 | "type": "custom" 3403 | }, 3404 | { 3405 | "url": "https://github.com/fabpot", 3406 | "type": "github" 3407 | }, 3408 | { 3409 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3410 | "type": "tidelift" 3411 | } 3412 | ], 3413 | "time": "2024-05-31T15:07:36+00:00" 3414 | }, 3415 | { 3416 | "name": "symfony/polyfill-mbstring", 3417 | "version": "v1.30.0", 3418 | "source": { 3419 | "type": "git", 3420 | "url": "https://github.com/symfony/polyfill-mbstring.git", 3421 | "reference": "fd22ab50000ef01661e2a31d850ebaa297f8e03c" 3422 | }, 3423 | "dist": { 3424 | "type": "zip", 3425 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fd22ab50000ef01661e2a31d850ebaa297f8e03c", 3426 | "reference": "fd22ab50000ef01661e2a31d850ebaa297f8e03c", 3427 | "shasum": "" 3428 | }, 3429 | "require": { 3430 | "php": ">=7.1" 3431 | }, 3432 | "provide": { 3433 | "ext-mbstring": "*" 3434 | }, 3435 | "suggest": { 3436 | "ext-mbstring": "For best performance" 3437 | }, 3438 | "type": "library", 3439 | "extra": { 3440 | "thanks": { 3441 | "name": "symfony/polyfill", 3442 | "url": "https://github.com/symfony/polyfill" 3443 | } 3444 | }, 3445 | "autoload": { 3446 | "files": [ 3447 | "bootstrap.php" 3448 | ], 3449 | "psr-4": { 3450 | "Symfony\\Polyfill\\Mbstring\\": "" 3451 | } 3452 | }, 3453 | "notification-url": "https://packagist.org/downloads/", 3454 | "license": [ 3455 | "MIT" 3456 | ], 3457 | "authors": [ 3458 | { 3459 | "name": "Nicolas Grekas", 3460 | "email": "p@tchwork.com" 3461 | }, 3462 | { 3463 | "name": "Symfony Community", 3464 | "homepage": "https://symfony.com/contributors" 3465 | } 3466 | ], 3467 | "description": "Symfony polyfill for the Mbstring extension", 3468 | "homepage": "https://symfony.com", 3469 | "keywords": [ 3470 | "compatibility", 3471 | "mbstring", 3472 | "polyfill", 3473 | "portable", 3474 | "shim" 3475 | ], 3476 | "support": { 3477 | "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.30.0" 3478 | }, 3479 | "funding": [ 3480 | { 3481 | "url": "https://symfony.com/sponsor", 3482 | "type": "custom" 3483 | }, 3484 | { 3485 | "url": "https://github.com/fabpot", 3486 | "type": "github" 3487 | }, 3488 | { 3489 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3490 | "type": "tidelift" 3491 | } 3492 | ], 3493 | "time": "2024-06-19T12:30:46+00:00" 3494 | }, 3495 | { 3496 | "name": "symfony/polyfill-php73", 3497 | "version": "v1.30.0", 3498 | "source": { 3499 | "type": "git", 3500 | "url": "https://github.com/symfony/polyfill-php73.git", 3501 | "reference": "ec444d3f3f6505bb28d11afa41e75faadebc10a1" 3502 | }, 3503 | "dist": { 3504 | "type": "zip", 3505 | "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/ec444d3f3f6505bb28d11afa41e75faadebc10a1", 3506 | "reference": "ec444d3f3f6505bb28d11afa41e75faadebc10a1", 3507 | "shasum": "" 3508 | }, 3509 | "require": { 3510 | "php": ">=7.1" 3511 | }, 3512 | "type": "library", 3513 | "extra": { 3514 | "thanks": { 3515 | "name": "symfony/polyfill", 3516 | "url": "https://github.com/symfony/polyfill" 3517 | } 3518 | }, 3519 | "autoload": { 3520 | "files": [ 3521 | "bootstrap.php" 3522 | ], 3523 | "psr-4": { 3524 | "Symfony\\Polyfill\\Php73\\": "" 3525 | }, 3526 | "classmap": [ 3527 | "Resources/stubs" 3528 | ] 3529 | }, 3530 | "notification-url": "https://packagist.org/downloads/", 3531 | "license": [ 3532 | "MIT" 3533 | ], 3534 | "authors": [ 3535 | { 3536 | "name": "Nicolas Grekas", 3537 | "email": "p@tchwork.com" 3538 | }, 3539 | { 3540 | "name": "Symfony Community", 3541 | "homepage": "https://symfony.com/contributors" 3542 | } 3543 | ], 3544 | "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", 3545 | "homepage": "https://symfony.com", 3546 | "keywords": [ 3547 | "compatibility", 3548 | "polyfill", 3549 | "portable", 3550 | "shim" 3551 | ], 3552 | "support": { 3553 | "source": "https://github.com/symfony/polyfill-php73/tree/v1.30.0" 3554 | }, 3555 | "funding": [ 3556 | { 3557 | "url": "https://symfony.com/sponsor", 3558 | "type": "custom" 3559 | }, 3560 | { 3561 | "url": "https://github.com/fabpot", 3562 | "type": "github" 3563 | }, 3564 | { 3565 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3566 | "type": "tidelift" 3567 | } 3568 | ], 3569 | "time": "2024-05-31T15:07:36+00:00" 3570 | }, 3571 | { 3572 | "name": "symfony/polyfill-php80", 3573 | "version": "v1.30.0", 3574 | "source": { 3575 | "type": "git", 3576 | "url": "https://github.com/symfony/polyfill-php80.git", 3577 | "reference": "77fa7995ac1b21ab60769b7323d600a991a90433" 3578 | }, 3579 | "dist": { 3580 | "type": "zip", 3581 | "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/77fa7995ac1b21ab60769b7323d600a991a90433", 3582 | "reference": "77fa7995ac1b21ab60769b7323d600a991a90433", 3583 | "shasum": "" 3584 | }, 3585 | "require": { 3586 | "php": ">=7.1" 3587 | }, 3588 | "type": "library", 3589 | "extra": { 3590 | "thanks": { 3591 | "name": "symfony/polyfill", 3592 | "url": "https://github.com/symfony/polyfill" 3593 | } 3594 | }, 3595 | "autoload": { 3596 | "files": [ 3597 | "bootstrap.php" 3598 | ], 3599 | "psr-4": { 3600 | "Symfony\\Polyfill\\Php80\\": "" 3601 | }, 3602 | "classmap": [ 3603 | "Resources/stubs" 3604 | ] 3605 | }, 3606 | "notification-url": "https://packagist.org/downloads/", 3607 | "license": [ 3608 | "MIT" 3609 | ], 3610 | "authors": [ 3611 | { 3612 | "name": "Ion Bazan", 3613 | "email": "ion.bazan@gmail.com" 3614 | }, 3615 | { 3616 | "name": "Nicolas Grekas", 3617 | "email": "p@tchwork.com" 3618 | }, 3619 | { 3620 | "name": "Symfony Community", 3621 | "homepage": "https://symfony.com/contributors" 3622 | } 3623 | ], 3624 | "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", 3625 | "homepage": "https://symfony.com", 3626 | "keywords": [ 3627 | "compatibility", 3628 | "polyfill", 3629 | "portable", 3630 | "shim" 3631 | ], 3632 | "support": { 3633 | "source": "https://github.com/symfony/polyfill-php80/tree/v1.30.0" 3634 | }, 3635 | "funding": [ 3636 | { 3637 | "url": "https://symfony.com/sponsor", 3638 | "type": "custom" 3639 | }, 3640 | { 3641 | "url": "https://github.com/fabpot", 3642 | "type": "github" 3643 | }, 3644 | { 3645 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3646 | "type": "tidelift" 3647 | } 3648 | ], 3649 | "time": "2024-05-31T15:07:36+00:00" 3650 | }, 3651 | { 3652 | "name": "symfony/polyfill-php81", 3653 | "version": "v1.30.0", 3654 | "source": { 3655 | "type": "git", 3656 | "url": "https://github.com/symfony/polyfill-php81.git", 3657 | "reference": "3fb075789fb91f9ad9af537c4012d523085bd5af" 3658 | }, 3659 | "dist": { 3660 | "type": "zip", 3661 | "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/3fb075789fb91f9ad9af537c4012d523085bd5af", 3662 | "reference": "3fb075789fb91f9ad9af537c4012d523085bd5af", 3663 | "shasum": "" 3664 | }, 3665 | "require": { 3666 | "php": ">=7.1" 3667 | }, 3668 | "type": "library", 3669 | "extra": { 3670 | "thanks": { 3671 | "name": "symfony/polyfill", 3672 | "url": "https://github.com/symfony/polyfill" 3673 | } 3674 | }, 3675 | "autoload": { 3676 | "files": [ 3677 | "bootstrap.php" 3678 | ], 3679 | "psr-4": { 3680 | "Symfony\\Polyfill\\Php81\\": "" 3681 | }, 3682 | "classmap": [ 3683 | "Resources/stubs" 3684 | ] 3685 | }, 3686 | "notification-url": "https://packagist.org/downloads/", 3687 | "license": [ 3688 | "MIT" 3689 | ], 3690 | "authors": [ 3691 | { 3692 | "name": "Nicolas Grekas", 3693 | "email": "p@tchwork.com" 3694 | }, 3695 | { 3696 | "name": "Symfony Community", 3697 | "homepage": "https://symfony.com/contributors" 3698 | } 3699 | ], 3700 | "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", 3701 | "homepage": "https://symfony.com", 3702 | "keywords": [ 3703 | "compatibility", 3704 | "polyfill", 3705 | "portable", 3706 | "shim" 3707 | ], 3708 | "support": { 3709 | "source": "https://github.com/symfony/polyfill-php81/tree/v1.30.0" 3710 | }, 3711 | "funding": [ 3712 | { 3713 | "url": "https://symfony.com/sponsor", 3714 | "type": "custom" 3715 | }, 3716 | { 3717 | "url": "https://github.com/fabpot", 3718 | "type": "github" 3719 | }, 3720 | { 3721 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3722 | "type": "tidelift" 3723 | } 3724 | ], 3725 | "time": "2024-06-19T12:30:46+00:00" 3726 | }, 3727 | { 3728 | "name": "symfony/process", 3729 | "version": "v7.1.3", 3730 | "source": { 3731 | "type": "git", 3732 | "url": "https://github.com/symfony/process.git", 3733 | "reference": "7f2f542c668ad6c313dc4a5e9c3321f733197eca" 3734 | }, 3735 | "dist": { 3736 | "type": "zip", 3737 | "url": "https://api.github.com/repos/symfony/process/zipball/7f2f542c668ad6c313dc4a5e9c3321f733197eca", 3738 | "reference": "7f2f542c668ad6c313dc4a5e9c3321f733197eca", 3739 | "shasum": "" 3740 | }, 3741 | "require": { 3742 | "php": ">=8.2" 3743 | }, 3744 | "type": "library", 3745 | "autoload": { 3746 | "psr-4": { 3747 | "Symfony\\Component\\Process\\": "" 3748 | }, 3749 | "exclude-from-classmap": [ 3750 | "/Tests/" 3751 | ] 3752 | }, 3753 | "notification-url": "https://packagist.org/downloads/", 3754 | "license": [ 3755 | "MIT" 3756 | ], 3757 | "authors": [ 3758 | { 3759 | "name": "Fabien Potencier", 3760 | "email": "fabien@symfony.com" 3761 | }, 3762 | { 3763 | "name": "Symfony Community", 3764 | "homepage": "https://symfony.com/contributors" 3765 | } 3766 | ], 3767 | "description": "Executes commands in sub-processes", 3768 | "homepage": "https://symfony.com", 3769 | "support": { 3770 | "source": "https://github.com/symfony/process/tree/v7.1.3" 3771 | }, 3772 | "funding": [ 3773 | { 3774 | "url": "https://symfony.com/sponsor", 3775 | "type": "custom" 3776 | }, 3777 | { 3778 | "url": "https://github.com/fabpot", 3779 | "type": "github" 3780 | }, 3781 | { 3782 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3783 | "type": "tidelift" 3784 | } 3785 | ], 3786 | "time": "2024-07-26T12:44:47+00:00" 3787 | }, 3788 | { 3789 | "name": "symfony/service-contracts", 3790 | "version": "v3.5.0", 3791 | "source": { 3792 | "type": "git", 3793 | "url": "https://github.com/symfony/service-contracts.git", 3794 | "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f" 3795 | }, 3796 | "dist": { 3797 | "type": "zip", 3798 | "url": "https://api.github.com/repos/symfony/service-contracts/zipball/bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", 3799 | "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", 3800 | "shasum": "" 3801 | }, 3802 | "require": { 3803 | "php": ">=8.1", 3804 | "psr/container": "^1.1|^2.0", 3805 | "symfony/deprecation-contracts": "^2.5|^3" 3806 | }, 3807 | "conflict": { 3808 | "ext-psr": "<1.1|>=2" 3809 | }, 3810 | "type": "library", 3811 | "extra": { 3812 | "branch-alias": { 3813 | "dev-main": "3.5-dev" 3814 | }, 3815 | "thanks": { 3816 | "name": "symfony/contracts", 3817 | "url": "https://github.com/symfony/contracts" 3818 | } 3819 | }, 3820 | "autoload": { 3821 | "psr-4": { 3822 | "Symfony\\Contracts\\Service\\": "" 3823 | }, 3824 | "exclude-from-classmap": [ 3825 | "/Test/" 3826 | ] 3827 | }, 3828 | "notification-url": "https://packagist.org/downloads/", 3829 | "license": [ 3830 | "MIT" 3831 | ], 3832 | "authors": [ 3833 | { 3834 | "name": "Nicolas Grekas", 3835 | "email": "p@tchwork.com" 3836 | }, 3837 | { 3838 | "name": "Symfony Community", 3839 | "homepage": "https://symfony.com/contributors" 3840 | } 3841 | ], 3842 | "description": "Generic abstractions related to writing services", 3843 | "homepage": "https://symfony.com", 3844 | "keywords": [ 3845 | "abstractions", 3846 | "contracts", 3847 | "decoupling", 3848 | "interfaces", 3849 | "interoperability", 3850 | "standards" 3851 | ], 3852 | "support": { 3853 | "source": "https://github.com/symfony/service-contracts/tree/v3.5.0" 3854 | }, 3855 | "funding": [ 3856 | { 3857 | "url": "https://symfony.com/sponsor", 3858 | "type": "custom" 3859 | }, 3860 | { 3861 | "url": "https://github.com/fabpot", 3862 | "type": "github" 3863 | }, 3864 | { 3865 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3866 | "type": "tidelift" 3867 | } 3868 | ], 3869 | "time": "2024-04-18T09:32:20+00:00" 3870 | }, 3871 | { 3872 | "name": "symfony/string", 3873 | "version": "v7.1.3", 3874 | "source": { 3875 | "type": "git", 3876 | "url": "https://github.com/symfony/string.git", 3877 | "reference": "ea272a882be7f20cad58d5d78c215001617b7f07" 3878 | }, 3879 | "dist": { 3880 | "type": "zip", 3881 | "url": "https://api.github.com/repos/symfony/string/zipball/ea272a882be7f20cad58d5d78c215001617b7f07", 3882 | "reference": "ea272a882be7f20cad58d5d78c215001617b7f07", 3883 | "shasum": "" 3884 | }, 3885 | "require": { 3886 | "php": ">=8.2", 3887 | "symfony/polyfill-ctype": "~1.8", 3888 | "symfony/polyfill-intl-grapheme": "~1.0", 3889 | "symfony/polyfill-intl-normalizer": "~1.0", 3890 | "symfony/polyfill-mbstring": "~1.0" 3891 | }, 3892 | "conflict": { 3893 | "symfony/translation-contracts": "<2.5" 3894 | }, 3895 | "require-dev": { 3896 | "symfony/emoji": "^7.1", 3897 | "symfony/error-handler": "^6.4|^7.0", 3898 | "symfony/http-client": "^6.4|^7.0", 3899 | "symfony/intl": "^6.4|^7.0", 3900 | "symfony/translation-contracts": "^2.5|^3.0", 3901 | "symfony/var-exporter": "^6.4|^7.0" 3902 | }, 3903 | "type": "library", 3904 | "autoload": { 3905 | "files": [ 3906 | "Resources/functions.php" 3907 | ], 3908 | "psr-4": { 3909 | "Symfony\\Component\\String\\": "" 3910 | }, 3911 | "exclude-from-classmap": [ 3912 | "/Tests/" 3913 | ] 3914 | }, 3915 | "notification-url": "https://packagist.org/downloads/", 3916 | "license": [ 3917 | "MIT" 3918 | ], 3919 | "authors": [ 3920 | { 3921 | "name": "Nicolas Grekas", 3922 | "email": "p@tchwork.com" 3923 | }, 3924 | { 3925 | "name": "Symfony Community", 3926 | "homepage": "https://symfony.com/contributors" 3927 | } 3928 | ], 3929 | "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", 3930 | "homepage": "https://symfony.com", 3931 | "keywords": [ 3932 | "grapheme", 3933 | "i18n", 3934 | "string", 3935 | "unicode", 3936 | "utf-8", 3937 | "utf8" 3938 | ], 3939 | "support": { 3940 | "source": "https://github.com/symfony/string/tree/v7.1.3" 3941 | }, 3942 | "funding": [ 3943 | { 3944 | "url": "https://symfony.com/sponsor", 3945 | "type": "custom" 3946 | }, 3947 | { 3948 | "url": "https://github.com/fabpot", 3949 | "type": "github" 3950 | }, 3951 | { 3952 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3953 | "type": "tidelift" 3954 | } 3955 | ], 3956 | "time": "2024-07-22T10:25:37+00:00" 3957 | }, 3958 | { 3959 | "name": "theseer/tokenizer", 3960 | "version": "1.2.3", 3961 | "source": { 3962 | "type": "git", 3963 | "url": "https://github.com/theseer/tokenizer.git", 3964 | "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2" 3965 | }, 3966 | "dist": { 3967 | "type": "zip", 3968 | "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", 3969 | "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", 3970 | "shasum": "" 3971 | }, 3972 | "require": { 3973 | "ext-dom": "*", 3974 | "ext-tokenizer": "*", 3975 | "ext-xmlwriter": "*", 3976 | "php": "^7.2 || ^8.0" 3977 | }, 3978 | "type": "library", 3979 | "autoload": { 3980 | "classmap": [ 3981 | "src/" 3982 | ] 3983 | }, 3984 | "notification-url": "https://packagist.org/downloads/", 3985 | "license": [ 3986 | "BSD-3-Clause" 3987 | ], 3988 | "authors": [ 3989 | { 3990 | "name": "Arne Blankerts", 3991 | "email": "arne@blankerts.de", 3992 | "role": "Developer" 3993 | } 3994 | ], 3995 | "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", 3996 | "support": { 3997 | "issues": "https://github.com/theseer/tokenizer/issues", 3998 | "source": "https://github.com/theseer/tokenizer/tree/1.2.3" 3999 | }, 4000 | "funding": [ 4001 | { 4002 | "url": "https://github.com/theseer", 4003 | "type": "github" 4004 | } 4005 | ], 4006 | "time": "2024-03-03T12:36:25+00:00" 4007 | } 4008 | ], 4009 | "aliases": [], 4010 | "minimum-stability": "stable", 4011 | "stability-flags": [], 4012 | "prefer-stable": false, 4013 | "prefer-lowest": false, 4014 | "platform": { 4015 | "composer-plugin-api": "^1.1|^2.0", 4016 | "php": "^7.3|^8.0" 4017 | }, 4018 | "platform-dev": [], 4019 | "plugin-api-version": "2.6.0" 4020 | } 4021 | -------------------------------------------------------------------------------- /phpcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | The PSR-2 coding standard. 4 | 5 | 6 | 7 | 8 | 9 | vendor 10 | resources 11 | database/ 12 | storage/ 13 | node_modules/ 14 | -------------------------------------------------------------------------------- /phpunit.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | tests 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/ThemeInstaller.php: -------------------------------------------------------------------------------- 1 | getBaseInstallationPath() . DIRECTORY_SEPARATOR . $this->getThemeName($package); 24 | } 25 | 26 | /** 27 | * Get the base path that the module should be installed into. 28 | * Defaults to Modules/ and can be overridden in the module's composer.json. 29 | * @return string 30 | */ 31 | protected function getBaseInstallationPath() 32 | { 33 | if ($this->composer && $this->composer->getPackage()) { 34 | $extra = $this->composer->getPackage()->getExtra(); 35 | 36 | if (array_key_exists('theme-dir', $extra)) { 37 | return $extra['theme-dir']; 38 | } 39 | } 40 | 41 | return 'themes'; 42 | } 43 | 44 | /** 45 | * Get the theme name 46 | * "something" => "something" 47 | * "vendor-name/something" => "something" 48 | * "vendor-name/something-theme" => "something" 49 | * @param PackageInterface $package 50 | * @return string 51 | * @throws \Exception 52 | */ 53 | protected function getThemeName(PackageInterface $package) 54 | { 55 | return str_replace('-theme', '', str_replace('theme-', '', $package->getPrettyName())); 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /src/ThemeInstallerPlugin.php: -------------------------------------------------------------------------------- 1 | getInstallationManager()->addInstaller($installer); 19 | } 20 | 21 | /** 22 | * {@inheritdoc} 23 | */ 24 | public function deactivate(Composer $composer, IOInterface $io) 25 | { 26 | // 27 | } 28 | 29 | /** 30 | * {@inheritdoc} 31 | */ 32 | public function uninstall(Composer $composer, IOInterface $io) 33 | { 34 | // 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /tests/ThemeInstallerTest.php: -------------------------------------------------------------------------------- 1 | io = Mockery::mock(IOInterface::class); 20 | $this->composer = Mockery::mock(Composer::class); 21 | $this->composer->allows([ 22 | 'getPackage' => $this->composer, 23 | 'getDownloadManager' => $this->composer, 24 | 'getConfig' => $this->composer, 25 | 'get' => $this->composer, 26 | ])->shouldReceive('getExtra')->byDefault(); 27 | 28 | $this->test = new ThemeInstaller( 29 | $this->io, $this->composer 30 | ); 31 | } 32 | 33 | /** 34 | * @test 35 | * 36 | * Your package composer.json file must include: 37 | * 38 | * "type": "laravel-theme", 39 | */ 40 | public function it_supports_laravel_theme_type_only() 41 | { 42 | $this->assertFalse($this->test->supports('theme')); 43 | $this->assertTrue($this->test->supports('laravel-theme')); 44 | } 45 | 46 | /** 47 | * @test 48 | */ 49 | public function it_supports_vendor_not_included() 50 | { 51 | $mock = $this->getMockPackage('name'); 52 | 53 | $this->assertEquals('themes/name', $this->test->getInstallPath($mock)); 54 | } 55 | 56 | /** 57 | * @test 58 | */ 59 | public function it_returns_themes_folder_by_default() 60 | { 61 | $mock = $this->getMockPackage('vendor/name-theme'); 62 | $this->assertEquals('themes/vendor/name', $this->test->getInstallPath($mock)); 63 | } 64 | 65 | /** 66 | * @test 67 | */ 68 | public function it_can_use_compound_theme_names() 69 | { 70 | $mock = $this->getMockPackage('vendor/compound-name-theme'); 71 | 72 | $this->assertEquals('themes/vendor/compound-name', $this->test->getInstallPath($mock)); 73 | } 74 | 75 | /** 76 | * @test 77 | * 78 | * You can optionally include a base path name 79 | * in which to install. 80 | * 81 | * "extra": { 82 | * "theme-dir": "Custom" 83 | * }, 84 | */ 85 | public function it_can_use_custom_path() 86 | { 87 | $package = $this->getMockPackage('vendor/name-theme'); 88 | 89 | $this->composer->shouldReceive('getExtra') 90 | ->andReturn(['theme-dir' => 'custom']) 91 | ->getMock(); 92 | 93 | $this->assertEquals('custom/vendor/name', $this->test->getInstallPath($package)); 94 | } 95 | 96 | 97 | private function getMockPackage($return) 98 | { 99 | return Mockery::mock(PackageInterface::class) 100 | ->shouldReceive('getPrettyName') 101 | ->once() 102 | ->andReturn($return) 103 | ->getMock(); 104 | } 105 | 106 | } 107 | --------------------------------------------------------------------------------