├── .github
└── workflows
│ └── php.yml
├── .gitignore
├── .php-cs-fixer.php
├── README.md
├── composer.json
├── composer.lock
├── phpunit.xml
├── src
├── Contracts
│ └── HandlerInterface.php
├── Handler
│ ├── LookupHandler.php
│ └── MockLookupHandler.php
└── VerifyDomain.php
└── tests
├── Pest.php
├── Stubs
└── html.html
├── TestCase.php
└── Unit
└── DomainOwnershipTest.php
/.github/workflows/php.yml:
--------------------------------------------------------------------------------
1 | name: PHP Composer
2 |
3 | on:
4 | push:
5 | pull_request:
6 | branches: [ "master" ]
7 |
8 | permissions:
9 | contents: read
10 |
11 | jobs:
12 | build:
13 |
14 | runs-on: ubuntu-latest
15 |
16 | steps:
17 | - uses: actions/checkout@v3
18 |
19 | - name: Validate composer.json and composer.lock
20 | run: composer validate --strict
21 |
22 | - name: Cache Composer packages
23 | id: composer-cache
24 | uses: actions/cache@v3
25 | with:
26 | path: vendor
27 | key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }}
28 | restore-keys: |
29 | ${{ runner.os }}-php-
30 |
31 | - name: Install dependencies
32 | run: composer install --prefer-dist --no-progress
33 |
34 | - name: Running test suite
35 | run: composer test
36 |
37 | - name: Running codestyle checks
38 | run: composer codestyle
39 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | vendor/
2 | .php-cs-fixer.cache
3 | .idea
--------------------------------------------------------------------------------
/.php-cs-fixer.php:
--------------------------------------------------------------------------------
1 | in(["src", "tests"])
4 | ;
5 |
6 | $config = new PhpCsFixer\Config();
7 | return $config->setRules([
8 | '@PSR12' => true,
9 | 'array_syntax' => ['syntax' => 'short'],
10 | ])
11 | ->setFinder($finder)
12 | ;
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | # VERIFY DOMAIN
6 | PHP Verify Domain lets you verify the ownership of a domain by validating uploaded **File Content**, **Meta Tags** and **TXT DNS records**. You might have seen similar behaviour when verifying your domain in services like "Google Search Console" and ...
7 |
8 | You can learn more about Verify Domain package in this [blog post](https://hazaveh.net/2023/10/verify-domain-ownership-in-php/).
9 |
10 | This library is compatible with php > 5 and has almost zero runtime dependency.
11 |
12 | ## Installation
13 | Simply run via composer:
14 |
15 | composer require hazaveh/verify-domain
16 |
17 | ## Usage
18 | Simply instantiate the VerifyDomain Class or inject it using your DI container.
19 | ```php
20 | use Hazaveh\VerifyDomain\VerifyDomain;
21 |
22 | $verify = new VerifyDomain();
23 |
24 | /**
25 | * Verifies if a TXT record with the value of "php-is-awesome" exists.
26 | */
27 | $byDNS = $verify->verifyByDNS('hazaveh.net', 'php-is-awesome');
28 |
29 | /**
30 | * Verifies "https://hazaveh.net/verification.txt" with the content of "php-is-awesome" exists.
31 | */
32 | $byFile = $verify->verifyByFile("hazaveh.net", 'verification.txt', "php-is-awesome");
33 |
34 | /**
35 | * Verifies '' exists on hazaveh.net
36 | */
37 | $byMeta = $verify->verifyByMeta("hazaveh.net", 'verification', "verification-code-123");
38 |
39 | ```
40 |
41 | ## Contribution
42 | Add something cool or fix a broken cup, run the tests and create a PR ❤️🚀
--------------------------------------------------------------------------------
/composer.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "hazaveh/verify-domain",
3 | "description": "Verify Domain Ownership with PHP",
4 | "type": "library",
5 | "require": {
6 | "php": ">=5"
7 | },
8 | "require-dev": {
9 | "friendsofphp/php-cs-fixer": "^3.30",
10 | "pestphp/pest": "^2.19"
11 | },
12 | "license": "MIT",
13 | "autoload": {
14 | "psr-4": {
15 | "Hazaveh\\VerifyDomain\\": "src/"
16 | }
17 | },
18 | "autoload-dev": {
19 | "psr-4": {
20 | "Tests\\": "tests/"
21 | }
22 | },
23 | "authors": [
24 | {
25 | "name": "Mahdi Hazaveh",
26 | "email": "me@hazaveh.net"
27 | }
28 | ],
29 | "config": {
30 | "allow-plugins": {
31 | "pestphp/pest-plugin": true
32 | }
33 | },
34 | "scripts": {
35 | "test": "@php vendor/bin/pest",
36 | "codestyle": "@php vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.php --verbose --diff --dry-run"
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/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": "430ffa808e75ae01a6c98c5d1f769b85",
8 | "packages": [],
9 | "packages-dev": [
10 | {
11 | "name": "brianium/paratest",
12 | "version": "v7.2.7",
13 | "source": {
14 | "type": "git",
15 | "url": "https://github.com/paratestphp/paratest.git",
16 | "reference": "1526eb4fd195f65075456dee394d14742ae0a66c"
17 | },
18 | "dist": {
19 | "type": "zip",
20 | "url": "https://api.github.com/repos/paratestphp/paratest/zipball/1526eb4fd195f65075456dee394d14742ae0a66c",
21 | "reference": "1526eb4fd195f65075456dee394d14742ae0a66c",
22 | "shasum": ""
23 | },
24 | "require": {
25 | "ext-dom": "*",
26 | "ext-pcre": "*",
27 | "ext-reflection": "*",
28 | "ext-simplexml": "*",
29 | "fidry/cpu-core-counter": "^0.4.1 || ^0.5.1",
30 | "jean85/pretty-package-versions": "^2.0.5",
31 | "php": "~8.1.0 || ~8.2.0 || ~8.3.0",
32 | "phpunit/php-code-coverage": "^10.1.3",
33 | "phpunit/php-file-iterator": "^4.0.2",
34 | "phpunit/php-timer": "^6.0",
35 | "phpunit/phpunit": "^10.3.2",
36 | "sebastian/environment": "^6.0.1",
37 | "symfony/console": "^6.3.4",
38 | "symfony/process": "^6.3.4"
39 | },
40 | "require-dev": {
41 | "doctrine/coding-standard": "^12.0.0",
42 | "ext-pcov": "*",
43 | "ext-posix": "*",
44 | "infection/infection": "^0.27.0",
45 | "phpstan/phpstan": "^1.10.32",
46 | "phpstan/phpstan-deprecation-rules": "^1.1.4",
47 | "phpstan/phpstan-phpunit": "^1.3.14",
48 | "phpstan/phpstan-strict-rules": "^1.5.1",
49 | "squizlabs/php_codesniffer": "^3.7.2",
50 | "symfony/filesystem": "^6.3.1"
51 | },
52 | "bin": [
53 | "bin/paratest",
54 | "bin/paratest.bat",
55 | "bin/paratest_for_phpstorm"
56 | ],
57 | "type": "library",
58 | "autoload": {
59 | "psr-4": {
60 | "ParaTest\\": [
61 | "src/"
62 | ]
63 | }
64 | },
65 | "notification-url": "https://packagist.org/downloads/",
66 | "license": [
67 | "MIT"
68 | ],
69 | "authors": [
70 | {
71 | "name": "Brian Scaturro",
72 | "email": "scaturrob@gmail.com",
73 | "role": "Developer"
74 | },
75 | {
76 | "name": "Filippo Tessarotto",
77 | "email": "zoeslam@gmail.com",
78 | "role": "Developer"
79 | }
80 | ],
81 | "description": "Parallel testing for PHP",
82 | "homepage": "https://github.com/paratestphp/paratest",
83 | "keywords": [
84 | "concurrent",
85 | "parallel",
86 | "phpunit",
87 | "testing"
88 | ],
89 | "support": {
90 | "issues": "https://github.com/paratestphp/paratest/issues",
91 | "source": "https://github.com/paratestphp/paratest/tree/v7.2.7"
92 | },
93 | "funding": [
94 | {
95 | "url": "https://github.com/sponsors/Slamdunk",
96 | "type": "github"
97 | },
98 | {
99 | "url": "https://paypal.me/filippotessarotto",
100 | "type": "paypal"
101 | }
102 | ],
103 | "time": "2023-09-14T14:10:09+00:00"
104 | },
105 | {
106 | "name": "composer/pcre",
107 | "version": "3.1.0",
108 | "source": {
109 | "type": "git",
110 | "url": "https://github.com/composer/pcre.git",
111 | "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2"
112 | },
113 | "dist": {
114 | "type": "zip",
115 | "url": "https://api.github.com/repos/composer/pcre/zipball/4bff79ddd77851fe3cdd11616ed3f92841ba5bd2",
116 | "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2",
117 | "shasum": ""
118 | },
119 | "require": {
120 | "php": "^7.4 || ^8.0"
121 | },
122 | "require-dev": {
123 | "phpstan/phpstan": "^1.3",
124 | "phpstan/phpstan-strict-rules": "^1.1",
125 | "symfony/phpunit-bridge": "^5"
126 | },
127 | "type": "library",
128 | "extra": {
129 | "branch-alias": {
130 | "dev-main": "3.x-dev"
131 | }
132 | },
133 | "autoload": {
134 | "psr-4": {
135 | "Composer\\Pcre\\": "src"
136 | }
137 | },
138 | "notification-url": "https://packagist.org/downloads/",
139 | "license": [
140 | "MIT"
141 | ],
142 | "authors": [
143 | {
144 | "name": "Jordi Boggiano",
145 | "email": "j.boggiano@seld.be",
146 | "homepage": "http://seld.be"
147 | }
148 | ],
149 | "description": "PCRE wrapping library that offers type-safe preg_* replacements.",
150 | "keywords": [
151 | "PCRE",
152 | "preg",
153 | "regex",
154 | "regular expression"
155 | ],
156 | "support": {
157 | "issues": "https://github.com/composer/pcre/issues",
158 | "source": "https://github.com/composer/pcre/tree/3.1.0"
159 | },
160 | "funding": [
161 | {
162 | "url": "https://packagist.com",
163 | "type": "custom"
164 | },
165 | {
166 | "url": "https://github.com/composer",
167 | "type": "github"
168 | },
169 | {
170 | "url": "https://tidelift.com/funding/github/packagist/composer/composer",
171 | "type": "tidelift"
172 | }
173 | ],
174 | "time": "2022-11-17T09:50:14+00:00"
175 | },
176 | {
177 | "name": "composer/semver",
178 | "version": "3.4.0",
179 | "source": {
180 | "type": "git",
181 | "url": "https://github.com/composer/semver.git",
182 | "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32"
183 | },
184 | "dist": {
185 | "type": "zip",
186 | "url": "https://api.github.com/repos/composer/semver/zipball/35e8d0af4486141bc745f23a29cc2091eb624a32",
187 | "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32",
188 | "shasum": ""
189 | },
190 | "require": {
191 | "php": "^5.3.2 || ^7.0 || ^8.0"
192 | },
193 | "require-dev": {
194 | "phpstan/phpstan": "^1.4",
195 | "symfony/phpunit-bridge": "^4.2 || ^5"
196 | },
197 | "type": "library",
198 | "extra": {
199 | "branch-alias": {
200 | "dev-main": "3.x-dev"
201 | }
202 | },
203 | "autoload": {
204 | "psr-4": {
205 | "Composer\\Semver\\": "src"
206 | }
207 | },
208 | "notification-url": "https://packagist.org/downloads/",
209 | "license": [
210 | "MIT"
211 | ],
212 | "authors": [
213 | {
214 | "name": "Nils Adermann",
215 | "email": "naderman@naderman.de",
216 | "homepage": "http://www.naderman.de"
217 | },
218 | {
219 | "name": "Jordi Boggiano",
220 | "email": "j.boggiano@seld.be",
221 | "homepage": "http://seld.be"
222 | },
223 | {
224 | "name": "Rob Bast",
225 | "email": "rob.bast@gmail.com",
226 | "homepage": "http://robbast.nl"
227 | }
228 | ],
229 | "description": "Semver library that offers utilities, version constraint parsing and validation.",
230 | "keywords": [
231 | "semantic",
232 | "semver",
233 | "validation",
234 | "versioning"
235 | ],
236 | "support": {
237 | "irc": "ircs://irc.libera.chat:6697/composer",
238 | "issues": "https://github.com/composer/semver/issues",
239 | "source": "https://github.com/composer/semver/tree/3.4.0"
240 | },
241 | "funding": [
242 | {
243 | "url": "https://packagist.com",
244 | "type": "custom"
245 | },
246 | {
247 | "url": "https://github.com/composer",
248 | "type": "github"
249 | },
250 | {
251 | "url": "https://tidelift.com/funding/github/packagist/composer/composer",
252 | "type": "tidelift"
253 | }
254 | ],
255 | "time": "2023-08-31T09:50:34+00:00"
256 | },
257 | {
258 | "name": "composer/xdebug-handler",
259 | "version": "3.0.3",
260 | "source": {
261 | "type": "git",
262 | "url": "https://github.com/composer/xdebug-handler.git",
263 | "reference": "ced299686f41dce890debac69273b47ffe98a40c"
264 | },
265 | "dist": {
266 | "type": "zip",
267 | "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/ced299686f41dce890debac69273b47ffe98a40c",
268 | "reference": "ced299686f41dce890debac69273b47ffe98a40c",
269 | "shasum": ""
270 | },
271 | "require": {
272 | "composer/pcre": "^1 || ^2 || ^3",
273 | "php": "^7.2.5 || ^8.0",
274 | "psr/log": "^1 || ^2 || ^3"
275 | },
276 | "require-dev": {
277 | "phpstan/phpstan": "^1.0",
278 | "phpstan/phpstan-strict-rules": "^1.1",
279 | "symfony/phpunit-bridge": "^6.0"
280 | },
281 | "type": "library",
282 | "autoload": {
283 | "psr-4": {
284 | "Composer\\XdebugHandler\\": "src"
285 | }
286 | },
287 | "notification-url": "https://packagist.org/downloads/",
288 | "license": [
289 | "MIT"
290 | ],
291 | "authors": [
292 | {
293 | "name": "John Stevenson",
294 | "email": "john-stevenson@blueyonder.co.uk"
295 | }
296 | ],
297 | "description": "Restarts a process without Xdebug.",
298 | "keywords": [
299 | "Xdebug",
300 | "performance"
301 | ],
302 | "support": {
303 | "irc": "irc://irc.freenode.org/composer",
304 | "issues": "https://github.com/composer/xdebug-handler/issues",
305 | "source": "https://github.com/composer/xdebug-handler/tree/3.0.3"
306 | },
307 | "funding": [
308 | {
309 | "url": "https://packagist.com",
310 | "type": "custom"
311 | },
312 | {
313 | "url": "https://github.com/composer",
314 | "type": "github"
315 | },
316 | {
317 | "url": "https://tidelift.com/funding/github/packagist/composer/composer",
318 | "type": "tidelift"
319 | }
320 | ],
321 | "time": "2022-02-25T21:32:43+00:00"
322 | },
323 | {
324 | "name": "doctrine/deprecations",
325 | "version": "1.1.2",
326 | "source": {
327 | "type": "git",
328 | "url": "https://github.com/doctrine/deprecations.git",
329 | "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931"
330 | },
331 | "dist": {
332 | "type": "zip",
333 | "url": "https://api.github.com/repos/doctrine/deprecations/zipball/4f2d4f2836e7ec4e7a8625e75c6aa916004db931",
334 | "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931",
335 | "shasum": ""
336 | },
337 | "require": {
338 | "php": "^7.1 || ^8.0"
339 | },
340 | "require-dev": {
341 | "doctrine/coding-standard": "^9",
342 | "phpstan/phpstan": "1.4.10 || 1.10.15",
343 | "phpstan/phpstan-phpunit": "^1.0",
344 | "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
345 | "psalm/plugin-phpunit": "0.18.4",
346 | "psr/log": "^1 || ^2 || ^3",
347 | "vimeo/psalm": "4.30.0 || 5.12.0"
348 | },
349 | "suggest": {
350 | "psr/log": "Allows logging deprecations via PSR-3 logger implementation"
351 | },
352 | "type": "library",
353 | "autoload": {
354 | "psr-4": {
355 | "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations"
356 | }
357 | },
358 | "notification-url": "https://packagist.org/downloads/",
359 | "license": [
360 | "MIT"
361 | ],
362 | "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.",
363 | "homepage": "https://www.doctrine-project.org/",
364 | "support": {
365 | "issues": "https://github.com/doctrine/deprecations/issues",
366 | "source": "https://github.com/doctrine/deprecations/tree/1.1.2"
367 | },
368 | "time": "2023-09-27T20:04:15+00:00"
369 | },
370 | {
371 | "name": "fidry/cpu-core-counter",
372 | "version": "0.5.1",
373 | "source": {
374 | "type": "git",
375 | "url": "https://github.com/theofidry/cpu-core-counter.git",
376 | "reference": "b58e5a3933e541dc286cc91fc4f3898bbc6f1623"
377 | },
378 | "dist": {
379 | "type": "zip",
380 | "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/b58e5a3933e541dc286cc91fc4f3898bbc6f1623",
381 | "reference": "b58e5a3933e541dc286cc91fc4f3898bbc6f1623",
382 | "shasum": ""
383 | },
384 | "require": {
385 | "php": "^7.2 || ^8.0"
386 | },
387 | "require-dev": {
388 | "fidry/makefile": "^0.2.0",
389 | "phpstan/extension-installer": "^1.2.0",
390 | "phpstan/phpstan": "^1.9.2",
391 | "phpstan/phpstan-deprecation-rules": "^1.0.0",
392 | "phpstan/phpstan-phpunit": "^1.2.2",
393 | "phpstan/phpstan-strict-rules": "^1.4.4",
394 | "phpunit/phpunit": "^9.5.26 || ^8.5.31",
395 | "theofidry/php-cs-fixer-config": "^1.0",
396 | "webmozarts/strict-phpunit": "^7.5"
397 | },
398 | "type": "library",
399 | "autoload": {
400 | "psr-4": {
401 | "Fidry\\CpuCoreCounter\\": "src/"
402 | }
403 | },
404 | "notification-url": "https://packagist.org/downloads/",
405 | "license": [
406 | "MIT"
407 | ],
408 | "authors": [
409 | {
410 | "name": "Théo FIDRY",
411 | "email": "theo.fidry@gmail.com"
412 | }
413 | ],
414 | "description": "Tiny utility to get the number of CPU cores.",
415 | "keywords": [
416 | "CPU",
417 | "core"
418 | ],
419 | "support": {
420 | "issues": "https://github.com/theofidry/cpu-core-counter/issues",
421 | "source": "https://github.com/theofidry/cpu-core-counter/tree/0.5.1"
422 | },
423 | "funding": [
424 | {
425 | "url": "https://github.com/theofidry",
426 | "type": "github"
427 | }
428 | ],
429 | "time": "2022-12-24T12:35:10+00:00"
430 | },
431 | {
432 | "name": "filp/whoops",
433 | "version": "2.15.3",
434 | "source": {
435 | "type": "git",
436 | "url": "https://github.com/filp/whoops.git",
437 | "reference": "c83e88a30524f9360b11f585f71e6b17313b7187"
438 | },
439 | "dist": {
440 | "type": "zip",
441 | "url": "https://api.github.com/repos/filp/whoops/zipball/c83e88a30524f9360b11f585f71e6b17313b7187",
442 | "reference": "c83e88a30524f9360b11f585f71e6b17313b7187",
443 | "shasum": ""
444 | },
445 | "require": {
446 | "php": "^5.5.9 || ^7.0 || ^8.0",
447 | "psr/log": "^1.0.1 || ^2.0 || ^3.0"
448 | },
449 | "require-dev": {
450 | "mockery/mockery": "^0.9 || ^1.0",
451 | "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.3",
452 | "symfony/var-dumper": "^2.6 || ^3.0 || ^4.0 || ^5.0"
453 | },
454 | "suggest": {
455 | "symfony/var-dumper": "Pretty print complex values better with var-dumper available",
456 | "whoops/soap": "Formats errors as SOAP responses"
457 | },
458 | "type": "library",
459 | "extra": {
460 | "branch-alias": {
461 | "dev-master": "2.7-dev"
462 | }
463 | },
464 | "autoload": {
465 | "psr-4": {
466 | "Whoops\\": "src/Whoops/"
467 | }
468 | },
469 | "notification-url": "https://packagist.org/downloads/",
470 | "license": [
471 | "MIT"
472 | ],
473 | "authors": [
474 | {
475 | "name": "Filipe Dobreira",
476 | "homepage": "https://github.com/filp",
477 | "role": "Developer"
478 | }
479 | ],
480 | "description": "php error handling for cool kids",
481 | "homepage": "https://filp.github.io/whoops/",
482 | "keywords": [
483 | "error",
484 | "exception",
485 | "handling",
486 | "library",
487 | "throwable",
488 | "whoops"
489 | ],
490 | "support": {
491 | "issues": "https://github.com/filp/whoops/issues",
492 | "source": "https://github.com/filp/whoops/tree/2.15.3"
493 | },
494 | "funding": [
495 | {
496 | "url": "https://github.com/denis-sokolov",
497 | "type": "github"
498 | }
499 | ],
500 | "time": "2023-07-13T12:00:00+00:00"
501 | },
502 | {
503 | "name": "friendsofphp/php-cs-fixer",
504 | "version": "v3.34.0",
505 | "source": {
506 | "type": "git",
507 | "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git",
508 | "reference": "7c7a4ad2ed8fe50df3e25528218b13d383608f23"
509 | },
510 | "dist": {
511 | "type": "zip",
512 | "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/7c7a4ad2ed8fe50df3e25528218b13d383608f23",
513 | "reference": "7c7a4ad2ed8fe50df3e25528218b13d383608f23",
514 | "shasum": ""
515 | },
516 | "require": {
517 | "composer/semver": "^3.3",
518 | "composer/xdebug-handler": "^3.0.3",
519 | "ext-json": "*",
520 | "ext-tokenizer": "*",
521 | "php": "^7.4 || ^8.0",
522 | "sebastian/diff": "^4.0 || ^5.0",
523 | "symfony/console": "^5.4 || ^6.0",
524 | "symfony/event-dispatcher": "^5.4 || ^6.0",
525 | "symfony/filesystem": "^5.4 || ^6.0",
526 | "symfony/finder": "^5.4 || ^6.0",
527 | "symfony/options-resolver": "^5.4 || ^6.0",
528 | "symfony/polyfill-mbstring": "^1.27",
529 | "symfony/polyfill-php80": "^1.27",
530 | "symfony/polyfill-php81": "^1.27",
531 | "symfony/process": "^5.4 || ^6.0",
532 | "symfony/stopwatch": "^5.4 || ^6.0"
533 | },
534 | "conflict": {
535 | "stevebauman/unfinalize": "*"
536 | },
537 | "require-dev": {
538 | "facile-it/paraunit": "^1.3 || ^2.0",
539 | "justinrainbow/json-schema": "^5.2",
540 | "keradus/cli-executor": "^2.0",
541 | "mikey179/vfsstream": "^1.6.11",
542 | "php-coveralls/php-coveralls": "^2.5.3",
543 | "php-cs-fixer/accessible-object": "^1.1",
544 | "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.2",
545 | "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.2.1",
546 | "phpspec/prophecy": "^1.16",
547 | "phpspec/prophecy-phpunit": "^2.0",
548 | "phpunit/phpunit": "^9.5",
549 | "phpunitgoodpractices/polyfill": "^1.6",
550 | "phpunitgoodpractices/traits": "^1.9.2",
551 | "symfony/phpunit-bridge": "^6.2.3",
552 | "symfony/yaml": "^5.4 || ^6.0"
553 | },
554 | "suggest": {
555 | "ext-dom": "For handling output formats in XML",
556 | "ext-mbstring": "For handling non-UTF8 characters."
557 | },
558 | "bin": [
559 | "php-cs-fixer"
560 | ],
561 | "type": "application",
562 | "autoload": {
563 | "psr-4": {
564 | "PhpCsFixer\\": "src/"
565 | }
566 | },
567 | "notification-url": "https://packagist.org/downloads/",
568 | "license": [
569 | "MIT"
570 | ],
571 | "authors": [
572 | {
573 | "name": "Fabien Potencier",
574 | "email": "fabien@symfony.com"
575 | },
576 | {
577 | "name": "Dariusz Rumiński",
578 | "email": "dariusz.ruminski@gmail.com"
579 | }
580 | ],
581 | "description": "A tool to automatically fix PHP code style",
582 | "keywords": [
583 | "Static code analysis",
584 | "fixer",
585 | "standards",
586 | "static analysis"
587 | ],
588 | "support": {
589 | "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues",
590 | "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.34.0"
591 | },
592 | "funding": [
593 | {
594 | "url": "https://github.com/keradus",
595 | "type": "github"
596 | }
597 | ],
598 | "time": "2023-09-29T15:34:26+00:00"
599 | },
600 | {
601 | "name": "jean85/pretty-package-versions",
602 | "version": "2.0.5",
603 | "source": {
604 | "type": "git",
605 | "url": "https://github.com/Jean85/pretty-package-versions.git",
606 | "reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af"
607 | },
608 | "dist": {
609 | "type": "zip",
610 | "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/ae547e455a3d8babd07b96966b17d7fd21d9c6af",
611 | "reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af",
612 | "shasum": ""
613 | },
614 | "require": {
615 | "composer-runtime-api": "^2.0.0",
616 | "php": "^7.1|^8.0"
617 | },
618 | "require-dev": {
619 | "friendsofphp/php-cs-fixer": "^2.17",
620 | "jean85/composer-provided-replaced-stub-package": "^1.0",
621 | "phpstan/phpstan": "^0.12.66",
622 | "phpunit/phpunit": "^7.5|^8.5|^9.4",
623 | "vimeo/psalm": "^4.3"
624 | },
625 | "type": "library",
626 | "extra": {
627 | "branch-alias": {
628 | "dev-master": "1.x-dev"
629 | }
630 | },
631 | "autoload": {
632 | "psr-4": {
633 | "Jean85\\": "src/"
634 | }
635 | },
636 | "notification-url": "https://packagist.org/downloads/",
637 | "license": [
638 | "MIT"
639 | ],
640 | "authors": [
641 | {
642 | "name": "Alessandro Lai",
643 | "email": "alessandro.lai85@gmail.com"
644 | }
645 | ],
646 | "description": "A library to get pretty versions strings of installed dependencies",
647 | "keywords": [
648 | "composer",
649 | "package",
650 | "release",
651 | "versions"
652 | ],
653 | "support": {
654 | "issues": "https://github.com/Jean85/pretty-package-versions/issues",
655 | "source": "https://github.com/Jean85/pretty-package-versions/tree/2.0.5"
656 | },
657 | "time": "2021-10-08T21:21:46+00:00"
658 | },
659 | {
660 | "name": "myclabs/deep-copy",
661 | "version": "1.11.1",
662 | "source": {
663 | "type": "git",
664 | "url": "https://github.com/myclabs/DeepCopy.git",
665 | "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c"
666 | },
667 | "dist": {
668 | "type": "zip",
669 | "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c",
670 | "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c",
671 | "shasum": ""
672 | },
673 | "require": {
674 | "php": "^7.1 || ^8.0"
675 | },
676 | "conflict": {
677 | "doctrine/collections": "<1.6.8",
678 | "doctrine/common": "<2.13.3 || >=3,<3.2.2"
679 | },
680 | "require-dev": {
681 | "doctrine/collections": "^1.6.8",
682 | "doctrine/common": "^2.13.3 || ^3.2.2",
683 | "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13"
684 | },
685 | "type": "library",
686 | "autoload": {
687 | "files": [
688 | "src/DeepCopy/deep_copy.php"
689 | ],
690 | "psr-4": {
691 | "DeepCopy\\": "src/DeepCopy/"
692 | }
693 | },
694 | "notification-url": "https://packagist.org/downloads/",
695 | "license": [
696 | "MIT"
697 | ],
698 | "description": "Create deep copies (clones) of your objects",
699 | "keywords": [
700 | "clone",
701 | "copy",
702 | "duplicate",
703 | "object",
704 | "object graph"
705 | ],
706 | "support": {
707 | "issues": "https://github.com/myclabs/DeepCopy/issues",
708 | "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1"
709 | },
710 | "funding": [
711 | {
712 | "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
713 | "type": "tidelift"
714 | }
715 | ],
716 | "time": "2023-03-08T13:26:56+00:00"
717 | },
718 | {
719 | "name": "nikic/php-parser",
720 | "version": "v4.17.1",
721 | "source": {
722 | "type": "git",
723 | "url": "https://github.com/nikic/PHP-Parser.git",
724 | "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d"
725 | },
726 | "dist": {
727 | "type": "zip",
728 | "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d",
729 | "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d",
730 | "shasum": ""
731 | },
732 | "require": {
733 | "ext-tokenizer": "*",
734 | "php": ">=7.0"
735 | },
736 | "require-dev": {
737 | "ircmaxell/php-yacc": "^0.0.7",
738 | "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0"
739 | },
740 | "bin": [
741 | "bin/php-parse"
742 | ],
743 | "type": "library",
744 | "extra": {
745 | "branch-alias": {
746 | "dev-master": "4.9-dev"
747 | }
748 | },
749 | "autoload": {
750 | "psr-4": {
751 | "PhpParser\\": "lib/PhpParser"
752 | }
753 | },
754 | "notification-url": "https://packagist.org/downloads/",
755 | "license": [
756 | "BSD-3-Clause"
757 | ],
758 | "authors": [
759 | {
760 | "name": "Nikita Popov"
761 | }
762 | ],
763 | "description": "A PHP parser written in PHP",
764 | "keywords": [
765 | "parser",
766 | "php"
767 | ],
768 | "support": {
769 | "issues": "https://github.com/nikic/PHP-Parser/issues",
770 | "source": "https://github.com/nikic/PHP-Parser/tree/v4.17.1"
771 | },
772 | "time": "2023-08-13T19:53:39+00:00"
773 | },
774 | {
775 | "name": "nunomaduro/collision",
776 | "version": "v7.9.0",
777 | "source": {
778 | "type": "git",
779 | "url": "https://github.com/nunomaduro/collision.git",
780 | "reference": "296d0cf9fe462837ac0da8a568b56fc026b132da"
781 | },
782 | "dist": {
783 | "type": "zip",
784 | "url": "https://api.github.com/repos/nunomaduro/collision/zipball/296d0cf9fe462837ac0da8a568b56fc026b132da",
785 | "reference": "296d0cf9fe462837ac0da8a568b56fc026b132da",
786 | "shasum": ""
787 | },
788 | "require": {
789 | "filp/whoops": "^2.15.3",
790 | "nunomaduro/termwind": "^1.15.1",
791 | "php": "^8.1.0",
792 | "symfony/console": "^6.3.4"
793 | },
794 | "require-dev": {
795 | "brianium/paratest": "^7.2.7",
796 | "laravel/framework": "^10.23.1",
797 | "laravel/pint": "^1.13.1",
798 | "laravel/sail": "^1.25.0",
799 | "laravel/sanctum": "^3.3.1",
800 | "laravel/tinker": "^2.8.2",
801 | "nunomaduro/larastan": "^2.6.4",
802 | "orchestra/testbench-core": "^8.11.0",
803 | "pestphp/pest": "^2.19.1",
804 | "phpunit/phpunit": "^10.3.5",
805 | "sebastian/environment": "^6.0.1",
806 | "spatie/laravel-ignition": "^2.3.0"
807 | },
808 | "type": "library",
809 | "extra": {
810 | "laravel": {
811 | "providers": [
812 | "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider"
813 | ]
814 | }
815 | },
816 | "autoload": {
817 | "files": [
818 | "./src/Adapters/Phpunit/Autoload.php"
819 | ],
820 | "psr-4": {
821 | "NunoMaduro\\Collision\\": "src/"
822 | }
823 | },
824 | "notification-url": "https://packagist.org/downloads/",
825 | "license": [
826 | "MIT"
827 | ],
828 | "authors": [
829 | {
830 | "name": "Nuno Maduro",
831 | "email": "enunomaduro@gmail.com"
832 | }
833 | ],
834 | "description": "Cli error handling for console/command-line PHP applications.",
835 | "keywords": [
836 | "artisan",
837 | "cli",
838 | "command-line",
839 | "console",
840 | "error",
841 | "handling",
842 | "laravel",
843 | "laravel-zero",
844 | "php",
845 | "symfony"
846 | ],
847 | "support": {
848 | "issues": "https://github.com/nunomaduro/collision/issues",
849 | "source": "https://github.com/nunomaduro/collision"
850 | },
851 | "funding": [
852 | {
853 | "url": "https://www.paypal.com/paypalme/enunomaduro",
854 | "type": "custom"
855 | },
856 | {
857 | "url": "https://github.com/nunomaduro",
858 | "type": "github"
859 | },
860 | {
861 | "url": "https://www.patreon.com/nunomaduro",
862 | "type": "patreon"
863 | }
864 | ],
865 | "time": "2023-09-19T10:45:09+00:00"
866 | },
867 | {
868 | "name": "nunomaduro/termwind",
869 | "version": "v1.15.1",
870 | "source": {
871 | "type": "git",
872 | "url": "https://github.com/nunomaduro/termwind.git",
873 | "reference": "8ab0b32c8caa4a2e09700ea32925441385e4a5dc"
874 | },
875 | "dist": {
876 | "type": "zip",
877 | "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/8ab0b32c8caa4a2e09700ea32925441385e4a5dc",
878 | "reference": "8ab0b32c8caa4a2e09700ea32925441385e4a5dc",
879 | "shasum": ""
880 | },
881 | "require": {
882 | "ext-mbstring": "*",
883 | "php": "^8.0",
884 | "symfony/console": "^5.3.0|^6.0.0"
885 | },
886 | "require-dev": {
887 | "ergebnis/phpstan-rules": "^1.0.",
888 | "illuminate/console": "^8.0|^9.0",
889 | "illuminate/support": "^8.0|^9.0",
890 | "laravel/pint": "^1.0.0",
891 | "pestphp/pest": "^1.21.0",
892 | "pestphp/pest-plugin-mock": "^1.0",
893 | "phpstan/phpstan": "^1.4.6",
894 | "phpstan/phpstan-strict-rules": "^1.1.0",
895 | "symfony/var-dumper": "^5.2.7|^6.0.0",
896 | "thecodingmachine/phpstan-strict-rules": "^1.0.0"
897 | },
898 | "type": "library",
899 | "extra": {
900 | "laravel": {
901 | "providers": [
902 | "Termwind\\Laravel\\TermwindServiceProvider"
903 | ]
904 | }
905 | },
906 | "autoload": {
907 | "files": [
908 | "src/Functions.php"
909 | ],
910 | "psr-4": {
911 | "Termwind\\": "src/"
912 | }
913 | },
914 | "notification-url": "https://packagist.org/downloads/",
915 | "license": [
916 | "MIT"
917 | ],
918 | "authors": [
919 | {
920 | "name": "Nuno Maduro",
921 | "email": "enunomaduro@gmail.com"
922 | }
923 | ],
924 | "description": "Its like Tailwind CSS, but for the console.",
925 | "keywords": [
926 | "cli",
927 | "console",
928 | "css",
929 | "package",
930 | "php",
931 | "style"
932 | ],
933 | "support": {
934 | "issues": "https://github.com/nunomaduro/termwind/issues",
935 | "source": "https://github.com/nunomaduro/termwind/tree/v1.15.1"
936 | },
937 | "funding": [
938 | {
939 | "url": "https://www.paypal.com/paypalme/enunomaduro",
940 | "type": "custom"
941 | },
942 | {
943 | "url": "https://github.com/nunomaduro",
944 | "type": "github"
945 | },
946 | {
947 | "url": "https://github.com/xiCO2k",
948 | "type": "github"
949 | }
950 | ],
951 | "time": "2023-02-08T01:06:31+00:00"
952 | },
953 | {
954 | "name": "pestphp/pest",
955 | "version": "v2.20.0",
956 | "source": {
957 | "type": "git",
958 | "url": "https://github.com/pestphp/pest.git",
959 | "reference": "a8b785f69e44ae3f902cbf08fe6b79359ba46945"
960 | },
961 | "dist": {
962 | "type": "zip",
963 | "url": "https://api.github.com/repos/pestphp/pest/zipball/a8b785f69e44ae3f902cbf08fe6b79359ba46945",
964 | "reference": "a8b785f69e44ae3f902cbf08fe6b79359ba46945",
965 | "shasum": ""
966 | },
967 | "require": {
968 | "brianium/paratest": "^7.2.7",
969 | "nunomaduro/collision": "^7.9.0",
970 | "nunomaduro/termwind": "^1.15.1",
971 | "pestphp/pest-plugin": "^2.1.1",
972 | "pestphp/pest-plugin-arch": "^2.3.3",
973 | "php": "^8.1.0",
974 | "phpunit/phpunit": "^10.3.5"
975 | },
976 | "conflict": {
977 | "phpunit/phpunit": ">10.3.5",
978 | "sebastian/exporter": "<5.1.0",
979 | "webmozart/assert": "<1.11.0"
980 | },
981 | "require-dev": {
982 | "pestphp/pest-dev-tools": "^2.16.0",
983 | "pestphp/pest-plugin-type-coverage": "^2.2.0",
984 | "symfony/process": "^6.3.4"
985 | },
986 | "bin": [
987 | "bin/pest"
988 | ],
989 | "type": "library",
990 | "extra": {
991 | "pest": {
992 | "plugins": [
993 | "Pest\\Plugins\\Bail",
994 | "Pest\\Plugins\\Cache",
995 | "Pest\\Plugins\\Coverage",
996 | "Pest\\Plugins\\Init",
997 | "Pest\\Plugins\\Environment",
998 | "Pest\\Plugins\\Help",
999 | "Pest\\Plugins\\Memory",
1000 | "Pest\\Plugins\\Only",
1001 | "Pest\\Plugins\\Printer",
1002 | "Pest\\Plugins\\ProcessIsolation",
1003 | "Pest\\Plugins\\Profile",
1004 | "Pest\\Plugins\\Retry",
1005 | "Pest\\Plugins\\Snapshot",
1006 | "Pest\\Plugins\\Verbose",
1007 | "Pest\\Plugins\\Version",
1008 | "Pest\\Plugins\\Parallel"
1009 | ]
1010 | }
1011 | },
1012 | "autoload": {
1013 | "files": [
1014 | "src/Functions.php",
1015 | "src/Pest.php"
1016 | ],
1017 | "psr-4": {
1018 | "Pest\\": "src/"
1019 | }
1020 | },
1021 | "notification-url": "https://packagist.org/downloads/",
1022 | "license": [
1023 | "MIT"
1024 | ],
1025 | "authors": [
1026 | {
1027 | "name": "Nuno Maduro",
1028 | "email": "enunomaduro@gmail.com"
1029 | }
1030 | ],
1031 | "description": "The elegant PHP Testing Framework.",
1032 | "keywords": [
1033 | "framework",
1034 | "pest",
1035 | "php",
1036 | "test",
1037 | "testing",
1038 | "unit"
1039 | ],
1040 | "support": {
1041 | "issues": "https://github.com/pestphp/pest/issues",
1042 | "source": "https://github.com/pestphp/pest/tree/v2.20.0"
1043 | },
1044 | "funding": [
1045 | {
1046 | "url": "https://www.paypal.com/paypalme/enunomaduro",
1047 | "type": "custom"
1048 | },
1049 | {
1050 | "url": "https://github.com/nunomaduro",
1051 | "type": "github"
1052 | }
1053 | ],
1054 | "time": "2023-09-29T18:05:52+00:00"
1055 | },
1056 | {
1057 | "name": "pestphp/pest-plugin",
1058 | "version": "v2.1.1",
1059 | "source": {
1060 | "type": "git",
1061 | "url": "https://github.com/pestphp/pest-plugin.git",
1062 | "reference": "e05d2859e08c2567ee38ce8b005d044e72648c0b"
1063 | },
1064 | "dist": {
1065 | "type": "zip",
1066 | "url": "https://api.github.com/repos/pestphp/pest-plugin/zipball/e05d2859e08c2567ee38ce8b005d044e72648c0b",
1067 | "reference": "e05d2859e08c2567ee38ce8b005d044e72648c0b",
1068 | "shasum": ""
1069 | },
1070 | "require": {
1071 | "composer-plugin-api": "^2.0.0",
1072 | "composer-runtime-api": "^2.2.2",
1073 | "php": "^8.1"
1074 | },
1075 | "conflict": {
1076 | "pestphp/pest": "<2.2.3"
1077 | },
1078 | "require-dev": {
1079 | "composer/composer": "^2.5.8",
1080 | "pestphp/pest": "^2.16.0",
1081 | "pestphp/pest-dev-tools": "^2.16.0"
1082 | },
1083 | "type": "composer-plugin",
1084 | "extra": {
1085 | "class": "Pest\\Plugin\\Manager"
1086 | },
1087 | "autoload": {
1088 | "psr-4": {
1089 | "Pest\\Plugin\\": "src/"
1090 | }
1091 | },
1092 | "notification-url": "https://packagist.org/downloads/",
1093 | "license": [
1094 | "MIT"
1095 | ],
1096 | "description": "The Pest plugin manager",
1097 | "keywords": [
1098 | "framework",
1099 | "manager",
1100 | "pest",
1101 | "php",
1102 | "plugin",
1103 | "test",
1104 | "testing",
1105 | "unit"
1106 | ],
1107 | "support": {
1108 | "source": "https://github.com/pestphp/pest-plugin/tree/v2.1.1"
1109 | },
1110 | "funding": [
1111 | {
1112 | "url": "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=66BYDWAT92N6L",
1113 | "type": "custom"
1114 | },
1115 | {
1116 | "url": "https://github.com/nunomaduro",
1117 | "type": "github"
1118 | },
1119 | {
1120 | "url": "https://www.patreon.com/nunomaduro",
1121 | "type": "patreon"
1122 | }
1123 | ],
1124 | "time": "2023-08-22T08:40:06+00:00"
1125 | },
1126 | {
1127 | "name": "pestphp/pest-plugin-arch",
1128 | "version": "v2.3.3",
1129 | "source": {
1130 | "type": "git",
1131 | "url": "https://github.com/pestphp/pest-plugin-arch.git",
1132 | "reference": "b758990e83f89daba3c45672398579cf8692213f"
1133 | },
1134 | "dist": {
1135 | "type": "zip",
1136 | "url": "https://api.github.com/repos/pestphp/pest-plugin-arch/zipball/b758990e83f89daba3c45672398579cf8692213f",
1137 | "reference": "b758990e83f89daba3c45672398579cf8692213f",
1138 | "shasum": ""
1139 | },
1140 | "require": {
1141 | "nunomaduro/collision": "^7.8.1",
1142 | "pestphp/pest-plugin": "^2.0.1",
1143 | "php": "^8.1",
1144 | "ta-tikoma/phpunit-architecture-test": "^0.7.4"
1145 | },
1146 | "require-dev": {
1147 | "pestphp/pest": "^2.16.0",
1148 | "pestphp/pest-dev-tools": "^2.16.0"
1149 | },
1150 | "type": "library",
1151 | "autoload": {
1152 | "files": [
1153 | "src/Autoload.php"
1154 | ],
1155 | "psr-4": {
1156 | "Pest\\Arch\\": "src/"
1157 | }
1158 | },
1159 | "notification-url": "https://packagist.org/downloads/",
1160 | "license": [
1161 | "MIT"
1162 | ],
1163 | "description": "The Arch plugin for Pest PHP.",
1164 | "keywords": [
1165 | "arch",
1166 | "architecture",
1167 | "framework",
1168 | "pest",
1169 | "php",
1170 | "plugin",
1171 | "test",
1172 | "testing",
1173 | "unit"
1174 | ],
1175 | "support": {
1176 | "source": "https://github.com/pestphp/pest-plugin-arch/tree/v2.3.3"
1177 | },
1178 | "funding": [
1179 | {
1180 | "url": "https://www.paypal.com/paypalme/enunomaduro",
1181 | "type": "custom"
1182 | },
1183 | {
1184 | "url": "https://github.com/nunomaduro",
1185 | "type": "github"
1186 | }
1187 | ],
1188 | "time": "2023-08-21T16:06:30+00:00"
1189 | },
1190 | {
1191 | "name": "phar-io/manifest",
1192 | "version": "2.0.3",
1193 | "source": {
1194 | "type": "git",
1195 | "url": "https://github.com/phar-io/manifest.git",
1196 | "reference": "97803eca37d319dfa7826cc2437fc020857acb53"
1197 | },
1198 | "dist": {
1199 | "type": "zip",
1200 | "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53",
1201 | "reference": "97803eca37d319dfa7826cc2437fc020857acb53",
1202 | "shasum": ""
1203 | },
1204 | "require": {
1205 | "ext-dom": "*",
1206 | "ext-phar": "*",
1207 | "ext-xmlwriter": "*",
1208 | "phar-io/version": "^3.0.1",
1209 | "php": "^7.2 || ^8.0"
1210 | },
1211 | "type": "library",
1212 | "extra": {
1213 | "branch-alias": {
1214 | "dev-master": "2.0.x-dev"
1215 | }
1216 | },
1217 | "autoload": {
1218 | "classmap": [
1219 | "src/"
1220 | ]
1221 | },
1222 | "notification-url": "https://packagist.org/downloads/",
1223 | "license": [
1224 | "BSD-3-Clause"
1225 | ],
1226 | "authors": [
1227 | {
1228 | "name": "Arne Blankerts",
1229 | "email": "arne@blankerts.de",
1230 | "role": "Developer"
1231 | },
1232 | {
1233 | "name": "Sebastian Heuer",
1234 | "email": "sebastian@phpeople.de",
1235 | "role": "Developer"
1236 | },
1237 | {
1238 | "name": "Sebastian Bergmann",
1239 | "email": "sebastian@phpunit.de",
1240 | "role": "Developer"
1241 | }
1242 | ],
1243 | "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
1244 | "support": {
1245 | "issues": "https://github.com/phar-io/manifest/issues",
1246 | "source": "https://github.com/phar-io/manifest/tree/2.0.3"
1247 | },
1248 | "time": "2021-07-20T11:28:43+00:00"
1249 | },
1250 | {
1251 | "name": "phar-io/version",
1252 | "version": "3.2.1",
1253 | "source": {
1254 | "type": "git",
1255 | "url": "https://github.com/phar-io/version.git",
1256 | "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74"
1257 | },
1258 | "dist": {
1259 | "type": "zip",
1260 | "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74",
1261 | "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74",
1262 | "shasum": ""
1263 | },
1264 | "require": {
1265 | "php": "^7.2 || ^8.0"
1266 | },
1267 | "type": "library",
1268 | "autoload": {
1269 | "classmap": [
1270 | "src/"
1271 | ]
1272 | },
1273 | "notification-url": "https://packagist.org/downloads/",
1274 | "license": [
1275 | "BSD-3-Clause"
1276 | ],
1277 | "authors": [
1278 | {
1279 | "name": "Arne Blankerts",
1280 | "email": "arne@blankerts.de",
1281 | "role": "Developer"
1282 | },
1283 | {
1284 | "name": "Sebastian Heuer",
1285 | "email": "sebastian@phpeople.de",
1286 | "role": "Developer"
1287 | },
1288 | {
1289 | "name": "Sebastian Bergmann",
1290 | "email": "sebastian@phpunit.de",
1291 | "role": "Developer"
1292 | }
1293 | ],
1294 | "description": "Library for handling version information and constraints",
1295 | "support": {
1296 | "issues": "https://github.com/phar-io/version/issues",
1297 | "source": "https://github.com/phar-io/version/tree/3.2.1"
1298 | },
1299 | "time": "2022-02-21T01:04:05+00:00"
1300 | },
1301 | {
1302 | "name": "phpdocumentor/reflection-common",
1303 | "version": "2.2.0",
1304 | "source": {
1305 | "type": "git",
1306 | "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
1307 | "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b"
1308 | },
1309 | "dist": {
1310 | "type": "zip",
1311 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b",
1312 | "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b",
1313 | "shasum": ""
1314 | },
1315 | "require": {
1316 | "php": "^7.2 || ^8.0"
1317 | },
1318 | "type": "library",
1319 | "extra": {
1320 | "branch-alias": {
1321 | "dev-2.x": "2.x-dev"
1322 | }
1323 | },
1324 | "autoload": {
1325 | "psr-4": {
1326 | "phpDocumentor\\Reflection\\": "src/"
1327 | }
1328 | },
1329 | "notification-url": "https://packagist.org/downloads/",
1330 | "license": [
1331 | "MIT"
1332 | ],
1333 | "authors": [
1334 | {
1335 | "name": "Jaap van Otterdijk",
1336 | "email": "opensource@ijaap.nl"
1337 | }
1338 | ],
1339 | "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
1340 | "homepage": "http://www.phpdoc.org",
1341 | "keywords": [
1342 | "FQSEN",
1343 | "phpDocumentor",
1344 | "phpdoc",
1345 | "reflection",
1346 | "static analysis"
1347 | ],
1348 | "support": {
1349 | "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues",
1350 | "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x"
1351 | },
1352 | "time": "2020-06-27T09:03:43+00:00"
1353 | },
1354 | {
1355 | "name": "phpdocumentor/reflection-docblock",
1356 | "version": "5.3.0",
1357 | "source": {
1358 | "type": "git",
1359 | "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
1360 | "reference": "622548b623e81ca6d78b721c5e029f4ce664f170"
1361 | },
1362 | "dist": {
1363 | "type": "zip",
1364 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170",
1365 | "reference": "622548b623e81ca6d78b721c5e029f4ce664f170",
1366 | "shasum": ""
1367 | },
1368 | "require": {
1369 | "ext-filter": "*",
1370 | "php": "^7.2 || ^8.0",
1371 | "phpdocumentor/reflection-common": "^2.2",
1372 | "phpdocumentor/type-resolver": "^1.3",
1373 | "webmozart/assert": "^1.9.1"
1374 | },
1375 | "require-dev": {
1376 | "mockery/mockery": "~1.3.2",
1377 | "psalm/phar": "^4.8"
1378 | },
1379 | "type": "library",
1380 | "extra": {
1381 | "branch-alias": {
1382 | "dev-master": "5.x-dev"
1383 | }
1384 | },
1385 | "autoload": {
1386 | "psr-4": {
1387 | "phpDocumentor\\Reflection\\": "src"
1388 | }
1389 | },
1390 | "notification-url": "https://packagist.org/downloads/",
1391 | "license": [
1392 | "MIT"
1393 | ],
1394 | "authors": [
1395 | {
1396 | "name": "Mike van Riel",
1397 | "email": "me@mikevanriel.com"
1398 | },
1399 | {
1400 | "name": "Jaap van Otterdijk",
1401 | "email": "account@ijaap.nl"
1402 | }
1403 | ],
1404 | "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
1405 | "support": {
1406 | "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
1407 | "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0"
1408 | },
1409 | "time": "2021-10-19T17:43:47+00:00"
1410 | },
1411 | {
1412 | "name": "phpdocumentor/type-resolver",
1413 | "version": "1.7.3",
1414 | "source": {
1415 | "type": "git",
1416 | "url": "https://github.com/phpDocumentor/TypeResolver.git",
1417 | "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419"
1418 | },
1419 | "dist": {
1420 | "type": "zip",
1421 | "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419",
1422 | "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419",
1423 | "shasum": ""
1424 | },
1425 | "require": {
1426 | "doctrine/deprecations": "^1.0",
1427 | "php": "^7.4 || ^8.0",
1428 | "phpdocumentor/reflection-common": "^2.0",
1429 | "phpstan/phpdoc-parser": "^1.13"
1430 | },
1431 | "require-dev": {
1432 | "ext-tokenizer": "*",
1433 | "phpbench/phpbench": "^1.2",
1434 | "phpstan/extension-installer": "^1.1",
1435 | "phpstan/phpstan": "^1.8",
1436 | "phpstan/phpstan-phpunit": "^1.1",
1437 | "phpunit/phpunit": "^9.5",
1438 | "rector/rector": "^0.13.9",
1439 | "vimeo/psalm": "^4.25"
1440 | },
1441 | "type": "library",
1442 | "extra": {
1443 | "branch-alias": {
1444 | "dev-1.x": "1.x-dev"
1445 | }
1446 | },
1447 | "autoload": {
1448 | "psr-4": {
1449 | "phpDocumentor\\Reflection\\": "src"
1450 | }
1451 | },
1452 | "notification-url": "https://packagist.org/downloads/",
1453 | "license": [
1454 | "MIT"
1455 | ],
1456 | "authors": [
1457 | {
1458 | "name": "Mike van Riel",
1459 | "email": "me@mikevanriel.com"
1460 | }
1461 | ],
1462 | "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
1463 | "support": {
1464 | "issues": "https://github.com/phpDocumentor/TypeResolver/issues",
1465 | "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.7.3"
1466 | },
1467 | "time": "2023-08-12T11:01:26+00:00"
1468 | },
1469 | {
1470 | "name": "phpstan/phpdoc-parser",
1471 | "version": "1.24.2",
1472 | "source": {
1473 | "type": "git",
1474 | "url": "https://github.com/phpstan/phpdoc-parser.git",
1475 | "reference": "bcad8d995980440892759db0c32acae7c8e79442"
1476 | },
1477 | "dist": {
1478 | "type": "zip",
1479 | "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/bcad8d995980440892759db0c32acae7c8e79442",
1480 | "reference": "bcad8d995980440892759db0c32acae7c8e79442",
1481 | "shasum": ""
1482 | },
1483 | "require": {
1484 | "php": "^7.2 || ^8.0"
1485 | },
1486 | "require-dev": {
1487 | "doctrine/annotations": "^2.0",
1488 | "nikic/php-parser": "^4.15",
1489 | "php-parallel-lint/php-parallel-lint": "^1.2",
1490 | "phpstan/extension-installer": "^1.0",
1491 | "phpstan/phpstan": "^1.5",
1492 | "phpstan/phpstan-phpunit": "^1.1",
1493 | "phpstan/phpstan-strict-rules": "^1.0",
1494 | "phpunit/phpunit": "^9.5",
1495 | "symfony/process": "^5.2"
1496 | },
1497 | "type": "library",
1498 | "autoload": {
1499 | "psr-4": {
1500 | "PHPStan\\PhpDocParser\\": [
1501 | "src/"
1502 | ]
1503 | }
1504 | },
1505 | "notification-url": "https://packagist.org/downloads/",
1506 | "license": [
1507 | "MIT"
1508 | ],
1509 | "description": "PHPDoc parser with support for nullable, intersection and generic types",
1510 | "support": {
1511 | "issues": "https://github.com/phpstan/phpdoc-parser/issues",
1512 | "source": "https://github.com/phpstan/phpdoc-parser/tree/1.24.2"
1513 | },
1514 | "time": "2023-09-26T12:28:12+00:00"
1515 | },
1516 | {
1517 | "name": "phpunit/php-code-coverage",
1518 | "version": "10.1.6",
1519 | "source": {
1520 | "type": "git",
1521 | "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
1522 | "reference": "56f33548fe522c8d82da7ff3824b42829d324364"
1523 | },
1524 | "dist": {
1525 | "type": "zip",
1526 | "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/56f33548fe522c8d82da7ff3824b42829d324364",
1527 | "reference": "56f33548fe522c8d82da7ff3824b42829d324364",
1528 | "shasum": ""
1529 | },
1530 | "require": {
1531 | "ext-dom": "*",
1532 | "ext-libxml": "*",
1533 | "ext-xmlwriter": "*",
1534 | "nikic/php-parser": "^4.15",
1535 | "php": ">=8.1",
1536 | "phpunit/php-file-iterator": "^4.0",
1537 | "phpunit/php-text-template": "^3.0",
1538 | "sebastian/code-unit-reverse-lookup": "^3.0",
1539 | "sebastian/complexity": "^3.0",
1540 | "sebastian/environment": "^6.0",
1541 | "sebastian/lines-of-code": "^2.0",
1542 | "sebastian/version": "^4.0",
1543 | "theseer/tokenizer": "^1.2.0"
1544 | },
1545 | "require-dev": {
1546 | "phpunit/phpunit": "^10.1"
1547 | },
1548 | "suggest": {
1549 | "ext-pcov": "PHP extension that provides line coverage",
1550 | "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage"
1551 | },
1552 | "type": "library",
1553 | "extra": {
1554 | "branch-alias": {
1555 | "dev-main": "10.1-dev"
1556 | }
1557 | },
1558 | "autoload": {
1559 | "classmap": [
1560 | "src/"
1561 | ]
1562 | },
1563 | "notification-url": "https://packagist.org/downloads/",
1564 | "license": [
1565 | "BSD-3-Clause"
1566 | ],
1567 | "authors": [
1568 | {
1569 | "name": "Sebastian Bergmann",
1570 | "email": "sebastian@phpunit.de",
1571 | "role": "lead"
1572 | }
1573 | ],
1574 | "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
1575 | "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
1576 | "keywords": [
1577 | "coverage",
1578 | "testing",
1579 | "xunit"
1580 | ],
1581 | "support": {
1582 | "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
1583 | "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy",
1584 | "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.6"
1585 | },
1586 | "funding": [
1587 | {
1588 | "url": "https://github.com/sebastianbergmann",
1589 | "type": "github"
1590 | }
1591 | ],
1592 | "time": "2023-09-19T04:59:03+00:00"
1593 | },
1594 | {
1595 | "name": "phpunit/php-file-iterator",
1596 | "version": "4.1.0",
1597 | "source": {
1598 | "type": "git",
1599 | "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
1600 | "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c"
1601 | },
1602 | "dist": {
1603 | "type": "zip",
1604 | "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a95037b6d9e608ba092da1b23931e537cadc3c3c",
1605 | "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c",
1606 | "shasum": ""
1607 | },
1608 | "require": {
1609 | "php": ">=8.1"
1610 | },
1611 | "require-dev": {
1612 | "phpunit/phpunit": "^10.0"
1613 | },
1614 | "type": "library",
1615 | "extra": {
1616 | "branch-alias": {
1617 | "dev-main": "4.0-dev"
1618 | }
1619 | },
1620 | "autoload": {
1621 | "classmap": [
1622 | "src/"
1623 | ]
1624 | },
1625 | "notification-url": "https://packagist.org/downloads/",
1626 | "license": [
1627 | "BSD-3-Clause"
1628 | ],
1629 | "authors": [
1630 | {
1631 | "name": "Sebastian Bergmann",
1632 | "email": "sebastian@phpunit.de",
1633 | "role": "lead"
1634 | }
1635 | ],
1636 | "description": "FilterIterator implementation that filters files based on a list of suffixes.",
1637 | "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
1638 | "keywords": [
1639 | "filesystem",
1640 | "iterator"
1641 | ],
1642 | "support": {
1643 | "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues",
1644 | "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy",
1645 | "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.1.0"
1646 | },
1647 | "funding": [
1648 | {
1649 | "url": "https://github.com/sebastianbergmann",
1650 | "type": "github"
1651 | }
1652 | ],
1653 | "time": "2023-08-31T06:24:48+00:00"
1654 | },
1655 | {
1656 | "name": "phpunit/php-invoker",
1657 | "version": "4.0.0",
1658 | "source": {
1659 | "type": "git",
1660 | "url": "https://github.com/sebastianbergmann/php-invoker.git",
1661 | "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7"
1662 | },
1663 | "dist": {
1664 | "type": "zip",
1665 | "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7",
1666 | "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7",
1667 | "shasum": ""
1668 | },
1669 | "require": {
1670 | "php": ">=8.1"
1671 | },
1672 | "require-dev": {
1673 | "ext-pcntl": "*",
1674 | "phpunit/phpunit": "^10.0"
1675 | },
1676 | "suggest": {
1677 | "ext-pcntl": "*"
1678 | },
1679 | "type": "library",
1680 | "extra": {
1681 | "branch-alias": {
1682 | "dev-main": "4.0-dev"
1683 | }
1684 | },
1685 | "autoload": {
1686 | "classmap": [
1687 | "src/"
1688 | ]
1689 | },
1690 | "notification-url": "https://packagist.org/downloads/",
1691 | "license": [
1692 | "BSD-3-Clause"
1693 | ],
1694 | "authors": [
1695 | {
1696 | "name": "Sebastian Bergmann",
1697 | "email": "sebastian@phpunit.de",
1698 | "role": "lead"
1699 | }
1700 | ],
1701 | "description": "Invoke callables with a timeout",
1702 | "homepage": "https://github.com/sebastianbergmann/php-invoker/",
1703 | "keywords": [
1704 | "process"
1705 | ],
1706 | "support": {
1707 | "issues": "https://github.com/sebastianbergmann/php-invoker/issues",
1708 | "source": "https://github.com/sebastianbergmann/php-invoker/tree/4.0.0"
1709 | },
1710 | "funding": [
1711 | {
1712 | "url": "https://github.com/sebastianbergmann",
1713 | "type": "github"
1714 | }
1715 | ],
1716 | "time": "2023-02-03T06:56:09+00:00"
1717 | },
1718 | {
1719 | "name": "phpunit/php-text-template",
1720 | "version": "3.0.1",
1721 | "source": {
1722 | "type": "git",
1723 | "url": "https://github.com/sebastianbergmann/php-text-template.git",
1724 | "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748"
1725 | },
1726 | "dist": {
1727 | "type": "zip",
1728 | "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/0c7b06ff49e3d5072f057eb1fa59258bf287a748",
1729 | "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748",
1730 | "shasum": ""
1731 | },
1732 | "require": {
1733 | "php": ">=8.1"
1734 | },
1735 | "require-dev": {
1736 | "phpunit/phpunit": "^10.0"
1737 | },
1738 | "type": "library",
1739 | "extra": {
1740 | "branch-alias": {
1741 | "dev-main": "3.0-dev"
1742 | }
1743 | },
1744 | "autoload": {
1745 | "classmap": [
1746 | "src/"
1747 | ]
1748 | },
1749 | "notification-url": "https://packagist.org/downloads/",
1750 | "license": [
1751 | "BSD-3-Clause"
1752 | ],
1753 | "authors": [
1754 | {
1755 | "name": "Sebastian Bergmann",
1756 | "email": "sebastian@phpunit.de",
1757 | "role": "lead"
1758 | }
1759 | ],
1760 | "description": "Simple template engine.",
1761 | "homepage": "https://github.com/sebastianbergmann/php-text-template/",
1762 | "keywords": [
1763 | "template"
1764 | ],
1765 | "support": {
1766 | "issues": "https://github.com/sebastianbergmann/php-text-template/issues",
1767 | "security": "https://github.com/sebastianbergmann/php-text-template/security/policy",
1768 | "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.1"
1769 | },
1770 | "funding": [
1771 | {
1772 | "url": "https://github.com/sebastianbergmann",
1773 | "type": "github"
1774 | }
1775 | ],
1776 | "time": "2023-08-31T14:07:24+00:00"
1777 | },
1778 | {
1779 | "name": "phpunit/php-timer",
1780 | "version": "6.0.0",
1781 | "source": {
1782 | "type": "git",
1783 | "url": "https://github.com/sebastianbergmann/php-timer.git",
1784 | "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d"
1785 | },
1786 | "dist": {
1787 | "type": "zip",
1788 | "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/e2a2d67966e740530f4a3343fe2e030ffdc1161d",
1789 | "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d",
1790 | "shasum": ""
1791 | },
1792 | "require": {
1793 | "php": ">=8.1"
1794 | },
1795 | "require-dev": {
1796 | "phpunit/phpunit": "^10.0"
1797 | },
1798 | "type": "library",
1799 | "extra": {
1800 | "branch-alias": {
1801 | "dev-main": "6.0-dev"
1802 | }
1803 | },
1804 | "autoload": {
1805 | "classmap": [
1806 | "src/"
1807 | ]
1808 | },
1809 | "notification-url": "https://packagist.org/downloads/",
1810 | "license": [
1811 | "BSD-3-Clause"
1812 | ],
1813 | "authors": [
1814 | {
1815 | "name": "Sebastian Bergmann",
1816 | "email": "sebastian@phpunit.de",
1817 | "role": "lead"
1818 | }
1819 | ],
1820 | "description": "Utility class for timing",
1821 | "homepage": "https://github.com/sebastianbergmann/php-timer/",
1822 | "keywords": [
1823 | "timer"
1824 | ],
1825 | "support": {
1826 | "issues": "https://github.com/sebastianbergmann/php-timer/issues",
1827 | "source": "https://github.com/sebastianbergmann/php-timer/tree/6.0.0"
1828 | },
1829 | "funding": [
1830 | {
1831 | "url": "https://github.com/sebastianbergmann",
1832 | "type": "github"
1833 | }
1834 | ],
1835 | "time": "2023-02-03T06:57:52+00:00"
1836 | },
1837 | {
1838 | "name": "phpunit/phpunit",
1839 | "version": "10.3.5",
1840 | "source": {
1841 | "type": "git",
1842 | "url": "https://github.com/sebastianbergmann/phpunit.git",
1843 | "reference": "747c3b2038f1139e3dcd9886a3f5a948648b7503"
1844 | },
1845 | "dist": {
1846 | "type": "zip",
1847 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/747c3b2038f1139e3dcd9886a3f5a948648b7503",
1848 | "reference": "747c3b2038f1139e3dcd9886a3f5a948648b7503",
1849 | "shasum": ""
1850 | },
1851 | "require": {
1852 | "ext-dom": "*",
1853 | "ext-json": "*",
1854 | "ext-libxml": "*",
1855 | "ext-mbstring": "*",
1856 | "ext-xml": "*",
1857 | "ext-xmlwriter": "*",
1858 | "myclabs/deep-copy": "^1.10.1",
1859 | "phar-io/manifest": "^2.0.3",
1860 | "phar-io/version": "^3.0.2",
1861 | "php": ">=8.1",
1862 | "phpunit/php-code-coverage": "^10.1.5",
1863 | "phpunit/php-file-iterator": "^4.0",
1864 | "phpunit/php-invoker": "^4.0",
1865 | "phpunit/php-text-template": "^3.0",
1866 | "phpunit/php-timer": "^6.0",
1867 | "sebastian/cli-parser": "^2.0",
1868 | "sebastian/code-unit": "^2.0",
1869 | "sebastian/comparator": "^5.0",
1870 | "sebastian/diff": "^5.0",
1871 | "sebastian/environment": "^6.0",
1872 | "sebastian/exporter": "^5.1",
1873 | "sebastian/global-state": "^6.0.1",
1874 | "sebastian/object-enumerator": "^5.0",
1875 | "sebastian/recursion-context": "^5.0",
1876 | "sebastian/type": "^4.0",
1877 | "sebastian/version": "^4.0"
1878 | },
1879 | "suggest": {
1880 | "ext-soap": "To be able to generate mocks based on WSDL files"
1881 | },
1882 | "bin": [
1883 | "phpunit"
1884 | ],
1885 | "type": "library",
1886 | "extra": {
1887 | "branch-alias": {
1888 | "dev-main": "10.3-dev"
1889 | }
1890 | },
1891 | "autoload": {
1892 | "files": [
1893 | "src/Framework/Assert/Functions.php"
1894 | ],
1895 | "classmap": [
1896 | "src/"
1897 | ]
1898 | },
1899 | "notification-url": "https://packagist.org/downloads/",
1900 | "license": [
1901 | "BSD-3-Clause"
1902 | ],
1903 | "authors": [
1904 | {
1905 | "name": "Sebastian Bergmann",
1906 | "email": "sebastian@phpunit.de",
1907 | "role": "lead"
1908 | }
1909 | ],
1910 | "description": "The PHP Unit Testing framework.",
1911 | "homepage": "https://phpunit.de/",
1912 | "keywords": [
1913 | "phpunit",
1914 | "testing",
1915 | "xunit"
1916 | ],
1917 | "support": {
1918 | "issues": "https://github.com/sebastianbergmann/phpunit/issues",
1919 | "security": "https://github.com/sebastianbergmann/phpunit/security/policy",
1920 | "source": "https://github.com/sebastianbergmann/phpunit/tree/10.3.5"
1921 | },
1922 | "funding": [
1923 | {
1924 | "url": "https://phpunit.de/sponsors.html",
1925 | "type": "custom"
1926 | },
1927 | {
1928 | "url": "https://github.com/sebastianbergmann",
1929 | "type": "github"
1930 | },
1931 | {
1932 | "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit",
1933 | "type": "tidelift"
1934 | }
1935 | ],
1936 | "time": "2023-09-19T05:42:37+00:00"
1937 | },
1938 | {
1939 | "name": "psr/container",
1940 | "version": "2.0.2",
1941 | "source": {
1942 | "type": "git",
1943 | "url": "https://github.com/php-fig/container.git",
1944 | "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963"
1945 | },
1946 | "dist": {
1947 | "type": "zip",
1948 | "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963",
1949 | "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963",
1950 | "shasum": ""
1951 | },
1952 | "require": {
1953 | "php": ">=7.4.0"
1954 | },
1955 | "type": "library",
1956 | "extra": {
1957 | "branch-alias": {
1958 | "dev-master": "2.0.x-dev"
1959 | }
1960 | },
1961 | "autoload": {
1962 | "psr-4": {
1963 | "Psr\\Container\\": "src/"
1964 | }
1965 | },
1966 | "notification-url": "https://packagist.org/downloads/",
1967 | "license": [
1968 | "MIT"
1969 | ],
1970 | "authors": [
1971 | {
1972 | "name": "PHP-FIG",
1973 | "homepage": "https://www.php-fig.org/"
1974 | }
1975 | ],
1976 | "description": "Common Container Interface (PHP FIG PSR-11)",
1977 | "homepage": "https://github.com/php-fig/container",
1978 | "keywords": [
1979 | "PSR-11",
1980 | "container",
1981 | "container-interface",
1982 | "container-interop",
1983 | "psr"
1984 | ],
1985 | "support": {
1986 | "issues": "https://github.com/php-fig/container/issues",
1987 | "source": "https://github.com/php-fig/container/tree/2.0.2"
1988 | },
1989 | "time": "2021-11-05T16:47:00+00:00"
1990 | },
1991 | {
1992 | "name": "psr/event-dispatcher",
1993 | "version": "1.0.0",
1994 | "source": {
1995 | "type": "git",
1996 | "url": "https://github.com/php-fig/event-dispatcher.git",
1997 | "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0"
1998 | },
1999 | "dist": {
2000 | "type": "zip",
2001 | "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0",
2002 | "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0",
2003 | "shasum": ""
2004 | },
2005 | "require": {
2006 | "php": ">=7.2.0"
2007 | },
2008 | "type": "library",
2009 | "extra": {
2010 | "branch-alias": {
2011 | "dev-master": "1.0.x-dev"
2012 | }
2013 | },
2014 | "autoload": {
2015 | "psr-4": {
2016 | "Psr\\EventDispatcher\\": "src/"
2017 | }
2018 | },
2019 | "notification-url": "https://packagist.org/downloads/",
2020 | "license": [
2021 | "MIT"
2022 | ],
2023 | "authors": [
2024 | {
2025 | "name": "PHP-FIG",
2026 | "homepage": "http://www.php-fig.org/"
2027 | }
2028 | ],
2029 | "description": "Standard interfaces for event handling.",
2030 | "keywords": [
2031 | "events",
2032 | "psr",
2033 | "psr-14"
2034 | ],
2035 | "support": {
2036 | "issues": "https://github.com/php-fig/event-dispatcher/issues",
2037 | "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0"
2038 | },
2039 | "time": "2019-01-08T18:20:26+00:00"
2040 | },
2041 | {
2042 | "name": "psr/log",
2043 | "version": "3.0.0",
2044 | "source": {
2045 | "type": "git",
2046 | "url": "https://github.com/php-fig/log.git",
2047 | "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001"
2048 | },
2049 | "dist": {
2050 | "type": "zip",
2051 | "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001",
2052 | "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001",
2053 | "shasum": ""
2054 | },
2055 | "require": {
2056 | "php": ">=8.0.0"
2057 | },
2058 | "type": "library",
2059 | "extra": {
2060 | "branch-alias": {
2061 | "dev-master": "3.x-dev"
2062 | }
2063 | },
2064 | "autoload": {
2065 | "psr-4": {
2066 | "Psr\\Log\\": "src"
2067 | }
2068 | },
2069 | "notification-url": "https://packagist.org/downloads/",
2070 | "license": [
2071 | "MIT"
2072 | ],
2073 | "authors": [
2074 | {
2075 | "name": "PHP-FIG",
2076 | "homepage": "https://www.php-fig.org/"
2077 | }
2078 | ],
2079 | "description": "Common interface for logging libraries",
2080 | "homepage": "https://github.com/php-fig/log",
2081 | "keywords": [
2082 | "log",
2083 | "psr",
2084 | "psr-3"
2085 | ],
2086 | "support": {
2087 | "source": "https://github.com/php-fig/log/tree/3.0.0"
2088 | },
2089 | "time": "2021-07-14T16:46:02+00:00"
2090 | },
2091 | {
2092 | "name": "sebastian/cli-parser",
2093 | "version": "2.0.0",
2094 | "source": {
2095 | "type": "git",
2096 | "url": "https://github.com/sebastianbergmann/cli-parser.git",
2097 | "reference": "efdc130dbbbb8ef0b545a994fd811725c5282cae"
2098 | },
2099 | "dist": {
2100 | "type": "zip",
2101 | "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/efdc130dbbbb8ef0b545a994fd811725c5282cae",
2102 | "reference": "efdc130dbbbb8ef0b545a994fd811725c5282cae",
2103 | "shasum": ""
2104 | },
2105 | "require": {
2106 | "php": ">=8.1"
2107 | },
2108 | "require-dev": {
2109 | "phpunit/phpunit": "^10.0"
2110 | },
2111 | "type": "library",
2112 | "extra": {
2113 | "branch-alias": {
2114 | "dev-main": "2.0-dev"
2115 | }
2116 | },
2117 | "autoload": {
2118 | "classmap": [
2119 | "src/"
2120 | ]
2121 | },
2122 | "notification-url": "https://packagist.org/downloads/",
2123 | "license": [
2124 | "BSD-3-Clause"
2125 | ],
2126 | "authors": [
2127 | {
2128 | "name": "Sebastian Bergmann",
2129 | "email": "sebastian@phpunit.de",
2130 | "role": "lead"
2131 | }
2132 | ],
2133 | "description": "Library for parsing CLI options",
2134 | "homepage": "https://github.com/sebastianbergmann/cli-parser",
2135 | "support": {
2136 | "issues": "https://github.com/sebastianbergmann/cli-parser/issues",
2137 | "source": "https://github.com/sebastianbergmann/cli-parser/tree/2.0.0"
2138 | },
2139 | "funding": [
2140 | {
2141 | "url": "https://github.com/sebastianbergmann",
2142 | "type": "github"
2143 | }
2144 | ],
2145 | "time": "2023-02-03T06:58:15+00:00"
2146 | },
2147 | {
2148 | "name": "sebastian/code-unit",
2149 | "version": "2.0.0",
2150 | "source": {
2151 | "type": "git",
2152 | "url": "https://github.com/sebastianbergmann/code-unit.git",
2153 | "reference": "a81fee9eef0b7a76af11d121767abc44c104e503"
2154 | },
2155 | "dist": {
2156 | "type": "zip",
2157 | "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/a81fee9eef0b7a76af11d121767abc44c104e503",
2158 | "reference": "a81fee9eef0b7a76af11d121767abc44c104e503",
2159 | "shasum": ""
2160 | },
2161 | "require": {
2162 | "php": ">=8.1"
2163 | },
2164 | "require-dev": {
2165 | "phpunit/phpunit": "^10.0"
2166 | },
2167 | "type": "library",
2168 | "extra": {
2169 | "branch-alias": {
2170 | "dev-main": "2.0-dev"
2171 | }
2172 | },
2173 | "autoload": {
2174 | "classmap": [
2175 | "src/"
2176 | ]
2177 | },
2178 | "notification-url": "https://packagist.org/downloads/",
2179 | "license": [
2180 | "BSD-3-Clause"
2181 | ],
2182 | "authors": [
2183 | {
2184 | "name": "Sebastian Bergmann",
2185 | "email": "sebastian@phpunit.de",
2186 | "role": "lead"
2187 | }
2188 | ],
2189 | "description": "Collection of value objects that represent the PHP code units",
2190 | "homepage": "https://github.com/sebastianbergmann/code-unit",
2191 | "support": {
2192 | "issues": "https://github.com/sebastianbergmann/code-unit/issues",
2193 | "source": "https://github.com/sebastianbergmann/code-unit/tree/2.0.0"
2194 | },
2195 | "funding": [
2196 | {
2197 | "url": "https://github.com/sebastianbergmann",
2198 | "type": "github"
2199 | }
2200 | ],
2201 | "time": "2023-02-03T06:58:43+00:00"
2202 | },
2203 | {
2204 | "name": "sebastian/code-unit-reverse-lookup",
2205 | "version": "3.0.0",
2206 | "source": {
2207 | "type": "git",
2208 | "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
2209 | "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d"
2210 | },
2211 | "dist": {
2212 | "type": "zip",
2213 | "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/5e3a687f7d8ae33fb362c5c0743794bbb2420a1d",
2214 | "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d",
2215 | "shasum": ""
2216 | },
2217 | "require": {
2218 | "php": ">=8.1"
2219 | },
2220 | "require-dev": {
2221 | "phpunit/phpunit": "^10.0"
2222 | },
2223 | "type": "library",
2224 | "extra": {
2225 | "branch-alias": {
2226 | "dev-main": "3.0-dev"
2227 | }
2228 | },
2229 | "autoload": {
2230 | "classmap": [
2231 | "src/"
2232 | ]
2233 | },
2234 | "notification-url": "https://packagist.org/downloads/",
2235 | "license": [
2236 | "BSD-3-Clause"
2237 | ],
2238 | "authors": [
2239 | {
2240 | "name": "Sebastian Bergmann",
2241 | "email": "sebastian@phpunit.de"
2242 | }
2243 | ],
2244 | "description": "Looks up which function or method a line of code belongs to",
2245 | "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
2246 | "support": {
2247 | "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues",
2248 | "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/3.0.0"
2249 | },
2250 | "funding": [
2251 | {
2252 | "url": "https://github.com/sebastianbergmann",
2253 | "type": "github"
2254 | }
2255 | ],
2256 | "time": "2023-02-03T06:59:15+00:00"
2257 | },
2258 | {
2259 | "name": "sebastian/comparator",
2260 | "version": "5.0.1",
2261 | "source": {
2262 | "type": "git",
2263 | "url": "https://github.com/sebastianbergmann/comparator.git",
2264 | "reference": "2db5010a484d53ebf536087a70b4a5423c102372"
2265 | },
2266 | "dist": {
2267 | "type": "zip",
2268 | "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2db5010a484d53ebf536087a70b4a5423c102372",
2269 | "reference": "2db5010a484d53ebf536087a70b4a5423c102372",
2270 | "shasum": ""
2271 | },
2272 | "require": {
2273 | "ext-dom": "*",
2274 | "ext-mbstring": "*",
2275 | "php": ">=8.1",
2276 | "sebastian/diff": "^5.0",
2277 | "sebastian/exporter": "^5.0"
2278 | },
2279 | "require-dev": {
2280 | "phpunit/phpunit": "^10.3"
2281 | },
2282 | "type": "library",
2283 | "extra": {
2284 | "branch-alias": {
2285 | "dev-main": "5.0-dev"
2286 | }
2287 | },
2288 | "autoload": {
2289 | "classmap": [
2290 | "src/"
2291 | ]
2292 | },
2293 | "notification-url": "https://packagist.org/downloads/",
2294 | "license": [
2295 | "BSD-3-Clause"
2296 | ],
2297 | "authors": [
2298 | {
2299 | "name": "Sebastian Bergmann",
2300 | "email": "sebastian@phpunit.de"
2301 | },
2302 | {
2303 | "name": "Jeff Welch",
2304 | "email": "whatthejeff@gmail.com"
2305 | },
2306 | {
2307 | "name": "Volker Dusch",
2308 | "email": "github@wallbash.com"
2309 | },
2310 | {
2311 | "name": "Bernhard Schussek",
2312 | "email": "bschussek@2bepublished.at"
2313 | }
2314 | ],
2315 | "description": "Provides the functionality to compare PHP values for equality",
2316 | "homepage": "https://github.com/sebastianbergmann/comparator",
2317 | "keywords": [
2318 | "comparator",
2319 | "compare",
2320 | "equality"
2321 | ],
2322 | "support": {
2323 | "issues": "https://github.com/sebastianbergmann/comparator/issues",
2324 | "security": "https://github.com/sebastianbergmann/comparator/security/policy",
2325 | "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.1"
2326 | },
2327 | "funding": [
2328 | {
2329 | "url": "https://github.com/sebastianbergmann",
2330 | "type": "github"
2331 | }
2332 | ],
2333 | "time": "2023-08-14T13:18:12+00:00"
2334 | },
2335 | {
2336 | "name": "sebastian/complexity",
2337 | "version": "3.1.0",
2338 | "source": {
2339 | "type": "git",
2340 | "url": "https://github.com/sebastianbergmann/complexity.git",
2341 | "reference": "68cfb347a44871f01e33ab0ef8215966432f6957"
2342 | },
2343 | "dist": {
2344 | "type": "zip",
2345 | "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68cfb347a44871f01e33ab0ef8215966432f6957",
2346 | "reference": "68cfb347a44871f01e33ab0ef8215966432f6957",
2347 | "shasum": ""
2348 | },
2349 | "require": {
2350 | "nikic/php-parser": "^4.10",
2351 | "php": ">=8.1"
2352 | },
2353 | "require-dev": {
2354 | "phpunit/phpunit": "^10.0"
2355 | },
2356 | "type": "library",
2357 | "extra": {
2358 | "branch-alias": {
2359 | "dev-main": "3.1-dev"
2360 | }
2361 | },
2362 | "autoload": {
2363 | "classmap": [
2364 | "src/"
2365 | ]
2366 | },
2367 | "notification-url": "https://packagist.org/downloads/",
2368 | "license": [
2369 | "BSD-3-Clause"
2370 | ],
2371 | "authors": [
2372 | {
2373 | "name": "Sebastian Bergmann",
2374 | "email": "sebastian@phpunit.de",
2375 | "role": "lead"
2376 | }
2377 | ],
2378 | "description": "Library for calculating the complexity of PHP code units",
2379 | "homepage": "https://github.com/sebastianbergmann/complexity",
2380 | "support": {
2381 | "issues": "https://github.com/sebastianbergmann/complexity/issues",
2382 | "security": "https://github.com/sebastianbergmann/complexity/security/policy",
2383 | "source": "https://github.com/sebastianbergmann/complexity/tree/3.1.0"
2384 | },
2385 | "funding": [
2386 | {
2387 | "url": "https://github.com/sebastianbergmann",
2388 | "type": "github"
2389 | }
2390 | ],
2391 | "time": "2023-09-28T11:50:59+00:00"
2392 | },
2393 | {
2394 | "name": "sebastian/diff",
2395 | "version": "5.0.3",
2396 | "source": {
2397 | "type": "git",
2398 | "url": "https://github.com/sebastianbergmann/diff.git",
2399 | "reference": "912dc2fbe3e3c1e7873313cc801b100b6c68c87b"
2400 | },
2401 | "dist": {
2402 | "type": "zip",
2403 | "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/912dc2fbe3e3c1e7873313cc801b100b6c68c87b",
2404 | "reference": "912dc2fbe3e3c1e7873313cc801b100b6c68c87b",
2405 | "shasum": ""
2406 | },
2407 | "require": {
2408 | "php": ">=8.1"
2409 | },
2410 | "require-dev": {
2411 | "phpunit/phpunit": "^10.0",
2412 | "symfony/process": "^4.2 || ^5"
2413 | },
2414 | "type": "library",
2415 | "extra": {
2416 | "branch-alias": {
2417 | "dev-main": "5.0-dev"
2418 | }
2419 | },
2420 | "autoload": {
2421 | "classmap": [
2422 | "src/"
2423 | ]
2424 | },
2425 | "notification-url": "https://packagist.org/downloads/",
2426 | "license": [
2427 | "BSD-3-Clause"
2428 | ],
2429 | "authors": [
2430 | {
2431 | "name": "Sebastian Bergmann",
2432 | "email": "sebastian@phpunit.de"
2433 | },
2434 | {
2435 | "name": "Kore Nordmann",
2436 | "email": "mail@kore-nordmann.de"
2437 | }
2438 | ],
2439 | "description": "Diff implementation",
2440 | "homepage": "https://github.com/sebastianbergmann/diff",
2441 | "keywords": [
2442 | "diff",
2443 | "udiff",
2444 | "unidiff",
2445 | "unified diff"
2446 | ],
2447 | "support": {
2448 | "issues": "https://github.com/sebastianbergmann/diff/issues",
2449 | "security": "https://github.com/sebastianbergmann/diff/security/policy",
2450 | "source": "https://github.com/sebastianbergmann/diff/tree/5.0.3"
2451 | },
2452 | "funding": [
2453 | {
2454 | "url": "https://github.com/sebastianbergmann",
2455 | "type": "github"
2456 | }
2457 | ],
2458 | "time": "2023-05-01T07:48:21+00:00"
2459 | },
2460 | {
2461 | "name": "sebastian/environment",
2462 | "version": "6.0.1",
2463 | "source": {
2464 | "type": "git",
2465 | "url": "https://github.com/sebastianbergmann/environment.git",
2466 | "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951"
2467 | },
2468 | "dist": {
2469 | "type": "zip",
2470 | "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/43c751b41d74f96cbbd4e07b7aec9675651e2951",
2471 | "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951",
2472 | "shasum": ""
2473 | },
2474 | "require": {
2475 | "php": ">=8.1"
2476 | },
2477 | "require-dev": {
2478 | "phpunit/phpunit": "^10.0"
2479 | },
2480 | "suggest": {
2481 | "ext-posix": "*"
2482 | },
2483 | "type": "library",
2484 | "extra": {
2485 | "branch-alias": {
2486 | "dev-main": "6.0-dev"
2487 | }
2488 | },
2489 | "autoload": {
2490 | "classmap": [
2491 | "src/"
2492 | ]
2493 | },
2494 | "notification-url": "https://packagist.org/downloads/",
2495 | "license": [
2496 | "BSD-3-Clause"
2497 | ],
2498 | "authors": [
2499 | {
2500 | "name": "Sebastian Bergmann",
2501 | "email": "sebastian@phpunit.de"
2502 | }
2503 | ],
2504 | "description": "Provides functionality to handle HHVM/PHP environments",
2505 | "homepage": "https://github.com/sebastianbergmann/environment",
2506 | "keywords": [
2507 | "Xdebug",
2508 | "environment",
2509 | "hhvm"
2510 | ],
2511 | "support": {
2512 | "issues": "https://github.com/sebastianbergmann/environment/issues",
2513 | "security": "https://github.com/sebastianbergmann/environment/security/policy",
2514 | "source": "https://github.com/sebastianbergmann/environment/tree/6.0.1"
2515 | },
2516 | "funding": [
2517 | {
2518 | "url": "https://github.com/sebastianbergmann",
2519 | "type": "github"
2520 | }
2521 | ],
2522 | "time": "2023-04-11T05:39:26+00:00"
2523 | },
2524 | {
2525 | "name": "sebastian/exporter",
2526 | "version": "5.1.1",
2527 | "source": {
2528 | "type": "git",
2529 | "url": "https://github.com/sebastianbergmann/exporter.git",
2530 | "reference": "64f51654862e0f5e318db7e9dcc2292c63cdbddc"
2531 | },
2532 | "dist": {
2533 | "type": "zip",
2534 | "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/64f51654862e0f5e318db7e9dcc2292c63cdbddc",
2535 | "reference": "64f51654862e0f5e318db7e9dcc2292c63cdbddc",
2536 | "shasum": ""
2537 | },
2538 | "require": {
2539 | "ext-mbstring": "*",
2540 | "php": ">=8.1",
2541 | "sebastian/recursion-context": "^5.0"
2542 | },
2543 | "require-dev": {
2544 | "phpunit/phpunit": "^10.0"
2545 | },
2546 | "type": "library",
2547 | "extra": {
2548 | "branch-alias": {
2549 | "dev-main": "5.1-dev"
2550 | }
2551 | },
2552 | "autoload": {
2553 | "classmap": [
2554 | "src/"
2555 | ]
2556 | },
2557 | "notification-url": "https://packagist.org/downloads/",
2558 | "license": [
2559 | "BSD-3-Clause"
2560 | ],
2561 | "authors": [
2562 | {
2563 | "name": "Sebastian Bergmann",
2564 | "email": "sebastian@phpunit.de"
2565 | },
2566 | {
2567 | "name": "Jeff Welch",
2568 | "email": "whatthejeff@gmail.com"
2569 | },
2570 | {
2571 | "name": "Volker Dusch",
2572 | "email": "github@wallbash.com"
2573 | },
2574 | {
2575 | "name": "Adam Harvey",
2576 | "email": "aharvey@php.net"
2577 | },
2578 | {
2579 | "name": "Bernhard Schussek",
2580 | "email": "bschussek@gmail.com"
2581 | }
2582 | ],
2583 | "description": "Provides the functionality to export PHP variables for visualization",
2584 | "homepage": "https://www.github.com/sebastianbergmann/exporter",
2585 | "keywords": [
2586 | "export",
2587 | "exporter"
2588 | ],
2589 | "support": {
2590 | "issues": "https://github.com/sebastianbergmann/exporter/issues",
2591 | "security": "https://github.com/sebastianbergmann/exporter/security/policy",
2592 | "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.1"
2593 | },
2594 | "funding": [
2595 | {
2596 | "url": "https://github.com/sebastianbergmann",
2597 | "type": "github"
2598 | }
2599 | ],
2600 | "time": "2023-09-24T13:22:09+00:00"
2601 | },
2602 | {
2603 | "name": "sebastian/global-state",
2604 | "version": "6.0.1",
2605 | "source": {
2606 | "type": "git",
2607 | "url": "https://github.com/sebastianbergmann/global-state.git",
2608 | "reference": "7ea9ead78f6d380d2a667864c132c2f7b83055e4"
2609 | },
2610 | "dist": {
2611 | "type": "zip",
2612 | "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/7ea9ead78f6d380d2a667864c132c2f7b83055e4",
2613 | "reference": "7ea9ead78f6d380d2a667864c132c2f7b83055e4",
2614 | "shasum": ""
2615 | },
2616 | "require": {
2617 | "php": ">=8.1",
2618 | "sebastian/object-reflector": "^3.0",
2619 | "sebastian/recursion-context": "^5.0"
2620 | },
2621 | "require-dev": {
2622 | "ext-dom": "*",
2623 | "phpunit/phpunit": "^10.0"
2624 | },
2625 | "type": "library",
2626 | "extra": {
2627 | "branch-alias": {
2628 | "dev-main": "6.0-dev"
2629 | }
2630 | },
2631 | "autoload": {
2632 | "classmap": [
2633 | "src/"
2634 | ]
2635 | },
2636 | "notification-url": "https://packagist.org/downloads/",
2637 | "license": [
2638 | "BSD-3-Clause"
2639 | ],
2640 | "authors": [
2641 | {
2642 | "name": "Sebastian Bergmann",
2643 | "email": "sebastian@phpunit.de"
2644 | }
2645 | ],
2646 | "description": "Snapshotting of global state",
2647 | "homepage": "http://www.github.com/sebastianbergmann/global-state",
2648 | "keywords": [
2649 | "global state"
2650 | ],
2651 | "support": {
2652 | "issues": "https://github.com/sebastianbergmann/global-state/issues",
2653 | "security": "https://github.com/sebastianbergmann/global-state/security/policy",
2654 | "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.1"
2655 | },
2656 | "funding": [
2657 | {
2658 | "url": "https://github.com/sebastianbergmann",
2659 | "type": "github"
2660 | }
2661 | ],
2662 | "time": "2023-07-19T07:19:23+00:00"
2663 | },
2664 | {
2665 | "name": "sebastian/lines-of-code",
2666 | "version": "2.0.1",
2667 | "source": {
2668 | "type": "git",
2669 | "url": "https://github.com/sebastianbergmann/lines-of-code.git",
2670 | "reference": "649e40d279e243d985aa8fb6e74dd5bb28dc185d"
2671 | },
2672 | "dist": {
2673 | "type": "zip",
2674 | "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/649e40d279e243d985aa8fb6e74dd5bb28dc185d",
2675 | "reference": "649e40d279e243d985aa8fb6e74dd5bb28dc185d",
2676 | "shasum": ""
2677 | },
2678 | "require": {
2679 | "nikic/php-parser": "^4.10",
2680 | "php": ">=8.1"
2681 | },
2682 | "require-dev": {
2683 | "phpunit/phpunit": "^10.0"
2684 | },
2685 | "type": "library",
2686 | "extra": {
2687 | "branch-alias": {
2688 | "dev-main": "2.0-dev"
2689 | }
2690 | },
2691 | "autoload": {
2692 | "classmap": [
2693 | "src/"
2694 | ]
2695 | },
2696 | "notification-url": "https://packagist.org/downloads/",
2697 | "license": [
2698 | "BSD-3-Clause"
2699 | ],
2700 | "authors": [
2701 | {
2702 | "name": "Sebastian Bergmann",
2703 | "email": "sebastian@phpunit.de",
2704 | "role": "lead"
2705 | }
2706 | ],
2707 | "description": "Library for counting the lines of code in PHP source code",
2708 | "homepage": "https://github.com/sebastianbergmann/lines-of-code",
2709 | "support": {
2710 | "issues": "https://github.com/sebastianbergmann/lines-of-code/issues",
2711 | "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy",
2712 | "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.1"
2713 | },
2714 | "funding": [
2715 | {
2716 | "url": "https://github.com/sebastianbergmann",
2717 | "type": "github"
2718 | }
2719 | ],
2720 | "time": "2023-08-31T09:25:50+00:00"
2721 | },
2722 | {
2723 | "name": "sebastian/object-enumerator",
2724 | "version": "5.0.0",
2725 | "source": {
2726 | "type": "git",
2727 | "url": "https://github.com/sebastianbergmann/object-enumerator.git",
2728 | "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906"
2729 | },
2730 | "dist": {
2731 | "type": "zip",
2732 | "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/202d0e344a580d7f7d04b3fafce6933e59dae906",
2733 | "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906",
2734 | "shasum": ""
2735 | },
2736 | "require": {
2737 | "php": ">=8.1",
2738 | "sebastian/object-reflector": "^3.0",
2739 | "sebastian/recursion-context": "^5.0"
2740 | },
2741 | "require-dev": {
2742 | "phpunit/phpunit": "^10.0"
2743 | },
2744 | "type": "library",
2745 | "extra": {
2746 | "branch-alias": {
2747 | "dev-main": "5.0-dev"
2748 | }
2749 | },
2750 | "autoload": {
2751 | "classmap": [
2752 | "src/"
2753 | ]
2754 | },
2755 | "notification-url": "https://packagist.org/downloads/",
2756 | "license": [
2757 | "BSD-3-Clause"
2758 | ],
2759 | "authors": [
2760 | {
2761 | "name": "Sebastian Bergmann",
2762 | "email": "sebastian@phpunit.de"
2763 | }
2764 | ],
2765 | "description": "Traverses array structures and object graphs to enumerate all referenced objects",
2766 | "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
2767 | "support": {
2768 | "issues": "https://github.com/sebastianbergmann/object-enumerator/issues",
2769 | "source": "https://github.com/sebastianbergmann/object-enumerator/tree/5.0.0"
2770 | },
2771 | "funding": [
2772 | {
2773 | "url": "https://github.com/sebastianbergmann",
2774 | "type": "github"
2775 | }
2776 | ],
2777 | "time": "2023-02-03T07:08:32+00:00"
2778 | },
2779 | {
2780 | "name": "sebastian/object-reflector",
2781 | "version": "3.0.0",
2782 | "source": {
2783 | "type": "git",
2784 | "url": "https://github.com/sebastianbergmann/object-reflector.git",
2785 | "reference": "24ed13d98130f0e7122df55d06c5c4942a577957"
2786 | },
2787 | "dist": {
2788 | "type": "zip",
2789 | "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/24ed13d98130f0e7122df55d06c5c4942a577957",
2790 | "reference": "24ed13d98130f0e7122df55d06c5c4942a577957",
2791 | "shasum": ""
2792 | },
2793 | "require": {
2794 | "php": ">=8.1"
2795 | },
2796 | "require-dev": {
2797 | "phpunit/phpunit": "^10.0"
2798 | },
2799 | "type": "library",
2800 | "extra": {
2801 | "branch-alias": {
2802 | "dev-main": "3.0-dev"
2803 | }
2804 | },
2805 | "autoload": {
2806 | "classmap": [
2807 | "src/"
2808 | ]
2809 | },
2810 | "notification-url": "https://packagist.org/downloads/",
2811 | "license": [
2812 | "BSD-3-Clause"
2813 | ],
2814 | "authors": [
2815 | {
2816 | "name": "Sebastian Bergmann",
2817 | "email": "sebastian@phpunit.de"
2818 | }
2819 | ],
2820 | "description": "Allows reflection of object attributes, including inherited and non-public ones",
2821 | "homepage": "https://github.com/sebastianbergmann/object-reflector/",
2822 | "support": {
2823 | "issues": "https://github.com/sebastianbergmann/object-reflector/issues",
2824 | "source": "https://github.com/sebastianbergmann/object-reflector/tree/3.0.0"
2825 | },
2826 | "funding": [
2827 | {
2828 | "url": "https://github.com/sebastianbergmann",
2829 | "type": "github"
2830 | }
2831 | ],
2832 | "time": "2023-02-03T07:06:18+00:00"
2833 | },
2834 | {
2835 | "name": "sebastian/recursion-context",
2836 | "version": "5.0.0",
2837 | "source": {
2838 | "type": "git",
2839 | "url": "https://github.com/sebastianbergmann/recursion-context.git",
2840 | "reference": "05909fb5bc7df4c52992396d0116aed689f93712"
2841 | },
2842 | "dist": {
2843 | "type": "zip",
2844 | "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/05909fb5bc7df4c52992396d0116aed689f93712",
2845 | "reference": "05909fb5bc7df4c52992396d0116aed689f93712",
2846 | "shasum": ""
2847 | },
2848 | "require": {
2849 | "php": ">=8.1"
2850 | },
2851 | "require-dev": {
2852 | "phpunit/phpunit": "^10.0"
2853 | },
2854 | "type": "library",
2855 | "extra": {
2856 | "branch-alias": {
2857 | "dev-main": "5.0-dev"
2858 | }
2859 | },
2860 | "autoload": {
2861 | "classmap": [
2862 | "src/"
2863 | ]
2864 | },
2865 | "notification-url": "https://packagist.org/downloads/",
2866 | "license": [
2867 | "BSD-3-Clause"
2868 | ],
2869 | "authors": [
2870 | {
2871 | "name": "Sebastian Bergmann",
2872 | "email": "sebastian@phpunit.de"
2873 | },
2874 | {
2875 | "name": "Jeff Welch",
2876 | "email": "whatthejeff@gmail.com"
2877 | },
2878 | {
2879 | "name": "Adam Harvey",
2880 | "email": "aharvey@php.net"
2881 | }
2882 | ],
2883 | "description": "Provides functionality to recursively process PHP variables",
2884 | "homepage": "https://github.com/sebastianbergmann/recursion-context",
2885 | "support": {
2886 | "issues": "https://github.com/sebastianbergmann/recursion-context/issues",
2887 | "source": "https://github.com/sebastianbergmann/recursion-context/tree/5.0.0"
2888 | },
2889 | "funding": [
2890 | {
2891 | "url": "https://github.com/sebastianbergmann",
2892 | "type": "github"
2893 | }
2894 | ],
2895 | "time": "2023-02-03T07:05:40+00:00"
2896 | },
2897 | {
2898 | "name": "sebastian/type",
2899 | "version": "4.0.0",
2900 | "source": {
2901 | "type": "git",
2902 | "url": "https://github.com/sebastianbergmann/type.git",
2903 | "reference": "462699a16464c3944eefc02ebdd77882bd3925bf"
2904 | },
2905 | "dist": {
2906 | "type": "zip",
2907 | "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/462699a16464c3944eefc02ebdd77882bd3925bf",
2908 | "reference": "462699a16464c3944eefc02ebdd77882bd3925bf",
2909 | "shasum": ""
2910 | },
2911 | "require": {
2912 | "php": ">=8.1"
2913 | },
2914 | "require-dev": {
2915 | "phpunit/phpunit": "^10.0"
2916 | },
2917 | "type": "library",
2918 | "extra": {
2919 | "branch-alias": {
2920 | "dev-main": "4.0-dev"
2921 | }
2922 | },
2923 | "autoload": {
2924 | "classmap": [
2925 | "src/"
2926 | ]
2927 | },
2928 | "notification-url": "https://packagist.org/downloads/",
2929 | "license": [
2930 | "BSD-3-Clause"
2931 | ],
2932 | "authors": [
2933 | {
2934 | "name": "Sebastian Bergmann",
2935 | "email": "sebastian@phpunit.de",
2936 | "role": "lead"
2937 | }
2938 | ],
2939 | "description": "Collection of value objects that represent the types of the PHP type system",
2940 | "homepage": "https://github.com/sebastianbergmann/type",
2941 | "support": {
2942 | "issues": "https://github.com/sebastianbergmann/type/issues",
2943 | "source": "https://github.com/sebastianbergmann/type/tree/4.0.0"
2944 | },
2945 | "funding": [
2946 | {
2947 | "url": "https://github.com/sebastianbergmann",
2948 | "type": "github"
2949 | }
2950 | ],
2951 | "time": "2023-02-03T07:10:45+00:00"
2952 | },
2953 | {
2954 | "name": "sebastian/version",
2955 | "version": "4.0.1",
2956 | "source": {
2957 | "type": "git",
2958 | "url": "https://github.com/sebastianbergmann/version.git",
2959 | "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17"
2960 | },
2961 | "dist": {
2962 | "type": "zip",
2963 | "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c51fa83a5d8f43f1402e3f32a005e6262244ef17",
2964 | "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17",
2965 | "shasum": ""
2966 | },
2967 | "require": {
2968 | "php": ">=8.1"
2969 | },
2970 | "type": "library",
2971 | "extra": {
2972 | "branch-alias": {
2973 | "dev-main": "4.0-dev"
2974 | }
2975 | },
2976 | "autoload": {
2977 | "classmap": [
2978 | "src/"
2979 | ]
2980 | },
2981 | "notification-url": "https://packagist.org/downloads/",
2982 | "license": [
2983 | "BSD-3-Clause"
2984 | ],
2985 | "authors": [
2986 | {
2987 | "name": "Sebastian Bergmann",
2988 | "email": "sebastian@phpunit.de",
2989 | "role": "lead"
2990 | }
2991 | ],
2992 | "description": "Library that helps with managing the version number of Git-hosted PHP projects",
2993 | "homepage": "https://github.com/sebastianbergmann/version",
2994 | "support": {
2995 | "issues": "https://github.com/sebastianbergmann/version/issues",
2996 | "source": "https://github.com/sebastianbergmann/version/tree/4.0.1"
2997 | },
2998 | "funding": [
2999 | {
3000 | "url": "https://github.com/sebastianbergmann",
3001 | "type": "github"
3002 | }
3003 | ],
3004 | "time": "2023-02-07T11:34:05+00:00"
3005 | },
3006 | {
3007 | "name": "symfony/console",
3008 | "version": "v6.3.4",
3009 | "source": {
3010 | "type": "git",
3011 | "url": "https://github.com/symfony/console.git",
3012 | "reference": "eca495f2ee845130855ddf1cf18460c38966c8b6"
3013 | },
3014 | "dist": {
3015 | "type": "zip",
3016 | "url": "https://api.github.com/repos/symfony/console/zipball/eca495f2ee845130855ddf1cf18460c38966c8b6",
3017 | "reference": "eca495f2ee845130855ddf1cf18460c38966c8b6",
3018 | "shasum": ""
3019 | },
3020 | "require": {
3021 | "php": ">=8.1",
3022 | "symfony/deprecation-contracts": "^2.5|^3",
3023 | "symfony/polyfill-mbstring": "~1.0",
3024 | "symfony/service-contracts": "^2.5|^3",
3025 | "symfony/string": "^5.4|^6.0"
3026 | },
3027 | "conflict": {
3028 | "symfony/dependency-injection": "<5.4",
3029 | "symfony/dotenv": "<5.4",
3030 | "symfony/event-dispatcher": "<5.4",
3031 | "symfony/lock": "<5.4",
3032 | "symfony/process": "<5.4"
3033 | },
3034 | "provide": {
3035 | "psr/log-implementation": "1.0|2.0|3.0"
3036 | },
3037 | "require-dev": {
3038 | "psr/log": "^1|^2|^3",
3039 | "symfony/config": "^5.4|^6.0",
3040 | "symfony/dependency-injection": "^5.4|^6.0",
3041 | "symfony/event-dispatcher": "^5.4|^6.0",
3042 | "symfony/lock": "^5.4|^6.0",
3043 | "symfony/process": "^5.4|^6.0",
3044 | "symfony/var-dumper": "^5.4|^6.0"
3045 | },
3046 | "type": "library",
3047 | "autoload": {
3048 | "psr-4": {
3049 | "Symfony\\Component\\Console\\": ""
3050 | },
3051 | "exclude-from-classmap": [
3052 | "/Tests/"
3053 | ]
3054 | },
3055 | "notification-url": "https://packagist.org/downloads/",
3056 | "license": [
3057 | "MIT"
3058 | ],
3059 | "authors": [
3060 | {
3061 | "name": "Fabien Potencier",
3062 | "email": "fabien@symfony.com"
3063 | },
3064 | {
3065 | "name": "Symfony Community",
3066 | "homepage": "https://symfony.com/contributors"
3067 | }
3068 | ],
3069 | "description": "Eases the creation of beautiful and testable command line interfaces",
3070 | "homepage": "https://symfony.com",
3071 | "keywords": [
3072 | "cli",
3073 | "command-line",
3074 | "console",
3075 | "terminal"
3076 | ],
3077 | "support": {
3078 | "source": "https://github.com/symfony/console/tree/v6.3.4"
3079 | },
3080 | "funding": [
3081 | {
3082 | "url": "https://symfony.com/sponsor",
3083 | "type": "custom"
3084 | },
3085 | {
3086 | "url": "https://github.com/fabpot",
3087 | "type": "github"
3088 | },
3089 | {
3090 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3091 | "type": "tidelift"
3092 | }
3093 | ],
3094 | "time": "2023-08-16T10:10:12+00:00"
3095 | },
3096 | {
3097 | "name": "symfony/deprecation-contracts",
3098 | "version": "v3.3.0",
3099 | "source": {
3100 | "type": "git",
3101 | "url": "https://github.com/symfony/deprecation-contracts.git",
3102 | "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf"
3103 | },
3104 | "dist": {
3105 | "type": "zip",
3106 | "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf",
3107 | "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf",
3108 | "shasum": ""
3109 | },
3110 | "require": {
3111 | "php": ">=8.1"
3112 | },
3113 | "type": "library",
3114 | "extra": {
3115 | "branch-alias": {
3116 | "dev-main": "3.4-dev"
3117 | },
3118 | "thanks": {
3119 | "name": "symfony/contracts",
3120 | "url": "https://github.com/symfony/contracts"
3121 | }
3122 | },
3123 | "autoload": {
3124 | "files": [
3125 | "function.php"
3126 | ]
3127 | },
3128 | "notification-url": "https://packagist.org/downloads/",
3129 | "license": [
3130 | "MIT"
3131 | ],
3132 | "authors": [
3133 | {
3134 | "name": "Nicolas Grekas",
3135 | "email": "p@tchwork.com"
3136 | },
3137 | {
3138 | "name": "Symfony Community",
3139 | "homepage": "https://symfony.com/contributors"
3140 | }
3141 | ],
3142 | "description": "A generic function and convention to trigger deprecation notices",
3143 | "homepage": "https://symfony.com",
3144 | "support": {
3145 | "source": "https://github.com/symfony/deprecation-contracts/tree/v3.3.0"
3146 | },
3147 | "funding": [
3148 | {
3149 | "url": "https://symfony.com/sponsor",
3150 | "type": "custom"
3151 | },
3152 | {
3153 | "url": "https://github.com/fabpot",
3154 | "type": "github"
3155 | },
3156 | {
3157 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3158 | "type": "tidelift"
3159 | }
3160 | ],
3161 | "time": "2023-05-23T14:45:45+00:00"
3162 | },
3163 | {
3164 | "name": "symfony/event-dispatcher",
3165 | "version": "v6.3.2",
3166 | "source": {
3167 | "type": "git",
3168 | "url": "https://github.com/symfony/event-dispatcher.git",
3169 | "reference": "adb01fe097a4ee930db9258a3cc906b5beb5cf2e"
3170 | },
3171 | "dist": {
3172 | "type": "zip",
3173 | "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/adb01fe097a4ee930db9258a3cc906b5beb5cf2e",
3174 | "reference": "adb01fe097a4ee930db9258a3cc906b5beb5cf2e",
3175 | "shasum": ""
3176 | },
3177 | "require": {
3178 | "php": ">=8.1",
3179 | "symfony/event-dispatcher-contracts": "^2.5|^3"
3180 | },
3181 | "conflict": {
3182 | "symfony/dependency-injection": "<5.4",
3183 | "symfony/service-contracts": "<2.5"
3184 | },
3185 | "provide": {
3186 | "psr/event-dispatcher-implementation": "1.0",
3187 | "symfony/event-dispatcher-implementation": "2.0|3.0"
3188 | },
3189 | "require-dev": {
3190 | "psr/log": "^1|^2|^3",
3191 | "symfony/config": "^5.4|^6.0",
3192 | "symfony/dependency-injection": "^5.4|^6.0",
3193 | "symfony/error-handler": "^5.4|^6.0",
3194 | "symfony/expression-language": "^5.4|^6.0",
3195 | "symfony/http-foundation": "^5.4|^6.0",
3196 | "symfony/service-contracts": "^2.5|^3",
3197 | "symfony/stopwatch": "^5.4|^6.0"
3198 | },
3199 | "type": "library",
3200 | "autoload": {
3201 | "psr-4": {
3202 | "Symfony\\Component\\EventDispatcher\\": ""
3203 | },
3204 | "exclude-from-classmap": [
3205 | "/Tests/"
3206 | ]
3207 | },
3208 | "notification-url": "https://packagist.org/downloads/",
3209 | "license": [
3210 | "MIT"
3211 | ],
3212 | "authors": [
3213 | {
3214 | "name": "Fabien Potencier",
3215 | "email": "fabien@symfony.com"
3216 | },
3217 | {
3218 | "name": "Symfony Community",
3219 | "homepage": "https://symfony.com/contributors"
3220 | }
3221 | ],
3222 | "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them",
3223 | "homepage": "https://symfony.com",
3224 | "support": {
3225 | "source": "https://github.com/symfony/event-dispatcher/tree/v6.3.2"
3226 | },
3227 | "funding": [
3228 | {
3229 | "url": "https://symfony.com/sponsor",
3230 | "type": "custom"
3231 | },
3232 | {
3233 | "url": "https://github.com/fabpot",
3234 | "type": "github"
3235 | },
3236 | {
3237 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3238 | "type": "tidelift"
3239 | }
3240 | ],
3241 | "time": "2023-07-06T06:56:43+00:00"
3242 | },
3243 | {
3244 | "name": "symfony/event-dispatcher-contracts",
3245 | "version": "v3.3.0",
3246 | "source": {
3247 | "type": "git",
3248 | "url": "https://github.com/symfony/event-dispatcher-contracts.git",
3249 | "reference": "a76aed96a42d2b521153fb382d418e30d18b59df"
3250 | },
3251 | "dist": {
3252 | "type": "zip",
3253 | "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/a76aed96a42d2b521153fb382d418e30d18b59df",
3254 | "reference": "a76aed96a42d2b521153fb382d418e30d18b59df",
3255 | "shasum": ""
3256 | },
3257 | "require": {
3258 | "php": ">=8.1",
3259 | "psr/event-dispatcher": "^1"
3260 | },
3261 | "type": "library",
3262 | "extra": {
3263 | "branch-alias": {
3264 | "dev-main": "3.4-dev"
3265 | },
3266 | "thanks": {
3267 | "name": "symfony/contracts",
3268 | "url": "https://github.com/symfony/contracts"
3269 | }
3270 | },
3271 | "autoload": {
3272 | "psr-4": {
3273 | "Symfony\\Contracts\\EventDispatcher\\": ""
3274 | }
3275 | },
3276 | "notification-url": "https://packagist.org/downloads/",
3277 | "license": [
3278 | "MIT"
3279 | ],
3280 | "authors": [
3281 | {
3282 | "name": "Nicolas Grekas",
3283 | "email": "p@tchwork.com"
3284 | },
3285 | {
3286 | "name": "Symfony Community",
3287 | "homepage": "https://symfony.com/contributors"
3288 | }
3289 | ],
3290 | "description": "Generic abstractions related to dispatching event",
3291 | "homepage": "https://symfony.com",
3292 | "keywords": [
3293 | "abstractions",
3294 | "contracts",
3295 | "decoupling",
3296 | "interfaces",
3297 | "interoperability",
3298 | "standards"
3299 | ],
3300 | "support": {
3301 | "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.3.0"
3302 | },
3303 | "funding": [
3304 | {
3305 | "url": "https://symfony.com/sponsor",
3306 | "type": "custom"
3307 | },
3308 | {
3309 | "url": "https://github.com/fabpot",
3310 | "type": "github"
3311 | },
3312 | {
3313 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3314 | "type": "tidelift"
3315 | }
3316 | ],
3317 | "time": "2023-05-23T14:45:45+00:00"
3318 | },
3319 | {
3320 | "name": "symfony/filesystem",
3321 | "version": "v6.3.1",
3322 | "source": {
3323 | "type": "git",
3324 | "url": "https://github.com/symfony/filesystem.git",
3325 | "reference": "edd36776956f2a6fcf577edb5b05eb0e3bdc52ae"
3326 | },
3327 | "dist": {
3328 | "type": "zip",
3329 | "url": "https://api.github.com/repos/symfony/filesystem/zipball/edd36776956f2a6fcf577edb5b05eb0e3bdc52ae",
3330 | "reference": "edd36776956f2a6fcf577edb5b05eb0e3bdc52ae",
3331 | "shasum": ""
3332 | },
3333 | "require": {
3334 | "php": ">=8.1",
3335 | "symfony/polyfill-ctype": "~1.8",
3336 | "symfony/polyfill-mbstring": "~1.8"
3337 | },
3338 | "type": "library",
3339 | "autoload": {
3340 | "psr-4": {
3341 | "Symfony\\Component\\Filesystem\\": ""
3342 | },
3343 | "exclude-from-classmap": [
3344 | "/Tests/"
3345 | ]
3346 | },
3347 | "notification-url": "https://packagist.org/downloads/",
3348 | "license": [
3349 | "MIT"
3350 | ],
3351 | "authors": [
3352 | {
3353 | "name": "Fabien Potencier",
3354 | "email": "fabien@symfony.com"
3355 | },
3356 | {
3357 | "name": "Symfony Community",
3358 | "homepage": "https://symfony.com/contributors"
3359 | }
3360 | ],
3361 | "description": "Provides basic utilities for the filesystem",
3362 | "homepage": "https://symfony.com",
3363 | "support": {
3364 | "source": "https://github.com/symfony/filesystem/tree/v6.3.1"
3365 | },
3366 | "funding": [
3367 | {
3368 | "url": "https://symfony.com/sponsor",
3369 | "type": "custom"
3370 | },
3371 | {
3372 | "url": "https://github.com/fabpot",
3373 | "type": "github"
3374 | },
3375 | {
3376 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3377 | "type": "tidelift"
3378 | }
3379 | ],
3380 | "time": "2023-06-01T08:30:39+00:00"
3381 | },
3382 | {
3383 | "name": "symfony/finder",
3384 | "version": "v6.3.5",
3385 | "source": {
3386 | "type": "git",
3387 | "url": "https://github.com/symfony/finder.git",
3388 | "reference": "a1b31d88c0e998168ca7792f222cbecee47428c4"
3389 | },
3390 | "dist": {
3391 | "type": "zip",
3392 | "url": "https://api.github.com/repos/symfony/finder/zipball/a1b31d88c0e998168ca7792f222cbecee47428c4",
3393 | "reference": "a1b31d88c0e998168ca7792f222cbecee47428c4",
3394 | "shasum": ""
3395 | },
3396 | "require": {
3397 | "php": ">=8.1"
3398 | },
3399 | "require-dev": {
3400 | "symfony/filesystem": "^6.0"
3401 | },
3402 | "type": "library",
3403 | "autoload": {
3404 | "psr-4": {
3405 | "Symfony\\Component\\Finder\\": ""
3406 | },
3407 | "exclude-from-classmap": [
3408 | "/Tests/"
3409 | ]
3410 | },
3411 | "notification-url": "https://packagist.org/downloads/",
3412 | "license": [
3413 | "MIT"
3414 | ],
3415 | "authors": [
3416 | {
3417 | "name": "Fabien Potencier",
3418 | "email": "fabien@symfony.com"
3419 | },
3420 | {
3421 | "name": "Symfony Community",
3422 | "homepage": "https://symfony.com/contributors"
3423 | }
3424 | ],
3425 | "description": "Finds files and directories via an intuitive fluent interface",
3426 | "homepage": "https://symfony.com",
3427 | "support": {
3428 | "source": "https://github.com/symfony/finder/tree/v6.3.5"
3429 | },
3430 | "funding": [
3431 | {
3432 | "url": "https://symfony.com/sponsor",
3433 | "type": "custom"
3434 | },
3435 | {
3436 | "url": "https://github.com/fabpot",
3437 | "type": "github"
3438 | },
3439 | {
3440 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3441 | "type": "tidelift"
3442 | }
3443 | ],
3444 | "time": "2023-09-26T12:56:25+00:00"
3445 | },
3446 | {
3447 | "name": "symfony/options-resolver",
3448 | "version": "v6.3.0",
3449 | "source": {
3450 | "type": "git",
3451 | "url": "https://github.com/symfony/options-resolver.git",
3452 | "reference": "a10f19f5198d589d5c33333cffe98dc9820332dd"
3453 | },
3454 | "dist": {
3455 | "type": "zip",
3456 | "url": "https://api.github.com/repos/symfony/options-resolver/zipball/a10f19f5198d589d5c33333cffe98dc9820332dd",
3457 | "reference": "a10f19f5198d589d5c33333cffe98dc9820332dd",
3458 | "shasum": ""
3459 | },
3460 | "require": {
3461 | "php": ">=8.1",
3462 | "symfony/deprecation-contracts": "^2.5|^3"
3463 | },
3464 | "type": "library",
3465 | "autoload": {
3466 | "psr-4": {
3467 | "Symfony\\Component\\OptionsResolver\\": ""
3468 | },
3469 | "exclude-from-classmap": [
3470 | "/Tests/"
3471 | ]
3472 | },
3473 | "notification-url": "https://packagist.org/downloads/",
3474 | "license": [
3475 | "MIT"
3476 | ],
3477 | "authors": [
3478 | {
3479 | "name": "Fabien Potencier",
3480 | "email": "fabien@symfony.com"
3481 | },
3482 | {
3483 | "name": "Symfony Community",
3484 | "homepage": "https://symfony.com/contributors"
3485 | }
3486 | ],
3487 | "description": "Provides an improved replacement for the array_replace PHP function",
3488 | "homepage": "https://symfony.com",
3489 | "keywords": [
3490 | "config",
3491 | "configuration",
3492 | "options"
3493 | ],
3494 | "support": {
3495 | "source": "https://github.com/symfony/options-resolver/tree/v6.3.0"
3496 | },
3497 | "funding": [
3498 | {
3499 | "url": "https://symfony.com/sponsor",
3500 | "type": "custom"
3501 | },
3502 | {
3503 | "url": "https://github.com/fabpot",
3504 | "type": "github"
3505 | },
3506 | {
3507 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3508 | "type": "tidelift"
3509 | }
3510 | ],
3511 | "time": "2023-05-12T14:21:09+00:00"
3512 | },
3513 | {
3514 | "name": "symfony/polyfill-ctype",
3515 | "version": "v1.28.0",
3516 | "source": {
3517 | "type": "git",
3518 | "url": "https://github.com/symfony/polyfill-ctype.git",
3519 | "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb"
3520 | },
3521 | "dist": {
3522 | "type": "zip",
3523 | "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb",
3524 | "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb",
3525 | "shasum": ""
3526 | },
3527 | "require": {
3528 | "php": ">=7.1"
3529 | },
3530 | "provide": {
3531 | "ext-ctype": "*"
3532 | },
3533 | "suggest": {
3534 | "ext-ctype": "For best performance"
3535 | },
3536 | "type": "library",
3537 | "extra": {
3538 | "branch-alias": {
3539 | "dev-main": "1.28-dev"
3540 | },
3541 | "thanks": {
3542 | "name": "symfony/polyfill",
3543 | "url": "https://github.com/symfony/polyfill"
3544 | }
3545 | },
3546 | "autoload": {
3547 | "files": [
3548 | "bootstrap.php"
3549 | ],
3550 | "psr-4": {
3551 | "Symfony\\Polyfill\\Ctype\\": ""
3552 | }
3553 | },
3554 | "notification-url": "https://packagist.org/downloads/",
3555 | "license": [
3556 | "MIT"
3557 | ],
3558 | "authors": [
3559 | {
3560 | "name": "Gert de Pagter",
3561 | "email": "BackEndTea@gmail.com"
3562 | },
3563 | {
3564 | "name": "Symfony Community",
3565 | "homepage": "https://symfony.com/contributors"
3566 | }
3567 | ],
3568 | "description": "Symfony polyfill for ctype functions",
3569 | "homepage": "https://symfony.com",
3570 | "keywords": [
3571 | "compatibility",
3572 | "ctype",
3573 | "polyfill",
3574 | "portable"
3575 | ],
3576 | "support": {
3577 | "source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0"
3578 | },
3579 | "funding": [
3580 | {
3581 | "url": "https://symfony.com/sponsor",
3582 | "type": "custom"
3583 | },
3584 | {
3585 | "url": "https://github.com/fabpot",
3586 | "type": "github"
3587 | },
3588 | {
3589 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3590 | "type": "tidelift"
3591 | }
3592 | ],
3593 | "time": "2023-01-26T09:26:14+00:00"
3594 | },
3595 | {
3596 | "name": "symfony/polyfill-intl-grapheme",
3597 | "version": "v1.28.0",
3598 | "source": {
3599 | "type": "git",
3600 | "url": "https://github.com/symfony/polyfill-intl-grapheme.git",
3601 | "reference": "875e90aeea2777b6f135677f618529449334a612"
3602 | },
3603 | "dist": {
3604 | "type": "zip",
3605 | "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/875e90aeea2777b6f135677f618529449334a612",
3606 | "reference": "875e90aeea2777b6f135677f618529449334a612",
3607 | "shasum": ""
3608 | },
3609 | "require": {
3610 | "php": ">=7.1"
3611 | },
3612 | "suggest": {
3613 | "ext-intl": "For best performance"
3614 | },
3615 | "type": "library",
3616 | "extra": {
3617 | "branch-alias": {
3618 | "dev-main": "1.28-dev"
3619 | },
3620 | "thanks": {
3621 | "name": "symfony/polyfill",
3622 | "url": "https://github.com/symfony/polyfill"
3623 | }
3624 | },
3625 | "autoload": {
3626 | "files": [
3627 | "bootstrap.php"
3628 | ],
3629 | "psr-4": {
3630 | "Symfony\\Polyfill\\Intl\\Grapheme\\": ""
3631 | }
3632 | },
3633 | "notification-url": "https://packagist.org/downloads/",
3634 | "license": [
3635 | "MIT"
3636 | ],
3637 | "authors": [
3638 | {
3639 | "name": "Nicolas Grekas",
3640 | "email": "p@tchwork.com"
3641 | },
3642 | {
3643 | "name": "Symfony Community",
3644 | "homepage": "https://symfony.com/contributors"
3645 | }
3646 | ],
3647 | "description": "Symfony polyfill for intl's grapheme_* functions",
3648 | "homepage": "https://symfony.com",
3649 | "keywords": [
3650 | "compatibility",
3651 | "grapheme",
3652 | "intl",
3653 | "polyfill",
3654 | "portable",
3655 | "shim"
3656 | ],
3657 | "support": {
3658 | "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.28.0"
3659 | },
3660 | "funding": [
3661 | {
3662 | "url": "https://symfony.com/sponsor",
3663 | "type": "custom"
3664 | },
3665 | {
3666 | "url": "https://github.com/fabpot",
3667 | "type": "github"
3668 | },
3669 | {
3670 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3671 | "type": "tidelift"
3672 | }
3673 | ],
3674 | "time": "2023-01-26T09:26:14+00:00"
3675 | },
3676 | {
3677 | "name": "symfony/polyfill-intl-normalizer",
3678 | "version": "v1.28.0",
3679 | "source": {
3680 | "type": "git",
3681 | "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
3682 | "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92"
3683 | },
3684 | "dist": {
3685 | "type": "zip",
3686 | "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92",
3687 | "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92",
3688 | "shasum": ""
3689 | },
3690 | "require": {
3691 | "php": ">=7.1"
3692 | },
3693 | "suggest": {
3694 | "ext-intl": "For best performance"
3695 | },
3696 | "type": "library",
3697 | "extra": {
3698 | "branch-alias": {
3699 | "dev-main": "1.28-dev"
3700 | },
3701 | "thanks": {
3702 | "name": "symfony/polyfill",
3703 | "url": "https://github.com/symfony/polyfill"
3704 | }
3705 | },
3706 | "autoload": {
3707 | "files": [
3708 | "bootstrap.php"
3709 | ],
3710 | "psr-4": {
3711 | "Symfony\\Polyfill\\Intl\\Normalizer\\": ""
3712 | },
3713 | "classmap": [
3714 | "Resources/stubs"
3715 | ]
3716 | },
3717 | "notification-url": "https://packagist.org/downloads/",
3718 | "license": [
3719 | "MIT"
3720 | ],
3721 | "authors": [
3722 | {
3723 | "name": "Nicolas Grekas",
3724 | "email": "p@tchwork.com"
3725 | },
3726 | {
3727 | "name": "Symfony Community",
3728 | "homepage": "https://symfony.com/contributors"
3729 | }
3730 | ],
3731 | "description": "Symfony polyfill for intl's Normalizer class and related functions",
3732 | "homepage": "https://symfony.com",
3733 | "keywords": [
3734 | "compatibility",
3735 | "intl",
3736 | "normalizer",
3737 | "polyfill",
3738 | "portable",
3739 | "shim"
3740 | ],
3741 | "support": {
3742 | "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.28.0"
3743 | },
3744 | "funding": [
3745 | {
3746 | "url": "https://symfony.com/sponsor",
3747 | "type": "custom"
3748 | },
3749 | {
3750 | "url": "https://github.com/fabpot",
3751 | "type": "github"
3752 | },
3753 | {
3754 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3755 | "type": "tidelift"
3756 | }
3757 | ],
3758 | "time": "2023-01-26T09:26:14+00:00"
3759 | },
3760 | {
3761 | "name": "symfony/polyfill-mbstring",
3762 | "version": "v1.28.0",
3763 | "source": {
3764 | "type": "git",
3765 | "url": "https://github.com/symfony/polyfill-mbstring.git",
3766 | "reference": "42292d99c55abe617799667f454222c54c60e229"
3767 | },
3768 | "dist": {
3769 | "type": "zip",
3770 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229",
3771 | "reference": "42292d99c55abe617799667f454222c54c60e229",
3772 | "shasum": ""
3773 | },
3774 | "require": {
3775 | "php": ">=7.1"
3776 | },
3777 | "provide": {
3778 | "ext-mbstring": "*"
3779 | },
3780 | "suggest": {
3781 | "ext-mbstring": "For best performance"
3782 | },
3783 | "type": "library",
3784 | "extra": {
3785 | "branch-alias": {
3786 | "dev-main": "1.28-dev"
3787 | },
3788 | "thanks": {
3789 | "name": "symfony/polyfill",
3790 | "url": "https://github.com/symfony/polyfill"
3791 | }
3792 | },
3793 | "autoload": {
3794 | "files": [
3795 | "bootstrap.php"
3796 | ],
3797 | "psr-4": {
3798 | "Symfony\\Polyfill\\Mbstring\\": ""
3799 | }
3800 | },
3801 | "notification-url": "https://packagist.org/downloads/",
3802 | "license": [
3803 | "MIT"
3804 | ],
3805 | "authors": [
3806 | {
3807 | "name": "Nicolas Grekas",
3808 | "email": "p@tchwork.com"
3809 | },
3810 | {
3811 | "name": "Symfony Community",
3812 | "homepage": "https://symfony.com/contributors"
3813 | }
3814 | ],
3815 | "description": "Symfony polyfill for the Mbstring extension",
3816 | "homepage": "https://symfony.com",
3817 | "keywords": [
3818 | "compatibility",
3819 | "mbstring",
3820 | "polyfill",
3821 | "portable",
3822 | "shim"
3823 | ],
3824 | "support": {
3825 | "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0"
3826 | },
3827 | "funding": [
3828 | {
3829 | "url": "https://symfony.com/sponsor",
3830 | "type": "custom"
3831 | },
3832 | {
3833 | "url": "https://github.com/fabpot",
3834 | "type": "github"
3835 | },
3836 | {
3837 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3838 | "type": "tidelift"
3839 | }
3840 | ],
3841 | "time": "2023-07-28T09:04:16+00:00"
3842 | },
3843 | {
3844 | "name": "symfony/polyfill-php80",
3845 | "version": "v1.28.0",
3846 | "source": {
3847 | "type": "git",
3848 | "url": "https://github.com/symfony/polyfill-php80.git",
3849 | "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5"
3850 | },
3851 | "dist": {
3852 | "type": "zip",
3853 | "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/6caa57379c4aec19c0a12a38b59b26487dcfe4b5",
3854 | "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5",
3855 | "shasum": ""
3856 | },
3857 | "require": {
3858 | "php": ">=7.1"
3859 | },
3860 | "type": "library",
3861 | "extra": {
3862 | "branch-alias": {
3863 | "dev-main": "1.28-dev"
3864 | },
3865 | "thanks": {
3866 | "name": "symfony/polyfill",
3867 | "url": "https://github.com/symfony/polyfill"
3868 | }
3869 | },
3870 | "autoload": {
3871 | "files": [
3872 | "bootstrap.php"
3873 | ],
3874 | "psr-4": {
3875 | "Symfony\\Polyfill\\Php80\\": ""
3876 | },
3877 | "classmap": [
3878 | "Resources/stubs"
3879 | ]
3880 | },
3881 | "notification-url": "https://packagist.org/downloads/",
3882 | "license": [
3883 | "MIT"
3884 | ],
3885 | "authors": [
3886 | {
3887 | "name": "Ion Bazan",
3888 | "email": "ion.bazan@gmail.com"
3889 | },
3890 | {
3891 | "name": "Nicolas Grekas",
3892 | "email": "p@tchwork.com"
3893 | },
3894 | {
3895 | "name": "Symfony Community",
3896 | "homepage": "https://symfony.com/contributors"
3897 | }
3898 | ],
3899 | "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
3900 | "homepage": "https://symfony.com",
3901 | "keywords": [
3902 | "compatibility",
3903 | "polyfill",
3904 | "portable",
3905 | "shim"
3906 | ],
3907 | "support": {
3908 | "source": "https://github.com/symfony/polyfill-php80/tree/v1.28.0"
3909 | },
3910 | "funding": [
3911 | {
3912 | "url": "https://symfony.com/sponsor",
3913 | "type": "custom"
3914 | },
3915 | {
3916 | "url": "https://github.com/fabpot",
3917 | "type": "github"
3918 | },
3919 | {
3920 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3921 | "type": "tidelift"
3922 | }
3923 | ],
3924 | "time": "2023-01-26T09:26:14+00:00"
3925 | },
3926 | {
3927 | "name": "symfony/polyfill-php81",
3928 | "version": "v1.28.0",
3929 | "source": {
3930 | "type": "git",
3931 | "url": "https://github.com/symfony/polyfill-php81.git",
3932 | "reference": "7581cd600fa9fd681b797d00b02f068e2f13263b"
3933 | },
3934 | "dist": {
3935 | "type": "zip",
3936 | "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/7581cd600fa9fd681b797d00b02f068e2f13263b",
3937 | "reference": "7581cd600fa9fd681b797d00b02f068e2f13263b",
3938 | "shasum": ""
3939 | },
3940 | "require": {
3941 | "php": ">=7.1"
3942 | },
3943 | "type": "library",
3944 | "extra": {
3945 | "branch-alias": {
3946 | "dev-main": "1.28-dev"
3947 | },
3948 | "thanks": {
3949 | "name": "symfony/polyfill",
3950 | "url": "https://github.com/symfony/polyfill"
3951 | }
3952 | },
3953 | "autoload": {
3954 | "files": [
3955 | "bootstrap.php"
3956 | ],
3957 | "psr-4": {
3958 | "Symfony\\Polyfill\\Php81\\": ""
3959 | },
3960 | "classmap": [
3961 | "Resources/stubs"
3962 | ]
3963 | },
3964 | "notification-url": "https://packagist.org/downloads/",
3965 | "license": [
3966 | "MIT"
3967 | ],
3968 | "authors": [
3969 | {
3970 | "name": "Nicolas Grekas",
3971 | "email": "p@tchwork.com"
3972 | },
3973 | {
3974 | "name": "Symfony Community",
3975 | "homepage": "https://symfony.com/contributors"
3976 | }
3977 | ],
3978 | "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions",
3979 | "homepage": "https://symfony.com",
3980 | "keywords": [
3981 | "compatibility",
3982 | "polyfill",
3983 | "portable",
3984 | "shim"
3985 | ],
3986 | "support": {
3987 | "source": "https://github.com/symfony/polyfill-php81/tree/v1.28.0"
3988 | },
3989 | "funding": [
3990 | {
3991 | "url": "https://symfony.com/sponsor",
3992 | "type": "custom"
3993 | },
3994 | {
3995 | "url": "https://github.com/fabpot",
3996 | "type": "github"
3997 | },
3998 | {
3999 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
4000 | "type": "tidelift"
4001 | }
4002 | ],
4003 | "time": "2023-01-26T09:26:14+00:00"
4004 | },
4005 | {
4006 | "name": "symfony/process",
4007 | "version": "v6.3.4",
4008 | "source": {
4009 | "type": "git",
4010 | "url": "https://github.com/symfony/process.git",
4011 | "reference": "0b5c29118f2e980d455d2e34a5659f4579847c54"
4012 | },
4013 | "dist": {
4014 | "type": "zip",
4015 | "url": "https://api.github.com/repos/symfony/process/zipball/0b5c29118f2e980d455d2e34a5659f4579847c54",
4016 | "reference": "0b5c29118f2e980d455d2e34a5659f4579847c54",
4017 | "shasum": ""
4018 | },
4019 | "require": {
4020 | "php": ">=8.1"
4021 | },
4022 | "type": "library",
4023 | "autoload": {
4024 | "psr-4": {
4025 | "Symfony\\Component\\Process\\": ""
4026 | },
4027 | "exclude-from-classmap": [
4028 | "/Tests/"
4029 | ]
4030 | },
4031 | "notification-url": "https://packagist.org/downloads/",
4032 | "license": [
4033 | "MIT"
4034 | ],
4035 | "authors": [
4036 | {
4037 | "name": "Fabien Potencier",
4038 | "email": "fabien@symfony.com"
4039 | },
4040 | {
4041 | "name": "Symfony Community",
4042 | "homepage": "https://symfony.com/contributors"
4043 | }
4044 | ],
4045 | "description": "Executes commands in sub-processes",
4046 | "homepage": "https://symfony.com",
4047 | "support": {
4048 | "source": "https://github.com/symfony/process/tree/v6.3.4"
4049 | },
4050 | "funding": [
4051 | {
4052 | "url": "https://symfony.com/sponsor",
4053 | "type": "custom"
4054 | },
4055 | {
4056 | "url": "https://github.com/fabpot",
4057 | "type": "github"
4058 | },
4059 | {
4060 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
4061 | "type": "tidelift"
4062 | }
4063 | ],
4064 | "time": "2023-08-07T10:39:22+00:00"
4065 | },
4066 | {
4067 | "name": "symfony/service-contracts",
4068 | "version": "v3.3.0",
4069 | "source": {
4070 | "type": "git",
4071 | "url": "https://github.com/symfony/service-contracts.git",
4072 | "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4"
4073 | },
4074 | "dist": {
4075 | "type": "zip",
4076 | "url": "https://api.github.com/repos/symfony/service-contracts/zipball/40da9cc13ec349d9e4966ce18b5fbcd724ab10a4",
4077 | "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4",
4078 | "shasum": ""
4079 | },
4080 | "require": {
4081 | "php": ">=8.1",
4082 | "psr/container": "^2.0"
4083 | },
4084 | "conflict": {
4085 | "ext-psr": "<1.1|>=2"
4086 | },
4087 | "type": "library",
4088 | "extra": {
4089 | "branch-alias": {
4090 | "dev-main": "3.4-dev"
4091 | },
4092 | "thanks": {
4093 | "name": "symfony/contracts",
4094 | "url": "https://github.com/symfony/contracts"
4095 | }
4096 | },
4097 | "autoload": {
4098 | "psr-4": {
4099 | "Symfony\\Contracts\\Service\\": ""
4100 | },
4101 | "exclude-from-classmap": [
4102 | "/Test/"
4103 | ]
4104 | },
4105 | "notification-url": "https://packagist.org/downloads/",
4106 | "license": [
4107 | "MIT"
4108 | ],
4109 | "authors": [
4110 | {
4111 | "name": "Nicolas Grekas",
4112 | "email": "p@tchwork.com"
4113 | },
4114 | {
4115 | "name": "Symfony Community",
4116 | "homepage": "https://symfony.com/contributors"
4117 | }
4118 | ],
4119 | "description": "Generic abstractions related to writing services",
4120 | "homepage": "https://symfony.com",
4121 | "keywords": [
4122 | "abstractions",
4123 | "contracts",
4124 | "decoupling",
4125 | "interfaces",
4126 | "interoperability",
4127 | "standards"
4128 | ],
4129 | "support": {
4130 | "source": "https://github.com/symfony/service-contracts/tree/v3.3.0"
4131 | },
4132 | "funding": [
4133 | {
4134 | "url": "https://symfony.com/sponsor",
4135 | "type": "custom"
4136 | },
4137 | {
4138 | "url": "https://github.com/fabpot",
4139 | "type": "github"
4140 | },
4141 | {
4142 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
4143 | "type": "tidelift"
4144 | }
4145 | ],
4146 | "time": "2023-05-23T14:45:45+00:00"
4147 | },
4148 | {
4149 | "name": "symfony/stopwatch",
4150 | "version": "v6.3.0",
4151 | "source": {
4152 | "type": "git",
4153 | "url": "https://github.com/symfony/stopwatch.git",
4154 | "reference": "fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2"
4155 | },
4156 | "dist": {
4157 | "type": "zip",
4158 | "url": "https://api.github.com/repos/symfony/stopwatch/zipball/fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2",
4159 | "reference": "fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2",
4160 | "shasum": ""
4161 | },
4162 | "require": {
4163 | "php": ">=8.1",
4164 | "symfony/service-contracts": "^2.5|^3"
4165 | },
4166 | "type": "library",
4167 | "autoload": {
4168 | "psr-4": {
4169 | "Symfony\\Component\\Stopwatch\\": ""
4170 | },
4171 | "exclude-from-classmap": [
4172 | "/Tests/"
4173 | ]
4174 | },
4175 | "notification-url": "https://packagist.org/downloads/",
4176 | "license": [
4177 | "MIT"
4178 | ],
4179 | "authors": [
4180 | {
4181 | "name": "Fabien Potencier",
4182 | "email": "fabien@symfony.com"
4183 | },
4184 | {
4185 | "name": "Symfony Community",
4186 | "homepage": "https://symfony.com/contributors"
4187 | }
4188 | ],
4189 | "description": "Provides a way to profile code",
4190 | "homepage": "https://symfony.com",
4191 | "support": {
4192 | "source": "https://github.com/symfony/stopwatch/tree/v6.3.0"
4193 | },
4194 | "funding": [
4195 | {
4196 | "url": "https://symfony.com/sponsor",
4197 | "type": "custom"
4198 | },
4199 | {
4200 | "url": "https://github.com/fabpot",
4201 | "type": "github"
4202 | },
4203 | {
4204 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
4205 | "type": "tidelift"
4206 | }
4207 | ],
4208 | "time": "2023-02-16T10:14:28+00:00"
4209 | },
4210 | {
4211 | "name": "symfony/string",
4212 | "version": "v6.3.5",
4213 | "source": {
4214 | "type": "git",
4215 | "url": "https://github.com/symfony/string.git",
4216 | "reference": "13d76d0fb049051ed12a04bef4f9de8715bea339"
4217 | },
4218 | "dist": {
4219 | "type": "zip",
4220 | "url": "https://api.github.com/repos/symfony/string/zipball/13d76d0fb049051ed12a04bef4f9de8715bea339",
4221 | "reference": "13d76d0fb049051ed12a04bef4f9de8715bea339",
4222 | "shasum": ""
4223 | },
4224 | "require": {
4225 | "php": ">=8.1",
4226 | "symfony/polyfill-ctype": "~1.8",
4227 | "symfony/polyfill-intl-grapheme": "~1.0",
4228 | "symfony/polyfill-intl-normalizer": "~1.0",
4229 | "symfony/polyfill-mbstring": "~1.0"
4230 | },
4231 | "conflict": {
4232 | "symfony/translation-contracts": "<2.5"
4233 | },
4234 | "require-dev": {
4235 | "symfony/error-handler": "^5.4|^6.0",
4236 | "symfony/http-client": "^5.4|^6.0",
4237 | "symfony/intl": "^6.2",
4238 | "symfony/translation-contracts": "^2.5|^3.0",
4239 | "symfony/var-exporter": "^5.4|^6.0"
4240 | },
4241 | "type": "library",
4242 | "autoload": {
4243 | "files": [
4244 | "Resources/functions.php"
4245 | ],
4246 | "psr-4": {
4247 | "Symfony\\Component\\String\\": ""
4248 | },
4249 | "exclude-from-classmap": [
4250 | "/Tests/"
4251 | ]
4252 | },
4253 | "notification-url": "https://packagist.org/downloads/",
4254 | "license": [
4255 | "MIT"
4256 | ],
4257 | "authors": [
4258 | {
4259 | "name": "Nicolas Grekas",
4260 | "email": "p@tchwork.com"
4261 | },
4262 | {
4263 | "name": "Symfony Community",
4264 | "homepage": "https://symfony.com/contributors"
4265 | }
4266 | ],
4267 | "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way",
4268 | "homepage": "https://symfony.com",
4269 | "keywords": [
4270 | "grapheme",
4271 | "i18n",
4272 | "string",
4273 | "unicode",
4274 | "utf-8",
4275 | "utf8"
4276 | ],
4277 | "support": {
4278 | "source": "https://github.com/symfony/string/tree/v6.3.5"
4279 | },
4280 | "funding": [
4281 | {
4282 | "url": "https://symfony.com/sponsor",
4283 | "type": "custom"
4284 | },
4285 | {
4286 | "url": "https://github.com/fabpot",
4287 | "type": "github"
4288 | },
4289 | {
4290 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
4291 | "type": "tidelift"
4292 | }
4293 | ],
4294 | "time": "2023-09-18T10:38:32+00:00"
4295 | },
4296 | {
4297 | "name": "ta-tikoma/phpunit-architecture-test",
4298 | "version": "0.7.4",
4299 | "source": {
4300 | "type": "git",
4301 | "url": "https://github.com/ta-tikoma/phpunit-architecture-test.git",
4302 | "reference": "abe1f8a5f4635e7cbe0a8a37d6b8d20c687af0f2"
4303 | },
4304 | "dist": {
4305 | "type": "zip",
4306 | "url": "https://api.github.com/repos/ta-tikoma/phpunit-architecture-test/zipball/abe1f8a5f4635e7cbe0a8a37d6b8d20c687af0f2",
4307 | "reference": "abe1f8a5f4635e7cbe0a8a37d6b8d20c687af0f2",
4308 | "shasum": ""
4309 | },
4310 | "require": {
4311 | "nikic/php-parser": "^4.15.4",
4312 | "php": "^8.1.0",
4313 | "phpdocumentor/reflection-docblock": "^5.3.0",
4314 | "phpunit/phpunit": "^10.1.1",
4315 | "symfony/finder": "^6.2.7"
4316 | },
4317 | "require-dev": {
4318 | "laravel/pint": "^1.9.0",
4319 | "phpstan/phpstan": "^1.10.13"
4320 | },
4321 | "type": "library",
4322 | "autoload": {
4323 | "psr-4": {
4324 | "PHPUnit\\Architecture\\": "src/"
4325 | }
4326 | },
4327 | "notification-url": "https://packagist.org/downloads/",
4328 | "license": [
4329 | "MIT"
4330 | ],
4331 | "authors": [
4332 | {
4333 | "name": "Ni Shi",
4334 | "email": "futik0ma011@gmail.com"
4335 | },
4336 | {
4337 | "name": "Nuno Maduro",
4338 | "email": "enunomaduro@gmail.com"
4339 | }
4340 | ],
4341 | "description": "Methods for testing application architecture",
4342 | "keywords": [
4343 | "architecture",
4344 | "phpunit",
4345 | "stucture",
4346 | "test",
4347 | "testing"
4348 | ],
4349 | "support": {
4350 | "issues": "https://github.com/ta-tikoma/phpunit-architecture-test/issues",
4351 | "source": "https://github.com/ta-tikoma/phpunit-architecture-test/tree/0.7.4"
4352 | },
4353 | "time": "2023-08-03T06:50:14+00:00"
4354 | },
4355 | {
4356 | "name": "theseer/tokenizer",
4357 | "version": "1.2.1",
4358 | "source": {
4359 | "type": "git",
4360 | "url": "https://github.com/theseer/tokenizer.git",
4361 | "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e"
4362 | },
4363 | "dist": {
4364 | "type": "zip",
4365 | "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e",
4366 | "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e",
4367 | "shasum": ""
4368 | },
4369 | "require": {
4370 | "ext-dom": "*",
4371 | "ext-tokenizer": "*",
4372 | "ext-xmlwriter": "*",
4373 | "php": "^7.2 || ^8.0"
4374 | },
4375 | "type": "library",
4376 | "autoload": {
4377 | "classmap": [
4378 | "src/"
4379 | ]
4380 | },
4381 | "notification-url": "https://packagist.org/downloads/",
4382 | "license": [
4383 | "BSD-3-Clause"
4384 | ],
4385 | "authors": [
4386 | {
4387 | "name": "Arne Blankerts",
4388 | "email": "arne@blankerts.de",
4389 | "role": "Developer"
4390 | }
4391 | ],
4392 | "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
4393 | "support": {
4394 | "issues": "https://github.com/theseer/tokenizer/issues",
4395 | "source": "https://github.com/theseer/tokenizer/tree/1.2.1"
4396 | },
4397 | "funding": [
4398 | {
4399 | "url": "https://github.com/theseer",
4400 | "type": "github"
4401 | }
4402 | ],
4403 | "time": "2021-07-28T10:34:58+00:00"
4404 | },
4405 | {
4406 | "name": "webmozart/assert",
4407 | "version": "1.11.0",
4408 | "source": {
4409 | "type": "git",
4410 | "url": "https://github.com/webmozarts/assert.git",
4411 | "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991"
4412 | },
4413 | "dist": {
4414 | "type": "zip",
4415 | "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991",
4416 | "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991",
4417 | "shasum": ""
4418 | },
4419 | "require": {
4420 | "ext-ctype": "*",
4421 | "php": "^7.2 || ^8.0"
4422 | },
4423 | "conflict": {
4424 | "phpstan/phpstan": "<0.12.20",
4425 | "vimeo/psalm": "<4.6.1 || 4.6.2"
4426 | },
4427 | "require-dev": {
4428 | "phpunit/phpunit": "^8.5.13"
4429 | },
4430 | "type": "library",
4431 | "extra": {
4432 | "branch-alias": {
4433 | "dev-master": "1.10-dev"
4434 | }
4435 | },
4436 | "autoload": {
4437 | "psr-4": {
4438 | "Webmozart\\Assert\\": "src/"
4439 | }
4440 | },
4441 | "notification-url": "https://packagist.org/downloads/",
4442 | "license": [
4443 | "MIT"
4444 | ],
4445 | "authors": [
4446 | {
4447 | "name": "Bernhard Schussek",
4448 | "email": "bschussek@gmail.com"
4449 | }
4450 | ],
4451 | "description": "Assertions to validate method input/output with nice error messages.",
4452 | "keywords": [
4453 | "assert",
4454 | "check",
4455 | "validate"
4456 | ],
4457 | "support": {
4458 | "issues": "https://github.com/webmozarts/assert/issues",
4459 | "source": "https://github.com/webmozarts/assert/tree/1.11.0"
4460 | },
4461 | "time": "2022-06-03T18:03:27+00:00"
4462 | }
4463 | ],
4464 | "aliases": [],
4465 | "minimum-stability": "stable",
4466 | "stability-flags": [],
4467 | "prefer-stable": false,
4468 | "prefer-lowest": false,
4469 | "platform": {
4470 | "php": ">=5"
4471 | },
4472 | "platform-dev": [],
4473 | "plugin-api-version": "2.3.0"
4474 | }
4475 |
--------------------------------------------------------------------------------
/phpunit.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 | ./tests
10 |
11 |
12 |
13 |
14 | ./app
15 | ./src
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/Contracts/HandlerInterface.php:
--------------------------------------------------------------------------------
1 | response = $response;
16 | }
17 |
18 | public function dns_get_record(...$arguments)
19 | {
20 | return $this->response;
21 | }
22 |
23 | public function file_get_contents(...$arguments)
24 | {
25 | return $this->response;
26 | }
27 |
28 | public function get_meta_tags(...$arguments)
29 | {
30 | return get_meta_tags(testDirectory('Stubs/html.html'));
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/src/VerifyDomain.php:
--------------------------------------------------------------------------------
1 | handler = $handler ?: new LookupHandler();
17 | }
18 |
19 | /**
20 | * @param string $domain
21 | * @param string $value
22 | * @return bool
23 | */
24 | public function verifyByDNS($domain, $value)
25 | {
26 | try {
27 | $records = $this->handler->dns_get_record($domain, DNS_TXT);
28 | } catch (\Exception $e) {
29 | $records = [];
30 | }
31 |
32 | $filteredRecords = [];
33 | foreach ($records as $record) {
34 | if ($record['txt'] === $value && $record['host']) {
35 | $filteredRecords[] = $record;
36 | }
37 | }
38 | return !empty($filteredRecords);
39 | }
40 |
41 | /**
42 | * @param $domain
43 | * @param $file
44 | * @param $value
45 | * @return bool
46 | */
47 | public function verifyByFile($domain, $file, $value)
48 | {
49 | $url = "https://$domain/$file";
50 | $content = trim($this->handler->file_get_contents($url, false, null, 0, 500));
51 | if ($content == $value) {
52 | return true;
53 | } else {
54 | $httpUrl = "http://$domain/$file";
55 | return trim($this->handler->file_get_contents($httpUrl, false, null, 0, 500)) === $value;
56 | }
57 | }
58 |
59 | /**
60 | * @param $domain
61 | * @param $name
62 | * @param $value
63 | * @return bool
64 | */
65 | public function verifyByMeta($domain, $name, $value)
66 | {
67 | $tags = $this->handler->get_meta_tags("https://{$domain}");
68 | if (! $tags) {
69 | $tags = $this->handler->get_meta_tags("http://{$domain}");
70 | }
71 | if (isset($tags[$name]) && $tags[$name] === $value) {
72 | return true;
73 | }
74 | return false;
75 | }
76 | }
77 |
--------------------------------------------------------------------------------
/tests/Pest.php:
--------------------------------------------------------------------------------
1 | extend('toBeOne', function () {
4 | return $this->toBe(1);
5 | });
6 |
7 | /*
8 | |--------------------------------------------------------------------------
9 | | Functions
10 | |--------------------------------------------------------------------------
11 | |
12 | | While Pest is very powerful out-of-the-box, you may have some testing code specific to your
13 | | project that you don't want to repeat in every file. Here you can also expose helpers as
14 | | global functions to help you to reduce the number of lines of code in your test files.
15 | |
16 | */
17 |
18 | function something()
19 | {
20 | // ..
21 | }
22 |
--------------------------------------------------------------------------------
/tests/Stubs/html.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Minimal HTML5 Document
7 |
8 |
9 | Hello, World!
10 |
11 |
12 |
--------------------------------------------------------------------------------
/tests/TestCase.php:
--------------------------------------------------------------------------------
1 | 'expected-value', 'host' => 'hazaveh.net']
15 | ];
16 |
17 | $domainOwnership = new VerifyDomain(new MockLookupHandler($expected));
18 |
19 | assertTrue($domainOwnership->verifyByDNS('hazaveh.net', 'expected-value'));
20 |
21 | });
22 |
23 | test('it returns FALSE if txt record is missing', function () {
24 | $domainOwnership = new VerifyDomain(new MockLookupHandler([['txt' => 'txt-value']]));
25 | assertFalse($domainOwnership->verifyByDNS('hazaveh.net', 'verification-value'));
26 | });
27 |
28 | test('it returns TRUE if file content matches', function () {
29 | $expectedContent = 'verification-code-123';
30 | $domainOwnership = new VerifyDomain(new MockLookupHandler($expectedContent));
31 | assertTrue($domainOwnership->verifyByFile('hazaveh.net', 'verification.txt', $expectedContent));
32 | });
33 |
34 | test('it returns FALSE if file content is mismatched', function () {
35 | $domainOwnership = new VerifyDomain(new MockLookupHandler('verification-code-123'));
36 | assertFalse($domainOwnership->verifyByFile('hazaveh.net', 'verification.txt', false));
37 | });
38 |
39 | test('it returns TRUE if meta and value match', function () {
40 | $domainOwnership = new VerifyDomain(new MockLookupHandler([]));
41 | var_dump($domainOwnership);
42 | assertTrue($domainOwnership->verifyByMeta("hazaveh.net", 'verification', 'verification-code-123'));
43 | });
44 |
45 | test('it returns FALSE if meta tag is missing', function () {
46 | $domainOwnership = new VerifyDomain(new MockLookupHandler([]));
47 | var_dump($domainOwnership);
48 | assertFalse($domainOwnership->verifyByMeta("hazaveh.net", 'missing', 'verification-code-123'));
49 | });
50 |
51 | test('it returns FALSE if meta value is mismatched', function () {
52 | $domainOwnership = new VerifyDomain(new MockLookupHandler([]));
53 | var_dump($domainOwnership);
54 | assertFalse($domainOwnership->verifyByMeta("hazaveh.net", 'verification', 'mistmatched-value'));
55 | });
56 |
--------------------------------------------------------------------------------