├── .gitignore ├── renovate.json ├── features ├── container.feature └── bootstrap │ ├── TestService.php │ ├── example-laminas-servicemanager-container.php │ └── FeatureContext.php ├── behat.yml ├── phpunit.xml.dist ├── src ├── Exception │ └── NotAPsrContainer.php ├── ContainerFactory.php └── PsrContainerExtension.php ├── phpcs.xml.dist ├── composer.json ├── test ├── Exception │ └── NotAPsrContainerTest.php ├── ContainerFactoryTest.php └── PsrContainerExtensionTest.php ├── .github └── workflows │ ├── continuous-integration.yml │ └── release-on-milestone-closed-triggering-release-event.yml ├── README.md └── composer.lock /.gitignore: -------------------------------------------------------------------------------- 1 | /vendor/ 2 | .phpunit.result.cache 3 | -------------------------------------------------------------------------------- /renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://docs.renovatebot.com/renovate-schema.json", 3 | "extends": [ 4 | "local>Ocramius/.github:renovate-config" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /features/container.feature: -------------------------------------------------------------------------------- 1 | Feature: 2 | 3 | Scenario: 4 | Given I have a Laminas\ServiceManager container 5 | When I instantiate a context 6 | Then I should have services injected through the constructor 7 | And I should have services injected as step arguments 8 | -------------------------------------------------------------------------------- /features/bootstrap/TestService.php: -------------------------------------------------------------------------------- 1 | calledFromFactory; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /behat.yml: -------------------------------------------------------------------------------- 1 | default: 2 | suites: 3 | my_suite: 4 | autowire: true 5 | services: "@my_container" 6 | contexts: 7 | - RoaveFeatureTest\BehatPsrContainer\FeatureContext 8 | 9 | extensions: 10 | Roave\BehatPsrContainer\PsrContainerExtension: 11 | container: "features/bootstrap/example-laminas-servicemanager-container.php" 12 | name: "my_container" 13 | -------------------------------------------------------------------------------- /features/bootstrap/example-laminas-servicemanager-container.php: -------------------------------------------------------------------------------- 1 | setFactory( 11 | TestService::class, 12 | static function (ContainerInterface $container): TestService { 13 | return new TestService(true); 14 | }, 15 | ); 16 | 17 | return $serviceManager; 18 | -------------------------------------------------------------------------------- /phpunit.xml.dist: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | src 12 | 13 | 14 | 15 | 16 | test 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /src/Exception/NotAPsrContainer.php: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | ./features 16 | ./src 17 | ./test 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /features/bootstrap/FeatureContext.php: -------------------------------------------------------------------------------- 1 | testService->works()) { 34 | throw new RuntimeException('It didn\'t work.'); 35 | } 36 | } 37 | 38 | /** @Given /^I should have services injected as step arguments$/ */ 39 | public function iShouldHaveServicesInjectedAsStepArguments(TestService $testService): void 40 | { 41 | if (! $testService->works()) { 42 | throw new RuntimeException('It didn\'t work.'); 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "roave/behat-psr11extension", 3 | "description": "PSR-11 Container extension for Behat", 4 | "type": "library", 5 | "require": { 6 | "php": "~8.3.0 || ~8.4.0 || ~8.5.0", 7 | "behat/behat": "^3.29.0", 8 | "psr/container": "^2.0.2", 9 | "symfony/config": "^7.4.1", 10 | "symfony/dependency-injection": "^7.4.2" 11 | }, 12 | "require-dev": { 13 | "doctrine/coding-standard": "^14.0.0", 14 | "laminas/laminas-servicemanager": "^4.5.0", 15 | "phpunit/phpunit": "^12.5.4" 16 | }, 17 | "license": "MIT", 18 | "authors": [ 19 | { 20 | "name": "James Titcumb", 21 | "email": "james@asgrim.com" 22 | } 23 | ], 24 | "autoload": { 25 | "psr-4": { 26 | "Roave\\BehatPsrContainer\\": "src/" 27 | } 28 | }, 29 | "autoload-dev": { 30 | "psr-4": { 31 | "RoaveFeatureTest\\BehatPsrContainer\\": "features/bootstrap/", 32 | "RoaveTest\\BehatPsrContainer\\": "test/" 33 | } 34 | }, 35 | "config": { 36 | "allow-plugins": { 37 | "dealerdirect/phpcodesniffer-composer-installer": true 38 | }, 39 | "platform": { 40 | "php": "8.3.99" 41 | }, 42 | "sort-packages": true 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /test/Exception/NotAPsrContainerTest.php: -------------------------------------------------------------------------------- 1 | getMessage(), 46 | ); 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /test/ContainerFactoryTest.php: -------------------------------------------------------------------------------- 1 | tempFilename = tempnam(sys_get_temp_dir(), str_replace('\\', '_', self::class) . '_'); 27 | } 28 | 29 | public function tearDown(): void 30 | { 31 | if (! file_exists($this->tempFilename)) { 32 | return; 33 | } 34 | 35 | unlink($this->tempFilename); 36 | } 37 | 38 | public function testFactoryThrowsExceptionWhenFileDoesNotReturnContainer(): void 39 | { 40 | file_put_contents( 41 | $this->tempFilename, 42 | 'expectException(NotAPsrContainer::class); 46 | ContainerFactory::createContainerFromIncludedFile($this->tempFilename); 47 | } 48 | 49 | public function testFactoryReturnsContainerIfIncluded(): void 50 | { 51 | file_put_contents( 52 | $this->tempFilename, 53 | 'tempFilename); 60 | self::assertInstanceOf(ContainerInterface::class, $container); 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /src/PsrContainerExtension.php: -------------------------------------------------------------------------------- 1 | children() 34 | ->scalarNode('container')->defaultValue('config/container.php')->end() 35 | ->scalarNode('name')->defaultValue('psr_container')->end() 36 | ->end(); 37 | } 38 | 39 | /** @param string[] $config */ 40 | public function load(ContainerBuilder $container, array $config): void 41 | { 42 | $container->setParameter('roave.behat.psr.container.included.file', $config['container']); 43 | $container->setDefinition($config['name'], $this->createContainerDefinition()); 44 | } 45 | 46 | private function createContainerDefinition(): Definition 47 | { 48 | $definition = new Definition(ContainerInterface::class, ['%roave.behat.psr.container.included.file%']); 49 | $definition->setFactory([ContainerFactory::class, 'createContainerFromIncludedFile']); 50 | $definition->addTag('helper_container.container'); 51 | $definition->setPublic(true); 52 | $definition->setShared(false); 53 | 54 | return $definition; 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /.github/workflows/continuous-integration.yml: -------------------------------------------------------------------------------- 1 | # See https://github.com/laminas/laminas-continuous-integration-action 2 | # Generates a job matrix based on current dependencies and supported version 3 | # ranges, then runs all those jobs 4 | name: "Continuous Integration" 5 | 6 | on: 7 | pull_request: 8 | push: 9 | 10 | jobs: 11 | matrix: 12 | name: Generate job matrix 13 | runs-on: ubuntu-latest 14 | outputs: 15 | matrix: ${{ steps.matrix.outputs.matrix }} 16 | steps: 17 | - name: Gather CI configuration 18 | id: matrix 19 | uses: laminas/laminas-ci-matrix-action@1.32.0 20 | 21 | qa: 22 | name: QA Checks 23 | needs: [ matrix ] 24 | runs-on: ${{ matrix.operatingSystem }} 25 | strategy: 26 | fail-fast: false 27 | matrix: ${{ fromJSON(needs.matrix.outputs.matrix) }} 28 | steps: 29 | - name: ${{ matrix.name }} 30 | uses: laminas/laminas-continuous-integration-action@1.43.0 31 | env: 32 | "GITHUB_TOKEN": ${{ secrets.GITHUB_TOKEN }} 33 | "INFECTION_DASHBOARD_API_KEY": ${{ secrets.INFECTION_DASHBOARD_API_KEY }} 34 | "STRYKER_DASHBOARD_API_KEY": ${{ secrets.STRYKER_DASHBOARD_API_KEY }} 35 | with: 36 | job: ${{ matrix.job }} 37 | 38 | behat: 39 | name: "Behat Acceptance test" 40 | 41 | runs-on: ${{ matrix.operating-system }} 42 | 43 | strategy: 44 | matrix: 45 | dependencies: 46 | - "lowest" 47 | - "highest" 48 | - "locked" 49 | php-version: 50 | - "8.3" 51 | - "8.4" 52 | - "8.5" 53 | operating-system: 54 | - "ubuntu-latest" 55 | 56 | steps: 57 | - name: "Checkout" 58 | uses: "actions/checkout@v6" 59 | with: 60 | fetch-depth: 0 61 | 62 | - name: "Install PHP" 63 | uses: "shivammathur/setup-php@2.36.0" 64 | with: 65 | coverage: "pcov" 66 | php-version: "${{ matrix.php-version }}" 67 | ini-values: memory_limit=-1 68 | tools: composer:v2, cs2pr 69 | 70 | - name: "Cache dependencies" 71 | uses: "actions/cache@v5" 72 | with: 73 | path: | 74 | ~/.composer/cache 75 | vendor 76 | key: "php-${{ matrix.php-version }}-${{ matrix.dependencies }}" 77 | restore-keys: "php-${{ matrix.php-version }}-${{ matrix.dependencies }}" 78 | 79 | - name: "Install lowest dependencies" 80 | if: ${{ matrix.dependencies == 'lowest' }} 81 | run: "composer update --prefer-lowest --no-interaction --no-progress --no-suggest" 82 | 83 | - name: "Install highest dependencies" 84 | if: ${{ matrix.dependencies == 'highest' }} 85 | run: "composer update --no-interaction --no-progress --no-suggest" 86 | 87 | - name: "Install locked dependencies" 88 | if: ${{ matrix.dependencies == 'locked' }} 89 | run: "composer install --no-interaction --no-progress --no-suggest" 90 | 91 | - name: "Tests" 92 | run: "vendor/bin/behat" 93 | -------------------------------------------------------------------------------- /.github/workflows/release-on-milestone-closed-triggering-release-event.yml: -------------------------------------------------------------------------------- 1 | # Alternate workflow example. 2 | # This one is identical to the one in release-on-milestone.yml, with one change: 3 | # the Release step uses the ORGANIZATION_ADMIN_TOKEN instead, to allow it to 4 | # trigger a release workflow event. This is useful if you have other actions 5 | # that intercept that event. 6 | 7 | name: "Automatic Releases" 8 | 9 | on: 10 | milestone: 11 | types: 12 | - "closed" 13 | 14 | jobs: 15 | release: 16 | name: "GIT tag, release & create merge-up PR" 17 | runs-on: ubuntu-latest 18 | 19 | steps: 20 | - name: "Checkout" 21 | uses: "actions/checkout@v6" 22 | 23 | - name: "Release" 24 | uses: "laminas/automatic-releases@v1" 25 | with: 26 | command-name: "laminas:automatic-releases:release" 27 | env: 28 | "GITHUB_TOKEN": ${{ secrets.ORGANIZATION_ADMIN_TOKEN }} 29 | "SIGNING_SECRET_KEY": ${{ secrets.SIGNING_SECRET_KEY }} 30 | "GIT_AUTHOR_NAME": ${{ secrets.GIT_AUTHOR_NAME }} 31 | "GIT_AUTHOR_EMAIL": ${{ secrets.GIT_AUTHOR_EMAIL }} 32 | 33 | - name: "Create Merge-Up Pull Request" 34 | uses: "laminas/automatic-releases@v1" 35 | with: 36 | command-name: "laminas:automatic-releases:create-merge-up-pull-request" 37 | env: 38 | "GITHUB_TOKEN": ${{ secrets.GITHUB_TOKEN }} 39 | "SIGNING_SECRET_KEY": ${{ secrets.SIGNING_SECRET_KEY }} 40 | "GIT_AUTHOR_NAME": ${{ secrets.GIT_AUTHOR_NAME }} 41 | "GIT_AUTHOR_EMAIL": ${{ secrets.GIT_AUTHOR_EMAIL }} 42 | 43 | - name: "Create and/or Switch to new Release Branch" 44 | uses: "laminas/automatic-releases@v1" 45 | with: 46 | command-name: "laminas:automatic-releases:switch-default-branch-to-next-minor" 47 | env: 48 | "GITHUB_TOKEN": ${{ secrets.ORGANIZATION_ADMIN_TOKEN }} 49 | "SIGNING_SECRET_KEY": ${{ secrets.SIGNING_SECRET_KEY }} 50 | "GIT_AUTHOR_NAME": ${{ secrets.GIT_AUTHOR_NAME }} 51 | "GIT_AUTHOR_EMAIL": ${{ secrets.GIT_AUTHOR_EMAIL }} 52 | 53 | - name: "Bump Changelog Version On Originating Release Branch" 54 | uses: "laminas/automatic-releases@v1" 55 | with: 56 | command-name: "laminas:automatic-releases:bump-changelog" 57 | env: 58 | "GITHUB_TOKEN": ${{ secrets.GITHUB_TOKEN }} 59 | "SIGNING_SECRET_KEY": ${{ secrets.SIGNING_SECRET_KEY }} 60 | "GIT_AUTHOR_NAME": ${{ secrets.GIT_AUTHOR_NAME }} 61 | "GIT_AUTHOR_EMAIL": ${{ secrets.GIT_AUTHOR_EMAIL }} 62 | 63 | - name: "Create new milestones" 64 | uses: "laminas/automatic-releases@v1" 65 | with: 66 | command-name: "laminas:automatic-releases:create-milestones" 67 | env: 68 | "GITHUB_TOKEN": ${{ secrets.GITHUB_TOKEN }} 69 | "SIGNING_SECRET_KEY": ${{ secrets.SIGNING_SECRET_KEY }} 70 | "GIT_AUTHOR_NAME": ${{ secrets.GIT_AUTHOR_NAME }} 71 | "GIT_AUTHOR_EMAIL": ${{ secrets.GIT_AUTHOR_EMAIL }} 72 | -------------------------------------------------------------------------------- /test/PsrContainerExtensionTest.php: -------------------------------------------------------------------------------- 1 | getConfigKey()); 31 | } 32 | 33 | public function testConfiguration(): void 34 | { 35 | $builder = new ArrayNodeDefinition('foo'); 36 | 37 | (new PsrContainerExtension())->configure($builder); 38 | 39 | $node = $builder->getNode(); 40 | assert($node instanceof ArrayNode); 41 | $children = $node->getChildren(); 42 | self::assertCount(2, $children); 43 | 44 | self::assertArrayHasKey('container', $children); 45 | $containerNode = $children['container']; 46 | assert($containerNode instanceof ScalarNode); 47 | self::assertSame('config/container.php', $containerNode->getDefaultValue()); 48 | 49 | self::assertArrayHasKey('name', $children); 50 | $nameNode = $children['name']; 51 | assert($nameNode instanceof ScalarNode); 52 | self::assertSame('psr_container', $nameNode->getDefaultValue()); 53 | } 54 | 55 | public function testLoadSetsUpContainer(): void 56 | { 57 | $builder = new ContainerBuilder(); 58 | $containerConfigValue = uniqid('containerConfigvalue', true); 59 | $nameConfigValue = uniqid('nameConfigValue', true); 60 | 61 | (new PsrContainerExtension())->load( 62 | $builder, 63 | [ 64 | 'container' => $containerConfigValue, 65 | 'name' => $nameConfigValue, 66 | ], 67 | ); 68 | 69 | self::assertSame($containerConfigValue, $builder->getParameter('roave.behat.psr.container.included.file')); 70 | 71 | self::assertTrue($builder->hasDefinition($nameConfigValue)); 72 | $definition = $builder->getDefinition($nameConfigValue); 73 | self::assertSame([ContainerFactory::class, 'createContainerFromIncludedFile'], $definition->getFactory()); 74 | self::assertSame(['helper_container.container' => [[]]], $definition->getTags()); 75 | 76 | $sharedOrScopeTested = false; 77 | 78 | if (method_exists($definition, 'isShared')) { 79 | $sharedOrScopeTested = true; 80 | self::assertFalse($definition->isShared()); 81 | } 82 | 83 | if (method_exists($definition, 'getScope')) { 84 | $sharedOrScopeTested = true; 85 | self::assertSame(ContainerBuilder::SCOPE_PROTOTYPE, $definition->getScope()); 86 | } 87 | 88 | if ($sharedOrScopeTested) { 89 | return; 90 | } 91 | 92 | self::fail('Expected to have assertion on isShared or getScope method, but neither existed'); 93 | } 94 | } 95 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # PSR-11 Container extension for Behat 2 | 3 | [![Build Status](https://travis-ci.org/Roave/behat-psr11extension.svg?branch=master)](https://travis-ci.org/Roave/behat-psr11extension) [![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/Roave/behat-psr11extension/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/Roave/behat-psr11extension/?branch=master) [![Code Coverage](https://scrutinizer-ci.com/g/Roave/behat-psr11extension/badges/coverage.png?b=master)](https://scrutinizer-ci.com/g/Roave/behat-psr11extension/?branch=master) [![Latest Stable Version](https://poser.pugx.org/roave/behat-psr11extension/v/stable)](https://packagist.org/packages/roave/behat-psr11extension) [![License](https://poser.pugx.org/roave/behat-psr11extension/license)](https://packagist.org/packages/roave/behat-psr11extension) 4 | 5 | Allows injecting services from a PSR-11-compatibile container in a Behat context. 6 | 7 | Created with lots of help from [@ciaranmcnulty](https://github.com/ciaranmcnulty). 8 | 9 | ## Usage 10 | 11 | First require the extension and dependencies with Composer: 12 | 13 | ```bash 14 | $ composer require --dev roave/behat-psr11extension 15 | ``` 16 | 17 | First, if you don't already have one, create a file that will be included by the extension that returns a PSR-11 18 | compatible container, for example using `Laminas\ServiceManager`: 19 | 20 | ```php 21 | configureServiceManager($container); 33 | 34 | // Inject config 35 | $container->setService('config', $config); 36 | 37 | return $container; 38 | ``` 39 | 40 | Then enable the extension in `behat.yml`: 41 | 42 | ```yaml 43 | extensions: 44 | Roave\BehatPsrContainer\PsrContainerExtension: 45 | container: 'config/container.php' 46 | ``` 47 | 48 | Then enable the use of the `psr_container` service container (this is provided by the extension) in your `behat.yml` 49 | suite configuration, for example: 50 | 51 | ```yaml 52 | default: 53 | suites: 54 | my_suite: 55 | services: "@psr_container" 56 | ``` 57 | 58 | And finally, add the names of any services required by your contexts in `behat.yml`, for example: 59 | 60 | ```yaml 61 | default: 62 | suites: 63 | my_suite: 64 | services: "@psr_container" 65 | contexts: 66 | - MyBehatTestSuite\MyContext: 67 | - "@Whatever\\Service\\Name" 68 | ``` 69 | 70 | You can also use behat's built-in [autowire feature](https://github.com/Behat/Behat/pull/1071), to automatically inject the dependencies to the context: 71 | 72 | ```yaml 73 | default: 74 | suites: 75 | my_suite: 76 | autowire: true 77 | services: "@psr_container" 78 | contexts: 79 | - MyBehatTestSuite\MyContext 80 | ``` 81 | 82 | If for some reason you want to use a name other than `psr_container` for the container (e.g. collision with another extension) this can 83 | be overridden: 84 | 85 | ```yaml 86 | extensions: 87 | Roave\BehatPsrContainer\PsrContainerExtension: 88 | container: 'config/container.php' 89 | name: 'my_container' 90 | ``` 91 | 92 | Just for clarity (and hopefully ease of understanding), this would be the equivalent of doing this in plain PHP: 93 | 94 | ```php 95 | get('Whatever\Service\Name')); 101 | ``` 102 | -------------------------------------------------------------------------------- /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": "c349d2ad96043a28be539c4cd038a9f2", 8 | "packages": [ 9 | { 10 | "name": "behat/behat", 11 | "version": "v3.29.0", 12 | "source": { 13 | "type": "git", 14 | "url": "https://github.com/Behat/Behat.git", 15 | "reference": "51bdf81639a14645c5d2c06926f4aa37d204921b" 16 | }, 17 | "dist": { 18 | "type": "zip", 19 | "url": "https://api.github.com/repos/Behat/Behat/zipball/51bdf81639a14645c5d2c06926f4aa37d204921b", 20 | "reference": "51bdf81639a14645c5d2c06926f4aa37d204921b", 21 | "shasum": "" 22 | }, 23 | "require": { 24 | "behat/gherkin": "^4.12.0", 25 | "composer-runtime-api": "^2.2", 26 | "composer/xdebug-handler": "^1.4 || ^2.0 || ^3.0", 27 | "ext-mbstring": "*", 28 | "nikic/php-parser": "^4.19.2 || ^5.2", 29 | "php": ">=8.1 <8.6", 30 | "psr/container": "^1.0 || ^2.0", 31 | "symfony/config": "^5.4 || ^6.4 || ^7.0", 32 | "symfony/console": "^5.4 || ^6.4 || ^7.0", 33 | "symfony/dependency-injection": "^5.4 || ^6.4 || ^7.0", 34 | "symfony/event-dispatcher": "^5.4 || ^6.4 || ^7.0", 35 | "symfony/translation": "^5.4 || ^6.4 || ^7.0", 36 | "symfony/yaml": "^5.4 || ^6.4 || ^7.0" 37 | }, 38 | "require-dev": { 39 | "opis/json-schema": "^2.5", 40 | "php-cs-fixer/shim": "^3.89", 41 | "phpstan/phpstan": "^2.0", 42 | "phpunit/phpunit": "^9.6", 43 | "rector/rector": "2.1.7", 44 | "sebastian/diff": "^4.0", 45 | "symfony/filesystem": "^5.4 || ^6.4 || ^7.0", 46 | "symfony/polyfill-php84": "^1.31", 47 | "symfony/process": "^5.4 || ^6.4 || ^7.0" 48 | }, 49 | "suggest": { 50 | "ext-dom": "Needed to output test results in JUnit format." 51 | }, 52 | "bin": [ 53 | "bin/behat" 54 | ], 55 | "type": "library", 56 | "autoload": { 57 | "psr-4": { 58 | "Behat\\Hook\\": "src/Behat/Hook/", 59 | "Behat\\Step\\": "src/Behat/Step/", 60 | "Behat\\Behat\\": "src/Behat/Behat/", 61 | "Behat\\Config\\": "src/Behat/Config/", 62 | "Behat\\Testwork\\": "src/Behat/Testwork/", 63 | "Behat\\Transformation\\": "src/Behat/Transformation/" 64 | } 65 | }, 66 | "notification-url": "https://packagist.org/downloads/", 67 | "license": [ 68 | "MIT" 69 | ], 70 | "authors": [ 71 | { 72 | "name": "Konstantin Kudryashov", 73 | "email": "ever.zet@gmail.com", 74 | "homepage": "http://everzet.com" 75 | } 76 | ], 77 | "description": "Scenario-oriented BDD framework for PHP", 78 | "homepage": "https://behat.org/", 79 | "keywords": [ 80 | "Agile", 81 | "BDD", 82 | "ScenarioBDD", 83 | "Scrum", 84 | "StoryBDD", 85 | "User story", 86 | "business", 87 | "development", 88 | "documentation", 89 | "examples", 90 | "symfony", 91 | "testing" 92 | ], 93 | "support": { 94 | "issues": "https://github.com/Behat/Behat/issues", 95 | "source": "https://github.com/Behat/Behat/tree/v3.29.0" 96 | }, 97 | "funding": [ 98 | { 99 | "url": "https://github.com/acoulton", 100 | "type": "github" 101 | }, 102 | { 103 | "url": "https://github.com/carlos-granados", 104 | "type": "github" 105 | }, 106 | { 107 | "url": "https://github.com/stof", 108 | "type": "github" 109 | } 110 | ], 111 | "time": "2025-12-11T09:51:30+00:00" 112 | }, 113 | { 114 | "name": "behat/gherkin", 115 | "version": "v4.16.1", 116 | "source": { 117 | "type": "git", 118 | "url": "https://github.com/Behat/Gherkin.git", 119 | "reference": "e26037937dfd48528746764dd870bc5d0836665f" 120 | }, 121 | "dist": { 122 | "type": "zip", 123 | "url": "https://api.github.com/repos/Behat/Gherkin/zipball/e26037937dfd48528746764dd870bc5d0836665f", 124 | "reference": "e26037937dfd48528746764dd870bc5d0836665f", 125 | "shasum": "" 126 | }, 127 | "require": { 128 | "composer-runtime-api": "^2.2", 129 | "php": ">=8.1 <8.6" 130 | }, 131 | "require-dev": { 132 | "cucumber/gherkin-monorepo": "dev-gherkin-v37.0.0", 133 | "friendsofphp/php-cs-fixer": "^3.77", 134 | "mikey179/vfsstream": "^1.6", 135 | "phpstan/extension-installer": "^1", 136 | "phpstan/phpstan": "^2", 137 | "phpstan/phpstan-phpunit": "^2", 138 | "phpunit/phpunit": "^10.5", 139 | "symfony/yaml": "^5.4 || ^6.4 || ^7.0" 140 | }, 141 | "suggest": { 142 | "symfony/yaml": "If you want to parse features, represented in YAML files" 143 | }, 144 | "type": "library", 145 | "extra": { 146 | "branch-alias": { 147 | "dev-master": "4.x-dev" 148 | } 149 | }, 150 | "autoload": { 151 | "psr-4": { 152 | "Behat\\Gherkin\\": "src/" 153 | } 154 | }, 155 | "notification-url": "https://packagist.org/downloads/", 156 | "license": [ 157 | "MIT" 158 | ], 159 | "authors": [ 160 | { 161 | "name": "Konstantin Kudryashov", 162 | "email": "ever.zet@gmail.com", 163 | "homepage": "https://everzet.com" 164 | } 165 | ], 166 | "description": "Gherkin DSL parser for PHP", 167 | "homepage": "https://behat.org/", 168 | "keywords": [ 169 | "BDD", 170 | "Behat", 171 | "Cucumber", 172 | "DSL", 173 | "gherkin", 174 | "parser" 175 | ], 176 | "support": { 177 | "issues": "https://github.com/Behat/Gherkin/issues", 178 | "source": "https://github.com/Behat/Gherkin/tree/v4.16.1" 179 | }, 180 | "funding": [ 181 | { 182 | "url": "https://github.com/acoulton", 183 | "type": "github" 184 | }, 185 | { 186 | "url": "https://github.com/carlos-granados", 187 | "type": "github" 188 | }, 189 | { 190 | "url": "https://github.com/stof", 191 | "type": "github" 192 | } 193 | ], 194 | "time": "2025-12-08T16:12:58+00:00" 195 | }, 196 | { 197 | "name": "composer/pcre", 198 | "version": "3.3.2", 199 | "source": { 200 | "type": "git", 201 | "url": "https://github.com/composer/pcre.git", 202 | "reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e" 203 | }, 204 | "dist": { 205 | "type": "zip", 206 | "url": "https://api.github.com/repos/composer/pcre/zipball/b2bed4734f0cc156ee1fe9c0da2550420d99a21e", 207 | "reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e", 208 | "shasum": "" 209 | }, 210 | "require": { 211 | "php": "^7.4 || ^8.0" 212 | }, 213 | "conflict": { 214 | "phpstan/phpstan": "<1.11.10" 215 | }, 216 | "require-dev": { 217 | "phpstan/phpstan": "^1.12 || ^2", 218 | "phpstan/phpstan-strict-rules": "^1 || ^2", 219 | "phpunit/phpunit": "^8 || ^9" 220 | }, 221 | "type": "library", 222 | "extra": { 223 | "phpstan": { 224 | "includes": [ 225 | "extension.neon" 226 | ] 227 | }, 228 | "branch-alias": { 229 | "dev-main": "3.x-dev" 230 | } 231 | }, 232 | "autoload": { 233 | "psr-4": { 234 | "Composer\\Pcre\\": "src" 235 | } 236 | }, 237 | "notification-url": "https://packagist.org/downloads/", 238 | "license": [ 239 | "MIT" 240 | ], 241 | "authors": [ 242 | { 243 | "name": "Jordi Boggiano", 244 | "email": "j.boggiano@seld.be", 245 | "homepage": "http://seld.be" 246 | } 247 | ], 248 | "description": "PCRE wrapping library that offers type-safe preg_* replacements.", 249 | "keywords": [ 250 | "PCRE", 251 | "preg", 252 | "regex", 253 | "regular expression" 254 | ], 255 | "support": { 256 | "issues": "https://github.com/composer/pcre/issues", 257 | "source": "https://github.com/composer/pcre/tree/3.3.2" 258 | }, 259 | "funding": [ 260 | { 261 | "url": "https://packagist.com", 262 | "type": "custom" 263 | }, 264 | { 265 | "url": "https://github.com/composer", 266 | "type": "github" 267 | }, 268 | { 269 | "url": "https://tidelift.com/funding/github/packagist/composer/composer", 270 | "type": "tidelift" 271 | } 272 | ], 273 | "time": "2024-11-12T16:29:46+00:00" 274 | }, 275 | { 276 | "name": "composer/xdebug-handler", 277 | "version": "3.0.5", 278 | "source": { 279 | "type": "git", 280 | "url": "https://github.com/composer/xdebug-handler.git", 281 | "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef" 282 | }, 283 | "dist": { 284 | "type": "zip", 285 | "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/6c1925561632e83d60a44492e0b344cf48ab85ef", 286 | "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef", 287 | "shasum": "" 288 | }, 289 | "require": { 290 | "composer/pcre": "^1 || ^2 || ^3", 291 | "php": "^7.2.5 || ^8.0", 292 | "psr/log": "^1 || ^2 || ^3" 293 | }, 294 | "require-dev": { 295 | "phpstan/phpstan": "^1.0", 296 | "phpstan/phpstan-strict-rules": "^1.1", 297 | "phpunit/phpunit": "^8.5 || ^9.6 || ^10.5" 298 | }, 299 | "type": "library", 300 | "autoload": { 301 | "psr-4": { 302 | "Composer\\XdebugHandler\\": "src" 303 | } 304 | }, 305 | "notification-url": "https://packagist.org/downloads/", 306 | "license": [ 307 | "MIT" 308 | ], 309 | "authors": [ 310 | { 311 | "name": "John Stevenson", 312 | "email": "john-stevenson@blueyonder.co.uk" 313 | } 314 | ], 315 | "description": "Restarts a process without Xdebug.", 316 | "keywords": [ 317 | "Xdebug", 318 | "performance" 319 | ], 320 | "support": { 321 | "irc": "ircs://irc.libera.chat:6697/composer", 322 | "issues": "https://github.com/composer/xdebug-handler/issues", 323 | "source": "https://github.com/composer/xdebug-handler/tree/3.0.5" 324 | }, 325 | "funding": [ 326 | { 327 | "url": "https://packagist.com", 328 | "type": "custom" 329 | }, 330 | { 331 | "url": "https://github.com/composer", 332 | "type": "github" 333 | }, 334 | { 335 | "url": "https://tidelift.com/funding/github/packagist/composer/composer", 336 | "type": "tidelift" 337 | } 338 | ], 339 | "time": "2024-05-06T16:37:16+00:00" 340 | }, 341 | { 342 | "name": "nikic/php-parser", 343 | "version": "v5.7.0", 344 | "source": { 345 | "type": "git", 346 | "url": "https://github.com/nikic/PHP-Parser.git", 347 | "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82" 348 | }, 349 | "dist": { 350 | "type": "zip", 351 | "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/dca41cd15c2ac9d055ad70dbfd011130757d1f82", 352 | "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82", 353 | "shasum": "" 354 | }, 355 | "require": { 356 | "ext-ctype": "*", 357 | "ext-json": "*", 358 | "ext-tokenizer": "*", 359 | "php": ">=7.4" 360 | }, 361 | "require-dev": { 362 | "ircmaxell/php-yacc": "^0.0.7", 363 | "phpunit/phpunit": "^9.0" 364 | }, 365 | "bin": [ 366 | "bin/php-parse" 367 | ], 368 | "type": "library", 369 | "extra": { 370 | "branch-alias": { 371 | "dev-master": "5.x-dev" 372 | } 373 | }, 374 | "autoload": { 375 | "psr-4": { 376 | "PhpParser\\": "lib/PhpParser" 377 | } 378 | }, 379 | "notification-url": "https://packagist.org/downloads/", 380 | "license": [ 381 | "BSD-3-Clause" 382 | ], 383 | "authors": [ 384 | { 385 | "name": "Nikita Popov" 386 | } 387 | ], 388 | "description": "A PHP parser written in PHP", 389 | "keywords": [ 390 | "parser", 391 | "php" 392 | ], 393 | "support": { 394 | "issues": "https://github.com/nikic/PHP-Parser/issues", 395 | "source": "https://github.com/nikic/PHP-Parser/tree/v5.7.0" 396 | }, 397 | "time": "2025-12-06T11:56:16+00:00" 398 | }, 399 | { 400 | "name": "psr/container", 401 | "version": "2.0.2", 402 | "source": { 403 | "type": "git", 404 | "url": "https://github.com/php-fig/container.git", 405 | "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" 406 | }, 407 | "dist": { 408 | "type": "zip", 409 | "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", 410 | "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", 411 | "shasum": "" 412 | }, 413 | "require": { 414 | "php": ">=7.4.0" 415 | }, 416 | "type": "library", 417 | "extra": { 418 | "branch-alias": { 419 | "dev-master": "2.0.x-dev" 420 | } 421 | }, 422 | "autoload": { 423 | "psr-4": { 424 | "Psr\\Container\\": "src/" 425 | } 426 | }, 427 | "notification-url": "https://packagist.org/downloads/", 428 | "license": [ 429 | "MIT" 430 | ], 431 | "authors": [ 432 | { 433 | "name": "PHP-FIG", 434 | "homepage": "https://www.php-fig.org/" 435 | } 436 | ], 437 | "description": "Common Container Interface (PHP FIG PSR-11)", 438 | "homepage": "https://github.com/php-fig/container", 439 | "keywords": [ 440 | "PSR-11", 441 | "container", 442 | "container-interface", 443 | "container-interop", 444 | "psr" 445 | ], 446 | "support": { 447 | "issues": "https://github.com/php-fig/container/issues", 448 | "source": "https://github.com/php-fig/container/tree/2.0.2" 449 | }, 450 | "time": "2021-11-05T16:47:00+00:00" 451 | }, 452 | { 453 | "name": "psr/event-dispatcher", 454 | "version": "1.0.0", 455 | "source": { 456 | "type": "git", 457 | "url": "https://github.com/php-fig/event-dispatcher.git", 458 | "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" 459 | }, 460 | "dist": { 461 | "type": "zip", 462 | "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", 463 | "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", 464 | "shasum": "" 465 | }, 466 | "require": { 467 | "php": ">=7.2.0" 468 | }, 469 | "type": "library", 470 | "extra": { 471 | "branch-alias": { 472 | "dev-master": "1.0.x-dev" 473 | } 474 | }, 475 | "autoload": { 476 | "psr-4": { 477 | "Psr\\EventDispatcher\\": "src/" 478 | } 479 | }, 480 | "notification-url": "https://packagist.org/downloads/", 481 | "license": [ 482 | "MIT" 483 | ], 484 | "authors": [ 485 | { 486 | "name": "PHP-FIG", 487 | "homepage": "http://www.php-fig.org/" 488 | } 489 | ], 490 | "description": "Standard interfaces for event handling.", 491 | "keywords": [ 492 | "events", 493 | "psr", 494 | "psr-14" 495 | ], 496 | "support": { 497 | "issues": "https://github.com/php-fig/event-dispatcher/issues", 498 | "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" 499 | }, 500 | "time": "2019-01-08T18:20:26+00:00" 501 | }, 502 | { 503 | "name": "psr/log", 504 | "version": "3.0.2", 505 | "source": { 506 | "type": "git", 507 | "url": "https://github.com/php-fig/log.git", 508 | "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3" 509 | }, 510 | "dist": { 511 | "type": "zip", 512 | "url": "https://api.github.com/repos/php-fig/log/zipball/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", 513 | "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", 514 | "shasum": "" 515 | }, 516 | "require": { 517 | "php": ">=8.0.0" 518 | }, 519 | "type": "library", 520 | "extra": { 521 | "branch-alias": { 522 | "dev-master": "3.x-dev" 523 | } 524 | }, 525 | "autoload": { 526 | "psr-4": { 527 | "Psr\\Log\\": "src" 528 | } 529 | }, 530 | "notification-url": "https://packagist.org/downloads/", 531 | "license": [ 532 | "MIT" 533 | ], 534 | "authors": [ 535 | { 536 | "name": "PHP-FIG", 537 | "homepage": "https://www.php-fig.org/" 538 | } 539 | ], 540 | "description": "Common interface for logging libraries", 541 | "homepage": "https://github.com/php-fig/log", 542 | "keywords": [ 543 | "log", 544 | "psr", 545 | "psr-3" 546 | ], 547 | "support": { 548 | "source": "https://github.com/php-fig/log/tree/3.0.2" 549 | }, 550 | "time": "2024-09-11T13:17:53+00:00" 551 | }, 552 | { 553 | "name": "symfony/config", 554 | "version": "v7.4.1", 555 | "source": { 556 | "type": "git", 557 | "url": "https://github.com/symfony/config.git", 558 | "reference": "2c323304c354a43a48b61c5fa760fc4ed60ce495" 559 | }, 560 | "dist": { 561 | "type": "zip", 562 | "url": "https://api.github.com/repos/symfony/config/zipball/2c323304c354a43a48b61c5fa760fc4ed60ce495", 563 | "reference": "2c323304c354a43a48b61c5fa760fc4ed60ce495", 564 | "shasum": "" 565 | }, 566 | "require": { 567 | "php": ">=8.2", 568 | "symfony/deprecation-contracts": "^2.5|^3", 569 | "symfony/filesystem": "^7.1|^8.0", 570 | "symfony/polyfill-ctype": "~1.8" 571 | }, 572 | "conflict": { 573 | "symfony/finder": "<6.4", 574 | "symfony/service-contracts": "<2.5" 575 | }, 576 | "require-dev": { 577 | "symfony/event-dispatcher": "^6.4|^7.0|^8.0", 578 | "symfony/finder": "^6.4|^7.0|^8.0", 579 | "symfony/messenger": "^6.4|^7.0|^8.0", 580 | "symfony/service-contracts": "^2.5|^3", 581 | "symfony/yaml": "^6.4|^7.0|^8.0" 582 | }, 583 | "type": "library", 584 | "autoload": { 585 | "psr-4": { 586 | "Symfony\\Component\\Config\\": "" 587 | }, 588 | "exclude-from-classmap": [ 589 | "/Tests/" 590 | ] 591 | }, 592 | "notification-url": "https://packagist.org/downloads/", 593 | "license": [ 594 | "MIT" 595 | ], 596 | "authors": [ 597 | { 598 | "name": "Fabien Potencier", 599 | "email": "fabien@symfony.com" 600 | }, 601 | { 602 | "name": "Symfony Community", 603 | "homepage": "https://symfony.com/contributors" 604 | } 605 | ], 606 | "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", 607 | "homepage": "https://symfony.com", 608 | "support": { 609 | "source": "https://github.com/symfony/config/tree/v7.4.1" 610 | }, 611 | "funding": [ 612 | { 613 | "url": "https://symfony.com/sponsor", 614 | "type": "custom" 615 | }, 616 | { 617 | "url": "https://github.com/fabpot", 618 | "type": "github" 619 | }, 620 | { 621 | "url": "https://github.com/nicolas-grekas", 622 | "type": "github" 623 | }, 624 | { 625 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 626 | "type": "tidelift" 627 | } 628 | ], 629 | "time": "2025-12-05T07:52:08+00:00" 630 | }, 631 | { 632 | "name": "symfony/console", 633 | "version": "v7.4.1", 634 | "source": { 635 | "type": "git", 636 | "url": "https://github.com/symfony/console.git", 637 | "reference": "6d9f0fbf2ec2e9785880096e3abd0ca0c88b506e" 638 | }, 639 | "dist": { 640 | "type": "zip", 641 | "url": "https://api.github.com/repos/symfony/console/zipball/6d9f0fbf2ec2e9785880096e3abd0ca0c88b506e", 642 | "reference": "6d9f0fbf2ec2e9785880096e3abd0ca0c88b506e", 643 | "shasum": "" 644 | }, 645 | "require": { 646 | "php": ">=8.2", 647 | "symfony/deprecation-contracts": "^2.5|^3", 648 | "symfony/polyfill-mbstring": "~1.0", 649 | "symfony/service-contracts": "^2.5|^3", 650 | "symfony/string": "^7.2|^8.0" 651 | }, 652 | "conflict": { 653 | "symfony/dependency-injection": "<6.4", 654 | "symfony/dotenv": "<6.4", 655 | "symfony/event-dispatcher": "<6.4", 656 | "symfony/lock": "<6.4", 657 | "symfony/process": "<6.4" 658 | }, 659 | "provide": { 660 | "psr/log-implementation": "1.0|2.0|3.0" 661 | }, 662 | "require-dev": { 663 | "psr/log": "^1|^2|^3", 664 | "symfony/config": "^6.4|^7.0|^8.0", 665 | "symfony/dependency-injection": "^6.4|^7.0|^8.0", 666 | "symfony/event-dispatcher": "^6.4|^7.0|^8.0", 667 | "symfony/http-foundation": "^6.4|^7.0|^8.0", 668 | "symfony/http-kernel": "^6.4|^7.0|^8.0", 669 | "symfony/lock": "^6.4|^7.0|^8.0", 670 | "symfony/messenger": "^6.4|^7.0|^8.0", 671 | "symfony/process": "^6.4|^7.0|^8.0", 672 | "symfony/stopwatch": "^6.4|^7.0|^8.0", 673 | "symfony/var-dumper": "^6.4|^7.0|^8.0" 674 | }, 675 | "type": "library", 676 | "autoload": { 677 | "psr-4": { 678 | "Symfony\\Component\\Console\\": "" 679 | }, 680 | "exclude-from-classmap": [ 681 | "/Tests/" 682 | ] 683 | }, 684 | "notification-url": "https://packagist.org/downloads/", 685 | "license": [ 686 | "MIT" 687 | ], 688 | "authors": [ 689 | { 690 | "name": "Fabien Potencier", 691 | "email": "fabien@symfony.com" 692 | }, 693 | { 694 | "name": "Symfony Community", 695 | "homepage": "https://symfony.com/contributors" 696 | } 697 | ], 698 | "description": "Eases the creation of beautiful and testable command line interfaces", 699 | "homepage": "https://symfony.com", 700 | "keywords": [ 701 | "cli", 702 | "command-line", 703 | "console", 704 | "terminal" 705 | ], 706 | "support": { 707 | "source": "https://github.com/symfony/console/tree/v7.4.1" 708 | }, 709 | "funding": [ 710 | { 711 | "url": "https://symfony.com/sponsor", 712 | "type": "custom" 713 | }, 714 | { 715 | "url": "https://github.com/fabpot", 716 | "type": "github" 717 | }, 718 | { 719 | "url": "https://github.com/nicolas-grekas", 720 | "type": "github" 721 | }, 722 | { 723 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 724 | "type": "tidelift" 725 | } 726 | ], 727 | "time": "2025-12-05T15:23:39+00:00" 728 | }, 729 | { 730 | "name": "symfony/dependency-injection", 731 | "version": "v7.4.2", 732 | "source": { 733 | "type": "git", 734 | "url": "https://github.com/symfony/dependency-injection.git", 735 | "reference": "baf614f7c15b30ba6762d4b1ddabdf83dbf0d29b" 736 | }, 737 | "dist": { 738 | "type": "zip", 739 | "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/baf614f7c15b30ba6762d4b1ddabdf83dbf0d29b", 740 | "reference": "baf614f7c15b30ba6762d4b1ddabdf83dbf0d29b", 741 | "shasum": "" 742 | }, 743 | "require": { 744 | "php": ">=8.2", 745 | "psr/container": "^1.1|^2.0", 746 | "symfony/deprecation-contracts": "^2.5|^3", 747 | "symfony/service-contracts": "^3.6", 748 | "symfony/var-exporter": "^6.4.20|^7.2.5|^8.0" 749 | }, 750 | "conflict": { 751 | "ext-psr": "<1.1|>=2", 752 | "symfony/config": "<6.4", 753 | "symfony/finder": "<6.4", 754 | "symfony/yaml": "<6.4" 755 | }, 756 | "provide": { 757 | "psr/container-implementation": "1.1|2.0", 758 | "symfony/service-implementation": "1.1|2.0|3.0" 759 | }, 760 | "require-dev": { 761 | "symfony/config": "^6.4|^7.0|^8.0", 762 | "symfony/expression-language": "^6.4|^7.0|^8.0", 763 | "symfony/yaml": "^6.4|^7.0|^8.0" 764 | }, 765 | "type": "library", 766 | "autoload": { 767 | "psr-4": { 768 | "Symfony\\Component\\DependencyInjection\\": "" 769 | }, 770 | "exclude-from-classmap": [ 771 | "/Tests/" 772 | ] 773 | }, 774 | "notification-url": "https://packagist.org/downloads/", 775 | "license": [ 776 | "MIT" 777 | ], 778 | "authors": [ 779 | { 780 | "name": "Fabien Potencier", 781 | "email": "fabien@symfony.com" 782 | }, 783 | { 784 | "name": "Symfony Community", 785 | "homepage": "https://symfony.com/contributors" 786 | } 787 | ], 788 | "description": "Allows you to standardize and centralize the way objects are constructed in your application", 789 | "homepage": "https://symfony.com", 790 | "support": { 791 | "source": "https://github.com/symfony/dependency-injection/tree/v7.4.2" 792 | }, 793 | "funding": [ 794 | { 795 | "url": "https://symfony.com/sponsor", 796 | "type": "custom" 797 | }, 798 | { 799 | "url": "https://github.com/fabpot", 800 | "type": "github" 801 | }, 802 | { 803 | "url": "https://github.com/nicolas-grekas", 804 | "type": "github" 805 | }, 806 | { 807 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 808 | "type": "tidelift" 809 | } 810 | ], 811 | "time": "2025-12-08T06:57:04+00:00" 812 | }, 813 | { 814 | "name": "symfony/deprecation-contracts", 815 | "version": "v3.6.0", 816 | "source": { 817 | "type": "git", 818 | "url": "https://github.com/symfony/deprecation-contracts.git", 819 | "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62" 820 | }, 821 | "dist": { 822 | "type": "zip", 823 | "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/63afe740e99a13ba87ec199bb07bbdee937a5b62", 824 | "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62", 825 | "shasum": "" 826 | }, 827 | "require": { 828 | "php": ">=8.1" 829 | }, 830 | "type": "library", 831 | "extra": { 832 | "thanks": { 833 | "url": "https://github.com/symfony/contracts", 834 | "name": "symfony/contracts" 835 | }, 836 | "branch-alias": { 837 | "dev-main": "3.6-dev" 838 | } 839 | }, 840 | "autoload": { 841 | "files": [ 842 | "function.php" 843 | ] 844 | }, 845 | "notification-url": "https://packagist.org/downloads/", 846 | "license": [ 847 | "MIT" 848 | ], 849 | "authors": [ 850 | { 851 | "name": "Nicolas Grekas", 852 | "email": "p@tchwork.com" 853 | }, 854 | { 855 | "name": "Symfony Community", 856 | "homepage": "https://symfony.com/contributors" 857 | } 858 | ], 859 | "description": "A generic function and convention to trigger deprecation notices", 860 | "homepage": "https://symfony.com", 861 | "support": { 862 | "source": "https://github.com/symfony/deprecation-contracts/tree/v3.6.0" 863 | }, 864 | "funding": [ 865 | { 866 | "url": "https://symfony.com/sponsor", 867 | "type": "custom" 868 | }, 869 | { 870 | "url": "https://github.com/fabpot", 871 | "type": "github" 872 | }, 873 | { 874 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 875 | "type": "tidelift" 876 | } 877 | ], 878 | "time": "2024-09-25T14:21:43+00:00" 879 | }, 880 | { 881 | "name": "symfony/event-dispatcher", 882 | "version": "v7.4.0", 883 | "source": { 884 | "type": "git", 885 | "url": "https://github.com/symfony/event-dispatcher.git", 886 | "reference": "9dddcddff1ef974ad87b3708e4b442dc38b2261d" 887 | }, 888 | "dist": { 889 | "type": "zip", 890 | "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/9dddcddff1ef974ad87b3708e4b442dc38b2261d", 891 | "reference": "9dddcddff1ef974ad87b3708e4b442dc38b2261d", 892 | "shasum": "" 893 | }, 894 | "require": { 895 | "php": ">=8.2", 896 | "symfony/event-dispatcher-contracts": "^2.5|^3" 897 | }, 898 | "conflict": { 899 | "symfony/dependency-injection": "<6.4", 900 | "symfony/service-contracts": "<2.5" 901 | }, 902 | "provide": { 903 | "psr/event-dispatcher-implementation": "1.0", 904 | "symfony/event-dispatcher-implementation": "2.0|3.0" 905 | }, 906 | "require-dev": { 907 | "psr/log": "^1|^2|^3", 908 | "symfony/config": "^6.4|^7.0|^8.0", 909 | "symfony/dependency-injection": "^6.4|^7.0|^8.0", 910 | "symfony/error-handler": "^6.4|^7.0|^8.0", 911 | "symfony/expression-language": "^6.4|^7.0|^8.0", 912 | "symfony/framework-bundle": "^6.4|^7.0|^8.0", 913 | "symfony/http-foundation": "^6.4|^7.0|^8.0", 914 | "symfony/service-contracts": "^2.5|^3", 915 | "symfony/stopwatch": "^6.4|^7.0|^8.0" 916 | }, 917 | "type": "library", 918 | "autoload": { 919 | "psr-4": { 920 | "Symfony\\Component\\EventDispatcher\\": "" 921 | }, 922 | "exclude-from-classmap": [ 923 | "/Tests/" 924 | ] 925 | }, 926 | "notification-url": "https://packagist.org/downloads/", 927 | "license": [ 928 | "MIT" 929 | ], 930 | "authors": [ 931 | { 932 | "name": "Fabien Potencier", 933 | "email": "fabien@symfony.com" 934 | }, 935 | { 936 | "name": "Symfony Community", 937 | "homepage": "https://symfony.com/contributors" 938 | } 939 | ], 940 | "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", 941 | "homepage": "https://symfony.com", 942 | "support": { 943 | "source": "https://github.com/symfony/event-dispatcher/tree/v7.4.0" 944 | }, 945 | "funding": [ 946 | { 947 | "url": "https://symfony.com/sponsor", 948 | "type": "custom" 949 | }, 950 | { 951 | "url": "https://github.com/fabpot", 952 | "type": "github" 953 | }, 954 | { 955 | "url": "https://github.com/nicolas-grekas", 956 | "type": "github" 957 | }, 958 | { 959 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 960 | "type": "tidelift" 961 | } 962 | ], 963 | "time": "2025-10-28T09:38:46+00:00" 964 | }, 965 | { 966 | "name": "symfony/event-dispatcher-contracts", 967 | "version": "v3.6.0", 968 | "source": { 969 | "type": "git", 970 | "url": "https://github.com/symfony/event-dispatcher-contracts.git", 971 | "reference": "59eb412e93815df44f05f342958efa9f46b1e586" 972 | }, 973 | "dist": { 974 | "type": "zip", 975 | "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/59eb412e93815df44f05f342958efa9f46b1e586", 976 | "reference": "59eb412e93815df44f05f342958efa9f46b1e586", 977 | "shasum": "" 978 | }, 979 | "require": { 980 | "php": ">=8.1", 981 | "psr/event-dispatcher": "^1" 982 | }, 983 | "type": "library", 984 | "extra": { 985 | "thanks": { 986 | "url": "https://github.com/symfony/contracts", 987 | "name": "symfony/contracts" 988 | }, 989 | "branch-alias": { 990 | "dev-main": "3.6-dev" 991 | } 992 | }, 993 | "autoload": { 994 | "psr-4": { 995 | "Symfony\\Contracts\\EventDispatcher\\": "" 996 | } 997 | }, 998 | "notification-url": "https://packagist.org/downloads/", 999 | "license": [ 1000 | "MIT" 1001 | ], 1002 | "authors": [ 1003 | { 1004 | "name": "Nicolas Grekas", 1005 | "email": "p@tchwork.com" 1006 | }, 1007 | { 1008 | "name": "Symfony Community", 1009 | "homepage": "https://symfony.com/contributors" 1010 | } 1011 | ], 1012 | "description": "Generic abstractions related to dispatching event", 1013 | "homepage": "https://symfony.com", 1014 | "keywords": [ 1015 | "abstractions", 1016 | "contracts", 1017 | "decoupling", 1018 | "interfaces", 1019 | "interoperability", 1020 | "standards" 1021 | ], 1022 | "support": { 1023 | "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.6.0" 1024 | }, 1025 | "funding": [ 1026 | { 1027 | "url": "https://symfony.com/sponsor", 1028 | "type": "custom" 1029 | }, 1030 | { 1031 | "url": "https://github.com/fabpot", 1032 | "type": "github" 1033 | }, 1034 | { 1035 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1036 | "type": "tidelift" 1037 | } 1038 | ], 1039 | "time": "2024-09-25T14:21:43+00:00" 1040 | }, 1041 | { 1042 | "name": "symfony/filesystem", 1043 | "version": "v7.4.0", 1044 | "source": { 1045 | "type": "git", 1046 | "url": "https://github.com/symfony/filesystem.git", 1047 | "reference": "d551b38811096d0be9c4691d406991b47c0c630a" 1048 | }, 1049 | "dist": { 1050 | "type": "zip", 1051 | "url": "https://api.github.com/repos/symfony/filesystem/zipball/d551b38811096d0be9c4691d406991b47c0c630a", 1052 | "reference": "d551b38811096d0be9c4691d406991b47c0c630a", 1053 | "shasum": "" 1054 | }, 1055 | "require": { 1056 | "php": ">=8.2", 1057 | "symfony/polyfill-ctype": "~1.8", 1058 | "symfony/polyfill-mbstring": "~1.8" 1059 | }, 1060 | "require-dev": { 1061 | "symfony/process": "^6.4|^7.0|^8.0" 1062 | }, 1063 | "type": "library", 1064 | "autoload": { 1065 | "psr-4": { 1066 | "Symfony\\Component\\Filesystem\\": "" 1067 | }, 1068 | "exclude-from-classmap": [ 1069 | "/Tests/" 1070 | ] 1071 | }, 1072 | "notification-url": "https://packagist.org/downloads/", 1073 | "license": [ 1074 | "MIT" 1075 | ], 1076 | "authors": [ 1077 | { 1078 | "name": "Fabien Potencier", 1079 | "email": "fabien@symfony.com" 1080 | }, 1081 | { 1082 | "name": "Symfony Community", 1083 | "homepage": "https://symfony.com/contributors" 1084 | } 1085 | ], 1086 | "description": "Provides basic utilities for the filesystem", 1087 | "homepage": "https://symfony.com", 1088 | "support": { 1089 | "source": "https://github.com/symfony/filesystem/tree/v7.4.0" 1090 | }, 1091 | "funding": [ 1092 | { 1093 | "url": "https://symfony.com/sponsor", 1094 | "type": "custom" 1095 | }, 1096 | { 1097 | "url": "https://github.com/fabpot", 1098 | "type": "github" 1099 | }, 1100 | { 1101 | "url": "https://github.com/nicolas-grekas", 1102 | "type": "github" 1103 | }, 1104 | { 1105 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1106 | "type": "tidelift" 1107 | } 1108 | ], 1109 | "time": "2025-11-27T13:27:24+00:00" 1110 | }, 1111 | { 1112 | "name": "symfony/polyfill-ctype", 1113 | "version": "v1.33.0", 1114 | "source": { 1115 | "type": "git", 1116 | "url": "https://github.com/symfony/polyfill-ctype.git", 1117 | "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638" 1118 | }, 1119 | "dist": { 1120 | "type": "zip", 1121 | "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638", 1122 | "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638", 1123 | "shasum": "" 1124 | }, 1125 | "require": { 1126 | "php": ">=7.2" 1127 | }, 1128 | "provide": { 1129 | "ext-ctype": "*" 1130 | }, 1131 | "suggest": { 1132 | "ext-ctype": "For best performance" 1133 | }, 1134 | "type": "library", 1135 | "extra": { 1136 | "thanks": { 1137 | "url": "https://github.com/symfony/polyfill", 1138 | "name": "symfony/polyfill" 1139 | } 1140 | }, 1141 | "autoload": { 1142 | "files": [ 1143 | "bootstrap.php" 1144 | ], 1145 | "psr-4": { 1146 | "Symfony\\Polyfill\\Ctype\\": "" 1147 | } 1148 | }, 1149 | "notification-url": "https://packagist.org/downloads/", 1150 | "license": [ 1151 | "MIT" 1152 | ], 1153 | "authors": [ 1154 | { 1155 | "name": "Gert de Pagter", 1156 | "email": "BackEndTea@gmail.com" 1157 | }, 1158 | { 1159 | "name": "Symfony Community", 1160 | "homepage": "https://symfony.com/contributors" 1161 | } 1162 | ], 1163 | "description": "Symfony polyfill for ctype functions", 1164 | "homepage": "https://symfony.com", 1165 | "keywords": [ 1166 | "compatibility", 1167 | "ctype", 1168 | "polyfill", 1169 | "portable" 1170 | ], 1171 | "support": { 1172 | "source": "https://github.com/symfony/polyfill-ctype/tree/v1.33.0" 1173 | }, 1174 | "funding": [ 1175 | { 1176 | "url": "https://symfony.com/sponsor", 1177 | "type": "custom" 1178 | }, 1179 | { 1180 | "url": "https://github.com/fabpot", 1181 | "type": "github" 1182 | }, 1183 | { 1184 | "url": "https://github.com/nicolas-grekas", 1185 | "type": "github" 1186 | }, 1187 | { 1188 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1189 | "type": "tidelift" 1190 | } 1191 | ], 1192 | "time": "2024-09-09T11:45:10+00:00" 1193 | }, 1194 | { 1195 | "name": "symfony/polyfill-intl-grapheme", 1196 | "version": "v1.33.0", 1197 | "source": { 1198 | "type": "git", 1199 | "url": "https://github.com/symfony/polyfill-intl-grapheme.git", 1200 | "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70" 1201 | }, 1202 | "dist": { 1203 | "type": "zip", 1204 | "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/380872130d3a5dd3ace2f4010d95125fde5d5c70", 1205 | "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70", 1206 | "shasum": "" 1207 | }, 1208 | "require": { 1209 | "php": ">=7.2" 1210 | }, 1211 | "suggest": { 1212 | "ext-intl": "For best performance" 1213 | }, 1214 | "type": "library", 1215 | "extra": { 1216 | "thanks": { 1217 | "url": "https://github.com/symfony/polyfill", 1218 | "name": "symfony/polyfill" 1219 | } 1220 | }, 1221 | "autoload": { 1222 | "files": [ 1223 | "bootstrap.php" 1224 | ], 1225 | "psr-4": { 1226 | "Symfony\\Polyfill\\Intl\\Grapheme\\": "" 1227 | } 1228 | }, 1229 | "notification-url": "https://packagist.org/downloads/", 1230 | "license": [ 1231 | "MIT" 1232 | ], 1233 | "authors": [ 1234 | { 1235 | "name": "Nicolas Grekas", 1236 | "email": "p@tchwork.com" 1237 | }, 1238 | { 1239 | "name": "Symfony Community", 1240 | "homepage": "https://symfony.com/contributors" 1241 | } 1242 | ], 1243 | "description": "Symfony polyfill for intl's grapheme_* functions", 1244 | "homepage": "https://symfony.com", 1245 | "keywords": [ 1246 | "compatibility", 1247 | "grapheme", 1248 | "intl", 1249 | "polyfill", 1250 | "portable", 1251 | "shim" 1252 | ], 1253 | "support": { 1254 | "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.33.0" 1255 | }, 1256 | "funding": [ 1257 | { 1258 | "url": "https://symfony.com/sponsor", 1259 | "type": "custom" 1260 | }, 1261 | { 1262 | "url": "https://github.com/fabpot", 1263 | "type": "github" 1264 | }, 1265 | { 1266 | "url": "https://github.com/nicolas-grekas", 1267 | "type": "github" 1268 | }, 1269 | { 1270 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1271 | "type": "tidelift" 1272 | } 1273 | ], 1274 | "time": "2025-06-27T09:58:17+00:00" 1275 | }, 1276 | { 1277 | "name": "symfony/polyfill-intl-normalizer", 1278 | "version": "v1.33.0", 1279 | "source": { 1280 | "type": "git", 1281 | "url": "https://github.com/symfony/polyfill-intl-normalizer.git", 1282 | "reference": "3833d7255cc303546435cb650316bff708a1c75c" 1283 | }, 1284 | "dist": { 1285 | "type": "zip", 1286 | "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c", 1287 | "reference": "3833d7255cc303546435cb650316bff708a1c75c", 1288 | "shasum": "" 1289 | }, 1290 | "require": { 1291 | "php": ">=7.2" 1292 | }, 1293 | "suggest": { 1294 | "ext-intl": "For best performance" 1295 | }, 1296 | "type": "library", 1297 | "extra": { 1298 | "thanks": { 1299 | "url": "https://github.com/symfony/polyfill", 1300 | "name": "symfony/polyfill" 1301 | } 1302 | }, 1303 | "autoload": { 1304 | "files": [ 1305 | "bootstrap.php" 1306 | ], 1307 | "psr-4": { 1308 | "Symfony\\Polyfill\\Intl\\Normalizer\\": "" 1309 | }, 1310 | "classmap": [ 1311 | "Resources/stubs" 1312 | ] 1313 | }, 1314 | "notification-url": "https://packagist.org/downloads/", 1315 | "license": [ 1316 | "MIT" 1317 | ], 1318 | "authors": [ 1319 | { 1320 | "name": "Nicolas Grekas", 1321 | "email": "p@tchwork.com" 1322 | }, 1323 | { 1324 | "name": "Symfony Community", 1325 | "homepage": "https://symfony.com/contributors" 1326 | } 1327 | ], 1328 | "description": "Symfony polyfill for intl's Normalizer class and related functions", 1329 | "homepage": "https://symfony.com", 1330 | "keywords": [ 1331 | "compatibility", 1332 | "intl", 1333 | "normalizer", 1334 | "polyfill", 1335 | "portable", 1336 | "shim" 1337 | ], 1338 | "support": { 1339 | "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.33.0" 1340 | }, 1341 | "funding": [ 1342 | { 1343 | "url": "https://symfony.com/sponsor", 1344 | "type": "custom" 1345 | }, 1346 | { 1347 | "url": "https://github.com/fabpot", 1348 | "type": "github" 1349 | }, 1350 | { 1351 | "url": "https://github.com/nicolas-grekas", 1352 | "type": "github" 1353 | }, 1354 | { 1355 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1356 | "type": "tidelift" 1357 | } 1358 | ], 1359 | "time": "2024-09-09T11:45:10+00:00" 1360 | }, 1361 | { 1362 | "name": "symfony/polyfill-mbstring", 1363 | "version": "v1.33.0", 1364 | "source": { 1365 | "type": "git", 1366 | "url": "https://github.com/symfony/polyfill-mbstring.git", 1367 | "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493" 1368 | }, 1369 | "dist": { 1370 | "type": "zip", 1371 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6d857f4d76bd4b343eac26d6b539585d2bc56493", 1372 | "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493", 1373 | "shasum": "" 1374 | }, 1375 | "require": { 1376 | "ext-iconv": "*", 1377 | "php": ">=7.2" 1378 | }, 1379 | "provide": { 1380 | "ext-mbstring": "*" 1381 | }, 1382 | "suggest": { 1383 | "ext-mbstring": "For best performance" 1384 | }, 1385 | "type": "library", 1386 | "extra": { 1387 | "thanks": { 1388 | "url": "https://github.com/symfony/polyfill", 1389 | "name": "symfony/polyfill" 1390 | } 1391 | }, 1392 | "autoload": { 1393 | "files": [ 1394 | "bootstrap.php" 1395 | ], 1396 | "psr-4": { 1397 | "Symfony\\Polyfill\\Mbstring\\": "" 1398 | } 1399 | }, 1400 | "notification-url": "https://packagist.org/downloads/", 1401 | "license": [ 1402 | "MIT" 1403 | ], 1404 | "authors": [ 1405 | { 1406 | "name": "Nicolas Grekas", 1407 | "email": "p@tchwork.com" 1408 | }, 1409 | { 1410 | "name": "Symfony Community", 1411 | "homepage": "https://symfony.com/contributors" 1412 | } 1413 | ], 1414 | "description": "Symfony polyfill for the Mbstring extension", 1415 | "homepage": "https://symfony.com", 1416 | "keywords": [ 1417 | "compatibility", 1418 | "mbstring", 1419 | "polyfill", 1420 | "portable", 1421 | "shim" 1422 | ], 1423 | "support": { 1424 | "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.33.0" 1425 | }, 1426 | "funding": [ 1427 | { 1428 | "url": "https://symfony.com/sponsor", 1429 | "type": "custom" 1430 | }, 1431 | { 1432 | "url": "https://github.com/fabpot", 1433 | "type": "github" 1434 | }, 1435 | { 1436 | "url": "https://github.com/nicolas-grekas", 1437 | "type": "github" 1438 | }, 1439 | { 1440 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1441 | "type": "tidelift" 1442 | } 1443 | ], 1444 | "time": "2024-12-23T08:48:59+00:00" 1445 | }, 1446 | { 1447 | "name": "symfony/service-contracts", 1448 | "version": "v3.6.1", 1449 | "source": { 1450 | "type": "git", 1451 | "url": "https://github.com/symfony/service-contracts.git", 1452 | "reference": "45112560a3ba2d715666a509a0bc9521d10b6c43" 1453 | }, 1454 | "dist": { 1455 | "type": "zip", 1456 | "url": "https://api.github.com/repos/symfony/service-contracts/zipball/45112560a3ba2d715666a509a0bc9521d10b6c43", 1457 | "reference": "45112560a3ba2d715666a509a0bc9521d10b6c43", 1458 | "shasum": "" 1459 | }, 1460 | "require": { 1461 | "php": ">=8.1", 1462 | "psr/container": "^1.1|^2.0", 1463 | "symfony/deprecation-contracts": "^2.5|^3" 1464 | }, 1465 | "conflict": { 1466 | "ext-psr": "<1.1|>=2" 1467 | }, 1468 | "type": "library", 1469 | "extra": { 1470 | "thanks": { 1471 | "url": "https://github.com/symfony/contracts", 1472 | "name": "symfony/contracts" 1473 | }, 1474 | "branch-alias": { 1475 | "dev-main": "3.6-dev" 1476 | } 1477 | }, 1478 | "autoload": { 1479 | "psr-4": { 1480 | "Symfony\\Contracts\\Service\\": "" 1481 | }, 1482 | "exclude-from-classmap": [ 1483 | "/Test/" 1484 | ] 1485 | }, 1486 | "notification-url": "https://packagist.org/downloads/", 1487 | "license": [ 1488 | "MIT" 1489 | ], 1490 | "authors": [ 1491 | { 1492 | "name": "Nicolas Grekas", 1493 | "email": "p@tchwork.com" 1494 | }, 1495 | { 1496 | "name": "Symfony Community", 1497 | "homepage": "https://symfony.com/contributors" 1498 | } 1499 | ], 1500 | "description": "Generic abstractions related to writing services", 1501 | "homepage": "https://symfony.com", 1502 | "keywords": [ 1503 | "abstractions", 1504 | "contracts", 1505 | "decoupling", 1506 | "interfaces", 1507 | "interoperability", 1508 | "standards" 1509 | ], 1510 | "support": { 1511 | "source": "https://github.com/symfony/service-contracts/tree/v3.6.1" 1512 | }, 1513 | "funding": [ 1514 | { 1515 | "url": "https://symfony.com/sponsor", 1516 | "type": "custom" 1517 | }, 1518 | { 1519 | "url": "https://github.com/fabpot", 1520 | "type": "github" 1521 | }, 1522 | { 1523 | "url": "https://github.com/nicolas-grekas", 1524 | "type": "github" 1525 | }, 1526 | { 1527 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1528 | "type": "tidelift" 1529 | } 1530 | ], 1531 | "time": "2025-07-15T11:30:57+00:00" 1532 | }, 1533 | { 1534 | "name": "symfony/string", 1535 | "version": "v7.4.0", 1536 | "source": { 1537 | "type": "git", 1538 | "url": "https://github.com/symfony/string.git", 1539 | "reference": "d50e862cb0a0e0886f73ca1f31b865efbb795003" 1540 | }, 1541 | "dist": { 1542 | "type": "zip", 1543 | "url": "https://api.github.com/repos/symfony/string/zipball/d50e862cb0a0e0886f73ca1f31b865efbb795003", 1544 | "reference": "d50e862cb0a0e0886f73ca1f31b865efbb795003", 1545 | "shasum": "" 1546 | }, 1547 | "require": { 1548 | "php": ">=8.2", 1549 | "symfony/deprecation-contracts": "^2.5|^3.0", 1550 | "symfony/polyfill-ctype": "~1.8", 1551 | "symfony/polyfill-intl-grapheme": "~1.33", 1552 | "symfony/polyfill-intl-normalizer": "~1.0", 1553 | "symfony/polyfill-mbstring": "~1.0" 1554 | }, 1555 | "conflict": { 1556 | "symfony/translation-contracts": "<2.5" 1557 | }, 1558 | "require-dev": { 1559 | "symfony/emoji": "^7.1|^8.0", 1560 | "symfony/http-client": "^6.4|^7.0|^8.0", 1561 | "symfony/intl": "^6.4|^7.0|^8.0", 1562 | "symfony/translation-contracts": "^2.5|^3.0", 1563 | "symfony/var-exporter": "^6.4|^7.0|^8.0" 1564 | }, 1565 | "type": "library", 1566 | "autoload": { 1567 | "files": [ 1568 | "Resources/functions.php" 1569 | ], 1570 | "psr-4": { 1571 | "Symfony\\Component\\String\\": "" 1572 | }, 1573 | "exclude-from-classmap": [ 1574 | "/Tests/" 1575 | ] 1576 | }, 1577 | "notification-url": "https://packagist.org/downloads/", 1578 | "license": [ 1579 | "MIT" 1580 | ], 1581 | "authors": [ 1582 | { 1583 | "name": "Nicolas Grekas", 1584 | "email": "p@tchwork.com" 1585 | }, 1586 | { 1587 | "name": "Symfony Community", 1588 | "homepage": "https://symfony.com/contributors" 1589 | } 1590 | ], 1591 | "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", 1592 | "homepage": "https://symfony.com", 1593 | "keywords": [ 1594 | "grapheme", 1595 | "i18n", 1596 | "string", 1597 | "unicode", 1598 | "utf-8", 1599 | "utf8" 1600 | ], 1601 | "support": { 1602 | "source": "https://github.com/symfony/string/tree/v7.4.0" 1603 | }, 1604 | "funding": [ 1605 | { 1606 | "url": "https://symfony.com/sponsor", 1607 | "type": "custom" 1608 | }, 1609 | { 1610 | "url": "https://github.com/fabpot", 1611 | "type": "github" 1612 | }, 1613 | { 1614 | "url": "https://github.com/nicolas-grekas", 1615 | "type": "github" 1616 | }, 1617 | { 1618 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1619 | "type": "tidelift" 1620 | } 1621 | ], 1622 | "time": "2025-11-27T13:27:24+00:00" 1623 | }, 1624 | { 1625 | "name": "symfony/translation", 1626 | "version": "v7.4.0", 1627 | "source": { 1628 | "type": "git", 1629 | "url": "https://github.com/symfony/translation.git", 1630 | "reference": "2d01ca0da3f092f91eeedb46f24aa30d2fca8f68" 1631 | }, 1632 | "dist": { 1633 | "type": "zip", 1634 | "url": "https://api.github.com/repos/symfony/translation/zipball/2d01ca0da3f092f91eeedb46f24aa30d2fca8f68", 1635 | "reference": "2d01ca0da3f092f91eeedb46f24aa30d2fca8f68", 1636 | "shasum": "" 1637 | }, 1638 | "require": { 1639 | "php": ">=8.2", 1640 | "symfony/deprecation-contracts": "^2.5|^3", 1641 | "symfony/polyfill-mbstring": "~1.0", 1642 | "symfony/translation-contracts": "^2.5.3|^3.3" 1643 | }, 1644 | "conflict": { 1645 | "nikic/php-parser": "<5.0", 1646 | "symfony/config": "<6.4", 1647 | "symfony/console": "<6.4", 1648 | "symfony/dependency-injection": "<6.4", 1649 | "symfony/http-client-contracts": "<2.5", 1650 | "symfony/http-kernel": "<6.4", 1651 | "symfony/service-contracts": "<2.5", 1652 | "symfony/twig-bundle": "<6.4", 1653 | "symfony/yaml": "<6.4" 1654 | }, 1655 | "provide": { 1656 | "symfony/translation-implementation": "2.3|3.0" 1657 | }, 1658 | "require-dev": { 1659 | "nikic/php-parser": "^5.0", 1660 | "psr/log": "^1|^2|^3", 1661 | "symfony/config": "^6.4|^7.0|^8.0", 1662 | "symfony/console": "^6.4|^7.0|^8.0", 1663 | "symfony/dependency-injection": "^6.4|^7.0|^8.0", 1664 | "symfony/finder": "^6.4|^7.0|^8.0", 1665 | "symfony/http-client-contracts": "^2.5|^3.0", 1666 | "symfony/http-kernel": "^6.4|^7.0|^8.0", 1667 | "symfony/intl": "^6.4|^7.0|^8.0", 1668 | "symfony/polyfill-intl-icu": "^1.21", 1669 | "symfony/routing": "^6.4|^7.0|^8.0", 1670 | "symfony/service-contracts": "^2.5|^3", 1671 | "symfony/yaml": "^6.4|^7.0|^8.0" 1672 | }, 1673 | "type": "library", 1674 | "autoload": { 1675 | "files": [ 1676 | "Resources/functions.php" 1677 | ], 1678 | "psr-4": { 1679 | "Symfony\\Component\\Translation\\": "" 1680 | }, 1681 | "exclude-from-classmap": [ 1682 | "/Tests/" 1683 | ] 1684 | }, 1685 | "notification-url": "https://packagist.org/downloads/", 1686 | "license": [ 1687 | "MIT" 1688 | ], 1689 | "authors": [ 1690 | { 1691 | "name": "Fabien Potencier", 1692 | "email": "fabien@symfony.com" 1693 | }, 1694 | { 1695 | "name": "Symfony Community", 1696 | "homepage": "https://symfony.com/contributors" 1697 | } 1698 | ], 1699 | "description": "Provides tools to internationalize your application", 1700 | "homepage": "https://symfony.com", 1701 | "support": { 1702 | "source": "https://github.com/symfony/translation/tree/v7.4.0" 1703 | }, 1704 | "funding": [ 1705 | { 1706 | "url": "https://symfony.com/sponsor", 1707 | "type": "custom" 1708 | }, 1709 | { 1710 | "url": "https://github.com/fabpot", 1711 | "type": "github" 1712 | }, 1713 | { 1714 | "url": "https://github.com/nicolas-grekas", 1715 | "type": "github" 1716 | }, 1717 | { 1718 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1719 | "type": "tidelift" 1720 | } 1721 | ], 1722 | "time": "2025-11-27T13:27:24+00:00" 1723 | }, 1724 | { 1725 | "name": "symfony/translation-contracts", 1726 | "version": "v3.6.1", 1727 | "source": { 1728 | "type": "git", 1729 | "url": "https://github.com/symfony/translation-contracts.git", 1730 | "reference": "65a8bc82080447fae78373aa10f8d13b38338977" 1731 | }, 1732 | "dist": { 1733 | "type": "zip", 1734 | "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/65a8bc82080447fae78373aa10f8d13b38338977", 1735 | "reference": "65a8bc82080447fae78373aa10f8d13b38338977", 1736 | "shasum": "" 1737 | }, 1738 | "require": { 1739 | "php": ">=8.1" 1740 | }, 1741 | "type": "library", 1742 | "extra": { 1743 | "thanks": { 1744 | "url": "https://github.com/symfony/contracts", 1745 | "name": "symfony/contracts" 1746 | }, 1747 | "branch-alias": { 1748 | "dev-main": "3.6-dev" 1749 | } 1750 | }, 1751 | "autoload": { 1752 | "psr-4": { 1753 | "Symfony\\Contracts\\Translation\\": "" 1754 | }, 1755 | "exclude-from-classmap": [ 1756 | "/Test/" 1757 | ] 1758 | }, 1759 | "notification-url": "https://packagist.org/downloads/", 1760 | "license": [ 1761 | "MIT" 1762 | ], 1763 | "authors": [ 1764 | { 1765 | "name": "Nicolas Grekas", 1766 | "email": "p@tchwork.com" 1767 | }, 1768 | { 1769 | "name": "Symfony Community", 1770 | "homepage": "https://symfony.com/contributors" 1771 | } 1772 | ], 1773 | "description": "Generic abstractions related to translation", 1774 | "homepage": "https://symfony.com", 1775 | "keywords": [ 1776 | "abstractions", 1777 | "contracts", 1778 | "decoupling", 1779 | "interfaces", 1780 | "interoperability", 1781 | "standards" 1782 | ], 1783 | "support": { 1784 | "source": "https://github.com/symfony/translation-contracts/tree/v3.6.1" 1785 | }, 1786 | "funding": [ 1787 | { 1788 | "url": "https://symfony.com/sponsor", 1789 | "type": "custom" 1790 | }, 1791 | { 1792 | "url": "https://github.com/fabpot", 1793 | "type": "github" 1794 | }, 1795 | { 1796 | "url": "https://github.com/nicolas-grekas", 1797 | "type": "github" 1798 | }, 1799 | { 1800 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1801 | "type": "tidelift" 1802 | } 1803 | ], 1804 | "time": "2025-07-15T13:41:35+00:00" 1805 | }, 1806 | { 1807 | "name": "symfony/var-exporter", 1808 | "version": "v7.4.0", 1809 | "source": { 1810 | "type": "git", 1811 | "url": "https://github.com/symfony/var-exporter.git", 1812 | "reference": "03a60f169c79a28513a78c967316fbc8bf17816f" 1813 | }, 1814 | "dist": { 1815 | "type": "zip", 1816 | "url": "https://api.github.com/repos/symfony/var-exporter/zipball/03a60f169c79a28513a78c967316fbc8bf17816f", 1817 | "reference": "03a60f169c79a28513a78c967316fbc8bf17816f", 1818 | "shasum": "" 1819 | }, 1820 | "require": { 1821 | "php": ">=8.2", 1822 | "symfony/deprecation-contracts": "^2.5|^3" 1823 | }, 1824 | "require-dev": { 1825 | "symfony/property-access": "^6.4|^7.0|^8.0", 1826 | "symfony/serializer": "^6.4|^7.0|^8.0", 1827 | "symfony/var-dumper": "^6.4|^7.0|^8.0" 1828 | }, 1829 | "type": "library", 1830 | "autoload": { 1831 | "psr-4": { 1832 | "Symfony\\Component\\VarExporter\\": "" 1833 | }, 1834 | "exclude-from-classmap": [ 1835 | "/Tests/" 1836 | ] 1837 | }, 1838 | "notification-url": "https://packagist.org/downloads/", 1839 | "license": [ 1840 | "MIT" 1841 | ], 1842 | "authors": [ 1843 | { 1844 | "name": "Nicolas Grekas", 1845 | "email": "p@tchwork.com" 1846 | }, 1847 | { 1848 | "name": "Symfony Community", 1849 | "homepage": "https://symfony.com/contributors" 1850 | } 1851 | ], 1852 | "description": "Allows exporting any serializable PHP data structure to plain PHP code", 1853 | "homepage": "https://symfony.com", 1854 | "keywords": [ 1855 | "clone", 1856 | "construct", 1857 | "export", 1858 | "hydrate", 1859 | "instantiate", 1860 | "lazy-loading", 1861 | "proxy", 1862 | "serialize" 1863 | ], 1864 | "support": { 1865 | "source": "https://github.com/symfony/var-exporter/tree/v7.4.0" 1866 | }, 1867 | "funding": [ 1868 | { 1869 | "url": "https://symfony.com/sponsor", 1870 | "type": "custom" 1871 | }, 1872 | { 1873 | "url": "https://github.com/fabpot", 1874 | "type": "github" 1875 | }, 1876 | { 1877 | "url": "https://github.com/nicolas-grekas", 1878 | "type": "github" 1879 | }, 1880 | { 1881 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1882 | "type": "tidelift" 1883 | } 1884 | ], 1885 | "time": "2025-09-11T10:15:23+00:00" 1886 | }, 1887 | { 1888 | "name": "symfony/yaml", 1889 | "version": "v7.4.1", 1890 | "source": { 1891 | "type": "git", 1892 | "url": "https://github.com/symfony/yaml.git", 1893 | "reference": "24dd4de28d2e3988b311751ac49e684d783e2345" 1894 | }, 1895 | "dist": { 1896 | "type": "zip", 1897 | "url": "https://api.github.com/repos/symfony/yaml/zipball/24dd4de28d2e3988b311751ac49e684d783e2345", 1898 | "reference": "24dd4de28d2e3988b311751ac49e684d783e2345", 1899 | "shasum": "" 1900 | }, 1901 | "require": { 1902 | "php": ">=8.2", 1903 | "symfony/deprecation-contracts": "^2.5|^3", 1904 | "symfony/polyfill-ctype": "^1.8" 1905 | }, 1906 | "conflict": { 1907 | "symfony/console": "<6.4" 1908 | }, 1909 | "require-dev": { 1910 | "symfony/console": "^6.4|^7.0|^8.0" 1911 | }, 1912 | "bin": [ 1913 | "Resources/bin/yaml-lint" 1914 | ], 1915 | "type": "library", 1916 | "autoload": { 1917 | "psr-4": { 1918 | "Symfony\\Component\\Yaml\\": "" 1919 | }, 1920 | "exclude-from-classmap": [ 1921 | "/Tests/" 1922 | ] 1923 | }, 1924 | "notification-url": "https://packagist.org/downloads/", 1925 | "license": [ 1926 | "MIT" 1927 | ], 1928 | "authors": [ 1929 | { 1930 | "name": "Fabien Potencier", 1931 | "email": "fabien@symfony.com" 1932 | }, 1933 | { 1934 | "name": "Symfony Community", 1935 | "homepage": "https://symfony.com/contributors" 1936 | } 1937 | ], 1938 | "description": "Loads and dumps YAML files", 1939 | "homepage": "https://symfony.com", 1940 | "support": { 1941 | "source": "https://github.com/symfony/yaml/tree/v7.4.1" 1942 | }, 1943 | "funding": [ 1944 | { 1945 | "url": "https://symfony.com/sponsor", 1946 | "type": "custom" 1947 | }, 1948 | { 1949 | "url": "https://github.com/fabpot", 1950 | "type": "github" 1951 | }, 1952 | { 1953 | "url": "https://github.com/nicolas-grekas", 1954 | "type": "github" 1955 | }, 1956 | { 1957 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1958 | "type": "tidelift" 1959 | } 1960 | ], 1961 | "time": "2025-12-04T18:11:45+00:00" 1962 | } 1963 | ], 1964 | "packages-dev": [ 1965 | { 1966 | "name": "brick/varexporter", 1967 | "version": "0.6.0", 1968 | "source": { 1969 | "type": "git", 1970 | "url": "https://github.com/brick/varexporter.git", 1971 | "reference": "af98bfc2b702a312abbcaff37656dbe419cec5bc" 1972 | }, 1973 | "dist": { 1974 | "type": "zip", 1975 | "url": "https://api.github.com/repos/brick/varexporter/zipball/af98bfc2b702a312abbcaff37656dbe419cec5bc", 1976 | "reference": "af98bfc2b702a312abbcaff37656dbe419cec5bc", 1977 | "shasum": "" 1978 | }, 1979 | "require": { 1980 | "nikic/php-parser": "^5.0", 1981 | "php": "^8.1" 1982 | }, 1983 | "require-dev": { 1984 | "php-coveralls/php-coveralls": "^2.2", 1985 | "phpunit/phpunit": "^10.5", 1986 | "vimeo/psalm": "6.8.4" 1987 | }, 1988 | "type": "library", 1989 | "autoload": { 1990 | "psr-4": { 1991 | "Brick\\VarExporter\\": "src/" 1992 | } 1993 | }, 1994 | "notification-url": "https://packagist.org/downloads/", 1995 | "license": [ 1996 | "MIT" 1997 | ], 1998 | "description": "A powerful alternative to var_export(), which can export closures and objects without __set_state()", 1999 | "keywords": [ 2000 | "var_export" 2001 | ], 2002 | "support": { 2003 | "issues": "https://github.com/brick/varexporter/issues", 2004 | "source": "https://github.com/brick/varexporter/tree/0.6.0" 2005 | }, 2006 | "funding": [ 2007 | { 2008 | "url": "https://github.com/BenMorel", 2009 | "type": "github" 2010 | } 2011 | ], 2012 | "time": "2025-02-20T17:42:39+00:00" 2013 | }, 2014 | { 2015 | "name": "dealerdirect/phpcodesniffer-composer-installer", 2016 | "version": "v1.2.0", 2017 | "source": { 2018 | "type": "git", 2019 | "url": "https://github.com/PHPCSStandards/composer-installer.git", 2020 | "reference": "845eb62303d2ca9b289ef216356568ccc075ffd1" 2021 | }, 2022 | "dist": { 2023 | "type": "zip", 2024 | "url": "https://api.github.com/repos/PHPCSStandards/composer-installer/zipball/845eb62303d2ca9b289ef216356568ccc075ffd1", 2025 | "reference": "845eb62303d2ca9b289ef216356568ccc075ffd1", 2026 | "shasum": "" 2027 | }, 2028 | "require": { 2029 | "composer-plugin-api": "^2.2", 2030 | "php": ">=5.4", 2031 | "squizlabs/php_codesniffer": "^3.1.0 || ^4.0" 2032 | }, 2033 | "require-dev": { 2034 | "composer/composer": "^2.2", 2035 | "ext-json": "*", 2036 | "ext-zip": "*", 2037 | "php-parallel-lint/php-parallel-lint": "^1.4.0", 2038 | "phpcompatibility/php-compatibility": "^9.0 || ^10.0.0@dev", 2039 | "yoast/phpunit-polyfills": "^1.0" 2040 | }, 2041 | "type": "composer-plugin", 2042 | "extra": { 2043 | "class": "PHPCSStandards\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin" 2044 | }, 2045 | "autoload": { 2046 | "psr-4": { 2047 | "PHPCSStandards\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/" 2048 | } 2049 | }, 2050 | "notification-url": "https://packagist.org/downloads/", 2051 | "license": [ 2052 | "MIT" 2053 | ], 2054 | "authors": [ 2055 | { 2056 | "name": "Franck Nijhof", 2057 | "email": "opensource@frenck.dev", 2058 | "homepage": "https://frenck.dev", 2059 | "role": "Open source developer" 2060 | }, 2061 | { 2062 | "name": "Contributors", 2063 | "homepage": "https://github.com/PHPCSStandards/composer-installer/graphs/contributors" 2064 | } 2065 | ], 2066 | "description": "PHP_CodeSniffer Standards Composer Installer Plugin", 2067 | "keywords": [ 2068 | "PHPCodeSniffer", 2069 | "PHP_CodeSniffer", 2070 | "code quality", 2071 | "codesniffer", 2072 | "composer", 2073 | "installer", 2074 | "phpcbf", 2075 | "phpcs", 2076 | "plugin", 2077 | "qa", 2078 | "quality", 2079 | "standard", 2080 | "standards", 2081 | "style guide", 2082 | "stylecheck", 2083 | "tests" 2084 | ], 2085 | "support": { 2086 | "issues": "https://github.com/PHPCSStandards/composer-installer/issues", 2087 | "security": "https://github.com/PHPCSStandards/composer-installer/security/policy", 2088 | "source": "https://github.com/PHPCSStandards/composer-installer" 2089 | }, 2090 | "funding": [ 2091 | { 2092 | "url": "https://github.com/PHPCSStandards", 2093 | "type": "github" 2094 | }, 2095 | { 2096 | "url": "https://github.com/jrfnl", 2097 | "type": "github" 2098 | }, 2099 | { 2100 | "url": "https://opencollective.com/php_codesniffer", 2101 | "type": "open_collective" 2102 | }, 2103 | { 2104 | "url": "https://thanks.dev/u/gh/phpcsstandards", 2105 | "type": "thanks_dev" 2106 | } 2107 | ], 2108 | "time": "2025-11-11T04:32:07+00:00" 2109 | }, 2110 | { 2111 | "name": "doctrine/coding-standard", 2112 | "version": "14.0.0", 2113 | "source": { 2114 | "type": "git", 2115 | "url": "https://github.com/doctrine/coding-standard.git", 2116 | "reference": "897a7dc209e49ee6cf04e689c41112df17967130" 2117 | }, 2118 | "dist": { 2119 | "type": "zip", 2120 | "url": "https://api.github.com/repos/doctrine/coding-standard/zipball/897a7dc209e49ee6cf04e689c41112df17967130", 2121 | "reference": "897a7dc209e49ee6cf04e689c41112df17967130", 2122 | "shasum": "" 2123 | }, 2124 | "require": { 2125 | "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7 || ^1.0.0", 2126 | "php": "^7.4 || ^8.0", 2127 | "slevomat/coding-standard": "^8.23", 2128 | "squizlabs/php_codesniffer": "^4" 2129 | }, 2130 | "type": "phpcodesniffer-standard", 2131 | "notification-url": "https://packagist.org/downloads/", 2132 | "license": [ 2133 | "MIT" 2134 | ], 2135 | "authors": [ 2136 | { 2137 | "name": "Benjamin Eberlei", 2138 | "email": "kontakt@beberlei.de" 2139 | }, 2140 | { 2141 | "name": "Steve Müller", 2142 | "email": "st.mueller@dzh-online.de" 2143 | } 2144 | ], 2145 | "description": "The Doctrine Coding Standard is a set of PHPCS rules applied to all Doctrine projects.", 2146 | "homepage": "https://www.doctrine-project.org/projects/coding-standard.html", 2147 | "keywords": [ 2148 | "checks", 2149 | "code", 2150 | "coding", 2151 | "cs", 2152 | "dev", 2153 | "doctrine", 2154 | "rules", 2155 | "sniffer", 2156 | "sniffs", 2157 | "standard", 2158 | "style" 2159 | ], 2160 | "support": { 2161 | "issues": "https://github.com/doctrine/coding-standard/issues", 2162 | "source": "https://github.com/doctrine/coding-standard/tree/14.0.0" 2163 | }, 2164 | "time": "2025-09-21T18:21:47+00:00" 2165 | }, 2166 | { 2167 | "name": "laminas/laminas-servicemanager", 2168 | "version": "4.5.0", 2169 | "source": { 2170 | "type": "git", 2171 | "url": "https://github.com/laminas/laminas-servicemanager.git", 2172 | "reference": "a6996829c8ce55025cca1b57b1e8a8b165e3926c" 2173 | }, 2174 | "dist": { 2175 | "type": "zip", 2176 | "url": "https://api.github.com/repos/laminas/laminas-servicemanager/zipball/a6996829c8ce55025cca1b57b1e8a8b165e3926c", 2177 | "reference": "a6996829c8ce55025cca1b57b1e8a8b165e3926c", 2178 | "shasum": "" 2179 | }, 2180 | "require": { 2181 | "brick/varexporter": "^0.3.8 || ^0.4.0 || ^0.5.0 || ^0.6.0", 2182 | "laminas/laminas-stdlib": "^3.19", 2183 | "php": "~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0", 2184 | "psr/container": "^1.1 || ^2.0" 2185 | }, 2186 | "conflict": { 2187 | "laminas/laminas-code": "<4.10.0", 2188 | "zendframework/zend-code": "<3.3.1" 2189 | }, 2190 | "provide": { 2191 | "psr/container-implementation": "^1.0 || ^2.0" 2192 | }, 2193 | "require-dev": { 2194 | "composer/package-versions-deprecated": "^1.11.99.5", 2195 | "friendsofphp/proxy-manager-lts": "^1.0.18", 2196 | "laminas/laminas-cli": "^1.11", 2197 | "laminas/laminas-coding-standard": "~3.1.0", 2198 | "laminas/laminas-container-config-test": "^1.1", 2199 | "mikey179/vfsstream": "^1.6.12", 2200 | "phpbench/phpbench": "^1.4.1", 2201 | "phpunit/phpunit": "^10.5.58", 2202 | "psalm/plugin-phpunit": "^0.19.5", 2203 | "symfony/console": "^6.4.17 || ^7.3.4", 2204 | "vimeo/psalm": "^6.13.1" 2205 | }, 2206 | "suggest": { 2207 | "friendsofphp/proxy-manager-lts": "To handle lazy initialization of services", 2208 | "laminas/laminas-cli": "To consume CLI commands provided by this component" 2209 | }, 2210 | "type": "library", 2211 | "extra": { 2212 | "laminas": { 2213 | "module": "Laminas\\ServiceManager", 2214 | "config-provider": "Laminas\\ServiceManager\\ConfigProvider" 2215 | } 2216 | }, 2217 | "autoload": { 2218 | "psr-4": { 2219 | "Laminas\\ServiceManager\\": "src/" 2220 | } 2221 | }, 2222 | "notification-url": "https://packagist.org/downloads/", 2223 | "license": [ 2224 | "BSD-3-Clause" 2225 | ], 2226 | "description": "Factory-Driven Dependency Injection Container", 2227 | "homepage": "https://laminas.dev", 2228 | "keywords": [ 2229 | "PSR-11", 2230 | "dependency-injection", 2231 | "di", 2232 | "dic", 2233 | "laminas", 2234 | "service-manager", 2235 | "servicemanager" 2236 | ], 2237 | "support": { 2238 | "chat": "https://laminas.dev/chat", 2239 | "forum": "https://discourse.laminas.dev", 2240 | "issues": "https://github.com/laminas/laminas-servicemanager/issues", 2241 | "source": "https://github.com/laminas/laminas-servicemanager/tree/4.5.0" 2242 | }, 2243 | "funding": [ 2244 | { 2245 | "url": "https://funding.communitybridge.org/projects/laminas-project", 2246 | "type": "community_bridge" 2247 | } 2248 | ], 2249 | "time": "2025-10-14T09:41:04+00:00" 2250 | }, 2251 | { 2252 | "name": "laminas/laminas-stdlib", 2253 | "version": "3.21.0", 2254 | "source": { 2255 | "type": "git", 2256 | "url": "https://github.com/laminas/laminas-stdlib.git", 2257 | "reference": "b1c81514cfe158aadf724c42b34d3d0a8164c096" 2258 | }, 2259 | "dist": { 2260 | "type": "zip", 2261 | "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/b1c81514cfe158aadf724c42b34d3d0a8164c096", 2262 | "reference": "b1c81514cfe158aadf724c42b34d3d0a8164c096", 2263 | "shasum": "" 2264 | }, 2265 | "require": { 2266 | "php": "~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0" 2267 | }, 2268 | "conflict": { 2269 | "zendframework/zend-stdlib": "*" 2270 | }, 2271 | "require-dev": { 2272 | "laminas/laminas-coding-standard": "^3.1.0", 2273 | "phpbench/phpbench": "^1.4.1", 2274 | "phpunit/phpunit": "^11.5.42", 2275 | "psalm/plugin-phpunit": "^0.19.5", 2276 | "vimeo/psalm": "^6.13.1" 2277 | }, 2278 | "type": "library", 2279 | "autoload": { 2280 | "psr-4": { 2281 | "Laminas\\Stdlib\\": "src/" 2282 | } 2283 | }, 2284 | "notification-url": "https://packagist.org/downloads/", 2285 | "license": [ 2286 | "BSD-3-Clause" 2287 | ], 2288 | "description": "SPL extensions, array utilities, error handlers, and more", 2289 | "homepage": "https://laminas.dev", 2290 | "keywords": [ 2291 | "laminas", 2292 | "stdlib" 2293 | ], 2294 | "support": { 2295 | "chat": "https://laminas.dev/chat", 2296 | "docs": "https://docs.laminas.dev/laminas-stdlib/", 2297 | "forum": "https://discourse.laminas.dev", 2298 | "issues": "https://github.com/laminas/laminas-stdlib/issues", 2299 | "rss": "https://github.com/laminas/laminas-stdlib/releases.atom", 2300 | "source": "https://github.com/laminas/laminas-stdlib" 2301 | }, 2302 | "funding": [ 2303 | { 2304 | "url": "https://funding.communitybridge.org/projects/laminas-project", 2305 | "type": "community_bridge" 2306 | } 2307 | ], 2308 | "time": "2025-10-11T18:13:12+00:00" 2309 | }, 2310 | { 2311 | "name": "myclabs/deep-copy", 2312 | "version": "1.13.4", 2313 | "source": { 2314 | "type": "git", 2315 | "url": "https://github.com/myclabs/DeepCopy.git", 2316 | "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a" 2317 | }, 2318 | "dist": { 2319 | "type": "zip", 2320 | "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/07d290f0c47959fd5eed98c95ee5602db07e0b6a", 2321 | "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a", 2322 | "shasum": "" 2323 | }, 2324 | "require": { 2325 | "php": "^7.1 || ^8.0" 2326 | }, 2327 | "conflict": { 2328 | "doctrine/collections": "<1.6.8", 2329 | "doctrine/common": "<2.13.3 || >=3 <3.2.2" 2330 | }, 2331 | "require-dev": { 2332 | "doctrine/collections": "^1.6.8", 2333 | "doctrine/common": "^2.13.3 || ^3.2.2", 2334 | "phpspec/prophecy": "^1.10", 2335 | "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" 2336 | }, 2337 | "type": "library", 2338 | "autoload": { 2339 | "files": [ 2340 | "src/DeepCopy/deep_copy.php" 2341 | ], 2342 | "psr-4": { 2343 | "DeepCopy\\": "src/DeepCopy/" 2344 | } 2345 | }, 2346 | "notification-url": "https://packagist.org/downloads/", 2347 | "license": [ 2348 | "MIT" 2349 | ], 2350 | "description": "Create deep copies (clones) of your objects", 2351 | "keywords": [ 2352 | "clone", 2353 | "copy", 2354 | "duplicate", 2355 | "object", 2356 | "object graph" 2357 | ], 2358 | "support": { 2359 | "issues": "https://github.com/myclabs/DeepCopy/issues", 2360 | "source": "https://github.com/myclabs/DeepCopy/tree/1.13.4" 2361 | }, 2362 | "funding": [ 2363 | { 2364 | "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", 2365 | "type": "tidelift" 2366 | } 2367 | ], 2368 | "time": "2025-08-01T08:46:24+00:00" 2369 | }, 2370 | { 2371 | "name": "phar-io/manifest", 2372 | "version": "2.0.4", 2373 | "source": { 2374 | "type": "git", 2375 | "url": "https://github.com/phar-io/manifest.git", 2376 | "reference": "54750ef60c58e43759730615a392c31c80e23176" 2377 | }, 2378 | "dist": { 2379 | "type": "zip", 2380 | "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", 2381 | "reference": "54750ef60c58e43759730615a392c31c80e23176", 2382 | "shasum": "" 2383 | }, 2384 | "require": { 2385 | "ext-dom": "*", 2386 | "ext-libxml": "*", 2387 | "ext-phar": "*", 2388 | "ext-xmlwriter": "*", 2389 | "phar-io/version": "^3.0.1", 2390 | "php": "^7.2 || ^8.0" 2391 | }, 2392 | "type": "library", 2393 | "extra": { 2394 | "branch-alias": { 2395 | "dev-master": "2.0.x-dev" 2396 | } 2397 | }, 2398 | "autoload": { 2399 | "classmap": [ 2400 | "src/" 2401 | ] 2402 | }, 2403 | "notification-url": "https://packagist.org/downloads/", 2404 | "license": [ 2405 | "BSD-3-Clause" 2406 | ], 2407 | "authors": [ 2408 | { 2409 | "name": "Arne Blankerts", 2410 | "email": "arne@blankerts.de", 2411 | "role": "Developer" 2412 | }, 2413 | { 2414 | "name": "Sebastian Heuer", 2415 | "email": "sebastian@phpeople.de", 2416 | "role": "Developer" 2417 | }, 2418 | { 2419 | "name": "Sebastian Bergmann", 2420 | "email": "sebastian@phpunit.de", 2421 | "role": "Developer" 2422 | } 2423 | ], 2424 | "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", 2425 | "support": { 2426 | "issues": "https://github.com/phar-io/manifest/issues", 2427 | "source": "https://github.com/phar-io/manifest/tree/2.0.4" 2428 | }, 2429 | "funding": [ 2430 | { 2431 | "url": "https://github.com/theseer", 2432 | "type": "github" 2433 | } 2434 | ], 2435 | "time": "2024-03-03T12:33:53+00:00" 2436 | }, 2437 | { 2438 | "name": "phar-io/version", 2439 | "version": "3.2.1", 2440 | "source": { 2441 | "type": "git", 2442 | "url": "https://github.com/phar-io/version.git", 2443 | "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" 2444 | }, 2445 | "dist": { 2446 | "type": "zip", 2447 | "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", 2448 | "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", 2449 | "shasum": "" 2450 | }, 2451 | "require": { 2452 | "php": "^7.2 || ^8.0" 2453 | }, 2454 | "type": "library", 2455 | "autoload": { 2456 | "classmap": [ 2457 | "src/" 2458 | ] 2459 | }, 2460 | "notification-url": "https://packagist.org/downloads/", 2461 | "license": [ 2462 | "BSD-3-Clause" 2463 | ], 2464 | "authors": [ 2465 | { 2466 | "name": "Arne Blankerts", 2467 | "email": "arne@blankerts.de", 2468 | "role": "Developer" 2469 | }, 2470 | { 2471 | "name": "Sebastian Heuer", 2472 | "email": "sebastian@phpeople.de", 2473 | "role": "Developer" 2474 | }, 2475 | { 2476 | "name": "Sebastian Bergmann", 2477 | "email": "sebastian@phpunit.de", 2478 | "role": "Developer" 2479 | } 2480 | ], 2481 | "description": "Library for handling version information and constraints", 2482 | "support": { 2483 | "issues": "https://github.com/phar-io/version/issues", 2484 | "source": "https://github.com/phar-io/version/tree/3.2.1" 2485 | }, 2486 | "time": "2022-02-21T01:04:05+00:00" 2487 | }, 2488 | { 2489 | "name": "phpstan/phpdoc-parser", 2490 | "version": "2.3.0", 2491 | "source": { 2492 | "type": "git", 2493 | "url": "https://github.com/phpstan/phpdoc-parser.git", 2494 | "reference": "1e0cd5370df5dd2e556a36b9c62f62e555870495" 2495 | }, 2496 | "dist": { 2497 | "type": "zip", 2498 | "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/1e0cd5370df5dd2e556a36b9c62f62e555870495", 2499 | "reference": "1e0cd5370df5dd2e556a36b9c62f62e555870495", 2500 | "shasum": "" 2501 | }, 2502 | "require": { 2503 | "php": "^7.4 || ^8.0" 2504 | }, 2505 | "require-dev": { 2506 | "doctrine/annotations": "^2.0", 2507 | "nikic/php-parser": "^5.3.0", 2508 | "php-parallel-lint/php-parallel-lint": "^1.2", 2509 | "phpstan/extension-installer": "^1.0", 2510 | "phpstan/phpstan": "^2.0", 2511 | "phpstan/phpstan-phpunit": "^2.0", 2512 | "phpstan/phpstan-strict-rules": "^2.0", 2513 | "phpunit/phpunit": "^9.6", 2514 | "symfony/process": "^5.2" 2515 | }, 2516 | "type": "library", 2517 | "autoload": { 2518 | "psr-4": { 2519 | "PHPStan\\PhpDocParser\\": [ 2520 | "src/" 2521 | ] 2522 | } 2523 | }, 2524 | "notification-url": "https://packagist.org/downloads/", 2525 | "license": [ 2526 | "MIT" 2527 | ], 2528 | "description": "PHPDoc parser with support for nullable, intersection and generic types", 2529 | "support": { 2530 | "issues": "https://github.com/phpstan/phpdoc-parser/issues", 2531 | "source": "https://github.com/phpstan/phpdoc-parser/tree/2.3.0" 2532 | }, 2533 | "time": "2025-08-30T15:50:23+00:00" 2534 | }, 2535 | { 2536 | "name": "phpunit/php-code-coverage", 2537 | "version": "12.5.1", 2538 | "source": { 2539 | "type": "git", 2540 | "url": "https://github.com/sebastianbergmann/php-code-coverage.git", 2541 | "reference": "c467c59a4f6e04b942be422844e7a6352fa01b57" 2542 | }, 2543 | "dist": { 2544 | "type": "zip", 2545 | "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c467c59a4f6e04b942be422844e7a6352fa01b57", 2546 | "reference": "c467c59a4f6e04b942be422844e7a6352fa01b57", 2547 | "shasum": "" 2548 | }, 2549 | "require": { 2550 | "ext-dom": "*", 2551 | "ext-libxml": "*", 2552 | "ext-xmlwriter": "*", 2553 | "nikic/php-parser": "^5.7.0", 2554 | "php": ">=8.3", 2555 | "phpunit/php-file-iterator": "^6.0", 2556 | "phpunit/php-text-template": "^5.0", 2557 | "sebastian/complexity": "^5.0", 2558 | "sebastian/environment": "^8.0.3", 2559 | "sebastian/lines-of-code": "^4.0", 2560 | "sebastian/version": "^6.0", 2561 | "theseer/tokenizer": "^2.0" 2562 | }, 2563 | "require-dev": { 2564 | "phpunit/phpunit": "^12.5.1" 2565 | }, 2566 | "suggest": { 2567 | "ext-pcov": "PHP extension that provides line coverage", 2568 | "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" 2569 | }, 2570 | "type": "library", 2571 | "extra": { 2572 | "branch-alias": { 2573 | "dev-main": "12.5.x-dev" 2574 | } 2575 | }, 2576 | "autoload": { 2577 | "classmap": [ 2578 | "src/" 2579 | ] 2580 | }, 2581 | "notification-url": "https://packagist.org/downloads/", 2582 | "license": [ 2583 | "BSD-3-Clause" 2584 | ], 2585 | "authors": [ 2586 | { 2587 | "name": "Sebastian Bergmann", 2588 | "email": "sebastian@phpunit.de", 2589 | "role": "lead" 2590 | } 2591 | ], 2592 | "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", 2593 | "homepage": "https://github.com/sebastianbergmann/php-code-coverage", 2594 | "keywords": [ 2595 | "coverage", 2596 | "testing", 2597 | "xunit" 2598 | ], 2599 | "support": { 2600 | "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", 2601 | "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", 2602 | "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/12.5.1" 2603 | }, 2604 | "funding": [ 2605 | { 2606 | "url": "https://github.com/sebastianbergmann", 2607 | "type": "github" 2608 | }, 2609 | { 2610 | "url": "https://liberapay.com/sebastianbergmann", 2611 | "type": "liberapay" 2612 | }, 2613 | { 2614 | "url": "https://thanks.dev/u/gh/sebastianbergmann", 2615 | "type": "thanks_dev" 2616 | }, 2617 | { 2618 | "url": "https://tidelift.com/funding/github/packagist/phpunit/php-code-coverage", 2619 | "type": "tidelift" 2620 | } 2621 | ], 2622 | "time": "2025-12-08T07:17:58+00:00" 2623 | }, 2624 | { 2625 | "name": "phpunit/php-file-iterator", 2626 | "version": "6.0.0", 2627 | "source": { 2628 | "type": "git", 2629 | "url": "https://github.com/sebastianbergmann/php-file-iterator.git", 2630 | "reference": "961bc913d42fe24a257bfff826a5068079ac7782" 2631 | }, 2632 | "dist": { 2633 | "type": "zip", 2634 | "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/961bc913d42fe24a257bfff826a5068079ac7782", 2635 | "reference": "961bc913d42fe24a257bfff826a5068079ac7782", 2636 | "shasum": "" 2637 | }, 2638 | "require": { 2639 | "php": ">=8.3" 2640 | }, 2641 | "require-dev": { 2642 | "phpunit/phpunit": "^12.0" 2643 | }, 2644 | "type": "library", 2645 | "extra": { 2646 | "branch-alias": { 2647 | "dev-main": "6.0-dev" 2648 | } 2649 | }, 2650 | "autoload": { 2651 | "classmap": [ 2652 | "src/" 2653 | ] 2654 | }, 2655 | "notification-url": "https://packagist.org/downloads/", 2656 | "license": [ 2657 | "BSD-3-Clause" 2658 | ], 2659 | "authors": [ 2660 | { 2661 | "name": "Sebastian Bergmann", 2662 | "email": "sebastian@phpunit.de", 2663 | "role": "lead" 2664 | } 2665 | ], 2666 | "description": "FilterIterator implementation that filters files based on a list of suffixes.", 2667 | "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", 2668 | "keywords": [ 2669 | "filesystem", 2670 | "iterator" 2671 | ], 2672 | "support": { 2673 | "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", 2674 | "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", 2675 | "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/6.0.0" 2676 | }, 2677 | "funding": [ 2678 | { 2679 | "url": "https://github.com/sebastianbergmann", 2680 | "type": "github" 2681 | } 2682 | ], 2683 | "time": "2025-02-07T04:58:37+00:00" 2684 | }, 2685 | { 2686 | "name": "phpunit/php-invoker", 2687 | "version": "6.0.0", 2688 | "source": { 2689 | "type": "git", 2690 | "url": "https://github.com/sebastianbergmann/php-invoker.git", 2691 | "reference": "12b54e689b07a25a9b41e57736dfab6ec9ae5406" 2692 | }, 2693 | "dist": { 2694 | "type": "zip", 2695 | "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/12b54e689b07a25a9b41e57736dfab6ec9ae5406", 2696 | "reference": "12b54e689b07a25a9b41e57736dfab6ec9ae5406", 2697 | "shasum": "" 2698 | }, 2699 | "require": { 2700 | "php": ">=8.3" 2701 | }, 2702 | "require-dev": { 2703 | "ext-pcntl": "*", 2704 | "phpunit/phpunit": "^12.0" 2705 | }, 2706 | "suggest": { 2707 | "ext-pcntl": "*" 2708 | }, 2709 | "type": "library", 2710 | "extra": { 2711 | "branch-alias": { 2712 | "dev-main": "6.0-dev" 2713 | } 2714 | }, 2715 | "autoload": { 2716 | "classmap": [ 2717 | "src/" 2718 | ] 2719 | }, 2720 | "notification-url": "https://packagist.org/downloads/", 2721 | "license": [ 2722 | "BSD-3-Clause" 2723 | ], 2724 | "authors": [ 2725 | { 2726 | "name": "Sebastian Bergmann", 2727 | "email": "sebastian@phpunit.de", 2728 | "role": "lead" 2729 | } 2730 | ], 2731 | "description": "Invoke callables with a timeout", 2732 | "homepage": "https://github.com/sebastianbergmann/php-invoker/", 2733 | "keywords": [ 2734 | "process" 2735 | ], 2736 | "support": { 2737 | "issues": "https://github.com/sebastianbergmann/php-invoker/issues", 2738 | "security": "https://github.com/sebastianbergmann/php-invoker/security/policy", 2739 | "source": "https://github.com/sebastianbergmann/php-invoker/tree/6.0.0" 2740 | }, 2741 | "funding": [ 2742 | { 2743 | "url": "https://github.com/sebastianbergmann", 2744 | "type": "github" 2745 | } 2746 | ], 2747 | "time": "2025-02-07T04:58:58+00:00" 2748 | }, 2749 | { 2750 | "name": "phpunit/php-text-template", 2751 | "version": "5.0.0", 2752 | "source": { 2753 | "type": "git", 2754 | "url": "https://github.com/sebastianbergmann/php-text-template.git", 2755 | "reference": "e1367a453f0eda562eedb4f659e13aa900d66c53" 2756 | }, 2757 | "dist": { 2758 | "type": "zip", 2759 | "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/e1367a453f0eda562eedb4f659e13aa900d66c53", 2760 | "reference": "e1367a453f0eda562eedb4f659e13aa900d66c53", 2761 | "shasum": "" 2762 | }, 2763 | "require": { 2764 | "php": ">=8.3" 2765 | }, 2766 | "require-dev": { 2767 | "phpunit/phpunit": "^12.0" 2768 | }, 2769 | "type": "library", 2770 | "extra": { 2771 | "branch-alias": { 2772 | "dev-main": "5.0-dev" 2773 | } 2774 | }, 2775 | "autoload": { 2776 | "classmap": [ 2777 | "src/" 2778 | ] 2779 | }, 2780 | "notification-url": "https://packagist.org/downloads/", 2781 | "license": [ 2782 | "BSD-3-Clause" 2783 | ], 2784 | "authors": [ 2785 | { 2786 | "name": "Sebastian Bergmann", 2787 | "email": "sebastian@phpunit.de", 2788 | "role": "lead" 2789 | } 2790 | ], 2791 | "description": "Simple template engine.", 2792 | "homepage": "https://github.com/sebastianbergmann/php-text-template/", 2793 | "keywords": [ 2794 | "template" 2795 | ], 2796 | "support": { 2797 | "issues": "https://github.com/sebastianbergmann/php-text-template/issues", 2798 | "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", 2799 | "source": "https://github.com/sebastianbergmann/php-text-template/tree/5.0.0" 2800 | }, 2801 | "funding": [ 2802 | { 2803 | "url": "https://github.com/sebastianbergmann", 2804 | "type": "github" 2805 | } 2806 | ], 2807 | "time": "2025-02-07T04:59:16+00:00" 2808 | }, 2809 | { 2810 | "name": "phpunit/php-timer", 2811 | "version": "8.0.0", 2812 | "source": { 2813 | "type": "git", 2814 | "url": "https://github.com/sebastianbergmann/php-timer.git", 2815 | "reference": "f258ce36aa457f3aa3339f9ed4c81fc66dc8c2cc" 2816 | }, 2817 | "dist": { 2818 | "type": "zip", 2819 | "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/f258ce36aa457f3aa3339f9ed4c81fc66dc8c2cc", 2820 | "reference": "f258ce36aa457f3aa3339f9ed4c81fc66dc8c2cc", 2821 | "shasum": "" 2822 | }, 2823 | "require": { 2824 | "php": ">=8.3" 2825 | }, 2826 | "require-dev": { 2827 | "phpunit/phpunit": "^12.0" 2828 | }, 2829 | "type": "library", 2830 | "extra": { 2831 | "branch-alias": { 2832 | "dev-main": "8.0-dev" 2833 | } 2834 | }, 2835 | "autoload": { 2836 | "classmap": [ 2837 | "src/" 2838 | ] 2839 | }, 2840 | "notification-url": "https://packagist.org/downloads/", 2841 | "license": [ 2842 | "BSD-3-Clause" 2843 | ], 2844 | "authors": [ 2845 | { 2846 | "name": "Sebastian Bergmann", 2847 | "email": "sebastian@phpunit.de", 2848 | "role": "lead" 2849 | } 2850 | ], 2851 | "description": "Utility class for timing", 2852 | "homepage": "https://github.com/sebastianbergmann/php-timer/", 2853 | "keywords": [ 2854 | "timer" 2855 | ], 2856 | "support": { 2857 | "issues": "https://github.com/sebastianbergmann/php-timer/issues", 2858 | "security": "https://github.com/sebastianbergmann/php-timer/security/policy", 2859 | "source": "https://github.com/sebastianbergmann/php-timer/tree/8.0.0" 2860 | }, 2861 | "funding": [ 2862 | { 2863 | "url": "https://github.com/sebastianbergmann", 2864 | "type": "github" 2865 | } 2866 | ], 2867 | "time": "2025-02-07T04:59:38+00:00" 2868 | }, 2869 | { 2870 | "name": "phpunit/phpunit", 2871 | "version": "12.5.4", 2872 | "source": { 2873 | "type": "git", 2874 | "url": "https://github.com/sebastianbergmann/phpunit.git", 2875 | "reference": "4ba0e923f9d3fc655de22f9547c01d15a41fc93a" 2876 | }, 2877 | "dist": { 2878 | "type": "zip", 2879 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/4ba0e923f9d3fc655de22f9547c01d15a41fc93a", 2880 | "reference": "4ba0e923f9d3fc655de22f9547c01d15a41fc93a", 2881 | "shasum": "" 2882 | }, 2883 | "require": { 2884 | "ext-dom": "*", 2885 | "ext-json": "*", 2886 | "ext-libxml": "*", 2887 | "ext-mbstring": "*", 2888 | "ext-xml": "*", 2889 | "ext-xmlwriter": "*", 2890 | "myclabs/deep-copy": "^1.13.4", 2891 | "phar-io/manifest": "^2.0.4", 2892 | "phar-io/version": "^3.2.1", 2893 | "php": ">=8.3", 2894 | "phpunit/php-code-coverage": "^12.5.1", 2895 | "phpunit/php-file-iterator": "^6.0.0", 2896 | "phpunit/php-invoker": "^6.0.0", 2897 | "phpunit/php-text-template": "^5.0.0", 2898 | "phpunit/php-timer": "^8.0.0", 2899 | "sebastian/cli-parser": "^4.2.0", 2900 | "sebastian/comparator": "^7.1.3", 2901 | "sebastian/diff": "^7.0.0", 2902 | "sebastian/environment": "^8.0.3", 2903 | "sebastian/exporter": "^7.0.2", 2904 | "sebastian/global-state": "^8.0.2", 2905 | "sebastian/object-enumerator": "^7.0.0", 2906 | "sebastian/type": "^6.0.3", 2907 | "sebastian/version": "^6.0.0", 2908 | "staabm/side-effects-detector": "^1.0.5" 2909 | }, 2910 | "bin": [ 2911 | "phpunit" 2912 | ], 2913 | "type": "library", 2914 | "extra": { 2915 | "branch-alias": { 2916 | "dev-main": "12.5-dev" 2917 | } 2918 | }, 2919 | "autoload": { 2920 | "files": [ 2921 | "src/Framework/Assert/Functions.php" 2922 | ], 2923 | "classmap": [ 2924 | "src/" 2925 | ] 2926 | }, 2927 | "notification-url": "https://packagist.org/downloads/", 2928 | "license": [ 2929 | "BSD-3-Clause" 2930 | ], 2931 | "authors": [ 2932 | { 2933 | "name": "Sebastian Bergmann", 2934 | "email": "sebastian@phpunit.de", 2935 | "role": "lead" 2936 | } 2937 | ], 2938 | "description": "The PHP Unit Testing framework.", 2939 | "homepage": "https://phpunit.de/", 2940 | "keywords": [ 2941 | "phpunit", 2942 | "testing", 2943 | "xunit" 2944 | ], 2945 | "support": { 2946 | "issues": "https://github.com/sebastianbergmann/phpunit/issues", 2947 | "security": "https://github.com/sebastianbergmann/phpunit/security/policy", 2948 | "source": "https://github.com/sebastianbergmann/phpunit/tree/12.5.4" 2949 | }, 2950 | "funding": [ 2951 | { 2952 | "url": "https://phpunit.de/sponsors.html", 2953 | "type": "custom" 2954 | }, 2955 | { 2956 | "url": "https://github.com/sebastianbergmann", 2957 | "type": "github" 2958 | }, 2959 | { 2960 | "url": "https://liberapay.com/sebastianbergmann", 2961 | "type": "liberapay" 2962 | }, 2963 | { 2964 | "url": "https://thanks.dev/u/gh/sebastianbergmann", 2965 | "type": "thanks_dev" 2966 | }, 2967 | { 2968 | "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", 2969 | "type": "tidelift" 2970 | } 2971 | ], 2972 | "time": "2025-12-15T06:05:34+00:00" 2973 | }, 2974 | { 2975 | "name": "sebastian/cli-parser", 2976 | "version": "4.2.0", 2977 | "source": { 2978 | "type": "git", 2979 | "url": "https://github.com/sebastianbergmann/cli-parser.git", 2980 | "reference": "90f41072d220e5c40df6e8635f5dafba2d9d4d04" 2981 | }, 2982 | "dist": { 2983 | "type": "zip", 2984 | "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/90f41072d220e5c40df6e8635f5dafba2d9d4d04", 2985 | "reference": "90f41072d220e5c40df6e8635f5dafba2d9d4d04", 2986 | "shasum": "" 2987 | }, 2988 | "require": { 2989 | "php": ">=8.3" 2990 | }, 2991 | "require-dev": { 2992 | "phpunit/phpunit": "^12.0" 2993 | }, 2994 | "type": "library", 2995 | "extra": { 2996 | "branch-alias": { 2997 | "dev-main": "4.2-dev" 2998 | } 2999 | }, 3000 | "autoload": { 3001 | "classmap": [ 3002 | "src/" 3003 | ] 3004 | }, 3005 | "notification-url": "https://packagist.org/downloads/", 3006 | "license": [ 3007 | "BSD-3-Clause" 3008 | ], 3009 | "authors": [ 3010 | { 3011 | "name": "Sebastian Bergmann", 3012 | "email": "sebastian@phpunit.de", 3013 | "role": "lead" 3014 | } 3015 | ], 3016 | "description": "Library for parsing CLI options", 3017 | "homepage": "https://github.com/sebastianbergmann/cli-parser", 3018 | "support": { 3019 | "issues": "https://github.com/sebastianbergmann/cli-parser/issues", 3020 | "security": "https://github.com/sebastianbergmann/cli-parser/security/policy", 3021 | "source": "https://github.com/sebastianbergmann/cli-parser/tree/4.2.0" 3022 | }, 3023 | "funding": [ 3024 | { 3025 | "url": "https://github.com/sebastianbergmann", 3026 | "type": "github" 3027 | }, 3028 | { 3029 | "url": "https://liberapay.com/sebastianbergmann", 3030 | "type": "liberapay" 3031 | }, 3032 | { 3033 | "url": "https://thanks.dev/u/gh/sebastianbergmann", 3034 | "type": "thanks_dev" 3035 | }, 3036 | { 3037 | "url": "https://tidelift.com/funding/github/packagist/sebastian/cli-parser", 3038 | "type": "tidelift" 3039 | } 3040 | ], 3041 | "time": "2025-09-14T09:36:45+00:00" 3042 | }, 3043 | { 3044 | "name": "sebastian/comparator", 3045 | "version": "7.1.3", 3046 | "source": { 3047 | "type": "git", 3048 | "url": "https://github.com/sebastianbergmann/comparator.git", 3049 | "reference": "dc904b4bb3ab070865fa4068cd84f3da8b945148" 3050 | }, 3051 | "dist": { 3052 | "type": "zip", 3053 | "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/dc904b4bb3ab070865fa4068cd84f3da8b945148", 3054 | "reference": "dc904b4bb3ab070865fa4068cd84f3da8b945148", 3055 | "shasum": "" 3056 | }, 3057 | "require": { 3058 | "ext-dom": "*", 3059 | "ext-mbstring": "*", 3060 | "php": ">=8.3", 3061 | "sebastian/diff": "^7.0", 3062 | "sebastian/exporter": "^7.0" 3063 | }, 3064 | "require-dev": { 3065 | "phpunit/phpunit": "^12.2" 3066 | }, 3067 | "suggest": { 3068 | "ext-bcmath": "For comparing BcMath\\Number objects" 3069 | }, 3070 | "type": "library", 3071 | "extra": { 3072 | "branch-alias": { 3073 | "dev-main": "7.1-dev" 3074 | } 3075 | }, 3076 | "autoload": { 3077 | "classmap": [ 3078 | "src/" 3079 | ] 3080 | }, 3081 | "notification-url": "https://packagist.org/downloads/", 3082 | "license": [ 3083 | "BSD-3-Clause" 3084 | ], 3085 | "authors": [ 3086 | { 3087 | "name": "Sebastian Bergmann", 3088 | "email": "sebastian@phpunit.de" 3089 | }, 3090 | { 3091 | "name": "Jeff Welch", 3092 | "email": "whatthejeff@gmail.com" 3093 | }, 3094 | { 3095 | "name": "Volker Dusch", 3096 | "email": "github@wallbash.com" 3097 | }, 3098 | { 3099 | "name": "Bernhard Schussek", 3100 | "email": "bschussek@2bepublished.at" 3101 | } 3102 | ], 3103 | "description": "Provides the functionality to compare PHP values for equality", 3104 | "homepage": "https://github.com/sebastianbergmann/comparator", 3105 | "keywords": [ 3106 | "comparator", 3107 | "compare", 3108 | "equality" 3109 | ], 3110 | "support": { 3111 | "issues": "https://github.com/sebastianbergmann/comparator/issues", 3112 | "security": "https://github.com/sebastianbergmann/comparator/security/policy", 3113 | "source": "https://github.com/sebastianbergmann/comparator/tree/7.1.3" 3114 | }, 3115 | "funding": [ 3116 | { 3117 | "url": "https://github.com/sebastianbergmann", 3118 | "type": "github" 3119 | }, 3120 | { 3121 | "url": "https://liberapay.com/sebastianbergmann", 3122 | "type": "liberapay" 3123 | }, 3124 | { 3125 | "url": "https://thanks.dev/u/gh/sebastianbergmann", 3126 | "type": "thanks_dev" 3127 | }, 3128 | { 3129 | "url": "https://tidelift.com/funding/github/packagist/sebastian/comparator", 3130 | "type": "tidelift" 3131 | } 3132 | ], 3133 | "time": "2025-08-20T11:27:00+00:00" 3134 | }, 3135 | { 3136 | "name": "sebastian/complexity", 3137 | "version": "5.0.0", 3138 | "source": { 3139 | "type": "git", 3140 | "url": "https://github.com/sebastianbergmann/complexity.git", 3141 | "reference": "bad4316aba5303d0221f43f8cee37eb58d384bbb" 3142 | }, 3143 | "dist": { 3144 | "type": "zip", 3145 | "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/bad4316aba5303d0221f43f8cee37eb58d384bbb", 3146 | "reference": "bad4316aba5303d0221f43f8cee37eb58d384bbb", 3147 | "shasum": "" 3148 | }, 3149 | "require": { 3150 | "nikic/php-parser": "^5.0", 3151 | "php": ">=8.3" 3152 | }, 3153 | "require-dev": { 3154 | "phpunit/phpunit": "^12.0" 3155 | }, 3156 | "type": "library", 3157 | "extra": { 3158 | "branch-alias": { 3159 | "dev-main": "5.0-dev" 3160 | } 3161 | }, 3162 | "autoload": { 3163 | "classmap": [ 3164 | "src/" 3165 | ] 3166 | }, 3167 | "notification-url": "https://packagist.org/downloads/", 3168 | "license": [ 3169 | "BSD-3-Clause" 3170 | ], 3171 | "authors": [ 3172 | { 3173 | "name": "Sebastian Bergmann", 3174 | "email": "sebastian@phpunit.de", 3175 | "role": "lead" 3176 | } 3177 | ], 3178 | "description": "Library for calculating the complexity of PHP code units", 3179 | "homepage": "https://github.com/sebastianbergmann/complexity", 3180 | "support": { 3181 | "issues": "https://github.com/sebastianbergmann/complexity/issues", 3182 | "security": "https://github.com/sebastianbergmann/complexity/security/policy", 3183 | "source": "https://github.com/sebastianbergmann/complexity/tree/5.0.0" 3184 | }, 3185 | "funding": [ 3186 | { 3187 | "url": "https://github.com/sebastianbergmann", 3188 | "type": "github" 3189 | } 3190 | ], 3191 | "time": "2025-02-07T04:55:25+00:00" 3192 | }, 3193 | { 3194 | "name": "sebastian/diff", 3195 | "version": "7.0.0", 3196 | "source": { 3197 | "type": "git", 3198 | "url": "https://github.com/sebastianbergmann/diff.git", 3199 | "reference": "7ab1ea946c012266ca32390913653d844ecd085f" 3200 | }, 3201 | "dist": { 3202 | "type": "zip", 3203 | "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7ab1ea946c012266ca32390913653d844ecd085f", 3204 | "reference": "7ab1ea946c012266ca32390913653d844ecd085f", 3205 | "shasum": "" 3206 | }, 3207 | "require": { 3208 | "php": ">=8.3" 3209 | }, 3210 | "require-dev": { 3211 | "phpunit/phpunit": "^12.0", 3212 | "symfony/process": "^7.2" 3213 | }, 3214 | "type": "library", 3215 | "extra": { 3216 | "branch-alias": { 3217 | "dev-main": "7.0-dev" 3218 | } 3219 | }, 3220 | "autoload": { 3221 | "classmap": [ 3222 | "src/" 3223 | ] 3224 | }, 3225 | "notification-url": "https://packagist.org/downloads/", 3226 | "license": [ 3227 | "BSD-3-Clause" 3228 | ], 3229 | "authors": [ 3230 | { 3231 | "name": "Sebastian Bergmann", 3232 | "email": "sebastian@phpunit.de" 3233 | }, 3234 | { 3235 | "name": "Kore Nordmann", 3236 | "email": "mail@kore-nordmann.de" 3237 | } 3238 | ], 3239 | "description": "Diff implementation", 3240 | "homepage": "https://github.com/sebastianbergmann/diff", 3241 | "keywords": [ 3242 | "diff", 3243 | "udiff", 3244 | "unidiff", 3245 | "unified diff" 3246 | ], 3247 | "support": { 3248 | "issues": "https://github.com/sebastianbergmann/diff/issues", 3249 | "security": "https://github.com/sebastianbergmann/diff/security/policy", 3250 | "source": "https://github.com/sebastianbergmann/diff/tree/7.0.0" 3251 | }, 3252 | "funding": [ 3253 | { 3254 | "url": "https://github.com/sebastianbergmann", 3255 | "type": "github" 3256 | } 3257 | ], 3258 | "time": "2025-02-07T04:55:46+00:00" 3259 | }, 3260 | { 3261 | "name": "sebastian/environment", 3262 | "version": "8.0.3", 3263 | "source": { 3264 | "type": "git", 3265 | "url": "https://github.com/sebastianbergmann/environment.git", 3266 | "reference": "24a711b5c916efc6d6e62aa65aa2ec98fef77f68" 3267 | }, 3268 | "dist": { 3269 | "type": "zip", 3270 | "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/24a711b5c916efc6d6e62aa65aa2ec98fef77f68", 3271 | "reference": "24a711b5c916efc6d6e62aa65aa2ec98fef77f68", 3272 | "shasum": "" 3273 | }, 3274 | "require": { 3275 | "php": ">=8.3" 3276 | }, 3277 | "require-dev": { 3278 | "phpunit/phpunit": "^12.0" 3279 | }, 3280 | "suggest": { 3281 | "ext-posix": "*" 3282 | }, 3283 | "type": "library", 3284 | "extra": { 3285 | "branch-alias": { 3286 | "dev-main": "8.0-dev" 3287 | } 3288 | }, 3289 | "autoload": { 3290 | "classmap": [ 3291 | "src/" 3292 | ] 3293 | }, 3294 | "notification-url": "https://packagist.org/downloads/", 3295 | "license": [ 3296 | "BSD-3-Clause" 3297 | ], 3298 | "authors": [ 3299 | { 3300 | "name": "Sebastian Bergmann", 3301 | "email": "sebastian@phpunit.de" 3302 | } 3303 | ], 3304 | "description": "Provides functionality to handle HHVM/PHP environments", 3305 | "homepage": "https://github.com/sebastianbergmann/environment", 3306 | "keywords": [ 3307 | "Xdebug", 3308 | "environment", 3309 | "hhvm" 3310 | ], 3311 | "support": { 3312 | "issues": "https://github.com/sebastianbergmann/environment/issues", 3313 | "security": "https://github.com/sebastianbergmann/environment/security/policy", 3314 | "source": "https://github.com/sebastianbergmann/environment/tree/8.0.3" 3315 | }, 3316 | "funding": [ 3317 | { 3318 | "url": "https://github.com/sebastianbergmann", 3319 | "type": "github" 3320 | }, 3321 | { 3322 | "url": "https://liberapay.com/sebastianbergmann", 3323 | "type": "liberapay" 3324 | }, 3325 | { 3326 | "url": "https://thanks.dev/u/gh/sebastianbergmann", 3327 | "type": "thanks_dev" 3328 | }, 3329 | { 3330 | "url": "https://tidelift.com/funding/github/packagist/sebastian/environment", 3331 | "type": "tidelift" 3332 | } 3333 | ], 3334 | "time": "2025-08-12T14:11:56+00:00" 3335 | }, 3336 | { 3337 | "name": "sebastian/exporter", 3338 | "version": "7.0.2", 3339 | "source": { 3340 | "type": "git", 3341 | "url": "https://github.com/sebastianbergmann/exporter.git", 3342 | "reference": "016951ae10980765e4e7aee491eb288c64e505b7" 3343 | }, 3344 | "dist": { 3345 | "type": "zip", 3346 | "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/016951ae10980765e4e7aee491eb288c64e505b7", 3347 | "reference": "016951ae10980765e4e7aee491eb288c64e505b7", 3348 | "shasum": "" 3349 | }, 3350 | "require": { 3351 | "ext-mbstring": "*", 3352 | "php": ">=8.3", 3353 | "sebastian/recursion-context": "^7.0" 3354 | }, 3355 | "require-dev": { 3356 | "phpunit/phpunit": "^12.0" 3357 | }, 3358 | "type": "library", 3359 | "extra": { 3360 | "branch-alias": { 3361 | "dev-main": "7.0-dev" 3362 | } 3363 | }, 3364 | "autoload": { 3365 | "classmap": [ 3366 | "src/" 3367 | ] 3368 | }, 3369 | "notification-url": "https://packagist.org/downloads/", 3370 | "license": [ 3371 | "BSD-3-Clause" 3372 | ], 3373 | "authors": [ 3374 | { 3375 | "name": "Sebastian Bergmann", 3376 | "email": "sebastian@phpunit.de" 3377 | }, 3378 | { 3379 | "name": "Jeff Welch", 3380 | "email": "whatthejeff@gmail.com" 3381 | }, 3382 | { 3383 | "name": "Volker Dusch", 3384 | "email": "github@wallbash.com" 3385 | }, 3386 | { 3387 | "name": "Adam Harvey", 3388 | "email": "aharvey@php.net" 3389 | }, 3390 | { 3391 | "name": "Bernhard Schussek", 3392 | "email": "bschussek@gmail.com" 3393 | } 3394 | ], 3395 | "description": "Provides the functionality to export PHP variables for visualization", 3396 | "homepage": "https://www.github.com/sebastianbergmann/exporter", 3397 | "keywords": [ 3398 | "export", 3399 | "exporter" 3400 | ], 3401 | "support": { 3402 | "issues": "https://github.com/sebastianbergmann/exporter/issues", 3403 | "security": "https://github.com/sebastianbergmann/exporter/security/policy", 3404 | "source": "https://github.com/sebastianbergmann/exporter/tree/7.0.2" 3405 | }, 3406 | "funding": [ 3407 | { 3408 | "url": "https://github.com/sebastianbergmann", 3409 | "type": "github" 3410 | }, 3411 | { 3412 | "url": "https://liberapay.com/sebastianbergmann", 3413 | "type": "liberapay" 3414 | }, 3415 | { 3416 | "url": "https://thanks.dev/u/gh/sebastianbergmann", 3417 | "type": "thanks_dev" 3418 | }, 3419 | { 3420 | "url": "https://tidelift.com/funding/github/packagist/sebastian/exporter", 3421 | "type": "tidelift" 3422 | } 3423 | ], 3424 | "time": "2025-09-24T06:16:11+00:00" 3425 | }, 3426 | { 3427 | "name": "sebastian/global-state", 3428 | "version": "8.0.2", 3429 | "source": { 3430 | "type": "git", 3431 | "url": "https://github.com/sebastianbergmann/global-state.git", 3432 | "reference": "ef1377171613d09edd25b7816f05be8313f9115d" 3433 | }, 3434 | "dist": { 3435 | "type": "zip", 3436 | "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/ef1377171613d09edd25b7816f05be8313f9115d", 3437 | "reference": "ef1377171613d09edd25b7816f05be8313f9115d", 3438 | "shasum": "" 3439 | }, 3440 | "require": { 3441 | "php": ">=8.3", 3442 | "sebastian/object-reflector": "^5.0", 3443 | "sebastian/recursion-context": "^7.0" 3444 | }, 3445 | "require-dev": { 3446 | "ext-dom": "*", 3447 | "phpunit/phpunit": "^12.0" 3448 | }, 3449 | "type": "library", 3450 | "extra": { 3451 | "branch-alias": { 3452 | "dev-main": "8.0-dev" 3453 | } 3454 | }, 3455 | "autoload": { 3456 | "classmap": [ 3457 | "src/" 3458 | ] 3459 | }, 3460 | "notification-url": "https://packagist.org/downloads/", 3461 | "license": [ 3462 | "BSD-3-Clause" 3463 | ], 3464 | "authors": [ 3465 | { 3466 | "name": "Sebastian Bergmann", 3467 | "email": "sebastian@phpunit.de" 3468 | } 3469 | ], 3470 | "description": "Snapshotting of global state", 3471 | "homepage": "https://www.github.com/sebastianbergmann/global-state", 3472 | "keywords": [ 3473 | "global state" 3474 | ], 3475 | "support": { 3476 | "issues": "https://github.com/sebastianbergmann/global-state/issues", 3477 | "security": "https://github.com/sebastianbergmann/global-state/security/policy", 3478 | "source": "https://github.com/sebastianbergmann/global-state/tree/8.0.2" 3479 | }, 3480 | "funding": [ 3481 | { 3482 | "url": "https://github.com/sebastianbergmann", 3483 | "type": "github" 3484 | }, 3485 | { 3486 | "url": "https://liberapay.com/sebastianbergmann", 3487 | "type": "liberapay" 3488 | }, 3489 | { 3490 | "url": "https://thanks.dev/u/gh/sebastianbergmann", 3491 | "type": "thanks_dev" 3492 | }, 3493 | { 3494 | "url": "https://tidelift.com/funding/github/packagist/sebastian/global-state", 3495 | "type": "tidelift" 3496 | } 3497 | ], 3498 | "time": "2025-08-29T11:29:25+00:00" 3499 | }, 3500 | { 3501 | "name": "sebastian/lines-of-code", 3502 | "version": "4.0.0", 3503 | "source": { 3504 | "type": "git", 3505 | "url": "https://github.com/sebastianbergmann/lines-of-code.git", 3506 | "reference": "97ffee3bcfb5805568d6af7f0f893678fc076d2f" 3507 | }, 3508 | "dist": { 3509 | "type": "zip", 3510 | "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/97ffee3bcfb5805568d6af7f0f893678fc076d2f", 3511 | "reference": "97ffee3bcfb5805568d6af7f0f893678fc076d2f", 3512 | "shasum": "" 3513 | }, 3514 | "require": { 3515 | "nikic/php-parser": "^5.0", 3516 | "php": ">=8.3" 3517 | }, 3518 | "require-dev": { 3519 | "phpunit/phpunit": "^12.0" 3520 | }, 3521 | "type": "library", 3522 | "extra": { 3523 | "branch-alias": { 3524 | "dev-main": "4.0-dev" 3525 | } 3526 | }, 3527 | "autoload": { 3528 | "classmap": [ 3529 | "src/" 3530 | ] 3531 | }, 3532 | "notification-url": "https://packagist.org/downloads/", 3533 | "license": [ 3534 | "BSD-3-Clause" 3535 | ], 3536 | "authors": [ 3537 | { 3538 | "name": "Sebastian Bergmann", 3539 | "email": "sebastian@phpunit.de", 3540 | "role": "lead" 3541 | } 3542 | ], 3543 | "description": "Library for counting the lines of code in PHP source code", 3544 | "homepage": "https://github.com/sebastianbergmann/lines-of-code", 3545 | "support": { 3546 | "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", 3547 | "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", 3548 | "source": "https://github.com/sebastianbergmann/lines-of-code/tree/4.0.0" 3549 | }, 3550 | "funding": [ 3551 | { 3552 | "url": "https://github.com/sebastianbergmann", 3553 | "type": "github" 3554 | } 3555 | ], 3556 | "time": "2025-02-07T04:57:28+00:00" 3557 | }, 3558 | { 3559 | "name": "sebastian/object-enumerator", 3560 | "version": "7.0.0", 3561 | "source": { 3562 | "type": "git", 3563 | "url": "https://github.com/sebastianbergmann/object-enumerator.git", 3564 | "reference": "1effe8e9b8e068e9ae228e542d5d11b5d16db894" 3565 | }, 3566 | "dist": { 3567 | "type": "zip", 3568 | "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/1effe8e9b8e068e9ae228e542d5d11b5d16db894", 3569 | "reference": "1effe8e9b8e068e9ae228e542d5d11b5d16db894", 3570 | "shasum": "" 3571 | }, 3572 | "require": { 3573 | "php": ">=8.3", 3574 | "sebastian/object-reflector": "^5.0", 3575 | "sebastian/recursion-context": "^7.0" 3576 | }, 3577 | "require-dev": { 3578 | "phpunit/phpunit": "^12.0" 3579 | }, 3580 | "type": "library", 3581 | "extra": { 3582 | "branch-alias": { 3583 | "dev-main": "7.0-dev" 3584 | } 3585 | }, 3586 | "autoload": { 3587 | "classmap": [ 3588 | "src/" 3589 | ] 3590 | }, 3591 | "notification-url": "https://packagist.org/downloads/", 3592 | "license": [ 3593 | "BSD-3-Clause" 3594 | ], 3595 | "authors": [ 3596 | { 3597 | "name": "Sebastian Bergmann", 3598 | "email": "sebastian@phpunit.de" 3599 | } 3600 | ], 3601 | "description": "Traverses array structures and object graphs to enumerate all referenced objects", 3602 | "homepage": "https://github.com/sebastianbergmann/object-enumerator/", 3603 | "support": { 3604 | "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", 3605 | "security": "https://github.com/sebastianbergmann/object-enumerator/security/policy", 3606 | "source": "https://github.com/sebastianbergmann/object-enumerator/tree/7.0.0" 3607 | }, 3608 | "funding": [ 3609 | { 3610 | "url": "https://github.com/sebastianbergmann", 3611 | "type": "github" 3612 | } 3613 | ], 3614 | "time": "2025-02-07T04:57:48+00:00" 3615 | }, 3616 | { 3617 | "name": "sebastian/object-reflector", 3618 | "version": "5.0.0", 3619 | "source": { 3620 | "type": "git", 3621 | "url": "https://github.com/sebastianbergmann/object-reflector.git", 3622 | "reference": "4bfa827c969c98be1e527abd576533293c634f6a" 3623 | }, 3624 | "dist": { 3625 | "type": "zip", 3626 | "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/4bfa827c969c98be1e527abd576533293c634f6a", 3627 | "reference": "4bfa827c969c98be1e527abd576533293c634f6a", 3628 | "shasum": "" 3629 | }, 3630 | "require": { 3631 | "php": ">=8.3" 3632 | }, 3633 | "require-dev": { 3634 | "phpunit/phpunit": "^12.0" 3635 | }, 3636 | "type": "library", 3637 | "extra": { 3638 | "branch-alias": { 3639 | "dev-main": "5.0-dev" 3640 | } 3641 | }, 3642 | "autoload": { 3643 | "classmap": [ 3644 | "src/" 3645 | ] 3646 | }, 3647 | "notification-url": "https://packagist.org/downloads/", 3648 | "license": [ 3649 | "BSD-3-Clause" 3650 | ], 3651 | "authors": [ 3652 | { 3653 | "name": "Sebastian Bergmann", 3654 | "email": "sebastian@phpunit.de" 3655 | } 3656 | ], 3657 | "description": "Allows reflection of object attributes, including inherited and non-public ones", 3658 | "homepage": "https://github.com/sebastianbergmann/object-reflector/", 3659 | "support": { 3660 | "issues": "https://github.com/sebastianbergmann/object-reflector/issues", 3661 | "security": "https://github.com/sebastianbergmann/object-reflector/security/policy", 3662 | "source": "https://github.com/sebastianbergmann/object-reflector/tree/5.0.0" 3663 | }, 3664 | "funding": [ 3665 | { 3666 | "url": "https://github.com/sebastianbergmann", 3667 | "type": "github" 3668 | } 3669 | ], 3670 | "time": "2025-02-07T04:58:17+00:00" 3671 | }, 3672 | { 3673 | "name": "sebastian/recursion-context", 3674 | "version": "7.0.1", 3675 | "source": { 3676 | "type": "git", 3677 | "url": "https://github.com/sebastianbergmann/recursion-context.git", 3678 | "reference": "0b01998a7d5b1f122911a66bebcb8d46f0c82d8c" 3679 | }, 3680 | "dist": { 3681 | "type": "zip", 3682 | "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/0b01998a7d5b1f122911a66bebcb8d46f0c82d8c", 3683 | "reference": "0b01998a7d5b1f122911a66bebcb8d46f0c82d8c", 3684 | "shasum": "" 3685 | }, 3686 | "require": { 3687 | "php": ">=8.3" 3688 | }, 3689 | "require-dev": { 3690 | "phpunit/phpunit": "^12.0" 3691 | }, 3692 | "type": "library", 3693 | "extra": { 3694 | "branch-alias": { 3695 | "dev-main": "7.0-dev" 3696 | } 3697 | }, 3698 | "autoload": { 3699 | "classmap": [ 3700 | "src/" 3701 | ] 3702 | }, 3703 | "notification-url": "https://packagist.org/downloads/", 3704 | "license": [ 3705 | "BSD-3-Clause" 3706 | ], 3707 | "authors": [ 3708 | { 3709 | "name": "Sebastian Bergmann", 3710 | "email": "sebastian@phpunit.de" 3711 | }, 3712 | { 3713 | "name": "Jeff Welch", 3714 | "email": "whatthejeff@gmail.com" 3715 | }, 3716 | { 3717 | "name": "Adam Harvey", 3718 | "email": "aharvey@php.net" 3719 | } 3720 | ], 3721 | "description": "Provides functionality to recursively process PHP variables", 3722 | "homepage": "https://github.com/sebastianbergmann/recursion-context", 3723 | "support": { 3724 | "issues": "https://github.com/sebastianbergmann/recursion-context/issues", 3725 | "security": "https://github.com/sebastianbergmann/recursion-context/security/policy", 3726 | "source": "https://github.com/sebastianbergmann/recursion-context/tree/7.0.1" 3727 | }, 3728 | "funding": [ 3729 | { 3730 | "url": "https://github.com/sebastianbergmann", 3731 | "type": "github" 3732 | }, 3733 | { 3734 | "url": "https://liberapay.com/sebastianbergmann", 3735 | "type": "liberapay" 3736 | }, 3737 | { 3738 | "url": "https://thanks.dev/u/gh/sebastianbergmann", 3739 | "type": "thanks_dev" 3740 | }, 3741 | { 3742 | "url": "https://tidelift.com/funding/github/packagist/sebastian/recursion-context", 3743 | "type": "tidelift" 3744 | } 3745 | ], 3746 | "time": "2025-08-13T04:44:59+00:00" 3747 | }, 3748 | { 3749 | "name": "sebastian/type", 3750 | "version": "6.0.3", 3751 | "source": { 3752 | "type": "git", 3753 | "url": "https://github.com/sebastianbergmann/type.git", 3754 | "reference": "e549163b9760b8f71f191651d22acf32d56d6d4d" 3755 | }, 3756 | "dist": { 3757 | "type": "zip", 3758 | "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/e549163b9760b8f71f191651d22acf32d56d6d4d", 3759 | "reference": "e549163b9760b8f71f191651d22acf32d56d6d4d", 3760 | "shasum": "" 3761 | }, 3762 | "require": { 3763 | "php": ">=8.3" 3764 | }, 3765 | "require-dev": { 3766 | "phpunit/phpunit": "^12.0" 3767 | }, 3768 | "type": "library", 3769 | "extra": { 3770 | "branch-alias": { 3771 | "dev-main": "6.0-dev" 3772 | } 3773 | }, 3774 | "autoload": { 3775 | "classmap": [ 3776 | "src/" 3777 | ] 3778 | }, 3779 | "notification-url": "https://packagist.org/downloads/", 3780 | "license": [ 3781 | "BSD-3-Clause" 3782 | ], 3783 | "authors": [ 3784 | { 3785 | "name": "Sebastian Bergmann", 3786 | "email": "sebastian@phpunit.de", 3787 | "role": "lead" 3788 | } 3789 | ], 3790 | "description": "Collection of value objects that represent the types of the PHP type system", 3791 | "homepage": "https://github.com/sebastianbergmann/type", 3792 | "support": { 3793 | "issues": "https://github.com/sebastianbergmann/type/issues", 3794 | "security": "https://github.com/sebastianbergmann/type/security/policy", 3795 | "source": "https://github.com/sebastianbergmann/type/tree/6.0.3" 3796 | }, 3797 | "funding": [ 3798 | { 3799 | "url": "https://github.com/sebastianbergmann", 3800 | "type": "github" 3801 | }, 3802 | { 3803 | "url": "https://liberapay.com/sebastianbergmann", 3804 | "type": "liberapay" 3805 | }, 3806 | { 3807 | "url": "https://thanks.dev/u/gh/sebastianbergmann", 3808 | "type": "thanks_dev" 3809 | }, 3810 | { 3811 | "url": "https://tidelift.com/funding/github/packagist/sebastian/type", 3812 | "type": "tidelift" 3813 | } 3814 | ], 3815 | "time": "2025-08-09T06:57:12+00:00" 3816 | }, 3817 | { 3818 | "name": "sebastian/version", 3819 | "version": "6.0.0", 3820 | "source": { 3821 | "type": "git", 3822 | "url": "https://github.com/sebastianbergmann/version.git", 3823 | "reference": "3e6ccf7657d4f0a59200564b08cead899313b53c" 3824 | }, 3825 | "dist": { 3826 | "type": "zip", 3827 | "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/3e6ccf7657d4f0a59200564b08cead899313b53c", 3828 | "reference": "3e6ccf7657d4f0a59200564b08cead899313b53c", 3829 | "shasum": "" 3830 | }, 3831 | "require": { 3832 | "php": ">=8.3" 3833 | }, 3834 | "type": "library", 3835 | "extra": { 3836 | "branch-alias": { 3837 | "dev-main": "6.0-dev" 3838 | } 3839 | }, 3840 | "autoload": { 3841 | "classmap": [ 3842 | "src/" 3843 | ] 3844 | }, 3845 | "notification-url": "https://packagist.org/downloads/", 3846 | "license": [ 3847 | "BSD-3-Clause" 3848 | ], 3849 | "authors": [ 3850 | { 3851 | "name": "Sebastian Bergmann", 3852 | "email": "sebastian@phpunit.de", 3853 | "role": "lead" 3854 | } 3855 | ], 3856 | "description": "Library that helps with managing the version number of Git-hosted PHP projects", 3857 | "homepage": "https://github.com/sebastianbergmann/version", 3858 | "support": { 3859 | "issues": "https://github.com/sebastianbergmann/version/issues", 3860 | "security": "https://github.com/sebastianbergmann/version/security/policy", 3861 | "source": "https://github.com/sebastianbergmann/version/tree/6.0.0" 3862 | }, 3863 | "funding": [ 3864 | { 3865 | "url": "https://github.com/sebastianbergmann", 3866 | "type": "github" 3867 | } 3868 | ], 3869 | "time": "2025-02-07T05:00:38+00:00" 3870 | }, 3871 | { 3872 | "name": "slevomat/coding-standard", 3873 | "version": "8.26.0", 3874 | "source": { 3875 | "type": "git", 3876 | "url": "https://github.com/slevomat/coding-standard.git", 3877 | "reference": "d247cdc04b91956bdcfaa0b1313c01960b189d3c" 3878 | }, 3879 | "dist": { 3880 | "type": "zip", 3881 | "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/d247cdc04b91956bdcfaa0b1313c01960b189d3c", 3882 | "reference": "d247cdc04b91956bdcfaa0b1313c01960b189d3c", 3883 | "shasum": "" 3884 | }, 3885 | "require": { 3886 | "dealerdirect/phpcodesniffer-composer-installer": "^0.7 || ^1.2.0", 3887 | "php": "^7.4 || ^8.0", 3888 | "phpstan/phpdoc-parser": "^2.3.0", 3889 | "squizlabs/php_codesniffer": "^4.0.1" 3890 | }, 3891 | "require-dev": { 3892 | "phing/phing": "3.0.1|3.1.0", 3893 | "php-parallel-lint/php-parallel-lint": "1.4.0", 3894 | "phpstan/phpstan": "2.1.33", 3895 | "phpstan/phpstan-deprecation-rules": "2.0.3", 3896 | "phpstan/phpstan-phpunit": "2.0.11", 3897 | "phpstan/phpstan-strict-rules": "2.0.7", 3898 | "phpunit/phpunit": "9.6.31|10.5.60|11.4.4|11.5.46|12.5.4" 3899 | }, 3900 | "type": "phpcodesniffer-standard", 3901 | "extra": { 3902 | "branch-alias": { 3903 | "dev-master": "8.x-dev" 3904 | } 3905 | }, 3906 | "autoload": { 3907 | "psr-4": { 3908 | "SlevomatCodingStandard\\": "SlevomatCodingStandard/" 3909 | } 3910 | }, 3911 | "notification-url": "https://packagist.org/downloads/", 3912 | "license": [ 3913 | "MIT" 3914 | ], 3915 | "description": "Slevomat Coding Standard for PHP_CodeSniffer complements Consistence Coding Standard by providing sniffs with additional checks.", 3916 | "keywords": [ 3917 | "dev", 3918 | "phpcs" 3919 | ], 3920 | "support": { 3921 | "issues": "https://github.com/slevomat/coding-standard/issues", 3922 | "source": "https://github.com/slevomat/coding-standard/tree/8.26.0" 3923 | }, 3924 | "funding": [ 3925 | { 3926 | "url": "https://github.com/kukulich", 3927 | "type": "github" 3928 | }, 3929 | { 3930 | "url": "https://tidelift.com/funding/github/packagist/slevomat/coding-standard", 3931 | "type": "tidelift" 3932 | } 3933 | ], 3934 | "time": "2025-12-21T18:01:15+00:00" 3935 | }, 3936 | { 3937 | "name": "squizlabs/php_codesniffer", 3938 | "version": "4.0.1", 3939 | "source": { 3940 | "type": "git", 3941 | "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", 3942 | "reference": "0525c73950de35ded110cffafb9892946d7771b5" 3943 | }, 3944 | "dist": { 3945 | "type": "zip", 3946 | "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/0525c73950de35ded110cffafb9892946d7771b5", 3947 | "reference": "0525c73950de35ded110cffafb9892946d7771b5", 3948 | "shasum": "" 3949 | }, 3950 | "require": { 3951 | "ext-simplexml": "*", 3952 | "ext-tokenizer": "*", 3953 | "ext-xmlwriter": "*", 3954 | "php": ">=7.2.0" 3955 | }, 3956 | "require-dev": { 3957 | "phpunit/phpunit": "^8.4.0 || ^9.3.4 || ^10.5.32 || 11.3.3 - 11.5.28 || ^11.5.31" 3958 | }, 3959 | "bin": [ 3960 | "bin/phpcbf", 3961 | "bin/phpcs" 3962 | ], 3963 | "type": "library", 3964 | "notification-url": "https://packagist.org/downloads/", 3965 | "license": [ 3966 | "BSD-3-Clause" 3967 | ], 3968 | "authors": [ 3969 | { 3970 | "name": "Greg Sherwood", 3971 | "role": "Former lead" 3972 | }, 3973 | { 3974 | "name": "Juliette Reinders Folmer", 3975 | "role": "Current lead" 3976 | }, 3977 | { 3978 | "name": "Contributors", 3979 | "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer/graphs/contributors" 3980 | } 3981 | ], 3982 | "description": "PHP_CodeSniffer tokenizes PHP files and detects violations of a defined set of coding standards.", 3983 | "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer", 3984 | "keywords": [ 3985 | "phpcs", 3986 | "standards", 3987 | "static analysis" 3988 | ], 3989 | "support": { 3990 | "issues": "https://github.com/PHPCSStandards/PHP_CodeSniffer/issues", 3991 | "security": "https://github.com/PHPCSStandards/PHP_CodeSniffer/security/policy", 3992 | "source": "https://github.com/PHPCSStandards/PHP_CodeSniffer", 3993 | "wiki": "https://github.com/PHPCSStandards/PHP_CodeSniffer/wiki" 3994 | }, 3995 | "funding": [ 3996 | { 3997 | "url": "https://github.com/PHPCSStandards", 3998 | "type": "github" 3999 | }, 4000 | { 4001 | "url": "https://github.com/jrfnl", 4002 | "type": "github" 4003 | }, 4004 | { 4005 | "url": "https://opencollective.com/php_codesniffer", 4006 | "type": "open_collective" 4007 | }, 4008 | { 4009 | "url": "https://thanks.dev/u/gh/phpcsstandards", 4010 | "type": "thanks_dev" 4011 | } 4012 | ], 4013 | "time": "2025-11-10T16:43:36+00:00" 4014 | }, 4015 | { 4016 | "name": "staabm/side-effects-detector", 4017 | "version": "1.0.5", 4018 | "source": { 4019 | "type": "git", 4020 | "url": "https://github.com/staabm/side-effects-detector.git", 4021 | "reference": "d8334211a140ce329c13726d4a715adbddd0a163" 4022 | }, 4023 | "dist": { 4024 | "type": "zip", 4025 | "url": "https://api.github.com/repos/staabm/side-effects-detector/zipball/d8334211a140ce329c13726d4a715adbddd0a163", 4026 | "reference": "d8334211a140ce329c13726d4a715adbddd0a163", 4027 | "shasum": "" 4028 | }, 4029 | "require": { 4030 | "ext-tokenizer": "*", 4031 | "php": "^7.4 || ^8.0" 4032 | }, 4033 | "require-dev": { 4034 | "phpstan/extension-installer": "^1.4.3", 4035 | "phpstan/phpstan": "^1.12.6", 4036 | "phpunit/phpunit": "^9.6.21", 4037 | "symfony/var-dumper": "^5.4.43", 4038 | "tomasvotruba/type-coverage": "1.0.0", 4039 | "tomasvotruba/unused-public": "1.0.0" 4040 | }, 4041 | "type": "library", 4042 | "autoload": { 4043 | "classmap": [ 4044 | "lib/" 4045 | ] 4046 | }, 4047 | "notification-url": "https://packagist.org/downloads/", 4048 | "license": [ 4049 | "MIT" 4050 | ], 4051 | "description": "A static analysis tool to detect side effects in PHP code", 4052 | "keywords": [ 4053 | "static analysis" 4054 | ], 4055 | "support": { 4056 | "issues": "https://github.com/staabm/side-effects-detector/issues", 4057 | "source": "https://github.com/staabm/side-effects-detector/tree/1.0.5" 4058 | }, 4059 | "funding": [ 4060 | { 4061 | "url": "https://github.com/staabm", 4062 | "type": "github" 4063 | } 4064 | ], 4065 | "time": "2024-10-20T05:08:20+00:00" 4066 | }, 4067 | { 4068 | "name": "theseer/tokenizer", 4069 | "version": "2.0.1", 4070 | "source": { 4071 | "type": "git", 4072 | "url": "https://github.com/theseer/tokenizer.git", 4073 | "reference": "7989e43bf381af0eac72e4f0ca5bcbfa81658be4" 4074 | }, 4075 | "dist": { 4076 | "type": "zip", 4077 | "url": "https://api.github.com/repos/theseer/tokenizer/zipball/7989e43bf381af0eac72e4f0ca5bcbfa81658be4", 4078 | "reference": "7989e43bf381af0eac72e4f0ca5bcbfa81658be4", 4079 | "shasum": "" 4080 | }, 4081 | "require": { 4082 | "ext-dom": "*", 4083 | "ext-tokenizer": "*", 4084 | "ext-xmlwriter": "*", 4085 | "php": "^8.1" 4086 | }, 4087 | "type": "library", 4088 | "autoload": { 4089 | "classmap": [ 4090 | "src/" 4091 | ] 4092 | }, 4093 | "notification-url": "https://packagist.org/downloads/", 4094 | "license": [ 4095 | "BSD-3-Clause" 4096 | ], 4097 | "authors": [ 4098 | { 4099 | "name": "Arne Blankerts", 4100 | "email": "arne@blankerts.de", 4101 | "role": "Developer" 4102 | } 4103 | ], 4104 | "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", 4105 | "support": { 4106 | "issues": "https://github.com/theseer/tokenizer/issues", 4107 | "source": "https://github.com/theseer/tokenizer/tree/2.0.1" 4108 | }, 4109 | "funding": [ 4110 | { 4111 | "url": "https://github.com/theseer", 4112 | "type": "github" 4113 | } 4114 | ], 4115 | "time": "2025-12-08T11:19:18+00:00" 4116 | } 4117 | ], 4118 | "aliases": [], 4119 | "minimum-stability": "stable", 4120 | "stability-flags": {}, 4121 | "prefer-stable": false, 4122 | "prefer-lowest": false, 4123 | "platform": { 4124 | "php": "~8.3.0 || ~8.4.0 || ~8.5.0" 4125 | }, 4126 | "platform-dev": {}, 4127 | "platform-overrides": { 4128 | "php": "8.3.99" 4129 | }, 4130 | "plugin-api-version": "2.9.0" 4131 | } 4132 | --------------------------------------------------------------------------------