├── .github └── workflows │ └── php.yml ├── .gitignore ├── CONTRIBUTING.md ├── LICENSE.md ├── README.md ├── RELEASE.md ├── build └── .gitkeep ├── composer.json ├── composer.lock ├── phpcs.xml.dist ├── phpunit.xml.dist ├── src ├── Stringifier.php └── YamlExpander.php └── tests ├── resources └── valid.yml └── src └── YamlExpanderTest.php /.github/workflows/php.yml: -------------------------------------------------------------------------------- 1 | name: CI 2 | 3 | on: 4 | push: 5 | branches: [ main ] 6 | pull_request: 7 | branches: [ main ] 8 | 9 | permissions: 10 | contents: read 11 | 12 | jobs: 13 | 14 | build: 15 | runs-on: ${{ matrix.os }} 16 | strategy: 17 | matrix: 18 | include: 19 | - os: "ubuntu-latest" 20 | php: "8.0" 21 | env: 'HIGHEST_LOWEST="update --prefer-lowest"' 22 | coverage: "none" 23 | - os: "ubuntu-latest" 24 | php: "8.1" 25 | env: 'HIGHEST_LOWEST="update"' 26 | coverage: "pcov" 27 | 28 | steps: 29 | - uses: actions/checkout@v3 30 | 31 | - uses: shivammathur/setup-php@v2 32 | with: 33 | php-version: ${{ matrix.php }} 34 | # Only report coverage once 35 | coverage: ${{ matrix.coverage }} 36 | 37 | - name: Validate composer.json and composer.lock 38 | run: composer validate --strict 39 | 40 | - name: Cache Composer packages 41 | id: composer-cache 42 | uses: actions/cache@v3 43 | with: 44 | path: vendor 45 | key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }} 46 | restore-keys: | 47 | ${{ runner.os }}-php- 48 | 49 | - name: Install dependencies 50 | run: composer -n ${HIGHEST_LOWEST-install} --prefer-dist -o 51 | 52 | # Add a test script to composer.json, for instance: "test": "vendor/bin/phpunit" 53 | # Docs: https://getcomposer.org/doc/articles/scripts.md 54 | 55 | - name: Run test suite 56 | if: matrix.coverage == 'none' 57 | run: composer run-script test 58 | 59 | - name: Run coverage 60 | if: matrix.coverage == 'pcov' 61 | run: composer run-script coverage 62 | 63 | - name: Upload coverage results to Coveralls 64 | if: matrix.coverage == 'pcov' 65 | env: 66 | COVERALLS_REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }} 67 | run: composer run-script coveralls 68 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Cache and logs (Symfony2) 2 | /app/cache/* 3 | /app/logs/* 4 | !app/cache/.gitkeep 5 | !app/logs/.gitkeep 6 | 7 | # Email spool folder 8 | /app/spool/* 9 | 10 | # Cache, session files and logs (Symfony3) 11 | /var/cache/* 12 | /var/logs/* 13 | /var/sessions/* 14 | !var/cache/.gitkeep 15 | !var/logs/.gitkeep 16 | !var/sessions/.gitkeep 17 | 18 | # Parameters 19 | /app/config/parameters.yml 20 | /app/config/parameters.ini 21 | 22 | # Managed by Composer 23 | /app/bootstrap.php.cache 24 | /var/bootstrap.php.cache 25 | /bin/* 26 | !bin/console 27 | !bin/symfony_requirements 28 | /vendor/ 29 | 30 | # Assets and user uploads 31 | /web/bundles/ 32 | /web/uploads/ 33 | 34 | # Assets managed by Bower 35 | /web/assets/vendor/ 36 | 37 | # PHPUnit 38 | /app/phpunit.xml 39 | /phpunit.xml 40 | 41 | # Build data 42 | /build/ 43 | 44 | # Composer PHAR 45 | /composer.phar 46 | 47 | # Backup entities generated with doctrine:generate:entities command 48 | */Entity/*~ 49 | 50 | .idea 51 | .phpunit.result.cache -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grasmash/yaml-expander/6b35ac5ba622c877a4868c6618233655129f0ec5/CONTRIBUTING.md -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Matthew Grasmick 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 | [![CI](https://github.com/grasmash/yaml-expander/actions/workflows/php.yml/badge.svg)](https://github.com/grasmash/yaml-expander/actions/workflows/php.yml) [![Packagist](https://img.shields.io/packagist/v/grasmash/yaml-expander.svg)](https://packagist.org/packages/grasmash/yaml-expander) 2 | [![Total Downloads](https://poser.pugx.org/grasmash/yaml-expander/downloads)](https://packagist.org/packages/grasmash/yaml-expander) [![Coverage Status](https://coveralls.io/repos/github/grasmash/yaml-expander/badge.svg?branch=master)](https://coveralls.io/github/grasmash/yaml-expander?branch=master) 3 | 4 | This tool expands property references in YAML files. 5 | 6 | ### Installation 7 | 8 | composer require grasmash/yaml-expander 9 | 10 | ### Example usage: 11 | 12 | Example dune.yml: 13 | 14 | ```yaml 15 | type: book 16 | book: 17 | title: Dune 18 | author: Frank Herbert 19 | copyright: ${book.author} 1965 20 | protaganist: ${characters.0.name} 21 | media: 22 | - hardcover 23 | characters: 24 | - name: Paul Atreides 25 | occupation: Kwisatz Haderach 26 | aliases: 27 | - Usul 28 | - Muad'Dib 29 | - The Preacher 30 | - name: Duncan Idaho 31 | occupation: Swordmaster 32 | summary: ${book.title} by ${book.author} 33 | product-name: ${${type}.title} 34 | timezone: ${env.TZ} 35 | ``` 36 | 37 | Property references use dot notation to indicate array keys, and must be wrapped in `${}`. 38 | 39 | Expansion logic: 40 | 41 | ```php 42 | ['publication-year' => 1965]]; 60 | $expanded = \Grasmash\YamlExpander\YamlExpander::expandArrayProperties($array, $reference_properties); 61 | print_r($expanded); 62 | ```` 63 | 64 | Resultant array: 65 | 66 | ```php 67 | 'book', 71 | 'book' => 72 | array ( 73 | 'title' => 'Dune', 74 | 'author' => 'Frank Herbert', 75 | 'copyright' => 'Frank Herbert 1965', 76 | 'protaganist' => 'Paul Atreides', 77 | 'media' => 78 | array ( 79 | 0 => 'hardcover', 80 | ), 81 | ), 82 | 'characters' => 83 | array ( 84 | 0 => 85 | array ( 86 | 'name' => 'Paul Atreides', 87 | 'occupation' => 'Kwisatz Haderach', 88 | 'aliases' => 89 | array ( 90 | 0 => 'Usul', 91 | 1 => 'Muad\'Dib', 92 | 2 => 'The Preacher', 93 | ), 94 | ), 95 | 1 => 96 | array ( 97 | 'name' => 'Duncan Idaho', 98 | 'occupation' => 'Swordmaster', 99 | ), 100 | ), 101 | 'summary' => 'Dune by Frank Herbert', 102 | 'product-name' => 'Dune', 103 | 'timezone' => 'ES', 104 | ); 105 | ``` 106 | -------------------------------------------------------------------------------- /RELEASE.md: -------------------------------------------------------------------------------- 1 | # Releasing 2 | 3 | ### Execute tests 4 | 5 | ./scripts/run-tests.sh 6 | 7 | To quickly fix PHPCS issues: 8 | 9 | ./scripts/clean-code.sh 10 | 11 | 12 | -------------------------------------------------------------------------------- /build/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grasmash/yaml-expander/6b35ac5ba622c877a4868c6618233655129f0ec5/build/.gitkeep -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "grasmash/yaml-expander", 3 | "description": "Expands internal property references in a yaml file.", 4 | "type": "library", 5 | "license": "MIT", 6 | "authors": [ 7 | { 8 | "name": "Matthew Grasmick" 9 | } 10 | ], 11 | "minimum-stability": "stable", 12 | "require": { 13 | "grasmash/expander": "^1 || ^2 || ^3", 14 | "symfony/yaml": "^4 || ^5 || ^6 || ^7" 15 | }, 16 | "require-dev": { 17 | "phpunit/phpunit": "^8.0 || ^9", 18 | "php-coveralls/php-coveralls": "^2.1", 19 | "squizlabs/php_codesniffer": "^2.7 || ^3.3" 20 | }, 21 | "autoload": { 22 | "psr-4": { 23 | "Grasmash\\YamlExpander\\": "src/" 24 | } 25 | }, 26 | "autoload-dev": { 27 | "psr-4": { 28 | "Grasmash\\YamlExpander\\Tests\\": "tests/src/" 29 | } 30 | }, 31 | "scripts": { 32 | "cs": "phpcs", 33 | "cbf": "phpcbf", 34 | "unit": "phpunit", 35 | "lint": [ 36 | "find src -name '*.php' -print0 | xargs -0 -n1 php -l", 37 | "find tests -name '*.php' -print0 | xargs -0 -n1 php -l" 38 | ], 39 | "test": [ 40 | "@lint", 41 | "@unit", 42 | "@cs" 43 | ], 44 | "coverage": "php -d pcov.enabled=1 vendor/bin/phpunit tests/src --coverage-clover build/logs/clover.xml", 45 | "coveralls": [ 46 | "php-coveralls -vvv" 47 | ] 48 | }, 49 | "config": { 50 | "optimize-autoloader": true, 51 | "sort-packages": true 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /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": "9f64dbe42ee589ce137840ba69fad498", 8 | "packages": [ 9 | { 10 | "name": "dflydev/dot-access-data", 11 | "version": "v3.0.1", 12 | "source": { 13 | "type": "git", 14 | "url": "https://github.com/dflydev/dflydev-dot-access-data.git", 15 | "reference": "0992cc19268b259a39e86f296da5f0677841f42c" 16 | }, 17 | "dist": { 18 | "type": "zip", 19 | "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", 20 | "reference": "0992cc19268b259a39e86f296da5f0677841f42c", 21 | "shasum": "" 22 | }, 23 | "require": { 24 | "php": "^7.1 || ^8.0" 25 | }, 26 | "require-dev": { 27 | "phpstan/phpstan": "^0.12.42", 28 | "phpunit/phpunit": "^7.5 || ^8.5 || ^9.3", 29 | "scrutinizer/ocular": "1.6.0", 30 | "squizlabs/php_codesniffer": "^3.5", 31 | "vimeo/psalm": "^3.14" 32 | }, 33 | "type": "library", 34 | "extra": { 35 | "branch-alias": { 36 | "dev-main": "3.x-dev" 37 | } 38 | }, 39 | "autoload": { 40 | "psr-4": { 41 | "Dflydev\\DotAccessData\\": "src/" 42 | } 43 | }, 44 | "notification-url": "https://packagist.org/downloads/", 45 | "license": [ 46 | "MIT" 47 | ], 48 | "authors": [ 49 | { 50 | "name": "Dragonfly Development Inc.", 51 | "email": "info@dflydev.com", 52 | "homepage": "http://dflydev.com" 53 | }, 54 | { 55 | "name": "Beau Simensen", 56 | "email": "beau@dflydev.com", 57 | "homepage": "http://beausimensen.com" 58 | }, 59 | { 60 | "name": "Carlos Frutos", 61 | "email": "carlos@kiwing.it", 62 | "homepage": "https://github.com/cfrutos" 63 | }, 64 | { 65 | "name": "Colin O'Dell", 66 | "email": "colinodell@gmail.com", 67 | "homepage": "https://www.colinodell.com" 68 | } 69 | ], 70 | "description": "Given a deep data structure, access data by dot notation.", 71 | "homepage": "https://github.com/dflydev/dflydev-dot-access-data", 72 | "keywords": [ 73 | "access", 74 | "data", 75 | "dot", 76 | "notation" 77 | ], 78 | "support": { 79 | "issues": "https://github.com/dflydev/dflydev-dot-access-data/issues", 80 | "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.1" 81 | }, 82 | "time": "2021-08-13T13:06:58+00:00" 83 | }, 84 | { 85 | "name": "grasmash/expander", 86 | "version": "3.0.0", 87 | "source": { 88 | "type": "git", 89 | "url": "https://github.com/grasmash/expander.git", 90 | "reference": "bb1c1a2430957945cf08c5a62f5d72a6aa6a2c82" 91 | }, 92 | "dist": { 93 | "type": "zip", 94 | "url": "https://api.github.com/repos/grasmash/expander/zipball/bb1c1a2430957945cf08c5a62f5d72a6aa6a2c82", 95 | "reference": "bb1c1a2430957945cf08c5a62f5d72a6aa6a2c82", 96 | "shasum": "" 97 | }, 98 | "require": { 99 | "dflydev/dot-access-data": "^3.0.0", 100 | "php": ">=8.0", 101 | "psr/log": "^2 | ^3" 102 | }, 103 | "require-dev": { 104 | "greg-1-anderson/composer-test-scenarios": "^1", 105 | "php-coveralls/php-coveralls": "^2.5", 106 | "phpunit/phpunit": "^9", 107 | "squizlabs/php_codesniffer": "^3.3" 108 | }, 109 | "type": "library", 110 | "extra": { 111 | "branch-alias": { 112 | "dev-master": "1.x-dev" 113 | } 114 | }, 115 | "autoload": { 116 | "psr-4": { 117 | "Grasmash\\Expander\\": "src/" 118 | } 119 | }, 120 | "notification-url": "https://packagist.org/downloads/", 121 | "license": [ 122 | "MIT" 123 | ], 124 | "authors": [ 125 | { 126 | "name": "Matthew Grasmick" 127 | } 128 | ], 129 | "description": "Expands internal property references in PHP arrays file.", 130 | "support": { 131 | "issues": "https://github.com/grasmash/expander/issues", 132 | "source": "https://github.com/grasmash/expander/tree/3.0.0" 133 | }, 134 | "time": "2022-05-10T13:14:49+00:00" 135 | }, 136 | { 137 | "name": "psr/log", 138 | "version": "2.0.0", 139 | "source": { 140 | "type": "git", 141 | "url": "https://github.com/php-fig/log.git", 142 | "reference": "ef29f6d262798707a9edd554e2b82517ef3a9376" 143 | }, 144 | "dist": { 145 | "type": "zip", 146 | "url": "https://api.github.com/repos/php-fig/log/zipball/ef29f6d262798707a9edd554e2b82517ef3a9376", 147 | "reference": "ef29f6d262798707a9edd554e2b82517ef3a9376", 148 | "shasum": "" 149 | }, 150 | "require": { 151 | "php": ">=8.0.0" 152 | }, 153 | "type": "library", 154 | "extra": { 155 | "branch-alias": { 156 | "dev-master": "2.0.x-dev" 157 | } 158 | }, 159 | "autoload": { 160 | "psr-4": { 161 | "Psr\\Log\\": "src" 162 | } 163 | }, 164 | "notification-url": "https://packagist.org/downloads/", 165 | "license": [ 166 | "MIT" 167 | ], 168 | "authors": [ 169 | { 170 | "name": "PHP-FIG", 171 | "homepage": "https://www.php-fig.org/" 172 | } 173 | ], 174 | "description": "Common interface for logging libraries", 175 | "homepage": "https://github.com/php-fig/log", 176 | "keywords": [ 177 | "log", 178 | "psr", 179 | "psr-3" 180 | ], 181 | "support": { 182 | "source": "https://github.com/php-fig/log/tree/2.0.0" 183 | }, 184 | "time": "2021-07-14T16:41:46+00:00" 185 | }, 186 | { 187 | "name": "symfony/polyfill-ctype", 188 | "version": "v1.25.0", 189 | "source": { 190 | "type": "git", 191 | "url": "https://github.com/symfony/polyfill-ctype.git", 192 | "reference": "30885182c981ab175d4d034db0f6f469898070ab" 193 | }, 194 | "dist": { 195 | "type": "zip", 196 | "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", 197 | "reference": "30885182c981ab175d4d034db0f6f469898070ab", 198 | "shasum": "" 199 | }, 200 | "require": { 201 | "php": ">=7.1" 202 | }, 203 | "provide": { 204 | "ext-ctype": "*" 205 | }, 206 | "suggest": { 207 | "ext-ctype": "For best performance" 208 | }, 209 | "type": "library", 210 | "extra": { 211 | "branch-alias": { 212 | "dev-main": "1.23-dev" 213 | }, 214 | "thanks": { 215 | "name": "symfony/polyfill", 216 | "url": "https://github.com/symfony/polyfill" 217 | } 218 | }, 219 | "autoload": { 220 | "files": [ 221 | "bootstrap.php" 222 | ], 223 | "psr-4": { 224 | "Symfony\\Polyfill\\Ctype\\": "" 225 | } 226 | }, 227 | "notification-url": "https://packagist.org/downloads/", 228 | "license": [ 229 | "MIT" 230 | ], 231 | "authors": [ 232 | { 233 | "name": "Gert de Pagter", 234 | "email": "BackEndTea@gmail.com" 235 | }, 236 | { 237 | "name": "Symfony Community", 238 | "homepage": "https://symfony.com/contributors" 239 | } 240 | ], 241 | "description": "Symfony polyfill for ctype functions", 242 | "homepage": "https://symfony.com", 243 | "keywords": [ 244 | "compatibility", 245 | "ctype", 246 | "polyfill", 247 | "portable" 248 | ], 249 | "support": { 250 | "source": "https://github.com/symfony/polyfill-ctype/tree/v1.25.0" 251 | }, 252 | "funding": [ 253 | { 254 | "url": "https://symfony.com/sponsor", 255 | "type": "custom" 256 | }, 257 | { 258 | "url": "https://github.com/fabpot", 259 | "type": "github" 260 | }, 261 | { 262 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 263 | "type": "tidelift" 264 | } 265 | ], 266 | "time": "2021-10-20T20:35:02+00:00" 267 | }, 268 | { 269 | "name": "symfony/yaml", 270 | "version": "v6.0.3", 271 | "source": { 272 | "type": "git", 273 | "url": "https://github.com/symfony/yaml.git", 274 | "reference": "e77f3ea0b21141d771d4a5655faa54f692b34af5" 275 | }, 276 | "dist": { 277 | "type": "zip", 278 | "url": "https://api.github.com/repos/symfony/yaml/zipball/e77f3ea0b21141d771d4a5655faa54f692b34af5", 279 | "reference": "e77f3ea0b21141d771d4a5655faa54f692b34af5", 280 | "shasum": "" 281 | }, 282 | "require": { 283 | "php": ">=8.0.2", 284 | "symfony/polyfill-ctype": "^1.8" 285 | }, 286 | "conflict": { 287 | "symfony/console": "<5.4" 288 | }, 289 | "require-dev": { 290 | "symfony/console": "^5.4|^6.0" 291 | }, 292 | "suggest": { 293 | "symfony/console": "For validating YAML files using the lint command" 294 | }, 295 | "bin": [ 296 | "Resources/bin/yaml-lint" 297 | ], 298 | "type": "library", 299 | "autoload": { 300 | "psr-4": { 301 | "Symfony\\Component\\Yaml\\": "" 302 | }, 303 | "exclude-from-classmap": [ 304 | "/Tests/" 305 | ] 306 | }, 307 | "notification-url": "https://packagist.org/downloads/", 308 | "license": [ 309 | "MIT" 310 | ], 311 | "authors": [ 312 | { 313 | "name": "Fabien Potencier", 314 | "email": "fabien@symfony.com" 315 | }, 316 | { 317 | "name": "Symfony Community", 318 | "homepage": "https://symfony.com/contributors" 319 | } 320 | ], 321 | "description": "Loads and dumps YAML files", 322 | "homepage": "https://symfony.com", 323 | "support": { 324 | "source": "https://github.com/symfony/yaml/tree/v6.0.3" 325 | }, 326 | "funding": [ 327 | { 328 | "url": "https://symfony.com/sponsor", 329 | "type": "custom" 330 | }, 331 | { 332 | "url": "https://github.com/fabpot", 333 | "type": "github" 334 | }, 335 | { 336 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 337 | "type": "tidelift" 338 | } 339 | ], 340 | "time": "2022-01-26T17:23:29+00:00" 341 | } 342 | ], 343 | "packages-dev": [ 344 | { 345 | "name": "doctrine/instantiator", 346 | "version": "1.4.1", 347 | "source": { 348 | "type": "git", 349 | "url": "https://github.com/doctrine/instantiator.git", 350 | "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc" 351 | }, 352 | "dist": { 353 | "type": "zip", 354 | "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc", 355 | "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc", 356 | "shasum": "" 357 | }, 358 | "require": { 359 | "php": "^7.1 || ^8.0" 360 | }, 361 | "require-dev": { 362 | "doctrine/coding-standard": "^9", 363 | "ext-pdo": "*", 364 | "ext-phar": "*", 365 | "phpbench/phpbench": "^0.16 || ^1", 366 | "phpstan/phpstan": "^1.4", 367 | "phpstan/phpstan-phpunit": "^1", 368 | "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", 369 | "vimeo/psalm": "^4.22" 370 | }, 371 | "type": "library", 372 | "autoload": { 373 | "psr-4": { 374 | "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" 375 | } 376 | }, 377 | "notification-url": "https://packagist.org/downloads/", 378 | "license": [ 379 | "MIT" 380 | ], 381 | "authors": [ 382 | { 383 | "name": "Marco Pivetta", 384 | "email": "ocramius@gmail.com", 385 | "homepage": "https://ocramius.github.io/" 386 | } 387 | ], 388 | "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", 389 | "homepage": "https://www.doctrine-project.org/projects/instantiator.html", 390 | "keywords": [ 391 | "constructor", 392 | "instantiate" 393 | ], 394 | "support": { 395 | "issues": "https://github.com/doctrine/instantiator/issues", 396 | "source": "https://github.com/doctrine/instantiator/tree/1.4.1" 397 | }, 398 | "funding": [ 399 | { 400 | "url": "https://www.doctrine-project.org/sponsorship.html", 401 | "type": "custom" 402 | }, 403 | { 404 | "url": "https://www.patreon.com/phpdoctrine", 405 | "type": "patreon" 406 | }, 407 | { 408 | "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", 409 | "type": "tidelift" 410 | } 411 | ], 412 | "time": "2022-03-03T08:28:38+00:00" 413 | }, 414 | { 415 | "name": "guzzlehttp/guzzle", 416 | "version": "7.4.2", 417 | "source": { 418 | "type": "git", 419 | "url": "https://github.com/guzzle/guzzle.git", 420 | "reference": "ac1ec1cd9b5624694c3a40be801d94137afb12b4" 421 | }, 422 | "dist": { 423 | "type": "zip", 424 | "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ac1ec1cd9b5624694c3a40be801d94137afb12b4", 425 | "reference": "ac1ec1cd9b5624694c3a40be801d94137afb12b4", 426 | "shasum": "" 427 | }, 428 | "require": { 429 | "ext-json": "*", 430 | "guzzlehttp/promises": "^1.5", 431 | "guzzlehttp/psr7": "^1.8.3 || ^2.1", 432 | "php": "^7.2.5 || ^8.0", 433 | "psr/http-client": "^1.0", 434 | "symfony/deprecation-contracts": "^2.2 || ^3.0" 435 | }, 436 | "provide": { 437 | "psr/http-client-implementation": "1.0" 438 | }, 439 | "require-dev": { 440 | "bamarni/composer-bin-plugin": "^1.4.1", 441 | "ext-curl": "*", 442 | "php-http/client-integration-tests": "^3.0", 443 | "phpunit/phpunit": "^8.5.5 || ^9.3.5", 444 | "psr/log": "^1.1 || ^2.0 || ^3.0" 445 | }, 446 | "suggest": { 447 | "ext-curl": "Required for CURL handler support", 448 | "ext-intl": "Required for Internationalized Domain Name (IDN) support", 449 | "psr/log": "Required for using the Log middleware" 450 | }, 451 | "type": "library", 452 | "extra": { 453 | "branch-alias": { 454 | "dev-master": "7.4-dev" 455 | } 456 | }, 457 | "autoload": { 458 | "files": [ 459 | "src/functions_include.php" 460 | ], 461 | "psr-4": { 462 | "GuzzleHttp\\": "src/" 463 | } 464 | }, 465 | "notification-url": "https://packagist.org/downloads/", 466 | "license": [ 467 | "MIT" 468 | ], 469 | "authors": [ 470 | { 471 | "name": "Graham Campbell", 472 | "email": "hello@gjcampbell.co.uk", 473 | "homepage": "https://github.com/GrahamCampbell" 474 | }, 475 | { 476 | "name": "Michael Dowling", 477 | "email": "mtdowling@gmail.com", 478 | "homepage": "https://github.com/mtdowling" 479 | }, 480 | { 481 | "name": "Jeremy Lindblom", 482 | "email": "jeremeamia@gmail.com", 483 | "homepage": "https://github.com/jeremeamia" 484 | }, 485 | { 486 | "name": "George Mponos", 487 | "email": "gmponos@gmail.com", 488 | "homepage": "https://github.com/gmponos" 489 | }, 490 | { 491 | "name": "Tobias Nyholm", 492 | "email": "tobias.nyholm@gmail.com", 493 | "homepage": "https://github.com/Nyholm" 494 | }, 495 | { 496 | "name": "Márk Sági-Kazár", 497 | "email": "mark.sagikazar@gmail.com", 498 | "homepage": "https://github.com/sagikazarmark" 499 | }, 500 | { 501 | "name": "Tobias Schultze", 502 | "email": "webmaster@tubo-world.de", 503 | "homepage": "https://github.com/Tobion" 504 | } 505 | ], 506 | "description": "Guzzle is a PHP HTTP client library", 507 | "keywords": [ 508 | "client", 509 | "curl", 510 | "framework", 511 | "http", 512 | "http client", 513 | "psr-18", 514 | "psr-7", 515 | "rest", 516 | "web service" 517 | ], 518 | "support": { 519 | "issues": "https://github.com/guzzle/guzzle/issues", 520 | "source": "https://github.com/guzzle/guzzle/tree/7.4.2" 521 | }, 522 | "funding": [ 523 | { 524 | "url": "https://github.com/GrahamCampbell", 525 | "type": "github" 526 | }, 527 | { 528 | "url": "https://github.com/Nyholm", 529 | "type": "github" 530 | }, 531 | { 532 | "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle", 533 | "type": "tidelift" 534 | } 535 | ], 536 | "time": "2022-03-20T14:16:28+00:00" 537 | }, 538 | { 539 | "name": "guzzlehttp/promises", 540 | "version": "1.5.1", 541 | "source": { 542 | "type": "git", 543 | "url": "https://github.com/guzzle/promises.git", 544 | "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" 545 | }, 546 | "dist": { 547 | "type": "zip", 548 | "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", 549 | "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", 550 | "shasum": "" 551 | }, 552 | "require": { 553 | "php": ">=5.5" 554 | }, 555 | "require-dev": { 556 | "symfony/phpunit-bridge": "^4.4 || ^5.1" 557 | }, 558 | "type": "library", 559 | "extra": { 560 | "branch-alias": { 561 | "dev-master": "1.5-dev" 562 | } 563 | }, 564 | "autoload": { 565 | "files": [ 566 | "src/functions_include.php" 567 | ], 568 | "psr-4": { 569 | "GuzzleHttp\\Promise\\": "src/" 570 | } 571 | }, 572 | "notification-url": "https://packagist.org/downloads/", 573 | "license": [ 574 | "MIT" 575 | ], 576 | "authors": [ 577 | { 578 | "name": "Graham Campbell", 579 | "email": "hello@gjcampbell.co.uk", 580 | "homepage": "https://github.com/GrahamCampbell" 581 | }, 582 | { 583 | "name": "Michael Dowling", 584 | "email": "mtdowling@gmail.com", 585 | "homepage": "https://github.com/mtdowling" 586 | }, 587 | { 588 | "name": "Tobias Nyholm", 589 | "email": "tobias.nyholm@gmail.com", 590 | "homepage": "https://github.com/Nyholm" 591 | }, 592 | { 593 | "name": "Tobias Schultze", 594 | "email": "webmaster@tubo-world.de", 595 | "homepage": "https://github.com/Tobion" 596 | } 597 | ], 598 | "description": "Guzzle promises library", 599 | "keywords": [ 600 | "promise" 601 | ], 602 | "support": { 603 | "issues": "https://github.com/guzzle/promises/issues", 604 | "source": "https://github.com/guzzle/promises/tree/1.5.1" 605 | }, 606 | "funding": [ 607 | { 608 | "url": "https://github.com/GrahamCampbell", 609 | "type": "github" 610 | }, 611 | { 612 | "url": "https://github.com/Nyholm", 613 | "type": "github" 614 | }, 615 | { 616 | "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", 617 | "type": "tidelift" 618 | } 619 | ], 620 | "time": "2021-10-22T20:56:57+00:00" 621 | }, 622 | { 623 | "name": "guzzlehttp/psr7", 624 | "version": "2.2.1", 625 | "source": { 626 | "type": "git", 627 | "url": "https://github.com/guzzle/psr7.git", 628 | "reference": "c94a94f120803a18554c1805ef2e539f8285f9a2" 629 | }, 630 | "dist": { 631 | "type": "zip", 632 | "url": "https://api.github.com/repos/guzzle/psr7/zipball/c94a94f120803a18554c1805ef2e539f8285f9a2", 633 | "reference": "c94a94f120803a18554c1805ef2e539f8285f9a2", 634 | "shasum": "" 635 | }, 636 | "require": { 637 | "php": "^7.2.5 || ^8.0", 638 | "psr/http-factory": "^1.0", 639 | "psr/http-message": "^1.0", 640 | "ralouphie/getallheaders": "^3.0" 641 | }, 642 | "provide": { 643 | "psr/http-factory-implementation": "1.0", 644 | "psr/http-message-implementation": "1.0" 645 | }, 646 | "require-dev": { 647 | "bamarni/composer-bin-plugin": "^1.4.1", 648 | "http-interop/http-factory-tests": "^0.9", 649 | "phpunit/phpunit": "^8.5.8 || ^9.3.10" 650 | }, 651 | "suggest": { 652 | "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" 653 | }, 654 | "type": "library", 655 | "extra": { 656 | "branch-alias": { 657 | "dev-master": "2.2-dev" 658 | } 659 | }, 660 | "autoload": { 661 | "psr-4": { 662 | "GuzzleHttp\\Psr7\\": "src/" 663 | } 664 | }, 665 | "notification-url": "https://packagist.org/downloads/", 666 | "license": [ 667 | "MIT" 668 | ], 669 | "authors": [ 670 | { 671 | "name": "Graham Campbell", 672 | "email": "hello@gjcampbell.co.uk", 673 | "homepage": "https://github.com/GrahamCampbell" 674 | }, 675 | { 676 | "name": "Michael Dowling", 677 | "email": "mtdowling@gmail.com", 678 | "homepage": "https://github.com/mtdowling" 679 | }, 680 | { 681 | "name": "George Mponos", 682 | "email": "gmponos@gmail.com", 683 | "homepage": "https://github.com/gmponos" 684 | }, 685 | { 686 | "name": "Tobias Nyholm", 687 | "email": "tobias.nyholm@gmail.com", 688 | "homepage": "https://github.com/Nyholm" 689 | }, 690 | { 691 | "name": "Márk Sági-Kazár", 692 | "email": "mark.sagikazar@gmail.com", 693 | "homepage": "https://github.com/sagikazarmark" 694 | }, 695 | { 696 | "name": "Tobias Schultze", 697 | "email": "webmaster@tubo-world.de", 698 | "homepage": "https://github.com/Tobion" 699 | }, 700 | { 701 | "name": "Márk Sági-Kazár", 702 | "email": "mark.sagikazar@gmail.com", 703 | "homepage": "https://sagikazarmark.hu" 704 | } 705 | ], 706 | "description": "PSR-7 message implementation that also provides common utility methods", 707 | "keywords": [ 708 | "http", 709 | "message", 710 | "psr-7", 711 | "request", 712 | "response", 713 | "stream", 714 | "uri", 715 | "url" 716 | ], 717 | "support": { 718 | "issues": "https://github.com/guzzle/psr7/issues", 719 | "source": "https://github.com/guzzle/psr7/tree/2.2.1" 720 | }, 721 | "funding": [ 722 | { 723 | "url": "https://github.com/GrahamCampbell", 724 | "type": "github" 725 | }, 726 | { 727 | "url": "https://github.com/Nyholm", 728 | "type": "github" 729 | }, 730 | { 731 | "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", 732 | "type": "tidelift" 733 | } 734 | ], 735 | "time": "2022-03-20T21:55:58+00:00" 736 | }, 737 | { 738 | "name": "myclabs/deep-copy", 739 | "version": "1.11.0", 740 | "source": { 741 | "type": "git", 742 | "url": "https://github.com/myclabs/DeepCopy.git", 743 | "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614" 744 | }, 745 | "dist": { 746 | "type": "zip", 747 | "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614", 748 | "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614", 749 | "shasum": "" 750 | }, 751 | "require": { 752 | "php": "^7.1 || ^8.0" 753 | }, 754 | "conflict": { 755 | "doctrine/collections": "<1.6.8", 756 | "doctrine/common": "<2.13.3 || >=3,<3.2.2" 757 | }, 758 | "require-dev": { 759 | "doctrine/collections": "^1.6.8", 760 | "doctrine/common": "^2.13.3 || ^3.2.2", 761 | "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" 762 | }, 763 | "type": "library", 764 | "autoload": { 765 | "files": [ 766 | "src/DeepCopy/deep_copy.php" 767 | ], 768 | "psr-4": { 769 | "DeepCopy\\": "src/DeepCopy/" 770 | } 771 | }, 772 | "notification-url": "https://packagist.org/downloads/", 773 | "license": [ 774 | "MIT" 775 | ], 776 | "description": "Create deep copies (clones) of your objects", 777 | "keywords": [ 778 | "clone", 779 | "copy", 780 | "duplicate", 781 | "object", 782 | "object graph" 783 | ], 784 | "support": { 785 | "issues": "https://github.com/myclabs/DeepCopy/issues", 786 | "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0" 787 | }, 788 | "funding": [ 789 | { 790 | "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", 791 | "type": "tidelift" 792 | } 793 | ], 794 | "time": "2022-03-03T13:19:32+00:00" 795 | }, 796 | { 797 | "name": "nikic/php-parser", 798 | "version": "v4.13.2", 799 | "source": { 800 | "type": "git", 801 | "url": "https://github.com/nikic/PHP-Parser.git", 802 | "reference": "210577fe3cf7badcc5814d99455df46564f3c077" 803 | }, 804 | "dist": { 805 | "type": "zip", 806 | "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", 807 | "reference": "210577fe3cf7badcc5814d99455df46564f3c077", 808 | "shasum": "" 809 | }, 810 | "require": { 811 | "ext-tokenizer": "*", 812 | "php": ">=7.0" 813 | }, 814 | "require-dev": { 815 | "ircmaxell/php-yacc": "^0.0.7", 816 | "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" 817 | }, 818 | "bin": [ 819 | "bin/php-parse" 820 | ], 821 | "type": "library", 822 | "extra": { 823 | "branch-alias": { 824 | "dev-master": "4.9-dev" 825 | } 826 | }, 827 | "autoload": { 828 | "psr-4": { 829 | "PhpParser\\": "lib/PhpParser" 830 | } 831 | }, 832 | "notification-url": "https://packagist.org/downloads/", 833 | "license": [ 834 | "BSD-3-Clause" 835 | ], 836 | "authors": [ 837 | { 838 | "name": "Nikita Popov" 839 | } 840 | ], 841 | "description": "A PHP parser written in PHP", 842 | "keywords": [ 843 | "parser", 844 | "php" 845 | ], 846 | "support": { 847 | "issues": "https://github.com/nikic/PHP-Parser/issues", 848 | "source": "https://github.com/nikic/PHP-Parser/tree/v4.13.2" 849 | }, 850 | "time": "2021-11-30T19:35:32+00:00" 851 | }, 852 | { 853 | "name": "phar-io/manifest", 854 | "version": "2.0.3", 855 | "source": { 856 | "type": "git", 857 | "url": "https://github.com/phar-io/manifest.git", 858 | "reference": "97803eca37d319dfa7826cc2437fc020857acb53" 859 | }, 860 | "dist": { 861 | "type": "zip", 862 | "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", 863 | "reference": "97803eca37d319dfa7826cc2437fc020857acb53", 864 | "shasum": "" 865 | }, 866 | "require": { 867 | "ext-dom": "*", 868 | "ext-phar": "*", 869 | "ext-xmlwriter": "*", 870 | "phar-io/version": "^3.0.1", 871 | "php": "^7.2 || ^8.0" 872 | }, 873 | "type": "library", 874 | "extra": { 875 | "branch-alias": { 876 | "dev-master": "2.0.x-dev" 877 | } 878 | }, 879 | "autoload": { 880 | "classmap": [ 881 | "src/" 882 | ] 883 | }, 884 | "notification-url": "https://packagist.org/downloads/", 885 | "license": [ 886 | "BSD-3-Clause" 887 | ], 888 | "authors": [ 889 | { 890 | "name": "Arne Blankerts", 891 | "email": "arne@blankerts.de", 892 | "role": "Developer" 893 | }, 894 | { 895 | "name": "Sebastian Heuer", 896 | "email": "sebastian@phpeople.de", 897 | "role": "Developer" 898 | }, 899 | { 900 | "name": "Sebastian Bergmann", 901 | "email": "sebastian@phpunit.de", 902 | "role": "Developer" 903 | } 904 | ], 905 | "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", 906 | "support": { 907 | "issues": "https://github.com/phar-io/manifest/issues", 908 | "source": "https://github.com/phar-io/manifest/tree/2.0.3" 909 | }, 910 | "time": "2021-07-20T11:28:43+00:00" 911 | }, 912 | { 913 | "name": "phar-io/version", 914 | "version": "3.2.1", 915 | "source": { 916 | "type": "git", 917 | "url": "https://github.com/phar-io/version.git", 918 | "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" 919 | }, 920 | "dist": { 921 | "type": "zip", 922 | "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", 923 | "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", 924 | "shasum": "" 925 | }, 926 | "require": { 927 | "php": "^7.2 || ^8.0" 928 | }, 929 | "type": "library", 930 | "autoload": { 931 | "classmap": [ 932 | "src/" 933 | ] 934 | }, 935 | "notification-url": "https://packagist.org/downloads/", 936 | "license": [ 937 | "BSD-3-Clause" 938 | ], 939 | "authors": [ 940 | { 941 | "name": "Arne Blankerts", 942 | "email": "arne@blankerts.de", 943 | "role": "Developer" 944 | }, 945 | { 946 | "name": "Sebastian Heuer", 947 | "email": "sebastian@phpeople.de", 948 | "role": "Developer" 949 | }, 950 | { 951 | "name": "Sebastian Bergmann", 952 | "email": "sebastian@phpunit.de", 953 | "role": "Developer" 954 | } 955 | ], 956 | "description": "Library for handling version information and constraints", 957 | "support": { 958 | "issues": "https://github.com/phar-io/version/issues", 959 | "source": "https://github.com/phar-io/version/tree/3.2.1" 960 | }, 961 | "time": "2022-02-21T01:04:05+00:00" 962 | }, 963 | { 964 | "name": "php-coveralls/php-coveralls", 965 | "version": "v2.5.2", 966 | "source": { 967 | "type": "git", 968 | "url": "https://github.com/php-coveralls/php-coveralls.git", 969 | "reference": "007e13afdcdba2cd0efcc5f72c3b7efb356a8bd4" 970 | }, 971 | "dist": { 972 | "type": "zip", 973 | "url": "https://api.github.com/repos/php-coveralls/php-coveralls/zipball/007e13afdcdba2cd0efcc5f72c3b7efb356a8bd4", 974 | "reference": "007e13afdcdba2cd0efcc5f72c3b7efb356a8bd4", 975 | "shasum": "" 976 | }, 977 | "require": { 978 | "ext-json": "*", 979 | "ext-simplexml": "*", 980 | "guzzlehttp/guzzle": "^6.0 || ^7.0", 981 | "php": "^5.5 || ^7.0 || ^8.0", 982 | "psr/log": "^1.0 || ^2.0", 983 | "symfony/config": "^2.1 || ^3.0 || ^4.0 || ^5.0 || ^6.0", 984 | "symfony/console": "^2.1 || ^3.0 || ^4.0 || ^5.0 || ^6.0", 985 | "symfony/stopwatch": "^2.0 || ^3.0 || ^4.0 || ^5.0 || ^6.0", 986 | "symfony/yaml": "^2.0.5 || ^3.0 || ^4.0 || ^5.0 || ^6.0" 987 | }, 988 | "require-dev": { 989 | "phpunit/phpunit": "^4.8.35 || ^5.4.3 || ^6.0 || ^7.0 || ^8.0 || ^9.0", 990 | "sanmai/phpunit-legacy-adapter": "^6.1 || ^8.0" 991 | }, 992 | "suggest": { 993 | "symfony/http-kernel": "Allows Symfony integration" 994 | }, 995 | "bin": [ 996 | "bin/php-coveralls" 997 | ], 998 | "type": "library", 999 | "autoload": { 1000 | "psr-4": { 1001 | "PhpCoveralls\\": "src/" 1002 | } 1003 | }, 1004 | "notification-url": "https://packagist.org/downloads/", 1005 | "license": [ 1006 | "MIT" 1007 | ], 1008 | "authors": [ 1009 | { 1010 | "name": "Kitamura Satoshi", 1011 | "email": "with.no.parachute@gmail.com", 1012 | "homepage": "https://www.facebook.com/satooshi.jp", 1013 | "role": "Original creator" 1014 | }, 1015 | { 1016 | "name": "Takashi Matsuo", 1017 | "email": "tmatsuo@google.com" 1018 | }, 1019 | { 1020 | "name": "Google Inc" 1021 | }, 1022 | { 1023 | "name": "Dariusz Ruminski", 1024 | "email": "dariusz.ruminski@gmail.com", 1025 | "homepage": "https://github.com/keradus" 1026 | }, 1027 | { 1028 | "name": "Contributors", 1029 | "homepage": "https://github.com/php-coveralls/php-coveralls/graphs/contributors" 1030 | } 1031 | ], 1032 | "description": "PHP client library for Coveralls API", 1033 | "homepage": "https://github.com/php-coveralls/php-coveralls", 1034 | "keywords": [ 1035 | "ci", 1036 | "coverage", 1037 | "github", 1038 | "test" 1039 | ], 1040 | "support": { 1041 | "issues": "https://github.com/php-coveralls/php-coveralls/issues", 1042 | "source": "https://github.com/php-coveralls/php-coveralls/tree/v2.5.2" 1043 | }, 1044 | "time": "2021-12-06T17:05:08+00:00" 1045 | }, 1046 | { 1047 | "name": "phpdocumentor/reflection-common", 1048 | "version": "2.2.0", 1049 | "source": { 1050 | "type": "git", 1051 | "url": "https://github.com/phpDocumentor/ReflectionCommon.git", 1052 | "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" 1053 | }, 1054 | "dist": { 1055 | "type": "zip", 1056 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", 1057 | "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", 1058 | "shasum": "" 1059 | }, 1060 | "require": { 1061 | "php": "^7.2 || ^8.0" 1062 | }, 1063 | "type": "library", 1064 | "extra": { 1065 | "branch-alias": { 1066 | "dev-2.x": "2.x-dev" 1067 | } 1068 | }, 1069 | "autoload": { 1070 | "psr-4": { 1071 | "phpDocumentor\\Reflection\\": "src/" 1072 | } 1073 | }, 1074 | "notification-url": "https://packagist.org/downloads/", 1075 | "license": [ 1076 | "MIT" 1077 | ], 1078 | "authors": [ 1079 | { 1080 | "name": "Jaap van Otterdijk", 1081 | "email": "opensource@ijaap.nl" 1082 | } 1083 | ], 1084 | "description": "Common reflection classes used by phpdocumentor to reflect the code structure", 1085 | "homepage": "http://www.phpdoc.org", 1086 | "keywords": [ 1087 | "FQSEN", 1088 | "phpDocumentor", 1089 | "phpdoc", 1090 | "reflection", 1091 | "static analysis" 1092 | ], 1093 | "support": { 1094 | "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", 1095 | "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" 1096 | }, 1097 | "time": "2020-06-27T09:03:43+00:00" 1098 | }, 1099 | { 1100 | "name": "phpdocumentor/reflection-docblock", 1101 | "version": "5.3.0", 1102 | "source": { 1103 | "type": "git", 1104 | "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", 1105 | "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" 1106 | }, 1107 | "dist": { 1108 | "type": "zip", 1109 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", 1110 | "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", 1111 | "shasum": "" 1112 | }, 1113 | "require": { 1114 | "ext-filter": "*", 1115 | "php": "^7.2 || ^8.0", 1116 | "phpdocumentor/reflection-common": "^2.2", 1117 | "phpdocumentor/type-resolver": "^1.3", 1118 | "webmozart/assert": "^1.9.1" 1119 | }, 1120 | "require-dev": { 1121 | "mockery/mockery": "~1.3.2", 1122 | "psalm/phar": "^4.8" 1123 | }, 1124 | "type": "library", 1125 | "extra": { 1126 | "branch-alias": { 1127 | "dev-master": "5.x-dev" 1128 | } 1129 | }, 1130 | "autoload": { 1131 | "psr-4": { 1132 | "phpDocumentor\\Reflection\\": "src" 1133 | } 1134 | }, 1135 | "notification-url": "https://packagist.org/downloads/", 1136 | "license": [ 1137 | "MIT" 1138 | ], 1139 | "authors": [ 1140 | { 1141 | "name": "Mike van Riel", 1142 | "email": "me@mikevanriel.com" 1143 | }, 1144 | { 1145 | "name": "Jaap van Otterdijk", 1146 | "email": "account@ijaap.nl" 1147 | } 1148 | ], 1149 | "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", 1150 | "support": { 1151 | "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", 1152 | "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" 1153 | }, 1154 | "time": "2021-10-19T17:43:47+00:00" 1155 | }, 1156 | { 1157 | "name": "phpdocumentor/type-resolver", 1158 | "version": "1.6.1", 1159 | "source": { 1160 | "type": "git", 1161 | "url": "https://github.com/phpDocumentor/TypeResolver.git", 1162 | "reference": "77a32518733312af16a44300404e945338981de3" 1163 | }, 1164 | "dist": { 1165 | "type": "zip", 1166 | "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/77a32518733312af16a44300404e945338981de3", 1167 | "reference": "77a32518733312af16a44300404e945338981de3", 1168 | "shasum": "" 1169 | }, 1170 | "require": { 1171 | "php": "^7.2 || ^8.0", 1172 | "phpdocumentor/reflection-common": "^2.0" 1173 | }, 1174 | "require-dev": { 1175 | "ext-tokenizer": "*", 1176 | "psalm/phar": "^4.8" 1177 | }, 1178 | "type": "library", 1179 | "extra": { 1180 | "branch-alias": { 1181 | "dev-1.x": "1.x-dev" 1182 | } 1183 | }, 1184 | "autoload": { 1185 | "psr-4": { 1186 | "phpDocumentor\\Reflection\\": "src" 1187 | } 1188 | }, 1189 | "notification-url": "https://packagist.org/downloads/", 1190 | "license": [ 1191 | "MIT" 1192 | ], 1193 | "authors": [ 1194 | { 1195 | "name": "Mike van Riel", 1196 | "email": "me@mikevanriel.com" 1197 | } 1198 | ], 1199 | "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", 1200 | "support": { 1201 | "issues": "https://github.com/phpDocumentor/TypeResolver/issues", 1202 | "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.1" 1203 | }, 1204 | "time": "2022-03-15T21:29:03+00:00" 1205 | }, 1206 | { 1207 | "name": "phpspec/prophecy", 1208 | "version": "v1.15.0", 1209 | "source": { 1210 | "type": "git", 1211 | "url": "https://github.com/phpspec/prophecy.git", 1212 | "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" 1213 | }, 1214 | "dist": { 1215 | "type": "zip", 1216 | "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", 1217 | "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", 1218 | "shasum": "" 1219 | }, 1220 | "require": { 1221 | "doctrine/instantiator": "^1.2", 1222 | "php": "^7.2 || ~8.0, <8.2", 1223 | "phpdocumentor/reflection-docblock": "^5.2", 1224 | "sebastian/comparator": "^3.0 || ^4.0", 1225 | "sebastian/recursion-context": "^3.0 || ^4.0" 1226 | }, 1227 | "require-dev": { 1228 | "phpspec/phpspec": "^6.0 || ^7.0", 1229 | "phpunit/phpunit": "^8.0 || ^9.0" 1230 | }, 1231 | "type": "library", 1232 | "extra": { 1233 | "branch-alias": { 1234 | "dev-master": "1.x-dev" 1235 | } 1236 | }, 1237 | "autoload": { 1238 | "psr-4": { 1239 | "Prophecy\\": "src/Prophecy" 1240 | } 1241 | }, 1242 | "notification-url": "https://packagist.org/downloads/", 1243 | "license": [ 1244 | "MIT" 1245 | ], 1246 | "authors": [ 1247 | { 1248 | "name": "Konstantin Kudryashov", 1249 | "email": "ever.zet@gmail.com", 1250 | "homepage": "http://everzet.com" 1251 | }, 1252 | { 1253 | "name": "Marcello Duarte", 1254 | "email": "marcello.duarte@gmail.com" 1255 | } 1256 | ], 1257 | "description": "Highly opinionated mocking framework for PHP 5.3+", 1258 | "homepage": "https://github.com/phpspec/prophecy", 1259 | "keywords": [ 1260 | "Double", 1261 | "Dummy", 1262 | "fake", 1263 | "mock", 1264 | "spy", 1265 | "stub" 1266 | ], 1267 | "support": { 1268 | "issues": "https://github.com/phpspec/prophecy/issues", 1269 | "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" 1270 | }, 1271 | "time": "2021-12-08T12:19:24+00:00" 1272 | }, 1273 | { 1274 | "name": "phpunit/php-code-coverage", 1275 | "version": "9.2.15", 1276 | "source": { 1277 | "type": "git", 1278 | "url": "https://github.com/sebastianbergmann/php-code-coverage.git", 1279 | "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f" 1280 | }, 1281 | "dist": { 1282 | "type": "zip", 1283 | "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2e9da11878c4202f97915c1cb4bb1ca318a63f5f", 1284 | "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f", 1285 | "shasum": "" 1286 | }, 1287 | "require": { 1288 | "ext-dom": "*", 1289 | "ext-libxml": "*", 1290 | "ext-xmlwriter": "*", 1291 | "nikic/php-parser": "^4.13.0", 1292 | "php": ">=7.3", 1293 | "phpunit/php-file-iterator": "^3.0.3", 1294 | "phpunit/php-text-template": "^2.0.2", 1295 | "sebastian/code-unit-reverse-lookup": "^2.0.2", 1296 | "sebastian/complexity": "^2.0", 1297 | "sebastian/environment": "^5.1.2", 1298 | "sebastian/lines-of-code": "^1.0.3", 1299 | "sebastian/version": "^3.0.1", 1300 | "theseer/tokenizer": "^1.2.0" 1301 | }, 1302 | "require-dev": { 1303 | "phpunit/phpunit": "^9.3" 1304 | }, 1305 | "suggest": { 1306 | "ext-pcov": "*", 1307 | "ext-xdebug": "*" 1308 | }, 1309 | "type": "library", 1310 | "extra": { 1311 | "branch-alias": { 1312 | "dev-master": "9.2-dev" 1313 | } 1314 | }, 1315 | "autoload": { 1316 | "classmap": [ 1317 | "src/" 1318 | ] 1319 | }, 1320 | "notification-url": "https://packagist.org/downloads/", 1321 | "license": [ 1322 | "BSD-3-Clause" 1323 | ], 1324 | "authors": [ 1325 | { 1326 | "name": "Sebastian Bergmann", 1327 | "email": "sebastian@phpunit.de", 1328 | "role": "lead" 1329 | } 1330 | ], 1331 | "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", 1332 | "homepage": "https://github.com/sebastianbergmann/php-code-coverage", 1333 | "keywords": [ 1334 | "coverage", 1335 | "testing", 1336 | "xunit" 1337 | ], 1338 | "support": { 1339 | "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", 1340 | "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.15" 1341 | }, 1342 | "funding": [ 1343 | { 1344 | "url": "https://github.com/sebastianbergmann", 1345 | "type": "github" 1346 | } 1347 | ], 1348 | "time": "2022-03-07T09:28:20+00:00" 1349 | }, 1350 | { 1351 | "name": "phpunit/php-file-iterator", 1352 | "version": "3.0.6", 1353 | "source": { 1354 | "type": "git", 1355 | "url": "https://github.com/sebastianbergmann/php-file-iterator.git", 1356 | "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" 1357 | }, 1358 | "dist": { 1359 | "type": "zip", 1360 | "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", 1361 | "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", 1362 | "shasum": "" 1363 | }, 1364 | "require": { 1365 | "php": ">=7.3" 1366 | }, 1367 | "require-dev": { 1368 | "phpunit/phpunit": "^9.3" 1369 | }, 1370 | "type": "library", 1371 | "extra": { 1372 | "branch-alias": { 1373 | "dev-master": "3.0-dev" 1374 | } 1375 | }, 1376 | "autoload": { 1377 | "classmap": [ 1378 | "src/" 1379 | ] 1380 | }, 1381 | "notification-url": "https://packagist.org/downloads/", 1382 | "license": [ 1383 | "BSD-3-Clause" 1384 | ], 1385 | "authors": [ 1386 | { 1387 | "name": "Sebastian Bergmann", 1388 | "email": "sebastian@phpunit.de", 1389 | "role": "lead" 1390 | } 1391 | ], 1392 | "description": "FilterIterator implementation that filters files based on a list of suffixes.", 1393 | "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", 1394 | "keywords": [ 1395 | "filesystem", 1396 | "iterator" 1397 | ], 1398 | "support": { 1399 | "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", 1400 | "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" 1401 | }, 1402 | "funding": [ 1403 | { 1404 | "url": "https://github.com/sebastianbergmann", 1405 | "type": "github" 1406 | } 1407 | ], 1408 | "time": "2021-12-02T12:48:52+00:00" 1409 | }, 1410 | { 1411 | "name": "phpunit/php-invoker", 1412 | "version": "3.1.1", 1413 | "source": { 1414 | "type": "git", 1415 | "url": "https://github.com/sebastianbergmann/php-invoker.git", 1416 | "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" 1417 | }, 1418 | "dist": { 1419 | "type": "zip", 1420 | "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", 1421 | "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", 1422 | "shasum": "" 1423 | }, 1424 | "require": { 1425 | "php": ">=7.3" 1426 | }, 1427 | "require-dev": { 1428 | "ext-pcntl": "*", 1429 | "phpunit/phpunit": "^9.3" 1430 | }, 1431 | "suggest": { 1432 | "ext-pcntl": "*" 1433 | }, 1434 | "type": "library", 1435 | "extra": { 1436 | "branch-alias": { 1437 | "dev-master": "3.1-dev" 1438 | } 1439 | }, 1440 | "autoload": { 1441 | "classmap": [ 1442 | "src/" 1443 | ] 1444 | }, 1445 | "notification-url": "https://packagist.org/downloads/", 1446 | "license": [ 1447 | "BSD-3-Clause" 1448 | ], 1449 | "authors": [ 1450 | { 1451 | "name": "Sebastian Bergmann", 1452 | "email": "sebastian@phpunit.de", 1453 | "role": "lead" 1454 | } 1455 | ], 1456 | "description": "Invoke callables with a timeout", 1457 | "homepage": "https://github.com/sebastianbergmann/php-invoker/", 1458 | "keywords": [ 1459 | "process" 1460 | ], 1461 | "support": { 1462 | "issues": "https://github.com/sebastianbergmann/php-invoker/issues", 1463 | "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" 1464 | }, 1465 | "funding": [ 1466 | { 1467 | "url": "https://github.com/sebastianbergmann", 1468 | "type": "github" 1469 | } 1470 | ], 1471 | "time": "2020-09-28T05:58:55+00:00" 1472 | }, 1473 | { 1474 | "name": "phpunit/php-text-template", 1475 | "version": "2.0.4", 1476 | "source": { 1477 | "type": "git", 1478 | "url": "https://github.com/sebastianbergmann/php-text-template.git", 1479 | "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" 1480 | }, 1481 | "dist": { 1482 | "type": "zip", 1483 | "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", 1484 | "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", 1485 | "shasum": "" 1486 | }, 1487 | "require": { 1488 | "php": ">=7.3" 1489 | }, 1490 | "require-dev": { 1491 | "phpunit/phpunit": "^9.3" 1492 | }, 1493 | "type": "library", 1494 | "extra": { 1495 | "branch-alias": { 1496 | "dev-master": "2.0-dev" 1497 | } 1498 | }, 1499 | "autoload": { 1500 | "classmap": [ 1501 | "src/" 1502 | ] 1503 | }, 1504 | "notification-url": "https://packagist.org/downloads/", 1505 | "license": [ 1506 | "BSD-3-Clause" 1507 | ], 1508 | "authors": [ 1509 | { 1510 | "name": "Sebastian Bergmann", 1511 | "email": "sebastian@phpunit.de", 1512 | "role": "lead" 1513 | } 1514 | ], 1515 | "description": "Simple template engine.", 1516 | "homepage": "https://github.com/sebastianbergmann/php-text-template/", 1517 | "keywords": [ 1518 | "template" 1519 | ], 1520 | "support": { 1521 | "issues": "https://github.com/sebastianbergmann/php-text-template/issues", 1522 | "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" 1523 | }, 1524 | "funding": [ 1525 | { 1526 | "url": "https://github.com/sebastianbergmann", 1527 | "type": "github" 1528 | } 1529 | ], 1530 | "time": "2020-10-26T05:33:50+00:00" 1531 | }, 1532 | { 1533 | "name": "phpunit/php-timer", 1534 | "version": "5.0.3", 1535 | "source": { 1536 | "type": "git", 1537 | "url": "https://github.com/sebastianbergmann/php-timer.git", 1538 | "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" 1539 | }, 1540 | "dist": { 1541 | "type": "zip", 1542 | "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", 1543 | "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", 1544 | "shasum": "" 1545 | }, 1546 | "require": { 1547 | "php": ">=7.3" 1548 | }, 1549 | "require-dev": { 1550 | "phpunit/phpunit": "^9.3" 1551 | }, 1552 | "type": "library", 1553 | "extra": { 1554 | "branch-alias": { 1555 | "dev-master": "5.0-dev" 1556 | } 1557 | }, 1558 | "autoload": { 1559 | "classmap": [ 1560 | "src/" 1561 | ] 1562 | }, 1563 | "notification-url": "https://packagist.org/downloads/", 1564 | "license": [ 1565 | "BSD-3-Clause" 1566 | ], 1567 | "authors": [ 1568 | { 1569 | "name": "Sebastian Bergmann", 1570 | "email": "sebastian@phpunit.de", 1571 | "role": "lead" 1572 | } 1573 | ], 1574 | "description": "Utility class for timing", 1575 | "homepage": "https://github.com/sebastianbergmann/php-timer/", 1576 | "keywords": [ 1577 | "timer" 1578 | ], 1579 | "support": { 1580 | "issues": "https://github.com/sebastianbergmann/php-timer/issues", 1581 | "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" 1582 | }, 1583 | "funding": [ 1584 | { 1585 | "url": "https://github.com/sebastianbergmann", 1586 | "type": "github" 1587 | } 1588 | ], 1589 | "time": "2020-10-26T13:16:10+00:00" 1590 | }, 1591 | { 1592 | "name": "phpunit/phpunit", 1593 | "version": "9.5.20", 1594 | "source": { 1595 | "type": "git", 1596 | "url": "https://github.com/sebastianbergmann/phpunit.git", 1597 | "reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba" 1598 | }, 1599 | "dist": { 1600 | "type": "zip", 1601 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/12bc8879fb65aef2138b26fc633cb1e3620cffba", 1602 | "reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba", 1603 | "shasum": "" 1604 | }, 1605 | "require": { 1606 | "doctrine/instantiator": "^1.3.1", 1607 | "ext-dom": "*", 1608 | "ext-json": "*", 1609 | "ext-libxml": "*", 1610 | "ext-mbstring": "*", 1611 | "ext-xml": "*", 1612 | "ext-xmlwriter": "*", 1613 | "myclabs/deep-copy": "^1.10.1", 1614 | "phar-io/manifest": "^2.0.3", 1615 | "phar-io/version": "^3.0.2", 1616 | "php": ">=7.3", 1617 | "phpspec/prophecy": "^1.12.1", 1618 | "phpunit/php-code-coverage": "^9.2.13", 1619 | "phpunit/php-file-iterator": "^3.0.5", 1620 | "phpunit/php-invoker": "^3.1.1", 1621 | "phpunit/php-text-template": "^2.0.3", 1622 | "phpunit/php-timer": "^5.0.2", 1623 | "sebastian/cli-parser": "^1.0.1", 1624 | "sebastian/code-unit": "^1.0.6", 1625 | "sebastian/comparator": "^4.0.5", 1626 | "sebastian/diff": "^4.0.3", 1627 | "sebastian/environment": "^5.1.3", 1628 | "sebastian/exporter": "^4.0.3", 1629 | "sebastian/global-state": "^5.0.1", 1630 | "sebastian/object-enumerator": "^4.0.3", 1631 | "sebastian/resource-operations": "^3.0.3", 1632 | "sebastian/type": "^3.0", 1633 | "sebastian/version": "^3.0.2" 1634 | }, 1635 | "require-dev": { 1636 | "ext-pdo": "*", 1637 | "phpspec/prophecy-phpunit": "^2.0.1" 1638 | }, 1639 | "suggest": { 1640 | "ext-soap": "*", 1641 | "ext-xdebug": "*" 1642 | }, 1643 | "bin": [ 1644 | "phpunit" 1645 | ], 1646 | "type": "library", 1647 | "extra": { 1648 | "branch-alias": { 1649 | "dev-master": "9.5-dev" 1650 | } 1651 | }, 1652 | "autoload": { 1653 | "files": [ 1654 | "src/Framework/Assert/Functions.php" 1655 | ], 1656 | "classmap": [ 1657 | "src/" 1658 | ] 1659 | }, 1660 | "notification-url": "https://packagist.org/downloads/", 1661 | "license": [ 1662 | "BSD-3-Clause" 1663 | ], 1664 | "authors": [ 1665 | { 1666 | "name": "Sebastian Bergmann", 1667 | "email": "sebastian@phpunit.de", 1668 | "role": "lead" 1669 | } 1670 | ], 1671 | "description": "The PHP Unit Testing framework.", 1672 | "homepage": "https://phpunit.de/", 1673 | "keywords": [ 1674 | "phpunit", 1675 | "testing", 1676 | "xunit" 1677 | ], 1678 | "support": { 1679 | "issues": "https://github.com/sebastianbergmann/phpunit/issues", 1680 | "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.20" 1681 | }, 1682 | "funding": [ 1683 | { 1684 | "url": "https://phpunit.de/sponsors.html", 1685 | "type": "custom" 1686 | }, 1687 | { 1688 | "url": "https://github.com/sebastianbergmann", 1689 | "type": "github" 1690 | } 1691 | ], 1692 | "time": "2022-04-01T12:37:26+00:00" 1693 | }, 1694 | { 1695 | "name": "psr/container", 1696 | "version": "2.0.2", 1697 | "source": { 1698 | "type": "git", 1699 | "url": "https://github.com/php-fig/container.git", 1700 | "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" 1701 | }, 1702 | "dist": { 1703 | "type": "zip", 1704 | "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", 1705 | "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", 1706 | "shasum": "" 1707 | }, 1708 | "require": { 1709 | "php": ">=7.4.0" 1710 | }, 1711 | "type": "library", 1712 | "extra": { 1713 | "branch-alias": { 1714 | "dev-master": "2.0.x-dev" 1715 | } 1716 | }, 1717 | "autoload": { 1718 | "psr-4": { 1719 | "Psr\\Container\\": "src/" 1720 | } 1721 | }, 1722 | "notification-url": "https://packagist.org/downloads/", 1723 | "license": [ 1724 | "MIT" 1725 | ], 1726 | "authors": [ 1727 | { 1728 | "name": "PHP-FIG", 1729 | "homepage": "https://www.php-fig.org/" 1730 | } 1731 | ], 1732 | "description": "Common Container Interface (PHP FIG PSR-11)", 1733 | "homepage": "https://github.com/php-fig/container", 1734 | "keywords": [ 1735 | "PSR-11", 1736 | "container", 1737 | "container-interface", 1738 | "container-interop", 1739 | "psr" 1740 | ], 1741 | "support": { 1742 | "issues": "https://github.com/php-fig/container/issues", 1743 | "source": "https://github.com/php-fig/container/tree/2.0.2" 1744 | }, 1745 | "time": "2021-11-05T16:47:00+00:00" 1746 | }, 1747 | { 1748 | "name": "psr/http-client", 1749 | "version": "1.0.1", 1750 | "source": { 1751 | "type": "git", 1752 | "url": "https://github.com/php-fig/http-client.git", 1753 | "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" 1754 | }, 1755 | "dist": { 1756 | "type": "zip", 1757 | "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", 1758 | "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", 1759 | "shasum": "" 1760 | }, 1761 | "require": { 1762 | "php": "^7.0 || ^8.0", 1763 | "psr/http-message": "^1.0" 1764 | }, 1765 | "type": "library", 1766 | "extra": { 1767 | "branch-alias": { 1768 | "dev-master": "1.0.x-dev" 1769 | } 1770 | }, 1771 | "autoload": { 1772 | "psr-4": { 1773 | "Psr\\Http\\Client\\": "src/" 1774 | } 1775 | }, 1776 | "notification-url": "https://packagist.org/downloads/", 1777 | "license": [ 1778 | "MIT" 1779 | ], 1780 | "authors": [ 1781 | { 1782 | "name": "PHP-FIG", 1783 | "homepage": "http://www.php-fig.org/" 1784 | } 1785 | ], 1786 | "description": "Common interface for HTTP clients", 1787 | "homepage": "https://github.com/php-fig/http-client", 1788 | "keywords": [ 1789 | "http", 1790 | "http-client", 1791 | "psr", 1792 | "psr-18" 1793 | ], 1794 | "support": { 1795 | "source": "https://github.com/php-fig/http-client/tree/master" 1796 | }, 1797 | "time": "2020-06-29T06:28:15+00:00" 1798 | }, 1799 | { 1800 | "name": "psr/http-factory", 1801 | "version": "1.0.1", 1802 | "source": { 1803 | "type": "git", 1804 | "url": "https://github.com/php-fig/http-factory.git", 1805 | "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" 1806 | }, 1807 | "dist": { 1808 | "type": "zip", 1809 | "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", 1810 | "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", 1811 | "shasum": "" 1812 | }, 1813 | "require": { 1814 | "php": ">=7.0.0", 1815 | "psr/http-message": "^1.0" 1816 | }, 1817 | "type": "library", 1818 | "extra": { 1819 | "branch-alias": { 1820 | "dev-master": "1.0.x-dev" 1821 | } 1822 | }, 1823 | "autoload": { 1824 | "psr-4": { 1825 | "Psr\\Http\\Message\\": "src/" 1826 | } 1827 | }, 1828 | "notification-url": "https://packagist.org/downloads/", 1829 | "license": [ 1830 | "MIT" 1831 | ], 1832 | "authors": [ 1833 | { 1834 | "name": "PHP-FIG", 1835 | "homepage": "http://www.php-fig.org/" 1836 | } 1837 | ], 1838 | "description": "Common interfaces for PSR-7 HTTP message factories", 1839 | "keywords": [ 1840 | "factory", 1841 | "http", 1842 | "message", 1843 | "psr", 1844 | "psr-17", 1845 | "psr-7", 1846 | "request", 1847 | "response" 1848 | ], 1849 | "support": { 1850 | "source": "https://github.com/php-fig/http-factory/tree/master" 1851 | }, 1852 | "time": "2019-04-30T12:38:16+00:00" 1853 | }, 1854 | { 1855 | "name": "psr/http-message", 1856 | "version": "1.0.1", 1857 | "source": { 1858 | "type": "git", 1859 | "url": "https://github.com/php-fig/http-message.git", 1860 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" 1861 | }, 1862 | "dist": { 1863 | "type": "zip", 1864 | "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", 1865 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", 1866 | "shasum": "" 1867 | }, 1868 | "require": { 1869 | "php": ">=5.3.0" 1870 | }, 1871 | "type": "library", 1872 | "extra": { 1873 | "branch-alias": { 1874 | "dev-master": "1.0.x-dev" 1875 | } 1876 | }, 1877 | "autoload": { 1878 | "psr-4": { 1879 | "Psr\\Http\\Message\\": "src/" 1880 | } 1881 | }, 1882 | "notification-url": "https://packagist.org/downloads/", 1883 | "license": [ 1884 | "MIT" 1885 | ], 1886 | "authors": [ 1887 | { 1888 | "name": "PHP-FIG", 1889 | "homepage": "http://www.php-fig.org/" 1890 | } 1891 | ], 1892 | "description": "Common interface for HTTP messages", 1893 | "homepage": "https://github.com/php-fig/http-message", 1894 | "keywords": [ 1895 | "http", 1896 | "http-message", 1897 | "psr", 1898 | "psr-7", 1899 | "request", 1900 | "response" 1901 | ], 1902 | "support": { 1903 | "source": "https://github.com/php-fig/http-message/tree/master" 1904 | }, 1905 | "time": "2016-08-06T14:39:51+00:00" 1906 | }, 1907 | { 1908 | "name": "ralouphie/getallheaders", 1909 | "version": "3.0.3", 1910 | "source": { 1911 | "type": "git", 1912 | "url": "https://github.com/ralouphie/getallheaders.git", 1913 | "reference": "120b605dfeb996808c31b6477290a714d356e822" 1914 | }, 1915 | "dist": { 1916 | "type": "zip", 1917 | "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", 1918 | "reference": "120b605dfeb996808c31b6477290a714d356e822", 1919 | "shasum": "" 1920 | }, 1921 | "require": { 1922 | "php": ">=5.6" 1923 | }, 1924 | "require-dev": { 1925 | "php-coveralls/php-coveralls": "^2.1", 1926 | "phpunit/phpunit": "^5 || ^6.5" 1927 | }, 1928 | "type": "library", 1929 | "autoload": { 1930 | "files": [ 1931 | "src/getallheaders.php" 1932 | ] 1933 | }, 1934 | "notification-url": "https://packagist.org/downloads/", 1935 | "license": [ 1936 | "MIT" 1937 | ], 1938 | "authors": [ 1939 | { 1940 | "name": "Ralph Khattar", 1941 | "email": "ralph.khattar@gmail.com" 1942 | } 1943 | ], 1944 | "description": "A polyfill for getallheaders.", 1945 | "support": { 1946 | "issues": "https://github.com/ralouphie/getallheaders/issues", 1947 | "source": "https://github.com/ralouphie/getallheaders/tree/develop" 1948 | }, 1949 | "time": "2019-03-08T08:55:37+00:00" 1950 | }, 1951 | { 1952 | "name": "sebastian/cli-parser", 1953 | "version": "1.0.1", 1954 | "source": { 1955 | "type": "git", 1956 | "url": "https://github.com/sebastianbergmann/cli-parser.git", 1957 | "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" 1958 | }, 1959 | "dist": { 1960 | "type": "zip", 1961 | "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", 1962 | "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", 1963 | "shasum": "" 1964 | }, 1965 | "require": { 1966 | "php": ">=7.3" 1967 | }, 1968 | "require-dev": { 1969 | "phpunit/phpunit": "^9.3" 1970 | }, 1971 | "type": "library", 1972 | "extra": { 1973 | "branch-alias": { 1974 | "dev-master": "1.0-dev" 1975 | } 1976 | }, 1977 | "autoload": { 1978 | "classmap": [ 1979 | "src/" 1980 | ] 1981 | }, 1982 | "notification-url": "https://packagist.org/downloads/", 1983 | "license": [ 1984 | "BSD-3-Clause" 1985 | ], 1986 | "authors": [ 1987 | { 1988 | "name": "Sebastian Bergmann", 1989 | "email": "sebastian@phpunit.de", 1990 | "role": "lead" 1991 | } 1992 | ], 1993 | "description": "Library for parsing CLI options", 1994 | "homepage": "https://github.com/sebastianbergmann/cli-parser", 1995 | "support": { 1996 | "issues": "https://github.com/sebastianbergmann/cli-parser/issues", 1997 | "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" 1998 | }, 1999 | "funding": [ 2000 | { 2001 | "url": "https://github.com/sebastianbergmann", 2002 | "type": "github" 2003 | } 2004 | ], 2005 | "time": "2020-09-28T06:08:49+00:00" 2006 | }, 2007 | { 2008 | "name": "sebastian/code-unit", 2009 | "version": "1.0.8", 2010 | "source": { 2011 | "type": "git", 2012 | "url": "https://github.com/sebastianbergmann/code-unit.git", 2013 | "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" 2014 | }, 2015 | "dist": { 2016 | "type": "zip", 2017 | "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", 2018 | "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", 2019 | "shasum": "" 2020 | }, 2021 | "require": { 2022 | "php": ">=7.3" 2023 | }, 2024 | "require-dev": { 2025 | "phpunit/phpunit": "^9.3" 2026 | }, 2027 | "type": "library", 2028 | "extra": { 2029 | "branch-alias": { 2030 | "dev-master": "1.0-dev" 2031 | } 2032 | }, 2033 | "autoload": { 2034 | "classmap": [ 2035 | "src/" 2036 | ] 2037 | }, 2038 | "notification-url": "https://packagist.org/downloads/", 2039 | "license": [ 2040 | "BSD-3-Clause" 2041 | ], 2042 | "authors": [ 2043 | { 2044 | "name": "Sebastian Bergmann", 2045 | "email": "sebastian@phpunit.de", 2046 | "role": "lead" 2047 | } 2048 | ], 2049 | "description": "Collection of value objects that represent the PHP code units", 2050 | "homepage": "https://github.com/sebastianbergmann/code-unit", 2051 | "support": { 2052 | "issues": "https://github.com/sebastianbergmann/code-unit/issues", 2053 | "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" 2054 | }, 2055 | "funding": [ 2056 | { 2057 | "url": "https://github.com/sebastianbergmann", 2058 | "type": "github" 2059 | } 2060 | ], 2061 | "time": "2020-10-26T13:08:54+00:00" 2062 | }, 2063 | { 2064 | "name": "sebastian/code-unit-reverse-lookup", 2065 | "version": "2.0.3", 2066 | "source": { 2067 | "type": "git", 2068 | "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", 2069 | "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" 2070 | }, 2071 | "dist": { 2072 | "type": "zip", 2073 | "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", 2074 | "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", 2075 | "shasum": "" 2076 | }, 2077 | "require": { 2078 | "php": ">=7.3" 2079 | }, 2080 | "require-dev": { 2081 | "phpunit/phpunit": "^9.3" 2082 | }, 2083 | "type": "library", 2084 | "extra": { 2085 | "branch-alias": { 2086 | "dev-master": "2.0-dev" 2087 | } 2088 | }, 2089 | "autoload": { 2090 | "classmap": [ 2091 | "src/" 2092 | ] 2093 | }, 2094 | "notification-url": "https://packagist.org/downloads/", 2095 | "license": [ 2096 | "BSD-3-Clause" 2097 | ], 2098 | "authors": [ 2099 | { 2100 | "name": "Sebastian Bergmann", 2101 | "email": "sebastian@phpunit.de" 2102 | } 2103 | ], 2104 | "description": "Looks up which function or method a line of code belongs to", 2105 | "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", 2106 | "support": { 2107 | "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", 2108 | "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" 2109 | }, 2110 | "funding": [ 2111 | { 2112 | "url": "https://github.com/sebastianbergmann", 2113 | "type": "github" 2114 | } 2115 | ], 2116 | "time": "2020-09-28T05:30:19+00:00" 2117 | }, 2118 | { 2119 | "name": "sebastian/comparator", 2120 | "version": "4.0.6", 2121 | "source": { 2122 | "type": "git", 2123 | "url": "https://github.com/sebastianbergmann/comparator.git", 2124 | "reference": "55f4261989e546dc112258c7a75935a81a7ce382" 2125 | }, 2126 | "dist": { 2127 | "type": "zip", 2128 | "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", 2129 | "reference": "55f4261989e546dc112258c7a75935a81a7ce382", 2130 | "shasum": "" 2131 | }, 2132 | "require": { 2133 | "php": ">=7.3", 2134 | "sebastian/diff": "^4.0", 2135 | "sebastian/exporter": "^4.0" 2136 | }, 2137 | "require-dev": { 2138 | "phpunit/phpunit": "^9.3" 2139 | }, 2140 | "type": "library", 2141 | "extra": { 2142 | "branch-alias": { 2143 | "dev-master": "4.0-dev" 2144 | } 2145 | }, 2146 | "autoload": { 2147 | "classmap": [ 2148 | "src/" 2149 | ] 2150 | }, 2151 | "notification-url": "https://packagist.org/downloads/", 2152 | "license": [ 2153 | "BSD-3-Clause" 2154 | ], 2155 | "authors": [ 2156 | { 2157 | "name": "Sebastian Bergmann", 2158 | "email": "sebastian@phpunit.de" 2159 | }, 2160 | { 2161 | "name": "Jeff Welch", 2162 | "email": "whatthejeff@gmail.com" 2163 | }, 2164 | { 2165 | "name": "Volker Dusch", 2166 | "email": "github@wallbash.com" 2167 | }, 2168 | { 2169 | "name": "Bernhard Schussek", 2170 | "email": "bschussek@2bepublished.at" 2171 | } 2172 | ], 2173 | "description": "Provides the functionality to compare PHP values for equality", 2174 | "homepage": "https://github.com/sebastianbergmann/comparator", 2175 | "keywords": [ 2176 | "comparator", 2177 | "compare", 2178 | "equality" 2179 | ], 2180 | "support": { 2181 | "issues": "https://github.com/sebastianbergmann/comparator/issues", 2182 | "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" 2183 | }, 2184 | "funding": [ 2185 | { 2186 | "url": "https://github.com/sebastianbergmann", 2187 | "type": "github" 2188 | } 2189 | ], 2190 | "time": "2020-10-26T15:49:45+00:00" 2191 | }, 2192 | { 2193 | "name": "sebastian/complexity", 2194 | "version": "2.0.2", 2195 | "source": { 2196 | "type": "git", 2197 | "url": "https://github.com/sebastianbergmann/complexity.git", 2198 | "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" 2199 | }, 2200 | "dist": { 2201 | "type": "zip", 2202 | "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", 2203 | "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", 2204 | "shasum": "" 2205 | }, 2206 | "require": { 2207 | "nikic/php-parser": "^4.7", 2208 | "php": ">=7.3" 2209 | }, 2210 | "require-dev": { 2211 | "phpunit/phpunit": "^9.3" 2212 | }, 2213 | "type": "library", 2214 | "extra": { 2215 | "branch-alias": { 2216 | "dev-master": "2.0-dev" 2217 | } 2218 | }, 2219 | "autoload": { 2220 | "classmap": [ 2221 | "src/" 2222 | ] 2223 | }, 2224 | "notification-url": "https://packagist.org/downloads/", 2225 | "license": [ 2226 | "BSD-3-Clause" 2227 | ], 2228 | "authors": [ 2229 | { 2230 | "name": "Sebastian Bergmann", 2231 | "email": "sebastian@phpunit.de", 2232 | "role": "lead" 2233 | } 2234 | ], 2235 | "description": "Library for calculating the complexity of PHP code units", 2236 | "homepage": "https://github.com/sebastianbergmann/complexity", 2237 | "support": { 2238 | "issues": "https://github.com/sebastianbergmann/complexity/issues", 2239 | "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" 2240 | }, 2241 | "funding": [ 2242 | { 2243 | "url": "https://github.com/sebastianbergmann", 2244 | "type": "github" 2245 | } 2246 | ], 2247 | "time": "2020-10-26T15:52:27+00:00" 2248 | }, 2249 | { 2250 | "name": "sebastian/diff", 2251 | "version": "4.0.4", 2252 | "source": { 2253 | "type": "git", 2254 | "url": "https://github.com/sebastianbergmann/diff.git", 2255 | "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" 2256 | }, 2257 | "dist": { 2258 | "type": "zip", 2259 | "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", 2260 | "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", 2261 | "shasum": "" 2262 | }, 2263 | "require": { 2264 | "php": ">=7.3" 2265 | }, 2266 | "require-dev": { 2267 | "phpunit/phpunit": "^9.3", 2268 | "symfony/process": "^4.2 || ^5" 2269 | }, 2270 | "type": "library", 2271 | "extra": { 2272 | "branch-alias": { 2273 | "dev-master": "4.0-dev" 2274 | } 2275 | }, 2276 | "autoload": { 2277 | "classmap": [ 2278 | "src/" 2279 | ] 2280 | }, 2281 | "notification-url": "https://packagist.org/downloads/", 2282 | "license": [ 2283 | "BSD-3-Clause" 2284 | ], 2285 | "authors": [ 2286 | { 2287 | "name": "Sebastian Bergmann", 2288 | "email": "sebastian@phpunit.de" 2289 | }, 2290 | { 2291 | "name": "Kore Nordmann", 2292 | "email": "mail@kore-nordmann.de" 2293 | } 2294 | ], 2295 | "description": "Diff implementation", 2296 | "homepage": "https://github.com/sebastianbergmann/diff", 2297 | "keywords": [ 2298 | "diff", 2299 | "udiff", 2300 | "unidiff", 2301 | "unified diff" 2302 | ], 2303 | "support": { 2304 | "issues": "https://github.com/sebastianbergmann/diff/issues", 2305 | "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" 2306 | }, 2307 | "funding": [ 2308 | { 2309 | "url": "https://github.com/sebastianbergmann", 2310 | "type": "github" 2311 | } 2312 | ], 2313 | "time": "2020-10-26T13:10:38+00:00" 2314 | }, 2315 | { 2316 | "name": "sebastian/environment", 2317 | "version": "5.1.4", 2318 | "source": { 2319 | "type": "git", 2320 | "url": "https://github.com/sebastianbergmann/environment.git", 2321 | "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7" 2322 | }, 2323 | "dist": { 2324 | "type": "zip", 2325 | "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/1b5dff7bb151a4db11d49d90e5408e4e938270f7", 2326 | "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7", 2327 | "shasum": "" 2328 | }, 2329 | "require": { 2330 | "php": ">=7.3" 2331 | }, 2332 | "require-dev": { 2333 | "phpunit/phpunit": "^9.3" 2334 | }, 2335 | "suggest": { 2336 | "ext-posix": "*" 2337 | }, 2338 | "type": "library", 2339 | "extra": { 2340 | "branch-alias": { 2341 | "dev-master": "5.1-dev" 2342 | } 2343 | }, 2344 | "autoload": { 2345 | "classmap": [ 2346 | "src/" 2347 | ] 2348 | }, 2349 | "notification-url": "https://packagist.org/downloads/", 2350 | "license": [ 2351 | "BSD-3-Clause" 2352 | ], 2353 | "authors": [ 2354 | { 2355 | "name": "Sebastian Bergmann", 2356 | "email": "sebastian@phpunit.de" 2357 | } 2358 | ], 2359 | "description": "Provides functionality to handle HHVM/PHP environments", 2360 | "homepage": "http://www.github.com/sebastianbergmann/environment", 2361 | "keywords": [ 2362 | "Xdebug", 2363 | "environment", 2364 | "hhvm" 2365 | ], 2366 | "support": { 2367 | "issues": "https://github.com/sebastianbergmann/environment/issues", 2368 | "source": "https://github.com/sebastianbergmann/environment/tree/5.1.4" 2369 | }, 2370 | "funding": [ 2371 | { 2372 | "url": "https://github.com/sebastianbergmann", 2373 | "type": "github" 2374 | } 2375 | ], 2376 | "time": "2022-04-03T09:37:03+00:00" 2377 | }, 2378 | { 2379 | "name": "sebastian/exporter", 2380 | "version": "4.0.4", 2381 | "source": { 2382 | "type": "git", 2383 | "url": "https://github.com/sebastianbergmann/exporter.git", 2384 | "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" 2385 | }, 2386 | "dist": { 2387 | "type": "zip", 2388 | "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", 2389 | "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", 2390 | "shasum": "" 2391 | }, 2392 | "require": { 2393 | "php": ">=7.3", 2394 | "sebastian/recursion-context": "^4.0" 2395 | }, 2396 | "require-dev": { 2397 | "ext-mbstring": "*", 2398 | "phpunit/phpunit": "^9.3" 2399 | }, 2400 | "type": "library", 2401 | "extra": { 2402 | "branch-alias": { 2403 | "dev-master": "4.0-dev" 2404 | } 2405 | }, 2406 | "autoload": { 2407 | "classmap": [ 2408 | "src/" 2409 | ] 2410 | }, 2411 | "notification-url": "https://packagist.org/downloads/", 2412 | "license": [ 2413 | "BSD-3-Clause" 2414 | ], 2415 | "authors": [ 2416 | { 2417 | "name": "Sebastian Bergmann", 2418 | "email": "sebastian@phpunit.de" 2419 | }, 2420 | { 2421 | "name": "Jeff Welch", 2422 | "email": "whatthejeff@gmail.com" 2423 | }, 2424 | { 2425 | "name": "Volker Dusch", 2426 | "email": "github@wallbash.com" 2427 | }, 2428 | { 2429 | "name": "Adam Harvey", 2430 | "email": "aharvey@php.net" 2431 | }, 2432 | { 2433 | "name": "Bernhard Schussek", 2434 | "email": "bschussek@gmail.com" 2435 | } 2436 | ], 2437 | "description": "Provides the functionality to export PHP variables for visualization", 2438 | "homepage": "https://www.github.com/sebastianbergmann/exporter", 2439 | "keywords": [ 2440 | "export", 2441 | "exporter" 2442 | ], 2443 | "support": { 2444 | "issues": "https://github.com/sebastianbergmann/exporter/issues", 2445 | "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" 2446 | }, 2447 | "funding": [ 2448 | { 2449 | "url": "https://github.com/sebastianbergmann", 2450 | "type": "github" 2451 | } 2452 | ], 2453 | "time": "2021-11-11T14:18:36+00:00" 2454 | }, 2455 | { 2456 | "name": "sebastian/global-state", 2457 | "version": "5.0.5", 2458 | "source": { 2459 | "type": "git", 2460 | "url": "https://github.com/sebastianbergmann/global-state.git", 2461 | "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2" 2462 | }, 2463 | "dist": { 2464 | "type": "zip", 2465 | "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2", 2466 | "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2", 2467 | "shasum": "" 2468 | }, 2469 | "require": { 2470 | "php": ">=7.3", 2471 | "sebastian/object-reflector": "^2.0", 2472 | "sebastian/recursion-context": "^4.0" 2473 | }, 2474 | "require-dev": { 2475 | "ext-dom": "*", 2476 | "phpunit/phpunit": "^9.3" 2477 | }, 2478 | "suggest": { 2479 | "ext-uopz": "*" 2480 | }, 2481 | "type": "library", 2482 | "extra": { 2483 | "branch-alias": { 2484 | "dev-master": "5.0-dev" 2485 | } 2486 | }, 2487 | "autoload": { 2488 | "classmap": [ 2489 | "src/" 2490 | ] 2491 | }, 2492 | "notification-url": "https://packagist.org/downloads/", 2493 | "license": [ 2494 | "BSD-3-Clause" 2495 | ], 2496 | "authors": [ 2497 | { 2498 | "name": "Sebastian Bergmann", 2499 | "email": "sebastian@phpunit.de" 2500 | } 2501 | ], 2502 | "description": "Snapshotting of global state", 2503 | "homepage": "http://www.github.com/sebastianbergmann/global-state", 2504 | "keywords": [ 2505 | "global state" 2506 | ], 2507 | "support": { 2508 | "issues": "https://github.com/sebastianbergmann/global-state/issues", 2509 | "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5" 2510 | }, 2511 | "funding": [ 2512 | { 2513 | "url": "https://github.com/sebastianbergmann", 2514 | "type": "github" 2515 | } 2516 | ], 2517 | "time": "2022-02-14T08:28:10+00:00" 2518 | }, 2519 | { 2520 | "name": "sebastian/lines-of-code", 2521 | "version": "1.0.3", 2522 | "source": { 2523 | "type": "git", 2524 | "url": "https://github.com/sebastianbergmann/lines-of-code.git", 2525 | "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" 2526 | }, 2527 | "dist": { 2528 | "type": "zip", 2529 | "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", 2530 | "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", 2531 | "shasum": "" 2532 | }, 2533 | "require": { 2534 | "nikic/php-parser": "^4.6", 2535 | "php": ">=7.3" 2536 | }, 2537 | "require-dev": { 2538 | "phpunit/phpunit": "^9.3" 2539 | }, 2540 | "type": "library", 2541 | "extra": { 2542 | "branch-alias": { 2543 | "dev-master": "1.0-dev" 2544 | } 2545 | }, 2546 | "autoload": { 2547 | "classmap": [ 2548 | "src/" 2549 | ] 2550 | }, 2551 | "notification-url": "https://packagist.org/downloads/", 2552 | "license": [ 2553 | "BSD-3-Clause" 2554 | ], 2555 | "authors": [ 2556 | { 2557 | "name": "Sebastian Bergmann", 2558 | "email": "sebastian@phpunit.de", 2559 | "role": "lead" 2560 | } 2561 | ], 2562 | "description": "Library for counting the lines of code in PHP source code", 2563 | "homepage": "https://github.com/sebastianbergmann/lines-of-code", 2564 | "support": { 2565 | "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", 2566 | "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" 2567 | }, 2568 | "funding": [ 2569 | { 2570 | "url": "https://github.com/sebastianbergmann", 2571 | "type": "github" 2572 | } 2573 | ], 2574 | "time": "2020-11-28T06:42:11+00:00" 2575 | }, 2576 | { 2577 | "name": "sebastian/object-enumerator", 2578 | "version": "4.0.4", 2579 | "source": { 2580 | "type": "git", 2581 | "url": "https://github.com/sebastianbergmann/object-enumerator.git", 2582 | "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" 2583 | }, 2584 | "dist": { 2585 | "type": "zip", 2586 | "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", 2587 | "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", 2588 | "shasum": "" 2589 | }, 2590 | "require": { 2591 | "php": ">=7.3", 2592 | "sebastian/object-reflector": "^2.0", 2593 | "sebastian/recursion-context": "^4.0" 2594 | }, 2595 | "require-dev": { 2596 | "phpunit/phpunit": "^9.3" 2597 | }, 2598 | "type": "library", 2599 | "extra": { 2600 | "branch-alias": { 2601 | "dev-master": "4.0-dev" 2602 | } 2603 | }, 2604 | "autoload": { 2605 | "classmap": [ 2606 | "src/" 2607 | ] 2608 | }, 2609 | "notification-url": "https://packagist.org/downloads/", 2610 | "license": [ 2611 | "BSD-3-Clause" 2612 | ], 2613 | "authors": [ 2614 | { 2615 | "name": "Sebastian Bergmann", 2616 | "email": "sebastian@phpunit.de" 2617 | } 2618 | ], 2619 | "description": "Traverses array structures and object graphs to enumerate all referenced objects", 2620 | "homepage": "https://github.com/sebastianbergmann/object-enumerator/", 2621 | "support": { 2622 | "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", 2623 | "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" 2624 | }, 2625 | "funding": [ 2626 | { 2627 | "url": "https://github.com/sebastianbergmann", 2628 | "type": "github" 2629 | } 2630 | ], 2631 | "time": "2020-10-26T13:12:34+00:00" 2632 | }, 2633 | { 2634 | "name": "sebastian/object-reflector", 2635 | "version": "2.0.4", 2636 | "source": { 2637 | "type": "git", 2638 | "url": "https://github.com/sebastianbergmann/object-reflector.git", 2639 | "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" 2640 | }, 2641 | "dist": { 2642 | "type": "zip", 2643 | "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", 2644 | "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", 2645 | "shasum": "" 2646 | }, 2647 | "require": { 2648 | "php": ">=7.3" 2649 | }, 2650 | "require-dev": { 2651 | "phpunit/phpunit": "^9.3" 2652 | }, 2653 | "type": "library", 2654 | "extra": { 2655 | "branch-alias": { 2656 | "dev-master": "2.0-dev" 2657 | } 2658 | }, 2659 | "autoload": { 2660 | "classmap": [ 2661 | "src/" 2662 | ] 2663 | }, 2664 | "notification-url": "https://packagist.org/downloads/", 2665 | "license": [ 2666 | "BSD-3-Clause" 2667 | ], 2668 | "authors": [ 2669 | { 2670 | "name": "Sebastian Bergmann", 2671 | "email": "sebastian@phpunit.de" 2672 | } 2673 | ], 2674 | "description": "Allows reflection of object attributes, including inherited and non-public ones", 2675 | "homepage": "https://github.com/sebastianbergmann/object-reflector/", 2676 | "support": { 2677 | "issues": "https://github.com/sebastianbergmann/object-reflector/issues", 2678 | "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" 2679 | }, 2680 | "funding": [ 2681 | { 2682 | "url": "https://github.com/sebastianbergmann", 2683 | "type": "github" 2684 | } 2685 | ], 2686 | "time": "2020-10-26T13:14:26+00:00" 2687 | }, 2688 | { 2689 | "name": "sebastian/recursion-context", 2690 | "version": "4.0.4", 2691 | "source": { 2692 | "type": "git", 2693 | "url": "https://github.com/sebastianbergmann/recursion-context.git", 2694 | "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" 2695 | }, 2696 | "dist": { 2697 | "type": "zip", 2698 | "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", 2699 | "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", 2700 | "shasum": "" 2701 | }, 2702 | "require": { 2703 | "php": ">=7.3" 2704 | }, 2705 | "require-dev": { 2706 | "phpunit/phpunit": "^9.3" 2707 | }, 2708 | "type": "library", 2709 | "extra": { 2710 | "branch-alias": { 2711 | "dev-master": "4.0-dev" 2712 | } 2713 | }, 2714 | "autoload": { 2715 | "classmap": [ 2716 | "src/" 2717 | ] 2718 | }, 2719 | "notification-url": "https://packagist.org/downloads/", 2720 | "license": [ 2721 | "BSD-3-Clause" 2722 | ], 2723 | "authors": [ 2724 | { 2725 | "name": "Sebastian Bergmann", 2726 | "email": "sebastian@phpunit.de" 2727 | }, 2728 | { 2729 | "name": "Jeff Welch", 2730 | "email": "whatthejeff@gmail.com" 2731 | }, 2732 | { 2733 | "name": "Adam Harvey", 2734 | "email": "aharvey@php.net" 2735 | } 2736 | ], 2737 | "description": "Provides functionality to recursively process PHP variables", 2738 | "homepage": "http://www.github.com/sebastianbergmann/recursion-context", 2739 | "support": { 2740 | "issues": "https://github.com/sebastianbergmann/recursion-context/issues", 2741 | "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" 2742 | }, 2743 | "funding": [ 2744 | { 2745 | "url": "https://github.com/sebastianbergmann", 2746 | "type": "github" 2747 | } 2748 | ], 2749 | "time": "2020-10-26T13:17:30+00:00" 2750 | }, 2751 | { 2752 | "name": "sebastian/resource-operations", 2753 | "version": "3.0.3", 2754 | "source": { 2755 | "type": "git", 2756 | "url": "https://github.com/sebastianbergmann/resource-operations.git", 2757 | "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" 2758 | }, 2759 | "dist": { 2760 | "type": "zip", 2761 | "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", 2762 | "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", 2763 | "shasum": "" 2764 | }, 2765 | "require": { 2766 | "php": ">=7.3" 2767 | }, 2768 | "require-dev": { 2769 | "phpunit/phpunit": "^9.0" 2770 | }, 2771 | "type": "library", 2772 | "extra": { 2773 | "branch-alias": { 2774 | "dev-master": "3.0-dev" 2775 | } 2776 | }, 2777 | "autoload": { 2778 | "classmap": [ 2779 | "src/" 2780 | ] 2781 | }, 2782 | "notification-url": "https://packagist.org/downloads/", 2783 | "license": [ 2784 | "BSD-3-Clause" 2785 | ], 2786 | "authors": [ 2787 | { 2788 | "name": "Sebastian Bergmann", 2789 | "email": "sebastian@phpunit.de" 2790 | } 2791 | ], 2792 | "description": "Provides a list of PHP built-in functions that operate on resources", 2793 | "homepage": "https://www.github.com/sebastianbergmann/resource-operations", 2794 | "support": { 2795 | "issues": "https://github.com/sebastianbergmann/resource-operations/issues", 2796 | "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" 2797 | }, 2798 | "funding": [ 2799 | { 2800 | "url": "https://github.com/sebastianbergmann", 2801 | "type": "github" 2802 | } 2803 | ], 2804 | "time": "2020-09-28T06:45:17+00:00" 2805 | }, 2806 | { 2807 | "name": "sebastian/type", 2808 | "version": "3.0.0", 2809 | "source": { 2810 | "type": "git", 2811 | "url": "https://github.com/sebastianbergmann/type.git", 2812 | "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad" 2813 | }, 2814 | "dist": { 2815 | "type": "zip", 2816 | "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b233b84bc4465aff7b57cf1c4bc75c86d00d6dad", 2817 | "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad", 2818 | "shasum": "" 2819 | }, 2820 | "require": { 2821 | "php": ">=7.3" 2822 | }, 2823 | "require-dev": { 2824 | "phpunit/phpunit": "^9.5" 2825 | }, 2826 | "type": "library", 2827 | "extra": { 2828 | "branch-alias": { 2829 | "dev-master": "3.0-dev" 2830 | } 2831 | }, 2832 | "autoload": { 2833 | "classmap": [ 2834 | "src/" 2835 | ] 2836 | }, 2837 | "notification-url": "https://packagist.org/downloads/", 2838 | "license": [ 2839 | "BSD-3-Clause" 2840 | ], 2841 | "authors": [ 2842 | { 2843 | "name": "Sebastian Bergmann", 2844 | "email": "sebastian@phpunit.de", 2845 | "role": "lead" 2846 | } 2847 | ], 2848 | "description": "Collection of value objects that represent the types of the PHP type system", 2849 | "homepage": "https://github.com/sebastianbergmann/type", 2850 | "support": { 2851 | "issues": "https://github.com/sebastianbergmann/type/issues", 2852 | "source": "https://github.com/sebastianbergmann/type/tree/3.0.0" 2853 | }, 2854 | "funding": [ 2855 | { 2856 | "url": "https://github.com/sebastianbergmann", 2857 | "type": "github" 2858 | } 2859 | ], 2860 | "time": "2022-03-15T09:54:48+00:00" 2861 | }, 2862 | { 2863 | "name": "sebastian/version", 2864 | "version": "3.0.2", 2865 | "source": { 2866 | "type": "git", 2867 | "url": "https://github.com/sebastianbergmann/version.git", 2868 | "reference": "c6c1022351a901512170118436c764e473f6de8c" 2869 | }, 2870 | "dist": { 2871 | "type": "zip", 2872 | "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", 2873 | "reference": "c6c1022351a901512170118436c764e473f6de8c", 2874 | "shasum": "" 2875 | }, 2876 | "require": { 2877 | "php": ">=7.3" 2878 | }, 2879 | "type": "library", 2880 | "extra": { 2881 | "branch-alias": { 2882 | "dev-master": "3.0-dev" 2883 | } 2884 | }, 2885 | "autoload": { 2886 | "classmap": [ 2887 | "src/" 2888 | ] 2889 | }, 2890 | "notification-url": "https://packagist.org/downloads/", 2891 | "license": [ 2892 | "BSD-3-Clause" 2893 | ], 2894 | "authors": [ 2895 | { 2896 | "name": "Sebastian Bergmann", 2897 | "email": "sebastian@phpunit.de", 2898 | "role": "lead" 2899 | } 2900 | ], 2901 | "description": "Library that helps with managing the version number of Git-hosted PHP projects", 2902 | "homepage": "https://github.com/sebastianbergmann/version", 2903 | "support": { 2904 | "issues": "https://github.com/sebastianbergmann/version/issues", 2905 | "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" 2906 | }, 2907 | "funding": [ 2908 | { 2909 | "url": "https://github.com/sebastianbergmann", 2910 | "type": "github" 2911 | } 2912 | ], 2913 | "time": "2020-09-28T06:39:44+00:00" 2914 | }, 2915 | { 2916 | "name": "squizlabs/php_codesniffer", 2917 | "version": "3.6.2", 2918 | "source": { 2919 | "type": "git", 2920 | "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", 2921 | "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" 2922 | }, 2923 | "dist": { 2924 | "type": "zip", 2925 | "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", 2926 | "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", 2927 | "shasum": "" 2928 | }, 2929 | "require": { 2930 | "ext-simplexml": "*", 2931 | "ext-tokenizer": "*", 2932 | "ext-xmlwriter": "*", 2933 | "php": ">=5.4.0" 2934 | }, 2935 | "require-dev": { 2936 | "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" 2937 | }, 2938 | "bin": [ 2939 | "bin/phpcs", 2940 | "bin/phpcbf" 2941 | ], 2942 | "type": "library", 2943 | "extra": { 2944 | "branch-alias": { 2945 | "dev-master": "3.x-dev" 2946 | } 2947 | }, 2948 | "notification-url": "https://packagist.org/downloads/", 2949 | "license": [ 2950 | "BSD-3-Clause" 2951 | ], 2952 | "authors": [ 2953 | { 2954 | "name": "Greg Sherwood", 2955 | "role": "lead" 2956 | } 2957 | ], 2958 | "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", 2959 | "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", 2960 | "keywords": [ 2961 | "phpcs", 2962 | "standards" 2963 | ], 2964 | "support": { 2965 | "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", 2966 | "source": "https://github.com/squizlabs/PHP_CodeSniffer", 2967 | "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" 2968 | }, 2969 | "time": "2021-12-12T21:44:58+00:00" 2970 | }, 2971 | { 2972 | "name": "symfony/config", 2973 | "version": "v6.0.8", 2974 | "source": { 2975 | "type": "git", 2976 | "url": "https://github.com/symfony/config.git", 2977 | "reference": "6ac50d559aa64c8e7b5b17640c46241e4accb487" 2978 | }, 2979 | "dist": { 2980 | "type": "zip", 2981 | "url": "https://api.github.com/repos/symfony/config/zipball/6ac50d559aa64c8e7b5b17640c46241e4accb487", 2982 | "reference": "6ac50d559aa64c8e7b5b17640c46241e4accb487", 2983 | "shasum": "" 2984 | }, 2985 | "require": { 2986 | "php": ">=8.0.2", 2987 | "symfony/deprecation-contracts": "^2.1|^3", 2988 | "symfony/filesystem": "^5.4|^6.0", 2989 | "symfony/polyfill-ctype": "~1.8", 2990 | "symfony/polyfill-php81": "^1.22" 2991 | }, 2992 | "conflict": { 2993 | "symfony/finder": "<4.4" 2994 | }, 2995 | "require-dev": { 2996 | "symfony/event-dispatcher": "^5.4|^6.0", 2997 | "symfony/finder": "^5.4|^6.0", 2998 | "symfony/messenger": "^5.4|^6.0", 2999 | "symfony/service-contracts": "^1.1|^2|^3", 3000 | "symfony/yaml": "^5.4|^6.0" 3001 | }, 3002 | "suggest": { 3003 | "symfony/yaml": "To use the yaml reference dumper" 3004 | }, 3005 | "type": "library", 3006 | "autoload": { 3007 | "psr-4": { 3008 | "Symfony\\Component\\Config\\": "" 3009 | }, 3010 | "exclude-from-classmap": [ 3011 | "/Tests/" 3012 | ] 3013 | }, 3014 | "notification-url": "https://packagist.org/downloads/", 3015 | "license": [ 3016 | "MIT" 3017 | ], 3018 | "authors": [ 3019 | { 3020 | "name": "Fabien Potencier", 3021 | "email": "fabien@symfony.com" 3022 | }, 3023 | { 3024 | "name": "Symfony Community", 3025 | "homepage": "https://symfony.com/contributors" 3026 | } 3027 | ], 3028 | "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", 3029 | "homepage": "https://symfony.com", 3030 | "support": { 3031 | "source": "https://github.com/symfony/config/tree/v6.0.8" 3032 | }, 3033 | "funding": [ 3034 | { 3035 | "url": "https://symfony.com/sponsor", 3036 | "type": "custom" 3037 | }, 3038 | { 3039 | "url": "https://github.com/fabpot", 3040 | "type": "github" 3041 | }, 3042 | { 3043 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3044 | "type": "tidelift" 3045 | } 3046 | ], 3047 | "time": "2022-04-12T16:11:42+00:00" 3048 | }, 3049 | { 3050 | "name": "symfony/console", 3051 | "version": "v6.0.8", 3052 | "source": { 3053 | "type": "git", 3054 | "url": "https://github.com/symfony/console.git", 3055 | "reference": "0d00aa289215353aa8746a31d101f8e60826285c" 3056 | }, 3057 | "dist": { 3058 | "type": "zip", 3059 | "url": "https://api.github.com/repos/symfony/console/zipball/0d00aa289215353aa8746a31d101f8e60826285c", 3060 | "reference": "0d00aa289215353aa8746a31d101f8e60826285c", 3061 | "shasum": "" 3062 | }, 3063 | "require": { 3064 | "php": ">=8.0.2", 3065 | "symfony/polyfill-mbstring": "~1.0", 3066 | "symfony/service-contracts": "^1.1|^2|^3", 3067 | "symfony/string": "^5.4|^6.0" 3068 | }, 3069 | "conflict": { 3070 | "symfony/dependency-injection": "<5.4", 3071 | "symfony/dotenv": "<5.4", 3072 | "symfony/event-dispatcher": "<5.4", 3073 | "symfony/lock": "<5.4", 3074 | "symfony/process": "<5.4" 3075 | }, 3076 | "provide": { 3077 | "psr/log-implementation": "1.0|2.0|3.0" 3078 | }, 3079 | "require-dev": { 3080 | "psr/log": "^1|^2|^3", 3081 | "symfony/config": "^5.4|^6.0", 3082 | "symfony/dependency-injection": "^5.4|^6.0", 3083 | "symfony/event-dispatcher": "^5.4|^6.0", 3084 | "symfony/lock": "^5.4|^6.0", 3085 | "symfony/process": "^5.4|^6.0", 3086 | "symfony/var-dumper": "^5.4|^6.0" 3087 | }, 3088 | "suggest": { 3089 | "psr/log": "For using the console logger", 3090 | "symfony/event-dispatcher": "", 3091 | "symfony/lock": "", 3092 | "symfony/process": "" 3093 | }, 3094 | "type": "library", 3095 | "autoload": { 3096 | "psr-4": { 3097 | "Symfony\\Component\\Console\\": "" 3098 | }, 3099 | "exclude-from-classmap": [ 3100 | "/Tests/" 3101 | ] 3102 | }, 3103 | "notification-url": "https://packagist.org/downloads/", 3104 | "license": [ 3105 | "MIT" 3106 | ], 3107 | "authors": [ 3108 | { 3109 | "name": "Fabien Potencier", 3110 | "email": "fabien@symfony.com" 3111 | }, 3112 | { 3113 | "name": "Symfony Community", 3114 | "homepage": "https://symfony.com/contributors" 3115 | } 3116 | ], 3117 | "description": "Eases the creation of beautiful and testable command line interfaces", 3118 | "homepage": "https://symfony.com", 3119 | "keywords": [ 3120 | "cli", 3121 | "command line", 3122 | "console", 3123 | "terminal" 3124 | ], 3125 | "support": { 3126 | "source": "https://github.com/symfony/console/tree/v6.0.8" 3127 | }, 3128 | "funding": [ 3129 | { 3130 | "url": "https://symfony.com/sponsor", 3131 | "type": "custom" 3132 | }, 3133 | { 3134 | "url": "https://github.com/fabpot", 3135 | "type": "github" 3136 | }, 3137 | { 3138 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3139 | "type": "tidelift" 3140 | } 3141 | ], 3142 | "time": "2022-04-20T15:01:42+00:00" 3143 | }, 3144 | { 3145 | "name": "symfony/deprecation-contracts", 3146 | "version": "v3.0.1", 3147 | "source": { 3148 | "type": "git", 3149 | "url": "https://github.com/symfony/deprecation-contracts.git", 3150 | "reference": "26954b3d62a6c5fd0ea8a2a00c0353a14978d05c" 3151 | }, 3152 | "dist": { 3153 | "type": "zip", 3154 | "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/26954b3d62a6c5fd0ea8a2a00c0353a14978d05c", 3155 | "reference": "26954b3d62a6c5fd0ea8a2a00c0353a14978d05c", 3156 | "shasum": "" 3157 | }, 3158 | "require": { 3159 | "php": ">=8.0.2" 3160 | }, 3161 | "type": "library", 3162 | "extra": { 3163 | "branch-alias": { 3164 | "dev-main": "3.0-dev" 3165 | }, 3166 | "thanks": { 3167 | "name": "symfony/contracts", 3168 | "url": "https://github.com/symfony/contracts" 3169 | } 3170 | }, 3171 | "autoload": { 3172 | "files": [ 3173 | "function.php" 3174 | ] 3175 | }, 3176 | "notification-url": "https://packagist.org/downloads/", 3177 | "license": [ 3178 | "MIT" 3179 | ], 3180 | "authors": [ 3181 | { 3182 | "name": "Nicolas Grekas", 3183 | "email": "p@tchwork.com" 3184 | }, 3185 | { 3186 | "name": "Symfony Community", 3187 | "homepage": "https://symfony.com/contributors" 3188 | } 3189 | ], 3190 | "description": "A generic function and convention to trigger deprecation notices", 3191 | "homepage": "https://symfony.com", 3192 | "support": { 3193 | "source": "https://github.com/symfony/deprecation-contracts/tree/v3.0.1" 3194 | }, 3195 | "funding": [ 3196 | { 3197 | "url": "https://symfony.com/sponsor", 3198 | "type": "custom" 3199 | }, 3200 | { 3201 | "url": "https://github.com/fabpot", 3202 | "type": "github" 3203 | }, 3204 | { 3205 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3206 | "type": "tidelift" 3207 | } 3208 | ], 3209 | "time": "2022-01-02T09:55:41+00:00" 3210 | }, 3211 | { 3212 | "name": "symfony/filesystem", 3213 | "version": "v6.0.7", 3214 | "source": { 3215 | "type": "git", 3216 | "url": "https://github.com/symfony/filesystem.git", 3217 | "reference": "6c9e4c41f2c51dfde3db298594ed9cba55dbf5ff" 3218 | }, 3219 | "dist": { 3220 | "type": "zip", 3221 | "url": "https://api.github.com/repos/symfony/filesystem/zipball/6c9e4c41f2c51dfde3db298594ed9cba55dbf5ff", 3222 | "reference": "6c9e4c41f2c51dfde3db298594ed9cba55dbf5ff", 3223 | "shasum": "" 3224 | }, 3225 | "require": { 3226 | "php": ">=8.0.2", 3227 | "symfony/polyfill-ctype": "~1.8", 3228 | "symfony/polyfill-mbstring": "~1.8" 3229 | }, 3230 | "type": "library", 3231 | "autoload": { 3232 | "psr-4": { 3233 | "Symfony\\Component\\Filesystem\\": "" 3234 | }, 3235 | "exclude-from-classmap": [ 3236 | "/Tests/" 3237 | ] 3238 | }, 3239 | "notification-url": "https://packagist.org/downloads/", 3240 | "license": [ 3241 | "MIT" 3242 | ], 3243 | "authors": [ 3244 | { 3245 | "name": "Fabien Potencier", 3246 | "email": "fabien@symfony.com" 3247 | }, 3248 | { 3249 | "name": "Symfony Community", 3250 | "homepage": "https://symfony.com/contributors" 3251 | } 3252 | ], 3253 | "description": "Provides basic utilities for the filesystem", 3254 | "homepage": "https://symfony.com", 3255 | "support": { 3256 | "source": "https://github.com/symfony/filesystem/tree/v6.0.7" 3257 | }, 3258 | "funding": [ 3259 | { 3260 | "url": "https://symfony.com/sponsor", 3261 | "type": "custom" 3262 | }, 3263 | { 3264 | "url": "https://github.com/fabpot", 3265 | "type": "github" 3266 | }, 3267 | { 3268 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3269 | "type": "tidelift" 3270 | } 3271 | ], 3272 | "time": "2022-04-01T12:54:51+00:00" 3273 | }, 3274 | { 3275 | "name": "symfony/polyfill-intl-grapheme", 3276 | "version": "v1.25.0", 3277 | "source": { 3278 | "type": "git", 3279 | "url": "https://github.com/symfony/polyfill-intl-grapheme.git", 3280 | "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" 3281 | }, 3282 | "dist": { 3283 | "type": "zip", 3284 | "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", 3285 | "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", 3286 | "shasum": "" 3287 | }, 3288 | "require": { 3289 | "php": ">=7.1" 3290 | }, 3291 | "suggest": { 3292 | "ext-intl": "For best performance" 3293 | }, 3294 | "type": "library", 3295 | "extra": { 3296 | "branch-alias": { 3297 | "dev-main": "1.23-dev" 3298 | }, 3299 | "thanks": { 3300 | "name": "symfony/polyfill", 3301 | "url": "https://github.com/symfony/polyfill" 3302 | } 3303 | }, 3304 | "autoload": { 3305 | "files": [ 3306 | "bootstrap.php" 3307 | ], 3308 | "psr-4": { 3309 | "Symfony\\Polyfill\\Intl\\Grapheme\\": "" 3310 | } 3311 | }, 3312 | "notification-url": "https://packagist.org/downloads/", 3313 | "license": [ 3314 | "MIT" 3315 | ], 3316 | "authors": [ 3317 | { 3318 | "name": "Nicolas Grekas", 3319 | "email": "p@tchwork.com" 3320 | }, 3321 | { 3322 | "name": "Symfony Community", 3323 | "homepage": "https://symfony.com/contributors" 3324 | } 3325 | ], 3326 | "description": "Symfony polyfill for intl's grapheme_* functions", 3327 | "homepage": "https://symfony.com", 3328 | "keywords": [ 3329 | "compatibility", 3330 | "grapheme", 3331 | "intl", 3332 | "polyfill", 3333 | "portable", 3334 | "shim" 3335 | ], 3336 | "support": { 3337 | "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.25.0" 3338 | }, 3339 | "funding": [ 3340 | { 3341 | "url": "https://symfony.com/sponsor", 3342 | "type": "custom" 3343 | }, 3344 | { 3345 | "url": "https://github.com/fabpot", 3346 | "type": "github" 3347 | }, 3348 | { 3349 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3350 | "type": "tidelift" 3351 | } 3352 | ], 3353 | "time": "2021-11-23T21:10:46+00:00" 3354 | }, 3355 | { 3356 | "name": "symfony/polyfill-intl-normalizer", 3357 | "version": "v1.25.0", 3358 | "source": { 3359 | "type": "git", 3360 | "url": "https://github.com/symfony/polyfill-intl-normalizer.git", 3361 | "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" 3362 | }, 3363 | "dist": { 3364 | "type": "zip", 3365 | "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", 3366 | "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", 3367 | "shasum": "" 3368 | }, 3369 | "require": { 3370 | "php": ">=7.1" 3371 | }, 3372 | "suggest": { 3373 | "ext-intl": "For best performance" 3374 | }, 3375 | "type": "library", 3376 | "extra": { 3377 | "branch-alias": { 3378 | "dev-main": "1.23-dev" 3379 | }, 3380 | "thanks": { 3381 | "name": "symfony/polyfill", 3382 | "url": "https://github.com/symfony/polyfill" 3383 | } 3384 | }, 3385 | "autoload": { 3386 | "files": [ 3387 | "bootstrap.php" 3388 | ], 3389 | "psr-4": { 3390 | "Symfony\\Polyfill\\Intl\\Normalizer\\": "" 3391 | }, 3392 | "classmap": [ 3393 | "Resources/stubs" 3394 | ] 3395 | }, 3396 | "notification-url": "https://packagist.org/downloads/", 3397 | "license": [ 3398 | "MIT" 3399 | ], 3400 | "authors": [ 3401 | { 3402 | "name": "Nicolas Grekas", 3403 | "email": "p@tchwork.com" 3404 | }, 3405 | { 3406 | "name": "Symfony Community", 3407 | "homepage": "https://symfony.com/contributors" 3408 | } 3409 | ], 3410 | "description": "Symfony polyfill for intl's Normalizer class and related functions", 3411 | "homepage": "https://symfony.com", 3412 | "keywords": [ 3413 | "compatibility", 3414 | "intl", 3415 | "normalizer", 3416 | "polyfill", 3417 | "portable", 3418 | "shim" 3419 | ], 3420 | "support": { 3421 | "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.25.0" 3422 | }, 3423 | "funding": [ 3424 | { 3425 | "url": "https://symfony.com/sponsor", 3426 | "type": "custom" 3427 | }, 3428 | { 3429 | "url": "https://github.com/fabpot", 3430 | "type": "github" 3431 | }, 3432 | { 3433 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3434 | "type": "tidelift" 3435 | } 3436 | ], 3437 | "time": "2021-02-19T12:13:01+00:00" 3438 | }, 3439 | { 3440 | "name": "symfony/polyfill-mbstring", 3441 | "version": "v1.25.0", 3442 | "source": { 3443 | "type": "git", 3444 | "url": "https://github.com/symfony/polyfill-mbstring.git", 3445 | "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" 3446 | }, 3447 | "dist": { 3448 | "type": "zip", 3449 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", 3450 | "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", 3451 | "shasum": "" 3452 | }, 3453 | "require": { 3454 | "php": ">=7.1" 3455 | }, 3456 | "provide": { 3457 | "ext-mbstring": "*" 3458 | }, 3459 | "suggest": { 3460 | "ext-mbstring": "For best performance" 3461 | }, 3462 | "type": "library", 3463 | "extra": { 3464 | "branch-alias": { 3465 | "dev-main": "1.23-dev" 3466 | }, 3467 | "thanks": { 3468 | "name": "symfony/polyfill", 3469 | "url": "https://github.com/symfony/polyfill" 3470 | } 3471 | }, 3472 | "autoload": { 3473 | "files": [ 3474 | "bootstrap.php" 3475 | ], 3476 | "psr-4": { 3477 | "Symfony\\Polyfill\\Mbstring\\": "" 3478 | } 3479 | }, 3480 | "notification-url": "https://packagist.org/downloads/", 3481 | "license": [ 3482 | "MIT" 3483 | ], 3484 | "authors": [ 3485 | { 3486 | "name": "Nicolas Grekas", 3487 | "email": "p@tchwork.com" 3488 | }, 3489 | { 3490 | "name": "Symfony Community", 3491 | "homepage": "https://symfony.com/contributors" 3492 | } 3493 | ], 3494 | "description": "Symfony polyfill for the Mbstring extension", 3495 | "homepage": "https://symfony.com", 3496 | "keywords": [ 3497 | "compatibility", 3498 | "mbstring", 3499 | "polyfill", 3500 | "portable", 3501 | "shim" 3502 | ], 3503 | "support": { 3504 | "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.25.0" 3505 | }, 3506 | "funding": [ 3507 | { 3508 | "url": "https://symfony.com/sponsor", 3509 | "type": "custom" 3510 | }, 3511 | { 3512 | "url": "https://github.com/fabpot", 3513 | "type": "github" 3514 | }, 3515 | { 3516 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3517 | "type": "tidelift" 3518 | } 3519 | ], 3520 | "time": "2021-11-30T18:21:41+00:00" 3521 | }, 3522 | { 3523 | "name": "symfony/polyfill-php81", 3524 | "version": "v1.25.0", 3525 | "source": { 3526 | "type": "git", 3527 | "url": "https://github.com/symfony/polyfill-php81.git", 3528 | "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" 3529 | }, 3530 | "dist": { 3531 | "type": "zip", 3532 | "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", 3533 | "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", 3534 | "shasum": "" 3535 | }, 3536 | "require": { 3537 | "php": ">=7.1" 3538 | }, 3539 | "type": "library", 3540 | "extra": { 3541 | "branch-alias": { 3542 | "dev-main": "1.23-dev" 3543 | }, 3544 | "thanks": { 3545 | "name": "symfony/polyfill", 3546 | "url": "https://github.com/symfony/polyfill" 3547 | } 3548 | }, 3549 | "autoload": { 3550 | "files": [ 3551 | "bootstrap.php" 3552 | ], 3553 | "psr-4": { 3554 | "Symfony\\Polyfill\\Php81\\": "" 3555 | }, 3556 | "classmap": [ 3557 | "Resources/stubs" 3558 | ] 3559 | }, 3560 | "notification-url": "https://packagist.org/downloads/", 3561 | "license": [ 3562 | "MIT" 3563 | ], 3564 | "authors": [ 3565 | { 3566 | "name": "Nicolas Grekas", 3567 | "email": "p@tchwork.com" 3568 | }, 3569 | { 3570 | "name": "Symfony Community", 3571 | "homepage": "https://symfony.com/contributors" 3572 | } 3573 | ], 3574 | "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", 3575 | "homepage": "https://symfony.com", 3576 | "keywords": [ 3577 | "compatibility", 3578 | "polyfill", 3579 | "portable", 3580 | "shim" 3581 | ], 3582 | "support": { 3583 | "source": "https://github.com/symfony/polyfill-php81/tree/v1.25.0" 3584 | }, 3585 | "funding": [ 3586 | { 3587 | "url": "https://symfony.com/sponsor", 3588 | "type": "custom" 3589 | }, 3590 | { 3591 | "url": "https://github.com/fabpot", 3592 | "type": "github" 3593 | }, 3594 | { 3595 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3596 | "type": "tidelift" 3597 | } 3598 | ], 3599 | "time": "2021-09-13T13:58:11+00:00" 3600 | }, 3601 | { 3602 | "name": "symfony/service-contracts", 3603 | "version": "v3.0.1", 3604 | "source": { 3605 | "type": "git", 3606 | "url": "https://github.com/symfony/service-contracts.git", 3607 | "reference": "e517458f278c2131ca9f262f8fbaf01410f2c65c" 3608 | }, 3609 | "dist": { 3610 | "type": "zip", 3611 | "url": "https://api.github.com/repos/symfony/service-contracts/zipball/e517458f278c2131ca9f262f8fbaf01410f2c65c", 3612 | "reference": "e517458f278c2131ca9f262f8fbaf01410f2c65c", 3613 | "shasum": "" 3614 | }, 3615 | "require": { 3616 | "php": ">=8.0.2", 3617 | "psr/container": "^2.0" 3618 | }, 3619 | "conflict": { 3620 | "ext-psr": "<1.1|>=2" 3621 | }, 3622 | "suggest": { 3623 | "symfony/service-implementation": "" 3624 | }, 3625 | "type": "library", 3626 | "extra": { 3627 | "branch-alias": { 3628 | "dev-main": "3.0-dev" 3629 | }, 3630 | "thanks": { 3631 | "name": "symfony/contracts", 3632 | "url": "https://github.com/symfony/contracts" 3633 | } 3634 | }, 3635 | "autoload": { 3636 | "psr-4": { 3637 | "Symfony\\Contracts\\Service\\": "" 3638 | } 3639 | }, 3640 | "notification-url": "https://packagist.org/downloads/", 3641 | "license": [ 3642 | "MIT" 3643 | ], 3644 | "authors": [ 3645 | { 3646 | "name": "Nicolas Grekas", 3647 | "email": "p@tchwork.com" 3648 | }, 3649 | { 3650 | "name": "Symfony Community", 3651 | "homepage": "https://symfony.com/contributors" 3652 | } 3653 | ], 3654 | "description": "Generic abstractions related to writing services", 3655 | "homepage": "https://symfony.com", 3656 | "keywords": [ 3657 | "abstractions", 3658 | "contracts", 3659 | "decoupling", 3660 | "interfaces", 3661 | "interoperability", 3662 | "standards" 3663 | ], 3664 | "support": { 3665 | "source": "https://github.com/symfony/service-contracts/tree/v3.0.1" 3666 | }, 3667 | "funding": [ 3668 | { 3669 | "url": "https://symfony.com/sponsor", 3670 | "type": "custom" 3671 | }, 3672 | { 3673 | "url": "https://github.com/fabpot", 3674 | "type": "github" 3675 | }, 3676 | { 3677 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3678 | "type": "tidelift" 3679 | } 3680 | ], 3681 | "time": "2022-03-13T20:10:05+00:00" 3682 | }, 3683 | { 3684 | "name": "symfony/stopwatch", 3685 | "version": "v6.0.5", 3686 | "source": { 3687 | "type": "git", 3688 | "url": "https://github.com/symfony/stopwatch.git", 3689 | "reference": "f2c1780607ec6502f2121d9729fd8150a655d337" 3690 | }, 3691 | "dist": { 3692 | "type": "zip", 3693 | "url": "https://api.github.com/repos/symfony/stopwatch/zipball/f2c1780607ec6502f2121d9729fd8150a655d337", 3694 | "reference": "f2c1780607ec6502f2121d9729fd8150a655d337", 3695 | "shasum": "" 3696 | }, 3697 | "require": { 3698 | "php": ">=8.0.2", 3699 | "symfony/service-contracts": "^1|^2|^3" 3700 | }, 3701 | "type": "library", 3702 | "autoload": { 3703 | "psr-4": { 3704 | "Symfony\\Component\\Stopwatch\\": "" 3705 | }, 3706 | "exclude-from-classmap": [ 3707 | "/Tests/" 3708 | ] 3709 | }, 3710 | "notification-url": "https://packagist.org/downloads/", 3711 | "license": [ 3712 | "MIT" 3713 | ], 3714 | "authors": [ 3715 | { 3716 | "name": "Fabien Potencier", 3717 | "email": "fabien@symfony.com" 3718 | }, 3719 | { 3720 | "name": "Symfony Community", 3721 | "homepage": "https://symfony.com/contributors" 3722 | } 3723 | ], 3724 | "description": "Provides a way to profile code", 3725 | "homepage": "https://symfony.com", 3726 | "support": { 3727 | "source": "https://github.com/symfony/stopwatch/tree/v6.0.5" 3728 | }, 3729 | "funding": [ 3730 | { 3731 | "url": "https://symfony.com/sponsor", 3732 | "type": "custom" 3733 | }, 3734 | { 3735 | "url": "https://github.com/fabpot", 3736 | "type": "github" 3737 | }, 3738 | { 3739 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3740 | "type": "tidelift" 3741 | } 3742 | ], 3743 | "time": "2022-02-21T17:15:17+00:00" 3744 | }, 3745 | { 3746 | "name": "symfony/string", 3747 | "version": "v6.0.8", 3748 | "source": { 3749 | "type": "git", 3750 | "url": "https://github.com/symfony/string.git", 3751 | "reference": "ac0aa5c2282e0de624c175b68d13f2c8f2e2649d" 3752 | }, 3753 | "dist": { 3754 | "type": "zip", 3755 | "url": "https://api.github.com/repos/symfony/string/zipball/ac0aa5c2282e0de624c175b68d13f2c8f2e2649d", 3756 | "reference": "ac0aa5c2282e0de624c175b68d13f2c8f2e2649d", 3757 | "shasum": "" 3758 | }, 3759 | "require": { 3760 | "php": ">=8.0.2", 3761 | "symfony/polyfill-ctype": "~1.8", 3762 | "symfony/polyfill-intl-grapheme": "~1.0", 3763 | "symfony/polyfill-intl-normalizer": "~1.0", 3764 | "symfony/polyfill-mbstring": "~1.0" 3765 | }, 3766 | "conflict": { 3767 | "symfony/translation-contracts": "<2.0" 3768 | }, 3769 | "require-dev": { 3770 | "symfony/error-handler": "^5.4|^6.0", 3771 | "symfony/http-client": "^5.4|^6.0", 3772 | "symfony/translation-contracts": "^2.0|^3.0", 3773 | "symfony/var-exporter": "^5.4|^6.0" 3774 | }, 3775 | "type": "library", 3776 | "autoload": { 3777 | "files": [ 3778 | "Resources/functions.php" 3779 | ], 3780 | "psr-4": { 3781 | "Symfony\\Component\\String\\": "" 3782 | }, 3783 | "exclude-from-classmap": [ 3784 | "/Tests/" 3785 | ] 3786 | }, 3787 | "notification-url": "https://packagist.org/downloads/", 3788 | "license": [ 3789 | "MIT" 3790 | ], 3791 | "authors": [ 3792 | { 3793 | "name": "Nicolas Grekas", 3794 | "email": "p@tchwork.com" 3795 | }, 3796 | { 3797 | "name": "Symfony Community", 3798 | "homepage": "https://symfony.com/contributors" 3799 | } 3800 | ], 3801 | "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", 3802 | "homepage": "https://symfony.com", 3803 | "keywords": [ 3804 | "grapheme", 3805 | "i18n", 3806 | "string", 3807 | "unicode", 3808 | "utf-8", 3809 | "utf8" 3810 | ], 3811 | "support": { 3812 | "source": "https://github.com/symfony/string/tree/v6.0.8" 3813 | }, 3814 | "funding": [ 3815 | { 3816 | "url": "https://symfony.com/sponsor", 3817 | "type": "custom" 3818 | }, 3819 | { 3820 | "url": "https://github.com/fabpot", 3821 | "type": "github" 3822 | }, 3823 | { 3824 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3825 | "type": "tidelift" 3826 | } 3827 | ], 3828 | "time": "2022-04-22T08:18:02+00:00" 3829 | }, 3830 | { 3831 | "name": "theseer/tokenizer", 3832 | "version": "1.2.1", 3833 | "source": { 3834 | "type": "git", 3835 | "url": "https://github.com/theseer/tokenizer.git", 3836 | "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" 3837 | }, 3838 | "dist": { 3839 | "type": "zip", 3840 | "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", 3841 | "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", 3842 | "shasum": "" 3843 | }, 3844 | "require": { 3845 | "ext-dom": "*", 3846 | "ext-tokenizer": "*", 3847 | "ext-xmlwriter": "*", 3848 | "php": "^7.2 || ^8.0" 3849 | }, 3850 | "type": "library", 3851 | "autoload": { 3852 | "classmap": [ 3853 | "src/" 3854 | ] 3855 | }, 3856 | "notification-url": "https://packagist.org/downloads/", 3857 | "license": [ 3858 | "BSD-3-Clause" 3859 | ], 3860 | "authors": [ 3861 | { 3862 | "name": "Arne Blankerts", 3863 | "email": "arne@blankerts.de", 3864 | "role": "Developer" 3865 | } 3866 | ], 3867 | "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", 3868 | "support": { 3869 | "issues": "https://github.com/theseer/tokenizer/issues", 3870 | "source": "https://github.com/theseer/tokenizer/tree/1.2.1" 3871 | }, 3872 | "funding": [ 3873 | { 3874 | "url": "https://github.com/theseer", 3875 | "type": "github" 3876 | } 3877 | ], 3878 | "time": "2021-07-28T10:34:58+00:00" 3879 | }, 3880 | { 3881 | "name": "webmozart/assert", 3882 | "version": "1.10.0", 3883 | "source": { 3884 | "type": "git", 3885 | "url": "https://github.com/webmozarts/assert.git", 3886 | "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" 3887 | }, 3888 | "dist": { 3889 | "type": "zip", 3890 | "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", 3891 | "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", 3892 | "shasum": "" 3893 | }, 3894 | "require": { 3895 | "php": "^7.2 || ^8.0", 3896 | "symfony/polyfill-ctype": "^1.8" 3897 | }, 3898 | "conflict": { 3899 | "phpstan/phpstan": "<0.12.20", 3900 | "vimeo/psalm": "<4.6.1 || 4.6.2" 3901 | }, 3902 | "require-dev": { 3903 | "phpunit/phpunit": "^8.5.13" 3904 | }, 3905 | "type": "library", 3906 | "extra": { 3907 | "branch-alias": { 3908 | "dev-master": "1.10-dev" 3909 | } 3910 | }, 3911 | "autoload": { 3912 | "psr-4": { 3913 | "Webmozart\\Assert\\": "src/" 3914 | } 3915 | }, 3916 | "notification-url": "https://packagist.org/downloads/", 3917 | "license": [ 3918 | "MIT" 3919 | ], 3920 | "authors": [ 3921 | { 3922 | "name": "Bernhard Schussek", 3923 | "email": "bschussek@gmail.com" 3924 | } 3925 | ], 3926 | "description": "Assertions to validate method input/output with nice error messages.", 3927 | "keywords": [ 3928 | "assert", 3929 | "check", 3930 | "validate" 3931 | ], 3932 | "support": { 3933 | "issues": "https://github.com/webmozarts/assert/issues", 3934 | "source": "https://github.com/webmozarts/assert/tree/1.10.0" 3935 | }, 3936 | "time": "2021-03-09T10:59:23+00:00" 3937 | } 3938 | ], 3939 | "aliases": [], 3940 | "minimum-stability": "stable", 3941 | "stability-flags": [], 3942 | "prefer-stable": false, 3943 | "prefer-lowest": false, 3944 | "platform": [], 3945 | "platform-dev": [], 3946 | "plugin-api-version": "2.6.0" 3947 | } 3948 | -------------------------------------------------------------------------------- /phpcs.xml.dist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Yaml Expander PHP CodeSniffer configuration. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | . 14 | 15 | 16 | 17 | 18 | var/ 19 | vendor/* 20 | tests/resources/* 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /phpunit.xml.dist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 13 | 14 | 15 | src 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | tests/src 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /src/Stringifier.php: -------------------------------------------------------------------------------- 1 | logger = $logger; 33 | $this->expander = new Expander(); 34 | $this->expander->setLogger($logger); 35 | $this->expander->setStringifier(new Stringifier()); 36 | } 37 | 38 | /** 39 | * Parses a YAML string and expands property placeholders. 40 | * 41 | * Placeholders should formatted as ${parent.child}. 42 | * 43 | * @param string $yaml_string 44 | * A string of YAML. 45 | * @param array $reference_array 46 | * Optional. An array of reference values. This is not operated upon but is used as a 47 | * reference to provide supplemental values for property expansion. 48 | * 49 | * @return array 50 | * The modified array in which placeholders have been replaced with 51 | * values. 52 | */ 53 | public function parse($yaml_string, $reference_array = []) 54 | { 55 | $array = Yaml::parse($yaml_string); 56 | return $this->expander->expandArrayProperties($array, $reference_array); 57 | } 58 | 59 | /** 60 | * Expands property placeholders in an array. 61 | * 62 | * Placeholders should formatted as ${parent.child}. 63 | * 64 | * @param array $array 65 | * An array containing properties to expand. 66 | * 67 | * @return array 68 | * The modified array in which placeholders have been replaced with 69 | * values. 70 | */ 71 | public function expandArrayProperties($array, $reference_array = []) 72 | { 73 | return $this->expander->expandArrayProperties($array, $reference_array); 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /tests/resources/valid.yml: -------------------------------------------------------------------------------- 1 | # This file should contain only valid YAML. 2 | type: book 3 | book: 4 | title: Dune 5 | author: Frank Herbert 6 | copyright: ${book.author} 1965 7 | protaganist: ${characters.0.name} 8 | media: 9 | - hardcover 10 | # Use a nested key to reference an external value. 11 | nested-reference: ${book.sequel} 12 | characters: 13 | - name: Paul Atreides 14 | occupation: Kwisatz Haderach 15 | aliases: 16 | - Usul 17 | - Muad'Dib 18 | - The Preacher 19 | - name: Duncan Idaho 20 | occupation: Swordmaster 21 | summary: ${book.title} by ${book.author} 22 | # This is a complete fake property. 23 | publisher: ${not.real.property} 24 | # series.books is not defined in this YAML file, but is passed in to the parser by the application. 25 | sequels: ${book.sequel}, and others. 26 | # Reference one real value and one fake value. 27 | available-products: ${book.media.1}, ${book.media.0} 28 | # Nested property, should resolve to ${book.title} and then 'Dune'. 29 | product-name: ${${type}.title} 30 | # Represent a few more data types and formats. 31 | boolean-value: true 32 | null-value: null 33 | inline-array: [ one, two, three ] 34 | expand-array: ${inline-array} 35 | env-test: ${env.test} -------------------------------------------------------------------------------- /tests/src/YamlExpanderTest.php: -------------------------------------------------------------------------------- 1 | expandArrayProperties($array); 28 | $this->assertEquals('gomjabbar', $expanded['env-test']); 29 | $this->assertEquals('Frank Herbert 1965', $expanded['book']['copyright']); 30 | $this->assertEquals('Paul Atreides', $expanded['book']['protaganist']); 31 | $this->assertEquals('Dune by Frank Herbert', $expanded['summary']); 32 | $this->assertEquals('${book.media.1}, hardcover', $expanded['available-products']); 33 | $this->assertEquals('Dune', $expanded['product-name']); 34 | $this->assertEquals(Yaml::dump($array['inline-array'], 0), $expanded['expand-array']); 35 | 36 | $expanded = $expander->expandArrayProperties($array, $reference_array); 37 | $this->assertEquals('Dune Messiah, and others.', $expanded['sequels']); 38 | $this->assertEquals('Dune Messiah', $expanded['book']['nested-reference']); 39 | } 40 | 41 | /** 42 | * Tests YamlExpander::parse(). 43 | * 44 | * @param string $filename 45 | * @param array $reference_array 46 | * 47 | * @dataProvider providerYaml 48 | */ 49 | public function testParse($filename, $reference_array) 50 | { 51 | $yaml_string = file_get_contents(__DIR__ . "/../resources/$filename"); 52 | $expander = new YamlExpander(new NullLogger()); 53 | $expanded = $expander->parse($yaml_string); 54 | $this->assertEquals('Frank Herbert 1965', $expanded['book']['copyright']); 55 | $this->assertEquals('Paul Atreides', $expanded['book']['protaganist']); 56 | $this->assertEquals('Dune by Frank Herbert', $expanded['summary']); 57 | $this->assertEquals('${book.media.1}, hardcover', $expanded['available-products']); 58 | 59 | $expanded = $expander->parse($yaml_string, $reference_array); 60 | $this->assertEquals('Dune Messiah, and others.', $expanded['sequels']); 61 | $this->assertEquals('Dune Messiah', $expanded['book']['nested-reference']); 62 | } 63 | 64 | /** 65 | * @return array 66 | * An array of values to test. 67 | */ 68 | public function providerYaml() 69 | { 70 | return [ 71 | ['valid.yml', [ 72 | 'book' => [ 73 | 'sequel' => 'Dune Messiah' 74 | ] 75 | ]], 76 | ]; 77 | } 78 | 79 | /** 80 | * Tests YamlExpander::expandProperty(). 81 | */ 82 | public function testStringifyArray() 83 | { 84 | $array = [ 85 | 0 => 'one', 86 | 1 => 'two', 87 | 2 => 'three', 88 | ]; 89 | $string = Stringifier::stringifyArray($array); 90 | $this->assertEquals('[one, two, three]', $string); 91 | } 92 | } 93 | --------------------------------------------------------------------------------