├── .gitignore
├── .travis.yml
├── README.md
├── composer.json
├── composer.lock
├── phpstan.neon
├── phpunit.xml
├── src
├── RawSqsConnector.php
├── RawSqsJob.php
├── RawSqsQueue.php
└── RawSqsServiceProvider.php
└── tests
├── RawSqsConnectorTest.php
├── RawSqsJobTest.php
├── RawSqsQueueTest.php
└── Support
└── TestJobClass.php
/.gitignore:
--------------------------------------------------------------------------------
1 | /html
2 | /vendor
3 | .env
4 | .phpunit.result.cache
5 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: php
2 |
3 | matrix:
4 | fast_finish: true
5 | include:
6 | - php: 7.3
7 | - php: 7.4
8 |
9 | before_script:
10 | - composer install --dev
11 |
12 | script:
13 | - ./vendor/bin/phpcs --standard=PSR2 src/
14 | - ./vendor/bin/phpstan analyse -l max -c phpstan.neon src/
15 | - ./vendor/bin/phpunit
16 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Laravel Raw SQS Connector
2 |
3 | [](https://travis-ci.org/primitivesense/laravel-raw-sqs-connector)
4 | [](https://codeclimate.com/github/primitivesense/laravel-raw-sqs-connector/maintainability)
5 | [](https://packagist.org/packages/primitivesense/laravel-raw-sqs-connector)
6 | [](https://packagist.org/packages/primitivesense/laravel-raw-sqs-connector)
7 | [](https://packagist.org/packages/primitivesense/laravel-raw-sqs-connector)
8 |
9 | ## About
10 | The purpose of this package is to allow you to consume raw messages produced outside of Laravel from AWS SQS to then be handled natively within Laravel's Queue and Job system.
11 |
12 | - Integrates natively into Laravel's Queue system, leveraging all the existing functionality.
13 | - It extends base Laravel SQS functionality, only overriding a small subset of SQS methods.
14 | - Its used in production.
15 | - Comprehensive documentation.
16 | - Full suite of unit tests.
17 |
18 |
19 | This library was originally built to allow the submission of jobs from AWS Lambda into Laravel.
20 |
21 | ## Dependencies
22 |
23 | * PHP >= 7.3
24 | * Laravel >= 8.0
25 |
26 | ## Installation via Composer
27 |
28 | To install:
29 |
30 | ```
31 | composer require primitivesense/laravel-raw-sqs-connector
32 | ```
33 |
34 | ## How to use
35 |
36 | Add the Service Provider into `config/app.php` like so:
37 |
38 | ```
39 | 'providers' => [
40 | '...',
41 | '\PrimitiveSense\LaravelRawSqsConnector\RawSqsServiceProvider'
42 | ];
43 | ```
44 |
45 | Create a new job like so:
46 |
47 | ```
48 | data;
59 | }
60 | }
61 | ```
62 |
63 | `RawSqsJob` is a base class that has all the required traits to allow for Laravel's Queue System to handle it correctly.
64 |
65 | Your raw message from SQS can be accessed via `$this->data`, magic!
66 |
67 | To then configure this within `config/queue.php` add the block below:
68 |
69 | ```
70 | 'your-raw-sqs-queue' => [
71 | 'driver' => 'raw-sqs',
72 | 'job_class' => \App\Jobs\ExampleRawSqsJob::class,
73 | 'key' => env('SQS_KEY', 'your-public-key'),
74 | 'secret' => env('SQS_SECRET', 'your-secret-key'),
75 | 'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'),
76 | 'queue' => env('SQS_QUEUE', 'your-queue-name'),
77 | 'region' => env('SQS_REGION', 'us-east-1'),
78 | ],
79 | ```
80 |
81 | `your-raw-sqs-queue` is simply your custom message queue, the important bits to note are `driver` and `job_class`. `driver` is simply this packages `raw-sqs` connector and `job_class` just tells Laravel Queue which job to deletegate the raw message too.
82 |
83 | Then simply invoke the below to start the queue
84 |
85 | ```
86 | php artisan queue:work your-raw-sqs-queue
87 | ```
88 |
89 | It does give you the flexibiity to push multiple messages into the queue but they will only be proccessed by that one job.
90 |
91 | ## How it works
92 | There is a new `RawSqsConnector` and `RawSqsQueue`. The `RawSqsConnector` handles the construction of the `RawSqsQueue` class which responsibility is to process/submit the messages to SQS. There is then a base `RawSqsJob` class which can be extended from which has all the traits required for the Queue system to delegate and handle the job correctly.
93 |
94 | `RawSqsQueue` extends Larvel's SQS Queue, overriding a few core methods, the `push` methods are disabled as the package is designed to consume jobs from SQS rather than push jobs onto the Queue. The main amount of work resides within the overriden `pop` method which processes the incoming message. This method has been extended to take the message and marshal it into a format that Laravel's queue system understands to then be later handled by the job it's self.
95 |
96 |
97 | ## Help!
98 | If you have any issues please feel free to raise an issue!
99 |
100 | ## Contributing
101 |
102 | Contributions are more than welcome, please feel free to raise a PR but please ensure:
103 |
104 | - Complies with PSR-2 - `./vendor/bin/phpcs --standard=PSR2`
105 | - Complies with the packages PHPStan Configuration - `./vendor/bin/phpstan analyse -l max -c phpstan.neon src`
106 |
107 |
108 | ## License
109 |
110 | The Laravel Raw SQS Connector is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT).
111 |
--------------------------------------------------------------------------------
/composer.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "primitivesense/laravel-raw-sqs-connector",
3 | "description": "Allows for the consumption of raw messages produced outside of Laravel from SQS to then be handled natively within Laravel's Queue and Job system",
4 | "license": "MIT",
5 | "authors": [
6 | {
7 | "name": "Tom Harnasz",
8 | "email": "tom@primitivesense.com"
9 | }
10 | ],
11 | "require": {
12 | "php": ">=7.3",
13 | "ext-json": "*",
14 | "illuminate/queue": "^8.0",
15 | "aws/aws-sdk-php": "~3.1"
16 | },
17 | "autoload": {
18 | "psr-4": {
19 | "PrimitiveSense\\LaravelRawSqsConnector\\": "src/"
20 | }
21 | },
22 | "autoload-dev": {
23 | "psr-4": {
24 | "Tests\\": "tests/"
25 | }
26 | },
27 | "require-dev": {
28 | "phpunit/phpunit": "^8.0",
29 | "phpstan/phpstan": "^0.12",
30 | "phpstan/phpstan-mockery": "^0.12.0",
31 | "squizlabs/php_codesniffer": "^3.4",
32 | "mockery/mockery": "^1.2"
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/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": "ac7b8ee91c1c152da08057b71c52fff4",
8 | "packages": [
9 | {
10 | "name": "aws/aws-sdk-php",
11 | "version": "3.185.9",
12 | "source": {
13 | "type": "git",
14 | "url": "https://github.com/aws/aws-sdk-php.git",
15 | "reference": "b92714fbe995195e9ba970cf52a2fa601b334725"
16 | },
17 | "dist": {
18 | "type": "zip",
19 | "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/b92714fbe995195e9ba970cf52a2fa601b334725",
20 | "reference": "b92714fbe995195e9ba970cf52a2fa601b334725",
21 | "shasum": ""
22 | },
23 | "require": {
24 | "ext-json": "*",
25 | "ext-pcre": "*",
26 | "ext-simplexml": "*",
27 | "guzzlehttp/guzzle": "^5.3.3|^6.2.1|^7.0",
28 | "guzzlehttp/promises": "^1.4.0",
29 | "guzzlehttp/psr7": "^1.7.0",
30 | "mtdowling/jmespath.php": "^2.6",
31 | "php": ">=5.5"
32 | },
33 | "require-dev": {
34 | "andrewsville/php-token-reflection": "^1.4",
35 | "aws/aws-php-sns-message-validator": "~1.0",
36 | "behat/behat": "~3.0",
37 | "doctrine/cache": "~1.4",
38 | "ext-dom": "*",
39 | "ext-openssl": "*",
40 | "ext-pcntl": "*",
41 | "ext-sockets": "*",
42 | "nette/neon": "^2.3",
43 | "paragonie/random_compat": ">= 2",
44 | "phpunit/phpunit": "^4.8.35|^5.4.3",
45 | "psr/cache": "^1.0",
46 | "psr/simple-cache": "^1.0",
47 | "sebastian/comparator": "^1.2.3"
48 | },
49 | "suggest": {
50 | "aws/aws-php-sns-message-validator": "To validate incoming SNS notifications",
51 | "doctrine/cache": "To use the DoctrineCacheAdapter",
52 | "ext-curl": "To send requests using cURL",
53 | "ext-openssl": "Allows working with CloudFront private distributions and verifying received SNS messages",
54 | "ext-sockets": "To use client-side monitoring"
55 | },
56 | "type": "library",
57 | "extra": {
58 | "branch-alias": {
59 | "dev-master": "3.0-dev"
60 | }
61 | },
62 | "autoload": {
63 | "psr-4": {
64 | "Aws\\": "src/"
65 | },
66 | "files": [
67 | "src/functions.php"
68 | ]
69 | },
70 | "notification-url": "https://packagist.org/downloads/",
71 | "license": [
72 | "Apache-2.0"
73 | ],
74 | "authors": [
75 | {
76 | "name": "Amazon Web Services",
77 | "homepage": "http://aws.amazon.com"
78 | }
79 | ],
80 | "description": "AWS SDK for PHP - Use Amazon Web Services in your PHP project",
81 | "homepage": "http://aws.amazon.com/sdkforphp",
82 | "keywords": [
83 | "amazon",
84 | "aws",
85 | "cloud",
86 | "dynamodb",
87 | "ec2",
88 | "glacier",
89 | "s3",
90 | "sdk"
91 | ],
92 | "support": {
93 | "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80",
94 | "issues": "https://github.com/aws/aws-sdk-php/issues",
95 | "source": "https://github.com/aws/aws-sdk-php/tree/3.185.9"
96 | },
97 | "time": "2021-07-08T18:21:21+00:00"
98 | },
99 | {
100 | "name": "brick/math",
101 | "version": "0.9.2",
102 | "source": {
103 | "type": "git",
104 | "url": "https://github.com/brick/math.git",
105 | "reference": "dff976c2f3487d42c1db75a3b180e2b9f0e72ce0"
106 | },
107 | "dist": {
108 | "type": "zip",
109 | "url": "https://api.github.com/repos/brick/math/zipball/dff976c2f3487d42c1db75a3b180e2b9f0e72ce0",
110 | "reference": "dff976c2f3487d42c1db75a3b180e2b9f0e72ce0",
111 | "shasum": ""
112 | },
113 | "require": {
114 | "ext-json": "*",
115 | "php": "^7.1 || ^8.0"
116 | },
117 | "require-dev": {
118 | "php-coveralls/php-coveralls": "^2.2",
119 | "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0",
120 | "vimeo/psalm": "4.3.2"
121 | },
122 | "type": "library",
123 | "autoload": {
124 | "psr-4": {
125 | "Brick\\Math\\": "src/"
126 | }
127 | },
128 | "notification-url": "https://packagist.org/downloads/",
129 | "license": [
130 | "MIT"
131 | ],
132 | "description": "Arbitrary-precision arithmetic library",
133 | "keywords": [
134 | "Arbitrary-precision",
135 | "BigInteger",
136 | "BigRational",
137 | "arithmetic",
138 | "bigdecimal",
139 | "bignum",
140 | "brick",
141 | "math"
142 | ],
143 | "support": {
144 | "issues": "https://github.com/brick/math/issues",
145 | "source": "https://github.com/brick/math/tree/0.9.2"
146 | },
147 | "funding": [
148 | {
149 | "url": "https://tidelift.com/funding/github/packagist/brick/math",
150 | "type": "tidelift"
151 | }
152 | ],
153 | "time": "2021-01-20T22:51:39+00:00"
154 | },
155 | {
156 | "name": "doctrine/inflector",
157 | "version": "2.0.3",
158 | "source": {
159 | "type": "git",
160 | "url": "https://github.com/doctrine/inflector.git",
161 | "reference": "9cf661f4eb38f7c881cac67c75ea9b00bf97b210"
162 | },
163 | "dist": {
164 | "type": "zip",
165 | "url": "https://api.github.com/repos/doctrine/inflector/zipball/9cf661f4eb38f7c881cac67c75ea9b00bf97b210",
166 | "reference": "9cf661f4eb38f7c881cac67c75ea9b00bf97b210",
167 | "shasum": ""
168 | },
169 | "require": {
170 | "php": "^7.2 || ^8.0"
171 | },
172 | "require-dev": {
173 | "doctrine/coding-standard": "^7.0",
174 | "phpstan/phpstan": "^0.11",
175 | "phpstan/phpstan-phpunit": "^0.11",
176 | "phpstan/phpstan-strict-rules": "^0.11",
177 | "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0"
178 | },
179 | "type": "library",
180 | "extra": {
181 | "branch-alias": {
182 | "dev-master": "2.0.x-dev"
183 | }
184 | },
185 | "autoload": {
186 | "psr-4": {
187 | "Doctrine\\Inflector\\": "lib/Doctrine/Inflector"
188 | }
189 | },
190 | "notification-url": "https://packagist.org/downloads/",
191 | "license": [
192 | "MIT"
193 | ],
194 | "authors": [
195 | {
196 | "name": "Guilherme Blanco",
197 | "email": "guilhermeblanco@gmail.com"
198 | },
199 | {
200 | "name": "Roman Borschel",
201 | "email": "roman@code-factory.org"
202 | },
203 | {
204 | "name": "Benjamin Eberlei",
205 | "email": "kontakt@beberlei.de"
206 | },
207 | {
208 | "name": "Jonathan Wage",
209 | "email": "jonwage@gmail.com"
210 | },
211 | {
212 | "name": "Johannes Schmitt",
213 | "email": "schmittjoh@gmail.com"
214 | }
215 | ],
216 | "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.",
217 | "homepage": "https://www.doctrine-project.org/projects/inflector.html",
218 | "keywords": [
219 | "inflection",
220 | "inflector",
221 | "lowercase",
222 | "manipulation",
223 | "php",
224 | "plural",
225 | "singular",
226 | "strings",
227 | "uppercase",
228 | "words"
229 | ],
230 | "support": {
231 | "issues": "https://github.com/doctrine/inflector/issues",
232 | "source": "https://github.com/doctrine/inflector/tree/2.0.x"
233 | },
234 | "funding": [
235 | {
236 | "url": "https://www.doctrine-project.org/sponsorship.html",
237 | "type": "custom"
238 | },
239 | {
240 | "url": "https://www.patreon.com/phpdoctrine",
241 | "type": "patreon"
242 | },
243 | {
244 | "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector",
245 | "type": "tidelift"
246 | }
247 | ],
248 | "time": "2020-05-29T15:13:26+00:00"
249 | },
250 | {
251 | "name": "guzzlehttp/guzzle",
252 | "version": "7.3.0",
253 | "source": {
254 | "type": "git",
255 | "url": "https://github.com/guzzle/guzzle.git",
256 | "reference": "7008573787b430c1c1f650e3722d9bba59967628"
257 | },
258 | "dist": {
259 | "type": "zip",
260 | "url": "https://api.github.com/repos/guzzle/guzzle/zipball/7008573787b430c1c1f650e3722d9bba59967628",
261 | "reference": "7008573787b430c1c1f650e3722d9bba59967628",
262 | "shasum": ""
263 | },
264 | "require": {
265 | "ext-json": "*",
266 | "guzzlehttp/promises": "^1.4",
267 | "guzzlehttp/psr7": "^1.7 || ^2.0",
268 | "php": "^7.2.5 || ^8.0",
269 | "psr/http-client": "^1.0"
270 | },
271 | "provide": {
272 | "psr/http-client-implementation": "1.0"
273 | },
274 | "require-dev": {
275 | "bamarni/composer-bin-plugin": "^1.4.1",
276 | "ext-curl": "*",
277 | "php-http/client-integration-tests": "^3.0",
278 | "phpunit/phpunit": "^8.5.5 || ^9.3.5",
279 | "psr/log": "^1.1"
280 | },
281 | "suggest": {
282 | "ext-curl": "Required for CURL handler support",
283 | "ext-intl": "Required for Internationalized Domain Name (IDN) support",
284 | "psr/log": "Required for using the Log middleware"
285 | },
286 | "type": "library",
287 | "extra": {
288 | "branch-alias": {
289 | "dev-master": "7.3-dev"
290 | }
291 | },
292 | "autoload": {
293 | "psr-4": {
294 | "GuzzleHttp\\": "src/"
295 | },
296 | "files": [
297 | "src/functions_include.php"
298 | ]
299 | },
300 | "notification-url": "https://packagist.org/downloads/",
301 | "license": [
302 | "MIT"
303 | ],
304 | "authors": [
305 | {
306 | "name": "Michael Dowling",
307 | "email": "mtdowling@gmail.com",
308 | "homepage": "https://github.com/mtdowling"
309 | },
310 | {
311 | "name": "Márk Sági-Kazár",
312 | "email": "mark.sagikazar@gmail.com",
313 | "homepage": "https://sagikazarmark.hu"
314 | }
315 | ],
316 | "description": "Guzzle is a PHP HTTP client library",
317 | "homepage": "http://guzzlephp.org/",
318 | "keywords": [
319 | "client",
320 | "curl",
321 | "framework",
322 | "http",
323 | "http client",
324 | "psr-18",
325 | "psr-7",
326 | "rest",
327 | "web service"
328 | ],
329 | "support": {
330 | "issues": "https://github.com/guzzle/guzzle/issues",
331 | "source": "https://github.com/guzzle/guzzle/tree/7.3.0"
332 | },
333 | "funding": [
334 | {
335 | "url": "https://github.com/GrahamCampbell",
336 | "type": "github"
337 | },
338 | {
339 | "url": "https://github.com/Nyholm",
340 | "type": "github"
341 | },
342 | {
343 | "url": "https://github.com/alexeyshockov",
344 | "type": "github"
345 | },
346 | {
347 | "url": "https://github.com/gmponos",
348 | "type": "github"
349 | }
350 | ],
351 | "time": "2021-03-23T11:33:13+00:00"
352 | },
353 | {
354 | "name": "guzzlehttp/promises",
355 | "version": "1.4.1",
356 | "source": {
357 | "type": "git",
358 | "url": "https://github.com/guzzle/promises.git",
359 | "reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d"
360 | },
361 | "dist": {
362 | "type": "zip",
363 | "url": "https://api.github.com/repos/guzzle/promises/zipball/8e7d04f1f6450fef59366c399cfad4b9383aa30d",
364 | "reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d",
365 | "shasum": ""
366 | },
367 | "require": {
368 | "php": ">=5.5"
369 | },
370 | "require-dev": {
371 | "symfony/phpunit-bridge": "^4.4 || ^5.1"
372 | },
373 | "type": "library",
374 | "extra": {
375 | "branch-alias": {
376 | "dev-master": "1.4-dev"
377 | }
378 | },
379 | "autoload": {
380 | "psr-4": {
381 | "GuzzleHttp\\Promise\\": "src/"
382 | },
383 | "files": [
384 | "src/functions_include.php"
385 | ]
386 | },
387 | "notification-url": "https://packagist.org/downloads/",
388 | "license": [
389 | "MIT"
390 | ],
391 | "authors": [
392 | {
393 | "name": "Michael Dowling",
394 | "email": "mtdowling@gmail.com",
395 | "homepage": "https://github.com/mtdowling"
396 | }
397 | ],
398 | "description": "Guzzle promises library",
399 | "keywords": [
400 | "promise"
401 | ],
402 | "support": {
403 | "issues": "https://github.com/guzzle/promises/issues",
404 | "source": "https://github.com/guzzle/promises/tree/1.4.1"
405 | },
406 | "time": "2021-03-07T09:25:29+00:00"
407 | },
408 | {
409 | "name": "guzzlehttp/psr7",
410 | "version": "1.8.2",
411 | "source": {
412 | "type": "git",
413 | "url": "https://github.com/guzzle/psr7.git",
414 | "reference": "dc960a912984efb74d0a90222870c72c87f10c91"
415 | },
416 | "dist": {
417 | "type": "zip",
418 | "url": "https://api.github.com/repos/guzzle/psr7/zipball/dc960a912984efb74d0a90222870c72c87f10c91",
419 | "reference": "dc960a912984efb74d0a90222870c72c87f10c91",
420 | "shasum": ""
421 | },
422 | "require": {
423 | "php": ">=5.4.0",
424 | "psr/http-message": "~1.0",
425 | "ralouphie/getallheaders": "^2.0.5 || ^3.0.0"
426 | },
427 | "provide": {
428 | "psr/http-message-implementation": "1.0"
429 | },
430 | "require-dev": {
431 | "ext-zlib": "*",
432 | "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10"
433 | },
434 | "suggest": {
435 | "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
436 | },
437 | "type": "library",
438 | "extra": {
439 | "branch-alias": {
440 | "dev-master": "1.7-dev"
441 | }
442 | },
443 | "autoload": {
444 | "psr-4": {
445 | "GuzzleHttp\\Psr7\\": "src/"
446 | },
447 | "files": [
448 | "src/functions_include.php"
449 | ]
450 | },
451 | "notification-url": "https://packagist.org/downloads/",
452 | "license": [
453 | "MIT"
454 | ],
455 | "authors": [
456 | {
457 | "name": "Michael Dowling",
458 | "email": "mtdowling@gmail.com",
459 | "homepage": "https://github.com/mtdowling"
460 | },
461 | {
462 | "name": "Tobias Schultze",
463 | "homepage": "https://github.com/Tobion"
464 | }
465 | ],
466 | "description": "PSR-7 message implementation that also provides common utility methods",
467 | "keywords": [
468 | "http",
469 | "message",
470 | "psr-7",
471 | "request",
472 | "response",
473 | "stream",
474 | "uri",
475 | "url"
476 | ],
477 | "support": {
478 | "issues": "https://github.com/guzzle/psr7/issues",
479 | "source": "https://github.com/guzzle/psr7/tree/1.8.2"
480 | },
481 | "time": "2021-04-26T09:17:50+00:00"
482 | },
483 | {
484 | "name": "illuminate/collections",
485 | "version": "v8.49.2",
486 | "source": {
487 | "type": "git",
488 | "url": "https://github.com/illuminate/collections.git",
489 | "reference": "f9311a35779750f38bed47456c031c4dc4962274"
490 | },
491 | "dist": {
492 | "type": "zip",
493 | "url": "https://api.github.com/repos/illuminate/collections/zipball/f9311a35779750f38bed47456c031c4dc4962274",
494 | "reference": "f9311a35779750f38bed47456c031c4dc4962274",
495 | "shasum": ""
496 | },
497 | "require": {
498 | "illuminate/contracts": "^8.0",
499 | "illuminate/macroable": "^8.0",
500 | "php": "^7.3|^8.0"
501 | },
502 | "suggest": {
503 | "symfony/var-dumper": "Required to use the dump method (^5.1.4)."
504 | },
505 | "type": "library",
506 | "extra": {
507 | "branch-alias": {
508 | "dev-master": "8.x-dev"
509 | }
510 | },
511 | "autoload": {
512 | "psr-4": {
513 | "Illuminate\\Support\\": ""
514 | },
515 | "files": [
516 | "helpers.php"
517 | ]
518 | },
519 | "notification-url": "https://packagist.org/downloads/",
520 | "license": [
521 | "MIT"
522 | ],
523 | "authors": [
524 | {
525 | "name": "Taylor Otwell",
526 | "email": "taylor@laravel.com"
527 | }
528 | ],
529 | "description": "The Illuminate Collections package.",
530 | "homepage": "https://laravel.com",
531 | "support": {
532 | "issues": "https://github.com/laravel/framework/issues",
533 | "source": "https://github.com/laravel/framework"
534 | },
535 | "time": "2021-06-28T13:56:26+00:00"
536 | },
537 | {
538 | "name": "illuminate/console",
539 | "version": "v8.49.2",
540 | "source": {
541 | "type": "git",
542 | "url": "https://github.com/illuminate/console.git",
543 | "reference": "1f1ff88a2efbfc85f87ea7d8283acbefc5b56191"
544 | },
545 | "dist": {
546 | "type": "zip",
547 | "url": "https://api.github.com/repos/illuminate/console/zipball/1f1ff88a2efbfc85f87ea7d8283acbefc5b56191",
548 | "reference": "1f1ff88a2efbfc85f87ea7d8283acbefc5b56191",
549 | "shasum": ""
550 | },
551 | "require": {
552 | "illuminate/collections": "^8.0",
553 | "illuminate/contracts": "^8.0",
554 | "illuminate/macroable": "^8.0",
555 | "illuminate/support": "^8.0",
556 | "php": "^7.3|^8.0",
557 | "symfony/console": "^5.1.4",
558 | "symfony/process": "^5.1.4"
559 | },
560 | "suggest": {
561 | "dragonmantank/cron-expression": "Required to use scheduler (^3.0.2).",
562 | "guzzlehttp/guzzle": "Required to use the ping methods on schedules (^6.5.5|^7.0.1).",
563 | "illuminate/bus": "Required to use the scheduled job dispatcher (^8.0).",
564 | "illuminate/container": "Required to use the scheduler (^8.0).",
565 | "illuminate/filesystem": "Required to use the generator command (^8.0).",
566 | "illuminate/queue": "Required to use closures for scheduled jobs (^8.0)."
567 | },
568 | "type": "library",
569 | "extra": {
570 | "branch-alias": {
571 | "dev-master": "8.x-dev"
572 | }
573 | },
574 | "autoload": {
575 | "psr-4": {
576 | "Illuminate\\Console\\": ""
577 | }
578 | },
579 | "notification-url": "https://packagist.org/downloads/",
580 | "license": [
581 | "MIT"
582 | ],
583 | "authors": [
584 | {
585 | "name": "Taylor Otwell",
586 | "email": "taylor@laravel.com"
587 | }
588 | ],
589 | "description": "The Illuminate Console package.",
590 | "homepage": "https://laravel.com",
591 | "support": {
592 | "issues": "https://github.com/laravel/framework/issues",
593 | "source": "https://github.com/laravel/framework"
594 | },
595 | "time": "2021-06-04T13:29:57+00:00"
596 | },
597 | {
598 | "name": "illuminate/container",
599 | "version": "v8.49.2",
600 | "source": {
601 | "type": "git",
602 | "url": "https://github.com/illuminate/container.git",
603 | "reference": "382959676d85583f0e8fdd248bceb4b8762dc1ed"
604 | },
605 | "dist": {
606 | "type": "zip",
607 | "url": "https://api.github.com/repos/illuminate/container/zipball/382959676d85583f0e8fdd248bceb4b8762dc1ed",
608 | "reference": "382959676d85583f0e8fdd248bceb4b8762dc1ed",
609 | "shasum": ""
610 | },
611 | "require": {
612 | "illuminate/contracts": "^8.0",
613 | "php": "^7.3|^8.0",
614 | "psr/container": "^1.0"
615 | },
616 | "provide": {
617 | "psr/container-implementation": "1.0"
618 | },
619 | "type": "library",
620 | "extra": {
621 | "branch-alias": {
622 | "dev-master": "8.x-dev"
623 | }
624 | },
625 | "autoload": {
626 | "psr-4": {
627 | "Illuminate\\Container\\": ""
628 | }
629 | },
630 | "notification-url": "https://packagist.org/downloads/",
631 | "license": [
632 | "MIT"
633 | ],
634 | "authors": [
635 | {
636 | "name": "Taylor Otwell",
637 | "email": "taylor@laravel.com"
638 | }
639 | ],
640 | "description": "The Illuminate Container package.",
641 | "homepage": "https://laravel.com",
642 | "support": {
643 | "issues": "https://github.com/laravel/framework/issues",
644 | "source": "https://github.com/laravel/framework"
645 | },
646 | "time": "2021-06-08T14:08:11+00:00"
647 | },
648 | {
649 | "name": "illuminate/contracts",
650 | "version": "v8.49.2",
651 | "source": {
652 | "type": "git",
653 | "url": "https://github.com/illuminate/contracts.git",
654 | "reference": "199fcedc161ba4a0b83feaddc4629f395dbf1641"
655 | },
656 | "dist": {
657 | "type": "zip",
658 | "url": "https://api.github.com/repos/illuminate/contracts/zipball/199fcedc161ba4a0b83feaddc4629f395dbf1641",
659 | "reference": "199fcedc161ba4a0b83feaddc4629f395dbf1641",
660 | "shasum": ""
661 | },
662 | "require": {
663 | "php": "^7.3|^8.0",
664 | "psr/container": "^1.0",
665 | "psr/simple-cache": "^1.0"
666 | },
667 | "type": "library",
668 | "extra": {
669 | "branch-alias": {
670 | "dev-master": "8.x-dev"
671 | }
672 | },
673 | "autoload": {
674 | "psr-4": {
675 | "Illuminate\\Contracts\\": ""
676 | }
677 | },
678 | "notification-url": "https://packagist.org/downloads/",
679 | "license": [
680 | "MIT"
681 | ],
682 | "authors": [
683 | {
684 | "name": "Taylor Otwell",
685 | "email": "taylor@laravel.com"
686 | }
687 | ],
688 | "description": "The Illuminate Contracts package.",
689 | "homepage": "https://laravel.com",
690 | "support": {
691 | "issues": "https://github.com/laravel/framework/issues",
692 | "source": "https://github.com/laravel/framework"
693 | },
694 | "time": "2021-06-01T14:53:38+00:00"
695 | },
696 | {
697 | "name": "illuminate/database",
698 | "version": "v8.49.2",
699 | "source": {
700 | "type": "git",
701 | "url": "https://github.com/illuminate/database.git",
702 | "reference": "aa146b8d27b8b1efe0becafd5e25580b47174638"
703 | },
704 | "dist": {
705 | "type": "zip",
706 | "url": "https://api.github.com/repos/illuminate/database/zipball/aa146b8d27b8b1efe0becafd5e25580b47174638",
707 | "reference": "aa146b8d27b8b1efe0becafd5e25580b47174638",
708 | "shasum": ""
709 | },
710 | "require": {
711 | "ext-json": "*",
712 | "illuminate/collections": "^8.0",
713 | "illuminate/container": "^8.0",
714 | "illuminate/contracts": "^8.0",
715 | "illuminate/macroable": "^8.0",
716 | "illuminate/support": "^8.0",
717 | "php": "^7.3|^8.0",
718 | "symfony/console": "^5.1.4"
719 | },
720 | "suggest": {
721 | "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.6|^3.0).",
722 | "fakerphp/faker": "Required to use the eloquent factory builder (^1.9.1).",
723 | "illuminate/console": "Required to use the database commands (^8.0).",
724 | "illuminate/events": "Required to use the observers with Eloquent (^8.0).",
725 | "illuminate/filesystem": "Required to use the migrations (^8.0).",
726 | "illuminate/pagination": "Required to paginate the result set (^8.0).",
727 | "symfony/finder": "Required to use Eloquent model factories (^5.1.4)."
728 | },
729 | "type": "library",
730 | "extra": {
731 | "branch-alias": {
732 | "dev-master": "8.x-dev"
733 | }
734 | },
735 | "autoload": {
736 | "psr-4": {
737 | "Illuminate\\Database\\": ""
738 | }
739 | },
740 | "notification-url": "https://packagist.org/downloads/",
741 | "license": [
742 | "MIT"
743 | ],
744 | "authors": [
745 | {
746 | "name": "Taylor Otwell",
747 | "email": "taylor@laravel.com"
748 | }
749 | ],
750 | "description": "The Illuminate Database package.",
751 | "homepage": "https://laravel.com",
752 | "keywords": [
753 | "database",
754 | "laravel",
755 | "orm",
756 | "sql"
757 | ],
758 | "support": {
759 | "issues": "https://github.com/laravel/framework/issues",
760 | "source": "https://github.com/laravel/framework"
761 | },
762 | "time": "2021-07-06T14:06:38+00:00"
763 | },
764 | {
765 | "name": "illuminate/filesystem",
766 | "version": "v8.49.2",
767 | "source": {
768 | "type": "git",
769 | "url": "https://github.com/illuminate/filesystem.git",
770 | "reference": "ae8d9051bc50c9551e6a251147b8dcdafcb60d32"
771 | },
772 | "dist": {
773 | "type": "zip",
774 | "url": "https://api.github.com/repos/illuminate/filesystem/zipball/ae8d9051bc50c9551e6a251147b8dcdafcb60d32",
775 | "reference": "ae8d9051bc50c9551e6a251147b8dcdafcb60d32",
776 | "shasum": ""
777 | },
778 | "require": {
779 | "illuminate/collections": "^8.0",
780 | "illuminate/contracts": "^8.0",
781 | "illuminate/macroable": "^8.0",
782 | "illuminate/support": "^8.0",
783 | "php": "^7.3|^8.0",
784 | "symfony/finder": "^5.1.4"
785 | },
786 | "suggest": {
787 | "ext-ftp": "Required to use the Flysystem FTP driver.",
788 | "illuminate/http": "Required for handling uploaded files (^7.0).",
789 | "league/flysystem": "Required to use the Flysystem local and FTP drivers (^1.1).",
790 | "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^1.0).",
791 | "league/flysystem-cached-adapter": "Required to use the Flysystem cache (^1.0).",
792 | "league/flysystem-sftp": "Required to use the Flysystem SFTP driver (^1.0).",
793 | "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).",
794 | "symfony/filesystem": "Required to enable support for relative symbolic links (^5.1.4).",
795 | "symfony/mime": "Required to enable support for guessing extensions (^5.1.4)."
796 | },
797 | "type": "library",
798 | "extra": {
799 | "branch-alias": {
800 | "dev-master": "8.x-dev"
801 | }
802 | },
803 | "autoload": {
804 | "psr-4": {
805 | "Illuminate\\Filesystem\\": ""
806 | }
807 | },
808 | "notification-url": "https://packagist.org/downloads/",
809 | "license": [
810 | "MIT"
811 | ],
812 | "authors": [
813 | {
814 | "name": "Taylor Otwell",
815 | "email": "taylor@laravel.com"
816 | }
817 | ],
818 | "description": "The Illuminate Filesystem package.",
819 | "homepage": "https://laravel.com",
820 | "support": {
821 | "issues": "https://github.com/laravel/framework/issues",
822 | "source": "https://github.com/laravel/framework"
823 | },
824 | "time": "2021-06-18T15:48:00+00:00"
825 | },
826 | {
827 | "name": "illuminate/macroable",
828 | "version": "v8.49.2",
829 | "source": {
830 | "type": "git",
831 | "url": "https://github.com/illuminate/macroable.git",
832 | "reference": "300aa13c086f25116b5f3cde3ca54ff5c822fb05"
833 | },
834 | "dist": {
835 | "type": "zip",
836 | "url": "https://api.github.com/repos/illuminate/macroable/zipball/300aa13c086f25116b5f3cde3ca54ff5c822fb05",
837 | "reference": "300aa13c086f25116b5f3cde3ca54ff5c822fb05",
838 | "shasum": ""
839 | },
840 | "require": {
841 | "php": "^7.3|^8.0"
842 | },
843 | "type": "library",
844 | "extra": {
845 | "branch-alias": {
846 | "dev-master": "8.x-dev"
847 | }
848 | },
849 | "autoload": {
850 | "psr-4": {
851 | "Illuminate\\Support\\": ""
852 | }
853 | },
854 | "notification-url": "https://packagist.org/downloads/",
855 | "license": [
856 | "MIT"
857 | ],
858 | "authors": [
859 | {
860 | "name": "Taylor Otwell",
861 | "email": "taylor@laravel.com"
862 | }
863 | ],
864 | "description": "The Illuminate Macroable package.",
865 | "homepage": "https://laravel.com",
866 | "support": {
867 | "issues": "https://github.com/laravel/framework/issues",
868 | "source": "https://github.com/laravel/framework"
869 | },
870 | "time": "2020-10-27T15:20:30+00:00"
871 | },
872 | {
873 | "name": "illuminate/pipeline",
874 | "version": "v8.49.2",
875 | "source": {
876 | "type": "git",
877 | "url": "https://github.com/illuminate/pipeline.git",
878 | "reference": "23aeff5b26ae4aee3f370835c76bd0f4e93f71d2"
879 | },
880 | "dist": {
881 | "type": "zip",
882 | "url": "https://api.github.com/repos/illuminate/pipeline/zipball/23aeff5b26ae4aee3f370835c76bd0f4e93f71d2",
883 | "reference": "23aeff5b26ae4aee3f370835c76bd0f4e93f71d2",
884 | "shasum": ""
885 | },
886 | "require": {
887 | "illuminate/contracts": "^8.0",
888 | "illuminate/support": "^8.0",
889 | "php": "^7.3|^8.0"
890 | },
891 | "type": "library",
892 | "extra": {
893 | "branch-alias": {
894 | "dev-master": "8.x-dev"
895 | }
896 | },
897 | "autoload": {
898 | "psr-4": {
899 | "Illuminate\\Pipeline\\": ""
900 | }
901 | },
902 | "notification-url": "https://packagist.org/downloads/",
903 | "license": [
904 | "MIT"
905 | ],
906 | "authors": [
907 | {
908 | "name": "Taylor Otwell",
909 | "email": "taylor@laravel.com"
910 | }
911 | ],
912 | "description": "The Illuminate Pipeline package.",
913 | "homepage": "https://laravel.com",
914 | "support": {
915 | "issues": "https://github.com/laravel/framework/issues",
916 | "source": "https://github.com/laravel/framework"
917 | },
918 | "time": "2021-03-26T18:39:16+00:00"
919 | },
920 | {
921 | "name": "illuminate/queue",
922 | "version": "v8.49.2",
923 | "source": {
924 | "type": "git",
925 | "url": "https://github.com/illuminate/queue.git",
926 | "reference": "cb8bda6bdf881b21203bac5f5a24da7bc630425f"
927 | },
928 | "dist": {
929 | "type": "zip",
930 | "url": "https://api.github.com/repos/illuminate/queue/zipball/cb8bda6bdf881b21203bac5f5a24da7bc630425f",
931 | "reference": "cb8bda6bdf881b21203bac5f5a24da7bc630425f",
932 | "shasum": ""
933 | },
934 | "require": {
935 | "ext-json": "*",
936 | "illuminate/collections": "^8.0",
937 | "illuminate/console": "^8.0",
938 | "illuminate/container": "^8.0",
939 | "illuminate/contracts": "^8.0",
940 | "illuminate/database": "^8.0",
941 | "illuminate/filesystem": "^8.0",
942 | "illuminate/pipeline": "^8.0",
943 | "illuminate/support": "^8.0",
944 | "opis/closure": "^3.6",
945 | "php": "^7.3|^8.0",
946 | "ramsey/uuid": "^4.0",
947 | "symfony/process": "^5.1.4"
948 | },
949 | "suggest": {
950 | "aws/aws-sdk-php": "Required to use the SQS queue driver and DynamoDb failed job storage (^3.155).",
951 | "ext-pcntl": "Required to use all features of the queue worker.",
952 | "ext-posix": "Required to use all features of the queue worker.",
953 | "illuminate/redis": "Required to use the Redis queue driver (^8.0).",
954 | "pda/pheanstalk": "Required to use the Beanstalk queue driver (^4.0)."
955 | },
956 | "type": "library",
957 | "extra": {
958 | "branch-alias": {
959 | "dev-master": "8.x-dev"
960 | }
961 | },
962 | "autoload": {
963 | "psr-4": {
964 | "Illuminate\\Queue\\": ""
965 | }
966 | },
967 | "notification-url": "https://packagist.org/downloads/",
968 | "license": [
969 | "MIT"
970 | ],
971 | "authors": [
972 | {
973 | "name": "Taylor Otwell",
974 | "email": "taylor@laravel.com"
975 | }
976 | ],
977 | "description": "The Illuminate Queue package.",
978 | "homepage": "https://laravel.com",
979 | "support": {
980 | "issues": "https://github.com/laravel/framework/issues",
981 | "source": "https://github.com/laravel/framework"
982 | },
983 | "time": "2021-06-30T15:39:25+00:00"
984 | },
985 | {
986 | "name": "illuminate/support",
987 | "version": "v8.49.2",
988 | "source": {
989 | "type": "git",
990 | "url": "https://github.com/illuminate/support.git",
991 | "reference": "0ecdbb8e61919e972c120c0956fb1c0a3b085967"
992 | },
993 | "dist": {
994 | "type": "zip",
995 | "url": "https://api.github.com/repos/illuminate/support/zipball/0ecdbb8e61919e972c120c0956fb1c0a3b085967",
996 | "reference": "0ecdbb8e61919e972c120c0956fb1c0a3b085967",
997 | "shasum": ""
998 | },
999 | "require": {
1000 | "doctrine/inflector": "^1.4|^2.0",
1001 | "ext-json": "*",
1002 | "ext-mbstring": "*",
1003 | "illuminate/collections": "^8.0",
1004 | "illuminate/contracts": "^8.0",
1005 | "illuminate/macroable": "^8.0",
1006 | "nesbot/carbon": "^2.31",
1007 | "php": "^7.3|^8.0",
1008 | "voku/portable-ascii": "^1.4.8"
1009 | },
1010 | "conflict": {
1011 | "tightenco/collect": "<5.5.33"
1012 | },
1013 | "suggest": {
1014 | "illuminate/filesystem": "Required to use the composer class (^8.0).",
1015 | "league/commonmark": "Required to use Str::markdown() and Stringable::markdown() (^1.3).",
1016 | "ramsey/uuid": "Required to use Str::uuid() (^4.0).",
1017 | "symfony/process": "Required to use the composer class (^5.1.4).",
1018 | "symfony/var-dumper": "Required to use the dd function (^5.1.4).",
1019 | "vlucas/phpdotenv": "Required to use the Env class and env helper (^5.2)."
1020 | },
1021 | "type": "library",
1022 | "extra": {
1023 | "branch-alias": {
1024 | "dev-master": "8.x-dev"
1025 | }
1026 | },
1027 | "autoload": {
1028 | "psr-4": {
1029 | "Illuminate\\Support\\": ""
1030 | },
1031 | "files": [
1032 | "helpers.php"
1033 | ]
1034 | },
1035 | "notification-url": "https://packagist.org/downloads/",
1036 | "license": [
1037 | "MIT"
1038 | ],
1039 | "authors": [
1040 | {
1041 | "name": "Taylor Otwell",
1042 | "email": "taylor@laravel.com"
1043 | }
1044 | ],
1045 | "description": "The Illuminate Support package.",
1046 | "homepage": "https://laravel.com",
1047 | "support": {
1048 | "issues": "https://github.com/laravel/framework/issues",
1049 | "source": "https://github.com/laravel/framework"
1050 | },
1051 | "time": "2021-07-02T16:40:19+00:00"
1052 | },
1053 | {
1054 | "name": "mtdowling/jmespath.php",
1055 | "version": "2.6.1",
1056 | "source": {
1057 | "type": "git",
1058 | "url": "https://github.com/jmespath/jmespath.php.git",
1059 | "reference": "9b87907a81b87bc76d19a7fb2d61e61486ee9edb"
1060 | },
1061 | "dist": {
1062 | "type": "zip",
1063 | "url": "https://api.github.com/repos/jmespath/jmespath.php/zipball/9b87907a81b87bc76d19a7fb2d61e61486ee9edb",
1064 | "reference": "9b87907a81b87bc76d19a7fb2d61e61486ee9edb",
1065 | "shasum": ""
1066 | },
1067 | "require": {
1068 | "php": "^5.4 || ^7.0 || ^8.0",
1069 | "symfony/polyfill-mbstring": "^1.17"
1070 | },
1071 | "require-dev": {
1072 | "composer/xdebug-handler": "^1.4 || ^2.0",
1073 | "phpunit/phpunit": "^4.8.36 || ^7.5.15"
1074 | },
1075 | "bin": [
1076 | "bin/jp.php"
1077 | ],
1078 | "type": "library",
1079 | "extra": {
1080 | "branch-alias": {
1081 | "dev-master": "2.6-dev"
1082 | }
1083 | },
1084 | "autoload": {
1085 | "psr-4": {
1086 | "JmesPath\\": "src/"
1087 | },
1088 | "files": [
1089 | "src/JmesPath.php"
1090 | ]
1091 | },
1092 | "notification-url": "https://packagist.org/downloads/",
1093 | "license": [
1094 | "MIT"
1095 | ],
1096 | "authors": [
1097 | {
1098 | "name": "Michael Dowling",
1099 | "email": "mtdowling@gmail.com",
1100 | "homepage": "https://github.com/mtdowling"
1101 | }
1102 | ],
1103 | "description": "Declaratively specify how to extract elements from a JSON document",
1104 | "keywords": [
1105 | "json",
1106 | "jsonpath"
1107 | ],
1108 | "support": {
1109 | "issues": "https://github.com/jmespath/jmespath.php/issues",
1110 | "source": "https://github.com/jmespath/jmespath.php/tree/2.6.1"
1111 | },
1112 | "time": "2021-06-14T00:11:39+00:00"
1113 | },
1114 | {
1115 | "name": "nesbot/carbon",
1116 | "version": "2.50.0",
1117 | "source": {
1118 | "type": "git",
1119 | "url": "https://github.com/briannesbitt/Carbon.git",
1120 | "reference": "f47f17d17602b2243414a44ad53d9f8b9ada5fdb"
1121 | },
1122 | "dist": {
1123 | "type": "zip",
1124 | "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/f47f17d17602b2243414a44ad53d9f8b9ada5fdb",
1125 | "reference": "f47f17d17602b2243414a44ad53d9f8b9ada5fdb",
1126 | "shasum": ""
1127 | },
1128 | "require": {
1129 | "ext-json": "*",
1130 | "php": "^7.1.8 || ^8.0",
1131 | "symfony/polyfill-mbstring": "^1.0",
1132 | "symfony/translation": "^3.4 || ^4.0 || ^5.0"
1133 | },
1134 | "require-dev": {
1135 | "doctrine/orm": "^2.7",
1136 | "friendsofphp/php-cs-fixer": "^2.14 || ^3.0",
1137 | "kylekatarnls/multi-tester": "^2.0",
1138 | "phpmd/phpmd": "^2.9",
1139 | "phpstan/extension-installer": "^1.0",
1140 | "phpstan/phpstan": "^0.12.54",
1141 | "phpunit/phpunit": "^7.5.20 || ^8.5.14",
1142 | "squizlabs/php_codesniffer": "^3.4"
1143 | },
1144 | "bin": [
1145 | "bin/carbon"
1146 | ],
1147 | "type": "library",
1148 | "extra": {
1149 | "branch-alias": {
1150 | "dev-master": "2.x-dev",
1151 | "dev-3.x": "3.x-dev"
1152 | },
1153 | "laravel": {
1154 | "providers": [
1155 | "Carbon\\Laravel\\ServiceProvider"
1156 | ]
1157 | },
1158 | "phpstan": {
1159 | "includes": [
1160 | "extension.neon"
1161 | ]
1162 | }
1163 | },
1164 | "autoload": {
1165 | "psr-4": {
1166 | "Carbon\\": "src/Carbon/"
1167 | }
1168 | },
1169 | "notification-url": "https://packagist.org/downloads/",
1170 | "license": [
1171 | "MIT"
1172 | ],
1173 | "authors": [
1174 | {
1175 | "name": "Brian Nesbitt",
1176 | "email": "brian@nesbot.com",
1177 | "homepage": "https://markido.com"
1178 | },
1179 | {
1180 | "name": "kylekatarnls",
1181 | "homepage": "https://github.com/kylekatarnls"
1182 | }
1183 | ],
1184 | "description": "An API extension for DateTime that supports 281 different languages.",
1185 | "homepage": "https://carbon.nesbot.com",
1186 | "keywords": [
1187 | "date",
1188 | "datetime",
1189 | "time"
1190 | ],
1191 | "support": {
1192 | "issues": "https://github.com/briannesbitt/Carbon/issues",
1193 | "source": "https://github.com/briannesbitt/Carbon"
1194 | },
1195 | "funding": [
1196 | {
1197 | "url": "https://opencollective.com/Carbon",
1198 | "type": "open_collective"
1199 | },
1200 | {
1201 | "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon",
1202 | "type": "tidelift"
1203 | }
1204 | ],
1205 | "time": "2021-06-28T22:38:45+00:00"
1206 | },
1207 | {
1208 | "name": "opis/closure",
1209 | "version": "3.6.2",
1210 | "source": {
1211 | "type": "git",
1212 | "url": "https://github.com/opis/closure.git",
1213 | "reference": "06e2ebd25f2869e54a306dda991f7db58066f7f6"
1214 | },
1215 | "dist": {
1216 | "type": "zip",
1217 | "url": "https://api.github.com/repos/opis/closure/zipball/06e2ebd25f2869e54a306dda991f7db58066f7f6",
1218 | "reference": "06e2ebd25f2869e54a306dda991f7db58066f7f6",
1219 | "shasum": ""
1220 | },
1221 | "require": {
1222 | "php": "^5.4 || ^7.0 || ^8.0"
1223 | },
1224 | "require-dev": {
1225 | "jeremeamia/superclosure": "^2.0",
1226 | "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0"
1227 | },
1228 | "type": "library",
1229 | "extra": {
1230 | "branch-alias": {
1231 | "dev-master": "3.6.x-dev"
1232 | }
1233 | },
1234 | "autoload": {
1235 | "psr-4": {
1236 | "Opis\\Closure\\": "src/"
1237 | },
1238 | "files": [
1239 | "functions.php"
1240 | ]
1241 | },
1242 | "notification-url": "https://packagist.org/downloads/",
1243 | "license": [
1244 | "MIT"
1245 | ],
1246 | "authors": [
1247 | {
1248 | "name": "Marius Sarca",
1249 | "email": "marius.sarca@gmail.com"
1250 | },
1251 | {
1252 | "name": "Sorin Sarca",
1253 | "email": "sarca_sorin@hotmail.com"
1254 | }
1255 | ],
1256 | "description": "A library that can be used to serialize closures (anonymous functions) and arbitrary objects.",
1257 | "homepage": "https://opis.io/closure",
1258 | "keywords": [
1259 | "anonymous functions",
1260 | "closure",
1261 | "function",
1262 | "serializable",
1263 | "serialization",
1264 | "serialize"
1265 | ],
1266 | "support": {
1267 | "issues": "https://github.com/opis/closure/issues",
1268 | "source": "https://github.com/opis/closure/tree/3.6.2"
1269 | },
1270 | "time": "2021-04-09T13:42:10+00:00"
1271 | },
1272 | {
1273 | "name": "psr/container",
1274 | "version": "1.1.1",
1275 | "source": {
1276 | "type": "git",
1277 | "url": "https://github.com/php-fig/container.git",
1278 | "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf"
1279 | },
1280 | "dist": {
1281 | "type": "zip",
1282 | "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf",
1283 | "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf",
1284 | "shasum": ""
1285 | },
1286 | "require": {
1287 | "php": ">=7.2.0"
1288 | },
1289 | "type": "library",
1290 | "autoload": {
1291 | "psr-4": {
1292 | "Psr\\Container\\": "src/"
1293 | }
1294 | },
1295 | "notification-url": "https://packagist.org/downloads/",
1296 | "license": [
1297 | "MIT"
1298 | ],
1299 | "authors": [
1300 | {
1301 | "name": "PHP-FIG",
1302 | "homepage": "https://www.php-fig.org/"
1303 | }
1304 | ],
1305 | "description": "Common Container Interface (PHP FIG PSR-11)",
1306 | "homepage": "https://github.com/php-fig/container",
1307 | "keywords": [
1308 | "PSR-11",
1309 | "container",
1310 | "container-interface",
1311 | "container-interop",
1312 | "psr"
1313 | ],
1314 | "support": {
1315 | "issues": "https://github.com/php-fig/container/issues",
1316 | "source": "https://github.com/php-fig/container/tree/1.1.1"
1317 | },
1318 | "time": "2021-03-05T17:36:06+00:00"
1319 | },
1320 | {
1321 | "name": "psr/http-client",
1322 | "version": "1.0.1",
1323 | "source": {
1324 | "type": "git",
1325 | "url": "https://github.com/php-fig/http-client.git",
1326 | "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621"
1327 | },
1328 | "dist": {
1329 | "type": "zip",
1330 | "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621",
1331 | "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621",
1332 | "shasum": ""
1333 | },
1334 | "require": {
1335 | "php": "^7.0 || ^8.0",
1336 | "psr/http-message": "^1.0"
1337 | },
1338 | "type": "library",
1339 | "extra": {
1340 | "branch-alias": {
1341 | "dev-master": "1.0.x-dev"
1342 | }
1343 | },
1344 | "autoload": {
1345 | "psr-4": {
1346 | "Psr\\Http\\Client\\": "src/"
1347 | }
1348 | },
1349 | "notification-url": "https://packagist.org/downloads/",
1350 | "license": [
1351 | "MIT"
1352 | ],
1353 | "authors": [
1354 | {
1355 | "name": "PHP-FIG",
1356 | "homepage": "http://www.php-fig.org/"
1357 | }
1358 | ],
1359 | "description": "Common interface for HTTP clients",
1360 | "homepage": "https://github.com/php-fig/http-client",
1361 | "keywords": [
1362 | "http",
1363 | "http-client",
1364 | "psr",
1365 | "psr-18"
1366 | ],
1367 | "support": {
1368 | "source": "https://github.com/php-fig/http-client/tree/master"
1369 | },
1370 | "time": "2020-06-29T06:28:15+00:00"
1371 | },
1372 | {
1373 | "name": "psr/http-message",
1374 | "version": "1.0.1",
1375 | "source": {
1376 | "type": "git",
1377 | "url": "https://github.com/php-fig/http-message.git",
1378 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
1379 | },
1380 | "dist": {
1381 | "type": "zip",
1382 | "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
1383 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
1384 | "shasum": ""
1385 | },
1386 | "require": {
1387 | "php": ">=5.3.0"
1388 | },
1389 | "type": "library",
1390 | "extra": {
1391 | "branch-alias": {
1392 | "dev-master": "1.0.x-dev"
1393 | }
1394 | },
1395 | "autoload": {
1396 | "psr-4": {
1397 | "Psr\\Http\\Message\\": "src/"
1398 | }
1399 | },
1400 | "notification-url": "https://packagist.org/downloads/",
1401 | "license": [
1402 | "MIT"
1403 | ],
1404 | "authors": [
1405 | {
1406 | "name": "PHP-FIG",
1407 | "homepage": "http://www.php-fig.org/"
1408 | }
1409 | ],
1410 | "description": "Common interface for HTTP messages",
1411 | "homepage": "https://github.com/php-fig/http-message",
1412 | "keywords": [
1413 | "http",
1414 | "http-message",
1415 | "psr",
1416 | "psr-7",
1417 | "request",
1418 | "response"
1419 | ],
1420 | "support": {
1421 | "source": "https://github.com/php-fig/http-message/tree/master"
1422 | },
1423 | "time": "2016-08-06T14:39:51+00:00"
1424 | },
1425 | {
1426 | "name": "psr/simple-cache",
1427 | "version": "1.0.1",
1428 | "source": {
1429 | "type": "git",
1430 | "url": "https://github.com/php-fig/simple-cache.git",
1431 | "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b"
1432 | },
1433 | "dist": {
1434 | "type": "zip",
1435 | "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b",
1436 | "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b",
1437 | "shasum": ""
1438 | },
1439 | "require": {
1440 | "php": ">=5.3.0"
1441 | },
1442 | "type": "library",
1443 | "extra": {
1444 | "branch-alias": {
1445 | "dev-master": "1.0.x-dev"
1446 | }
1447 | },
1448 | "autoload": {
1449 | "psr-4": {
1450 | "Psr\\SimpleCache\\": "src/"
1451 | }
1452 | },
1453 | "notification-url": "https://packagist.org/downloads/",
1454 | "license": [
1455 | "MIT"
1456 | ],
1457 | "authors": [
1458 | {
1459 | "name": "PHP-FIG",
1460 | "homepage": "http://www.php-fig.org/"
1461 | }
1462 | ],
1463 | "description": "Common interfaces for simple caching",
1464 | "keywords": [
1465 | "cache",
1466 | "caching",
1467 | "psr",
1468 | "psr-16",
1469 | "simple-cache"
1470 | ],
1471 | "support": {
1472 | "source": "https://github.com/php-fig/simple-cache/tree/master"
1473 | },
1474 | "time": "2017-10-23T01:57:42+00:00"
1475 | },
1476 | {
1477 | "name": "ralouphie/getallheaders",
1478 | "version": "3.0.3",
1479 | "source": {
1480 | "type": "git",
1481 | "url": "https://github.com/ralouphie/getallheaders.git",
1482 | "reference": "120b605dfeb996808c31b6477290a714d356e822"
1483 | },
1484 | "dist": {
1485 | "type": "zip",
1486 | "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
1487 | "reference": "120b605dfeb996808c31b6477290a714d356e822",
1488 | "shasum": ""
1489 | },
1490 | "require": {
1491 | "php": ">=5.6"
1492 | },
1493 | "require-dev": {
1494 | "php-coveralls/php-coveralls": "^2.1",
1495 | "phpunit/phpunit": "^5 || ^6.5"
1496 | },
1497 | "type": "library",
1498 | "autoload": {
1499 | "files": [
1500 | "src/getallheaders.php"
1501 | ]
1502 | },
1503 | "notification-url": "https://packagist.org/downloads/",
1504 | "license": [
1505 | "MIT"
1506 | ],
1507 | "authors": [
1508 | {
1509 | "name": "Ralph Khattar",
1510 | "email": "ralph.khattar@gmail.com"
1511 | }
1512 | ],
1513 | "description": "A polyfill for getallheaders.",
1514 | "support": {
1515 | "issues": "https://github.com/ralouphie/getallheaders/issues",
1516 | "source": "https://github.com/ralouphie/getallheaders/tree/develop"
1517 | },
1518 | "time": "2019-03-08T08:55:37+00:00"
1519 | },
1520 | {
1521 | "name": "ramsey/collection",
1522 | "version": "1.1.3",
1523 | "source": {
1524 | "type": "git",
1525 | "url": "https://github.com/ramsey/collection.git",
1526 | "reference": "28a5c4ab2f5111db6a60b2b4ec84057e0f43b9c1"
1527 | },
1528 | "dist": {
1529 | "type": "zip",
1530 | "url": "https://api.github.com/repos/ramsey/collection/zipball/28a5c4ab2f5111db6a60b2b4ec84057e0f43b9c1",
1531 | "reference": "28a5c4ab2f5111db6a60b2b4ec84057e0f43b9c1",
1532 | "shasum": ""
1533 | },
1534 | "require": {
1535 | "php": "^7.2 || ^8"
1536 | },
1537 | "require-dev": {
1538 | "captainhook/captainhook": "^5.3",
1539 | "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0",
1540 | "ergebnis/composer-normalize": "^2.6",
1541 | "fakerphp/faker": "^1.5",
1542 | "hamcrest/hamcrest-php": "^2",
1543 | "jangregor/phpstan-prophecy": "^0.8",
1544 | "mockery/mockery": "^1.3",
1545 | "phpstan/extension-installer": "^1",
1546 | "phpstan/phpstan": "^0.12.32",
1547 | "phpstan/phpstan-mockery": "^0.12.5",
1548 | "phpstan/phpstan-phpunit": "^0.12.11",
1549 | "phpunit/phpunit": "^8.5 || ^9",
1550 | "psy/psysh": "^0.10.4",
1551 | "slevomat/coding-standard": "^6.3",
1552 | "squizlabs/php_codesniffer": "^3.5",
1553 | "vimeo/psalm": "^4.4"
1554 | },
1555 | "type": "library",
1556 | "autoload": {
1557 | "psr-4": {
1558 | "Ramsey\\Collection\\": "src/"
1559 | }
1560 | },
1561 | "notification-url": "https://packagist.org/downloads/",
1562 | "license": [
1563 | "MIT"
1564 | ],
1565 | "authors": [
1566 | {
1567 | "name": "Ben Ramsey",
1568 | "email": "ben@benramsey.com",
1569 | "homepage": "https://benramsey.com"
1570 | }
1571 | ],
1572 | "description": "A PHP 7.2+ library for representing and manipulating collections.",
1573 | "keywords": [
1574 | "array",
1575 | "collection",
1576 | "hash",
1577 | "map",
1578 | "queue",
1579 | "set"
1580 | ],
1581 | "support": {
1582 | "issues": "https://github.com/ramsey/collection/issues",
1583 | "source": "https://github.com/ramsey/collection/tree/1.1.3"
1584 | },
1585 | "funding": [
1586 | {
1587 | "url": "https://github.com/ramsey",
1588 | "type": "github"
1589 | },
1590 | {
1591 | "url": "https://tidelift.com/funding/github/packagist/ramsey/collection",
1592 | "type": "tidelift"
1593 | }
1594 | ],
1595 | "time": "2021-01-21T17:40:04+00:00"
1596 | },
1597 | {
1598 | "name": "ramsey/uuid",
1599 | "version": "4.1.1",
1600 | "source": {
1601 | "type": "git",
1602 | "url": "https://github.com/ramsey/uuid.git",
1603 | "reference": "cd4032040a750077205918c86049aa0f43d22947"
1604 | },
1605 | "dist": {
1606 | "type": "zip",
1607 | "url": "https://api.github.com/repos/ramsey/uuid/zipball/cd4032040a750077205918c86049aa0f43d22947",
1608 | "reference": "cd4032040a750077205918c86049aa0f43d22947",
1609 | "shasum": ""
1610 | },
1611 | "require": {
1612 | "brick/math": "^0.8 || ^0.9",
1613 | "ext-json": "*",
1614 | "php": "^7.2 || ^8",
1615 | "ramsey/collection": "^1.0",
1616 | "symfony/polyfill-ctype": "^1.8"
1617 | },
1618 | "replace": {
1619 | "rhumsaa/uuid": "self.version"
1620 | },
1621 | "require-dev": {
1622 | "codeception/aspect-mock": "^3",
1623 | "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7.0",
1624 | "doctrine/annotations": "^1.8",
1625 | "goaop/framework": "^2",
1626 | "mockery/mockery": "^1.3",
1627 | "moontoast/math": "^1.1",
1628 | "paragonie/random-lib": "^2",
1629 | "php-mock/php-mock-mockery": "^1.3",
1630 | "php-mock/php-mock-phpunit": "^2.5",
1631 | "php-parallel-lint/php-parallel-lint": "^1.1",
1632 | "phpbench/phpbench": "^0.17.1",
1633 | "phpstan/extension-installer": "^1.0",
1634 | "phpstan/phpstan": "^0.12",
1635 | "phpstan/phpstan-mockery": "^0.12",
1636 | "phpstan/phpstan-phpunit": "^0.12",
1637 | "phpunit/phpunit": "^8.5",
1638 | "psy/psysh": "^0.10.0",
1639 | "slevomat/coding-standard": "^6.0",
1640 | "squizlabs/php_codesniffer": "^3.5",
1641 | "vimeo/psalm": "3.9.4"
1642 | },
1643 | "suggest": {
1644 | "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.",
1645 | "ext-ctype": "Enables faster processing of character classification using ctype functions.",
1646 | "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.",
1647 | "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.",
1648 | "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter",
1649 | "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type."
1650 | },
1651 | "type": "library",
1652 | "extra": {
1653 | "branch-alias": {
1654 | "dev-master": "4.x-dev"
1655 | }
1656 | },
1657 | "autoload": {
1658 | "psr-4": {
1659 | "Ramsey\\Uuid\\": "src/"
1660 | },
1661 | "files": [
1662 | "src/functions.php"
1663 | ]
1664 | },
1665 | "notification-url": "https://packagist.org/downloads/",
1666 | "license": [
1667 | "MIT"
1668 | ],
1669 | "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).",
1670 | "homepage": "https://github.com/ramsey/uuid",
1671 | "keywords": [
1672 | "guid",
1673 | "identifier",
1674 | "uuid"
1675 | ],
1676 | "support": {
1677 | "issues": "https://github.com/ramsey/uuid/issues",
1678 | "rss": "https://github.com/ramsey/uuid/releases.atom",
1679 | "source": "https://github.com/ramsey/uuid"
1680 | },
1681 | "funding": [
1682 | {
1683 | "url": "https://github.com/ramsey",
1684 | "type": "github"
1685 | }
1686 | ],
1687 | "time": "2020-08-18T17:17:46+00:00"
1688 | },
1689 | {
1690 | "name": "symfony/console",
1691 | "version": "v5.3.2",
1692 | "source": {
1693 | "type": "git",
1694 | "url": "https://github.com/symfony/console.git",
1695 | "reference": "649730483885ff2ca99ca0560ef0e5f6b03f2ac1"
1696 | },
1697 | "dist": {
1698 | "type": "zip",
1699 | "url": "https://api.github.com/repos/symfony/console/zipball/649730483885ff2ca99ca0560ef0e5f6b03f2ac1",
1700 | "reference": "649730483885ff2ca99ca0560ef0e5f6b03f2ac1",
1701 | "shasum": ""
1702 | },
1703 | "require": {
1704 | "php": ">=7.2.5",
1705 | "symfony/deprecation-contracts": "^2.1",
1706 | "symfony/polyfill-mbstring": "~1.0",
1707 | "symfony/polyfill-php73": "^1.8",
1708 | "symfony/polyfill-php80": "^1.15",
1709 | "symfony/service-contracts": "^1.1|^2",
1710 | "symfony/string": "^5.1"
1711 | },
1712 | "conflict": {
1713 | "symfony/dependency-injection": "<4.4",
1714 | "symfony/dotenv": "<5.1",
1715 | "symfony/event-dispatcher": "<4.4",
1716 | "symfony/lock": "<4.4",
1717 | "symfony/process": "<4.4"
1718 | },
1719 | "provide": {
1720 | "psr/log-implementation": "1.0"
1721 | },
1722 | "require-dev": {
1723 | "psr/log": "~1.0",
1724 | "symfony/config": "^4.4|^5.0",
1725 | "symfony/dependency-injection": "^4.4|^5.0",
1726 | "symfony/event-dispatcher": "^4.4|^5.0",
1727 | "symfony/lock": "^4.4|^5.0",
1728 | "symfony/process": "^4.4|^5.0",
1729 | "symfony/var-dumper": "^4.4|^5.0"
1730 | },
1731 | "suggest": {
1732 | "psr/log": "For using the console logger",
1733 | "symfony/event-dispatcher": "",
1734 | "symfony/lock": "",
1735 | "symfony/process": ""
1736 | },
1737 | "type": "library",
1738 | "autoload": {
1739 | "psr-4": {
1740 | "Symfony\\Component\\Console\\": ""
1741 | },
1742 | "exclude-from-classmap": [
1743 | "/Tests/"
1744 | ]
1745 | },
1746 | "notification-url": "https://packagist.org/downloads/",
1747 | "license": [
1748 | "MIT"
1749 | ],
1750 | "authors": [
1751 | {
1752 | "name": "Fabien Potencier",
1753 | "email": "fabien@symfony.com"
1754 | },
1755 | {
1756 | "name": "Symfony Community",
1757 | "homepage": "https://symfony.com/contributors"
1758 | }
1759 | ],
1760 | "description": "Eases the creation of beautiful and testable command line interfaces",
1761 | "homepage": "https://symfony.com",
1762 | "keywords": [
1763 | "cli",
1764 | "command line",
1765 | "console",
1766 | "terminal"
1767 | ],
1768 | "support": {
1769 | "source": "https://github.com/symfony/console/tree/v5.3.2"
1770 | },
1771 | "funding": [
1772 | {
1773 | "url": "https://symfony.com/sponsor",
1774 | "type": "custom"
1775 | },
1776 | {
1777 | "url": "https://github.com/fabpot",
1778 | "type": "github"
1779 | },
1780 | {
1781 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
1782 | "type": "tidelift"
1783 | }
1784 | ],
1785 | "time": "2021-06-12T09:42:48+00:00"
1786 | },
1787 | {
1788 | "name": "symfony/deprecation-contracts",
1789 | "version": "v2.4.0",
1790 | "source": {
1791 | "type": "git",
1792 | "url": "https://github.com/symfony/deprecation-contracts.git",
1793 | "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627"
1794 | },
1795 | "dist": {
1796 | "type": "zip",
1797 | "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5f38c8804a9e97d23e0c8d63341088cd8a22d627",
1798 | "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627",
1799 | "shasum": ""
1800 | },
1801 | "require": {
1802 | "php": ">=7.1"
1803 | },
1804 | "type": "library",
1805 | "extra": {
1806 | "branch-alias": {
1807 | "dev-main": "2.4-dev"
1808 | },
1809 | "thanks": {
1810 | "name": "symfony/contracts",
1811 | "url": "https://github.com/symfony/contracts"
1812 | }
1813 | },
1814 | "autoload": {
1815 | "files": [
1816 | "function.php"
1817 | ]
1818 | },
1819 | "notification-url": "https://packagist.org/downloads/",
1820 | "license": [
1821 | "MIT"
1822 | ],
1823 | "authors": [
1824 | {
1825 | "name": "Nicolas Grekas",
1826 | "email": "p@tchwork.com"
1827 | },
1828 | {
1829 | "name": "Symfony Community",
1830 | "homepage": "https://symfony.com/contributors"
1831 | }
1832 | ],
1833 | "description": "A generic function and convention to trigger deprecation notices",
1834 | "homepage": "https://symfony.com",
1835 | "support": {
1836 | "source": "https://github.com/symfony/deprecation-contracts/tree/v2.4.0"
1837 | },
1838 | "funding": [
1839 | {
1840 | "url": "https://symfony.com/sponsor",
1841 | "type": "custom"
1842 | },
1843 | {
1844 | "url": "https://github.com/fabpot",
1845 | "type": "github"
1846 | },
1847 | {
1848 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
1849 | "type": "tidelift"
1850 | }
1851 | ],
1852 | "time": "2021-03-23T23:28:01+00:00"
1853 | },
1854 | {
1855 | "name": "symfony/finder",
1856 | "version": "v5.3.0",
1857 | "source": {
1858 | "type": "git",
1859 | "url": "https://github.com/symfony/finder.git",
1860 | "reference": "0ae3f047bed4edff6fd35b26a9a6bfdc92c953c6"
1861 | },
1862 | "dist": {
1863 | "type": "zip",
1864 | "url": "https://api.github.com/repos/symfony/finder/zipball/0ae3f047bed4edff6fd35b26a9a6bfdc92c953c6",
1865 | "reference": "0ae3f047bed4edff6fd35b26a9a6bfdc92c953c6",
1866 | "shasum": ""
1867 | },
1868 | "require": {
1869 | "php": ">=7.2.5"
1870 | },
1871 | "type": "library",
1872 | "autoload": {
1873 | "psr-4": {
1874 | "Symfony\\Component\\Finder\\": ""
1875 | },
1876 | "exclude-from-classmap": [
1877 | "/Tests/"
1878 | ]
1879 | },
1880 | "notification-url": "https://packagist.org/downloads/",
1881 | "license": [
1882 | "MIT"
1883 | ],
1884 | "authors": [
1885 | {
1886 | "name": "Fabien Potencier",
1887 | "email": "fabien@symfony.com"
1888 | },
1889 | {
1890 | "name": "Symfony Community",
1891 | "homepage": "https://symfony.com/contributors"
1892 | }
1893 | ],
1894 | "description": "Finds files and directories via an intuitive fluent interface",
1895 | "homepage": "https://symfony.com",
1896 | "support": {
1897 | "source": "https://github.com/symfony/finder/tree/v5.3.0"
1898 | },
1899 | "funding": [
1900 | {
1901 | "url": "https://symfony.com/sponsor",
1902 | "type": "custom"
1903 | },
1904 | {
1905 | "url": "https://github.com/fabpot",
1906 | "type": "github"
1907 | },
1908 | {
1909 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
1910 | "type": "tidelift"
1911 | }
1912 | ],
1913 | "time": "2021-05-26T12:52:38+00:00"
1914 | },
1915 | {
1916 | "name": "symfony/polyfill-ctype",
1917 | "version": "v1.23.0",
1918 | "source": {
1919 | "type": "git",
1920 | "url": "https://github.com/symfony/polyfill-ctype.git",
1921 | "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce"
1922 | },
1923 | "dist": {
1924 | "type": "zip",
1925 | "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/46cd95797e9df938fdd2b03693b5fca5e64b01ce",
1926 | "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce",
1927 | "shasum": ""
1928 | },
1929 | "require": {
1930 | "php": ">=7.1"
1931 | },
1932 | "suggest": {
1933 | "ext-ctype": "For best performance"
1934 | },
1935 | "type": "library",
1936 | "extra": {
1937 | "branch-alias": {
1938 | "dev-main": "1.23-dev"
1939 | },
1940 | "thanks": {
1941 | "name": "symfony/polyfill",
1942 | "url": "https://github.com/symfony/polyfill"
1943 | }
1944 | },
1945 | "autoload": {
1946 | "psr-4": {
1947 | "Symfony\\Polyfill\\Ctype\\": ""
1948 | },
1949 | "files": [
1950 | "bootstrap.php"
1951 | ]
1952 | },
1953 | "notification-url": "https://packagist.org/downloads/",
1954 | "license": [
1955 | "MIT"
1956 | ],
1957 | "authors": [
1958 | {
1959 | "name": "Gert de Pagter",
1960 | "email": "BackEndTea@gmail.com"
1961 | },
1962 | {
1963 | "name": "Symfony Community",
1964 | "homepage": "https://symfony.com/contributors"
1965 | }
1966 | ],
1967 | "description": "Symfony polyfill for ctype functions",
1968 | "homepage": "https://symfony.com",
1969 | "keywords": [
1970 | "compatibility",
1971 | "ctype",
1972 | "polyfill",
1973 | "portable"
1974 | ],
1975 | "support": {
1976 | "source": "https://github.com/symfony/polyfill-ctype/tree/v1.23.0"
1977 | },
1978 | "funding": [
1979 | {
1980 | "url": "https://symfony.com/sponsor",
1981 | "type": "custom"
1982 | },
1983 | {
1984 | "url": "https://github.com/fabpot",
1985 | "type": "github"
1986 | },
1987 | {
1988 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
1989 | "type": "tidelift"
1990 | }
1991 | ],
1992 | "time": "2021-02-19T12:13:01+00:00"
1993 | },
1994 | {
1995 | "name": "symfony/polyfill-intl-grapheme",
1996 | "version": "v1.23.0",
1997 | "source": {
1998 | "type": "git",
1999 | "url": "https://github.com/symfony/polyfill-intl-grapheme.git",
2000 | "reference": "24b72c6baa32c746a4d0840147c9715e42bb68ab"
2001 | },
2002 | "dist": {
2003 | "type": "zip",
2004 | "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/24b72c6baa32c746a4d0840147c9715e42bb68ab",
2005 | "reference": "24b72c6baa32c746a4d0840147c9715e42bb68ab",
2006 | "shasum": ""
2007 | },
2008 | "require": {
2009 | "php": ">=7.1"
2010 | },
2011 | "suggest": {
2012 | "ext-intl": "For best performance"
2013 | },
2014 | "type": "library",
2015 | "extra": {
2016 | "branch-alias": {
2017 | "dev-main": "1.23-dev"
2018 | },
2019 | "thanks": {
2020 | "name": "symfony/polyfill",
2021 | "url": "https://github.com/symfony/polyfill"
2022 | }
2023 | },
2024 | "autoload": {
2025 | "psr-4": {
2026 | "Symfony\\Polyfill\\Intl\\Grapheme\\": ""
2027 | },
2028 | "files": [
2029 | "bootstrap.php"
2030 | ]
2031 | },
2032 | "notification-url": "https://packagist.org/downloads/",
2033 | "license": [
2034 | "MIT"
2035 | ],
2036 | "authors": [
2037 | {
2038 | "name": "Nicolas Grekas",
2039 | "email": "p@tchwork.com"
2040 | },
2041 | {
2042 | "name": "Symfony Community",
2043 | "homepage": "https://symfony.com/contributors"
2044 | }
2045 | ],
2046 | "description": "Symfony polyfill for intl's grapheme_* functions",
2047 | "homepage": "https://symfony.com",
2048 | "keywords": [
2049 | "compatibility",
2050 | "grapheme",
2051 | "intl",
2052 | "polyfill",
2053 | "portable",
2054 | "shim"
2055 | ],
2056 | "support": {
2057 | "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.23.0"
2058 | },
2059 | "funding": [
2060 | {
2061 | "url": "https://symfony.com/sponsor",
2062 | "type": "custom"
2063 | },
2064 | {
2065 | "url": "https://github.com/fabpot",
2066 | "type": "github"
2067 | },
2068 | {
2069 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
2070 | "type": "tidelift"
2071 | }
2072 | ],
2073 | "time": "2021-05-27T09:17:38+00:00"
2074 | },
2075 | {
2076 | "name": "symfony/polyfill-intl-normalizer",
2077 | "version": "v1.23.0",
2078 | "source": {
2079 | "type": "git",
2080 | "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
2081 | "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8"
2082 | },
2083 | "dist": {
2084 | "type": "zip",
2085 | "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8",
2086 | "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8",
2087 | "shasum": ""
2088 | },
2089 | "require": {
2090 | "php": ">=7.1"
2091 | },
2092 | "suggest": {
2093 | "ext-intl": "For best performance"
2094 | },
2095 | "type": "library",
2096 | "extra": {
2097 | "branch-alias": {
2098 | "dev-main": "1.23-dev"
2099 | },
2100 | "thanks": {
2101 | "name": "symfony/polyfill",
2102 | "url": "https://github.com/symfony/polyfill"
2103 | }
2104 | },
2105 | "autoload": {
2106 | "psr-4": {
2107 | "Symfony\\Polyfill\\Intl\\Normalizer\\": ""
2108 | },
2109 | "files": [
2110 | "bootstrap.php"
2111 | ],
2112 | "classmap": [
2113 | "Resources/stubs"
2114 | ]
2115 | },
2116 | "notification-url": "https://packagist.org/downloads/",
2117 | "license": [
2118 | "MIT"
2119 | ],
2120 | "authors": [
2121 | {
2122 | "name": "Nicolas Grekas",
2123 | "email": "p@tchwork.com"
2124 | },
2125 | {
2126 | "name": "Symfony Community",
2127 | "homepage": "https://symfony.com/contributors"
2128 | }
2129 | ],
2130 | "description": "Symfony polyfill for intl's Normalizer class and related functions",
2131 | "homepage": "https://symfony.com",
2132 | "keywords": [
2133 | "compatibility",
2134 | "intl",
2135 | "normalizer",
2136 | "polyfill",
2137 | "portable",
2138 | "shim"
2139 | ],
2140 | "support": {
2141 | "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.23.0"
2142 | },
2143 | "funding": [
2144 | {
2145 | "url": "https://symfony.com/sponsor",
2146 | "type": "custom"
2147 | },
2148 | {
2149 | "url": "https://github.com/fabpot",
2150 | "type": "github"
2151 | },
2152 | {
2153 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
2154 | "type": "tidelift"
2155 | }
2156 | ],
2157 | "time": "2021-02-19T12:13:01+00:00"
2158 | },
2159 | {
2160 | "name": "symfony/polyfill-mbstring",
2161 | "version": "v1.23.0",
2162 | "source": {
2163 | "type": "git",
2164 | "url": "https://github.com/symfony/polyfill-mbstring.git",
2165 | "reference": "2df51500adbaebdc4c38dea4c89a2e131c45c8a1"
2166 | },
2167 | "dist": {
2168 | "type": "zip",
2169 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/2df51500adbaebdc4c38dea4c89a2e131c45c8a1",
2170 | "reference": "2df51500adbaebdc4c38dea4c89a2e131c45c8a1",
2171 | "shasum": ""
2172 | },
2173 | "require": {
2174 | "php": ">=7.1"
2175 | },
2176 | "suggest": {
2177 | "ext-mbstring": "For best performance"
2178 | },
2179 | "type": "library",
2180 | "extra": {
2181 | "branch-alias": {
2182 | "dev-main": "1.23-dev"
2183 | },
2184 | "thanks": {
2185 | "name": "symfony/polyfill",
2186 | "url": "https://github.com/symfony/polyfill"
2187 | }
2188 | },
2189 | "autoload": {
2190 | "psr-4": {
2191 | "Symfony\\Polyfill\\Mbstring\\": ""
2192 | },
2193 | "files": [
2194 | "bootstrap.php"
2195 | ]
2196 | },
2197 | "notification-url": "https://packagist.org/downloads/",
2198 | "license": [
2199 | "MIT"
2200 | ],
2201 | "authors": [
2202 | {
2203 | "name": "Nicolas Grekas",
2204 | "email": "p@tchwork.com"
2205 | },
2206 | {
2207 | "name": "Symfony Community",
2208 | "homepage": "https://symfony.com/contributors"
2209 | }
2210 | ],
2211 | "description": "Symfony polyfill for the Mbstring extension",
2212 | "homepage": "https://symfony.com",
2213 | "keywords": [
2214 | "compatibility",
2215 | "mbstring",
2216 | "polyfill",
2217 | "portable",
2218 | "shim"
2219 | ],
2220 | "support": {
2221 | "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.0"
2222 | },
2223 | "funding": [
2224 | {
2225 | "url": "https://symfony.com/sponsor",
2226 | "type": "custom"
2227 | },
2228 | {
2229 | "url": "https://github.com/fabpot",
2230 | "type": "github"
2231 | },
2232 | {
2233 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
2234 | "type": "tidelift"
2235 | }
2236 | ],
2237 | "time": "2021-05-27T09:27:20+00:00"
2238 | },
2239 | {
2240 | "name": "symfony/polyfill-php73",
2241 | "version": "v1.23.0",
2242 | "source": {
2243 | "type": "git",
2244 | "url": "https://github.com/symfony/polyfill-php73.git",
2245 | "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010"
2246 | },
2247 | "dist": {
2248 | "type": "zip",
2249 | "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fba8933c384d6476ab14fb7b8526e5287ca7e010",
2250 | "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010",
2251 | "shasum": ""
2252 | },
2253 | "require": {
2254 | "php": ">=7.1"
2255 | },
2256 | "type": "library",
2257 | "extra": {
2258 | "branch-alias": {
2259 | "dev-main": "1.23-dev"
2260 | },
2261 | "thanks": {
2262 | "name": "symfony/polyfill",
2263 | "url": "https://github.com/symfony/polyfill"
2264 | }
2265 | },
2266 | "autoload": {
2267 | "psr-4": {
2268 | "Symfony\\Polyfill\\Php73\\": ""
2269 | },
2270 | "files": [
2271 | "bootstrap.php"
2272 | ],
2273 | "classmap": [
2274 | "Resources/stubs"
2275 | ]
2276 | },
2277 | "notification-url": "https://packagist.org/downloads/",
2278 | "license": [
2279 | "MIT"
2280 | ],
2281 | "authors": [
2282 | {
2283 | "name": "Nicolas Grekas",
2284 | "email": "p@tchwork.com"
2285 | },
2286 | {
2287 | "name": "Symfony Community",
2288 | "homepage": "https://symfony.com/contributors"
2289 | }
2290 | ],
2291 | "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions",
2292 | "homepage": "https://symfony.com",
2293 | "keywords": [
2294 | "compatibility",
2295 | "polyfill",
2296 | "portable",
2297 | "shim"
2298 | ],
2299 | "support": {
2300 | "source": "https://github.com/symfony/polyfill-php73/tree/v1.23.0"
2301 | },
2302 | "funding": [
2303 | {
2304 | "url": "https://symfony.com/sponsor",
2305 | "type": "custom"
2306 | },
2307 | {
2308 | "url": "https://github.com/fabpot",
2309 | "type": "github"
2310 | },
2311 | {
2312 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
2313 | "type": "tidelift"
2314 | }
2315 | ],
2316 | "time": "2021-02-19T12:13:01+00:00"
2317 | },
2318 | {
2319 | "name": "symfony/polyfill-php80",
2320 | "version": "v1.23.0",
2321 | "source": {
2322 | "type": "git",
2323 | "url": "https://github.com/symfony/polyfill-php80.git",
2324 | "reference": "eca0bf41ed421bed1b57c4958bab16aa86b757d0"
2325 | },
2326 | "dist": {
2327 | "type": "zip",
2328 | "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/eca0bf41ed421bed1b57c4958bab16aa86b757d0",
2329 | "reference": "eca0bf41ed421bed1b57c4958bab16aa86b757d0",
2330 | "shasum": ""
2331 | },
2332 | "require": {
2333 | "php": ">=7.1"
2334 | },
2335 | "type": "library",
2336 | "extra": {
2337 | "branch-alias": {
2338 | "dev-main": "1.23-dev"
2339 | },
2340 | "thanks": {
2341 | "name": "symfony/polyfill",
2342 | "url": "https://github.com/symfony/polyfill"
2343 | }
2344 | },
2345 | "autoload": {
2346 | "psr-4": {
2347 | "Symfony\\Polyfill\\Php80\\": ""
2348 | },
2349 | "files": [
2350 | "bootstrap.php"
2351 | ],
2352 | "classmap": [
2353 | "Resources/stubs"
2354 | ]
2355 | },
2356 | "notification-url": "https://packagist.org/downloads/",
2357 | "license": [
2358 | "MIT"
2359 | ],
2360 | "authors": [
2361 | {
2362 | "name": "Ion Bazan",
2363 | "email": "ion.bazan@gmail.com"
2364 | },
2365 | {
2366 | "name": "Nicolas Grekas",
2367 | "email": "p@tchwork.com"
2368 | },
2369 | {
2370 | "name": "Symfony Community",
2371 | "homepage": "https://symfony.com/contributors"
2372 | }
2373 | ],
2374 | "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
2375 | "homepage": "https://symfony.com",
2376 | "keywords": [
2377 | "compatibility",
2378 | "polyfill",
2379 | "portable",
2380 | "shim"
2381 | ],
2382 | "support": {
2383 | "source": "https://github.com/symfony/polyfill-php80/tree/v1.23.0"
2384 | },
2385 | "funding": [
2386 | {
2387 | "url": "https://symfony.com/sponsor",
2388 | "type": "custom"
2389 | },
2390 | {
2391 | "url": "https://github.com/fabpot",
2392 | "type": "github"
2393 | },
2394 | {
2395 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
2396 | "type": "tidelift"
2397 | }
2398 | ],
2399 | "time": "2021-02-19T12:13:01+00:00"
2400 | },
2401 | {
2402 | "name": "symfony/process",
2403 | "version": "v5.3.2",
2404 | "source": {
2405 | "type": "git",
2406 | "url": "https://github.com/symfony/process.git",
2407 | "reference": "714b47f9196de61a196d86c4bad5f09201b307df"
2408 | },
2409 | "dist": {
2410 | "type": "zip",
2411 | "url": "https://api.github.com/repos/symfony/process/zipball/714b47f9196de61a196d86c4bad5f09201b307df",
2412 | "reference": "714b47f9196de61a196d86c4bad5f09201b307df",
2413 | "shasum": ""
2414 | },
2415 | "require": {
2416 | "php": ">=7.2.5",
2417 | "symfony/polyfill-php80": "^1.15"
2418 | },
2419 | "type": "library",
2420 | "autoload": {
2421 | "psr-4": {
2422 | "Symfony\\Component\\Process\\": ""
2423 | },
2424 | "exclude-from-classmap": [
2425 | "/Tests/"
2426 | ]
2427 | },
2428 | "notification-url": "https://packagist.org/downloads/",
2429 | "license": [
2430 | "MIT"
2431 | ],
2432 | "authors": [
2433 | {
2434 | "name": "Fabien Potencier",
2435 | "email": "fabien@symfony.com"
2436 | },
2437 | {
2438 | "name": "Symfony Community",
2439 | "homepage": "https://symfony.com/contributors"
2440 | }
2441 | ],
2442 | "description": "Executes commands in sub-processes",
2443 | "homepage": "https://symfony.com",
2444 | "support": {
2445 | "source": "https://github.com/symfony/process/tree/v5.3.2"
2446 | },
2447 | "funding": [
2448 | {
2449 | "url": "https://symfony.com/sponsor",
2450 | "type": "custom"
2451 | },
2452 | {
2453 | "url": "https://github.com/fabpot",
2454 | "type": "github"
2455 | },
2456 | {
2457 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
2458 | "type": "tidelift"
2459 | }
2460 | ],
2461 | "time": "2021-06-12T10:15:01+00:00"
2462 | },
2463 | {
2464 | "name": "symfony/service-contracts",
2465 | "version": "v2.4.0",
2466 | "source": {
2467 | "type": "git",
2468 | "url": "https://github.com/symfony/service-contracts.git",
2469 | "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb"
2470 | },
2471 | "dist": {
2472 | "type": "zip",
2473 | "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb",
2474 | "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb",
2475 | "shasum": ""
2476 | },
2477 | "require": {
2478 | "php": ">=7.2.5",
2479 | "psr/container": "^1.1"
2480 | },
2481 | "suggest": {
2482 | "symfony/service-implementation": ""
2483 | },
2484 | "type": "library",
2485 | "extra": {
2486 | "branch-alias": {
2487 | "dev-main": "2.4-dev"
2488 | },
2489 | "thanks": {
2490 | "name": "symfony/contracts",
2491 | "url": "https://github.com/symfony/contracts"
2492 | }
2493 | },
2494 | "autoload": {
2495 | "psr-4": {
2496 | "Symfony\\Contracts\\Service\\": ""
2497 | }
2498 | },
2499 | "notification-url": "https://packagist.org/downloads/",
2500 | "license": [
2501 | "MIT"
2502 | ],
2503 | "authors": [
2504 | {
2505 | "name": "Nicolas Grekas",
2506 | "email": "p@tchwork.com"
2507 | },
2508 | {
2509 | "name": "Symfony Community",
2510 | "homepage": "https://symfony.com/contributors"
2511 | }
2512 | ],
2513 | "description": "Generic abstractions related to writing services",
2514 | "homepage": "https://symfony.com",
2515 | "keywords": [
2516 | "abstractions",
2517 | "contracts",
2518 | "decoupling",
2519 | "interfaces",
2520 | "interoperability",
2521 | "standards"
2522 | ],
2523 | "support": {
2524 | "source": "https://github.com/symfony/service-contracts/tree/v2.4.0"
2525 | },
2526 | "funding": [
2527 | {
2528 | "url": "https://symfony.com/sponsor",
2529 | "type": "custom"
2530 | },
2531 | {
2532 | "url": "https://github.com/fabpot",
2533 | "type": "github"
2534 | },
2535 | {
2536 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
2537 | "type": "tidelift"
2538 | }
2539 | ],
2540 | "time": "2021-04-01T10:43:52+00:00"
2541 | },
2542 | {
2543 | "name": "symfony/string",
2544 | "version": "v5.3.3",
2545 | "source": {
2546 | "type": "git",
2547 | "url": "https://github.com/symfony/string.git",
2548 | "reference": "bd53358e3eccec6a670b5f33ab680d8dbe1d4ae1"
2549 | },
2550 | "dist": {
2551 | "type": "zip",
2552 | "url": "https://api.github.com/repos/symfony/string/zipball/bd53358e3eccec6a670b5f33ab680d8dbe1d4ae1",
2553 | "reference": "bd53358e3eccec6a670b5f33ab680d8dbe1d4ae1",
2554 | "shasum": ""
2555 | },
2556 | "require": {
2557 | "php": ">=7.2.5",
2558 | "symfony/polyfill-ctype": "~1.8",
2559 | "symfony/polyfill-intl-grapheme": "~1.0",
2560 | "symfony/polyfill-intl-normalizer": "~1.0",
2561 | "symfony/polyfill-mbstring": "~1.0",
2562 | "symfony/polyfill-php80": "~1.15"
2563 | },
2564 | "require-dev": {
2565 | "symfony/error-handler": "^4.4|^5.0",
2566 | "symfony/http-client": "^4.4|^5.0",
2567 | "symfony/translation-contracts": "^1.1|^2",
2568 | "symfony/var-exporter": "^4.4|^5.0"
2569 | },
2570 | "type": "library",
2571 | "autoload": {
2572 | "psr-4": {
2573 | "Symfony\\Component\\String\\": ""
2574 | },
2575 | "files": [
2576 | "Resources/functions.php"
2577 | ],
2578 | "exclude-from-classmap": [
2579 | "/Tests/"
2580 | ]
2581 | },
2582 | "notification-url": "https://packagist.org/downloads/",
2583 | "license": [
2584 | "MIT"
2585 | ],
2586 | "authors": [
2587 | {
2588 | "name": "Nicolas Grekas",
2589 | "email": "p@tchwork.com"
2590 | },
2591 | {
2592 | "name": "Symfony Community",
2593 | "homepage": "https://symfony.com/contributors"
2594 | }
2595 | ],
2596 | "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way",
2597 | "homepage": "https://symfony.com",
2598 | "keywords": [
2599 | "grapheme",
2600 | "i18n",
2601 | "string",
2602 | "unicode",
2603 | "utf-8",
2604 | "utf8"
2605 | ],
2606 | "support": {
2607 | "source": "https://github.com/symfony/string/tree/v5.3.3"
2608 | },
2609 | "funding": [
2610 | {
2611 | "url": "https://symfony.com/sponsor",
2612 | "type": "custom"
2613 | },
2614 | {
2615 | "url": "https://github.com/fabpot",
2616 | "type": "github"
2617 | },
2618 | {
2619 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
2620 | "type": "tidelift"
2621 | }
2622 | ],
2623 | "time": "2021-06-27T11:44:38+00:00"
2624 | },
2625 | {
2626 | "name": "symfony/translation",
2627 | "version": "v5.3.3",
2628 | "source": {
2629 | "type": "git",
2630 | "url": "https://github.com/symfony/translation.git",
2631 | "reference": "380b8c9e944d0e364b25f28e8e555241eb49c01c"
2632 | },
2633 | "dist": {
2634 | "type": "zip",
2635 | "url": "https://api.github.com/repos/symfony/translation/zipball/380b8c9e944d0e364b25f28e8e555241eb49c01c",
2636 | "reference": "380b8c9e944d0e364b25f28e8e555241eb49c01c",
2637 | "shasum": ""
2638 | },
2639 | "require": {
2640 | "php": ">=7.2.5",
2641 | "symfony/deprecation-contracts": "^2.1",
2642 | "symfony/polyfill-mbstring": "~1.0",
2643 | "symfony/polyfill-php80": "^1.15",
2644 | "symfony/translation-contracts": "^2.3"
2645 | },
2646 | "conflict": {
2647 | "symfony/config": "<4.4",
2648 | "symfony/dependency-injection": "<5.0",
2649 | "symfony/http-kernel": "<5.0",
2650 | "symfony/twig-bundle": "<5.0",
2651 | "symfony/yaml": "<4.4"
2652 | },
2653 | "provide": {
2654 | "symfony/translation-implementation": "2.3"
2655 | },
2656 | "require-dev": {
2657 | "psr/log": "~1.0",
2658 | "symfony/config": "^4.4|^5.0",
2659 | "symfony/console": "^4.4|^5.0",
2660 | "symfony/dependency-injection": "^5.0",
2661 | "symfony/finder": "^4.4|^5.0",
2662 | "symfony/http-kernel": "^5.0",
2663 | "symfony/intl": "^4.4|^5.0",
2664 | "symfony/polyfill-intl-icu": "^1.21",
2665 | "symfony/service-contracts": "^1.1.2|^2",
2666 | "symfony/yaml": "^4.4|^5.0"
2667 | },
2668 | "suggest": {
2669 | "psr/log-implementation": "To use logging capability in translator",
2670 | "symfony/config": "",
2671 | "symfony/yaml": ""
2672 | },
2673 | "type": "library",
2674 | "autoload": {
2675 | "files": [
2676 | "Resources/functions.php"
2677 | ],
2678 | "psr-4": {
2679 | "Symfony\\Component\\Translation\\": ""
2680 | },
2681 | "exclude-from-classmap": [
2682 | "/Tests/"
2683 | ]
2684 | },
2685 | "notification-url": "https://packagist.org/downloads/",
2686 | "license": [
2687 | "MIT"
2688 | ],
2689 | "authors": [
2690 | {
2691 | "name": "Fabien Potencier",
2692 | "email": "fabien@symfony.com"
2693 | },
2694 | {
2695 | "name": "Symfony Community",
2696 | "homepage": "https://symfony.com/contributors"
2697 | }
2698 | ],
2699 | "description": "Provides tools to internationalize your application",
2700 | "homepage": "https://symfony.com",
2701 | "support": {
2702 | "source": "https://github.com/symfony/translation/tree/v5.3.3"
2703 | },
2704 | "funding": [
2705 | {
2706 | "url": "https://symfony.com/sponsor",
2707 | "type": "custom"
2708 | },
2709 | {
2710 | "url": "https://github.com/fabpot",
2711 | "type": "github"
2712 | },
2713 | {
2714 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
2715 | "type": "tidelift"
2716 | }
2717 | ],
2718 | "time": "2021-06-27T12:22:47+00:00"
2719 | },
2720 | {
2721 | "name": "symfony/translation-contracts",
2722 | "version": "v2.4.0",
2723 | "source": {
2724 | "type": "git",
2725 | "url": "https://github.com/symfony/translation-contracts.git",
2726 | "reference": "95c812666f3e91db75385749fe219c5e494c7f95"
2727 | },
2728 | "dist": {
2729 | "type": "zip",
2730 | "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/95c812666f3e91db75385749fe219c5e494c7f95",
2731 | "reference": "95c812666f3e91db75385749fe219c5e494c7f95",
2732 | "shasum": ""
2733 | },
2734 | "require": {
2735 | "php": ">=7.2.5"
2736 | },
2737 | "suggest": {
2738 | "symfony/translation-implementation": ""
2739 | },
2740 | "type": "library",
2741 | "extra": {
2742 | "branch-alias": {
2743 | "dev-main": "2.4-dev"
2744 | },
2745 | "thanks": {
2746 | "name": "symfony/contracts",
2747 | "url": "https://github.com/symfony/contracts"
2748 | }
2749 | },
2750 | "autoload": {
2751 | "psr-4": {
2752 | "Symfony\\Contracts\\Translation\\": ""
2753 | }
2754 | },
2755 | "notification-url": "https://packagist.org/downloads/",
2756 | "license": [
2757 | "MIT"
2758 | ],
2759 | "authors": [
2760 | {
2761 | "name": "Nicolas Grekas",
2762 | "email": "p@tchwork.com"
2763 | },
2764 | {
2765 | "name": "Symfony Community",
2766 | "homepage": "https://symfony.com/contributors"
2767 | }
2768 | ],
2769 | "description": "Generic abstractions related to translation",
2770 | "homepage": "https://symfony.com",
2771 | "keywords": [
2772 | "abstractions",
2773 | "contracts",
2774 | "decoupling",
2775 | "interfaces",
2776 | "interoperability",
2777 | "standards"
2778 | ],
2779 | "support": {
2780 | "source": "https://github.com/symfony/translation-contracts/tree/v2.4.0"
2781 | },
2782 | "funding": [
2783 | {
2784 | "url": "https://symfony.com/sponsor",
2785 | "type": "custom"
2786 | },
2787 | {
2788 | "url": "https://github.com/fabpot",
2789 | "type": "github"
2790 | },
2791 | {
2792 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
2793 | "type": "tidelift"
2794 | }
2795 | ],
2796 | "time": "2021-03-23T23:28:01+00:00"
2797 | },
2798 | {
2799 | "name": "voku/portable-ascii",
2800 | "version": "1.5.6",
2801 | "source": {
2802 | "type": "git",
2803 | "url": "https://github.com/voku/portable-ascii.git",
2804 | "reference": "80953678b19901e5165c56752d087fc11526017c"
2805 | },
2806 | "dist": {
2807 | "type": "zip",
2808 | "url": "https://api.github.com/repos/voku/portable-ascii/zipball/80953678b19901e5165c56752d087fc11526017c",
2809 | "reference": "80953678b19901e5165c56752d087fc11526017c",
2810 | "shasum": ""
2811 | },
2812 | "require": {
2813 | "php": ">=7.0.0"
2814 | },
2815 | "require-dev": {
2816 | "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0"
2817 | },
2818 | "suggest": {
2819 | "ext-intl": "Use Intl for transliterator_transliterate() support"
2820 | },
2821 | "type": "library",
2822 | "autoload": {
2823 | "psr-4": {
2824 | "voku\\": "src/voku/"
2825 | }
2826 | },
2827 | "notification-url": "https://packagist.org/downloads/",
2828 | "license": [
2829 | "MIT"
2830 | ],
2831 | "authors": [
2832 | {
2833 | "name": "Lars Moelleken",
2834 | "homepage": "http://www.moelleken.org/"
2835 | }
2836 | ],
2837 | "description": "Portable ASCII library - performance optimized (ascii) string functions for php.",
2838 | "homepage": "https://github.com/voku/portable-ascii",
2839 | "keywords": [
2840 | "ascii",
2841 | "clean",
2842 | "php"
2843 | ],
2844 | "support": {
2845 | "issues": "https://github.com/voku/portable-ascii/issues",
2846 | "source": "https://github.com/voku/portable-ascii/tree/1.5.6"
2847 | },
2848 | "funding": [
2849 | {
2850 | "url": "https://www.paypal.me/moelleken",
2851 | "type": "custom"
2852 | },
2853 | {
2854 | "url": "https://github.com/voku",
2855 | "type": "github"
2856 | },
2857 | {
2858 | "url": "https://opencollective.com/portable-ascii",
2859 | "type": "open_collective"
2860 | },
2861 | {
2862 | "url": "https://www.patreon.com/voku",
2863 | "type": "patreon"
2864 | },
2865 | {
2866 | "url": "https://tidelift.com/funding/github/packagist/voku/portable-ascii",
2867 | "type": "tidelift"
2868 | }
2869 | ],
2870 | "time": "2020-11-12T00:07:28+00:00"
2871 | }
2872 | ],
2873 | "packages-dev": [
2874 | {
2875 | "name": "doctrine/instantiator",
2876 | "version": "1.4.0",
2877 | "source": {
2878 | "type": "git",
2879 | "url": "https://github.com/doctrine/instantiator.git",
2880 | "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b"
2881 | },
2882 | "dist": {
2883 | "type": "zip",
2884 | "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b",
2885 | "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b",
2886 | "shasum": ""
2887 | },
2888 | "require": {
2889 | "php": "^7.1 || ^8.0"
2890 | },
2891 | "require-dev": {
2892 | "doctrine/coding-standard": "^8.0",
2893 | "ext-pdo": "*",
2894 | "ext-phar": "*",
2895 | "phpbench/phpbench": "^0.13 || 1.0.0-alpha2",
2896 | "phpstan/phpstan": "^0.12",
2897 | "phpstan/phpstan-phpunit": "^0.12",
2898 | "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0"
2899 | },
2900 | "type": "library",
2901 | "autoload": {
2902 | "psr-4": {
2903 | "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
2904 | }
2905 | },
2906 | "notification-url": "https://packagist.org/downloads/",
2907 | "license": [
2908 | "MIT"
2909 | ],
2910 | "authors": [
2911 | {
2912 | "name": "Marco Pivetta",
2913 | "email": "ocramius@gmail.com",
2914 | "homepage": "https://ocramius.github.io/"
2915 | }
2916 | ],
2917 | "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
2918 | "homepage": "https://www.doctrine-project.org/projects/instantiator.html",
2919 | "keywords": [
2920 | "constructor",
2921 | "instantiate"
2922 | ],
2923 | "support": {
2924 | "issues": "https://github.com/doctrine/instantiator/issues",
2925 | "source": "https://github.com/doctrine/instantiator/tree/1.4.0"
2926 | },
2927 | "funding": [
2928 | {
2929 | "url": "https://www.doctrine-project.org/sponsorship.html",
2930 | "type": "custom"
2931 | },
2932 | {
2933 | "url": "https://www.patreon.com/phpdoctrine",
2934 | "type": "patreon"
2935 | },
2936 | {
2937 | "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator",
2938 | "type": "tidelift"
2939 | }
2940 | ],
2941 | "time": "2020-11-10T18:47:58+00:00"
2942 | },
2943 | {
2944 | "name": "hamcrest/hamcrest-php",
2945 | "version": "v2.0.1",
2946 | "source": {
2947 | "type": "git",
2948 | "url": "https://github.com/hamcrest/hamcrest-php.git",
2949 | "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3"
2950 | },
2951 | "dist": {
2952 | "type": "zip",
2953 | "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3",
2954 | "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3",
2955 | "shasum": ""
2956 | },
2957 | "require": {
2958 | "php": "^5.3|^7.0|^8.0"
2959 | },
2960 | "replace": {
2961 | "cordoval/hamcrest-php": "*",
2962 | "davedevelopment/hamcrest-php": "*",
2963 | "kodova/hamcrest-php": "*"
2964 | },
2965 | "require-dev": {
2966 | "phpunit/php-file-iterator": "^1.4 || ^2.0",
2967 | "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0"
2968 | },
2969 | "type": "library",
2970 | "extra": {
2971 | "branch-alias": {
2972 | "dev-master": "2.1-dev"
2973 | }
2974 | },
2975 | "autoload": {
2976 | "classmap": [
2977 | "hamcrest"
2978 | ]
2979 | },
2980 | "notification-url": "https://packagist.org/downloads/",
2981 | "license": [
2982 | "BSD-3-Clause"
2983 | ],
2984 | "description": "This is the PHP port of Hamcrest Matchers",
2985 | "keywords": [
2986 | "test"
2987 | ],
2988 | "support": {
2989 | "issues": "https://github.com/hamcrest/hamcrest-php/issues",
2990 | "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1"
2991 | },
2992 | "time": "2020-07-09T08:09:16+00:00"
2993 | },
2994 | {
2995 | "name": "mockery/mockery",
2996 | "version": "1.4.3",
2997 | "source": {
2998 | "type": "git",
2999 | "url": "https://github.com/mockery/mockery.git",
3000 | "reference": "d1339f64479af1bee0e82a0413813fe5345a54ea"
3001 | },
3002 | "dist": {
3003 | "type": "zip",
3004 | "url": "https://api.github.com/repos/mockery/mockery/zipball/d1339f64479af1bee0e82a0413813fe5345a54ea",
3005 | "reference": "d1339f64479af1bee0e82a0413813fe5345a54ea",
3006 | "shasum": ""
3007 | },
3008 | "require": {
3009 | "hamcrest/hamcrest-php": "^2.0.1",
3010 | "lib-pcre": ">=7.0",
3011 | "php": "^7.3 || ^8.0"
3012 | },
3013 | "conflict": {
3014 | "phpunit/phpunit": "<8.0"
3015 | },
3016 | "require-dev": {
3017 | "phpunit/phpunit": "^8.5 || ^9.3"
3018 | },
3019 | "type": "library",
3020 | "extra": {
3021 | "branch-alias": {
3022 | "dev-master": "1.4.x-dev"
3023 | }
3024 | },
3025 | "autoload": {
3026 | "psr-0": {
3027 | "Mockery": "library/"
3028 | }
3029 | },
3030 | "notification-url": "https://packagist.org/downloads/",
3031 | "license": [
3032 | "BSD-3-Clause"
3033 | ],
3034 | "authors": [
3035 | {
3036 | "name": "Pádraic Brady",
3037 | "email": "padraic.brady@gmail.com",
3038 | "homepage": "http://blog.astrumfutura.com"
3039 | },
3040 | {
3041 | "name": "Dave Marshall",
3042 | "email": "dave.marshall@atstsolutions.co.uk",
3043 | "homepage": "http://davedevelopment.co.uk"
3044 | }
3045 | ],
3046 | "description": "Mockery is a simple yet flexible PHP mock object framework",
3047 | "homepage": "https://github.com/mockery/mockery",
3048 | "keywords": [
3049 | "BDD",
3050 | "TDD",
3051 | "library",
3052 | "mock",
3053 | "mock objects",
3054 | "mockery",
3055 | "stub",
3056 | "test",
3057 | "test double",
3058 | "testing"
3059 | ],
3060 | "support": {
3061 | "issues": "https://github.com/mockery/mockery/issues",
3062 | "source": "https://github.com/mockery/mockery/tree/1.4.3"
3063 | },
3064 | "time": "2021-02-24T09:51:49+00:00"
3065 | },
3066 | {
3067 | "name": "myclabs/deep-copy",
3068 | "version": "1.10.2",
3069 | "source": {
3070 | "type": "git",
3071 | "url": "https://github.com/myclabs/DeepCopy.git",
3072 | "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220"
3073 | },
3074 | "dist": {
3075 | "type": "zip",
3076 | "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220",
3077 | "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220",
3078 | "shasum": ""
3079 | },
3080 | "require": {
3081 | "php": "^7.1 || ^8.0"
3082 | },
3083 | "replace": {
3084 | "myclabs/deep-copy": "self.version"
3085 | },
3086 | "require-dev": {
3087 | "doctrine/collections": "^1.0",
3088 | "doctrine/common": "^2.6",
3089 | "phpunit/phpunit": "^7.1"
3090 | },
3091 | "type": "library",
3092 | "autoload": {
3093 | "psr-4": {
3094 | "DeepCopy\\": "src/DeepCopy/"
3095 | },
3096 | "files": [
3097 | "src/DeepCopy/deep_copy.php"
3098 | ]
3099 | },
3100 | "notification-url": "https://packagist.org/downloads/",
3101 | "license": [
3102 | "MIT"
3103 | ],
3104 | "description": "Create deep copies (clones) of your objects",
3105 | "keywords": [
3106 | "clone",
3107 | "copy",
3108 | "duplicate",
3109 | "object",
3110 | "object graph"
3111 | ],
3112 | "support": {
3113 | "issues": "https://github.com/myclabs/DeepCopy/issues",
3114 | "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2"
3115 | },
3116 | "funding": [
3117 | {
3118 | "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
3119 | "type": "tidelift"
3120 | }
3121 | ],
3122 | "time": "2020-11-13T09:40:50+00:00"
3123 | },
3124 | {
3125 | "name": "phar-io/manifest",
3126 | "version": "2.0.1",
3127 | "source": {
3128 | "type": "git",
3129 | "url": "https://github.com/phar-io/manifest.git",
3130 | "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133"
3131 | },
3132 | "dist": {
3133 | "type": "zip",
3134 | "url": "https://api.github.com/repos/phar-io/manifest/zipball/85265efd3af7ba3ca4b2a2c34dbfc5788dd29133",
3135 | "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133",
3136 | "shasum": ""
3137 | },
3138 | "require": {
3139 | "ext-dom": "*",
3140 | "ext-phar": "*",
3141 | "ext-xmlwriter": "*",
3142 | "phar-io/version": "^3.0.1",
3143 | "php": "^7.2 || ^8.0"
3144 | },
3145 | "type": "library",
3146 | "extra": {
3147 | "branch-alias": {
3148 | "dev-master": "2.0.x-dev"
3149 | }
3150 | },
3151 | "autoload": {
3152 | "classmap": [
3153 | "src/"
3154 | ]
3155 | },
3156 | "notification-url": "https://packagist.org/downloads/",
3157 | "license": [
3158 | "BSD-3-Clause"
3159 | ],
3160 | "authors": [
3161 | {
3162 | "name": "Arne Blankerts",
3163 | "email": "arne@blankerts.de",
3164 | "role": "Developer"
3165 | },
3166 | {
3167 | "name": "Sebastian Heuer",
3168 | "email": "sebastian@phpeople.de",
3169 | "role": "Developer"
3170 | },
3171 | {
3172 | "name": "Sebastian Bergmann",
3173 | "email": "sebastian@phpunit.de",
3174 | "role": "Developer"
3175 | }
3176 | ],
3177 | "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
3178 | "support": {
3179 | "issues": "https://github.com/phar-io/manifest/issues",
3180 | "source": "https://github.com/phar-io/manifest/tree/master"
3181 | },
3182 | "time": "2020-06-27T14:33:11+00:00"
3183 | },
3184 | {
3185 | "name": "phar-io/version",
3186 | "version": "3.1.0",
3187 | "source": {
3188 | "type": "git",
3189 | "url": "https://github.com/phar-io/version.git",
3190 | "reference": "bae7c545bef187884426f042434e561ab1ddb182"
3191 | },
3192 | "dist": {
3193 | "type": "zip",
3194 | "url": "https://api.github.com/repos/phar-io/version/zipball/bae7c545bef187884426f042434e561ab1ddb182",
3195 | "reference": "bae7c545bef187884426f042434e561ab1ddb182",
3196 | "shasum": ""
3197 | },
3198 | "require": {
3199 | "php": "^7.2 || ^8.0"
3200 | },
3201 | "type": "library",
3202 | "autoload": {
3203 | "classmap": [
3204 | "src/"
3205 | ]
3206 | },
3207 | "notification-url": "https://packagist.org/downloads/",
3208 | "license": [
3209 | "BSD-3-Clause"
3210 | ],
3211 | "authors": [
3212 | {
3213 | "name": "Arne Blankerts",
3214 | "email": "arne@blankerts.de",
3215 | "role": "Developer"
3216 | },
3217 | {
3218 | "name": "Sebastian Heuer",
3219 | "email": "sebastian@phpeople.de",
3220 | "role": "Developer"
3221 | },
3222 | {
3223 | "name": "Sebastian Bergmann",
3224 | "email": "sebastian@phpunit.de",
3225 | "role": "Developer"
3226 | }
3227 | ],
3228 | "description": "Library for handling version information and constraints",
3229 | "support": {
3230 | "issues": "https://github.com/phar-io/version/issues",
3231 | "source": "https://github.com/phar-io/version/tree/3.1.0"
3232 | },
3233 | "time": "2021-02-23T14:00:09+00:00"
3234 | },
3235 | {
3236 | "name": "phpdocumentor/reflection-common",
3237 | "version": "2.2.0",
3238 | "source": {
3239 | "type": "git",
3240 | "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
3241 | "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b"
3242 | },
3243 | "dist": {
3244 | "type": "zip",
3245 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b",
3246 | "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b",
3247 | "shasum": ""
3248 | },
3249 | "require": {
3250 | "php": "^7.2 || ^8.0"
3251 | },
3252 | "type": "library",
3253 | "extra": {
3254 | "branch-alias": {
3255 | "dev-2.x": "2.x-dev"
3256 | }
3257 | },
3258 | "autoload": {
3259 | "psr-4": {
3260 | "phpDocumentor\\Reflection\\": "src/"
3261 | }
3262 | },
3263 | "notification-url": "https://packagist.org/downloads/",
3264 | "license": [
3265 | "MIT"
3266 | ],
3267 | "authors": [
3268 | {
3269 | "name": "Jaap van Otterdijk",
3270 | "email": "opensource@ijaap.nl"
3271 | }
3272 | ],
3273 | "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
3274 | "homepage": "http://www.phpdoc.org",
3275 | "keywords": [
3276 | "FQSEN",
3277 | "phpDocumentor",
3278 | "phpdoc",
3279 | "reflection",
3280 | "static analysis"
3281 | ],
3282 | "support": {
3283 | "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues",
3284 | "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x"
3285 | },
3286 | "time": "2020-06-27T09:03:43+00:00"
3287 | },
3288 | {
3289 | "name": "phpdocumentor/reflection-docblock",
3290 | "version": "5.2.2",
3291 | "source": {
3292 | "type": "git",
3293 | "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
3294 | "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556"
3295 | },
3296 | "dist": {
3297 | "type": "zip",
3298 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556",
3299 | "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556",
3300 | "shasum": ""
3301 | },
3302 | "require": {
3303 | "ext-filter": "*",
3304 | "php": "^7.2 || ^8.0",
3305 | "phpdocumentor/reflection-common": "^2.2",
3306 | "phpdocumentor/type-resolver": "^1.3",
3307 | "webmozart/assert": "^1.9.1"
3308 | },
3309 | "require-dev": {
3310 | "mockery/mockery": "~1.3.2"
3311 | },
3312 | "type": "library",
3313 | "extra": {
3314 | "branch-alias": {
3315 | "dev-master": "5.x-dev"
3316 | }
3317 | },
3318 | "autoload": {
3319 | "psr-4": {
3320 | "phpDocumentor\\Reflection\\": "src"
3321 | }
3322 | },
3323 | "notification-url": "https://packagist.org/downloads/",
3324 | "license": [
3325 | "MIT"
3326 | ],
3327 | "authors": [
3328 | {
3329 | "name": "Mike van Riel",
3330 | "email": "me@mikevanriel.com"
3331 | },
3332 | {
3333 | "name": "Jaap van Otterdijk",
3334 | "email": "account@ijaap.nl"
3335 | }
3336 | ],
3337 | "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
3338 | "support": {
3339 | "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
3340 | "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/master"
3341 | },
3342 | "time": "2020-09-03T19:13:55+00:00"
3343 | },
3344 | {
3345 | "name": "phpdocumentor/type-resolver",
3346 | "version": "1.4.0",
3347 | "source": {
3348 | "type": "git",
3349 | "url": "https://github.com/phpDocumentor/TypeResolver.git",
3350 | "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0"
3351 | },
3352 | "dist": {
3353 | "type": "zip",
3354 | "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0",
3355 | "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0",
3356 | "shasum": ""
3357 | },
3358 | "require": {
3359 | "php": "^7.2 || ^8.0",
3360 | "phpdocumentor/reflection-common": "^2.0"
3361 | },
3362 | "require-dev": {
3363 | "ext-tokenizer": "*"
3364 | },
3365 | "type": "library",
3366 | "extra": {
3367 | "branch-alias": {
3368 | "dev-1.x": "1.x-dev"
3369 | }
3370 | },
3371 | "autoload": {
3372 | "psr-4": {
3373 | "phpDocumentor\\Reflection\\": "src"
3374 | }
3375 | },
3376 | "notification-url": "https://packagist.org/downloads/",
3377 | "license": [
3378 | "MIT"
3379 | ],
3380 | "authors": [
3381 | {
3382 | "name": "Mike van Riel",
3383 | "email": "me@mikevanriel.com"
3384 | }
3385 | ],
3386 | "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
3387 | "support": {
3388 | "issues": "https://github.com/phpDocumentor/TypeResolver/issues",
3389 | "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.4.0"
3390 | },
3391 | "time": "2020-09-17T18:55:26+00:00"
3392 | },
3393 | {
3394 | "name": "phpspec/prophecy",
3395 | "version": "1.13.0",
3396 | "source": {
3397 | "type": "git",
3398 | "url": "https://github.com/phpspec/prophecy.git",
3399 | "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea"
3400 | },
3401 | "dist": {
3402 | "type": "zip",
3403 | "url": "https://api.github.com/repos/phpspec/prophecy/zipball/be1996ed8adc35c3fd795488a653f4b518be70ea",
3404 | "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea",
3405 | "shasum": ""
3406 | },
3407 | "require": {
3408 | "doctrine/instantiator": "^1.2",
3409 | "php": "^7.2 || ~8.0, <8.1",
3410 | "phpdocumentor/reflection-docblock": "^5.2",
3411 | "sebastian/comparator": "^3.0 || ^4.0",
3412 | "sebastian/recursion-context": "^3.0 || ^4.0"
3413 | },
3414 | "require-dev": {
3415 | "phpspec/phpspec": "^6.0",
3416 | "phpunit/phpunit": "^8.0 || ^9.0"
3417 | },
3418 | "type": "library",
3419 | "extra": {
3420 | "branch-alias": {
3421 | "dev-master": "1.11.x-dev"
3422 | }
3423 | },
3424 | "autoload": {
3425 | "psr-4": {
3426 | "Prophecy\\": "src/Prophecy"
3427 | }
3428 | },
3429 | "notification-url": "https://packagist.org/downloads/",
3430 | "license": [
3431 | "MIT"
3432 | ],
3433 | "authors": [
3434 | {
3435 | "name": "Konstantin Kudryashov",
3436 | "email": "ever.zet@gmail.com",
3437 | "homepage": "http://everzet.com"
3438 | },
3439 | {
3440 | "name": "Marcello Duarte",
3441 | "email": "marcello.duarte@gmail.com"
3442 | }
3443 | ],
3444 | "description": "Highly opinionated mocking framework for PHP 5.3+",
3445 | "homepage": "https://github.com/phpspec/prophecy",
3446 | "keywords": [
3447 | "Double",
3448 | "Dummy",
3449 | "fake",
3450 | "mock",
3451 | "spy",
3452 | "stub"
3453 | ],
3454 | "support": {
3455 | "issues": "https://github.com/phpspec/prophecy/issues",
3456 | "source": "https://github.com/phpspec/prophecy/tree/1.13.0"
3457 | },
3458 | "time": "2021-03-17T13:42:18+00:00"
3459 | },
3460 | {
3461 | "name": "phpstan/phpstan",
3462 | "version": "0.12.91",
3463 | "source": {
3464 | "type": "git",
3465 | "url": "https://github.com/phpstan/phpstan.git",
3466 | "reference": "8226701cd228a0d63c2df995de7ab6070c69ac6a"
3467 | },
3468 | "dist": {
3469 | "type": "zip",
3470 | "url": "https://api.github.com/repos/phpstan/phpstan/zipball/8226701cd228a0d63c2df995de7ab6070c69ac6a",
3471 | "reference": "8226701cd228a0d63c2df995de7ab6070c69ac6a",
3472 | "shasum": ""
3473 | },
3474 | "require": {
3475 | "php": "^7.1|^8.0"
3476 | },
3477 | "conflict": {
3478 | "phpstan/phpstan-shim": "*"
3479 | },
3480 | "bin": [
3481 | "phpstan",
3482 | "phpstan.phar"
3483 | ],
3484 | "type": "library",
3485 | "extra": {
3486 | "branch-alias": {
3487 | "dev-master": "0.12-dev"
3488 | }
3489 | },
3490 | "autoload": {
3491 | "files": [
3492 | "bootstrap.php"
3493 | ]
3494 | },
3495 | "notification-url": "https://packagist.org/downloads/",
3496 | "license": [
3497 | "MIT"
3498 | ],
3499 | "description": "PHPStan - PHP Static Analysis Tool",
3500 | "support": {
3501 | "issues": "https://github.com/phpstan/phpstan/issues",
3502 | "source": "https://github.com/phpstan/phpstan/tree/0.12.91"
3503 | },
3504 | "funding": [
3505 | {
3506 | "url": "https://github.com/ondrejmirtes",
3507 | "type": "github"
3508 | },
3509 | {
3510 | "url": "https://github.com/phpstan",
3511 | "type": "github"
3512 | },
3513 | {
3514 | "url": "https://www.patreon.com/phpstan",
3515 | "type": "patreon"
3516 | },
3517 | {
3518 | "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan",
3519 | "type": "tidelift"
3520 | }
3521 | ],
3522 | "time": "2021-07-04T15:31:48+00:00"
3523 | },
3524 | {
3525 | "name": "phpstan/phpstan-mockery",
3526 | "version": "0.12.14",
3527 | "source": {
3528 | "type": "git",
3529 | "url": "https://github.com/phpstan/phpstan-mockery.git",
3530 | "reference": "7cc74bf434b3c2190f7f4cfc08c74f7c0b65667f"
3531 | },
3532 | "dist": {
3533 | "type": "zip",
3534 | "url": "https://api.github.com/repos/phpstan/phpstan-mockery/zipball/7cc74bf434b3c2190f7f4cfc08c74f7c0b65667f",
3535 | "reference": "7cc74bf434b3c2190f7f4cfc08c74f7c0b65667f",
3536 | "shasum": ""
3537 | },
3538 | "require": {
3539 | "php": "^7.1 || ^8.0",
3540 | "phpstan/phpstan": "^0.12.60"
3541 | },
3542 | "require-dev": {
3543 | "mockery/mockery": "^1.2.4",
3544 | "php-parallel-lint/php-parallel-lint": "^1.2",
3545 | "phpstan/phpstan-phpunit": "^0.12.16",
3546 | "phpstan/phpstan-strict-rules": "^0.12.5",
3547 | "phpunit/phpunit": "^9.5"
3548 | },
3549 | "type": "phpstan-extension",
3550 | "extra": {
3551 | "branch-alias": {
3552 | "dev-master": "0.12-dev"
3553 | },
3554 | "phpstan": {
3555 | "includes": [
3556 | "extension.neon"
3557 | ]
3558 | }
3559 | },
3560 | "autoload": {
3561 | "psr-4": {
3562 | "PHPStan\\": "src/"
3563 | }
3564 | },
3565 | "notification-url": "https://packagist.org/downloads/",
3566 | "license": [
3567 | "MIT"
3568 | ],
3569 | "description": "PHPStan Mockery extension",
3570 | "support": {
3571 | "issues": "https://github.com/phpstan/phpstan-mockery/issues",
3572 | "source": "https://github.com/phpstan/phpstan-mockery/tree/0.12.14"
3573 | },
3574 | "time": "2021-06-10T12:12:36+00:00"
3575 | },
3576 | {
3577 | "name": "phpunit/php-code-coverage",
3578 | "version": "7.0.14",
3579 | "source": {
3580 | "type": "git",
3581 | "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
3582 | "reference": "bb7c9a210c72e4709cdde67f8b7362f672f2225c"
3583 | },
3584 | "dist": {
3585 | "type": "zip",
3586 | "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/bb7c9a210c72e4709cdde67f8b7362f672f2225c",
3587 | "reference": "bb7c9a210c72e4709cdde67f8b7362f672f2225c",
3588 | "shasum": ""
3589 | },
3590 | "require": {
3591 | "ext-dom": "*",
3592 | "ext-xmlwriter": "*",
3593 | "php": ">=7.2",
3594 | "phpunit/php-file-iterator": "^2.0.2",
3595 | "phpunit/php-text-template": "^1.2.1",
3596 | "phpunit/php-token-stream": "^3.1.1 || ^4.0",
3597 | "sebastian/code-unit-reverse-lookup": "^1.0.1",
3598 | "sebastian/environment": "^4.2.2",
3599 | "sebastian/version": "^2.0.1",
3600 | "theseer/tokenizer": "^1.1.3"
3601 | },
3602 | "require-dev": {
3603 | "phpunit/phpunit": "^8.2.2"
3604 | },
3605 | "suggest": {
3606 | "ext-xdebug": "^2.7.2"
3607 | },
3608 | "type": "library",
3609 | "extra": {
3610 | "branch-alias": {
3611 | "dev-master": "7.0-dev"
3612 | }
3613 | },
3614 | "autoload": {
3615 | "classmap": [
3616 | "src/"
3617 | ]
3618 | },
3619 | "notification-url": "https://packagist.org/downloads/",
3620 | "license": [
3621 | "BSD-3-Clause"
3622 | ],
3623 | "authors": [
3624 | {
3625 | "name": "Sebastian Bergmann",
3626 | "email": "sebastian@phpunit.de",
3627 | "role": "lead"
3628 | }
3629 | ],
3630 | "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
3631 | "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
3632 | "keywords": [
3633 | "coverage",
3634 | "testing",
3635 | "xunit"
3636 | ],
3637 | "support": {
3638 | "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
3639 | "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/7.0.14"
3640 | },
3641 | "funding": [
3642 | {
3643 | "url": "https://github.com/sebastianbergmann",
3644 | "type": "github"
3645 | }
3646 | ],
3647 | "time": "2020-12-02T13:39:03+00:00"
3648 | },
3649 | {
3650 | "name": "phpunit/php-file-iterator",
3651 | "version": "2.0.3",
3652 | "source": {
3653 | "type": "git",
3654 | "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
3655 | "reference": "4b49fb70f067272b659ef0174ff9ca40fdaa6357"
3656 | },
3657 | "dist": {
3658 | "type": "zip",
3659 | "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/4b49fb70f067272b659ef0174ff9ca40fdaa6357",
3660 | "reference": "4b49fb70f067272b659ef0174ff9ca40fdaa6357",
3661 | "shasum": ""
3662 | },
3663 | "require": {
3664 | "php": ">=7.1"
3665 | },
3666 | "require-dev": {
3667 | "phpunit/phpunit": "^8.5"
3668 | },
3669 | "type": "library",
3670 | "extra": {
3671 | "branch-alias": {
3672 | "dev-master": "2.0.x-dev"
3673 | }
3674 | },
3675 | "autoload": {
3676 | "classmap": [
3677 | "src/"
3678 | ]
3679 | },
3680 | "notification-url": "https://packagist.org/downloads/",
3681 | "license": [
3682 | "BSD-3-Clause"
3683 | ],
3684 | "authors": [
3685 | {
3686 | "name": "Sebastian Bergmann",
3687 | "email": "sebastian@phpunit.de",
3688 | "role": "lead"
3689 | }
3690 | ],
3691 | "description": "FilterIterator implementation that filters files based on a list of suffixes.",
3692 | "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
3693 | "keywords": [
3694 | "filesystem",
3695 | "iterator"
3696 | ],
3697 | "support": {
3698 | "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues",
3699 | "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/2.0.3"
3700 | },
3701 | "funding": [
3702 | {
3703 | "url": "https://github.com/sebastianbergmann",
3704 | "type": "github"
3705 | }
3706 | ],
3707 | "time": "2020-11-30T08:25:21+00:00"
3708 | },
3709 | {
3710 | "name": "phpunit/php-text-template",
3711 | "version": "1.2.1",
3712 | "source": {
3713 | "type": "git",
3714 | "url": "https://github.com/sebastianbergmann/php-text-template.git",
3715 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
3716 | },
3717 | "dist": {
3718 | "type": "zip",
3719 | "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
3720 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
3721 | "shasum": ""
3722 | },
3723 | "require": {
3724 | "php": ">=5.3.3"
3725 | },
3726 | "type": "library",
3727 | "autoload": {
3728 | "classmap": [
3729 | "src/"
3730 | ]
3731 | },
3732 | "notification-url": "https://packagist.org/downloads/",
3733 | "license": [
3734 | "BSD-3-Clause"
3735 | ],
3736 | "authors": [
3737 | {
3738 | "name": "Sebastian Bergmann",
3739 | "email": "sebastian@phpunit.de",
3740 | "role": "lead"
3741 | }
3742 | ],
3743 | "description": "Simple template engine.",
3744 | "homepage": "https://github.com/sebastianbergmann/php-text-template/",
3745 | "keywords": [
3746 | "template"
3747 | ],
3748 | "support": {
3749 | "issues": "https://github.com/sebastianbergmann/php-text-template/issues",
3750 | "source": "https://github.com/sebastianbergmann/php-text-template/tree/1.2.1"
3751 | },
3752 | "time": "2015-06-21T13:50:34+00:00"
3753 | },
3754 | {
3755 | "name": "phpunit/php-timer",
3756 | "version": "2.1.3",
3757 | "source": {
3758 | "type": "git",
3759 | "url": "https://github.com/sebastianbergmann/php-timer.git",
3760 | "reference": "2454ae1765516d20c4ffe103d85a58a9a3bd5662"
3761 | },
3762 | "dist": {
3763 | "type": "zip",
3764 | "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/2454ae1765516d20c4ffe103d85a58a9a3bd5662",
3765 | "reference": "2454ae1765516d20c4ffe103d85a58a9a3bd5662",
3766 | "shasum": ""
3767 | },
3768 | "require": {
3769 | "php": ">=7.1"
3770 | },
3771 | "require-dev": {
3772 | "phpunit/phpunit": "^8.5"
3773 | },
3774 | "type": "library",
3775 | "extra": {
3776 | "branch-alias": {
3777 | "dev-master": "2.1-dev"
3778 | }
3779 | },
3780 | "autoload": {
3781 | "classmap": [
3782 | "src/"
3783 | ]
3784 | },
3785 | "notification-url": "https://packagist.org/downloads/",
3786 | "license": [
3787 | "BSD-3-Clause"
3788 | ],
3789 | "authors": [
3790 | {
3791 | "name": "Sebastian Bergmann",
3792 | "email": "sebastian@phpunit.de",
3793 | "role": "lead"
3794 | }
3795 | ],
3796 | "description": "Utility class for timing",
3797 | "homepage": "https://github.com/sebastianbergmann/php-timer/",
3798 | "keywords": [
3799 | "timer"
3800 | ],
3801 | "support": {
3802 | "issues": "https://github.com/sebastianbergmann/php-timer/issues",
3803 | "source": "https://github.com/sebastianbergmann/php-timer/tree/2.1.3"
3804 | },
3805 | "funding": [
3806 | {
3807 | "url": "https://github.com/sebastianbergmann",
3808 | "type": "github"
3809 | }
3810 | ],
3811 | "time": "2020-11-30T08:20:02+00:00"
3812 | },
3813 | {
3814 | "name": "phpunit/php-token-stream",
3815 | "version": "4.0.4",
3816 | "source": {
3817 | "type": "git",
3818 | "url": "https://github.com/sebastianbergmann/php-token-stream.git",
3819 | "reference": "a853a0e183b9db7eed023d7933a858fa1c8d25a3"
3820 | },
3821 | "dist": {
3822 | "type": "zip",
3823 | "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/a853a0e183b9db7eed023d7933a858fa1c8d25a3",
3824 | "reference": "a853a0e183b9db7eed023d7933a858fa1c8d25a3",
3825 | "shasum": ""
3826 | },
3827 | "require": {
3828 | "ext-tokenizer": "*",
3829 | "php": "^7.3 || ^8.0"
3830 | },
3831 | "require-dev": {
3832 | "phpunit/phpunit": "^9.0"
3833 | },
3834 | "type": "library",
3835 | "extra": {
3836 | "branch-alias": {
3837 | "dev-master": "4.0-dev"
3838 | }
3839 | },
3840 | "autoload": {
3841 | "classmap": [
3842 | "src/"
3843 | ]
3844 | },
3845 | "notification-url": "https://packagist.org/downloads/",
3846 | "license": [
3847 | "BSD-3-Clause"
3848 | ],
3849 | "authors": [
3850 | {
3851 | "name": "Sebastian Bergmann",
3852 | "email": "sebastian@phpunit.de"
3853 | }
3854 | ],
3855 | "description": "Wrapper around PHP's tokenizer extension.",
3856 | "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
3857 | "keywords": [
3858 | "tokenizer"
3859 | ],
3860 | "support": {
3861 | "issues": "https://github.com/sebastianbergmann/php-token-stream/issues",
3862 | "source": "https://github.com/sebastianbergmann/php-token-stream/tree/master"
3863 | },
3864 | "funding": [
3865 | {
3866 | "url": "https://github.com/sebastianbergmann",
3867 | "type": "github"
3868 | }
3869 | ],
3870 | "abandoned": true,
3871 | "time": "2020-08-04T08:28:15+00:00"
3872 | },
3873 | {
3874 | "name": "phpunit/phpunit",
3875 | "version": "8.5.17",
3876 | "source": {
3877 | "type": "git",
3878 | "url": "https://github.com/sebastianbergmann/phpunit.git",
3879 | "reference": "79067856d85421c56d413bd238d4e2cd6b0e54da"
3880 | },
3881 | "dist": {
3882 | "type": "zip",
3883 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/79067856d85421c56d413bd238d4e2cd6b0e54da",
3884 | "reference": "79067856d85421c56d413bd238d4e2cd6b0e54da",
3885 | "shasum": ""
3886 | },
3887 | "require": {
3888 | "doctrine/instantiator": "^1.3.1",
3889 | "ext-dom": "*",
3890 | "ext-json": "*",
3891 | "ext-libxml": "*",
3892 | "ext-mbstring": "*",
3893 | "ext-xml": "*",
3894 | "ext-xmlwriter": "*",
3895 | "myclabs/deep-copy": "^1.10.0",
3896 | "phar-io/manifest": "^2.0.1",
3897 | "phar-io/version": "^3.0.2",
3898 | "php": ">=7.2",
3899 | "phpspec/prophecy": "^1.10.3",
3900 | "phpunit/php-code-coverage": "^7.0.12",
3901 | "phpunit/php-file-iterator": "^2.0.2",
3902 | "phpunit/php-text-template": "^1.2.1",
3903 | "phpunit/php-timer": "^2.1.2",
3904 | "sebastian/comparator": "^3.0.2",
3905 | "sebastian/diff": "^3.0.2",
3906 | "sebastian/environment": "^4.2.3",
3907 | "sebastian/exporter": "^3.1.2",
3908 | "sebastian/global-state": "^3.0.0",
3909 | "sebastian/object-enumerator": "^3.0.3",
3910 | "sebastian/resource-operations": "^2.0.1",
3911 | "sebastian/type": "^1.1.3",
3912 | "sebastian/version": "^2.0.1"
3913 | },
3914 | "require-dev": {
3915 | "ext-pdo": "*"
3916 | },
3917 | "suggest": {
3918 | "ext-soap": "*",
3919 | "ext-xdebug": "*",
3920 | "phpunit/php-invoker": "^2.0.0"
3921 | },
3922 | "bin": [
3923 | "phpunit"
3924 | ],
3925 | "type": "library",
3926 | "extra": {
3927 | "branch-alias": {
3928 | "dev-master": "8.5-dev"
3929 | }
3930 | },
3931 | "autoload": {
3932 | "classmap": [
3933 | "src/"
3934 | ]
3935 | },
3936 | "notification-url": "https://packagist.org/downloads/",
3937 | "license": [
3938 | "BSD-3-Clause"
3939 | ],
3940 | "authors": [
3941 | {
3942 | "name": "Sebastian Bergmann",
3943 | "email": "sebastian@phpunit.de",
3944 | "role": "lead"
3945 | }
3946 | ],
3947 | "description": "The PHP Unit Testing framework.",
3948 | "homepage": "https://phpunit.de/",
3949 | "keywords": [
3950 | "phpunit",
3951 | "testing",
3952 | "xunit"
3953 | ],
3954 | "support": {
3955 | "issues": "https://github.com/sebastianbergmann/phpunit/issues",
3956 | "source": "https://github.com/sebastianbergmann/phpunit/tree/8.5.17"
3957 | },
3958 | "funding": [
3959 | {
3960 | "url": "https://phpunit.de/donate.html",
3961 | "type": "custom"
3962 | },
3963 | {
3964 | "url": "https://github.com/sebastianbergmann",
3965 | "type": "github"
3966 | }
3967 | ],
3968 | "time": "2021-06-23T05:12:43+00:00"
3969 | },
3970 | {
3971 | "name": "sebastian/code-unit-reverse-lookup",
3972 | "version": "1.0.2",
3973 | "source": {
3974 | "type": "git",
3975 | "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
3976 | "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619"
3977 | },
3978 | "dist": {
3979 | "type": "zip",
3980 | "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/1de8cd5c010cb153fcd68b8d0f64606f523f7619",
3981 | "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619",
3982 | "shasum": ""
3983 | },
3984 | "require": {
3985 | "php": ">=5.6"
3986 | },
3987 | "require-dev": {
3988 | "phpunit/phpunit": "^8.5"
3989 | },
3990 | "type": "library",
3991 | "extra": {
3992 | "branch-alias": {
3993 | "dev-master": "1.0.x-dev"
3994 | }
3995 | },
3996 | "autoload": {
3997 | "classmap": [
3998 | "src/"
3999 | ]
4000 | },
4001 | "notification-url": "https://packagist.org/downloads/",
4002 | "license": [
4003 | "BSD-3-Clause"
4004 | ],
4005 | "authors": [
4006 | {
4007 | "name": "Sebastian Bergmann",
4008 | "email": "sebastian@phpunit.de"
4009 | }
4010 | ],
4011 | "description": "Looks up which function or method a line of code belongs to",
4012 | "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
4013 | "support": {
4014 | "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues",
4015 | "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/1.0.2"
4016 | },
4017 | "funding": [
4018 | {
4019 | "url": "https://github.com/sebastianbergmann",
4020 | "type": "github"
4021 | }
4022 | ],
4023 | "time": "2020-11-30T08:15:22+00:00"
4024 | },
4025 | {
4026 | "name": "sebastian/comparator",
4027 | "version": "3.0.3",
4028 | "source": {
4029 | "type": "git",
4030 | "url": "https://github.com/sebastianbergmann/comparator.git",
4031 | "reference": "1071dfcef776a57013124ff35e1fc41ccd294758"
4032 | },
4033 | "dist": {
4034 | "type": "zip",
4035 | "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/1071dfcef776a57013124ff35e1fc41ccd294758",
4036 | "reference": "1071dfcef776a57013124ff35e1fc41ccd294758",
4037 | "shasum": ""
4038 | },
4039 | "require": {
4040 | "php": ">=7.1",
4041 | "sebastian/diff": "^3.0",
4042 | "sebastian/exporter": "^3.1"
4043 | },
4044 | "require-dev": {
4045 | "phpunit/phpunit": "^8.5"
4046 | },
4047 | "type": "library",
4048 | "extra": {
4049 | "branch-alias": {
4050 | "dev-master": "3.0-dev"
4051 | }
4052 | },
4053 | "autoload": {
4054 | "classmap": [
4055 | "src/"
4056 | ]
4057 | },
4058 | "notification-url": "https://packagist.org/downloads/",
4059 | "license": [
4060 | "BSD-3-Clause"
4061 | ],
4062 | "authors": [
4063 | {
4064 | "name": "Sebastian Bergmann",
4065 | "email": "sebastian@phpunit.de"
4066 | },
4067 | {
4068 | "name": "Jeff Welch",
4069 | "email": "whatthejeff@gmail.com"
4070 | },
4071 | {
4072 | "name": "Volker Dusch",
4073 | "email": "github@wallbash.com"
4074 | },
4075 | {
4076 | "name": "Bernhard Schussek",
4077 | "email": "bschussek@2bepublished.at"
4078 | }
4079 | ],
4080 | "description": "Provides the functionality to compare PHP values for equality",
4081 | "homepage": "https://github.com/sebastianbergmann/comparator",
4082 | "keywords": [
4083 | "comparator",
4084 | "compare",
4085 | "equality"
4086 | ],
4087 | "support": {
4088 | "issues": "https://github.com/sebastianbergmann/comparator/issues",
4089 | "source": "https://github.com/sebastianbergmann/comparator/tree/3.0.3"
4090 | },
4091 | "funding": [
4092 | {
4093 | "url": "https://github.com/sebastianbergmann",
4094 | "type": "github"
4095 | }
4096 | ],
4097 | "time": "2020-11-30T08:04:30+00:00"
4098 | },
4099 | {
4100 | "name": "sebastian/diff",
4101 | "version": "3.0.3",
4102 | "source": {
4103 | "type": "git",
4104 | "url": "https://github.com/sebastianbergmann/diff.git",
4105 | "reference": "14f72dd46eaf2f2293cbe79c93cc0bc43161a211"
4106 | },
4107 | "dist": {
4108 | "type": "zip",
4109 | "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/14f72dd46eaf2f2293cbe79c93cc0bc43161a211",
4110 | "reference": "14f72dd46eaf2f2293cbe79c93cc0bc43161a211",
4111 | "shasum": ""
4112 | },
4113 | "require": {
4114 | "php": ">=7.1"
4115 | },
4116 | "require-dev": {
4117 | "phpunit/phpunit": "^7.5 || ^8.0",
4118 | "symfony/process": "^2 || ^3.3 || ^4"
4119 | },
4120 | "type": "library",
4121 | "extra": {
4122 | "branch-alias": {
4123 | "dev-master": "3.0-dev"
4124 | }
4125 | },
4126 | "autoload": {
4127 | "classmap": [
4128 | "src/"
4129 | ]
4130 | },
4131 | "notification-url": "https://packagist.org/downloads/",
4132 | "license": [
4133 | "BSD-3-Clause"
4134 | ],
4135 | "authors": [
4136 | {
4137 | "name": "Sebastian Bergmann",
4138 | "email": "sebastian@phpunit.de"
4139 | },
4140 | {
4141 | "name": "Kore Nordmann",
4142 | "email": "mail@kore-nordmann.de"
4143 | }
4144 | ],
4145 | "description": "Diff implementation",
4146 | "homepage": "https://github.com/sebastianbergmann/diff",
4147 | "keywords": [
4148 | "diff",
4149 | "udiff",
4150 | "unidiff",
4151 | "unified diff"
4152 | ],
4153 | "support": {
4154 | "issues": "https://github.com/sebastianbergmann/diff/issues",
4155 | "source": "https://github.com/sebastianbergmann/diff/tree/3.0.3"
4156 | },
4157 | "funding": [
4158 | {
4159 | "url": "https://github.com/sebastianbergmann",
4160 | "type": "github"
4161 | }
4162 | ],
4163 | "time": "2020-11-30T07:59:04+00:00"
4164 | },
4165 | {
4166 | "name": "sebastian/environment",
4167 | "version": "4.2.4",
4168 | "source": {
4169 | "type": "git",
4170 | "url": "https://github.com/sebastianbergmann/environment.git",
4171 | "reference": "d47bbbad83711771f167c72d4e3f25f7fcc1f8b0"
4172 | },
4173 | "dist": {
4174 | "type": "zip",
4175 | "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/d47bbbad83711771f167c72d4e3f25f7fcc1f8b0",
4176 | "reference": "d47bbbad83711771f167c72d4e3f25f7fcc1f8b0",
4177 | "shasum": ""
4178 | },
4179 | "require": {
4180 | "php": ">=7.1"
4181 | },
4182 | "require-dev": {
4183 | "phpunit/phpunit": "^7.5"
4184 | },
4185 | "suggest": {
4186 | "ext-posix": "*"
4187 | },
4188 | "type": "library",
4189 | "extra": {
4190 | "branch-alias": {
4191 | "dev-master": "4.2-dev"
4192 | }
4193 | },
4194 | "autoload": {
4195 | "classmap": [
4196 | "src/"
4197 | ]
4198 | },
4199 | "notification-url": "https://packagist.org/downloads/",
4200 | "license": [
4201 | "BSD-3-Clause"
4202 | ],
4203 | "authors": [
4204 | {
4205 | "name": "Sebastian Bergmann",
4206 | "email": "sebastian@phpunit.de"
4207 | }
4208 | ],
4209 | "description": "Provides functionality to handle HHVM/PHP environments",
4210 | "homepage": "http://www.github.com/sebastianbergmann/environment",
4211 | "keywords": [
4212 | "Xdebug",
4213 | "environment",
4214 | "hhvm"
4215 | ],
4216 | "support": {
4217 | "issues": "https://github.com/sebastianbergmann/environment/issues",
4218 | "source": "https://github.com/sebastianbergmann/environment/tree/4.2.4"
4219 | },
4220 | "funding": [
4221 | {
4222 | "url": "https://github.com/sebastianbergmann",
4223 | "type": "github"
4224 | }
4225 | ],
4226 | "time": "2020-11-30T07:53:42+00:00"
4227 | },
4228 | {
4229 | "name": "sebastian/exporter",
4230 | "version": "3.1.3",
4231 | "source": {
4232 | "type": "git",
4233 | "url": "https://github.com/sebastianbergmann/exporter.git",
4234 | "reference": "6b853149eab67d4da22291d36f5b0631c0fd856e"
4235 | },
4236 | "dist": {
4237 | "type": "zip",
4238 | "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/6b853149eab67d4da22291d36f5b0631c0fd856e",
4239 | "reference": "6b853149eab67d4da22291d36f5b0631c0fd856e",
4240 | "shasum": ""
4241 | },
4242 | "require": {
4243 | "php": ">=7.0",
4244 | "sebastian/recursion-context": "^3.0"
4245 | },
4246 | "require-dev": {
4247 | "ext-mbstring": "*",
4248 | "phpunit/phpunit": "^6.0"
4249 | },
4250 | "type": "library",
4251 | "extra": {
4252 | "branch-alias": {
4253 | "dev-master": "3.1.x-dev"
4254 | }
4255 | },
4256 | "autoload": {
4257 | "classmap": [
4258 | "src/"
4259 | ]
4260 | },
4261 | "notification-url": "https://packagist.org/downloads/",
4262 | "license": [
4263 | "BSD-3-Clause"
4264 | ],
4265 | "authors": [
4266 | {
4267 | "name": "Sebastian Bergmann",
4268 | "email": "sebastian@phpunit.de"
4269 | },
4270 | {
4271 | "name": "Jeff Welch",
4272 | "email": "whatthejeff@gmail.com"
4273 | },
4274 | {
4275 | "name": "Volker Dusch",
4276 | "email": "github@wallbash.com"
4277 | },
4278 | {
4279 | "name": "Adam Harvey",
4280 | "email": "aharvey@php.net"
4281 | },
4282 | {
4283 | "name": "Bernhard Schussek",
4284 | "email": "bschussek@gmail.com"
4285 | }
4286 | ],
4287 | "description": "Provides the functionality to export PHP variables for visualization",
4288 | "homepage": "http://www.github.com/sebastianbergmann/exporter",
4289 | "keywords": [
4290 | "export",
4291 | "exporter"
4292 | ],
4293 | "support": {
4294 | "issues": "https://github.com/sebastianbergmann/exporter/issues",
4295 | "source": "https://github.com/sebastianbergmann/exporter/tree/3.1.3"
4296 | },
4297 | "funding": [
4298 | {
4299 | "url": "https://github.com/sebastianbergmann",
4300 | "type": "github"
4301 | }
4302 | ],
4303 | "time": "2020-11-30T07:47:53+00:00"
4304 | },
4305 | {
4306 | "name": "sebastian/global-state",
4307 | "version": "3.0.1",
4308 | "source": {
4309 | "type": "git",
4310 | "url": "https://github.com/sebastianbergmann/global-state.git",
4311 | "reference": "474fb9edb7ab891665d3bfc6317f42a0a150454b"
4312 | },
4313 | "dist": {
4314 | "type": "zip",
4315 | "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/474fb9edb7ab891665d3bfc6317f42a0a150454b",
4316 | "reference": "474fb9edb7ab891665d3bfc6317f42a0a150454b",
4317 | "shasum": ""
4318 | },
4319 | "require": {
4320 | "php": ">=7.2",
4321 | "sebastian/object-reflector": "^1.1.1",
4322 | "sebastian/recursion-context": "^3.0"
4323 | },
4324 | "require-dev": {
4325 | "ext-dom": "*",
4326 | "phpunit/phpunit": "^8.0"
4327 | },
4328 | "suggest": {
4329 | "ext-uopz": "*"
4330 | },
4331 | "type": "library",
4332 | "extra": {
4333 | "branch-alias": {
4334 | "dev-master": "3.0-dev"
4335 | }
4336 | },
4337 | "autoload": {
4338 | "classmap": [
4339 | "src/"
4340 | ]
4341 | },
4342 | "notification-url": "https://packagist.org/downloads/",
4343 | "license": [
4344 | "BSD-3-Clause"
4345 | ],
4346 | "authors": [
4347 | {
4348 | "name": "Sebastian Bergmann",
4349 | "email": "sebastian@phpunit.de"
4350 | }
4351 | ],
4352 | "description": "Snapshotting of global state",
4353 | "homepage": "http://www.github.com/sebastianbergmann/global-state",
4354 | "keywords": [
4355 | "global state"
4356 | ],
4357 | "support": {
4358 | "issues": "https://github.com/sebastianbergmann/global-state/issues",
4359 | "source": "https://github.com/sebastianbergmann/global-state/tree/3.0.1"
4360 | },
4361 | "funding": [
4362 | {
4363 | "url": "https://github.com/sebastianbergmann",
4364 | "type": "github"
4365 | }
4366 | ],
4367 | "time": "2020-11-30T07:43:24+00:00"
4368 | },
4369 | {
4370 | "name": "sebastian/object-enumerator",
4371 | "version": "3.0.4",
4372 | "source": {
4373 | "type": "git",
4374 | "url": "https://github.com/sebastianbergmann/object-enumerator.git",
4375 | "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2"
4376 | },
4377 | "dist": {
4378 | "type": "zip",
4379 | "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2",
4380 | "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2",
4381 | "shasum": ""
4382 | },
4383 | "require": {
4384 | "php": ">=7.0",
4385 | "sebastian/object-reflector": "^1.1.1",
4386 | "sebastian/recursion-context": "^3.0"
4387 | },
4388 | "require-dev": {
4389 | "phpunit/phpunit": "^6.0"
4390 | },
4391 | "type": "library",
4392 | "extra": {
4393 | "branch-alias": {
4394 | "dev-master": "3.0.x-dev"
4395 | }
4396 | },
4397 | "autoload": {
4398 | "classmap": [
4399 | "src/"
4400 | ]
4401 | },
4402 | "notification-url": "https://packagist.org/downloads/",
4403 | "license": [
4404 | "BSD-3-Clause"
4405 | ],
4406 | "authors": [
4407 | {
4408 | "name": "Sebastian Bergmann",
4409 | "email": "sebastian@phpunit.de"
4410 | }
4411 | ],
4412 | "description": "Traverses array structures and object graphs to enumerate all referenced objects",
4413 | "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
4414 | "support": {
4415 | "issues": "https://github.com/sebastianbergmann/object-enumerator/issues",
4416 | "source": "https://github.com/sebastianbergmann/object-enumerator/tree/3.0.4"
4417 | },
4418 | "funding": [
4419 | {
4420 | "url": "https://github.com/sebastianbergmann",
4421 | "type": "github"
4422 | }
4423 | ],
4424 | "time": "2020-11-30T07:40:27+00:00"
4425 | },
4426 | {
4427 | "name": "sebastian/object-reflector",
4428 | "version": "1.1.2",
4429 | "source": {
4430 | "type": "git",
4431 | "url": "https://github.com/sebastianbergmann/object-reflector.git",
4432 | "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d"
4433 | },
4434 | "dist": {
4435 | "type": "zip",
4436 | "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/9b8772b9cbd456ab45d4a598d2dd1a1bced6363d",
4437 | "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d",
4438 | "shasum": ""
4439 | },
4440 | "require": {
4441 | "php": ">=7.0"
4442 | },
4443 | "require-dev": {
4444 | "phpunit/phpunit": "^6.0"
4445 | },
4446 | "type": "library",
4447 | "extra": {
4448 | "branch-alias": {
4449 | "dev-master": "1.1-dev"
4450 | }
4451 | },
4452 | "autoload": {
4453 | "classmap": [
4454 | "src/"
4455 | ]
4456 | },
4457 | "notification-url": "https://packagist.org/downloads/",
4458 | "license": [
4459 | "BSD-3-Clause"
4460 | ],
4461 | "authors": [
4462 | {
4463 | "name": "Sebastian Bergmann",
4464 | "email": "sebastian@phpunit.de"
4465 | }
4466 | ],
4467 | "description": "Allows reflection of object attributes, including inherited and non-public ones",
4468 | "homepage": "https://github.com/sebastianbergmann/object-reflector/",
4469 | "support": {
4470 | "issues": "https://github.com/sebastianbergmann/object-reflector/issues",
4471 | "source": "https://github.com/sebastianbergmann/object-reflector/tree/1.1.2"
4472 | },
4473 | "funding": [
4474 | {
4475 | "url": "https://github.com/sebastianbergmann",
4476 | "type": "github"
4477 | }
4478 | ],
4479 | "time": "2020-11-30T07:37:18+00:00"
4480 | },
4481 | {
4482 | "name": "sebastian/recursion-context",
4483 | "version": "3.0.1",
4484 | "source": {
4485 | "type": "git",
4486 | "url": "https://github.com/sebastianbergmann/recursion-context.git",
4487 | "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb"
4488 | },
4489 | "dist": {
4490 | "type": "zip",
4491 | "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/367dcba38d6e1977be014dc4b22f47a484dac7fb",
4492 | "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb",
4493 | "shasum": ""
4494 | },
4495 | "require": {
4496 | "php": ">=7.0"
4497 | },
4498 | "require-dev": {
4499 | "phpunit/phpunit": "^6.0"
4500 | },
4501 | "type": "library",
4502 | "extra": {
4503 | "branch-alias": {
4504 | "dev-master": "3.0.x-dev"
4505 | }
4506 | },
4507 | "autoload": {
4508 | "classmap": [
4509 | "src/"
4510 | ]
4511 | },
4512 | "notification-url": "https://packagist.org/downloads/",
4513 | "license": [
4514 | "BSD-3-Clause"
4515 | ],
4516 | "authors": [
4517 | {
4518 | "name": "Sebastian Bergmann",
4519 | "email": "sebastian@phpunit.de"
4520 | },
4521 | {
4522 | "name": "Jeff Welch",
4523 | "email": "whatthejeff@gmail.com"
4524 | },
4525 | {
4526 | "name": "Adam Harvey",
4527 | "email": "aharvey@php.net"
4528 | }
4529 | ],
4530 | "description": "Provides functionality to recursively process PHP variables",
4531 | "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
4532 | "support": {
4533 | "issues": "https://github.com/sebastianbergmann/recursion-context/issues",
4534 | "source": "https://github.com/sebastianbergmann/recursion-context/tree/3.0.1"
4535 | },
4536 | "funding": [
4537 | {
4538 | "url": "https://github.com/sebastianbergmann",
4539 | "type": "github"
4540 | }
4541 | ],
4542 | "time": "2020-11-30T07:34:24+00:00"
4543 | },
4544 | {
4545 | "name": "sebastian/resource-operations",
4546 | "version": "2.0.2",
4547 | "source": {
4548 | "type": "git",
4549 | "url": "https://github.com/sebastianbergmann/resource-operations.git",
4550 | "reference": "31d35ca87926450c44eae7e2611d45a7a65ea8b3"
4551 | },
4552 | "dist": {
4553 | "type": "zip",
4554 | "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/31d35ca87926450c44eae7e2611d45a7a65ea8b3",
4555 | "reference": "31d35ca87926450c44eae7e2611d45a7a65ea8b3",
4556 | "shasum": ""
4557 | },
4558 | "require": {
4559 | "php": ">=7.1"
4560 | },
4561 | "type": "library",
4562 | "extra": {
4563 | "branch-alias": {
4564 | "dev-master": "2.0-dev"
4565 | }
4566 | },
4567 | "autoload": {
4568 | "classmap": [
4569 | "src/"
4570 | ]
4571 | },
4572 | "notification-url": "https://packagist.org/downloads/",
4573 | "license": [
4574 | "BSD-3-Clause"
4575 | ],
4576 | "authors": [
4577 | {
4578 | "name": "Sebastian Bergmann",
4579 | "email": "sebastian@phpunit.de"
4580 | }
4581 | ],
4582 | "description": "Provides a list of PHP built-in functions that operate on resources",
4583 | "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
4584 | "support": {
4585 | "issues": "https://github.com/sebastianbergmann/resource-operations/issues",
4586 | "source": "https://github.com/sebastianbergmann/resource-operations/tree/2.0.2"
4587 | },
4588 | "funding": [
4589 | {
4590 | "url": "https://github.com/sebastianbergmann",
4591 | "type": "github"
4592 | }
4593 | ],
4594 | "time": "2020-11-30T07:30:19+00:00"
4595 | },
4596 | {
4597 | "name": "sebastian/type",
4598 | "version": "1.1.4",
4599 | "source": {
4600 | "type": "git",
4601 | "url": "https://github.com/sebastianbergmann/type.git",
4602 | "reference": "0150cfbc4495ed2df3872fb31b26781e4e077eb4"
4603 | },
4604 | "dist": {
4605 | "type": "zip",
4606 | "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/0150cfbc4495ed2df3872fb31b26781e4e077eb4",
4607 | "reference": "0150cfbc4495ed2df3872fb31b26781e4e077eb4",
4608 | "shasum": ""
4609 | },
4610 | "require": {
4611 | "php": ">=7.2"
4612 | },
4613 | "require-dev": {
4614 | "phpunit/phpunit": "^8.2"
4615 | },
4616 | "type": "library",
4617 | "extra": {
4618 | "branch-alias": {
4619 | "dev-master": "1.1-dev"
4620 | }
4621 | },
4622 | "autoload": {
4623 | "classmap": [
4624 | "src/"
4625 | ]
4626 | },
4627 | "notification-url": "https://packagist.org/downloads/",
4628 | "license": [
4629 | "BSD-3-Clause"
4630 | ],
4631 | "authors": [
4632 | {
4633 | "name": "Sebastian Bergmann",
4634 | "email": "sebastian@phpunit.de",
4635 | "role": "lead"
4636 | }
4637 | ],
4638 | "description": "Collection of value objects that represent the types of the PHP type system",
4639 | "homepage": "https://github.com/sebastianbergmann/type",
4640 | "support": {
4641 | "issues": "https://github.com/sebastianbergmann/type/issues",
4642 | "source": "https://github.com/sebastianbergmann/type/tree/1.1.4"
4643 | },
4644 | "funding": [
4645 | {
4646 | "url": "https://github.com/sebastianbergmann",
4647 | "type": "github"
4648 | }
4649 | ],
4650 | "time": "2020-11-30T07:25:11+00:00"
4651 | },
4652 | {
4653 | "name": "sebastian/version",
4654 | "version": "2.0.1",
4655 | "source": {
4656 | "type": "git",
4657 | "url": "https://github.com/sebastianbergmann/version.git",
4658 | "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019"
4659 | },
4660 | "dist": {
4661 | "type": "zip",
4662 | "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019",
4663 | "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019",
4664 | "shasum": ""
4665 | },
4666 | "require": {
4667 | "php": ">=5.6"
4668 | },
4669 | "type": "library",
4670 | "extra": {
4671 | "branch-alias": {
4672 | "dev-master": "2.0.x-dev"
4673 | }
4674 | },
4675 | "autoload": {
4676 | "classmap": [
4677 | "src/"
4678 | ]
4679 | },
4680 | "notification-url": "https://packagist.org/downloads/",
4681 | "license": [
4682 | "BSD-3-Clause"
4683 | ],
4684 | "authors": [
4685 | {
4686 | "name": "Sebastian Bergmann",
4687 | "email": "sebastian@phpunit.de",
4688 | "role": "lead"
4689 | }
4690 | ],
4691 | "description": "Library that helps with managing the version number of Git-hosted PHP projects",
4692 | "homepage": "https://github.com/sebastianbergmann/version",
4693 | "support": {
4694 | "issues": "https://github.com/sebastianbergmann/version/issues",
4695 | "source": "https://github.com/sebastianbergmann/version/tree/master"
4696 | },
4697 | "time": "2016-10-03T07:35:21+00:00"
4698 | },
4699 | {
4700 | "name": "squizlabs/php_codesniffer",
4701 | "version": "3.6.0",
4702 | "source": {
4703 | "type": "git",
4704 | "url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
4705 | "reference": "ffced0d2c8fa8e6cdc4d695a743271fab6c38625"
4706 | },
4707 | "dist": {
4708 | "type": "zip",
4709 | "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/ffced0d2c8fa8e6cdc4d695a743271fab6c38625",
4710 | "reference": "ffced0d2c8fa8e6cdc4d695a743271fab6c38625",
4711 | "shasum": ""
4712 | },
4713 | "require": {
4714 | "ext-simplexml": "*",
4715 | "ext-tokenizer": "*",
4716 | "ext-xmlwriter": "*",
4717 | "php": ">=5.4.0"
4718 | },
4719 | "require-dev": {
4720 | "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0"
4721 | },
4722 | "bin": [
4723 | "bin/phpcs",
4724 | "bin/phpcbf"
4725 | ],
4726 | "type": "library",
4727 | "extra": {
4728 | "branch-alias": {
4729 | "dev-master": "3.x-dev"
4730 | }
4731 | },
4732 | "notification-url": "https://packagist.org/downloads/",
4733 | "license": [
4734 | "BSD-3-Clause"
4735 | ],
4736 | "authors": [
4737 | {
4738 | "name": "Greg Sherwood",
4739 | "role": "lead"
4740 | }
4741 | ],
4742 | "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.",
4743 | "homepage": "https://github.com/squizlabs/PHP_CodeSniffer",
4744 | "keywords": [
4745 | "phpcs",
4746 | "standards"
4747 | ],
4748 | "support": {
4749 | "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues",
4750 | "source": "https://github.com/squizlabs/PHP_CodeSniffer",
4751 | "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki"
4752 | },
4753 | "time": "2021-04-09T00:54:41+00:00"
4754 | },
4755 | {
4756 | "name": "theseer/tokenizer",
4757 | "version": "1.2.0",
4758 | "source": {
4759 | "type": "git",
4760 | "url": "https://github.com/theseer/tokenizer.git",
4761 | "reference": "75a63c33a8577608444246075ea0af0d052e452a"
4762 | },
4763 | "dist": {
4764 | "type": "zip",
4765 | "url": "https://api.github.com/repos/theseer/tokenizer/zipball/75a63c33a8577608444246075ea0af0d052e452a",
4766 | "reference": "75a63c33a8577608444246075ea0af0d052e452a",
4767 | "shasum": ""
4768 | },
4769 | "require": {
4770 | "ext-dom": "*",
4771 | "ext-tokenizer": "*",
4772 | "ext-xmlwriter": "*",
4773 | "php": "^7.2 || ^8.0"
4774 | },
4775 | "type": "library",
4776 | "autoload": {
4777 | "classmap": [
4778 | "src/"
4779 | ]
4780 | },
4781 | "notification-url": "https://packagist.org/downloads/",
4782 | "license": [
4783 | "BSD-3-Clause"
4784 | ],
4785 | "authors": [
4786 | {
4787 | "name": "Arne Blankerts",
4788 | "email": "arne@blankerts.de",
4789 | "role": "Developer"
4790 | }
4791 | ],
4792 | "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
4793 | "support": {
4794 | "issues": "https://github.com/theseer/tokenizer/issues",
4795 | "source": "https://github.com/theseer/tokenizer/tree/master"
4796 | },
4797 | "funding": [
4798 | {
4799 | "url": "https://github.com/theseer",
4800 | "type": "github"
4801 | }
4802 | ],
4803 | "time": "2020-07-12T23:59:07+00:00"
4804 | },
4805 | {
4806 | "name": "webmozart/assert",
4807 | "version": "1.10.0",
4808 | "source": {
4809 | "type": "git",
4810 | "url": "https://github.com/webmozarts/assert.git",
4811 | "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25"
4812 | },
4813 | "dist": {
4814 | "type": "zip",
4815 | "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25",
4816 | "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25",
4817 | "shasum": ""
4818 | },
4819 | "require": {
4820 | "php": "^7.2 || ^8.0",
4821 | "symfony/polyfill-ctype": "^1.8"
4822 | },
4823 | "conflict": {
4824 | "phpstan/phpstan": "<0.12.20",
4825 | "vimeo/psalm": "<4.6.1 || 4.6.2"
4826 | },
4827 | "require-dev": {
4828 | "phpunit/phpunit": "^8.5.13"
4829 | },
4830 | "type": "library",
4831 | "extra": {
4832 | "branch-alias": {
4833 | "dev-master": "1.10-dev"
4834 | }
4835 | },
4836 | "autoload": {
4837 | "psr-4": {
4838 | "Webmozart\\Assert\\": "src/"
4839 | }
4840 | },
4841 | "notification-url": "https://packagist.org/downloads/",
4842 | "license": [
4843 | "MIT"
4844 | ],
4845 | "authors": [
4846 | {
4847 | "name": "Bernhard Schussek",
4848 | "email": "bschussek@gmail.com"
4849 | }
4850 | ],
4851 | "description": "Assertions to validate method input/output with nice error messages.",
4852 | "keywords": [
4853 | "assert",
4854 | "check",
4855 | "validate"
4856 | ],
4857 | "support": {
4858 | "issues": "https://github.com/webmozarts/assert/issues",
4859 | "source": "https://github.com/webmozarts/assert/tree/1.10.0"
4860 | },
4861 | "time": "2021-03-09T10:59:23+00:00"
4862 | }
4863 | ],
4864 | "aliases": [],
4865 | "minimum-stability": "stable",
4866 | "stability-flags": [],
4867 | "prefer-stable": false,
4868 | "prefer-lowest": false,
4869 | "platform": {
4870 | "php": ">=7.3",
4871 | "ext-json": "*"
4872 | },
4873 | "platform-dev": [],
4874 | "plugin-api-version": "2.1.0"
4875 | }
4876 |
--------------------------------------------------------------------------------
/phpstan.neon:
--------------------------------------------------------------------------------
1 | includes:
2 | - vendor/phpstan/phpstan-mockery/extension.neon
3 |
4 | parameters:
5 | excludes_analyse:
6 | - 'src/RawSqsServiceProvider.php'
--------------------------------------------------------------------------------
/phpunit.xml:
--------------------------------------------------------------------------------
1 |
2 |
11 |
12 |
13 | ./tests
14 |
15 |
16 |
17 |
18 | ./src
19 |
20 | src/RawSqsServiceProvider.php
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/src/RawSqsConnector.php:
--------------------------------------------------------------------------------
1 | $config
17 | * @return \Illuminate\Contracts\Queue\Queue
18 | */
19 | public function connect(array $config)
20 | {
21 | $config = $this->getDefaultConfiguration($config);
22 |
23 | if (!class_exists($config['job_class'])) {
24 | throw new \InvalidArgumentException(
25 | 'Raw SQS Connector - class ' . $config['job_class'] . ' does not exist'
26 | );
27 | }
28 |
29 | if (!is_subclass_of($config['job_class'], RawSqsJob::class)) {
30 | throw new \InvalidArgumentException(
31 | 'Raw SQS Connector - ' . $config['job_class'] . ' must be a subclass of ' . RawSqsJob::class
32 | );
33 | }
34 |
35 | if ($config['key'] && $config['secret']) {
36 | $config['credentials'] = Arr::only($config, ['key', 'secret', 'token']);
37 | }
38 |
39 | $rawSqsQueue = new RawSqsQueue(
40 | new SqsClient($config),
41 | $config['queue'],
42 | $config['prefix'] ?? ''
43 | );
44 |
45 | if (class_exists($config['job_class'])) {
46 | $rawSqsQueue->setJobClass($config['job_class']);
47 | }
48 |
49 | return $rawSqsQueue;
50 | }
51 |
52 | /**
53 | * Get the default configuration for SQS.
54 | *
55 | * @param array $config
56 | * @return array
57 | */
58 | protected function getDefaultConfiguration(array $config): array
59 | {
60 | return array_merge([
61 | 'version' => 'latest',
62 | 'http' => [
63 | 'timeout' => 60,
64 | 'connect_timeout' => 60,
65 | ],
66 | ], $config);
67 | }
68 | }
69 |
--------------------------------------------------------------------------------
/src/RawSqsJob.php:
--------------------------------------------------------------------------------
1 | data = $data;
24 | }
25 |
26 |
27 | /**
28 | * @return mixed
29 | */
30 | public function getData()
31 | {
32 | return $this->data;
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/src/RawSqsQueue.php:
--------------------------------------------------------------------------------
1 | sqs->receiveMessage([
24 | 'QueueUrl' => $queue = $this->getQueue($queue),
25 | 'AttributeNames' => ['All'],
26 | ]);
27 |
28 | if (! is_null($response['Messages']) && count($response['Messages']) > 0) {
29 | $message = $response['Messages'][0];
30 |
31 | $jobBody = json_decode($message['Body'], true);
32 |
33 | $jobClass = $this->getJobClass();
34 |
35 | $captureJob = new $jobClass($jobBody);
36 |
37 | $payload = $this->createPayload($captureJob, $queue, $jobBody);
38 | $message['Body'] = $payload;
39 |
40 |
41 | return new SqsJob(
42 | $this->container,
43 | $this->sqs,
44 | $message,
45 | $this->connectionName,
46 | $queue
47 | );
48 | }
49 |
50 | return null;
51 | }
52 |
53 | /**
54 | * @param object|string $job
55 | * @param string $data
56 | * @param null $queue
57 | * @throws InvalidPayloadException
58 | */
59 | public function push($job, $data = '', $queue = null)
60 | {
61 | throw new InvalidPayloadException('push is not permitted for raw-sqs connector');
62 | }
63 |
64 | /**
65 | * @param string $payload
66 | * @param null $queue
67 | * @param array $options
68 | * @throws InvalidPayloadException
69 | */
70 | public function pushRaw($payload, $queue = null, array $options = [])
71 | {
72 | throw new InvalidPayloadException('pushRaw is not permitted for raw-sqs connector');
73 | }
74 |
75 | /**
76 | * Push a new job onto the queue after a delay.
77 | *
78 | * @param \DateTimeInterface|\DateInterval|int $delay
79 | * @param string $job
80 | * @param mixed $data
81 | * @param string $queue
82 | * @throws InvalidPayloadException
83 | */
84 | public function later($delay, $job, $data = '', $queue = null)
85 | {
86 | throw new InvalidPayloadException('later is not permitted for raw-sqs connector');
87 | }
88 |
89 |
90 | /**
91 | * @return string
92 | */
93 | public function getJobClass()
94 | {
95 | return $this->jobClass;
96 | }
97 |
98 | /**
99 | * @param string $jobClass
100 | * @return $this
101 | */
102 | public function setJobClass($jobClass)
103 | {
104 | $this->jobClass = $jobClass;
105 | return $this;
106 | }
107 | }
108 |
--------------------------------------------------------------------------------
/src/RawSqsServiceProvider.php:
--------------------------------------------------------------------------------
1 | app->make(QueueManager::class);
21 |
22 | $queueManager->addConnector(RawSqsConnector::QUEUE_CONNECTOR_NAME, function () {
23 | return new RawSqsConnector;
24 | });
25 | }
26 |
27 | /**
28 | * Register any application services.
29 | *
30 | * @return void
31 | */
32 | public function register()
33 | {
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/tests/RawSqsConnectorTest.php:
--------------------------------------------------------------------------------
1 | 'key',
18 | 'secret' => 'secret',
19 | 'region' => 'eu-west-2',
20 | 'queue' => 'raw-sqs',
21 | 'job_class' => TestJobClass::class
22 | ];
23 |
24 | $rawSqsQueue = $rawSqsConnector->connect($config);
25 |
26 | $this->assertInstanceOf(RawSqsQueue::class, $rawSqsQueue);
27 | }
28 |
29 | public function testShouldThrowInvalidArgumentExceptionIfClassDoesNotExist()
30 | {
31 | $this->expectException(\InvalidArgumentException::class);
32 | $this->expectExceptionMessage('Raw SQS Connector - class class_that_does_not_exist does not exist');
33 |
34 | $rawSqsConnector = new RawSqsConnector();
35 |
36 | $config = [
37 | 'job_class' => 'class_that_does_not_exist'
38 | ];
39 |
40 | $rawSqsQueue = $rawSqsConnector->connect($config);
41 | $this->assertInstanceOf(RawSqsQueue::class, $rawSqsQueue);
42 | }
43 |
44 | public function testShouldThrowInvalidArgumentExceptionIfClassDoesNotExtendRawSqsJob()
45 | {
46 | $this->expectException(\InvalidArgumentException::class);
47 | $this->expectExceptionMessage(
48 | 'Raw SQS Connector - stdClass must be a subclass of PrimitiveSense\LaravelRawSqsConnector\RawSqsJob'
49 | );
50 |
51 | $rawSqsConnector = new RawSqsConnector();
52 |
53 | $config = [
54 | 'job_class' => \stdClass::class,
55 | ];
56 |
57 | $rawSqsQueue = $rawSqsConnector->connect($config);
58 | $this->assertInstanceOf(RawSqsQueue::class, $rawSqsQueue);
59 | }
60 | }
61 |
--------------------------------------------------------------------------------
/tests/RawSqsJobTest.php:
--------------------------------------------------------------------------------
1 | 'Primitive'];
13 | $rawSqsJob = new RawSqsJob($data);
14 | $this->assertSame($data, $rawSqsJob->getData());
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/tests/RawSqsQueueTest.php:
--------------------------------------------------------------------------------
1 | json_encode([
22 | 'first_name' => $firstName,
23 | 'last_name' => $lastName
24 | ])
25 | ];
26 |
27 | $sqsClientMock = Mockery::mock(SqsClient::class);
28 | $sqsClientMock->shouldReceive('receiveMessage')
29 | ->andReturn([
30 | 'Messages' => [
31 | $sqsReturnMessage
32 | ]
33 | ]);
34 |
35 |
36 | $rawSqsQueue = new RawSqsQueue(
37 | $sqsClientMock,
38 | 'default',
39 | 'prefix'
40 | );
41 |
42 | $container = Mockery::mock(Container::class);
43 | $rawSqsQueue->setContainer($container);
44 | $rawSqsQueue->setJobClass(TestJobClass::class);
45 | $jobPayload = $rawSqsQueue->pop()->payload();
46 |
47 | $this->assertSame($jobPayload['displayName'], TestJobClass::class);
48 | $this->assertSame($jobPayload['job'], 'Illuminate\Queue\CallQueuedHandler@call');
49 | $this->assertSame($jobPayload['data']['commandName'], TestJobClass::class);
50 |
51 | $testJob = unserialize($jobPayload['data']['command']);
52 | $this->assertSame($testJob->data['first_name'], $firstName);
53 | $this->assertSame($testJob->data['last_name'], $lastName);
54 | }
55 |
56 | public function testPopShouldReturnNullIfMessagesAreNull()
57 | {
58 | $sqsClientMock = Mockery::mock(SqsClient::class);
59 | $sqsClientMock->shouldReceive('receiveMessage')
60 | ->andReturn([
61 | 'Messages' => null
62 | ]);
63 |
64 |
65 | $rawSqsQueue = new RawSqsQueue(
66 | $sqsClientMock,
67 | 'default',
68 | 'prefix'
69 | );
70 |
71 | $container = Mockery::mock(Container::class);
72 | $rawSqsQueue->setContainer($container);
73 | $rawSqsQueue->setJobClass(TestJobClass::class);
74 | $this->assertNull($rawSqsQueue->pop());
75 | }
76 |
77 | public function testPushShouldthrowInvalidPayLoadException()
78 | {
79 | $this->expectException(InvalidPayloadException::class);
80 | $this->expectExceptionMessage('push is not permitted for raw-sqs connector');
81 |
82 | $sqsClientMock = Mockery::mock(SqsClient::class);
83 |
84 | $rawSqsQueue = new RawSqsQueue(
85 | $sqsClientMock,
86 | 'default',
87 | 'prefix'
88 | );
89 |
90 | $rawSqsQueue->push(null, null, null);
91 | }
92 |
93 | public function testPushRawShouldThrowInvalidPayLoadException()
94 | {
95 | $this->expectException(InvalidPayloadException::class);
96 | $this->expectExceptionMessage('pushRaw is not permitted for raw-sqs connector');
97 |
98 | $sqsClientMock = Mockery::mock(SqsClient::class);
99 |
100 | $rawSqsQueue = new RawSqsQueue(
101 | $sqsClientMock,
102 | 'default',
103 | 'prefix'
104 | );
105 |
106 | $rawSqsQueue->pushRaw(null, null, []);
107 | }
108 |
109 | public function testLaterShouldThrowInvalidPayLoadException()
110 | {
111 | $this->expectException(InvalidPayloadException::class);
112 | $this->expectExceptionMessage('later is not permitted for raw-sqs connector');
113 |
114 | $sqsClientMock = Mockery::mock(SqsClient::class);
115 |
116 | $rawSqsQueue = new RawSqsQueue(
117 | $sqsClientMock,
118 | 'default',
119 | 'prefix'
120 | );
121 |
122 | $rawSqsQueue->later(null, null);
123 | }
124 | }
125 |
--------------------------------------------------------------------------------
/tests/Support/TestJobClass.php:
--------------------------------------------------------------------------------
1 |