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