├── .github └── FUNDING.yml ├── .gitignore ├── composer.json ├── composer.lock ├── cumulus ├── readme.md └── src ├── Application.php ├── CloudflareEndpoints └── UserApiToken.php ├── Commands ├── CloudflareLoginCommand.php ├── CloudflareLogoutCommand.php └── RecordsImportCommand.php ├── Config.php └── Helpers.php /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: [Orrison] 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /vendor 2 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "orrison/cumulus", 3 | "description": "Import DNS records from Laravel Vapor into Cloudflare", 4 | "keywords": [ 5 | "laravel", 6 | "vapor", 7 | "cloudflare", 8 | "dns" 9 | ], 10 | "homepage": "https://github.com/Orrison/cumulus", 11 | "license": "MIT", 12 | "bin": [ 13 | "cumulus" 14 | ], 15 | "autoload": { 16 | "psr-4": { 17 | "Cumulus\\Cumulus\\": "src/" 18 | } 19 | }, 20 | "authors": [ 21 | { 22 | "name": "Kevin Ullyott", 23 | "email": "ullyott.kevin@gmail.com" 24 | } 25 | ], 26 | "require": { 27 | "php": "^7.2|^8.0", 28 | "laravel/vapor-cli": "^1.34", 29 | "cloudflare/sdk": "^1.3", 30 | "ext-json": "*" 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /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": "885d7d90803eb8593702d311202be16a", 8 | "packages": [ 9 | { 10 | "name": "aws/aws-crt-php", 11 | "version": "v1.0.2", 12 | "source": { 13 | "type": "git", 14 | "url": "https://github.com/awslabs/aws-crt-php.git", 15 | "reference": "3942776a8c99209908ee0b287746263725685732" 16 | }, 17 | "dist": { 18 | "type": "zip", 19 | "url": "https://api.github.com/repos/awslabs/aws-crt-php/zipball/3942776a8c99209908ee0b287746263725685732", 20 | "reference": "3942776a8c99209908ee0b287746263725685732", 21 | "shasum": "" 22 | }, 23 | "require": { 24 | "php": ">=5.5" 25 | }, 26 | "require-dev": { 27 | "phpunit/phpunit": "^4.8.35|^5.4.3" 28 | }, 29 | "type": "library", 30 | "autoload": { 31 | "classmap": [ 32 | "src/" 33 | ] 34 | }, 35 | "notification-url": "https://packagist.org/downloads/", 36 | "license": [ 37 | "Apache-2.0" 38 | ], 39 | "authors": [ 40 | { 41 | "name": "AWS SDK Common Runtime Team", 42 | "email": "aws-sdk-common-runtime@amazon.com" 43 | } 44 | ], 45 | "description": "AWS Common Runtime for PHP", 46 | "homepage": "http://aws.amazon.com/sdkforphp", 47 | "keywords": [ 48 | "amazon", 49 | "aws", 50 | "crt", 51 | "sdk" 52 | ], 53 | "support": { 54 | "issues": "https://github.com/awslabs/aws-crt-php/issues", 55 | "source": "https://github.com/awslabs/aws-crt-php/tree/v1.0.2" 56 | }, 57 | "time": "2021-09-03T22:57:30+00:00" 58 | }, 59 | { 60 | "name": "aws/aws-sdk-php", 61 | "version": "3.208.7", 62 | "source": { 63 | "type": "git", 64 | "url": "https://github.com/aws/aws-sdk-php.git", 65 | "reference": "41a800dd7cf5c4ac0ef9bf8db01e838ab6a3698c" 66 | }, 67 | "dist": { 68 | "type": "zip", 69 | "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/41a800dd7cf5c4ac0ef9bf8db01e838ab6a3698c", 70 | "reference": "41a800dd7cf5c4ac0ef9bf8db01e838ab6a3698c", 71 | "shasum": "" 72 | }, 73 | "require": { 74 | "aws/aws-crt-php": "^1.0.2", 75 | "ext-json": "*", 76 | "ext-pcre": "*", 77 | "ext-simplexml": "*", 78 | "guzzlehttp/guzzle": "^5.3.3|^6.2.1|^7.0", 79 | "guzzlehttp/promises": "^1.4.0", 80 | "guzzlehttp/psr7": "^1.7.0|^2.0", 81 | "mtdowling/jmespath.php": "^2.6", 82 | "php": ">=5.5" 83 | }, 84 | "require-dev": { 85 | "andrewsville/php-token-reflection": "^1.4", 86 | "aws/aws-php-sns-message-validator": "~1.0", 87 | "behat/behat": "~3.0", 88 | "doctrine/cache": "~1.4", 89 | "ext-dom": "*", 90 | "ext-openssl": "*", 91 | "ext-pcntl": "*", 92 | "ext-sockets": "*", 93 | "nette/neon": "^2.3", 94 | "paragonie/random_compat": ">= 2", 95 | "phpunit/phpunit": "^4.8.35|^5.4.3", 96 | "psr/cache": "^1.0", 97 | "psr/simple-cache": "^1.0", 98 | "sebastian/comparator": "^1.2.3" 99 | }, 100 | "suggest": { 101 | "aws/aws-php-sns-message-validator": "To validate incoming SNS notifications", 102 | "doctrine/cache": "To use the DoctrineCacheAdapter", 103 | "ext-curl": "To send requests using cURL", 104 | "ext-openssl": "Allows working with CloudFront private distributions and verifying received SNS messages", 105 | "ext-sockets": "To use client-side monitoring" 106 | }, 107 | "type": "library", 108 | "extra": { 109 | "branch-alias": { 110 | "dev-master": "3.0-dev" 111 | } 112 | }, 113 | "autoload": { 114 | "psr-4": { 115 | "Aws\\": "src/" 116 | }, 117 | "files": [ 118 | "src/functions.php" 119 | ] 120 | }, 121 | "notification-url": "https://packagist.org/downloads/", 122 | "license": [ 123 | "Apache-2.0" 124 | ], 125 | "authors": [ 126 | { 127 | "name": "Amazon Web Services", 128 | "homepage": "http://aws.amazon.com" 129 | } 130 | ], 131 | "description": "AWS SDK for PHP - Use Amazon Web Services in your PHP project", 132 | "homepage": "http://aws.amazon.com/sdkforphp", 133 | "keywords": [ 134 | "amazon", 135 | "aws", 136 | "cloud", 137 | "dynamodb", 138 | "ec2", 139 | "glacier", 140 | "s3", 141 | "sdk" 142 | ], 143 | "support": { 144 | "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80", 145 | "issues": "https://github.com/aws/aws-sdk-php/issues", 146 | "source": "https://github.com/aws/aws-sdk-php/tree/3.208.7" 147 | }, 148 | "time": "2021-12-21T19:16:39+00:00" 149 | }, 150 | { 151 | "name": "brick/math", 152 | "version": "0.9.3", 153 | "source": { 154 | "type": "git", 155 | "url": "https://github.com/brick/math.git", 156 | "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" 157 | }, 158 | "dist": { 159 | "type": "zip", 160 | "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", 161 | "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", 162 | "shasum": "" 163 | }, 164 | "require": { 165 | "ext-json": "*", 166 | "php": "^7.1 || ^8.0" 167 | }, 168 | "require-dev": { 169 | "php-coveralls/php-coveralls": "^2.2", 170 | "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", 171 | "vimeo/psalm": "4.9.2" 172 | }, 173 | "type": "library", 174 | "autoload": { 175 | "psr-4": { 176 | "Brick\\Math\\": "src/" 177 | } 178 | }, 179 | "notification-url": "https://packagist.org/downloads/", 180 | "license": [ 181 | "MIT" 182 | ], 183 | "description": "Arbitrary-precision arithmetic library", 184 | "keywords": [ 185 | "Arbitrary-precision", 186 | "BigInteger", 187 | "BigRational", 188 | "arithmetic", 189 | "bigdecimal", 190 | "bignum", 191 | "brick", 192 | "math" 193 | ], 194 | "support": { 195 | "issues": "https://github.com/brick/math/issues", 196 | "source": "https://github.com/brick/math/tree/0.9.3" 197 | }, 198 | "funding": [ 199 | { 200 | "url": "https://github.com/BenMorel", 201 | "type": "github" 202 | }, 203 | { 204 | "url": "https://tidelift.com/funding/github/packagist/brick/math", 205 | "type": "tidelift" 206 | } 207 | ], 208 | "time": "2021-08-15T20:50:18+00:00" 209 | }, 210 | { 211 | "name": "cloudflare/sdk", 212 | "version": "1.3.0", 213 | "source": { 214 | "type": "git", 215 | "url": "https://github.com/cloudflare/cloudflare-php.git", 216 | "reference": "fdfc656aa8b78016f4722acec30b54136c027d8e" 217 | }, 218 | "dist": { 219 | "type": "zip", 220 | "url": "https://api.github.com/repos/cloudflare/cloudflare-php/zipball/fdfc656aa8b78016f4722acec30b54136c027d8e", 221 | "reference": "fdfc656aa8b78016f4722acec30b54136c027d8e", 222 | "shasum": "" 223 | }, 224 | "require": { 225 | "ext-json": "*", 226 | "guzzlehttp/guzzle": "^7.0.1", 227 | "php": ">=7.2.5", 228 | "psr/http-message": "~1.0" 229 | }, 230 | "require-dev": { 231 | "friendsofphp/php-cs-fixer": "^2.6", 232 | "phpmd/phpmd": "@stable", 233 | "phpunit/phpunit": "^5.7" 234 | }, 235 | "type": "library", 236 | "autoload": { 237 | "psr-4": { 238 | "Cloudflare\\API\\": "src/" 239 | } 240 | }, 241 | "notification-url": "https://packagist.org/downloads/", 242 | "license": [ 243 | "BSD-3-Clause" 244 | ], 245 | "authors": [ 246 | { 247 | "name": "Junade Ali", 248 | "email": "junade@cloudflare.com" 249 | } 250 | ], 251 | "description": "PHP binding for v4 of the Cloudflare Client API.", 252 | "support": { 253 | "issues": "https://github.com/cloudflare/cloudflare-php/issues", 254 | "source": "https://github.com/cloudflare/cloudflare-php/tree/1.3.0" 255 | }, 256 | "time": "2021-10-13T03:40:33+00:00" 257 | }, 258 | { 259 | "name": "doctrine/inflector", 260 | "version": "2.0.4", 261 | "source": { 262 | "type": "git", 263 | "url": "https://github.com/doctrine/inflector.git", 264 | "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" 265 | }, 266 | "dist": { 267 | "type": "zip", 268 | "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", 269 | "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", 270 | "shasum": "" 271 | }, 272 | "require": { 273 | "php": "^7.2 || ^8.0" 274 | }, 275 | "require-dev": { 276 | "doctrine/coding-standard": "^8.2", 277 | "phpstan/phpstan": "^0.12", 278 | "phpstan/phpstan-phpunit": "^0.12", 279 | "phpstan/phpstan-strict-rules": "^0.12", 280 | "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", 281 | "vimeo/psalm": "^4.10" 282 | }, 283 | "type": "library", 284 | "autoload": { 285 | "psr-4": { 286 | "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" 287 | } 288 | }, 289 | "notification-url": "https://packagist.org/downloads/", 290 | "license": [ 291 | "MIT" 292 | ], 293 | "authors": [ 294 | { 295 | "name": "Guilherme Blanco", 296 | "email": "guilhermeblanco@gmail.com" 297 | }, 298 | { 299 | "name": "Roman Borschel", 300 | "email": "roman@code-factory.org" 301 | }, 302 | { 303 | "name": "Benjamin Eberlei", 304 | "email": "kontakt@beberlei.de" 305 | }, 306 | { 307 | "name": "Jonathan Wage", 308 | "email": "jonwage@gmail.com" 309 | }, 310 | { 311 | "name": "Johannes Schmitt", 312 | "email": "schmittjoh@gmail.com" 313 | } 314 | ], 315 | "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.", 316 | "homepage": "https://www.doctrine-project.org/projects/inflector.html", 317 | "keywords": [ 318 | "inflection", 319 | "inflector", 320 | "lowercase", 321 | "manipulation", 322 | "php", 323 | "plural", 324 | "singular", 325 | "strings", 326 | "uppercase", 327 | "words" 328 | ], 329 | "support": { 330 | "issues": "https://github.com/doctrine/inflector/issues", 331 | "source": "https://github.com/doctrine/inflector/tree/2.0.4" 332 | }, 333 | "funding": [ 334 | { 335 | "url": "https://www.doctrine-project.org/sponsorship.html", 336 | "type": "custom" 337 | }, 338 | { 339 | "url": "https://www.patreon.com/phpdoctrine", 340 | "type": "patreon" 341 | }, 342 | { 343 | "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector", 344 | "type": "tidelift" 345 | } 346 | ], 347 | "time": "2021-10-22T20:16:43+00:00" 348 | }, 349 | { 350 | "name": "graham-campbell/result-type", 351 | "version": "v1.0.4", 352 | "source": { 353 | "type": "git", 354 | "url": "https://github.com/GrahamCampbell/Result-Type.git", 355 | "reference": "0690bde05318336c7221785f2a932467f98b64ca" 356 | }, 357 | "dist": { 358 | "type": "zip", 359 | "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca", 360 | "reference": "0690bde05318336c7221785f2a932467f98b64ca", 361 | "shasum": "" 362 | }, 363 | "require": { 364 | "php": "^7.0 || ^8.0", 365 | "phpoption/phpoption": "^1.8" 366 | }, 367 | "require-dev": { 368 | "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" 369 | }, 370 | "type": "library", 371 | "autoload": { 372 | "psr-4": { 373 | "GrahamCampbell\\ResultType\\": "src/" 374 | } 375 | }, 376 | "notification-url": "https://packagist.org/downloads/", 377 | "license": [ 378 | "MIT" 379 | ], 380 | "authors": [ 381 | { 382 | "name": "Graham Campbell", 383 | "email": "hello@gjcampbell.co.uk", 384 | "homepage": "https://github.com/GrahamCampbell" 385 | } 386 | ], 387 | "description": "An Implementation Of The Result Type", 388 | "keywords": [ 389 | "Graham Campbell", 390 | "GrahamCampbell", 391 | "Result Type", 392 | "Result-Type", 393 | "result" 394 | ], 395 | "support": { 396 | "issues": "https://github.com/GrahamCampbell/Result-Type/issues", 397 | "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.0.4" 398 | }, 399 | "funding": [ 400 | { 401 | "url": "https://github.com/GrahamCampbell", 402 | "type": "github" 403 | }, 404 | { 405 | "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", 406 | "type": "tidelift" 407 | } 408 | ], 409 | "time": "2021-11-21T21:41:47+00:00" 410 | }, 411 | { 412 | "name": "guzzlehttp/guzzle", 413 | "version": "7.4.1", 414 | "source": { 415 | "type": "git", 416 | "url": "https://github.com/guzzle/guzzle.git", 417 | "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79" 418 | }, 419 | "dist": { 420 | "type": "zip", 421 | "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee0a041b1760e6a53d2a39c8c34115adc2af2c79", 422 | "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79", 423 | "shasum": "" 424 | }, 425 | "require": { 426 | "ext-json": "*", 427 | "guzzlehttp/promises": "^1.5", 428 | "guzzlehttp/psr7": "^1.8.3 || ^2.1", 429 | "php": "^7.2.5 || ^8.0", 430 | "psr/http-client": "^1.0", 431 | "symfony/deprecation-contracts": "^2.2 || ^3.0" 432 | }, 433 | "provide": { 434 | "psr/http-client-implementation": "1.0" 435 | }, 436 | "require-dev": { 437 | "bamarni/composer-bin-plugin": "^1.4.1", 438 | "ext-curl": "*", 439 | "php-http/client-integration-tests": "^3.0", 440 | "phpunit/phpunit": "^8.5.5 || ^9.3.5", 441 | "psr/log": "^1.1 || ^2.0 || ^3.0" 442 | }, 443 | "suggest": { 444 | "ext-curl": "Required for CURL handler support", 445 | "ext-intl": "Required for Internationalized Domain Name (IDN) support", 446 | "psr/log": "Required for using the Log middleware" 447 | }, 448 | "type": "library", 449 | "extra": { 450 | "branch-alias": { 451 | "dev-master": "7.4-dev" 452 | } 453 | }, 454 | "autoload": { 455 | "psr-4": { 456 | "GuzzleHttp\\": "src/" 457 | }, 458 | "files": [ 459 | "src/functions_include.php" 460 | ] 461 | }, 462 | "notification-url": "https://packagist.org/downloads/", 463 | "license": [ 464 | "MIT" 465 | ], 466 | "authors": [ 467 | { 468 | "name": "Graham Campbell", 469 | "email": "hello@gjcampbell.co.uk", 470 | "homepage": "https://github.com/GrahamCampbell" 471 | }, 472 | { 473 | "name": "Michael Dowling", 474 | "email": "mtdowling@gmail.com", 475 | "homepage": "https://github.com/mtdowling" 476 | }, 477 | { 478 | "name": "Jeremy Lindblom", 479 | "email": "jeremeamia@gmail.com", 480 | "homepage": "https://github.com/jeremeamia" 481 | }, 482 | { 483 | "name": "George Mponos", 484 | "email": "gmponos@gmail.com", 485 | "homepage": "https://github.com/gmponos" 486 | }, 487 | { 488 | "name": "Tobias Nyholm", 489 | "email": "tobias.nyholm@gmail.com", 490 | "homepage": "https://github.com/Nyholm" 491 | }, 492 | { 493 | "name": "Márk Sági-Kazár", 494 | "email": "mark.sagikazar@gmail.com", 495 | "homepage": "https://github.com/sagikazarmark" 496 | }, 497 | { 498 | "name": "Tobias Schultze", 499 | "email": "webmaster@tubo-world.de", 500 | "homepage": "https://github.com/Tobion" 501 | } 502 | ], 503 | "description": "Guzzle is a PHP HTTP client library", 504 | "keywords": [ 505 | "client", 506 | "curl", 507 | "framework", 508 | "http", 509 | "http client", 510 | "psr-18", 511 | "psr-7", 512 | "rest", 513 | "web service" 514 | ], 515 | "support": { 516 | "issues": "https://github.com/guzzle/guzzle/issues", 517 | "source": "https://github.com/guzzle/guzzle/tree/7.4.1" 518 | }, 519 | "funding": [ 520 | { 521 | "url": "https://github.com/GrahamCampbell", 522 | "type": "github" 523 | }, 524 | { 525 | "url": "https://github.com/Nyholm", 526 | "type": "github" 527 | }, 528 | { 529 | "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle", 530 | "type": "tidelift" 531 | } 532 | ], 533 | "time": "2021-12-06T18:43:05+00:00" 534 | }, 535 | { 536 | "name": "guzzlehttp/promises", 537 | "version": "1.5.1", 538 | "source": { 539 | "type": "git", 540 | "url": "https://github.com/guzzle/promises.git", 541 | "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" 542 | }, 543 | "dist": { 544 | "type": "zip", 545 | "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", 546 | "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", 547 | "shasum": "" 548 | }, 549 | "require": { 550 | "php": ">=5.5" 551 | }, 552 | "require-dev": { 553 | "symfony/phpunit-bridge": "^4.4 || ^5.1" 554 | }, 555 | "type": "library", 556 | "extra": { 557 | "branch-alias": { 558 | "dev-master": "1.5-dev" 559 | } 560 | }, 561 | "autoload": { 562 | "psr-4": { 563 | "GuzzleHttp\\Promise\\": "src/" 564 | }, 565 | "files": [ 566 | "src/functions_include.php" 567 | ] 568 | }, 569 | "notification-url": "https://packagist.org/downloads/", 570 | "license": [ 571 | "MIT" 572 | ], 573 | "authors": [ 574 | { 575 | "name": "Graham Campbell", 576 | "email": "hello@gjcampbell.co.uk", 577 | "homepage": "https://github.com/GrahamCampbell" 578 | }, 579 | { 580 | "name": "Michael Dowling", 581 | "email": "mtdowling@gmail.com", 582 | "homepage": "https://github.com/mtdowling" 583 | }, 584 | { 585 | "name": "Tobias Nyholm", 586 | "email": "tobias.nyholm@gmail.com", 587 | "homepage": "https://github.com/Nyholm" 588 | }, 589 | { 590 | "name": "Tobias Schultze", 591 | "email": "webmaster@tubo-world.de", 592 | "homepage": "https://github.com/Tobion" 593 | } 594 | ], 595 | "description": "Guzzle promises library", 596 | "keywords": [ 597 | "promise" 598 | ], 599 | "support": { 600 | "issues": "https://github.com/guzzle/promises/issues", 601 | "source": "https://github.com/guzzle/promises/tree/1.5.1" 602 | }, 603 | "funding": [ 604 | { 605 | "url": "https://github.com/GrahamCampbell", 606 | "type": "github" 607 | }, 608 | { 609 | "url": "https://github.com/Nyholm", 610 | "type": "github" 611 | }, 612 | { 613 | "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", 614 | "type": "tidelift" 615 | } 616 | ], 617 | "time": "2021-10-22T20:56:57+00:00" 618 | }, 619 | { 620 | "name": "guzzlehttp/psr7", 621 | "version": "2.1.0", 622 | "source": { 623 | "type": "git", 624 | "url": "https://github.com/guzzle/psr7.git", 625 | "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72" 626 | }, 627 | "dist": { 628 | "type": "zip", 629 | "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72", 630 | "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72", 631 | "shasum": "" 632 | }, 633 | "require": { 634 | "php": "^7.2.5 || ^8.0", 635 | "psr/http-factory": "^1.0", 636 | "psr/http-message": "^1.0", 637 | "ralouphie/getallheaders": "^3.0" 638 | }, 639 | "provide": { 640 | "psr/http-factory-implementation": "1.0", 641 | "psr/http-message-implementation": "1.0" 642 | }, 643 | "require-dev": { 644 | "bamarni/composer-bin-plugin": "^1.4.1", 645 | "http-interop/http-factory-tests": "^0.9", 646 | "phpunit/phpunit": "^8.5.8 || ^9.3.10" 647 | }, 648 | "suggest": { 649 | "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" 650 | }, 651 | "type": "library", 652 | "extra": { 653 | "branch-alias": { 654 | "dev-master": "2.1-dev" 655 | } 656 | }, 657 | "autoload": { 658 | "psr-4": { 659 | "GuzzleHttp\\Psr7\\": "src/" 660 | } 661 | }, 662 | "notification-url": "https://packagist.org/downloads/", 663 | "license": [ 664 | "MIT" 665 | ], 666 | "authors": [ 667 | { 668 | "name": "Graham Campbell", 669 | "email": "hello@gjcampbell.co.uk", 670 | "homepage": "https://github.com/GrahamCampbell" 671 | }, 672 | { 673 | "name": "Michael Dowling", 674 | "email": "mtdowling@gmail.com", 675 | "homepage": "https://github.com/mtdowling" 676 | }, 677 | { 678 | "name": "George Mponos", 679 | "email": "gmponos@gmail.com", 680 | "homepage": "https://github.com/gmponos" 681 | }, 682 | { 683 | "name": "Tobias Nyholm", 684 | "email": "tobias.nyholm@gmail.com", 685 | "homepage": "https://github.com/Nyholm" 686 | }, 687 | { 688 | "name": "Márk Sági-Kazár", 689 | "email": "mark.sagikazar@gmail.com", 690 | "homepage": "https://github.com/sagikazarmark" 691 | }, 692 | { 693 | "name": "Tobias Schultze", 694 | "email": "webmaster@tubo-world.de", 695 | "homepage": "https://github.com/Tobion" 696 | }, 697 | { 698 | "name": "Márk Sági-Kazár", 699 | "email": "mark.sagikazar@gmail.com", 700 | "homepage": "https://sagikazarmark.hu" 701 | } 702 | ], 703 | "description": "PSR-7 message implementation that also provides common utility methods", 704 | "keywords": [ 705 | "http", 706 | "message", 707 | "psr-7", 708 | "request", 709 | "response", 710 | "stream", 711 | "uri", 712 | "url" 713 | ], 714 | "support": { 715 | "issues": "https://github.com/guzzle/psr7/issues", 716 | "source": "https://github.com/guzzle/psr7/tree/2.1.0" 717 | }, 718 | "funding": [ 719 | { 720 | "url": "https://github.com/GrahamCampbell", 721 | "type": "github" 722 | }, 723 | { 724 | "url": "https://github.com/Nyholm", 725 | "type": "github" 726 | }, 727 | { 728 | "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", 729 | "type": "tidelift" 730 | } 731 | ], 732 | "time": "2021-10-06T17:43:30+00:00" 733 | }, 734 | { 735 | "name": "illuminate/collections", 736 | "version": "v8.77.1", 737 | "source": { 738 | "type": "git", 739 | "url": "https://github.com/illuminate/collections.git", 740 | "reference": "bafdbd033a717aed94e4d023512f2c9eb3e8cd77" 741 | }, 742 | "dist": { 743 | "type": "zip", 744 | "url": "https://api.github.com/repos/illuminate/collections/zipball/bafdbd033a717aed94e4d023512f2c9eb3e8cd77", 745 | "reference": "bafdbd033a717aed94e4d023512f2c9eb3e8cd77", 746 | "shasum": "" 747 | }, 748 | "require": { 749 | "illuminate/contracts": "^8.0", 750 | "illuminate/macroable": "^8.0", 751 | "php": "^7.3|^8.0" 752 | }, 753 | "suggest": { 754 | "symfony/var-dumper": "Required to use the dump method (^5.4)." 755 | }, 756 | "type": "library", 757 | "extra": { 758 | "branch-alias": { 759 | "dev-master": "8.x-dev" 760 | } 761 | }, 762 | "autoload": { 763 | "psr-4": { 764 | "Illuminate\\Support\\": "" 765 | }, 766 | "files": [ 767 | "helpers.php" 768 | ] 769 | }, 770 | "notification-url": "https://packagist.org/downloads/", 771 | "license": [ 772 | "MIT" 773 | ], 774 | "authors": [ 775 | { 776 | "name": "Taylor Otwell", 777 | "email": "taylor@laravel.com" 778 | } 779 | ], 780 | "description": "The Illuminate Collections package.", 781 | "homepage": "https://laravel.com", 782 | "support": { 783 | "issues": "https://github.com/laravel/framework/issues", 784 | "source": "https://github.com/laravel/framework" 785 | }, 786 | "time": "2021-12-16T15:00:27+00:00" 787 | }, 788 | { 789 | "name": "illuminate/container", 790 | "version": "v8.77.1", 791 | "source": { 792 | "type": "git", 793 | "url": "https://github.com/illuminate/container.git", 794 | "reference": "6ac391bb27391706c5f921b85060aa2c4ca03fae" 795 | }, 796 | "dist": { 797 | "type": "zip", 798 | "url": "https://api.github.com/repos/illuminate/container/zipball/6ac391bb27391706c5f921b85060aa2c4ca03fae", 799 | "reference": "6ac391bb27391706c5f921b85060aa2c4ca03fae", 800 | "shasum": "" 801 | }, 802 | "require": { 803 | "illuminate/contracts": "^8.0", 804 | "php": "^7.3|^8.0", 805 | "psr/container": "^1.0" 806 | }, 807 | "provide": { 808 | "psr/container-implementation": "1.0" 809 | }, 810 | "type": "library", 811 | "extra": { 812 | "branch-alias": { 813 | "dev-master": "8.x-dev" 814 | } 815 | }, 816 | "autoload": { 817 | "psr-4": { 818 | "Illuminate\\Container\\": "" 819 | } 820 | }, 821 | "notification-url": "https://packagist.org/downloads/", 822 | "license": [ 823 | "MIT" 824 | ], 825 | "authors": [ 826 | { 827 | "name": "Taylor Otwell", 828 | "email": "taylor@laravel.com" 829 | } 830 | ], 831 | "description": "The Illuminate Container package.", 832 | "homepage": "https://laravel.com", 833 | "support": { 834 | "issues": "https://github.com/laravel/framework/issues", 835 | "source": "https://github.com/laravel/framework" 836 | }, 837 | "time": "2021-11-17T15:04:30+00:00" 838 | }, 839 | { 840 | "name": "illuminate/contracts", 841 | "version": "v8.77.1", 842 | "source": { 843 | "type": "git", 844 | "url": "https://github.com/illuminate/contracts.git", 845 | "reference": "9baa9f781071e67d7b171775bd3be7ead13ddd29" 846 | }, 847 | "dist": { 848 | "type": "zip", 849 | "url": "https://api.github.com/repos/illuminate/contracts/zipball/9baa9f781071e67d7b171775bd3be7ead13ddd29", 850 | "reference": "9baa9f781071e67d7b171775bd3be7ead13ddd29", 851 | "shasum": "" 852 | }, 853 | "require": { 854 | "php": "^7.3|^8.0", 855 | "psr/container": "^1.0", 856 | "psr/simple-cache": "^1.0" 857 | }, 858 | "type": "library", 859 | "extra": { 860 | "branch-alias": { 861 | "dev-master": "8.x-dev" 862 | } 863 | }, 864 | "autoload": { 865 | "psr-4": { 866 | "Illuminate\\Contracts\\": "" 867 | } 868 | }, 869 | "notification-url": "https://packagist.org/downloads/", 870 | "license": [ 871 | "MIT" 872 | ], 873 | "authors": [ 874 | { 875 | "name": "Taylor Otwell", 876 | "email": "taylor@laravel.com" 877 | } 878 | ], 879 | "description": "The Illuminate Contracts package.", 880 | "homepage": "https://laravel.com", 881 | "support": { 882 | "issues": "https://github.com/laravel/framework/issues", 883 | "source": "https://github.com/laravel/framework" 884 | }, 885 | "time": "2021-12-14T14:40:44+00:00" 886 | }, 887 | { 888 | "name": "illuminate/filesystem", 889 | "version": "v8.77.1", 890 | "source": { 891 | "type": "git", 892 | "url": "https://github.com/illuminate/filesystem.git", 893 | "reference": "48f9d61b5da49f0fa8d9f28db8ae8c0d89e367a6" 894 | }, 895 | "dist": { 896 | "type": "zip", 897 | "url": "https://api.github.com/repos/illuminate/filesystem/zipball/48f9d61b5da49f0fa8d9f28db8ae8c0d89e367a6", 898 | "reference": "48f9d61b5da49f0fa8d9f28db8ae8c0d89e367a6", 899 | "shasum": "" 900 | }, 901 | "require": { 902 | "illuminate/collections": "^8.0", 903 | "illuminate/contracts": "^8.0", 904 | "illuminate/macroable": "^8.0", 905 | "illuminate/support": "^8.0", 906 | "php": "^7.3|^8.0", 907 | "symfony/finder": "^5.4" 908 | }, 909 | "suggest": { 910 | "ext-ftp": "Required to use the Flysystem FTP driver.", 911 | "illuminate/http": "Required for handling uploaded files (^7.0).", 912 | "league/flysystem": "Required to use the Flysystem local and FTP drivers (^1.1).", 913 | "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^1.0).", 914 | "league/flysystem-cached-adapter": "Required to use the Flysystem cache (^1.0).", 915 | "league/flysystem-sftp": "Required to use the Flysystem SFTP driver (^1.0).", 916 | "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).", 917 | "symfony/filesystem": "Required to enable support for relative symbolic links (^5.4).", 918 | "symfony/mime": "Required to enable support for guessing extensions (^5.4)." 919 | }, 920 | "type": "library", 921 | "extra": { 922 | "branch-alias": { 923 | "dev-master": "8.x-dev" 924 | } 925 | }, 926 | "autoload": { 927 | "psr-4": { 928 | "Illuminate\\Filesystem\\": "" 929 | } 930 | }, 931 | "notification-url": "https://packagist.org/downloads/", 932 | "license": [ 933 | "MIT" 934 | ], 935 | "authors": [ 936 | { 937 | "name": "Taylor Otwell", 938 | "email": "taylor@laravel.com" 939 | } 940 | ], 941 | "description": "The Illuminate Filesystem package.", 942 | "homepage": "https://laravel.com", 943 | "support": { 944 | "issues": "https://github.com/laravel/framework/issues", 945 | "source": "https://github.com/laravel/framework" 946 | }, 947 | "time": "2021-12-20T20:07:00+00:00" 948 | }, 949 | { 950 | "name": "illuminate/macroable", 951 | "version": "v8.77.1", 952 | "source": { 953 | "type": "git", 954 | "url": "https://github.com/illuminate/macroable.git", 955 | "reference": "aed81891a6e046fdee72edd497f822190f61c162" 956 | }, 957 | "dist": { 958 | "type": "zip", 959 | "url": "https://api.github.com/repos/illuminate/macroable/zipball/aed81891a6e046fdee72edd497f822190f61c162", 960 | "reference": "aed81891a6e046fdee72edd497f822190f61c162", 961 | "shasum": "" 962 | }, 963 | "require": { 964 | "php": "^7.3|^8.0" 965 | }, 966 | "type": "library", 967 | "extra": { 968 | "branch-alias": { 969 | "dev-master": "8.x-dev" 970 | } 971 | }, 972 | "autoload": { 973 | "psr-4": { 974 | "Illuminate\\Support\\": "" 975 | } 976 | }, 977 | "notification-url": "https://packagist.org/downloads/", 978 | "license": [ 979 | "MIT" 980 | ], 981 | "authors": [ 982 | { 983 | "name": "Taylor Otwell", 984 | "email": "taylor@laravel.com" 985 | } 986 | ], 987 | "description": "The Illuminate Macroable package.", 988 | "homepage": "https://laravel.com", 989 | "support": { 990 | "issues": "https://github.com/laravel/framework/issues", 991 | "source": "https://github.com/laravel/framework" 992 | }, 993 | "time": "2021-11-16T13:57:03+00:00" 994 | }, 995 | { 996 | "name": "illuminate/support", 997 | "version": "v8.77.1", 998 | "source": { 999 | "type": "git", 1000 | "url": "https://github.com/illuminate/support.git", 1001 | "reference": "789b5c9a28884bc6b07841574cc86abdec7c5f68" 1002 | }, 1003 | "dist": { 1004 | "type": "zip", 1005 | "url": "https://api.github.com/repos/illuminate/support/zipball/789b5c9a28884bc6b07841574cc86abdec7c5f68", 1006 | "reference": "789b5c9a28884bc6b07841574cc86abdec7c5f68", 1007 | "shasum": "" 1008 | }, 1009 | "require": { 1010 | "doctrine/inflector": "^1.4|^2.0", 1011 | "ext-json": "*", 1012 | "ext-mbstring": "*", 1013 | "illuminate/collections": "^8.0", 1014 | "illuminate/contracts": "^8.0", 1015 | "illuminate/macroable": "^8.0", 1016 | "nesbot/carbon": "^2.53.1", 1017 | "php": "^7.3|^8.0", 1018 | "voku/portable-ascii": "^1.4.8" 1019 | }, 1020 | "conflict": { 1021 | "tightenco/collect": "<5.5.33" 1022 | }, 1023 | "suggest": { 1024 | "illuminate/filesystem": "Required to use the composer class (^8.0).", 1025 | "league/commonmark": "Required to use Str::markdown() and Stringable::markdown() (^1.3|^2.0.2).", 1026 | "ramsey/uuid": "Required to use Str::uuid() (^4.2.2).", 1027 | "symfony/process": "Required to use the composer class (^5.4).", 1028 | "symfony/var-dumper": "Required to use the dd function (^5.4).", 1029 | "vlucas/phpdotenv": "Required to use the Env class and env helper (^5.2)." 1030 | }, 1031 | "type": "library", 1032 | "extra": { 1033 | "branch-alias": { 1034 | "dev-master": "8.x-dev" 1035 | } 1036 | }, 1037 | "autoload": { 1038 | "psr-4": { 1039 | "Illuminate\\Support\\": "" 1040 | }, 1041 | "files": [ 1042 | "helpers.php" 1043 | ] 1044 | }, 1045 | "notification-url": "https://packagist.org/downloads/", 1046 | "license": [ 1047 | "MIT" 1048 | ], 1049 | "authors": [ 1050 | { 1051 | "name": "Taylor Otwell", 1052 | "email": "taylor@laravel.com" 1053 | } 1054 | ], 1055 | "description": "The Illuminate Support package.", 1056 | "homepage": "https://laravel.com", 1057 | "support": { 1058 | "issues": "https://github.com/laravel/framework/issues", 1059 | "source": "https://github.com/laravel/framework" 1060 | }, 1061 | "time": "2021-12-21T14:59:41+00:00" 1062 | }, 1063 | { 1064 | "name": "laravel/vapor-cli", 1065 | "version": "v1.34.0", 1066 | "source": { 1067 | "type": "git", 1068 | "url": "https://github.com/laravel/vapor-cli.git", 1069 | "reference": "d6ed3ddbab4cb448979123c95891153bdd935176" 1070 | }, 1071 | "dist": { 1072 | "type": "zip", 1073 | "url": "https://api.github.com/repos/laravel/vapor-cli/zipball/d6ed3ddbab4cb448979123c95891153bdd935176", 1074 | "reference": "d6ed3ddbab4cb448979123c95891153bdd935176", 1075 | "shasum": "" 1076 | }, 1077 | "require": { 1078 | "ext-zip": "*", 1079 | "guzzlehttp/guzzle": "^6.3|^7.0", 1080 | "illuminate/container": "^6.0|^7.0|^8.0", 1081 | "illuminate/filesystem": "^6.0|^7.0|^8.0", 1082 | "illuminate/support": "^6.0|^7.0|^8.0", 1083 | "league/flysystem": "^1.0", 1084 | "league/flysystem-aws-s3-v3": "^1.0", 1085 | "php": "^7.2|^8.0", 1086 | "ramsey/uuid": "^3.8|^4.0", 1087 | "symfony/console": "^4.2|^5.0", 1088 | "symfony/process": "^4.2|^5.0", 1089 | "symfony/var-dumper": "^4.2|^5.0", 1090 | "symfony/yaml": "^4.2|^5.0", 1091 | "vlucas/phpdotenv": "^3.0|^4.0|^5.0" 1092 | }, 1093 | "require-dev": { 1094 | "phpunit/phpunit": "^8.0|^9.0" 1095 | }, 1096 | "bin": [ 1097 | "vapor" 1098 | ], 1099 | "type": "library", 1100 | "extra": { 1101 | "branch-alias": { 1102 | "dev-master": "2.0-dev" 1103 | } 1104 | }, 1105 | "autoload": { 1106 | "psr-4": { 1107 | "Laravel\\VaporCli\\": "src/" 1108 | } 1109 | }, 1110 | "notification-url": "https://packagist.org/downloads/", 1111 | "license": [ 1112 | "MIT" 1113 | ], 1114 | "authors": [ 1115 | { 1116 | "name": "Taylor Otwell", 1117 | "email": "taylor@laravel.com" 1118 | } 1119 | ], 1120 | "description": "The Laravel Vapor CLI", 1121 | "homepage": "https://github.com/laravel/vapor-cli", 1122 | "keywords": [ 1123 | "laravel", 1124 | "vapor" 1125 | ], 1126 | "support": { 1127 | "source": "https://github.com/laravel/vapor-cli/tree/v1.34.0" 1128 | }, 1129 | "time": "2021-12-10T14:16:48+00:00" 1130 | }, 1131 | { 1132 | "name": "league/flysystem", 1133 | "version": "1.1.9", 1134 | "source": { 1135 | "type": "git", 1136 | "url": "https://github.com/thephpleague/flysystem.git", 1137 | "reference": "094defdb4a7001845300334e7c1ee2335925ef99" 1138 | }, 1139 | "dist": { 1140 | "type": "zip", 1141 | "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/094defdb4a7001845300334e7c1ee2335925ef99", 1142 | "reference": "094defdb4a7001845300334e7c1ee2335925ef99", 1143 | "shasum": "" 1144 | }, 1145 | "require": { 1146 | "ext-fileinfo": "*", 1147 | "league/mime-type-detection": "^1.3", 1148 | "php": "^7.2.5 || ^8.0" 1149 | }, 1150 | "conflict": { 1151 | "league/flysystem-sftp": "<1.0.6" 1152 | }, 1153 | "require-dev": { 1154 | "phpspec/prophecy": "^1.11.1", 1155 | "phpunit/phpunit": "^8.5.8" 1156 | }, 1157 | "suggest": { 1158 | "ext-ftp": "Allows you to use FTP server storage", 1159 | "ext-openssl": "Allows you to use FTPS server storage", 1160 | "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2", 1161 | "league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3", 1162 | "league/flysystem-azure": "Allows you to use Windows Azure Blob storage", 1163 | "league/flysystem-cached-adapter": "Flysystem adapter decorator for metadata caching", 1164 | "league/flysystem-eventable-filesystem": "Allows you to use EventableFilesystem", 1165 | "league/flysystem-rackspace": "Allows you to use Rackspace Cloud Files", 1166 | "league/flysystem-sftp": "Allows you to use SFTP server storage via phpseclib", 1167 | "league/flysystem-webdav": "Allows you to use WebDAV storage", 1168 | "league/flysystem-ziparchive": "Allows you to use ZipArchive adapter", 1169 | "spatie/flysystem-dropbox": "Allows you to use Dropbox storage", 1170 | "srmklive/flysystem-dropbox-v2": "Allows you to use Dropbox storage for PHP 5 applications" 1171 | }, 1172 | "type": "library", 1173 | "extra": { 1174 | "branch-alias": { 1175 | "dev-master": "1.1-dev" 1176 | } 1177 | }, 1178 | "autoload": { 1179 | "psr-4": { 1180 | "League\\Flysystem\\": "src/" 1181 | } 1182 | }, 1183 | "notification-url": "https://packagist.org/downloads/", 1184 | "license": [ 1185 | "MIT" 1186 | ], 1187 | "authors": [ 1188 | { 1189 | "name": "Frank de Jonge", 1190 | "email": "info@frenky.net" 1191 | } 1192 | ], 1193 | "description": "Filesystem abstraction: Many filesystems, one API.", 1194 | "keywords": [ 1195 | "Cloud Files", 1196 | "WebDAV", 1197 | "abstraction", 1198 | "aws", 1199 | "cloud", 1200 | "copy.com", 1201 | "dropbox", 1202 | "file systems", 1203 | "files", 1204 | "filesystem", 1205 | "filesystems", 1206 | "ftp", 1207 | "rackspace", 1208 | "remote", 1209 | "s3", 1210 | "sftp", 1211 | "storage" 1212 | ], 1213 | "support": { 1214 | "issues": "https://github.com/thephpleague/flysystem/issues", 1215 | "source": "https://github.com/thephpleague/flysystem/tree/1.1.9" 1216 | }, 1217 | "funding": [ 1218 | { 1219 | "url": "https://offset.earth/frankdejonge", 1220 | "type": "other" 1221 | } 1222 | ], 1223 | "time": "2021-12-09T09:40:50+00:00" 1224 | }, 1225 | { 1226 | "name": "league/flysystem-aws-s3-v3", 1227 | "version": "1.0.29", 1228 | "source": { 1229 | "type": "git", 1230 | "url": "https://github.com/thephpleague/flysystem-aws-s3-v3.git", 1231 | "reference": "4e25cc0582a36a786c31115e419c6e40498f6972" 1232 | }, 1233 | "dist": { 1234 | "type": "zip", 1235 | "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/4e25cc0582a36a786c31115e419c6e40498f6972", 1236 | "reference": "4e25cc0582a36a786c31115e419c6e40498f6972", 1237 | "shasum": "" 1238 | }, 1239 | "require": { 1240 | "aws/aws-sdk-php": "^3.20.0", 1241 | "league/flysystem": "^1.0.40", 1242 | "php": ">=5.5.0" 1243 | }, 1244 | "require-dev": { 1245 | "henrikbjorn/phpspec-code-coverage": "~1.0.1", 1246 | "phpspec/phpspec": "^2.0.0" 1247 | }, 1248 | "type": "library", 1249 | "extra": { 1250 | "branch-alias": { 1251 | "dev-master": "1.0-dev" 1252 | } 1253 | }, 1254 | "autoload": { 1255 | "psr-4": { 1256 | "League\\Flysystem\\AwsS3v3\\": "src/" 1257 | } 1258 | }, 1259 | "notification-url": "https://packagist.org/downloads/", 1260 | "license": [ 1261 | "MIT" 1262 | ], 1263 | "authors": [ 1264 | { 1265 | "name": "Frank de Jonge", 1266 | "email": "info@frenky.net" 1267 | } 1268 | ], 1269 | "description": "Flysystem adapter for the AWS S3 SDK v3.x", 1270 | "support": { 1271 | "issues": "https://github.com/thephpleague/flysystem-aws-s3-v3/issues", 1272 | "source": "https://github.com/thephpleague/flysystem-aws-s3-v3/tree/1.0.29" 1273 | }, 1274 | "time": "2020-10-08T18:58:37+00:00" 1275 | }, 1276 | { 1277 | "name": "league/mime-type-detection", 1278 | "version": "1.9.0", 1279 | "source": { 1280 | "type": "git", 1281 | "url": "https://github.com/thephpleague/mime-type-detection.git", 1282 | "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69" 1283 | }, 1284 | "dist": { 1285 | "type": "zip", 1286 | "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/aa70e813a6ad3d1558fc927863d47309b4c23e69", 1287 | "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69", 1288 | "shasum": "" 1289 | }, 1290 | "require": { 1291 | "ext-fileinfo": "*", 1292 | "php": "^7.2 || ^8.0" 1293 | }, 1294 | "require-dev": { 1295 | "friendsofphp/php-cs-fixer": "^3.2", 1296 | "phpstan/phpstan": "^0.12.68", 1297 | "phpunit/phpunit": "^8.5.8 || ^9.3" 1298 | }, 1299 | "type": "library", 1300 | "autoload": { 1301 | "psr-4": { 1302 | "League\\MimeTypeDetection\\": "src" 1303 | } 1304 | }, 1305 | "notification-url": "https://packagist.org/downloads/", 1306 | "license": [ 1307 | "MIT" 1308 | ], 1309 | "authors": [ 1310 | { 1311 | "name": "Frank de Jonge", 1312 | "email": "info@frankdejonge.nl" 1313 | } 1314 | ], 1315 | "description": "Mime-type detection for Flysystem", 1316 | "support": { 1317 | "issues": "https://github.com/thephpleague/mime-type-detection/issues", 1318 | "source": "https://github.com/thephpleague/mime-type-detection/tree/1.9.0" 1319 | }, 1320 | "funding": [ 1321 | { 1322 | "url": "https://github.com/frankdejonge", 1323 | "type": "github" 1324 | }, 1325 | { 1326 | "url": "https://tidelift.com/funding/github/packagist/league/flysystem", 1327 | "type": "tidelift" 1328 | } 1329 | ], 1330 | "time": "2021-11-21T11:48:40+00:00" 1331 | }, 1332 | { 1333 | "name": "mtdowling/jmespath.php", 1334 | "version": "2.6.1", 1335 | "source": { 1336 | "type": "git", 1337 | "url": "https://github.com/jmespath/jmespath.php.git", 1338 | "reference": "9b87907a81b87bc76d19a7fb2d61e61486ee9edb" 1339 | }, 1340 | "dist": { 1341 | "type": "zip", 1342 | "url": "https://api.github.com/repos/jmespath/jmespath.php/zipball/9b87907a81b87bc76d19a7fb2d61e61486ee9edb", 1343 | "reference": "9b87907a81b87bc76d19a7fb2d61e61486ee9edb", 1344 | "shasum": "" 1345 | }, 1346 | "require": { 1347 | "php": "^5.4 || ^7.0 || ^8.0", 1348 | "symfony/polyfill-mbstring": "^1.17" 1349 | }, 1350 | "require-dev": { 1351 | "composer/xdebug-handler": "^1.4 || ^2.0", 1352 | "phpunit/phpunit": "^4.8.36 || ^7.5.15" 1353 | }, 1354 | "bin": [ 1355 | "bin/jp.php" 1356 | ], 1357 | "type": "library", 1358 | "extra": { 1359 | "branch-alias": { 1360 | "dev-master": "2.6-dev" 1361 | } 1362 | }, 1363 | "autoload": { 1364 | "psr-4": { 1365 | "JmesPath\\": "src/" 1366 | }, 1367 | "files": [ 1368 | "src/JmesPath.php" 1369 | ] 1370 | }, 1371 | "notification-url": "https://packagist.org/downloads/", 1372 | "license": [ 1373 | "MIT" 1374 | ], 1375 | "authors": [ 1376 | { 1377 | "name": "Michael Dowling", 1378 | "email": "mtdowling@gmail.com", 1379 | "homepage": "https://github.com/mtdowling" 1380 | } 1381 | ], 1382 | "description": "Declaratively specify how to extract elements from a JSON document", 1383 | "keywords": [ 1384 | "json", 1385 | "jsonpath" 1386 | ], 1387 | "support": { 1388 | "issues": "https://github.com/jmespath/jmespath.php/issues", 1389 | "source": "https://github.com/jmespath/jmespath.php/tree/2.6.1" 1390 | }, 1391 | "time": "2021-06-14T00:11:39+00:00" 1392 | }, 1393 | { 1394 | "name": "nesbot/carbon", 1395 | "version": "2.55.2", 1396 | "source": { 1397 | "type": "git", 1398 | "url": "https://github.com/briannesbitt/Carbon.git", 1399 | "reference": "8c2a18ce3e67c34efc1b29f64fe61304368259a2" 1400 | }, 1401 | "dist": { 1402 | "type": "zip", 1403 | "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/8c2a18ce3e67c34efc1b29f64fe61304368259a2", 1404 | "reference": "8c2a18ce3e67c34efc1b29f64fe61304368259a2", 1405 | "shasum": "" 1406 | }, 1407 | "require": { 1408 | "ext-json": "*", 1409 | "php": "^7.1.8 || ^8.0", 1410 | "symfony/polyfill-mbstring": "^1.0", 1411 | "symfony/polyfill-php80": "^1.16", 1412 | "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" 1413 | }, 1414 | "require-dev": { 1415 | "doctrine/dbal": "^2.0 || ^3.0", 1416 | "doctrine/orm": "^2.7", 1417 | "friendsofphp/php-cs-fixer": "^3.0", 1418 | "kylekatarnls/multi-tester": "^2.0", 1419 | "phpmd/phpmd": "^2.9", 1420 | "phpstan/extension-installer": "^1.0", 1421 | "phpstan/phpstan": "^0.12.54", 1422 | "phpunit/phpunit": "^7.5.20 || ^8.5.14", 1423 | "squizlabs/php_codesniffer": "^3.4" 1424 | }, 1425 | "bin": [ 1426 | "bin/carbon" 1427 | ], 1428 | "type": "library", 1429 | "extra": { 1430 | "branch-alias": { 1431 | "dev-3.x": "3.x-dev", 1432 | "dev-master": "2.x-dev" 1433 | }, 1434 | "laravel": { 1435 | "providers": [ 1436 | "Carbon\\Laravel\\ServiceProvider" 1437 | ] 1438 | }, 1439 | "phpstan": { 1440 | "includes": [ 1441 | "extension.neon" 1442 | ] 1443 | } 1444 | }, 1445 | "autoload": { 1446 | "psr-4": { 1447 | "Carbon\\": "src/Carbon/" 1448 | } 1449 | }, 1450 | "notification-url": "https://packagist.org/downloads/", 1451 | "license": [ 1452 | "MIT" 1453 | ], 1454 | "authors": [ 1455 | { 1456 | "name": "Brian Nesbitt", 1457 | "email": "brian@nesbot.com", 1458 | "homepage": "https://markido.com" 1459 | }, 1460 | { 1461 | "name": "kylekatarnls", 1462 | "homepage": "https://github.com/kylekatarnls" 1463 | } 1464 | ], 1465 | "description": "An API extension for DateTime that supports 281 different languages.", 1466 | "homepage": "https://carbon.nesbot.com", 1467 | "keywords": [ 1468 | "date", 1469 | "datetime", 1470 | "time" 1471 | ], 1472 | "support": { 1473 | "docs": "https://carbon.nesbot.com/docs", 1474 | "issues": "https://github.com/briannesbitt/Carbon/issues", 1475 | "source": "https://github.com/briannesbitt/Carbon" 1476 | }, 1477 | "funding": [ 1478 | { 1479 | "url": "https://opencollective.com/Carbon", 1480 | "type": "open_collective" 1481 | }, 1482 | { 1483 | "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", 1484 | "type": "tidelift" 1485 | } 1486 | ], 1487 | "time": "2021-12-03T14:59:52+00:00" 1488 | }, 1489 | { 1490 | "name": "phpoption/phpoption", 1491 | "version": "1.8.1", 1492 | "source": { 1493 | "type": "git", 1494 | "url": "https://github.com/schmittjoh/php-option.git", 1495 | "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" 1496 | }, 1497 | "dist": { 1498 | "type": "zip", 1499 | "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", 1500 | "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", 1501 | "shasum": "" 1502 | }, 1503 | "require": { 1504 | "php": "^7.0 || ^8.0" 1505 | }, 1506 | "require-dev": { 1507 | "bamarni/composer-bin-plugin": "^1.4.1", 1508 | "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" 1509 | }, 1510 | "type": "library", 1511 | "extra": { 1512 | "branch-alias": { 1513 | "dev-master": "1.8-dev" 1514 | } 1515 | }, 1516 | "autoload": { 1517 | "psr-4": { 1518 | "PhpOption\\": "src/PhpOption/" 1519 | } 1520 | }, 1521 | "notification-url": "https://packagist.org/downloads/", 1522 | "license": [ 1523 | "Apache-2.0" 1524 | ], 1525 | "authors": [ 1526 | { 1527 | "name": "Johannes M. Schmitt", 1528 | "email": "schmittjoh@gmail.com", 1529 | "homepage": "https://github.com/schmittjoh" 1530 | }, 1531 | { 1532 | "name": "Graham Campbell", 1533 | "email": "hello@gjcampbell.co.uk", 1534 | "homepage": "https://github.com/GrahamCampbell" 1535 | } 1536 | ], 1537 | "description": "Option Type for PHP", 1538 | "keywords": [ 1539 | "language", 1540 | "option", 1541 | "php", 1542 | "type" 1543 | ], 1544 | "support": { 1545 | "issues": "https://github.com/schmittjoh/php-option/issues", 1546 | "source": "https://github.com/schmittjoh/php-option/tree/1.8.1" 1547 | }, 1548 | "funding": [ 1549 | { 1550 | "url": "https://github.com/GrahamCampbell", 1551 | "type": "github" 1552 | }, 1553 | { 1554 | "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", 1555 | "type": "tidelift" 1556 | } 1557 | ], 1558 | "time": "2021-12-04T23:24:31+00:00" 1559 | }, 1560 | { 1561 | "name": "psr/container", 1562 | "version": "1.1.2", 1563 | "source": { 1564 | "type": "git", 1565 | "url": "https://github.com/php-fig/container.git", 1566 | "reference": "513e0666f7216c7459170d56df27dfcefe1689ea" 1567 | }, 1568 | "dist": { 1569 | "type": "zip", 1570 | "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea", 1571 | "reference": "513e0666f7216c7459170d56df27dfcefe1689ea", 1572 | "shasum": "" 1573 | }, 1574 | "require": { 1575 | "php": ">=7.4.0" 1576 | }, 1577 | "type": "library", 1578 | "autoload": { 1579 | "psr-4": { 1580 | "Psr\\Container\\": "src/" 1581 | } 1582 | }, 1583 | "notification-url": "https://packagist.org/downloads/", 1584 | "license": [ 1585 | "MIT" 1586 | ], 1587 | "authors": [ 1588 | { 1589 | "name": "PHP-FIG", 1590 | "homepage": "https://www.php-fig.org/" 1591 | } 1592 | ], 1593 | "description": "Common Container Interface (PHP FIG PSR-11)", 1594 | "homepage": "https://github.com/php-fig/container", 1595 | "keywords": [ 1596 | "PSR-11", 1597 | "container", 1598 | "container-interface", 1599 | "container-interop", 1600 | "psr" 1601 | ], 1602 | "support": { 1603 | "issues": "https://github.com/php-fig/container/issues", 1604 | "source": "https://github.com/php-fig/container/tree/1.1.2" 1605 | }, 1606 | "time": "2021-11-05T16:50:12+00:00" 1607 | }, 1608 | { 1609 | "name": "psr/http-client", 1610 | "version": "1.0.1", 1611 | "source": { 1612 | "type": "git", 1613 | "url": "https://github.com/php-fig/http-client.git", 1614 | "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" 1615 | }, 1616 | "dist": { 1617 | "type": "zip", 1618 | "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", 1619 | "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", 1620 | "shasum": "" 1621 | }, 1622 | "require": { 1623 | "php": "^7.0 || ^8.0", 1624 | "psr/http-message": "^1.0" 1625 | }, 1626 | "type": "library", 1627 | "extra": { 1628 | "branch-alias": { 1629 | "dev-master": "1.0.x-dev" 1630 | } 1631 | }, 1632 | "autoload": { 1633 | "psr-4": { 1634 | "Psr\\Http\\Client\\": "src/" 1635 | } 1636 | }, 1637 | "notification-url": "https://packagist.org/downloads/", 1638 | "license": [ 1639 | "MIT" 1640 | ], 1641 | "authors": [ 1642 | { 1643 | "name": "PHP-FIG", 1644 | "homepage": "http://www.php-fig.org/" 1645 | } 1646 | ], 1647 | "description": "Common interface for HTTP clients", 1648 | "homepage": "https://github.com/php-fig/http-client", 1649 | "keywords": [ 1650 | "http", 1651 | "http-client", 1652 | "psr", 1653 | "psr-18" 1654 | ], 1655 | "support": { 1656 | "source": "https://github.com/php-fig/http-client/tree/master" 1657 | }, 1658 | "time": "2020-06-29T06:28:15+00:00" 1659 | }, 1660 | { 1661 | "name": "psr/http-factory", 1662 | "version": "1.0.1", 1663 | "source": { 1664 | "type": "git", 1665 | "url": "https://github.com/php-fig/http-factory.git", 1666 | "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" 1667 | }, 1668 | "dist": { 1669 | "type": "zip", 1670 | "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", 1671 | "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", 1672 | "shasum": "" 1673 | }, 1674 | "require": { 1675 | "php": ">=7.0.0", 1676 | "psr/http-message": "^1.0" 1677 | }, 1678 | "type": "library", 1679 | "extra": { 1680 | "branch-alias": { 1681 | "dev-master": "1.0.x-dev" 1682 | } 1683 | }, 1684 | "autoload": { 1685 | "psr-4": { 1686 | "Psr\\Http\\Message\\": "src/" 1687 | } 1688 | }, 1689 | "notification-url": "https://packagist.org/downloads/", 1690 | "license": [ 1691 | "MIT" 1692 | ], 1693 | "authors": [ 1694 | { 1695 | "name": "PHP-FIG", 1696 | "homepage": "http://www.php-fig.org/" 1697 | } 1698 | ], 1699 | "description": "Common interfaces for PSR-7 HTTP message factories", 1700 | "keywords": [ 1701 | "factory", 1702 | "http", 1703 | "message", 1704 | "psr", 1705 | "psr-17", 1706 | "psr-7", 1707 | "request", 1708 | "response" 1709 | ], 1710 | "support": { 1711 | "source": "https://github.com/php-fig/http-factory/tree/master" 1712 | }, 1713 | "time": "2019-04-30T12:38:16+00:00" 1714 | }, 1715 | { 1716 | "name": "psr/http-message", 1717 | "version": "1.0.1", 1718 | "source": { 1719 | "type": "git", 1720 | "url": "https://github.com/php-fig/http-message.git", 1721 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" 1722 | }, 1723 | "dist": { 1724 | "type": "zip", 1725 | "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", 1726 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", 1727 | "shasum": "" 1728 | }, 1729 | "require": { 1730 | "php": ">=5.3.0" 1731 | }, 1732 | "type": "library", 1733 | "extra": { 1734 | "branch-alias": { 1735 | "dev-master": "1.0.x-dev" 1736 | } 1737 | }, 1738 | "autoload": { 1739 | "psr-4": { 1740 | "Psr\\Http\\Message\\": "src/" 1741 | } 1742 | }, 1743 | "notification-url": "https://packagist.org/downloads/", 1744 | "license": [ 1745 | "MIT" 1746 | ], 1747 | "authors": [ 1748 | { 1749 | "name": "PHP-FIG", 1750 | "homepage": "http://www.php-fig.org/" 1751 | } 1752 | ], 1753 | "description": "Common interface for HTTP messages", 1754 | "homepage": "https://github.com/php-fig/http-message", 1755 | "keywords": [ 1756 | "http", 1757 | "http-message", 1758 | "psr", 1759 | "psr-7", 1760 | "request", 1761 | "response" 1762 | ], 1763 | "support": { 1764 | "source": "https://github.com/php-fig/http-message/tree/master" 1765 | }, 1766 | "time": "2016-08-06T14:39:51+00:00" 1767 | }, 1768 | { 1769 | "name": "psr/simple-cache", 1770 | "version": "1.0.1", 1771 | "source": { 1772 | "type": "git", 1773 | "url": "https://github.com/php-fig/simple-cache.git", 1774 | "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" 1775 | }, 1776 | "dist": { 1777 | "type": "zip", 1778 | "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", 1779 | "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", 1780 | "shasum": "" 1781 | }, 1782 | "require": { 1783 | "php": ">=5.3.0" 1784 | }, 1785 | "type": "library", 1786 | "extra": { 1787 | "branch-alias": { 1788 | "dev-master": "1.0.x-dev" 1789 | } 1790 | }, 1791 | "autoload": { 1792 | "psr-4": { 1793 | "Psr\\SimpleCache\\": "src/" 1794 | } 1795 | }, 1796 | "notification-url": "https://packagist.org/downloads/", 1797 | "license": [ 1798 | "MIT" 1799 | ], 1800 | "authors": [ 1801 | { 1802 | "name": "PHP-FIG", 1803 | "homepage": "http://www.php-fig.org/" 1804 | } 1805 | ], 1806 | "description": "Common interfaces for simple caching", 1807 | "keywords": [ 1808 | "cache", 1809 | "caching", 1810 | "psr", 1811 | "psr-16", 1812 | "simple-cache" 1813 | ], 1814 | "support": { 1815 | "source": "https://github.com/php-fig/simple-cache/tree/master" 1816 | }, 1817 | "time": "2017-10-23T01:57:42+00:00" 1818 | }, 1819 | { 1820 | "name": "ralouphie/getallheaders", 1821 | "version": "3.0.3", 1822 | "source": { 1823 | "type": "git", 1824 | "url": "https://github.com/ralouphie/getallheaders.git", 1825 | "reference": "120b605dfeb996808c31b6477290a714d356e822" 1826 | }, 1827 | "dist": { 1828 | "type": "zip", 1829 | "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", 1830 | "reference": "120b605dfeb996808c31b6477290a714d356e822", 1831 | "shasum": "" 1832 | }, 1833 | "require": { 1834 | "php": ">=5.6" 1835 | }, 1836 | "require-dev": { 1837 | "php-coveralls/php-coveralls": "^2.1", 1838 | "phpunit/phpunit": "^5 || ^6.5" 1839 | }, 1840 | "type": "library", 1841 | "autoload": { 1842 | "files": [ 1843 | "src/getallheaders.php" 1844 | ] 1845 | }, 1846 | "notification-url": "https://packagist.org/downloads/", 1847 | "license": [ 1848 | "MIT" 1849 | ], 1850 | "authors": [ 1851 | { 1852 | "name": "Ralph Khattar", 1853 | "email": "ralph.khattar@gmail.com" 1854 | } 1855 | ], 1856 | "description": "A polyfill for getallheaders.", 1857 | "support": { 1858 | "issues": "https://github.com/ralouphie/getallheaders/issues", 1859 | "source": "https://github.com/ralouphie/getallheaders/tree/develop" 1860 | }, 1861 | "time": "2019-03-08T08:55:37+00:00" 1862 | }, 1863 | { 1864 | "name": "ramsey/collection", 1865 | "version": "1.2.2", 1866 | "source": { 1867 | "type": "git", 1868 | "url": "https://github.com/ramsey/collection.git", 1869 | "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" 1870 | }, 1871 | "dist": { 1872 | "type": "zip", 1873 | "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", 1874 | "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", 1875 | "shasum": "" 1876 | }, 1877 | "require": { 1878 | "php": "^7.3 || ^8", 1879 | "symfony/polyfill-php81": "^1.23" 1880 | }, 1881 | "require-dev": { 1882 | "captainhook/captainhook": "^5.3", 1883 | "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", 1884 | "ergebnis/composer-normalize": "^2.6", 1885 | "fakerphp/faker": "^1.5", 1886 | "hamcrest/hamcrest-php": "^2", 1887 | "jangregor/phpstan-prophecy": "^0.8", 1888 | "mockery/mockery": "^1.3", 1889 | "phpspec/prophecy-phpunit": "^2.0", 1890 | "phpstan/extension-installer": "^1", 1891 | "phpstan/phpstan": "^0.12.32", 1892 | "phpstan/phpstan-mockery": "^0.12.5", 1893 | "phpstan/phpstan-phpunit": "^0.12.11", 1894 | "phpunit/phpunit": "^8.5 || ^9", 1895 | "psy/psysh": "^0.10.4", 1896 | "slevomat/coding-standard": "^6.3", 1897 | "squizlabs/php_codesniffer": "^3.5", 1898 | "vimeo/psalm": "^4.4" 1899 | }, 1900 | "type": "library", 1901 | "autoload": { 1902 | "psr-4": { 1903 | "Ramsey\\Collection\\": "src/" 1904 | } 1905 | }, 1906 | "notification-url": "https://packagist.org/downloads/", 1907 | "license": [ 1908 | "MIT" 1909 | ], 1910 | "authors": [ 1911 | { 1912 | "name": "Ben Ramsey", 1913 | "email": "ben@benramsey.com", 1914 | "homepage": "https://benramsey.com" 1915 | } 1916 | ], 1917 | "description": "A PHP library for representing and manipulating collections.", 1918 | "keywords": [ 1919 | "array", 1920 | "collection", 1921 | "hash", 1922 | "map", 1923 | "queue", 1924 | "set" 1925 | ], 1926 | "support": { 1927 | "issues": "https://github.com/ramsey/collection/issues", 1928 | "source": "https://github.com/ramsey/collection/tree/1.2.2" 1929 | }, 1930 | "funding": [ 1931 | { 1932 | "url": "https://github.com/ramsey", 1933 | "type": "github" 1934 | }, 1935 | { 1936 | "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", 1937 | "type": "tidelift" 1938 | } 1939 | ], 1940 | "time": "2021-10-10T03:01:02+00:00" 1941 | }, 1942 | { 1943 | "name": "ramsey/uuid", 1944 | "version": "4.2.3", 1945 | "source": { 1946 | "type": "git", 1947 | "url": "https://github.com/ramsey/uuid.git", 1948 | "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" 1949 | }, 1950 | "dist": { 1951 | "type": "zip", 1952 | "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", 1953 | "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", 1954 | "shasum": "" 1955 | }, 1956 | "require": { 1957 | "brick/math": "^0.8 || ^0.9", 1958 | "ext-json": "*", 1959 | "php": "^7.2 || ^8.0", 1960 | "ramsey/collection": "^1.0", 1961 | "symfony/polyfill-ctype": "^1.8", 1962 | "symfony/polyfill-php80": "^1.14" 1963 | }, 1964 | "replace": { 1965 | "rhumsaa/uuid": "self.version" 1966 | }, 1967 | "require-dev": { 1968 | "captainhook/captainhook": "^5.10", 1969 | "captainhook/plugin-composer": "^5.3", 1970 | "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", 1971 | "doctrine/annotations": "^1.8", 1972 | "ergebnis/composer-normalize": "^2.15", 1973 | "mockery/mockery": "^1.3", 1974 | "moontoast/math": "^1.1", 1975 | "paragonie/random-lib": "^2", 1976 | "php-mock/php-mock": "^2.2", 1977 | "php-mock/php-mock-mockery": "^1.3", 1978 | "php-parallel-lint/php-parallel-lint": "^1.1", 1979 | "phpbench/phpbench": "^1.0", 1980 | "phpstan/extension-installer": "^1.0", 1981 | "phpstan/phpstan": "^0.12", 1982 | "phpstan/phpstan-mockery": "^0.12", 1983 | "phpstan/phpstan-phpunit": "^0.12", 1984 | "phpunit/phpunit": "^8.5 || ^9", 1985 | "slevomat/coding-standard": "^7.0", 1986 | "squizlabs/php_codesniffer": "^3.5", 1987 | "vimeo/psalm": "^4.9" 1988 | }, 1989 | "suggest": { 1990 | "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", 1991 | "ext-ctype": "Enables faster processing of character classification using ctype functions.", 1992 | "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", 1993 | "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", 1994 | "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", 1995 | "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." 1996 | }, 1997 | "type": "library", 1998 | "extra": { 1999 | "branch-alias": { 2000 | "dev-main": "4.x-dev" 2001 | }, 2002 | "captainhook": { 2003 | "force-install": true 2004 | } 2005 | }, 2006 | "autoload": { 2007 | "psr-4": { 2008 | "Ramsey\\Uuid\\": "src/" 2009 | }, 2010 | "files": [ 2011 | "src/functions.php" 2012 | ] 2013 | }, 2014 | "notification-url": "https://packagist.org/downloads/", 2015 | "license": [ 2016 | "MIT" 2017 | ], 2018 | "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", 2019 | "keywords": [ 2020 | "guid", 2021 | "identifier", 2022 | "uuid" 2023 | ], 2024 | "support": { 2025 | "issues": "https://github.com/ramsey/uuid/issues", 2026 | "source": "https://github.com/ramsey/uuid/tree/4.2.3" 2027 | }, 2028 | "funding": [ 2029 | { 2030 | "url": "https://github.com/ramsey", 2031 | "type": "github" 2032 | }, 2033 | { 2034 | "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", 2035 | "type": "tidelift" 2036 | } 2037 | ], 2038 | "time": "2021-09-25T23:10:38+00:00" 2039 | }, 2040 | { 2041 | "name": "symfony/console", 2042 | "version": "v5.4.1", 2043 | "source": { 2044 | "type": "git", 2045 | "url": "https://github.com/symfony/console.git", 2046 | "reference": "9130e1a0fc93cb0faadca4ee917171bd2ca9e5f4" 2047 | }, 2048 | "dist": { 2049 | "type": "zip", 2050 | "url": "https://api.github.com/repos/symfony/console/zipball/9130e1a0fc93cb0faadca4ee917171bd2ca9e5f4", 2051 | "reference": "9130e1a0fc93cb0faadca4ee917171bd2ca9e5f4", 2052 | "shasum": "" 2053 | }, 2054 | "require": { 2055 | "php": ">=7.2.5", 2056 | "symfony/deprecation-contracts": "^2.1|^3", 2057 | "symfony/polyfill-mbstring": "~1.0", 2058 | "symfony/polyfill-php73": "^1.9", 2059 | "symfony/polyfill-php80": "^1.16", 2060 | "symfony/service-contracts": "^1.1|^2|^3", 2061 | "symfony/string": "^5.1|^6.0" 2062 | }, 2063 | "conflict": { 2064 | "psr/log": ">=3", 2065 | "symfony/dependency-injection": "<4.4", 2066 | "symfony/dotenv": "<5.1", 2067 | "symfony/event-dispatcher": "<4.4", 2068 | "symfony/lock": "<4.4", 2069 | "symfony/process": "<4.4" 2070 | }, 2071 | "provide": { 2072 | "psr/log-implementation": "1.0|2.0" 2073 | }, 2074 | "require-dev": { 2075 | "psr/log": "^1|^2", 2076 | "symfony/config": "^4.4|^5.0|^6.0", 2077 | "symfony/dependency-injection": "^4.4|^5.0|^6.0", 2078 | "symfony/event-dispatcher": "^4.4|^5.0|^6.0", 2079 | "symfony/lock": "^4.4|^5.0|^6.0", 2080 | "symfony/process": "^4.4|^5.0|^6.0", 2081 | "symfony/var-dumper": "^4.4|^5.0|^6.0" 2082 | }, 2083 | "suggest": { 2084 | "psr/log": "For using the console logger", 2085 | "symfony/event-dispatcher": "", 2086 | "symfony/lock": "", 2087 | "symfony/process": "" 2088 | }, 2089 | "type": "library", 2090 | "autoload": { 2091 | "psr-4": { 2092 | "Symfony\\Component\\Console\\": "" 2093 | }, 2094 | "exclude-from-classmap": [ 2095 | "/Tests/" 2096 | ] 2097 | }, 2098 | "notification-url": "https://packagist.org/downloads/", 2099 | "license": [ 2100 | "MIT" 2101 | ], 2102 | "authors": [ 2103 | { 2104 | "name": "Fabien Potencier", 2105 | "email": "fabien@symfony.com" 2106 | }, 2107 | { 2108 | "name": "Symfony Community", 2109 | "homepage": "https://symfony.com/contributors" 2110 | } 2111 | ], 2112 | "description": "Eases the creation of beautiful and testable command line interfaces", 2113 | "homepage": "https://symfony.com", 2114 | "keywords": [ 2115 | "cli", 2116 | "command line", 2117 | "console", 2118 | "terminal" 2119 | ], 2120 | "support": { 2121 | "source": "https://github.com/symfony/console/tree/v5.4.1" 2122 | }, 2123 | "funding": [ 2124 | { 2125 | "url": "https://symfony.com/sponsor", 2126 | "type": "custom" 2127 | }, 2128 | { 2129 | "url": "https://github.com/fabpot", 2130 | "type": "github" 2131 | }, 2132 | { 2133 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2134 | "type": "tidelift" 2135 | } 2136 | ], 2137 | "time": "2021-12-09T11:22:43+00:00" 2138 | }, 2139 | { 2140 | "name": "symfony/deprecation-contracts", 2141 | "version": "v3.0.0", 2142 | "source": { 2143 | "type": "git", 2144 | "url": "https://github.com/symfony/deprecation-contracts.git", 2145 | "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced" 2146 | }, 2147 | "dist": { 2148 | "type": "zip", 2149 | "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", 2150 | "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", 2151 | "shasum": "" 2152 | }, 2153 | "require": { 2154 | "php": ">=8.0.2" 2155 | }, 2156 | "type": "library", 2157 | "extra": { 2158 | "branch-alias": { 2159 | "dev-main": "3.0-dev" 2160 | }, 2161 | "thanks": { 2162 | "name": "symfony/contracts", 2163 | "url": "https://github.com/symfony/contracts" 2164 | } 2165 | }, 2166 | "autoload": { 2167 | "files": [ 2168 | "function.php" 2169 | ] 2170 | }, 2171 | "notification-url": "https://packagist.org/downloads/", 2172 | "license": [ 2173 | "MIT" 2174 | ], 2175 | "authors": [ 2176 | { 2177 | "name": "Nicolas Grekas", 2178 | "email": "p@tchwork.com" 2179 | }, 2180 | { 2181 | "name": "Symfony Community", 2182 | "homepage": "https://symfony.com/contributors" 2183 | } 2184 | ], 2185 | "description": "A generic function and convention to trigger deprecation notices", 2186 | "homepage": "https://symfony.com", 2187 | "support": { 2188 | "source": "https://github.com/symfony/deprecation-contracts/tree/v3.0.0" 2189 | }, 2190 | "funding": [ 2191 | { 2192 | "url": "https://symfony.com/sponsor", 2193 | "type": "custom" 2194 | }, 2195 | { 2196 | "url": "https://github.com/fabpot", 2197 | "type": "github" 2198 | }, 2199 | { 2200 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2201 | "type": "tidelift" 2202 | } 2203 | ], 2204 | "time": "2021-11-01T23:48:49+00:00" 2205 | }, 2206 | { 2207 | "name": "symfony/finder", 2208 | "version": "v5.4.0", 2209 | "source": { 2210 | "type": "git", 2211 | "url": "https://github.com/symfony/finder.git", 2212 | "reference": "d2f29dac98e96a98be467627bd49c2efb1bc2590" 2213 | }, 2214 | "dist": { 2215 | "type": "zip", 2216 | "url": "https://api.github.com/repos/symfony/finder/zipball/d2f29dac98e96a98be467627bd49c2efb1bc2590", 2217 | "reference": "d2f29dac98e96a98be467627bd49c2efb1bc2590", 2218 | "shasum": "" 2219 | }, 2220 | "require": { 2221 | "php": ">=7.2.5", 2222 | "symfony/deprecation-contracts": "^2.1|^3", 2223 | "symfony/polyfill-php80": "^1.16" 2224 | }, 2225 | "type": "library", 2226 | "autoload": { 2227 | "psr-4": { 2228 | "Symfony\\Component\\Finder\\": "" 2229 | }, 2230 | "exclude-from-classmap": [ 2231 | "/Tests/" 2232 | ] 2233 | }, 2234 | "notification-url": "https://packagist.org/downloads/", 2235 | "license": [ 2236 | "MIT" 2237 | ], 2238 | "authors": [ 2239 | { 2240 | "name": "Fabien Potencier", 2241 | "email": "fabien@symfony.com" 2242 | }, 2243 | { 2244 | "name": "Symfony Community", 2245 | "homepage": "https://symfony.com/contributors" 2246 | } 2247 | ], 2248 | "description": "Finds files and directories via an intuitive fluent interface", 2249 | "homepage": "https://symfony.com", 2250 | "support": { 2251 | "source": "https://github.com/symfony/finder/tree/v5.4.0" 2252 | }, 2253 | "funding": [ 2254 | { 2255 | "url": "https://symfony.com/sponsor", 2256 | "type": "custom" 2257 | }, 2258 | { 2259 | "url": "https://github.com/fabpot", 2260 | "type": "github" 2261 | }, 2262 | { 2263 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2264 | "type": "tidelift" 2265 | } 2266 | ], 2267 | "time": "2021-11-28T15:25:38+00:00" 2268 | }, 2269 | { 2270 | "name": "symfony/polyfill-ctype", 2271 | "version": "v1.23.0", 2272 | "source": { 2273 | "type": "git", 2274 | "url": "https://github.com/symfony/polyfill-ctype.git", 2275 | "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce" 2276 | }, 2277 | "dist": { 2278 | "type": "zip", 2279 | "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/46cd95797e9df938fdd2b03693b5fca5e64b01ce", 2280 | "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce", 2281 | "shasum": "" 2282 | }, 2283 | "require": { 2284 | "php": ">=7.1" 2285 | }, 2286 | "suggest": { 2287 | "ext-ctype": "For best performance" 2288 | }, 2289 | "type": "library", 2290 | "extra": { 2291 | "branch-alias": { 2292 | "dev-main": "1.23-dev" 2293 | }, 2294 | "thanks": { 2295 | "name": "symfony/polyfill", 2296 | "url": "https://github.com/symfony/polyfill" 2297 | } 2298 | }, 2299 | "autoload": { 2300 | "psr-4": { 2301 | "Symfony\\Polyfill\\Ctype\\": "" 2302 | }, 2303 | "files": [ 2304 | "bootstrap.php" 2305 | ] 2306 | }, 2307 | "notification-url": "https://packagist.org/downloads/", 2308 | "license": [ 2309 | "MIT" 2310 | ], 2311 | "authors": [ 2312 | { 2313 | "name": "Gert de Pagter", 2314 | "email": "BackEndTea@gmail.com" 2315 | }, 2316 | { 2317 | "name": "Symfony Community", 2318 | "homepage": "https://symfony.com/contributors" 2319 | } 2320 | ], 2321 | "description": "Symfony polyfill for ctype functions", 2322 | "homepage": "https://symfony.com", 2323 | "keywords": [ 2324 | "compatibility", 2325 | "ctype", 2326 | "polyfill", 2327 | "portable" 2328 | ], 2329 | "support": { 2330 | "source": "https://github.com/symfony/polyfill-ctype/tree/v1.23.0" 2331 | }, 2332 | "funding": [ 2333 | { 2334 | "url": "https://symfony.com/sponsor", 2335 | "type": "custom" 2336 | }, 2337 | { 2338 | "url": "https://github.com/fabpot", 2339 | "type": "github" 2340 | }, 2341 | { 2342 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2343 | "type": "tidelift" 2344 | } 2345 | ], 2346 | "time": "2021-02-19T12:13:01+00:00" 2347 | }, 2348 | { 2349 | "name": "symfony/polyfill-intl-grapheme", 2350 | "version": "v1.23.1", 2351 | "source": { 2352 | "type": "git", 2353 | "url": "https://github.com/symfony/polyfill-intl-grapheme.git", 2354 | "reference": "16880ba9c5ebe3642d1995ab866db29270b36535" 2355 | }, 2356 | "dist": { 2357 | "type": "zip", 2358 | "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/16880ba9c5ebe3642d1995ab866db29270b36535", 2359 | "reference": "16880ba9c5ebe3642d1995ab866db29270b36535", 2360 | "shasum": "" 2361 | }, 2362 | "require": { 2363 | "php": ">=7.1" 2364 | }, 2365 | "suggest": { 2366 | "ext-intl": "For best performance" 2367 | }, 2368 | "type": "library", 2369 | "extra": { 2370 | "branch-alias": { 2371 | "dev-main": "1.23-dev" 2372 | }, 2373 | "thanks": { 2374 | "name": "symfony/polyfill", 2375 | "url": "https://github.com/symfony/polyfill" 2376 | } 2377 | }, 2378 | "autoload": { 2379 | "psr-4": { 2380 | "Symfony\\Polyfill\\Intl\\Grapheme\\": "" 2381 | }, 2382 | "files": [ 2383 | "bootstrap.php" 2384 | ] 2385 | }, 2386 | "notification-url": "https://packagist.org/downloads/", 2387 | "license": [ 2388 | "MIT" 2389 | ], 2390 | "authors": [ 2391 | { 2392 | "name": "Nicolas Grekas", 2393 | "email": "p@tchwork.com" 2394 | }, 2395 | { 2396 | "name": "Symfony Community", 2397 | "homepage": "https://symfony.com/contributors" 2398 | } 2399 | ], 2400 | "description": "Symfony polyfill for intl's grapheme_* functions", 2401 | "homepage": "https://symfony.com", 2402 | "keywords": [ 2403 | "compatibility", 2404 | "grapheme", 2405 | "intl", 2406 | "polyfill", 2407 | "portable", 2408 | "shim" 2409 | ], 2410 | "support": { 2411 | "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.23.1" 2412 | }, 2413 | "funding": [ 2414 | { 2415 | "url": "https://symfony.com/sponsor", 2416 | "type": "custom" 2417 | }, 2418 | { 2419 | "url": "https://github.com/fabpot", 2420 | "type": "github" 2421 | }, 2422 | { 2423 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2424 | "type": "tidelift" 2425 | } 2426 | ], 2427 | "time": "2021-05-27T12:26:48+00:00" 2428 | }, 2429 | { 2430 | "name": "symfony/polyfill-intl-normalizer", 2431 | "version": "v1.23.0", 2432 | "source": { 2433 | "type": "git", 2434 | "url": "https://github.com/symfony/polyfill-intl-normalizer.git", 2435 | "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" 2436 | }, 2437 | "dist": { 2438 | "type": "zip", 2439 | "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", 2440 | "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", 2441 | "shasum": "" 2442 | }, 2443 | "require": { 2444 | "php": ">=7.1" 2445 | }, 2446 | "suggest": { 2447 | "ext-intl": "For best performance" 2448 | }, 2449 | "type": "library", 2450 | "extra": { 2451 | "branch-alias": { 2452 | "dev-main": "1.23-dev" 2453 | }, 2454 | "thanks": { 2455 | "name": "symfony/polyfill", 2456 | "url": "https://github.com/symfony/polyfill" 2457 | } 2458 | }, 2459 | "autoload": { 2460 | "psr-4": { 2461 | "Symfony\\Polyfill\\Intl\\Normalizer\\": "" 2462 | }, 2463 | "files": [ 2464 | "bootstrap.php" 2465 | ], 2466 | "classmap": [ 2467 | "Resources/stubs" 2468 | ] 2469 | }, 2470 | "notification-url": "https://packagist.org/downloads/", 2471 | "license": [ 2472 | "MIT" 2473 | ], 2474 | "authors": [ 2475 | { 2476 | "name": "Nicolas Grekas", 2477 | "email": "p@tchwork.com" 2478 | }, 2479 | { 2480 | "name": "Symfony Community", 2481 | "homepage": "https://symfony.com/contributors" 2482 | } 2483 | ], 2484 | "description": "Symfony polyfill for intl's Normalizer class and related functions", 2485 | "homepage": "https://symfony.com", 2486 | "keywords": [ 2487 | "compatibility", 2488 | "intl", 2489 | "normalizer", 2490 | "polyfill", 2491 | "portable", 2492 | "shim" 2493 | ], 2494 | "support": { 2495 | "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.23.0" 2496 | }, 2497 | "funding": [ 2498 | { 2499 | "url": "https://symfony.com/sponsor", 2500 | "type": "custom" 2501 | }, 2502 | { 2503 | "url": "https://github.com/fabpot", 2504 | "type": "github" 2505 | }, 2506 | { 2507 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2508 | "type": "tidelift" 2509 | } 2510 | ], 2511 | "time": "2021-02-19T12:13:01+00:00" 2512 | }, 2513 | { 2514 | "name": "symfony/polyfill-mbstring", 2515 | "version": "v1.23.1", 2516 | "source": { 2517 | "type": "git", 2518 | "url": "https://github.com/symfony/polyfill-mbstring.git", 2519 | "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6" 2520 | }, 2521 | "dist": { 2522 | "type": "zip", 2523 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9174a3d80210dca8daa7f31fec659150bbeabfc6", 2524 | "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6", 2525 | "shasum": "" 2526 | }, 2527 | "require": { 2528 | "php": ">=7.1" 2529 | }, 2530 | "suggest": { 2531 | "ext-mbstring": "For best performance" 2532 | }, 2533 | "type": "library", 2534 | "extra": { 2535 | "branch-alias": { 2536 | "dev-main": "1.23-dev" 2537 | }, 2538 | "thanks": { 2539 | "name": "symfony/polyfill", 2540 | "url": "https://github.com/symfony/polyfill" 2541 | } 2542 | }, 2543 | "autoload": { 2544 | "psr-4": { 2545 | "Symfony\\Polyfill\\Mbstring\\": "" 2546 | }, 2547 | "files": [ 2548 | "bootstrap.php" 2549 | ] 2550 | }, 2551 | "notification-url": "https://packagist.org/downloads/", 2552 | "license": [ 2553 | "MIT" 2554 | ], 2555 | "authors": [ 2556 | { 2557 | "name": "Nicolas Grekas", 2558 | "email": "p@tchwork.com" 2559 | }, 2560 | { 2561 | "name": "Symfony Community", 2562 | "homepage": "https://symfony.com/contributors" 2563 | } 2564 | ], 2565 | "description": "Symfony polyfill for the Mbstring extension", 2566 | "homepage": "https://symfony.com", 2567 | "keywords": [ 2568 | "compatibility", 2569 | "mbstring", 2570 | "polyfill", 2571 | "portable", 2572 | "shim" 2573 | ], 2574 | "support": { 2575 | "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.1" 2576 | }, 2577 | "funding": [ 2578 | { 2579 | "url": "https://symfony.com/sponsor", 2580 | "type": "custom" 2581 | }, 2582 | { 2583 | "url": "https://github.com/fabpot", 2584 | "type": "github" 2585 | }, 2586 | { 2587 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2588 | "type": "tidelift" 2589 | } 2590 | ], 2591 | "time": "2021-05-27T12:26:48+00:00" 2592 | }, 2593 | { 2594 | "name": "symfony/polyfill-php73", 2595 | "version": "v1.23.0", 2596 | "source": { 2597 | "type": "git", 2598 | "url": "https://github.com/symfony/polyfill-php73.git", 2599 | "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010" 2600 | }, 2601 | "dist": { 2602 | "type": "zip", 2603 | "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fba8933c384d6476ab14fb7b8526e5287ca7e010", 2604 | "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010", 2605 | "shasum": "" 2606 | }, 2607 | "require": { 2608 | "php": ">=7.1" 2609 | }, 2610 | "type": "library", 2611 | "extra": { 2612 | "branch-alias": { 2613 | "dev-main": "1.23-dev" 2614 | }, 2615 | "thanks": { 2616 | "name": "symfony/polyfill", 2617 | "url": "https://github.com/symfony/polyfill" 2618 | } 2619 | }, 2620 | "autoload": { 2621 | "psr-4": { 2622 | "Symfony\\Polyfill\\Php73\\": "" 2623 | }, 2624 | "files": [ 2625 | "bootstrap.php" 2626 | ], 2627 | "classmap": [ 2628 | "Resources/stubs" 2629 | ] 2630 | }, 2631 | "notification-url": "https://packagist.org/downloads/", 2632 | "license": [ 2633 | "MIT" 2634 | ], 2635 | "authors": [ 2636 | { 2637 | "name": "Nicolas Grekas", 2638 | "email": "p@tchwork.com" 2639 | }, 2640 | { 2641 | "name": "Symfony Community", 2642 | "homepage": "https://symfony.com/contributors" 2643 | } 2644 | ], 2645 | "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", 2646 | "homepage": "https://symfony.com", 2647 | "keywords": [ 2648 | "compatibility", 2649 | "polyfill", 2650 | "portable", 2651 | "shim" 2652 | ], 2653 | "support": { 2654 | "source": "https://github.com/symfony/polyfill-php73/tree/v1.23.0" 2655 | }, 2656 | "funding": [ 2657 | { 2658 | "url": "https://symfony.com/sponsor", 2659 | "type": "custom" 2660 | }, 2661 | { 2662 | "url": "https://github.com/fabpot", 2663 | "type": "github" 2664 | }, 2665 | { 2666 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2667 | "type": "tidelift" 2668 | } 2669 | ], 2670 | "time": "2021-02-19T12:13:01+00:00" 2671 | }, 2672 | { 2673 | "name": "symfony/polyfill-php80", 2674 | "version": "v1.23.1", 2675 | "source": { 2676 | "type": "git", 2677 | "url": "https://github.com/symfony/polyfill-php80.git", 2678 | "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be" 2679 | }, 2680 | "dist": { 2681 | "type": "zip", 2682 | "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/1100343ed1a92e3a38f9ae122fc0eb21602547be", 2683 | "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be", 2684 | "shasum": "" 2685 | }, 2686 | "require": { 2687 | "php": ">=7.1" 2688 | }, 2689 | "type": "library", 2690 | "extra": { 2691 | "branch-alias": { 2692 | "dev-main": "1.23-dev" 2693 | }, 2694 | "thanks": { 2695 | "name": "symfony/polyfill", 2696 | "url": "https://github.com/symfony/polyfill" 2697 | } 2698 | }, 2699 | "autoload": { 2700 | "psr-4": { 2701 | "Symfony\\Polyfill\\Php80\\": "" 2702 | }, 2703 | "files": [ 2704 | "bootstrap.php" 2705 | ], 2706 | "classmap": [ 2707 | "Resources/stubs" 2708 | ] 2709 | }, 2710 | "notification-url": "https://packagist.org/downloads/", 2711 | "license": [ 2712 | "MIT" 2713 | ], 2714 | "authors": [ 2715 | { 2716 | "name": "Ion Bazan", 2717 | "email": "ion.bazan@gmail.com" 2718 | }, 2719 | { 2720 | "name": "Nicolas Grekas", 2721 | "email": "p@tchwork.com" 2722 | }, 2723 | { 2724 | "name": "Symfony Community", 2725 | "homepage": "https://symfony.com/contributors" 2726 | } 2727 | ], 2728 | "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", 2729 | "homepage": "https://symfony.com", 2730 | "keywords": [ 2731 | "compatibility", 2732 | "polyfill", 2733 | "portable", 2734 | "shim" 2735 | ], 2736 | "support": { 2737 | "source": "https://github.com/symfony/polyfill-php80/tree/v1.23.1" 2738 | }, 2739 | "funding": [ 2740 | { 2741 | "url": "https://symfony.com/sponsor", 2742 | "type": "custom" 2743 | }, 2744 | { 2745 | "url": "https://github.com/fabpot", 2746 | "type": "github" 2747 | }, 2748 | { 2749 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2750 | "type": "tidelift" 2751 | } 2752 | ], 2753 | "time": "2021-07-28T13:41:28+00:00" 2754 | }, 2755 | { 2756 | "name": "symfony/polyfill-php81", 2757 | "version": "v1.23.0", 2758 | "source": { 2759 | "type": "git", 2760 | "url": "https://github.com/symfony/polyfill-php81.git", 2761 | "reference": "e66119f3de95efc359483f810c4c3e6436279436" 2762 | }, 2763 | "dist": { 2764 | "type": "zip", 2765 | "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/e66119f3de95efc359483f810c4c3e6436279436", 2766 | "reference": "e66119f3de95efc359483f810c4c3e6436279436", 2767 | "shasum": "" 2768 | }, 2769 | "require": { 2770 | "php": ">=7.1" 2771 | }, 2772 | "type": "library", 2773 | "extra": { 2774 | "branch-alias": { 2775 | "dev-main": "1.23-dev" 2776 | }, 2777 | "thanks": { 2778 | "name": "symfony/polyfill", 2779 | "url": "https://github.com/symfony/polyfill" 2780 | } 2781 | }, 2782 | "autoload": { 2783 | "psr-4": { 2784 | "Symfony\\Polyfill\\Php81\\": "" 2785 | }, 2786 | "files": [ 2787 | "bootstrap.php" 2788 | ], 2789 | "classmap": [ 2790 | "Resources/stubs" 2791 | ] 2792 | }, 2793 | "notification-url": "https://packagist.org/downloads/", 2794 | "license": [ 2795 | "MIT" 2796 | ], 2797 | "authors": [ 2798 | { 2799 | "name": "Nicolas Grekas", 2800 | "email": "p@tchwork.com" 2801 | }, 2802 | { 2803 | "name": "Symfony Community", 2804 | "homepage": "https://symfony.com/contributors" 2805 | } 2806 | ], 2807 | "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", 2808 | "homepage": "https://symfony.com", 2809 | "keywords": [ 2810 | "compatibility", 2811 | "polyfill", 2812 | "portable", 2813 | "shim" 2814 | ], 2815 | "support": { 2816 | "source": "https://github.com/symfony/polyfill-php81/tree/v1.23.0" 2817 | }, 2818 | "funding": [ 2819 | { 2820 | "url": "https://symfony.com/sponsor", 2821 | "type": "custom" 2822 | }, 2823 | { 2824 | "url": "https://github.com/fabpot", 2825 | "type": "github" 2826 | }, 2827 | { 2828 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2829 | "type": "tidelift" 2830 | } 2831 | ], 2832 | "time": "2021-05-21T13:25:03+00:00" 2833 | }, 2834 | { 2835 | "name": "symfony/process", 2836 | "version": "v5.4.0", 2837 | "source": { 2838 | "type": "git", 2839 | "url": "https://github.com/symfony/process.git", 2840 | "reference": "5be20b3830f726e019162b26223110c8f47cf274" 2841 | }, 2842 | "dist": { 2843 | "type": "zip", 2844 | "url": "https://api.github.com/repos/symfony/process/zipball/5be20b3830f726e019162b26223110c8f47cf274", 2845 | "reference": "5be20b3830f726e019162b26223110c8f47cf274", 2846 | "shasum": "" 2847 | }, 2848 | "require": { 2849 | "php": ">=7.2.5", 2850 | "symfony/polyfill-php80": "^1.16" 2851 | }, 2852 | "type": "library", 2853 | "autoload": { 2854 | "psr-4": { 2855 | "Symfony\\Component\\Process\\": "" 2856 | }, 2857 | "exclude-from-classmap": [ 2858 | "/Tests/" 2859 | ] 2860 | }, 2861 | "notification-url": "https://packagist.org/downloads/", 2862 | "license": [ 2863 | "MIT" 2864 | ], 2865 | "authors": [ 2866 | { 2867 | "name": "Fabien Potencier", 2868 | "email": "fabien@symfony.com" 2869 | }, 2870 | { 2871 | "name": "Symfony Community", 2872 | "homepage": "https://symfony.com/contributors" 2873 | } 2874 | ], 2875 | "description": "Executes commands in sub-processes", 2876 | "homepage": "https://symfony.com", 2877 | "support": { 2878 | "source": "https://github.com/symfony/process/tree/v5.4.0" 2879 | }, 2880 | "funding": [ 2881 | { 2882 | "url": "https://symfony.com/sponsor", 2883 | "type": "custom" 2884 | }, 2885 | { 2886 | "url": "https://github.com/fabpot", 2887 | "type": "github" 2888 | }, 2889 | { 2890 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2891 | "type": "tidelift" 2892 | } 2893 | ], 2894 | "time": "2021-11-28T15:25:38+00:00" 2895 | }, 2896 | { 2897 | "name": "symfony/service-contracts", 2898 | "version": "v2.4.1", 2899 | "source": { 2900 | "type": "git", 2901 | "url": "https://github.com/symfony/service-contracts.git", 2902 | "reference": "d664541b99d6fb0247ec5ff32e87238582236204" 2903 | }, 2904 | "dist": { 2905 | "type": "zip", 2906 | "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d664541b99d6fb0247ec5ff32e87238582236204", 2907 | "reference": "d664541b99d6fb0247ec5ff32e87238582236204", 2908 | "shasum": "" 2909 | }, 2910 | "require": { 2911 | "php": ">=7.2.5", 2912 | "psr/container": "^1.1" 2913 | }, 2914 | "conflict": { 2915 | "ext-psr": "<1.1|>=2" 2916 | }, 2917 | "suggest": { 2918 | "symfony/service-implementation": "" 2919 | }, 2920 | "type": "library", 2921 | "extra": { 2922 | "branch-alias": { 2923 | "dev-main": "2.4-dev" 2924 | }, 2925 | "thanks": { 2926 | "name": "symfony/contracts", 2927 | "url": "https://github.com/symfony/contracts" 2928 | } 2929 | }, 2930 | "autoload": { 2931 | "psr-4": { 2932 | "Symfony\\Contracts\\Service\\": "" 2933 | } 2934 | }, 2935 | "notification-url": "https://packagist.org/downloads/", 2936 | "license": [ 2937 | "MIT" 2938 | ], 2939 | "authors": [ 2940 | { 2941 | "name": "Nicolas Grekas", 2942 | "email": "p@tchwork.com" 2943 | }, 2944 | { 2945 | "name": "Symfony Community", 2946 | "homepage": "https://symfony.com/contributors" 2947 | } 2948 | ], 2949 | "description": "Generic abstractions related to writing services", 2950 | "homepage": "https://symfony.com", 2951 | "keywords": [ 2952 | "abstractions", 2953 | "contracts", 2954 | "decoupling", 2955 | "interfaces", 2956 | "interoperability", 2957 | "standards" 2958 | ], 2959 | "support": { 2960 | "source": "https://github.com/symfony/service-contracts/tree/v2.4.1" 2961 | }, 2962 | "funding": [ 2963 | { 2964 | "url": "https://symfony.com/sponsor", 2965 | "type": "custom" 2966 | }, 2967 | { 2968 | "url": "https://github.com/fabpot", 2969 | "type": "github" 2970 | }, 2971 | { 2972 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2973 | "type": "tidelift" 2974 | } 2975 | ], 2976 | "time": "2021-11-04T16:37:19+00:00" 2977 | }, 2978 | { 2979 | "name": "symfony/string", 2980 | "version": "v6.0.1", 2981 | "source": { 2982 | "type": "git", 2983 | "url": "https://github.com/symfony/string.git", 2984 | "reference": "0cfed595758ec6e0a25591bdc8ca733c1896af32" 2985 | }, 2986 | "dist": { 2987 | "type": "zip", 2988 | "url": "https://api.github.com/repos/symfony/string/zipball/0cfed595758ec6e0a25591bdc8ca733c1896af32", 2989 | "reference": "0cfed595758ec6e0a25591bdc8ca733c1896af32", 2990 | "shasum": "" 2991 | }, 2992 | "require": { 2993 | "php": ">=8.0.2", 2994 | "symfony/polyfill-ctype": "~1.8", 2995 | "symfony/polyfill-intl-grapheme": "~1.0", 2996 | "symfony/polyfill-intl-normalizer": "~1.0", 2997 | "symfony/polyfill-mbstring": "~1.0" 2998 | }, 2999 | "conflict": { 3000 | "symfony/translation-contracts": "<2.0" 3001 | }, 3002 | "require-dev": { 3003 | "symfony/error-handler": "^5.4|^6.0", 3004 | "symfony/http-client": "^5.4|^6.0", 3005 | "symfony/translation-contracts": "^2.0|^3.0", 3006 | "symfony/var-exporter": "^5.4|^6.0" 3007 | }, 3008 | "type": "library", 3009 | "autoload": { 3010 | "psr-4": { 3011 | "Symfony\\Component\\String\\": "" 3012 | }, 3013 | "files": [ 3014 | "Resources/functions.php" 3015 | ], 3016 | "exclude-from-classmap": [ 3017 | "/Tests/" 3018 | ] 3019 | }, 3020 | "notification-url": "https://packagist.org/downloads/", 3021 | "license": [ 3022 | "MIT" 3023 | ], 3024 | "authors": [ 3025 | { 3026 | "name": "Nicolas Grekas", 3027 | "email": "p@tchwork.com" 3028 | }, 3029 | { 3030 | "name": "Symfony Community", 3031 | "homepage": "https://symfony.com/contributors" 3032 | } 3033 | ], 3034 | "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", 3035 | "homepage": "https://symfony.com", 3036 | "keywords": [ 3037 | "grapheme", 3038 | "i18n", 3039 | "string", 3040 | "unicode", 3041 | "utf-8", 3042 | "utf8" 3043 | ], 3044 | "support": { 3045 | "source": "https://github.com/symfony/string/tree/v6.0.1" 3046 | }, 3047 | "funding": [ 3048 | { 3049 | "url": "https://symfony.com/sponsor", 3050 | "type": "custom" 3051 | }, 3052 | { 3053 | "url": "https://github.com/fabpot", 3054 | "type": "github" 3055 | }, 3056 | { 3057 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3058 | "type": "tidelift" 3059 | } 3060 | ], 3061 | "time": "2021-12-08T15:13:44+00:00" 3062 | }, 3063 | { 3064 | "name": "symfony/translation", 3065 | "version": "v6.0.1", 3066 | "source": { 3067 | "type": "git", 3068 | "url": "https://github.com/symfony/translation.git", 3069 | "reference": "b7956e00c6e03546f2ba489fc50f7c47933e76b8" 3070 | }, 3071 | "dist": { 3072 | "type": "zip", 3073 | "url": "https://api.github.com/repos/symfony/translation/zipball/b7956e00c6e03546f2ba489fc50f7c47933e76b8", 3074 | "reference": "b7956e00c6e03546f2ba489fc50f7c47933e76b8", 3075 | "shasum": "" 3076 | }, 3077 | "require": { 3078 | "php": ">=8.0.2", 3079 | "symfony/polyfill-mbstring": "~1.0", 3080 | "symfony/translation-contracts": "^2.3|^3.0" 3081 | }, 3082 | "conflict": { 3083 | "symfony/config": "<5.4", 3084 | "symfony/console": "<5.4", 3085 | "symfony/dependency-injection": "<5.4", 3086 | "symfony/http-kernel": "<5.4", 3087 | "symfony/twig-bundle": "<5.4", 3088 | "symfony/yaml": "<5.4" 3089 | }, 3090 | "provide": { 3091 | "symfony/translation-implementation": "2.3|3.0" 3092 | }, 3093 | "require-dev": { 3094 | "psr/log": "^1|^2|^3", 3095 | "symfony/config": "^5.4|^6.0", 3096 | "symfony/console": "^5.4|^6.0", 3097 | "symfony/dependency-injection": "^5.4|^6.0", 3098 | "symfony/finder": "^5.4|^6.0", 3099 | "symfony/http-client-contracts": "^1.1|^2.0|^3.0", 3100 | "symfony/http-kernel": "^5.4|^6.0", 3101 | "symfony/intl": "^5.4|^6.0", 3102 | "symfony/polyfill-intl-icu": "^1.21", 3103 | "symfony/service-contracts": "^1.1.2|^2|^3", 3104 | "symfony/yaml": "^5.4|^6.0" 3105 | }, 3106 | "suggest": { 3107 | "psr/log-implementation": "To use logging capability in translator", 3108 | "symfony/config": "", 3109 | "symfony/yaml": "" 3110 | }, 3111 | "type": "library", 3112 | "autoload": { 3113 | "files": [ 3114 | "Resources/functions.php" 3115 | ], 3116 | "psr-4": { 3117 | "Symfony\\Component\\Translation\\": "" 3118 | }, 3119 | "exclude-from-classmap": [ 3120 | "/Tests/" 3121 | ] 3122 | }, 3123 | "notification-url": "https://packagist.org/downloads/", 3124 | "license": [ 3125 | "MIT" 3126 | ], 3127 | "authors": [ 3128 | { 3129 | "name": "Fabien Potencier", 3130 | "email": "fabien@symfony.com" 3131 | }, 3132 | { 3133 | "name": "Symfony Community", 3134 | "homepage": "https://symfony.com/contributors" 3135 | } 3136 | ], 3137 | "description": "Provides tools to internationalize your application", 3138 | "homepage": "https://symfony.com", 3139 | "support": { 3140 | "source": "https://github.com/symfony/translation/tree/v6.0.1" 3141 | }, 3142 | "funding": [ 3143 | { 3144 | "url": "https://symfony.com/sponsor", 3145 | "type": "custom" 3146 | }, 3147 | { 3148 | "url": "https://github.com/fabpot", 3149 | "type": "github" 3150 | }, 3151 | { 3152 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3153 | "type": "tidelift" 3154 | } 3155 | ], 3156 | "time": "2021-12-08T15:13:44+00:00" 3157 | }, 3158 | { 3159 | "name": "symfony/translation-contracts", 3160 | "version": "v3.0.0", 3161 | "source": { 3162 | "type": "git", 3163 | "url": "https://github.com/symfony/translation-contracts.git", 3164 | "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77" 3165 | }, 3166 | "dist": { 3167 | "type": "zip", 3168 | "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", 3169 | "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", 3170 | "shasum": "" 3171 | }, 3172 | "require": { 3173 | "php": ">=8.0.2" 3174 | }, 3175 | "suggest": { 3176 | "symfony/translation-implementation": "" 3177 | }, 3178 | "type": "library", 3179 | "extra": { 3180 | "branch-alias": { 3181 | "dev-main": "3.0-dev" 3182 | }, 3183 | "thanks": { 3184 | "name": "symfony/contracts", 3185 | "url": "https://github.com/symfony/contracts" 3186 | } 3187 | }, 3188 | "autoload": { 3189 | "psr-4": { 3190 | "Symfony\\Contracts\\Translation\\": "" 3191 | } 3192 | }, 3193 | "notification-url": "https://packagist.org/downloads/", 3194 | "license": [ 3195 | "MIT" 3196 | ], 3197 | "authors": [ 3198 | { 3199 | "name": "Nicolas Grekas", 3200 | "email": "p@tchwork.com" 3201 | }, 3202 | { 3203 | "name": "Symfony Community", 3204 | "homepage": "https://symfony.com/contributors" 3205 | } 3206 | ], 3207 | "description": "Generic abstractions related to translation", 3208 | "homepage": "https://symfony.com", 3209 | "keywords": [ 3210 | "abstractions", 3211 | "contracts", 3212 | "decoupling", 3213 | "interfaces", 3214 | "interoperability", 3215 | "standards" 3216 | ], 3217 | "support": { 3218 | "source": "https://github.com/symfony/translation-contracts/tree/v3.0.0" 3219 | }, 3220 | "funding": [ 3221 | { 3222 | "url": "https://symfony.com/sponsor", 3223 | "type": "custom" 3224 | }, 3225 | { 3226 | "url": "https://github.com/fabpot", 3227 | "type": "github" 3228 | }, 3229 | { 3230 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3231 | "type": "tidelift" 3232 | } 3233 | ], 3234 | "time": "2021-09-07T12:43:40+00:00" 3235 | }, 3236 | { 3237 | "name": "symfony/var-dumper", 3238 | "version": "v5.4.1", 3239 | "source": { 3240 | "type": "git", 3241 | "url": "https://github.com/symfony/var-dumper.git", 3242 | "reference": "2366ac8d8abe0c077844613c1a4f0c0a9f522dcc" 3243 | }, 3244 | "dist": { 3245 | "type": "zip", 3246 | "url": "https://api.github.com/repos/symfony/var-dumper/zipball/2366ac8d8abe0c077844613c1a4f0c0a9f522dcc", 3247 | "reference": "2366ac8d8abe0c077844613c1a4f0c0a9f522dcc", 3248 | "shasum": "" 3249 | }, 3250 | "require": { 3251 | "php": ">=7.2.5", 3252 | "symfony/polyfill-mbstring": "~1.0", 3253 | "symfony/polyfill-php80": "^1.16" 3254 | }, 3255 | "conflict": { 3256 | "phpunit/phpunit": "<5.4.3", 3257 | "symfony/console": "<4.4" 3258 | }, 3259 | "require-dev": { 3260 | "ext-iconv": "*", 3261 | "symfony/console": "^4.4|^5.0|^6.0", 3262 | "symfony/process": "^4.4|^5.0|^6.0", 3263 | "symfony/uid": "^5.1|^6.0", 3264 | "twig/twig": "^2.13|^3.0.4" 3265 | }, 3266 | "suggest": { 3267 | "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", 3268 | "ext-intl": "To show region name in time zone dump", 3269 | "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" 3270 | }, 3271 | "bin": [ 3272 | "Resources/bin/var-dump-server" 3273 | ], 3274 | "type": "library", 3275 | "autoload": { 3276 | "files": [ 3277 | "Resources/functions/dump.php" 3278 | ], 3279 | "psr-4": { 3280 | "Symfony\\Component\\VarDumper\\": "" 3281 | }, 3282 | "exclude-from-classmap": [ 3283 | "/Tests/" 3284 | ] 3285 | }, 3286 | "notification-url": "https://packagist.org/downloads/", 3287 | "license": [ 3288 | "MIT" 3289 | ], 3290 | "authors": [ 3291 | { 3292 | "name": "Nicolas Grekas", 3293 | "email": "p@tchwork.com" 3294 | }, 3295 | { 3296 | "name": "Symfony Community", 3297 | "homepage": "https://symfony.com/contributors" 3298 | } 3299 | ], 3300 | "description": "Provides mechanisms for walking through any arbitrary PHP variable", 3301 | "homepage": "https://symfony.com", 3302 | "keywords": [ 3303 | "debug", 3304 | "dump" 3305 | ], 3306 | "support": { 3307 | "source": "https://github.com/symfony/var-dumper/tree/v5.4.1" 3308 | }, 3309 | "funding": [ 3310 | { 3311 | "url": "https://symfony.com/sponsor", 3312 | "type": "custom" 3313 | }, 3314 | { 3315 | "url": "https://github.com/fabpot", 3316 | "type": "github" 3317 | }, 3318 | { 3319 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3320 | "type": "tidelift" 3321 | } 3322 | ], 3323 | "time": "2021-12-01T15:04:08+00:00" 3324 | }, 3325 | { 3326 | "name": "symfony/yaml", 3327 | "version": "v5.4.0", 3328 | "source": { 3329 | "type": "git", 3330 | "url": "https://github.com/symfony/yaml.git", 3331 | "reference": "034ccc0994f1ae3f7499fa5b1f2e75d5e7a94efc" 3332 | }, 3333 | "dist": { 3334 | "type": "zip", 3335 | "url": "https://api.github.com/repos/symfony/yaml/zipball/034ccc0994f1ae3f7499fa5b1f2e75d5e7a94efc", 3336 | "reference": "034ccc0994f1ae3f7499fa5b1f2e75d5e7a94efc", 3337 | "shasum": "" 3338 | }, 3339 | "require": { 3340 | "php": ">=7.2.5", 3341 | "symfony/deprecation-contracts": "^2.1|^3", 3342 | "symfony/polyfill-ctype": "^1.8" 3343 | }, 3344 | "conflict": { 3345 | "symfony/console": "<5.3" 3346 | }, 3347 | "require-dev": { 3348 | "symfony/console": "^5.3|^6.0" 3349 | }, 3350 | "suggest": { 3351 | "symfony/console": "For validating YAML files using the lint command" 3352 | }, 3353 | "bin": [ 3354 | "Resources/bin/yaml-lint" 3355 | ], 3356 | "type": "library", 3357 | "autoload": { 3358 | "psr-4": { 3359 | "Symfony\\Component\\Yaml\\": "" 3360 | }, 3361 | "exclude-from-classmap": [ 3362 | "/Tests/" 3363 | ] 3364 | }, 3365 | "notification-url": "https://packagist.org/downloads/", 3366 | "license": [ 3367 | "MIT" 3368 | ], 3369 | "authors": [ 3370 | { 3371 | "name": "Fabien Potencier", 3372 | "email": "fabien@symfony.com" 3373 | }, 3374 | { 3375 | "name": "Symfony Community", 3376 | "homepage": "https://symfony.com/contributors" 3377 | } 3378 | ], 3379 | "description": "Loads and dumps YAML files", 3380 | "homepage": "https://symfony.com", 3381 | "support": { 3382 | "source": "https://github.com/symfony/yaml/tree/v5.4.0" 3383 | }, 3384 | "funding": [ 3385 | { 3386 | "url": "https://symfony.com/sponsor", 3387 | "type": "custom" 3388 | }, 3389 | { 3390 | "url": "https://github.com/fabpot", 3391 | "type": "github" 3392 | }, 3393 | { 3394 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3395 | "type": "tidelift" 3396 | } 3397 | ], 3398 | "time": "2021-11-28T15:25:38+00:00" 3399 | }, 3400 | { 3401 | "name": "vlucas/phpdotenv", 3402 | "version": "v5.4.1", 3403 | "source": { 3404 | "type": "git", 3405 | "url": "https://github.com/vlucas/phpdotenv.git", 3406 | "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" 3407 | }, 3408 | "dist": { 3409 | "type": "zip", 3410 | "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", 3411 | "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", 3412 | "shasum": "" 3413 | }, 3414 | "require": { 3415 | "ext-pcre": "*", 3416 | "graham-campbell/result-type": "^1.0.2", 3417 | "php": "^7.1.3 || ^8.0", 3418 | "phpoption/phpoption": "^1.8", 3419 | "symfony/polyfill-ctype": "^1.23", 3420 | "symfony/polyfill-mbstring": "^1.23.1", 3421 | "symfony/polyfill-php80": "^1.23.1" 3422 | }, 3423 | "require-dev": { 3424 | "bamarni/composer-bin-plugin": "^1.4.1", 3425 | "ext-filter": "*", 3426 | "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" 3427 | }, 3428 | "suggest": { 3429 | "ext-filter": "Required to use the boolean validator." 3430 | }, 3431 | "type": "library", 3432 | "extra": { 3433 | "branch-alias": { 3434 | "dev-master": "5.4-dev" 3435 | } 3436 | }, 3437 | "autoload": { 3438 | "psr-4": { 3439 | "Dotenv\\": "src/" 3440 | } 3441 | }, 3442 | "notification-url": "https://packagist.org/downloads/", 3443 | "license": [ 3444 | "BSD-3-Clause" 3445 | ], 3446 | "authors": [ 3447 | { 3448 | "name": "Graham Campbell", 3449 | "email": "hello@gjcampbell.co.uk", 3450 | "homepage": "https://github.com/GrahamCampbell" 3451 | }, 3452 | { 3453 | "name": "Vance Lucas", 3454 | "email": "vance@vancelucas.com", 3455 | "homepage": "https://github.com/vlucas" 3456 | } 3457 | ], 3458 | "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", 3459 | "keywords": [ 3460 | "dotenv", 3461 | "env", 3462 | "environment" 3463 | ], 3464 | "support": { 3465 | "issues": "https://github.com/vlucas/phpdotenv/issues", 3466 | "source": "https://github.com/vlucas/phpdotenv/tree/v5.4.1" 3467 | }, 3468 | "funding": [ 3469 | { 3470 | "url": "https://github.com/GrahamCampbell", 3471 | "type": "github" 3472 | }, 3473 | { 3474 | "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", 3475 | "type": "tidelift" 3476 | } 3477 | ], 3478 | "time": "2021-12-12T23:22:04+00:00" 3479 | }, 3480 | { 3481 | "name": "voku/portable-ascii", 3482 | "version": "1.5.6", 3483 | "source": { 3484 | "type": "git", 3485 | "url": "https://github.com/voku/portable-ascii.git", 3486 | "reference": "80953678b19901e5165c56752d087fc11526017c" 3487 | }, 3488 | "dist": { 3489 | "type": "zip", 3490 | "url": "https://api.github.com/repos/voku/portable-ascii/zipball/80953678b19901e5165c56752d087fc11526017c", 3491 | "reference": "80953678b19901e5165c56752d087fc11526017c", 3492 | "shasum": "" 3493 | }, 3494 | "require": { 3495 | "php": ">=7.0.0" 3496 | }, 3497 | "require-dev": { 3498 | "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0" 3499 | }, 3500 | "suggest": { 3501 | "ext-intl": "Use Intl for transliterator_transliterate() support" 3502 | }, 3503 | "type": "library", 3504 | "autoload": { 3505 | "psr-4": { 3506 | "voku\\": "src/voku/" 3507 | } 3508 | }, 3509 | "notification-url": "https://packagist.org/downloads/", 3510 | "license": [ 3511 | "MIT" 3512 | ], 3513 | "authors": [ 3514 | { 3515 | "name": "Lars Moelleken", 3516 | "homepage": "http://www.moelleken.org/" 3517 | } 3518 | ], 3519 | "description": "Portable ASCII library - performance optimized (ascii) string functions for php.", 3520 | "homepage": "https://github.com/voku/portable-ascii", 3521 | "keywords": [ 3522 | "ascii", 3523 | "clean", 3524 | "php" 3525 | ], 3526 | "support": { 3527 | "issues": "https://github.com/voku/portable-ascii/issues", 3528 | "source": "https://github.com/voku/portable-ascii/tree/1.5.6" 3529 | }, 3530 | "funding": [ 3531 | { 3532 | "url": "https://www.paypal.me/moelleken", 3533 | "type": "custom" 3534 | }, 3535 | { 3536 | "url": "https://github.com/voku", 3537 | "type": "github" 3538 | }, 3539 | { 3540 | "url": "https://opencollective.com/portable-ascii", 3541 | "type": "open_collective" 3542 | }, 3543 | { 3544 | "url": "https://www.patreon.com/voku", 3545 | "type": "patreon" 3546 | }, 3547 | { 3548 | "url": "https://tidelift.com/funding/github/packagist/voku/portable-ascii", 3549 | "type": "tidelift" 3550 | } 3551 | ], 3552 | "time": "2020-11-12T00:07:28+00:00" 3553 | } 3554 | ], 3555 | "packages-dev": [], 3556 | "aliases": [], 3557 | "minimum-stability": "stable", 3558 | "stability-flags": [], 3559 | "prefer-stable": false, 3560 | "prefer-lowest": false, 3561 | "platform": [], 3562 | "platform-dev": [], 3563 | "plugin-api-version": "2.1.0" 3564 | } 3565 | -------------------------------------------------------------------------------- /cumulus: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env php 2 | addReader($adapter) 37 | ->addWriter($adapter); 38 | } 39 | } else { // V4 40 | $adapters = array_map(function ($adapterClass) { 41 | return new $adapterClass(); 42 | }, $adapters); 43 | 44 | $repository = RepositoryBuilder::create() 45 | ->withReaders($adapters) 46 | ->withWriters($adapters); 47 | } 48 | 49 | Dotenv::create( 50 | $repository->immutable()->make(), 51 | __DIR__ 52 | )->safeLoad(); 53 | } 54 | })(); 55 | 56 | /** 57 | * Create the container instance. 58 | */ 59 | Container::setInstance($container = new Container()); 60 | 61 | /** 62 | * Start the console application. 63 | */ 64 | $app = new Application('Cumulus', '0.1.0'); 65 | 66 | // Authentication... 67 | $app->add(new Commands\CloudflareLoginCommand()); 68 | $app->add(new Commands\CloudflareLogoutCommand()); 69 | 70 | // Records... 71 | $app->add(new Commands\RecordsImportCommand()); 72 | 73 | $app->run(); 74 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # Cumulus 2 | 3 | [![Total Downloads](https://img.shields.io/packagist/dt/orrison/cumulus.svg?style=flat-square)](https://packagist.org/packages/orrison/cumulus) 4 | [![License](http://poser.pugx.org/orrison/cumulus/license)](https://packagist.org/packages/orrison/cumulus) 5 | 6 | Cumulus is a package to be used with the Laravel Vapor CLI. It provides a set of commands to import DNS records for your Vapor custom domain into Cloudflare. 7 | 8 | No more having to copy each manually which takes too long and is prone to errors. Cumulus will create any missing DNS records for you as well as update any incorrect or changed records. 9 | 10 | Keep in mind that in order for the import to work the domain must be a custom domain in your Laravel Vapor team as well as a zone in your Cloudflare account already. This package will take care of importing the DNS records for you, not adding the domains. 11 | 12 | You will also need to have [Laravel Vapor CLI](https://docs.vapor.build/1.0/introduction.html#installing-the-vapor-cli) installed and authenticated on your machine. 13 | 14 | --- 15 | 16 | ## Installation 17 | ```bash 18 | composer global require orrison/cumulus --with-all-dependencies 19 | ``` 20 | 21 | --- 22 | 23 | ## Usage 24 | 25 | ### Cloudflare Authentication 26 | In order to use Cumulus, you will need a valid Cloudflare API Access Token. You can get one by following the instructions in their [Documentation](https://developers.cloudflare.com/api/tokens/create). 27 | 28 | The "Edit DNS Zone" template is perfect for this. You will just need set the "Zone Resources" options to either `All Zones` or the correct option for your use case. 29 | 30 | Once you have your token you can run the following command to input your token. It is then stored for use in future commands. 31 | ```bash 32 | cumulus cloudflare:login 33 | ``` 34 | If, for what ever reason, you would like to clear this token from local storage then you can run the following command. 35 | ```bash 36 | cumulus cloudflare:logout 37 | ``` 38 | 39 | Alternatively, if you wish to load your API token from your server environment, you can do so by declaring `CLOUDFLARE_API_TOKEN` as an environment variable. When this is defined it will always take priority over your Cumulus config stored in your user profile. 40 | 41 | --- 42 | 43 | ### Importing DNS Records 44 | Cumulus directly executes some commands via Laravel Vapor. So you will need to be logged in with the Vapor CLI that is either globally or per project installed. Learn about that in the [Vapor Documentation](https://docs.vapor.build/1.0/introduction.html#installing-the-vapor-cli). 45 | 46 | Now that you have a valid Cloudflare API token and are logged in to a Vapor team that has access to the domain you are attempting to import, you can run the following command to import the DNS records for your domain. 47 | ```bash 48 | cumulus records:import [THE_DOMAIN_NAME] 49 | ``` 50 | This will import any missing DNS records that Vapor specifies into the Cloudflare DNS zone. As well as update any incorrect or changed records. 51 | 52 | If you would like to see what changes would be made before actually importing, you can add `--dry-run` to the end of the command. 53 | 54 | The import command will attempt to "proxy" each added/updated record if it can be proxied. If you would not like the added records proxied, you can add `--no-proxy` to the end of the command. 55 | 56 | ### Info about DNS record generation and Subdomains 57 | 58 | Cumulus will work regardless of the environment you have assigned the custom domain to. It simply imports the correct DNS records for the domain provided. Laravel Vapor generates and stores the DNS records when a domain is assigned to a project environment and successfully deployed. 59 | 60 | When you use a subdomain for a project environment Laravel Vapor will automatically generate the correct DNS records and store them with the root domain. So in order to import the correct DNS records for the subdomain you will need to import the root domain. 61 | 62 | For example if you have a subdomain `sub.example.com`, you would run the following command to import the DNS records: 63 | ```bash 64 | cumulus records:import example.com 65 | ``` 66 | -------------------------------------------------------------------------------- /src/Application.php: -------------------------------------------------------------------------------- 1 | adapter = $adapter; 19 | } 20 | 21 | public function verifyToken(): stdClass 22 | { 23 | $user = $this->adapter->get('user/tokens/verify'); 24 | $this->body = json_decode($user->getBody()); 25 | return $this->body->result; 26 | } 27 | } -------------------------------------------------------------------------------- /src/Commands/CloudflareLoginCommand.php: -------------------------------------------------------------------------------- 1 | verifyToken(); 31 | 32 | if ($response->status == 'success') { 33 | throw new Exception('Invalid API Token'); 34 | } 35 | } catch (Exception $e) { 36 | if ($e->getMessage() === 'Invalid request headers') { 37 | Helpers::abort( 38 | 'Invalid credentials' 39 | ); 40 | } 41 | throw $e; 42 | } 43 | 44 | Helpers::config( 45 | [ 46 | 'apiToken' => $apiToken, 47 | ] 48 | ); 49 | 50 | Helpers::info('Authenticated successfully.' . PHP_EOL); 51 | } 52 | 53 | /** 54 | * Configure the command options. 55 | * 56 | * @return void 57 | */ 58 | protected function configure() 59 | { 60 | $this 61 | ->setName('cloudflare:login') 62 | ->setDescription('Authenticate with Cloudflare'); 63 | } 64 | } -------------------------------------------------------------------------------- /src/Commands/CloudflareLogoutCommand.php: -------------------------------------------------------------------------------- 1 | null, 22 | ] 23 | ); 24 | 25 | Helpers::info('Cloudflare credentials cleared.' . PHP_EOL); 26 | } 27 | 28 | /** 29 | * Configure the command options. 30 | * 31 | * @return void 32 | */ 33 | protected function configure() 34 | { 35 | $this 36 | ->setName('cloudflare:logout') 37 | ->setDescription('Clear any saved authentication credentials for Cloudflare.'); 38 | } 39 | } -------------------------------------------------------------------------------- /src/Commands/RecordsImportCommand.php: -------------------------------------------------------------------------------- 1 | proxy = !$this->option('no-proxy'); 35 | $this->dryRun = $this->option('dry-run'); 36 | 37 | VaporHelpers::ensure_api_token_is_available(); 38 | Helpers::ensureCloudFlareCredentialsAreAvailable(); 39 | 40 | $vaporRecords = $this->getVaporRecords(); 41 | 42 | $this->cloudflareZoneId = Helpers::getCloudflareZoneId($this->argument('zone')); 43 | 44 | $this->dns = Helpers::getCloudflareDnsApi(); 45 | 46 | $this->cloudflareRecords = collect($this->dns->listRecords($this->cloudflareZoneId)->result); 47 | 48 | $vaporRecords->each( 49 | function ($vaporRecord) { 50 | $matches = $this->cloudflareRecords->filter(function ($cloudflareRecord) use ($vaporRecord) { 51 | return $cloudflareRecord->name === $vaporRecord['name'] && $cloudflareRecord->type === $vaporRecord['type']; 52 | }); 53 | 54 | if ($matches->isEmpty()) { 55 | // Record does not exist in Cloudflare, add it 56 | if ($this->dryRun) { 57 | $this->recordsToAdd[] = [ 58 | 'name' => $vaporRecord['name'], 59 | 'type' => $vaporRecord['type'], 60 | 'value' => $vaporRecord['value'], 61 | ]; 62 | $this->totalAddedRecords++; 63 | } else { 64 | $this->addRecord($vaporRecord['type'], $vaporRecord['name'], $vaporRecord['value']); 65 | } 66 | } elseif ($matches->first()->content !== $vaporRecord['value']) { 67 | // Record exists in Cloudflare, but the value is different, update it 68 | if ($this->dryRun) { 69 | $this->recordsToUpdate[] = [ 70 | 'name' => $vaporRecord['name'], 71 | 'type' => $vaporRecord['type'], 72 | 'value' => $vaporRecord['value'], 73 | ]; 74 | $this->totalUpdatedRecords++; 75 | } else { 76 | $this->updateRecord($matches->first(), $vaporRecord['value']); 77 | } 78 | } 79 | } 80 | ); 81 | 82 | if ($this->dryRun) { 83 | if ($this->totalAddedRecords > 0) { 84 | Helpers::info("Records required to be added:"); 85 | 86 | $this->table(['Type', 'Name', 'Value'], $this->recordsToAdd); 87 | } else { 88 | Helpers::info("No records need added to Cloudflare. All records are already imported."); 89 | } 90 | 91 | if ($this->totalUpdatedRecords > 0) { 92 | Helpers::warn("Records required to be updated:"); 93 | 94 | $this->table(['Type', 'Name', 'Value'], $this->recordsToUpdate); 95 | } else { 96 | Helpers::info("No records need updated in Cloudflare. All records are already correct."); 97 | } 98 | 99 | return; 100 | } 101 | 102 | if ($this->totalAddedRecords > 0) { 103 | Helpers::info("Added {$this->totalAddedRecords} records to Cloudflare."); 104 | } else { 105 | Helpers::info("No records were added to Cloudflare. All records are already imported."); 106 | } 107 | 108 | if ($this->totalUpdatedRecords > 0) { 109 | Helpers::info("Updated {$this->totalUpdatedRecords} records in Cloudflare."); 110 | } else { 111 | Helpers::info("No records need updated in Cloudflare. All records are already correct."); 112 | } 113 | } 114 | 115 | protected function getVaporRecords(): Collection 116 | { 117 | if (!is_numeric($vaporZoneId = $this->argument('zone'))) { 118 | $vaporZoneId = $this->findIdByName($this->vapor->zones(), $vaporZoneId, 'zone'); 119 | } 120 | 121 | if (is_null($vaporZoneId)) { 122 | Helpers::abort('Unable to find a zone with that name / ID in Vapor.'); 123 | } 124 | 125 | return collect($this->vapor->records($vaporZoneId))->map(function ($record) { 126 | return [ 127 | 'type' => $record['alias'] ? 'CNAME' : $record['type'], 128 | 'name' => $record['name'], 129 | 'value' => $record['value'], 130 | ]; 131 | }); 132 | } 133 | 134 | protected function addRecord($type, $name, $value): void 135 | { 136 | try { 137 | $this->dns->addRecord( 138 | $this->cloudflareZoneId, 139 | $type, 140 | $name, 141 | $value, 142 | 0, 143 | $type !== 'TXT' ? $this->proxy : false 144 | ); 145 | $this->totalAddedRecords++; 146 | Helpers::info("Added {$type} record {$name}"); 147 | } catch (Exception $e) { 148 | // If the record fails to be added it could be because proxy is not allowed for this record type, attempt to add it without proxy 149 | try { 150 | $this->dns->addRecord( 151 | $this->cloudflareZoneId, 152 | $type, 153 | $name, 154 | $value, 155 | 0, 156 | false 157 | ); 158 | $this->totalAddedRecords++; 159 | Helpers::info("Added {$type} record {$name}"); 160 | } catch (Exception $e) { 161 | Helpers::danger( 162 | "Unable to create {$type} record in Cloudflare with name {$name}. Response: {$e->getMessage()}" 163 | ); 164 | } 165 | } 166 | } 167 | 168 | protected function updateRecord($record, $value) 169 | { 170 | try { 171 | $this->dns->updateRecordDetails( 172 | $this->cloudflareZoneId, 173 | $record->id, 174 | [ 175 | 'type' => $record->type, 176 | 'name' => $record->name, 177 | 'content' => $value, 178 | 'ttl' => 0 179 | ] 180 | ); 181 | $this->totalUpdatedRecords++; 182 | Helpers::info("Updated {$record->type} record {$record->name}"); 183 | } catch (Exception $e) { 184 | Helpers::danger( 185 | "Unable to update record in Cloudflare. Response: {$e->getMessage()}" 186 | ); 187 | } 188 | } 189 | 190 | /** 191 | * Configure the command options. 192 | * 193 | * @return void 194 | */ 195 | protected function configure() 196 | { 197 | $this 198 | ->setName('records:import') 199 | ->addArgument('zone', InputArgument::REQUIRED, 'The zone name / ID') 200 | ->addOption('no-proxy', null, InputOption::VALUE_NONE, 'Do not proxy added records') 201 | ->addOption('dry-run', null, InputOption::VALUE_NONE, 'List records to be added without adding them') 202 | ->setDescription('Import any missing records from Vapor into the Cloudflare zone.'); 203 | } 204 | } -------------------------------------------------------------------------------- /src/Config.php: -------------------------------------------------------------------------------- 1 | $value) { 39 | Config::set($innerKey, $value); 40 | } 41 | 42 | return; 43 | } 44 | 45 | return Config::get($key, $value); 46 | } 47 | 48 | /** 49 | * @param string $zoneInput 50 | * 51 | * @return string|void 52 | */ 53 | public static function getCloudflareZoneId($zoneInput) 54 | { 55 | $key = new APIToken(static::getCloudFlareApiToken()); 56 | $adapter = new Guzzle($key); 57 | 58 | $zone = new Zones($adapter); 59 | 60 | try { 61 | return $zone->getZoneId($zoneInput); 62 | } catch (Exception $e) { 63 | parent::abort('Unable to find a zone with that name / ID in Cloudflare.'); 64 | } 65 | } 66 | 67 | /** 68 | * @return DNS 69 | */ 70 | public static function getCloudflareDnsApi() 71 | { 72 | $key = new APIToken(static::getCloudFlareApiToken()); 73 | $adapter = new Guzzle($key); 74 | 75 | return new DNS($adapter); 76 | } 77 | 78 | public static function getCloudFlareApiToken() 79 | { 80 | return $_ENV['CLOUDFLARE_API_TOKEN'] 81 | ?? env('CLOUDFLARE_API_TOKEN') 82 | ?? Config::get('apiToken'); 83 | } 84 | } --------------------------------------------------------------------------------