├── .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 | [](https://travis-ci.org/Roave/behat-psr11extension) [](https://scrutinizer-ci.com/g/Roave/behat-psr11extension/?branch=master) [](https://scrutinizer-ci.com/g/Roave/behat-psr11extension/?branch=master) [](https://packagist.org/packages/roave/behat-psr11extension) [](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 |
--------------------------------------------------------------------------------