├── .gitignore ├── .styleci.yml ├── .travis.yml ├── LICENSE ├── composer.json ├── composer.lock ├── phpstan.neon ├── phpunit.xml ├── readme.md ├── src ├── BladeRenderer.php ├── FontAwesomeServiceProvider.php ├── IconRenderer.php ├── Middleware │ └── InjectStyleSheet.php ├── Models │ ├── Icon.php │ └── Svg.php ├── SvgParser.php └── config │ └── fontawesome.php └── tests ├── BladeRendererTest.php ├── IconRendererTest.php ├── MiddlewareTest.php └── TestCase.php /.gitignore: -------------------------------------------------------------------------------- 1 | /vendor/ 2 | .phpunit.result.cache 3 | -------------------------------------------------------------------------------- /.styleci.yml: -------------------------------------------------------------------------------- 1 | preset: recommended 2 | 3 | risky: true 4 | 5 | disabled: 6 | - align_double_arrow 7 | - concat_without_spaces 8 | - elseif 9 | - phpdoc_align 10 | 11 | enabled: 12 | - native_constant_invocation 13 | - native_function_invocation 14 | - static_lambda 15 | 16 | finder: 17 | exclude: 18 | - vendor 19 | name: "*.php" -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: php 2 | 3 | matrix: 4 | fast_finish: true 5 | include: 6 | - php: 7.2 7 | - php: 7.3 8 | - php: 7.4 9 | 10 | cache: 11 | directories: 12 | - $HOME/.composer/cache 13 | 14 | before_install: 15 | - travis_retry composer self-update 16 | 17 | install: 18 | - travis_retry composer update --no-interaction --prefer-dist --no-suggest 19 | 20 | script: 21 | - vendor/bin/phpunit 22 | - vendor/bin/phpstan analyse 23 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 - 2020 Jeroen Deviaene 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jerodev/laravel-font-awesome", 3 | "description": "A Laravel package that renders Font Awesome icons server-side", 4 | "type": "library", 5 | "license": "MIT", 6 | "keywords": [ 7 | "Laravel", 8 | "FontAwesome", 9 | "svg" 10 | ], 11 | "homepage": "https://github.com/jerodev/laravel-font-awesome", 12 | "authors": [ 13 | { 14 | "name": "Jeroen Deviaene", 15 | "email": "jeroen@deviaene.eu", 16 | "homepage": "https://www.deviaene.eu/", 17 | "role": "Developer" 18 | } 19 | ], 20 | "minimum-stability": "dev", 21 | "prefer-stable" : true, 22 | "autoload": { 23 | "psr-4": { 24 | "Jerodev\\LaraFontAwesome\\": "src/" 25 | } 26 | }, 27 | "autoload-dev": { 28 | "psr-4": { 29 | "Jerodev\\LaraFontAwesome\\Tests\\": "tests/" 30 | } 31 | }, 32 | "extra": { 33 | "laravel": { 34 | "providers": [ 35 | "Jerodev\\LaraFontAwesome\\FontAwesomeServiceProvider" 36 | ] 37 | } 38 | }, 39 | "require": { 40 | "illuminate/support": "6.x", 41 | "fortawesome/font-awesome": "^5.12" 42 | }, 43 | "require-dev": { 44 | "phpstan/phpstan": "^0.12", 45 | "phpunit/phpunit": "^8.0", 46 | "orchestra/testbench": "4.x" 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /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": "751a266821ef52821f1d36e8a10d09e6", 8 | "packages": [ 9 | { 10 | "name": "doctrine/inflector", 11 | "version": "1.3.1", 12 | "source": { 13 | "type": "git", 14 | "url": "https://github.com/doctrine/inflector.git", 15 | "reference": "ec3a55242203ffa6a4b27c58176da97ff0a7aec1" 16 | }, 17 | "dist": { 18 | "type": "zip", 19 | "url": "https://api.github.com/repos/doctrine/inflector/zipball/ec3a55242203ffa6a4b27c58176da97ff0a7aec1", 20 | "reference": "ec3a55242203ffa6a4b27c58176da97ff0a7aec1", 21 | "shasum": "" 22 | }, 23 | "require": { 24 | "php": "^7.1" 25 | }, 26 | "require-dev": { 27 | "phpunit/phpunit": "^6.2" 28 | }, 29 | "type": "library", 30 | "extra": { 31 | "branch-alias": { 32 | "dev-master": "1.3.x-dev" 33 | } 34 | }, 35 | "autoload": { 36 | "psr-4": { 37 | "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector" 38 | } 39 | }, 40 | "notification-url": "https://packagist.org/downloads/", 41 | "license": [ 42 | "MIT" 43 | ], 44 | "authors": [ 45 | { 46 | "name": "Guilherme Blanco", 47 | "email": "guilhermeblanco@gmail.com" 48 | }, 49 | { 50 | "name": "Roman Borschel", 51 | "email": "roman@code-factory.org" 52 | }, 53 | { 54 | "name": "Benjamin Eberlei", 55 | "email": "kontakt@beberlei.de" 56 | }, 57 | { 58 | "name": "Jonathan Wage", 59 | "email": "jonwage@gmail.com" 60 | }, 61 | { 62 | "name": "Johannes Schmitt", 63 | "email": "schmittjoh@gmail.com" 64 | } 65 | ], 66 | "description": "Common String Manipulations with regard to casing and singular/plural rules.", 67 | "homepage": "http://www.doctrine-project.org", 68 | "keywords": [ 69 | "inflection", 70 | "pluralize", 71 | "singularize", 72 | "string" 73 | ], 74 | "time": "2019-10-30T19:59:35+00:00" 75 | }, 76 | { 77 | "name": "doctrine/lexer", 78 | "version": "1.2.0", 79 | "source": { 80 | "type": "git", 81 | "url": "https://github.com/doctrine/lexer.git", 82 | "reference": "5242d66dbeb21a30dd8a3e66bf7a73b66e05e1f6" 83 | }, 84 | "dist": { 85 | "type": "zip", 86 | "url": "https://api.github.com/repos/doctrine/lexer/zipball/5242d66dbeb21a30dd8a3e66bf7a73b66e05e1f6", 87 | "reference": "5242d66dbeb21a30dd8a3e66bf7a73b66e05e1f6", 88 | "shasum": "" 89 | }, 90 | "require": { 91 | "php": "^7.2" 92 | }, 93 | "require-dev": { 94 | "doctrine/coding-standard": "^6.0", 95 | "phpstan/phpstan": "^0.11.8", 96 | "phpunit/phpunit": "^8.2" 97 | }, 98 | "type": "library", 99 | "extra": { 100 | "branch-alias": { 101 | "dev-master": "1.2.x-dev" 102 | } 103 | }, 104 | "autoload": { 105 | "psr-4": { 106 | "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" 107 | } 108 | }, 109 | "notification-url": "https://packagist.org/downloads/", 110 | "license": [ 111 | "MIT" 112 | ], 113 | "authors": [ 114 | { 115 | "name": "Guilherme Blanco", 116 | "email": "guilhermeblanco@gmail.com" 117 | }, 118 | { 119 | "name": "Roman Borschel", 120 | "email": "roman@code-factory.org" 121 | }, 122 | { 123 | "name": "Johannes Schmitt", 124 | "email": "schmittjoh@gmail.com" 125 | } 126 | ], 127 | "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", 128 | "homepage": "https://www.doctrine-project.org/projects/lexer.html", 129 | "keywords": [ 130 | "annotations", 131 | "docblock", 132 | "lexer", 133 | "parser", 134 | "php" 135 | ], 136 | "time": "2019-10-30T14:39:59+00:00" 137 | }, 138 | { 139 | "name": "dragonmantank/cron-expression", 140 | "version": "v2.3.0", 141 | "source": { 142 | "type": "git", 143 | "url": "https://github.com/dragonmantank/cron-expression.git", 144 | "reference": "72b6fbf76adb3cf5bc0db68559b33d41219aba27" 145 | }, 146 | "dist": { 147 | "type": "zip", 148 | "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/72b6fbf76adb3cf5bc0db68559b33d41219aba27", 149 | "reference": "72b6fbf76adb3cf5bc0db68559b33d41219aba27", 150 | "shasum": "" 151 | }, 152 | "require": { 153 | "php": "^7.0" 154 | }, 155 | "require-dev": { 156 | "phpunit/phpunit": "^6.4|^7.0" 157 | }, 158 | "type": "library", 159 | "extra": { 160 | "branch-alias": { 161 | "dev-master": "2.3-dev" 162 | } 163 | }, 164 | "autoload": { 165 | "psr-4": { 166 | "Cron\\": "src/Cron/" 167 | } 168 | }, 169 | "notification-url": "https://packagist.org/downloads/", 170 | "license": [ 171 | "MIT" 172 | ], 173 | "authors": [ 174 | { 175 | "name": "Michael Dowling", 176 | "email": "mtdowling@gmail.com", 177 | "homepage": "https://github.com/mtdowling" 178 | }, 179 | { 180 | "name": "Chris Tankersley", 181 | "email": "chris@ctankersley.com", 182 | "homepage": "https://github.com/dragonmantank" 183 | } 184 | ], 185 | "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", 186 | "keywords": [ 187 | "cron", 188 | "schedule" 189 | ], 190 | "time": "2019-03-31T00:38:28+00:00" 191 | }, 192 | { 193 | "name": "egulias/email-validator", 194 | "version": "2.1.13", 195 | "source": { 196 | "type": "git", 197 | "url": "https://github.com/egulias/EmailValidator.git", 198 | "reference": "834593d5900615639208417760ba6a17299e2497" 199 | }, 200 | "dist": { 201 | "type": "zip", 202 | "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/834593d5900615639208417760ba6a17299e2497", 203 | "reference": "834593d5900615639208417760ba6a17299e2497", 204 | "shasum": "" 205 | }, 206 | "require": { 207 | "doctrine/lexer": "^1.0.1", 208 | "php": ">=5.5" 209 | }, 210 | "require-dev": { 211 | "dominicsayers/isemail": "^3.0.7", 212 | "phpunit/phpunit": "^4.8.36|^7.5.15", 213 | "satooshi/php-coveralls": "^1.0.1" 214 | }, 215 | "suggest": { 216 | "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" 217 | }, 218 | "type": "library", 219 | "extra": { 220 | "branch-alias": { 221 | "dev-master": "2.1.x-dev" 222 | } 223 | }, 224 | "autoload": { 225 | "psr-4": { 226 | "Egulias\\EmailValidator\\": "EmailValidator" 227 | } 228 | }, 229 | "notification-url": "https://packagist.org/downloads/", 230 | "license": [ 231 | "MIT" 232 | ], 233 | "authors": [ 234 | { 235 | "name": "Eduardo Gulias Davis" 236 | } 237 | ], 238 | "description": "A library for validating emails against several RFCs", 239 | "homepage": "https://github.com/egulias/EmailValidator", 240 | "keywords": [ 241 | "email", 242 | "emailvalidation", 243 | "emailvalidator", 244 | "validation", 245 | "validator" 246 | ], 247 | "time": "2019-12-30T08:14:25+00:00" 248 | }, 249 | { 250 | "name": "erusev/parsedown", 251 | "version": "1.7.4", 252 | "source": { 253 | "type": "git", 254 | "url": "https://github.com/erusev/parsedown.git", 255 | "reference": "cb17b6477dfff935958ba01325f2e8a2bfa6dab3" 256 | }, 257 | "dist": { 258 | "type": "zip", 259 | "url": "https://api.github.com/repos/erusev/parsedown/zipball/cb17b6477dfff935958ba01325f2e8a2bfa6dab3", 260 | "reference": "cb17b6477dfff935958ba01325f2e8a2bfa6dab3", 261 | "shasum": "" 262 | }, 263 | "require": { 264 | "ext-mbstring": "*", 265 | "php": ">=5.3.0" 266 | }, 267 | "require-dev": { 268 | "phpunit/phpunit": "^4.8.35" 269 | }, 270 | "type": "library", 271 | "autoload": { 272 | "psr-0": { 273 | "Parsedown": "" 274 | } 275 | }, 276 | "notification-url": "https://packagist.org/downloads/", 277 | "license": [ 278 | "MIT" 279 | ], 280 | "authors": [ 281 | { 282 | "name": "Emanuil Rusev", 283 | "email": "hello@erusev.com", 284 | "homepage": "http://erusev.com" 285 | } 286 | ], 287 | "description": "Parser for Markdown.", 288 | "homepage": "http://parsedown.org", 289 | "keywords": [ 290 | "markdown", 291 | "parser" 292 | ], 293 | "time": "2019-12-30T22:54:17+00:00" 294 | }, 295 | { 296 | "name": "fortawesome/font-awesome", 297 | "version": "5.12.0", 298 | "source": { 299 | "type": "git", 300 | "url": "https://github.com/FortAwesome/Font-Awesome.git", 301 | "reference": "d8db3d032d22e7a5e21f3b40905b7867be19bb02" 302 | }, 303 | "dist": { 304 | "type": "zip", 305 | "url": "https://api.github.com/repos/FortAwesome/Font-Awesome/zipball/d8db3d032d22e7a5e21f3b40905b7867be19bb02", 306 | "reference": "d8db3d032d22e7a5e21f3b40905b7867be19bb02", 307 | "shasum": "" 308 | }, 309 | "type": "library", 310 | "notification-url": "https://packagist.org/downloads/", 311 | "license": [ 312 | "CC-BY-4.0", 313 | "OFL-1.1", 314 | "MIT" 315 | ], 316 | "authors": [ 317 | { 318 | "name": "Travis Chase", 319 | "homepage": "http://twitter.com/supercodepoet" 320 | }, 321 | { 322 | "name": "Dave Gandy", 323 | "homepage": "http://twitter.com/davegandy" 324 | }, 325 | { 326 | "name": "Rob Madole", 327 | "homepage": "http://twitter.com/robmadole" 328 | }, 329 | { 330 | "name": "Jory Raphael", 331 | "homepage": "http://twitter.com/sensibleworld" 332 | }, 333 | { 334 | "name": "Geremia Taglialatela", 335 | "homepage": "http://twitter.com/gtagliala" 336 | }, 337 | { 338 | "name": "Brian Talbot", 339 | "homepage": "http://twitter.com/talbs" 340 | }, 341 | { 342 | "name": "Mike Wilkerson", 343 | "homepage": "http://twitter.com/mw77" 344 | } 345 | ], 346 | "description": "The iconic font, CSS, and SVG framework", 347 | "homepage": "https://fontawesome.com", 348 | "keywords": [ 349 | "FontAwesome", 350 | "awesome", 351 | "bootstrap", 352 | "font", 353 | "icon", 354 | "svg" 355 | ], 356 | "time": "2019-12-10T22:52:13+00:00" 357 | }, 358 | { 359 | "name": "laravel/framework", 360 | "version": "v6.9.0", 361 | "source": { 362 | "type": "git", 363 | "url": "https://github.com/laravel/framework.git", 364 | "reference": "60610be97ca389fa4b959d4d13fb3690970d9fb7" 365 | }, 366 | "dist": { 367 | "type": "zip", 368 | "url": "https://api.github.com/repos/laravel/framework/zipball/60610be97ca389fa4b959d4d13fb3690970d9fb7", 369 | "reference": "60610be97ca389fa4b959d4d13fb3690970d9fb7", 370 | "shasum": "" 371 | }, 372 | "require": { 373 | "doctrine/inflector": "^1.1", 374 | "dragonmantank/cron-expression": "^2.0", 375 | "egulias/email-validator": "^2.1.10", 376 | "erusev/parsedown": "^1.7", 377 | "ext-json": "*", 378 | "ext-mbstring": "*", 379 | "ext-openssl": "*", 380 | "league/flysystem": "^1.0.8", 381 | "monolog/monolog": "^1.12|^2.0", 382 | "nesbot/carbon": "^2.0", 383 | "opis/closure": "^3.1", 384 | "php": "^7.2", 385 | "psr/container": "^1.0", 386 | "psr/simple-cache": "^1.0", 387 | "ramsey/uuid": "^3.7", 388 | "swiftmailer/swiftmailer": "^6.0", 389 | "symfony/console": "^4.3.4", 390 | "symfony/debug": "^4.3.4", 391 | "symfony/finder": "^4.3.4", 392 | "symfony/http-foundation": "^4.3.4", 393 | "symfony/http-kernel": "^4.3.4", 394 | "symfony/process": "^4.3.4", 395 | "symfony/routing": "^4.3.4", 396 | "symfony/var-dumper": "^4.3.4", 397 | "tijsverkoyen/css-to-inline-styles": "^2.2.1", 398 | "vlucas/phpdotenv": "^3.3" 399 | }, 400 | "conflict": { 401 | "tightenco/collect": "<5.5.33" 402 | }, 403 | "replace": { 404 | "illuminate/auth": "self.version", 405 | "illuminate/broadcasting": "self.version", 406 | "illuminate/bus": "self.version", 407 | "illuminate/cache": "self.version", 408 | "illuminate/config": "self.version", 409 | "illuminate/console": "self.version", 410 | "illuminate/container": "self.version", 411 | "illuminate/contracts": "self.version", 412 | "illuminate/cookie": "self.version", 413 | "illuminate/database": "self.version", 414 | "illuminate/encryption": "self.version", 415 | "illuminate/events": "self.version", 416 | "illuminate/filesystem": "self.version", 417 | "illuminate/hashing": "self.version", 418 | "illuminate/http": "self.version", 419 | "illuminate/log": "self.version", 420 | "illuminate/mail": "self.version", 421 | "illuminate/notifications": "self.version", 422 | "illuminate/pagination": "self.version", 423 | "illuminate/pipeline": "self.version", 424 | "illuminate/queue": "self.version", 425 | "illuminate/redis": "self.version", 426 | "illuminate/routing": "self.version", 427 | "illuminate/session": "self.version", 428 | "illuminate/support": "self.version", 429 | "illuminate/translation": "self.version", 430 | "illuminate/validation": "self.version", 431 | "illuminate/view": "self.version" 432 | }, 433 | "require-dev": { 434 | "aws/aws-sdk-php": "^3.0", 435 | "doctrine/dbal": "^2.6", 436 | "filp/whoops": "^2.4", 437 | "guzzlehttp/guzzle": "^6.3", 438 | "league/flysystem-cached-adapter": "^1.0", 439 | "mockery/mockery": "^1.2.3", 440 | "moontoast/math": "^1.1", 441 | "orchestra/testbench-core": "^4.0", 442 | "pda/pheanstalk": "^4.0", 443 | "phpunit/phpunit": "^8.3", 444 | "predis/predis": "^1.1.1", 445 | "symfony/cache": "^4.3", 446 | "true/punycode": "^2.1" 447 | }, 448 | "suggest": { 449 | "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage and SES mail driver (^3.0).", 450 | "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.6).", 451 | "ext-gd": "Required to use Illuminate\\Http\\Testing\\FileFactory::image().", 452 | "ext-memcached": "Required to use the memcache cache driver.", 453 | "ext-pcntl": "Required to use all features of the queue worker.", 454 | "ext-posix": "Required to use all features of the queue worker.", 455 | "ext-redis": "Required to use the Redis cache and queue drivers.", 456 | "filp/whoops": "Required for friendly error pages in development (^2.4).", 457 | "fzaninotto/faker": "Required to use the eloquent factory builder (^1.4).", 458 | "guzzlehttp/guzzle": "Required to use the Mailgun mail driver and the ping methods on schedules (^6.0).", 459 | "laravel/tinker": "Required to use the tinker console command (^1.0).", 460 | "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^1.0).", 461 | "league/flysystem-cached-adapter": "Required to use the Flysystem cache (^1.0).", 462 | "league/flysystem-sftp": "Required to use the Flysystem SFTP driver (^1.0).", 463 | "moontoast/math": "Required to use ordered UUIDs (^1.1).", 464 | "pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).", 465 | "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).", 466 | "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^4.0).", 467 | "symfony/cache": "Required to PSR-6 cache bridge (^4.3.4).", 468 | "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^1.2).", 469 | "wildbit/swiftmailer-postmark": "Required to use Postmark mail driver (^3.0)." 470 | }, 471 | "type": "library", 472 | "extra": { 473 | "branch-alias": { 474 | "dev-master": "6.x-dev" 475 | } 476 | }, 477 | "autoload": { 478 | "files": [ 479 | "src/Illuminate/Foundation/helpers.php", 480 | "src/Illuminate/Support/helpers.php" 481 | ], 482 | "psr-4": { 483 | "Illuminate\\": "src/Illuminate/" 484 | } 485 | }, 486 | "notification-url": "https://packagist.org/downloads/", 487 | "license": [ 488 | "MIT" 489 | ], 490 | "authors": [ 491 | { 492 | "name": "Taylor Otwell", 493 | "email": "taylor@laravel.com" 494 | } 495 | ], 496 | "description": "The Laravel Framework.", 497 | "homepage": "https://laravel.com", 498 | "keywords": [ 499 | "framework", 500 | "laravel" 501 | ], 502 | "time": "2019-12-19T18:16:22+00:00" 503 | }, 504 | { 505 | "name": "league/flysystem", 506 | "version": "1.0.63", 507 | "source": { 508 | "type": "git", 509 | "url": "https://github.com/thephpleague/flysystem.git", 510 | "reference": "8132daec326565036bc8e8d1876f77ec183a7bd6" 511 | }, 512 | "dist": { 513 | "type": "zip", 514 | "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/8132daec326565036bc8e8d1876f77ec183a7bd6", 515 | "reference": "8132daec326565036bc8e8d1876f77ec183a7bd6", 516 | "shasum": "" 517 | }, 518 | "require": { 519 | "ext-fileinfo": "*", 520 | "php": ">=5.5.9" 521 | }, 522 | "conflict": { 523 | "league/flysystem-sftp": "<1.0.6" 524 | }, 525 | "require-dev": { 526 | "phpspec/phpspec": "^3.4", 527 | "phpunit/phpunit": "^5.7.10" 528 | }, 529 | "suggest": { 530 | "ext-fileinfo": "Required for MimeType", 531 | "ext-ftp": "Allows you to use FTP server storage", 532 | "ext-openssl": "Allows you to use FTPS server storage", 533 | "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2", 534 | "league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3", 535 | "league/flysystem-azure": "Allows you to use Windows Azure Blob storage", 536 | "league/flysystem-cached-adapter": "Flysystem adapter decorator for metadata caching", 537 | "league/flysystem-eventable-filesystem": "Allows you to use EventableFilesystem", 538 | "league/flysystem-rackspace": "Allows you to use Rackspace Cloud Files", 539 | "league/flysystem-sftp": "Allows you to use SFTP server storage via phpseclib", 540 | "league/flysystem-webdav": "Allows you to use WebDAV storage", 541 | "league/flysystem-ziparchive": "Allows you to use ZipArchive adapter", 542 | "spatie/flysystem-dropbox": "Allows you to use Dropbox storage", 543 | "srmklive/flysystem-dropbox-v2": "Allows you to use Dropbox storage for PHP 5 applications" 544 | }, 545 | "type": "library", 546 | "extra": { 547 | "branch-alias": { 548 | "dev-master": "1.1-dev" 549 | } 550 | }, 551 | "autoload": { 552 | "psr-4": { 553 | "League\\Flysystem\\": "src/" 554 | } 555 | }, 556 | "notification-url": "https://packagist.org/downloads/", 557 | "license": [ 558 | "MIT" 559 | ], 560 | "authors": [ 561 | { 562 | "name": "Frank de Jonge", 563 | "email": "info@frenky.net" 564 | } 565 | ], 566 | "description": "Filesystem abstraction: Many filesystems, one API.", 567 | "keywords": [ 568 | "Cloud Files", 569 | "WebDAV", 570 | "abstraction", 571 | "aws", 572 | "cloud", 573 | "copy.com", 574 | "dropbox", 575 | "file systems", 576 | "files", 577 | "filesystem", 578 | "filesystems", 579 | "ftp", 580 | "rackspace", 581 | "remote", 582 | "s3", 583 | "sftp", 584 | "storage" 585 | ], 586 | "time": "2020-01-04T16:30:31+00:00" 587 | }, 588 | { 589 | "name": "monolog/monolog", 590 | "version": "2.0.2", 591 | "source": { 592 | "type": "git", 593 | "url": "https://github.com/Seldaek/monolog.git", 594 | "reference": "c861fcba2ca29404dc9e617eedd9eff4616986b8" 595 | }, 596 | "dist": { 597 | "type": "zip", 598 | "url": "https://api.github.com/repos/Seldaek/monolog/zipball/c861fcba2ca29404dc9e617eedd9eff4616986b8", 599 | "reference": "c861fcba2ca29404dc9e617eedd9eff4616986b8", 600 | "shasum": "" 601 | }, 602 | "require": { 603 | "php": "^7.2", 604 | "psr/log": "^1.0.1" 605 | }, 606 | "provide": { 607 | "psr/log-implementation": "1.0.0" 608 | }, 609 | "require-dev": { 610 | "aws/aws-sdk-php": "^2.4.9 || ^3.0", 611 | "doctrine/couchdb": "~1.0@dev", 612 | "elasticsearch/elasticsearch": "^6.0", 613 | "graylog2/gelf-php": "^1.4.2", 614 | "jakub-onderka/php-parallel-lint": "^0.9", 615 | "php-amqplib/php-amqplib": "~2.4", 616 | "php-console/php-console": "^3.1.3", 617 | "phpspec/prophecy": "^1.6.1", 618 | "phpunit/phpunit": "^8.3", 619 | "predis/predis": "^1.1", 620 | "rollbar/rollbar": "^1.3", 621 | "ruflin/elastica": ">=0.90 <3.0", 622 | "swiftmailer/swiftmailer": "^5.3|^6.0" 623 | }, 624 | "suggest": { 625 | "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", 626 | "doctrine/couchdb": "Allow sending log messages to a CouchDB server", 627 | "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", 628 | "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", 629 | "ext-mbstring": "Allow to work properly with unicode symbols", 630 | "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", 631 | "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", 632 | "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", 633 | "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", 634 | "php-console/php-console": "Allow sending log messages to Google Chrome", 635 | "rollbar/rollbar": "Allow sending log messages to Rollbar", 636 | "ruflin/elastica": "Allow sending log messages to an Elastic Search server" 637 | }, 638 | "type": "library", 639 | "extra": { 640 | "branch-alias": { 641 | "dev-master": "2.x-dev" 642 | } 643 | }, 644 | "autoload": { 645 | "psr-4": { 646 | "Monolog\\": "src/Monolog" 647 | } 648 | }, 649 | "notification-url": "https://packagist.org/downloads/", 650 | "license": [ 651 | "MIT" 652 | ], 653 | "authors": [ 654 | { 655 | "name": "Jordi Boggiano", 656 | "email": "j.boggiano@seld.be", 657 | "homepage": "http://seld.be" 658 | } 659 | ], 660 | "description": "Sends your logs to files, sockets, inboxes, databases and various web services", 661 | "homepage": "http://github.com/Seldaek/monolog", 662 | "keywords": [ 663 | "log", 664 | "logging", 665 | "psr-3" 666 | ], 667 | "time": "2019-12-20T14:22:59+00:00" 668 | }, 669 | { 670 | "name": "nesbot/carbon", 671 | "version": "2.28.0", 672 | "source": { 673 | "type": "git", 674 | "url": "https://github.com/briannesbitt/Carbon.git", 675 | "reference": "e2bcbcd43e67ee6101d321d5de916251d2870ca8" 676 | }, 677 | "dist": { 678 | "type": "zip", 679 | "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/e2bcbcd43e67ee6101d321d5de916251d2870ca8", 680 | "reference": "e2bcbcd43e67ee6101d321d5de916251d2870ca8", 681 | "shasum": "" 682 | }, 683 | "require": { 684 | "ext-json": "*", 685 | "php": "^7.1.8 || ^8.0", 686 | "symfony/translation": "^3.4 || ^4.0 || ^5.0" 687 | }, 688 | "require-dev": { 689 | "friendsofphp/php-cs-fixer": "^2.14 || ^3.0", 690 | "kylekatarnls/multi-tester": "^1.1", 691 | "phpmd/phpmd": "dev-php-7.1-compatibility", 692 | "phpstan/phpstan": "^0.11", 693 | "phpunit/phpunit": "^7.5 || ^8.0", 694 | "squizlabs/php_codesniffer": "^3.4" 695 | }, 696 | "bin": [ 697 | "bin/carbon" 698 | ], 699 | "type": "library", 700 | "extra": { 701 | "branch-alias": { 702 | "dev-master": "2.x-dev" 703 | }, 704 | "laravel": { 705 | "providers": [ 706 | "Carbon\\Laravel\\ServiceProvider" 707 | ] 708 | } 709 | }, 710 | "autoload": { 711 | "psr-4": { 712 | "Carbon\\": "src/Carbon/" 713 | } 714 | }, 715 | "notification-url": "https://packagist.org/downloads/", 716 | "license": [ 717 | "MIT" 718 | ], 719 | "authors": [ 720 | { 721 | "name": "Brian Nesbitt", 722 | "email": "brian@nesbot.com", 723 | "homepage": "http://nesbot.com" 724 | }, 725 | { 726 | "name": "kylekatarnls", 727 | "homepage": "http://github.com/kylekatarnls" 728 | } 729 | ], 730 | "description": "An API extension for DateTime that supports 281 different languages.", 731 | "homepage": "http://carbon.nesbot.com", 732 | "keywords": [ 733 | "date", 734 | "datetime", 735 | "time" 736 | ], 737 | "time": "2019-12-16T16:30:25+00:00" 738 | }, 739 | { 740 | "name": "opis/closure", 741 | "version": "3.5.1", 742 | "source": { 743 | "type": "git", 744 | "url": "https://github.com/opis/closure.git", 745 | "reference": "93ebc5712cdad8d5f489b500c59d122df2e53969" 746 | }, 747 | "dist": { 748 | "type": "zip", 749 | "url": "https://api.github.com/repos/opis/closure/zipball/93ebc5712cdad8d5f489b500c59d122df2e53969", 750 | "reference": "93ebc5712cdad8d5f489b500c59d122df2e53969", 751 | "shasum": "" 752 | }, 753 | "require": { 754 | "php": "^5.4 || ^7.0" 755 | }, 756 | "require-dev": { 757 | "jeremeamia/superclosure": "^2.0", 758 | "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" 759 | }, 760 | "type": "library", 761 | "extra": { 762 | "branch-alias": { 763 | "dev-master": "3.5.x-dev" 764 | } 765 | }, 766 | "autoload": { 767 | "psr-4": { 768 | "Opis\\Closure\\": "src/" 769 | }, 770 | "files": [ 771 | "functions.php" 772 | ] 773 | }, 774 | "notification-url": "https://packagist.org/downloads/", 775 | "license": [ 776 | "MIT" 777 | ], 778 | "authors": [ 779 | { 780 | "name": "Marius Sarca", 781 | "email": "marius.sarca@gmail.com" 782 | }, 783 | { 784 | "name": "Sorin Sarca", 785 | "email": "sarca_sorin@hotmail.com" 786 | } 787 | ], 788 | "description": "A library that can be used to serialize closures (anonymous functions) and arbitrary objects.", 789 | "homepage": "https://opis.io/closure", 790 | "keywords": [ 791 | "anonymous functions", 792 | "closure", 793 | "function", 794 | "serializable", 795 | "serialization", 796 | "serialize" 797 | ], 798 | "time": "2019-11-29T22:36:02+00:00" 799 | }, 800 | { 801 | "name": "paragonie/random_compat", 802 | "version": "v9.99.99", 803 | "source": { 804 | "type": "git", 805 | "url": "https://github.com/paragonie/random_compat.git", 806 | "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95" 807 | }, 808 | "dist": { 809 | "type": "zip", 810 | "url": "https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", 811 | "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", 812 | "shasum": "" 813 | }, 814 | "require": { 815 | "php": "^7" 816 | }, 817 | "require-dev": { 818 | "phpunit/phpunit": "4.*|5.*", 819 | "vimeo/psalm": "^1" 820 | }, 821 | "suggest": { 822 | "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." 823 | }, 824 | "type": "library", 825 | "notification-url": "https://packagist.org/downloads/", 826 | "license": [ 827 | "MIT" 828 | ], 829 | "authors": [ 830 | { 831 | "name": "Paragon Initiative Enterprises", 832 | "email": "security@paragonie.com", 833 | "homepage": "https://paragonie.com" 834 | } 835 | ], 836 | "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", 837 | "keywords": [ 838 | "csprng", 839 | "polyfill", 840 | "pseudorandom", 841 | "random" 842 | ], 843 | "time": "2018-07-02T15:55:56+00:00" 844 | }, 845 | { 846 | "name": "phpoption/phpoption", 847 | "version": "1.7.2", 848 | "source": { 849 | "type": "git", 850 | "url": "https://github.com/schmittjoh/php-option.git", 851 | "reference": "77f7c4d2e65413aff5b5a8cc8b3caf7a28d81959" 852 | }, 853 | "dist": { 854 | "type": "zip", 855 | "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/77f7c4d2e65413aff5b5a8cc8b3caf7a28d81959", 856 | "reference": "77f7c4d2e65413aff5b5a8cc8b3caf7a28d81959", 857 | "shasum": "" 858 | }, 859 | "require": { 860 | "php": "^5.5.9 || ^7.0" 861 | }, 862 | "require-dev": { 863 | "bamarni/composer-bin-plugin": "^1.3", 864 | "phpunit/phpunit": "^4.8.35 || ^5.0 || ^6.0 || ^7.0" 865 | }, 866 | "type": "library", 867 | "extra": { 868 | "branch-alias": { 869 | "dev-master": "1.7-dev" 870 | } 871 | }, 872 | "autoload": { 873 | "psr-4": { 874 | "PhpOption\\": "src/PhpOption/" 875 | } 876 | }, 877 | "notification-url": "https://packagist.org/downloads/", 878 | "license": [ 879 | "Apache-2.0" 880 | ], 881 | "authors": [ 882 | { 883 | "name": "Johannes M. Schmitt", 884 | "email": "schmittjoh@gmail.com" 885 | }, 886 | { 887 | "name": "Graham Campbell", 888 | "email": "graham@alt-three.com" 889 | } 890 | ], 891 | "description": "Option Type for PHP", 892 | "keywords": [ 893 | "language", 894 | "option", 895 | "php", 896 | "type" 897 | ], 898 | "time": "2019-12-15T19:35:24+00:00" 899 | }, 900 | { 901 | "name": "psr/container", 902 | "version": "1.0.0", 903 | "source": { 904 | "type": "git", 905 | "url": "https://github.com/php-fig/container.git", 906 | "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" 907 | }, 908 | "dist": { 909 | "type": "zip", 910 | "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", 911 | "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", 912 | "shasum": "" 913 | }, 914 | "require": { 915 | "php": ">=5.3.0" 916 | }, 917 | "type": "library", 918 | "extra": { 919 | "branch-alias": { 920 | "dev-master": "1.0.x-dev" 921 | } 922 | }, 923 | "autoload": { 924 | "psr-4": { 925 | "Psr\\Container\\": "src/" 926 | } 927 | }, 928 | "notification-url": "https://packagist.org/downloads/", 929 | "license": [ 930 | "MIT" 931 | ], 932 | "authors": [ 933 | { 934 | "name": "PHP-FIG", 935 | "homepage": "http://www.php-fig.org/" 936 | } 937 | ], 938 | "description": "Common Container Interface (PHP FIG PSR-11)", 939 | "homepage": "https://github.com/php-fig/container", 940 | "keywords": [ 941 | "PSR-11", 942 | "container", 943 | "container-interface", 944 | "container-interop", 945 | "psr" 946 | ], 947 | "time": "2017-02-14T16:28:37+00:00" 948 | }, 949 | { 950 | "name": "psr/log", 951 | "version": "1.1.2", 952 | "source": { 953 | "type": "git", 954 | "url": "https://github.com/php-fig/log.git", 955 | "reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801" 956 | }, 957 | "dist": { 958 | "type": "zip", 959 | "url": "https://api.github.com/repos/php-fig/log/zipball/446d54b4cb6bf489fc9d75f55843658e6f25d801", 960 | "reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801", 961 | "shasum": "" 962 | }, 963 | "require": { 964 | "php": ">=5.3.0" 965 | }, 966 | "type": "library", 967 | "extra": { 968 | "branch-alias": { 969 | "dev-master": "1.1.x-dev" 970 | } 971 | }, 972 | "autoload": { 973 | "psr-4": { 974 | "Psr\\Log\\": "Psr/Log/" 975 | } 976 | }, 977 | "notification-url": "https://packagist.org/downloads/", 978 | "license": [ 979 | "MIT" 980 | ], 981 | "authors": [ 982 | { 983 | "name": "PHP-FIG", 984 | "homepage": "http://www.php-fig.org/" 985 | } 986 | ], 987 | "description": "Common interface for logging libraries", 988 | "homepage": "https://github.com/php-fig/log", 989 | "keywords": [ 990 | "log", 991 | "psr", 992 | "psr-3" 993 | ], 994 | "time": "2019-11-01T11:05:21+00:00" 995 | }, 996 | { 997 | "name": "psr/simple-cache", 998 | "version": "1.0.1", 999 | "source": { 1000 | "type": "git", 1001 | "url": "https://github.com/php-fig/simple-cache.git", 1002 | "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" 1003 | }, 1004 | "dist": { 1005 | "type": "zip", 1006 | "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", 1007 | "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", 1008 | "shasum": "" 1009 | }, 1010 | "require": { 1011 | "php": ">=5.3.0" 1012 | }, 1013 | "type": "library", 1014 | "extra": { 1015 | "branch-alias": { 1016 | "dev-master": "1.0.x-dev" 1017 | } 1018 | }, 1019 | "autoload": { 1020 | "psr-4": { 1021 | "Psr\\SimpleCache\\": "src/" 1022 | } 1023 | }, 1024 | "notification-url": "https://packagist.org/downloads/", 1025 | "license": [ 1026 | "MIT" 1027 | ], 1028 | "authors": [ 1029 | { 1030 | "name": "PHP-FIG", 1031 | "homepage": "http://www.php-fig.org/" 1032 | } 1033 | ], 1034 | "description": "Common interfaces for simple caching", 1035 | "keywords": [ 1036 | "cache", 1037 | "caching", 1038 | "psr", 1039 | "psr-16", 1040 | "simple-cache" 1041 | ], 1042 | "time": "2017-10-23T01:57:42+00:00" 1043 | }, 1044 | { 1045 | "name": "ramsey/uuid", 1046 | "version": "3.9.2", 1047 | "source": { 1048 | "type": "git", 1049 | "url": "https://github.com/ramsey/uuid.git", 1050 | "reference": "7779489a47d443f845271badbdcedfe4df8e06fb" 1051 | }, 1052 | "dist": { 1053 | "type": "zip", 1054 | "url": "https://api.github.com/repos/ramsey/uuid/zipball/7779489a47d443f845271badbdcedfe4df8e06fb", 1055 | "reference": "7779489a47d443f845271badbdcedfe4df8e06fb", 1056 | "shasum": "" 1057 | }, 1058 | "require": { 1059 | "ext-json": "*", 1060 | "paragonie/random_compat": "^1 | ^2 | 9.99.99", 1061 | "php": "^5.4 | ^7 | ^8", 1062 | "symfony/polyfill-ctype": "^1.8" 1063 | }, 1064 | "replace": { 1065 | "rhumsaa/uuid": "self.version" 1066 | }, 1067 | "require-dev": { 1068 | "codeception/aspect-mock": "^1 | ^2", 1069 | "doctrine/annotations": "^1.2", 1070 | "goaop/framework": "1.0.0-alpha.2 | ^1 | ^2.1", 1071 | "jakub-onderka/php-parallel-lint": "^1", 1072 | "mockery/mockery": "^0.9.11 | ^1", 1073 | "moontoast/math": "^1.1", 1074 | "paragonie/random-lib": "^2", 1075 | "php-mock/php-mock-phpunit": "^0.3 | ^1.1", 1076 | "phpunit/phpunit": "^4.8 | ^5.4 | ^6.5", 1077 | "squizlabs/php_codesniffer": "^3.5" 1078 | }, 1079 | "suggest": { 1080 | "ext-ctype": "Provides support for PHP Ctype functions", 1081 | "ext-libsodium": "Provides the PECL libsodium extension for use with the SodiumRandomGenerator", 1082 | "ext-openssl": "Provides the OpenSSL extension for use with the OpenSslGenerator", 1083 | "ext-uuid": "Provides the PECL UUID extension for use with the PeclUuidTimeGenerator and PeclUuidRandomGenerator", 1084 | "moontoast/math": "Provides support for converting UUID to 128-bit integer (in string form).", 1085 | "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", 1086 | "ramsey/uuid-console": "A console application for generating UUIDs with ramsey/uuid", 1087 | "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." 1088 | }, 1089 | "type": "library", 1090 | "extra": { 1091 | "branch-alias": { 1092 | "dev-master": "3.x-dev" 1093 | } 1094 | }, 1095 | "autoload": { 1096 | "psr-4": { 1097 | "Ramsey\\Uuid\\": "src/" 1098 | }, 1099 | "files": [ 1100 | "src/functions.php" 1101 | ] 1102 | }, 1103 | "notification-url": "https://packagist.org/downloads/", 1104 | "license": [ 1105 | "MIT" 1106 | ], 1107 | "authors": [ 1108 | { 1109 | "name": "Ben Ramsey", 1110 | "email": "ben@benramsey.com", 1111 | "homepage": "https://benramsey.com" 1112 | }, 1113 | { 1114 | "name": "Marijn Huizendveld", 1115 | "email": "marijn.huizendveld@gmail.com" 1116 | }, 1117 | { 1118 | "name": "Thibaud Fabre", 1119 | "email": "thibaud@aztech.io" 1120 | } 1121 | ], 1122 | "description": "Formerly rhumsaa/uuid. A PHP 5.4+ library for generating RFC 4122 version 1, 3, 4, and 5 universally unique identifiers (UUID).", 1123 | "homepage": "https://github.com/ramsey/uuid", 1124 | "keywords": [ 1125 | "guid", 1126 | "identifier", 1127 | "uuid" 1128 | ], 1129 | "time": "2019-12-17T08:18:51+00:00" 1130 | }, 1131 | { 1132 | "name": "swiftmailer/swiftmailer", 1133 | "version": "v6.2.3", 1134 | "source": { 1135 | "type": "git", 1136 | "url": "https://github.com/swiftmailer/swiftmailer.git", 1137 | "reference": "149cfdf118b169f7840bbe3ef0d4bc795d1780c9" 1138 | }, 1139 | "dist": { 1140 | "type": "zip", 1141 | "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/149cfdf118b169f7840bbe3ef0d4bc795d1780c9", 1142 | "reference": "149cfdf118b169f7840bbe3ef0d4bc795d1780c9", 1143 | "shasum": "" 1144 | }, 1145 | "require": { 1146 | "egulias/email-validator": "~2.0", 1147 | "php": ">=7.0.0", 1148 | "symfony/polyfill-iconv": "^1.0", 1149 | "symfony/polyfill-intl-idn": "^1.10", 1150 | "symfony/polyfill-mbstring": "^1.0" 1151 | }, 1152 | "require-dev": { 1153 | "mockery/mockery": "~0.9.1", 1154 | "symfony/phpunit-bridge": "^3.4.19|^4.1.8" 1155 | }, 1156 | "suggest": { 1157 | "ext-intl": "Needed to support internationalized email addresses", 1158 | "true/punycode": "Needed to support internationalized email addresses, if ext-intl is not installed" 1159 | }, 1160 | "type": "library", 1161 | "extra": { 1162 | "branch-alias": { 1163 | "dev-master": "6.2-dev" 1164 | } 1165 | }, 1166 | "autoload": { 1167 | "files": [ 1168 | "lib/swift_required.php" 1169 | ] 1170 | }, 1171 | "notification-url": "https://packagist.org/downloads/", 1172 | "license": [ 1173 | "MIT" 1174 | ], 1175 | "authors": [ 1176 | { 1177 | "name": "Chris Corbyn" 1178 | }, 1179 | { 1180 | "name": "Fabien Potencier", 1181 | "email": "fabien@symfony.com" 1182 | } 1183 | ], 1184 | "description": "Swiftmailer, free feature-rich PHP mailer", 1185 | "homepage": "https://swiftmailer.symfony.com", 1186 | "keywords": [ 1187 | "email", 1188 | "mail", 1189 | "mailer" 1190 | ], 1191 | "time": "2019-11-12T09:31:26+00:00" 1192 | }, 1193 | { 1194 | "name": "symfony/console", 1195 | "version": "v4.4.2", 1196 | "source": { 1197 | "type": "git", 1198 | "url": "https://github.com/symfony/console.git", 1199 | "reference": "82437719dab1e6bdd28726af14cb345c2ec816d0" 1200 | }, 1201 | "dist": { 1202 | "type": "zip", 1203 | "url": "https://api.github.com/repos/symfony/console/zipball/82437719dab1e6bdd28726af14cb345c2ec816d0", 1204 | "reference": "82437719dab1e6bdd28726af14cb345c2ec816d0", 1205 | "shasum": "" 1206 | }, 1207 | "require": { 1208 | "php": "^7.1.3", 1209 | "symfony/polyfill-mbstring": "~1.0", 1210 | "symfony/polyfill-php73": "^1.8", 1211 | "symfony/service-contracts": "^1.1|^2" 1212 | }, 1213 | "conflict": { 1214 | "symfony/dependency-injection": "<3.4", 1215 | "symfony/event-dispatcher": "<4.3|>=5", 1216 | "symfony/lock": "<4.4", 1217 | "symfony/process": "<3.3" 1218 | }, 1219 | "provide": { 1220 | "psr/log-implementation": "1.0" 1221 | }, 1222 | "require-dev": { 1223 | "psr/log": "~1.0", 1224 | "symfony/config": "^3.4|^4.0|^5.0", 1225 | "symfony/dependency-injection": "^3.4|^4.0|^5.0", 1226 | "symfony/event-dispatcher": "^4.3", 1227 | "symfony/lock": "^4.4|^5.0", 1228 | "symfony/process": "^3.4|^4.0|^5.0", 1229 | "symfony/var-dumper": "^4.3|^5.0" 1230 | }, 1231 | "suggest": { 1232 | "psr/log": "For using the console logger", 1233 | "symfony/event-dispatcher": "", 1234 | "symfony/lock": "", 1235 | "symfony/process": "" 1236 | }, 1237 | "type": "library", 1238 | "extra": { 1239 | "branch-alias": { 1240 | "dev-master": "4.4-dev" 1241 | } 1242 | }, 1243 | "autoload": { 1244 | "psr-4": { 1245 | "Symfony\\Component\\Console\\": "" 1246 | }, 1247 | "exclude-from-classmap": [ 1248 | "/Tests/" 1249 | ] 1250 | }, 1251 | "notification-url": "https://packagist.org/downloads/", 1252 | "license": [ 1253 | "MIT" 1254 | ], 1255 | "authors": [ 1256 | { 1257 | "name": "Fabien Potencier", 1258 | "email": "fabien@symfony.com" 1259 | }, 1260 | { 1261 | "name": "Symfony Community", 1262 | "homepage": "https://symfony.com/contributors" 1263 | } 1264 | ], 1265 | "description": "Symfony Console Component", 1266 | "homepage": "https://symfony.com", 1267 | "time": "2019-12-17T10:32:23+00:00" 1268 | }, 1269 | { 1270 | "name": "symfony/css-selector", 1271 | "version": "v5.0.2", 1272 | "source": { 1273 | "type": "git", 1274 | "url": "https://github.com/symfony/css-selector.git", 1275 | "reference": "19d29e7098b7b2c3313cb03902ca30f100dcb837" 1276 | }, 1277 | "dist": { 1278 | "type": "zip", 1279 | "url": "https://api.github.com/repos/symfony/css-selector/zipball/19d29e7098b7b2c3313cb03902ca30f100dcb837", 1280 | "reference": "19d29e7098b7b2c3313cb03902ca30f100dcb837", 1281 | "shasum": "" 1282 | }, 1283 | "require": { 1284 | "php": "^7.2.5" 1285 | }, 1286 | "type": "library", 1287 | "extra": { 1288 | "branch-alias": { 1289 | "dev-master": "5.0-dev" 1290 | } 1291 | }, 1292 | "autoload": { 1293 | "psr-4": { 1294 | "Symfony\\Component\\CssSelector\\": "" 1295 | }, 1296 | "exclude-from-classmap": [ 1297 | "/Tests/" 1298 | ] 1299 | }, 1300 | "notification-url": "https://packagist.org/downloads/", 1301 | "license": [ 1302 | "MIT" 1303 | ], 1304 | "authors": [ 1305 | { 1306 | "name": "Fabien Potencier", 1307 | "email": "fabien@symfony.com" 1308 | }, 1309 | { 1310 | "name": "Jean-François Simon", 1311 | "email": "jeanfrancois.simon@sensiolabs.com" 1312 | }, 1313 | { 1314 | "name": "Symfony Community", 1315 | "homepage": "https://symfony.com/contributors" 1316 | } 1317 | ], 1318 | "description": "Symfony CssSelector Component", 1319 | "homepage": "https://symfony.com", 1320 | "time": "2019-11-18T17:27:11+00:00" 1321 | }, 1322 | { 1323 | "name": "symfony/debug", 1324 | "version": "v4.4.2", 1325 | "source": { 1326 | "type": "git", 1327 | "url": "https://github.com/symfony/debug.git", 1328 | "reference": "5c4c1db977dc70bb3250e1308d3e8c6341aa38f5" 1329 | }, 1330 | "dist": { 1331 | "type": "zip", 1332 | "url": "https://api.github.com/repos/symfony/debug/zipball/5c4c1db977dc70bb3250e1308d3e8c6341aa38f5", 1333 | "reference": "5c4c1db977dc70bb3250e1308d3e8c6341aa38f5", 1334 | "shasum": "" 1335 | }, 1336 | "require": { 1337 | "php": "^7.1.3", 1338 | "psr/log": "~1.0" 1339 | }, 1340 | "conflict": { 1341 | "symfony/http-kernel": "<3.4" 1342 | }, 1343 | "require-dev": { 1344 | "symfony/http-kernel": "^3.4|^4.0|^5.0" 1345 | }, 1346 | "type": "library", 1347 | "extra": { 1348 | "branch-alias": { 1349 | "dev-master": "4.4-dev" 1350 | } 1351 | }, 1352 | "autoload": { 1353 | "psr-4": { 1354 | "Symfony\\Component\\Debug\\": "" 1355 | }, 1356 | "exclude-from-classmap": [ 1357 | "/Tests/" 1358 | ] 1359 | }, 1360 | "notification-url": "https://packagist.org/downloads/", 1361 | "license": [ 1362 | "MIT" 1363 | ], 1364 | "authors": [ 1365 | { 1366 | "name": "Fabien Potencier", 1367 | "email": "fabien@symfony.com" 1368 | }, 1369 | { 1370 | "name": "Symfony Community", 1371 | "homepage": "https://symfony.com/contributors" 1372 | } 1373 | ], 1374 | "description": "Symfony Debug Component", 1375 | "homepage": "https://symfony.com", 1376 | "time": "2019-12-16T14:46:54+00:00" 1377 | }, 1378 | { 1379 | "name": "symfony/error-handler", 1380 | "version": "v4.4.2", 1381 | "source": { 1382 | "type": "git", 1383 | "url": "https://github.com/symfony/error-handler.git", 1384 | "reference": "6d7d7712a6ff5215ec26215672293b154f1db8c1" 1385 | }, 1386 | "dist": { 1387 | "type": "zip", 1388 | "url": "https://api.github.com/repos/symfony/error-handler/zipball/6d7d7712a6ff5215ec26215672293b154f1db8c1", 1389 | "reference": "6d7d7712a6ff5215ec26215672293b154f1db8c1", 1390 | "shasum": "" 1391 | }, 1392 | "require": { 1393 | "php": "^7.1.3", 1394 | "psr/log": "~1.0", 1395 | "symfony/debug": "^4.4", 1396 | "symfony/var-dumper": "^4.4|^5.0" 1397 | }, 1398 | "require-dev": { 1399 | "symfony/http-kernel": "^4.4|^5.0", 1400 | "symfony/serializer": "^4.4|^5.0" 1401 | }, 1402 | "type": "library", 1403 | "extra": { 1404 | "branch-alias": { 1405 | "dev-master": "4.4-dev" 1406 | } 1407 | }, 1408 | "autoload": { 1409 | "psr-4": { 1410 | "Symfony\\Component\\ErrorHandler\\": "" 1411 | }, 1412 | "exclude-from-classmap": [ 1413 | "/Tests/" 1414 | ] 1415 | }, 1416 | "notification-url": "https://packagist.org/downloads/", 1417 | "license": [ 1418 | "MIT" 1419 | ], 1420 | "authors": [ 1421 | { 1422 | "name": "Fabien Potencier", 1423 | "email": "fabien@symfony.com" 1424 | }, 1425 | { 1426 | "name": "Symfony Community", 1427 | "homepage": "https://symfony.com/contributors" 1428 | } 1429 | ], 1430 | "description": "Symfony ErrorHandler Component", 1431 | "homepage": "https://symfony.com", 1432 | "time": "2019-12-16T14:46:54+00:00" 1433 | }, 1434 | { 1435 | "name": "symfony/event-dispatcher", 1436 | "version": "v4.4.2", 1437 | "source": { 1438 | "type": "git", 1439 | "url": "https://github.com/symfony/event-dispatcher.git", 1440 | "reference": "b3c3068a72623287550fe20b84a2b01dcba2686f" 1441 | }, 1442 | "dist": { 1443 | "type": "zip", 1444 | "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/b3c3068a72623287550fe20b84a2b01dcba2686f", 1445 | "reference": "b3c3068a72623287550fe20b84a2b01dcba2686f", 1446 | "shasum": "" 1447 | }, 1448 | "require": { 1449 | "php": "^7.1.3", 1450 | "symfony/event-dispatcher-contracts": "^1.1" 1451 | }, 1452 | "conflict": { 1453 | "symfony/dependency-injection": "<3.4" 1454 | }, 1455 | "provide": { 1456 | "psr/event-dispatcher-implementation": "1.0", 1457 | "symfony/event-dispatcher-implementation": "1.1" 1458 | }, 1459 | "require-dev": { 1460 | "psr/log": "~1.0", 1461 | "symfony/config": "^3.4|^4.0|^5.0", 1462 | "symfony/dependency-injection": "^3.4|^4.0|^5.0", 1463 | "symfony/expression-language": "^3.4|^4.0|^5.0", 1464 | "symfony/http-foundation": "^3.4|^4.0|^5.0", 1465 | "symfony/service-contracts": "^1.1|^2", 1466 | "symfony/stopwatch": "^3.4|^4.0|^5.0" 1467 | }, 1468 | "suggest": { 1469 | "symfony/dependency-injection": "", 1470 | "symfony/http-kernel": "" 1471 | }, 1472 | "type": "library", 1473 | "extra": { 1474 | "branch-alias": { 1475 | "dev-master": "4.4-dev" 1476 | } 1477 | }, 1478 | "autoload": { 1479 | "psr-4": { 1480 | "Symfony\\Component\\EventDispatcher\\": "" 1481 | }, 1482 | "exclude-from-classmap": [ 1483 | "/Tests/" 1484 | ] 1485 | }, 1486 | "notification-url": "https://packagist.org/downloads/", 1487 | "license": [ 1488 | "MIT" 1489 | ], 1490 | "authors": [ 1491 | { 1492 | "name": "Fabien Potencier", 1493 | "email": "fabien@symfony.com" 1494 | }, 1495 | { 1496 | "name": "Symfony Community", 1497 | "homepage": "https://symfony.com/contributors" 1498 | } 1499 | ], 1500 | "description": "Symfony EventDispatcher Component", 1501 | "homepage": "https://symfony.com", 1502 | "time": "2019-11-28T13:33:56+00:00" 1503 | }, 1504 | { 1505 | "name": "symfony/event-dispatcher-contracts", 1506 | "version": "v1.1.7", 1507 | "source": { 1508 | "type": "git", 1509 | "url": "https://github.com/symfony/event-dispatcher-contracts.git", 1510 | "reference": "c43ab685673fb6c8d84220c77897b1d6cdbe1d18" 1511 | }, 1512 | "dist": { 1513 | "type": "zip", 1514 | "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/c43ab685673fb6c8d84220c77897b1d6cdbe1d18", 1515 | "reference": "c43ab685673fb6c8d84220c77897b1d6cdbe1d18", 1516 | "shasum": "" 1517 | }, 1518 | "require": { 1519 | "php": "^7.1.3" 1520 | }, 1521 | "suggest": { 1522 | "psr/event-dispatcher": "", 1523 | "symfony/event-dispatcher-implementation": "" 1524 | }, 1525 | "type": "library", 1526 | "extra": { 1527 | "branch-alias": { 1528 | "dev-master": "1.1-dev" 1529 | } 1530 | }, 1531 | "autoload": { 1532 | "psr-4": { 1533 | "Symfony\\Contracts\\EventDispatcher\\": "" 1534 | } 1535 | }, 1536 | "notification-url": "https://packagist.org/downloads/", 1537 | "license": [ 1538 | "MIT" 1539 | ], 1540 | "authors": [ 1541 | { 1542 | "name": "Nicolas Grekas", 1543 | "email": "p@tchwork.com" 1544 | }, 1545 | { 1546 | "name": "Symfony Community", 1547 | "homepage": "https://symfony.com/contributors" 1548 | } 1549 | ], 1550 | "description": "Generic abstractions related to dispatching event", 1551 | "homepage": "https://symfony.com", 1552 | "keywords": [ 1553 | "abstractions", 1554 | "contracts", 1555 | "decoupling", 1556 | "interfaces", 1557 | "interoperability", 1558 | "standards" 1559 | ], 1560 | "time": "2019-09-17T09:54:03+00:00" 1561 | }, 1562 | { 1563 | "name": "symfony/finder", 1564 | "version": "v4.4.2", 1565 | "source": { 1566 | "type": "git", 1567 | "url": "https://github.com/symfony/finder.git", 1568 | "reference": "ce8743441da64c41e2a667b8eb66070444ed911e" 1569 | }, 1570 | "dist": { 1571 | "type": "zip", 1572 | "url": "https://api.github.com/repos/symfony/finder/zipball/ce8743441da64c41e2a667b8eb66070444ed911e", 1573 | "reference": "ce8743441da64c41e2a667b8eb66070444ed911e", 1574 | "shasum": "" 1575 | }, 1576 | "require": { 1577 | "php": "^7.1.3" 1578 | }, 1579 | "type": "library", 1580 | "extra": { 1581 | "branch-alias": { 1582 | "dev-master": "4.4-dev" 1583 | } 1584 | }, 1585 | "autoload": { 1586 | "psr-4": { 1587 | "Symfony\\Component\\Finder\\": "" 1588 | }, 1589 | "exclude-from-classmap": [ 1590 | "/Tests/" 1591 | ] 1592 | }, 1593 | "notification-url": "https://packagist.org/downloads/", 1594 | "license": [ 1595 | "MIT" 1596 | ], 1597 | "authors": [ 1598 | { 1599 | "name": "Fabien Potencier", 1600 | "email": "fabien@symfony.com" 1601 | }, 1602 | { 1603 | "name": "Symfony Community", 1604 | "homepage": "https://symfony.com/contributors" 1605 | } 1606 | ], 1607 | "description": "Symfony Finder Component", 1608 | "homepage": "https://symfony.com", 1609 | "time": "2019-11-17T21:56:56+00:00" 1610 | }, 1611 | { 1612 | "name": "symfony/http-foundation", 1613 | "version": "v4.4.2", 1614 | "source": { 1615 | "type": "git", 1616 | "url": "https://github.com/symfony/http-foundation.git", 1617 | "reference": "fcae1cff5b57b2a9c3aabefeb1527678705ddb62" 1618 | }, 1619 | "dist": { 1620 | "type": "zip", 1621 | "url": "https://api.github.com/repos/symfony/http-foundation/zipball/fcae1cff5b57b2a9c3aabefeb1527678705ddb62", 1622 | "reference": "fcae1cff5b57b2a9c3aabefeb1527678705ddb62", 1623 | "shasum": "" 1624 | }, 1625 | "require": { 1626 | "php": "^7.1.3", 1627 | "symfony/mime": "^4.3|^5.0", 1628 | "symfony/polyfill-mbstring": "~1.1" 1629 | }, 1630 | "require-dev": { 1631 | "predis/predis": "~1.0", 1632 | "symfony/expression-language": "^3.4|^4.0|^5.0" 1633 | }, 1634 | "type": "library", 1635 | "extra": { 1636 | "branch-alias": { 1637 | "dev-master": "4.4-dev" 1638 | } 1639 | }, 1640 | "autoload": { 1641 | "psr-4": { 1642 | "Symfony\\Component\\HttpFoundation\\": "" 1643 | }, 1644 | "exclude-from-classmap": [ 1645 | "/Tests/" 1646 | ] 1647 | }, 1648 | "notification-url": "https://packagist.org/downloads/", 1649 | "license": [ 1650 | "MIT" 1651 | ], 1652 | "authors": [ 1653 | { 1654 | "name": "Fabien Potencier", 1655 | "email": "fabien@symfony.com" 1656 | }, 1657 | { 1658 | "name": "Symfony Community", 1659 | "homepage": "https://symfony.com/contributors" 1660 | } 1661 | ], 1662 | "description": "Symfony HttpFoundation Component", 1663 | "homepage": "https://symfony.com", 1664 | "time": "2019-12-19T15:57:49+00:00" 1665 | }, 1666 | { 1667 | "name": "symfony/http-kernel", 1668 | "version": "v4.4.2", 1669 | "source": { 1670 | "type": "git", 1671 | "url": "https://github.com/symfony/http-kernel.git", 1672 | "reference": "fe310d2e95cd4c356836c8ecb0895a46d97fede2" 1673 | }, 1674 | "dist": { 1675 | "type": "zip", 1676 | "url": "https://api.github.com/repos/symfony/http-kernel/zipball/fe310d2e95cd4c356836c8ecb0895a46d97fede2", 1677 | "reference": "fe310d2e95cd4c356836c8ecb0895a46d97fede2", 1678 | "shasum": "" 1679 | }, 1680 | "require": { 1681 | "php": "^7.1.3", 1682 | "psr/log": "~1.0", 1683 | "symfony/error-handler": "^4.4", 1684 | "symfony/event-dispatcher": "^4.4", 1685 | "symfony/http-foundation": "^4.4|^5.0", 1686 | "symfony/polyfill-ctype": "^1.8", 1687 | "symfony/polyfill-php73": "^1.9" 1688 | }, 1689 | "conflict": { 1690 | "symfony/browser-kit": "<4.3", 1691 | "symfony/config": "<3.4", 1692 | "symfony/console": ">=5", 1693 | "symfony/dependency-injection": "<4.3", 1694 | "symfony/translation": "<4.2", 1695 | "twig/twig": "<1.34|<2.4,>=2" 1696 | }, 1697 | "provide": { 1698 | "psr/log-implementation": "1.0" 1699 | }, 1700 | "require-dev": { 1701 | "psr/cache": "~1.0", 1702 | "symfony/browser-kit": "^4.3|^5.0", 1703 | "symfony/config": "^3.4|^4.0|^5.0", 1704 | "symfony/console": "^3.4|^4.0", 1705 | "symfony/css-selector": "^3.4|^4.0|^5.0", 1706 | "symfony/dependency-injection": "^4.3|^5.0", 1707 | "symfony/dom-crawler": "^3.4|^4.0|^5.0", 1708 | "symfony/expression-language": "^3.4|^4.0|^5.0", 1709 | "symfony/finder": "^3.4|^4.0|^5.0", 1710 | "symfony/process": "^3.4|^4.0|^5.0", 1711 | "symfony/routing": "^3.4|^4.0|^5.0", 1712 | "symfony/stopwatch": "^3.4|^4.0|^5.0", 1713 | "symfony/templating": "^3.4|^4.0|^5.0", 1714 | "symfony/translation": "^4.2|^5.0", 1715 | "symfony/translation-contracts": "^1.1|^2", 1716 | "twig/twig": "^1.34|^2.4|^3.0" 1717 | }, 1718 | "suggest": { 1719 | "symfony/browser-kit": "", 1720 | "symfony/config": "", 1721 | "symfony/console": "", 1722 | "symfony/dependency-injection": "" 1723 | }, 1724 | "type": "library", 1725 | "extra": { 1726 | "branch-alias": { 1727 | "dev-master": "4.4-dev" 1728 | } 1729 | }, 1730 | "autoload": { 1731 | "psr-4": { 1732 | "Symfony\\Component\\HttpKernel\\": "" 1733 | }, 1734 | "exclude-from-classmap": [ 1735 | "/Tests/" 1736 | ] 1737 | }, 1738 | "notification-url": "https://packagist.org/downloads/", 1739 | "license": [ 1740 | "MIT" 1741 | ], 1742 | "authors": [ 1743 | { 1744 | "name": "Fabien Potencier", 1745 | "email": "fabien@symfony.com" 1746 | }, 1747 | { 1748 | "name": "Symfony Community", 1749 | "homepage": "https://symfony.com/contributors" 1750 | } 1751 | ], 1752 | "description": "Symfony HttpKernel Component", 1753 | "homepage": "https://symfony.com", 1754 | "time": "2019-12-19T16:23:40+00:00" 1755 | }, 1756 | { 1757 | "name": "symfony/mime", 1758 | "version": "v5.0.2", 1759 | "source": { 1760 | "type": "git", 1761 | "url": "https://github.com/symfony/mime.git", 1762 | "reference": "0e6a4ced216e49d457eddcefb61132173a876d79" 1763 | }, 1764 | "dist": { 1765 | "type": "zip", 1766 | "url": "https://api.github.com/repos/symfony/mime/zipball/0e6a4ced216e49d457eddcefb61132173a876d79", 1767 | "reference": "0e6a4ced216e49d457eddcefb61132173a876d79", 1768 | "shasum": "" 1769 | }, 1770 | "require": { 1771 | "php": "^7.2.5", 1772 | "symfony/polyfill-intl-idn": "^1.10", 1773 | "symfony/polyfill-mbstring": "^1.0" 1774 | }, 1775 | "conflict": { 1776 | "symfony/mailer": "<4.4" 1777 | }, 1778 | "require-dev": { 1779 | "egulias/email-validator": "^2.1.10", 1780 | "symfony/dependency-injection": "^4.4|^5.0" 1781 | }, 1782 | "type": "library", 1783 | "extra": { 1784 | "branch-alias": { 1785 | "dev-master": "5.0-dev" 1786 | } 1787 | }, 1788 | "autoload": { 1789 | "psr-4": { 1790 | "Symfony\\Component\\Mime\\": "" 1791 | }, 1792 | "exclude-from-classmap": [ 1793 | "/Tests/" 1794 | ] 1795 | }, 1796 | "notification-url": "https://packagist.org/downloads/", 1797 | "license": [ 1798 | "MIT" 1799 | ], 1800 | "authors": [ 1801 | { 1802 | "name": "Fabien Potencier", 1803 | "email": "fabien@symfony.com" 1804 | }, 1805 | { 1806 | "name": "Symfony Community", 1807 | "homepage": "https://symfony.com/contributors" 1808 | } 1809 | ], 1810 | "description": "A library to manipulate MIME messages", 1811 | "homepage": "https://symfony.com", 1812 | "keywords": [ 1813 | "mime", 1814 | "mime-type" 1815 | ], 1816 | "time": "2019-11-30T14:12:50+00:00" 1817 | }, 1818 | { 1819 | "name": "symfony/polyfill-ctype", 1820 | "version": "v1.13.1", 1821 | "source": { 1822 | "type": "git", 1823 | "url": "https://github.com/symfony/polyfill-ctype.git", 1824 | "reference": "f8f0b461be3385e56d6de3dbb5a0df24c0c275e3" 1825 | }, 1826 | "dist": { 1827 | "type": "zip", 1828 | "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/f8f0b461be3385e56d6de3dbb5a0df24c0c275e3", 1829 | "reference": "f8f0b461be3385e56d6de3dbb5a0df24c0c275e3", 1830 | "shasum": "" 1831 | }, 1832 | "require": { 1833 | "php": ">=5.3.3" 1834 | }, 1835 | "suggest": { 1836 | "ext-ctype": "For best performance" 1837 | }, 1838 | "type": "library", 1839 | "extra": { 1840 | "branch-alias": { 1841 | "dev-master": "1.13-dev" 1842 | } 1843 | }, 1844 | "autoload": { 1845 | "psr-4": { 1846 | "Symfony\\Polyfill\\Ctype\\": "" 1847 | }, 1848 | "files": [ 1849 | "bootstrap.php" 1850 | ] 1851 | }, 1852 | "notification-url": "https://packagist.org/downloads/", 1853 | "license": [ 1854 | "MIT" 1855 | ], 1856 | "authors": [ 1857 | { 1858 | "name": "Gert de Pagter", 1859 | "email": "BackEndTea@gmail.com" 1860 | }, 1861 | { 1862 | "name": "Symfony Community", 1863 | "homepage": "https://symfony.com/contributors" 1864 | } 1865 | ], 1866 | "description": "Symfony polyfill for ctype functions", 1867 | "homepage": "https://symfony.com", 1868 | "keywords": [ 1869 | "compatibility", 1870 | "ctype", 1871 | "polyfill", 1872 | "portable" 1873 | ], 1874 | "time": "2019-11-27T13:56:44+00:00" 1875 | }, 1876 | { 1877 | "name": "symfony/polyfill-iconv", 1878 | "version": "v1.13.1", 1879 | "source": { 1880 | "type": "git", 1881 | "url": "https://github.com/symfony/polyfill-iconv.git", 1882 | "reference": "a019efccc03f1a335af6b4f20c30f5ea8060be36" 1883 | }, 1884 | "dist": { 1885 | "type": "zip", 1886 | "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/a019efccc03f1a335af6b4f20c30f5ea8060be36", 1887 | "reference": "a019efccc03f1a335af6b4f20c30f5ea8060be36", 1888 | "shasum": "" 1889 | }, 1890 | "require": { 1891 | "php": ">=5.3.3" 1892 | }, 1893 | "suggest": { 1894 | "ext-iconv": "For best performance" 1895 | }, 1896 | "type": "library", 1897 | "extra": { 1898 | "branch-alias": { 1899 | "dev-master": "1.13-dev" 1900 | } 1901 | }, 1902 | "autoload": { 1903 | "psr-4": { 1904 | "Symfony\\Polyfill\\Iconv\\": "" 1905 | }, 1906 | "files": [ 1907 | "bootstrap.php" 1908 | ] 1909 | }, 1910 | "notification-url": "https://packagist.org/downloads/", 1911 | "license": [ 1912 | "MIT" 1913 | ], 1914 | "authors": [ 1915 | { 1916 | "name": "Nicolas Grekas", 1917 | "email": "p@tchwork.com" 1918 | }, 1919 | { 1920 | "name": "Symfony Community", 1921 | "homepage": "https://symfony.com/contributors" 1922 | } 1923 | ], 1924 | "description": "Symfony polyfill for the Iconv extension", 1925 | "homepage": "https://symfony.com", 1926 | "keywords": [ 1927 | "compatibility", 1928 | "iconv", 1929 | "polyfill", 1930 | "portable", 1931 | "shim" 1932 | ], 1933 | "time": "2019-11-27T13:56:44+00:00" 1934 | }, 1935 | { 1936 | "name": "symfony/polyfill-intl-idn", 1937 | "version": "v1.13.1", 1938 | "source": { 1939 | "type": "git", 1940 | "url": "https://github.com/symfony/polyfill-intl-idn.git", 1941 | "reference": "6f9c239e61e1b0c9229a28ff89a812dc449c3d46" 1942 | }, 1943 | "dist": { 1944 | "type": "zip", 1945 | "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/6f9c239e61e1b0c9229a28ff89a812dc449c3d46", 1946 | "reference": "6f9c239e61e1b0c9229a28ff89a812dc449c3d46", 1947 | "shasum": "" 1948 | }, 1949 | "require": { 1950 | "php": ">=5.3.3", 1951 | "symfony/polyfill-mbstring": "^1.3", 1952 | "symfony/polyfill-php72": "^1.9" 1953 | }, 1954 | "suggest": { 1955 | "ext-intl": "For best performance" 1956 | }, 1957 | "type": "library", 1958 | "extra": { 1959 | "branch-alias": { 1960 | "dev-master": "1.13-dev" 1961 | } 1962 | }, 1963 | "autoload": { 1964 | "psr-4": { 1965 | "Symfony\\Polyfill\\Intl\\Idn\\": "" 1966 | }, 1967 | "files": [ 1968 | "bootstrap.php" 1969 | ] 1970 | }, 1971 | "notification-url": "https://packagist.org/downloads/", 1972 | "license": [ 1973 | "MIT" 1974 | ], 1975 | "authors": [ 1976 | { 1977 | "name": "Laurent Bassin", 1978 | "email": "laurent@bassin.info" 1979 | }, 1980 | { 1981 | "name": "Symfony Community", 1982 | "homepage": "https://symfony.com/contributors" 1983 | } 1984 | ], 1985 | "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", 1986 | "homepage": "https://symfony.com", 1987 | "keywords": [ 1988 | "compatibility", 1989 | "idn", 1990 | "intl", 1991 | "polyfill", 1992 | "portable", 1993 | "shim" 1994 | ], 1995 | "time": "2019-11-27T13:56:44+00:00" 1996 | }, 1997 | { 1998 | "name": "symfony/polyfill-mbstring", 1999 | "version": "v1.13.1", 2000 | "source": { 2001 | "type": "git", 2002 | "url": "https://github.com/symfony/polyfill-mbstring.git", 2003 | "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f" 2004 | }, 2005 | "dist": { 2006 | "type": "zip", 2007 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/7b4aab9743c30be783b73de055d24a39cf4b954f", 2008 | "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f", 2009 | "shasum": "" 2010 | }, 2011 | "require": { 2012 | "php": ">=5.3.3" 2013 | }, 2014 | "suggest": { 2015 | "ext-mbstring": "For best performance" 2016 | }, 2017 | "type": "library", 2018 | "extra": { 2019 | "branch-alias": { 2020 | "dev-master": "1.13-dev" 2021 | } 2022 | }, 2023 | "autoload": { 2024 | "psr-4": { 2025 | "Symfony\\Polyfill\\Mbstring\\": "" 2026 | }, 2027 | "files": [ 2028 | "bootstrap.php" 2029 | ] 2030 | }, 2031 | "notification-url": "https://packagist.org/downloads/", 2032 | "license": [ 2033 | "MIT" 2034 | ], 2035 | "authors": [ 2036 | { 2037 | "name": "Nicolas Grekas", 2038 | "email": "p@tchwork.com" 2039 | }, 2040 | { 2041 | "name": "Symfony Community", 2042 | "homepage": "https://symfony.com/contributors" 2043 | } 2044 | ], 2045 | "description": "Symfony polyfill for the Mbstring extension", 2046 | "homepage": "https://symfony.com", 2047 | "keywords": [ 2048 | "compatibility", 2049 | "mbstring", 2050 | "polyfill", 2051 | "portable", 2052 | "shim" 2053 | ], 2054 | "time": "2019-11-27T14:18:11+00:00" 2055 | }, 2056 | { 2057 | "name": "symfony/polyfill-php72", 2058 | "version": "v1.13.1", 2059 | "source": { 2060 | "type": "git", 2061 | "url": "https://github.com/symfony/polyfill-php72.git", 2062 | "reference": "66fea50f6cb37a35eea048d75a7d99a45b586038" 2063 | }, 2064 | "dist": { 2065 | "type": "zip", 2066 | "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/66fea50f6cb37a35eea048d75a7d99a45b586038", 2067 | "reference": "66fea50f6cb37a35eea048d75a7d99a45b586038", 2068 | "shasum": "" 2069 | }, 2070 | "require": { 2071 | "php": ">=5.3.3" 2072 | }, 2073 | "type": "library", 2074 | "extra": { 2075 | "branch-alias": { 2076 | "dev-master": "1.13-dev" 2077 | } 2078 | }, 2079 | "autoload": { 2080 | "psr-4": { 2081 | "Symfony\\Polyfill\\Php72\\": "" 2082 | }, 2083 | "files": [ 2084 | "bootstrap.php" 2085 | ] 2086 | }, 2087 | "notification-url": "https://packagist.org/downloads/", 2088 | "license": [ 2089 | "MIT" 2090 | ], 2091 | "authors": [ 2092 | { 2093 | "name": "Nicolas Grekas", 2094 | "email": "p@tchwork.com" 2095 | }, 2096 | { 2097 | "name": "Symfony Community", 2098 | "homepage": "https://symfony.com/contributors" 2099 | } 2100 | ], 2101 | "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", 2102 | "homepage": "https://symfony.com", 2103 | "keywords": [ 2104 | "compatibility", 2105 | "polyfill", 2106 | "portable", 2107 | "shim" 2108 | ], 2109 | "time": "2019-11-27T13:56:44+00:00" 2110 | }, 2111 | { 2112 | "name": "symfony/polyfill-php73", 2113 | "version": "v1.13.1", 2114 | "source": { 2115 | "type": "git", 2116 | "url": "https://github.com/symfony/polyfill-php73.git", 2117 | "reference": "4b0e2222c55a25b4541305a053013d5647d3a25f" 2118 | }, 2119 | "dist": { 2120 | "type": "zip", 2121 | "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/4b0e2222c55a25b4541305a053013d5647d3a25f", 2122 | "reference": "4b0e2222c55a25b4541305a053013d5647d3a25f", 2123 | "shasum": "" 2124 | }, 2125 | "require": { 2126 | "php": ">=5.3.3" 2127 | }, 2128 | "type": "library", 2129 | "extra": { 2130 | "branch-alias": { 2131 | "dev-master": "1.13-dev" 2132 | } 2133 | }, 2134 | "autoload": { 2135 | "psr-4": { 2136 | "Symfony\\Polyfill\\Php73\\": "" 2137 | }, 2138 | "files": [ 2139 | "bootstrap.php" 2140 | ], 2141 | "classmap": [ 2142 | "Resources/stubs" 2143 | ] 2144 | }, 2145 | "notification-url": "https://packagist.org/downloads/", 2146 | "license": [ 2147 | "MIT" 2148 | ], 2149 | "authors": [ 2150 | { 2151 | "name": "Nicolas Grekas", 2152 | "email": "p@tchwork.com" 2153 | }, 2154 | { 2155 | "name": "Symfony Community", 2156 | "homepage": "https://symfony.com/contributors" 2157 | } 2158 | ], 2159 | "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", 2160 | "homepage": "https://symfony.com", 2161 | "keywords": [ 2162 | "compatibility", 2163 | "polyfill", 2164 | "portable", 2165 | "shim" 2166 | ], 2167 | "time": "2019-11-27T16:25:15+00:00" 2168 | }, 2169 | { 2170 | "name": "symfony/process", 2171 | "version": "v4.4.2", 2172 | "source": { 2173 | "type": "git", 2174 | "url": "https://github.com/symfony/process.git", 2175 | "reference": "b84501ad50adb72a94fb460a5b5c91f693e99c9b" 2176 | }, 2177 | "dist": { 2178 | "type": "zip", 2179 | "url": "https://api.github.com/repos/symfony/process/zipball/b84501ad50adb72a94fb460a5b5c91f693e99c9b", 2180 | "reference": "b84501ad50adb72a94fb460a5b5c91f693e99c9b", 2181 | "shasum": "" 2182 | }, 2183 | "require": { 2184 | "php": "^7.1.3" 2185 | }, 2186 | "type": "library", 2187 | "extra": { 2188 | "branch-alias": { 2189 | "dev-master": "4.4-dev" 2190 | } 2191 | }, 2192 | "autoload": { 2193 | "psr-4": { 2194 | "Symfony\\Component\\Process\\": "" 2195 | }, 2196 | "exclude-from-classmap": [ 2197 | "/Tests/" 2198 | ] 2199 | }, 2200 | "notification-url": "https://packagist.org/downloads/", 2201 | "license": [ 2202 | "MIT" 2203 | ], 2204 | "authors": [ 2205 | { 2206 | "name": "Fabien Potencier", 2207 | "email": "fabien@symfony.com" 2208 | }, 2209 | { 2210 | "name": "Symfony Community", 2211 | "homepage": "https://symfony.com/contributors" 2212 | } 2213 | ], 2214 | "description": "Symfony Process Component", 2215 | "homepage": "https://symfony.com", 2216 | "time": "2019-12-06T10:06:46+00:00" 2217 | }, 2218 | { 2219 | "name": "symfony/routing", 2220 | "version": "v4.4.2", 2221 | "source": { 2222 | "type": "git", 2223 | "url": "https://github.com/symfony/routing.git", 2224 | "reference": "628bcafae1b2043969378dcfbf9c196539a38722" 2225 | }, 2226 | "dist": { 2227 | "type": "zip", 2228 | "url": "https://api.github.com/repos/symfony/routing/zipball/628bcafae1b2043969378dcfbf9c196539a38722", 2229 | "reference": "628bcafae1b2043969378dcfbf9c196539a38722", 2230 | "shasum": "" 2231 | }, 2232 | "require": { 2233 | "php": "^7.1.3" 2234 | }, 2235 | "conflict": { 2236 | "symfony/config": "<4.2", 2237 | "symfony/dependency-injection": "<3.4", 2238 | "symfony/yaml": "<3.4" 2239 | }, 2240 | "require-dev": { 2241 | "doctrine/annotations": "~1.2", 2242 | "psr/log": "~1.0", 2243 | "symfony/config": "^4.2|^5.0", 2244 | "symfony/dependency-injection": "^3.4|^4.0|^5.0", 2245 | "symfony/expression-language": "^3.4|^4.0|^5.0", 2246 | "symfony/http-foundation": "^3.4|^4.0|^5.0", 2247 | "symfony/yaml": "^3.4|^4.0|^5.0" 2248 | }, 2249 | "suggest": { 2250 | "doctrine/annotations": "For using the annotation loader", 2251 | "symfony/config": "For using the all-in-one router or any loader", 2252 | "symfony/expression-language": "For using expression matching", 2253 | "symfony/http-foundation": "For using a Symfony Request object", 2254 | "symfony/yaml": "For using the YAML loader" 2255 | }, 2256 | "type": "library", 2257 | "extra": { 2258 | "branch-alias": { 2259 | "dev-master": "4.4-dev" 2260 | } 2261 | }, 2262 | "autoload": { 2263 | "psr-4": { 2264 | "Symfony\\Component\\Routing\\": "" 2265 | }, 2266 | "exclude-from-classmap": [ 2267 | "/Tests/" 2268 | ] 2269 | }, 2270 | "notification-url": "https://packagist.org/downloads/", 2271 | "license": [ 2272 | "MIT" 2273 | ], 2274 | "authors": [ 2275 | { 2276 | "name": "Fabien Potencier", 2277 | "email": "fabien@symfony.com" 2278 | }, 2279 | { 2280 | "name": "Symfony Community", 2281 | "homepage": "https://symfony.com/contributors" 2282 | } 2283 | ], 2284 | "description": "Symfony Routing Component", 2285 | "homepage": "https://symfony.com", 2286 | "keywords": [ 2287 | "router", 2288 | "routing", 2289 | "uri", 2290 | "url" 2291 | ], 2292 | "time": "2019-12-12T12:53:52+00:00" 2293 | }, 2294 | { 2295 | "name": "symfony/service-contracts", 2296 | "version": "v2.0.1", 2297 | "source": { 2298 | "type": "git", 2299 | "url": "https://github.com/symfony/service-contracts.git", 2300 | "reference": "144c5e51266b281231e947b51223ba14acf1a749" 2301 | }, 2302 | "dist": { 2303 | "type": "zip", 2304 | "url": "https://api.github.com/repos/symfony/service-contracts/zipball/144c5e51266b281231e947b51223ba14acf1a749", 2305 | "reference": "144c5e51266b281231e947b51223ba14acf1a749", 2306 | "shasum": "" 2307 | }, 2308 | "require": { 2309 | "php": "^7.2.5", 2310 | "psr/container": "^1.0" 2311 | }, 2312 | "suggest": { 2313 | "symfony/service-implementation": "" 2314 | }, 2315 | "type": "library", 2316 | "extra": { 2317 | "branch-alias": { 2318 | "dev-master": "2.0-dev" 2319 | } 2320 | }, 2321 | "autoload": { 2322 | "psr-4": { 2323 | "Symfony\\Contracts\\Service\\": "" 2324 | } 2325 | }, 2326 | "notification-url": "https://packagist.org/downloads/", 2327 | "license": [ 2328 | "MIT" 2329 | ], 2330 | "authors": [ 2331 | { 2332 | "name": "Nicolas Grekas", 2333 | "email": "p@tchwork.com" 2334 | }, 2335 | { 2336 | "name": "Symfony Community", 2337 | "homepage": "https://symfony.com/contributors" 2338 | } 2339 | ], 2340 | "description": "Generic abstractions related to writing services", 2341 | "homepage": "https://symfony.com", 2342 | "keywords": [ 2343 | "abstractions", 2344 | "contracts", 2345 | "decoupling", 2346 | "interfaces", 2347 | "interoperability", 2348 | "standards" 2349 | ], 2350 | "time": "2019-11-18T17:27:11+00:00" 2351 | }, 2352 | { 2353 | "name": "symfony/translation", 2354 | "version": "v4.4.2", 2355 | "source": { 2356 | "type": "git", 2357 | "url": "https://github.com/symfony/translation.git", 2358 | "reference": "f7669f48a9633bf8139bc026c755e894b7206677" 2359 | }, 2360 | "dist": { 2361 | "type": "zip", 2362 | "url": "https://api.github.com/repos/symfony/translation/zipball/f7669f48a9633bf8139bc026c755e894b7206677", 2363 | "reference": "f7669f48a9633bf8139bc026c755e894b7206677", 2364 | "shasum": "" 2365 | }, 2366 | "require": { 2367 | "php": "^7.1.3", 2368 | "symfony/polyfill-mbstring": "~1.0", 2369 | "symfony/translation-contracts": "^1.1.6|^2" 2370 | }, 2371 | "conflict": { 2372 | "symfony/config": "<3.4", 2373 | "symfony/dependency-injection": "<3.4", 2374 | "symfony/http-kernel": "<4.4", 2375 | "symfony/yaml": "<3.4" 2376 | }, 2377 | "provide": { 2378 | "symfony/translation-implementation": "1.0" 2379 | }, 2380 | "require-dev": { 2381 | "psr/log": "~1.0", 2382 | "symfony/config": "^3.4|^4.0|^5.0", 2383 | "symfony/console": "^3.4|^4.0|^5.0", 2384 | "symfony/dependency-injection": "^3.4|^4.0|^5.0", 2385 | "symfony/finder": "~2.8|~3.0|~4.0|^5.0", 2386 | "symfony/http-kernel": "^4.4", 2387 | "symfony/intl": "^3.4|^4.0|^5.0", 2388 | "symfony/service-contracts": "^1.1.2|^2", 2389 | "symfony/yaml": "^3.4|^4.0|^5.0" 2390 | }, 2391 | "suggest": { 2392 | "psr/log-implementation": "To use logging capability in translator", 2393 | "symfony/config": "", 2394 | "symfony/yaml": "" 2395 | }, 2396 | "type": "library", 2397 | "extra": { 2398 | "branch-alias": { 2399 | "dev-master": "4.4-dev" 2400 | } 2401 | }, 2402 | "autoload": { 2403 | "psr-4": { 2404 | "Symfony\\Component\\Translation\\": "" 2405 | }, 2406 | "exclude-from-classmap": [ 2407 | "/Tests/" 2408 | ] 2409 | }, 2410 | "notification-url": "https://packagist.org/downloads/", 2411 | "license": [ 2412 | "MIT" 2413 | ], 2414 | "authors": [ 2415 | { 2416 | "name": "Fabien Potencier", 2417 | "email": "fabien@symfony.com" 2418 | }, 2419 | { 2420 | "name": "Symfony Community", 2421 | "homepage": "https://symfony.com/contributors" 2422 | } 2423 | ], 2424 | "description": "Symfony Translation Component", 2425 | "homepage": "https://symfony.com", 2426 | "time": "2019-12-12T12:53:52+00:00" 2427 | }, 2428 | { 2429 | "name": "symfony/translation-contracts", 2430 | "version": "v2.0.1", 2431 | "source": { 2432 | "type": "git", 2433 | "url": "https://github.com/symfony/translation-contracts.git", 2434 | "reference": "8cc682ac458d75557203b2f2f14b0b92e1c744ed" 2435 | }, 2436 | "dist": { 2437 | "type": "zip", 2438 | "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/8cc682ac458d75557203b2f2f14b0b92e1c744ed", 2439 | "reference": "8cc682ac458d75557203b2f2f14b0b92e1c744ed", 2440 | "shasum": "" 2441 | }, 2442 | "require": { 2443 | "php": "^7.2.5" 2444 | }, 2445 | "suggest": { 2446 | "symfony/translation-implementation": "" 2447 | }, 2448 | "type": "library", 2449 | "extra": { 2450 | "branch-alias": { 2451 | "dev-master": "2.0-dev" 2452 | } 2453 | }, 2454 | "autoload": { 2455 | "psr-4": { 2456 | "Symfony\\Contracts\\Translation\\": "" 2457 | } 2458 | }, 2459 | "notification-url": "https://packagist.org/downloads/", 2460 | "license": [ 2461 | "MIT" 2462 | ], 2463 | "authors": [ 2464 | { 2465 | "name": "Nicolas Grekas", 2466 | "email": "p@tchwork.com" 2467 | }, 2468 | { 2469 | "name": "Symfony Community", 2470 | "homepage": "https://symfony.com/contributors" 2471 | } 2472 | ], 2473 | "description": "Generic abstractions related to translation", 2474 | "homepage": "https://symfony.com", 2475 | "keywords": [ 2476 | "abstractions", 2477 | "contracts", 2478 | "decoupling", 2479 | "interfaces", 2480 | "interoperability", 2481 | "standards" 2482 | ], 2483 | "time": "2019-11-18T17:27:11+00:00" 2484 | }, 2485 | { 2486 | "name": "symfony/var-dumper", 2487 | "version": "v4.4.2", 2488 | "source": { 2489 | "type": "git", 2490 | "url": "https://github.com/symfony/var-dumper.git", 2491 | "reference": "be330f919bdb395d1e0c3f2bfb8948512d6bdd99" 2492 | }, 2493 | "dist": { 2494 | "type": "zip", 2495 | "url": "https://api.github.com/repos/symfony/var-dumper/zipball/be330f919bdb395d1e0c3f2bfb8948512d6bdd99", 2496 | "reference": "be330f919bdb395d1e0c3f2bfb8948512d6bdd99", 2497 | "shasum": "" 2498 | }, 2499 | "require": { 2500 | "php": "^7.1.3", 2501 | "symfony/polyfill-mbstring": "~1.0", 2502 | "symfony/polyfill-php72": "~1.5" 2503 | }, 2504 | "conflict": { 2505 | "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", 2506 | "symfony/console": "<3.4" 2507 | }, 2508 | "require-dev": { 2509 | "ext-iconv": "*", 2510 | "symfony/console": "^3.4|^4.0|^5.0", 2511 | "symfony/process": "^4.4|^5.0", 2512 | "twig/twig": "^1.34|^2.4|^3.0" 2513 | }, 2514 | "suggest": { 2515 | "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", 2516 | "ext-intl": "To show region name in time zone dump", 2517 | "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" 2518 | }, 2519 | "bin": [ 2520 | "Resources/bin/var-dump-server" 2521 | ], 2522 | "type": "library", 2523 | "extra": { 2524 | "branch-alias": { 2525 | "dev-master": "4.4-dev" 2526 | } 2527 | }, 2528 | "autoload": { 2529 | "files": [ 2530 | "Resources/functions/dump.php" 2531 | ], 2532 | "psr-4": { 2533 | "Symfony\\Component\\VarDumper\\": "" 2534 | }, 2535 | "exclude-from-classmap": [ 2536 | "/Tests/" 2537 | ] 2538 | }, 2539 | "notification-url": "https://packagist.org/downloads/", 2540 | "license": [ 2541 | "MIT" 2542 | ], 2543 | "authors": [ 2544 | { 2545 | "name": "Nicolas Grekas", 2546 | "email": "p@tchwork.com" 2547 | }, 2548 | { 2549 | "name": "Symfony Community", 2550 | "homepage": "https://symfony.com/contributors" 2551 | } 2552 | ], 2553 | "description": "Symfony mechanism for exploring and dumping PHP variables", 2554 | "homepage": "https://symfony.com", 2555 | "keywords": [ 2556 | "debug", 2557 | "dump" 2558 | ], 2559 | "time": "2019-12-18T13:41:29+00:00" 2560 | }, 2561 | { 2562 | "name": "tijsverkoyen/css-to-inline-styles", 2563 | "version": "2.2.2", 2564 | "source": { 2565 | "type": "git", 2566 | "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", 2567 | "reference": "dda2ee426acd6d801d5b7fd1001cde9b5f790e15" 2568 | }, 2569 | "dist": { 2570 | "type": "zip", 2571 | "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/dda2ee426acd6d801d5b7fd1001cde9b5f790e15", 2572 | "reference": "dda2ee426acd6d801d5b7fd1001cde9b5f790e15", 2573 | "shasum": "" 2574 | }, 2575 | "require": { 2576 | "ext-dom": "*", 2577 | "ext-libxml": "*", 2578 | "php": "^5.5 || ^7.0", 2579 | "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0" 2580 | }, 2581 | "require-dev": { 2582 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" 2583 | }, 2584 | "type": "library", 2585 | "extra": { 2586 | "branch-alias": { 2587 | "dev-master": "2.2.x-dev" 2588 | } 2589 | }, 2590 | "autoload": { 2591 | "psr-4": { 2592 | "TijsVerkoyen\\CssToInlineStyles\\": "src" 2593 | } 2594 | }, 2595 | "notification-url": "https://packagist.org/downloads/", 2596 | "license": [ 2597 | "BSD-3-Clause" 2598 | ], 2599 | "authors": [ 2600 | { 2601 | "name": "Tijs Verkoyen", 2602 | "email": "css_to_inline_styles@verkoyen.eu", 2603 | "role": "Developer" 2604 | } 2605 | ], 2606 | "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", 2607 | "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", 2608 | "time": "2019-10-24T08:53:34+00:00" 2609 | }, 2610 | { 2611 | "name": "vlucas/phpdotenv", 2612 | "version": "v3.6.0", 2613 | "source": { 2614 | "type": "git", 2615 | "url": "https://github.com/vlucas/phpdotenv.git", 2616 | "reference": "1bdf24f065975594f6a117f0f1f6cabf1333b156" 2617 | }, 2618 | "dist": { 2619 | "type": "zip", 2620 | "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/1bdf24f065975594f6a117f0f1f6cabf1333b156", 2621 | "reference": "1bdf24f065975594f6a117f0f1f6cabf1333b156", 2622 | "shasum": "" 2623 | }, 2624 | "require": { 2625 | "php": "^5.4 || ^7.0", 2626 | "phpoption/phpoption": "^1.5", 2627 | "symfony/polyfill-ctype": "^1.9" 2628 | }, 2629 | "require-dev": { 2630 | "phpunit/phpunit": "^4.8.35 || ^5.0 || ^6.0 || ^7.0" 2631 | }, 2632 | "type": "library", 2633 | "extra": { 2634 | "branch-alias": { 2635 | "dev-master": "3.6-dev" 2636 | } 2637 | }, 2638 | "autoload": { 2639 | "psr-4": { 2640 | "Dotenv\\": "src/" 2641 | } 2642 | }, 2643 | "notification-url": "https://packagist.org/downloads/", 2644 | "license": [ 2645 | "BSD-3-Clause" 2646 | ], 2647 | "authors": [ 2648 | { 2649 | "name": "Graham Campbell", 2650 | "email": "graham@alt-three.com", 2651 | "homepage": "https://gjcampbell.co.uk/" 2652 | }, 2653 | { 2654 | "name": "Vance Lucas", 2655 | "email": "vance@vancelucas.com", 2656 | "homepage": "https://vancelucas.com/" 2657 | } 2658 | ], 2659 | "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", 2660 | "keywords": [ 2661 | "dotenv", 2662 | "env", 2663 | "environment" 2664 | ], 2665 | "time": "2019-09-10T21:37:39+00:00" 2666 | } 2667 | ], 2668 | "packages-dev": [ 2669 | { 2670 | "name": "doctrine/instantiator", 2671 | "version": "1.3.0", 2672 | "source": { 2673 | "type": "git", 2674 | "url": "https://github.com/doctrine/instantiator.git", 2675 | "reference": "ae466f726242e637cebdd526a7d991b9433bacf1" 2676 | }, 2677 | "dist": { 2678 | "type": "zip", 2679 | "url": "https://api.github.com/repos/doctrine/instantiator/zipball/ae466f726242e637cebdd526a7d991b9433bacf1", 2680 | "reference": "ae466f726242e637cebdd526a7d991b9433bacf1", 2681 | "shasum": "" 2682 | }, 2683 | "require": { 2684 | "php": "^7.1" 2685 | }, 2686 | "require-dev": { 2687 | "doctrine/coding-standard": "^6.0", 2688 | "ext-pdo": "*", 2689 | "ext-phar": "*", 2690 | "phpbench/phpbench": "^0.13", 2691 | "phpstan/phpstan-phpunit": "^0.11", 2692 | "phpstan/phpstan-shim": "^0.11", 2693 | "phpunit/phpunit": "^7.0" 2694 | }, 2695 | "type": "library", 2696 | "extra": { 2697 | "branch-alias": { 2698 | "dev-master": "1.2.x-dev" 2699 | } 2700 | }, 2701 | "autoload": { 2702 | "psr-4": { 2703 | "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" 2704 | } 2705 | }, 2706 | "notification-url": "https://packagist.org/downloads/", 2707 | "license": [ 2708 | "MIT" 2709 | ], 2710 | "authors": [ 2711 | { 2712 | "name": "Marco Pivetta", 2713 | "email": "ocramius@gmail.com", 2714 | "homepage": "http://ocramius.github.com/" 2715 | } 2716 | ], 2717 | "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", 2718 | "homepage": "https://www.doctrine-project.org/projects/instantiator.html", 2719 | "keywords": [ 2720 | "constructor", 2721 | "instantiate" 2722 | ], 2723 | "time": "2019-10-21T16:45:58+00:00" 2724 | }, 2725 | { 2726 | "name": "fzaninotto/faker", 2727 | "version": "v1.9.1", 2728 | "source": { 2729 | "type": "git", 2730 | "url": "https://github.com/fzaninotto/Faker.git", 2731 | "reference": "fc10d778e4b84d5bd315dad194661e091d307c6f" 2732 | }, 2733 | "dist": { 2734 | "type": "zip", 2735 | "url": "https://api.github.com/repos/fzaninotto/Faker/zipball/fc10d778e4b84d5bd315dad194661e091d307c6f", 2736 | "reference": "fc10d778e4b84d5bd315dad194661e091d307c6f", 2737 | "shasum": "" 2738 | }, 2739 | "require": { 2740 | "php": "^5.3.3 || ^7.0" 2741 | }, 2742 | "require-dev": { 2743 | "ext-intl": "*", 2744 | "phpunit/phpunit": "^4.8.35 || ^5.7", 2745 | "squizlabs/php_codesniffer": "^2.9.2" 2746 | }, 2747 | "type": "library", 2748 | "extra": { 2749 | "branch-alias": { 2750 | "dev-master": "1.9-dev" 2751 | } 2752 | }, 2753 | "autoload": { 2754 | "psr-4": { 2755 | "Faker\\": "src/Faker/" 2756 | } 2757 | }, 2758 | "notification-url": "https://packagist.org/downloads/", 2759 | "license": [ 2760 | "MIT" 2761 | ], 2762 | "authors": [ 2763 | { 2764 | "name": "François Zaninotto" 2765 | } 2766 | ], 2767 | "description": "Faker is a PHP library that generates fake data for you.", 2768 | "keywords": [ 2769 | "data", 2770 | "faker", 2771 | "fixtures" 2772 | ], 2773 | "time": "2019-12-12T13:22:17+00:00" 2774 | }, 2775 | { 2776 | "name": "hamcrest/hamcrest-php", 2777 | "version": "v2.0.0", 2778 | "source": { 2779 | "type": "git", 2780 | "url": "https://github.com/hamcrest/hamcrest-php.git", 2781 | "reference": "776503d3a8e85d4f9a1148614f95b7a608b046ad" 2782 | }, 2783 | "dist": { 2784 | "type": "zip", 2785 | "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/776503d3a8e85d4f9a1148614f95b7a608b046ad", 2786 | "reference": "776503d3a8e85d4f9a1148614f95b7a608b046ad", 2787 | "shasum": "" 2788 | }, 2789 | "require": { 2790 | "php": "^5.3|^7.0" 2791 | }, 2792 | "replace": { 2793 | "cordoval/hamcrest-php": "*", 2794 | "davedevelopment/hamcrest-php": "*", 2795 | "kodova/hamcrest-php": "*" 2796 | }, 2797 | "require-dev": { 2798 | "phpunit/php-file-iterator": "1.3.3", 2799 | "phpunit/phpunit": "~4.0", 2800 | "satooshi/php-coveralls": "^1.0" 2801 | }, 2802 | "type": "library", 2803 | "extra": { 2804 | "branch-alias": { 2805 | "dev-master": "2.0-dev" 2806 | } 2807 | }, 2808 | "autoload": { 2809 | "classmap": [ 2810 | "hamcrest" 2811 | ] 2812 | }, 2813 | "notification-url": "https://packagist.org/downloads/", 2814 | "license": [ 2815 | "BSD" 2816 | ], 2817 | "description": "This is the PHP port of Hamcrest Matchers", 2818 | "keywords": [ 2819 | "test" 2820 | ], 2821 | "time": "2016-01-20T08:20:44+00:00" 2822 | }, 2823 | { 2824 | "name": "mockery/mockery", 2825 | "version": "1.3.1", 2826 | "source": { 2827 | "type": "git", 2828 | "url": "https://github.com/mockery/mockery.git", 2829 | "reference": "f69bbde7d7a75d6b2862d9ca8fab1cd28014b4be" 2830 | }, 2831 | "dist": { 2832 | "type": "zip", 2833 | "url": "https://api.github.com/repos/mockery/mockery/zipball/f69bbde7d7a75d6b2862d9ca8fab1cd28014b4be", 2834 | "reference": "f69bbde7d7a75d6b2862d9ca8fab1cd28014b4be", 2835 | "shasum": "" 2836 | }, 2837 | "require": { 2838 | "hamcrest/hamcrest-php": "~2.0", 2839 | "lib-pcre": ">=7.0", 2840 | "php": ">=5.6.0" 2841 | }, 2842 | "require-dev": { 2843 | "phpunit/phpunit": "~5.7.10|~6.5|~7.0|~8.0" 2844 | }, 2845 | "type": "library", 2846 | "extra": { 2847 | "branch-alias": { 2848 | "dev-master": "1.3.x-dev" 2849 | } 2850 | }, 2851 | "autoload": { 2852 | "psr-0": { 2853 | "Mockery": "library/" 2854 | } 2855 | }, 2856 | "notification-url": "https://packagist.org/downloads/", 2857 | "license": [ 2858 | "BSD-3-Clause" 2859 | ], 2860 | "authors": [ 2861 | { 2862 | "name": "Pádraic Brady", 2863 | "email": "padraic.brady@gmail.com", 2864 | "homepage": "http://blog.astrumfutura.com" 2865 | }, 2866 | { 2867 | "name": "Dave Marshall", 2868 | "email": "dave.marshall@atstsolutions.co.uk", 2869 | "homepage": "http://davedevelopment.co.uk" 2870 | } 2871 | ], 2872 | "description": "Mockery is a simple yet flexible PHP mock object framework", 2873 | "homepage": "https://github.com/mockery/mockery", 2874 | "keywords": [ 2875 | "BDD", 2876 | "TDD", 2877 | "library", 2878 | "mock", 2879 | "mock objects", 2880 | "mockery", 2881 | "stub", 2882 | "test", 2883 | "test double", 2884 | "testing" 2885 | ], 2886 | "time": "2019-12-26T09:49:15+00:00" 2887 | }, 2888 | { 2889 | "name": "myclabs/deep-copy", 2890 | "version": "1.9.4", 2891 | "source": { 2892 | "type": "git", 2893 | "url": "https://github.com/myclabs/DeepCopy.git", 2894 | "reference": "579bb7356d91f9456ccd505f24ca8b667966a0a7" 2895 | }, 2896 | "dist": { 2897 | "type": "zip", 2898 | "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/579bb7356d91f9456ccd505f24ca8b667966a0a7", 2899 | "reference": "579bb7356d91f9456ccd505f24ca8b667966a0a7", 2900 | "shasum": "" 2901 | }, 2902 | "require": { 2903 | "php": "^7.1" 2904 | }, 2905 | "replace": { 2906 | "myclabs/deep-copy": "self.version" 2907 | }, 2908 | "require-dev": { 2909 | "doctrine/collections": "^1.0", 2910 | "doctrine/common": "^2.6", 2911 | "phpunit/phpunit": "^7.1" 2912 | }, 2913 | "type": "library", 2914 | "autoload": { 2915 | "psr-4": { 2916 | "DeepCopy\\": "src/DeepCopy/" 2917 | }, 2918 | "files": [ 2919 | "src/DeepCopy/deep_copy.php" 2920 | ] 2921 | }, 2922 | "notification-url": "https://packagist.org/downloads/", 2923 | "license": [ 2924 | "MIT" 2925 | ], 2926 | "description": "Create deep copies (clones) of your objects", 2927 | "keywords": [ 2928 | "clone", 2929 | "copy", 2930 | "duplicate", 2931 | "object", 2932 | "object graph" 2933 | ], 2934 | "time": "2019-12-15T19:12:40+00:00" 2935 | }, 2936 | { 2937 | "name": "orchestra/testbench", 2938 | "version": "v4.4.1", 2939 | "source": { 2940 | "type": "git", 2941 | "url": "https://github.com/orchestral/testbench.git", 2942 | "reference": "39799813d491c1abbf97e3f909801efb3e6f3a4b" 2943 | }, 2944 | "dist": { 2945 | "type": "zip", 2946 | "url": "https://api.github.com/repos/orchestral/testbench/zipball/39799813d491c1abbf97e3f909801efb3e6f3a4b", 2947 | "reference": "39799813d491c1abbf97e3f909801efb3e6f3a4b", 2948 | "shasum": "" 2949 | }, 2950 | "require": { 2951 | "laravel/framework": "^6.4", 2952 | "mockery/mockery": "^1.2.3", 2953 | "orchestra/testbench-core": "^4.4.1", 2954 | "php": ">=7.2", 2955 | "phpunit/phpunit": "^8.3" 2956 | }, 2957 | "type": "library", 2958 | "extra": { 2959 | "branch-alias": { 2960 | "dev-master": "5.0-dev" 2961 | } 2962 | }, 2963 | "notification-url": "https://packagist.org/downloads/", 2964 | "license": [ 2965 | "MIT" 2966 | ], 2967 | "authors": [ 2968 | { 2969 | "name": "Mior Muhammad Zaki", 2970 | "email": "crynobone@gmail.com", 2971 | "homepage": "https://github.com/crynobone" 2972 | } 2973 | ], 2974 | "description": "Laravel Testing Helper for Packages Development", 2975 | "homepage": "http://orchestraplatform.com/docs/latest/components/testbench/", 2976 | "keywords": [ 2977 | "BDD", 2978 | "TDD", 2979 | "laravel", 2980 | "orchestra-platform", 2981 | "orchestral", 2982 | "testing" 2983 | ], 2984 | "time": "2019-11-22T22:36:07+00:00" 2985 | }, 2986 | { 2987 | "name": "orchestra/testbench-core", 2988 | "version": "v4.5.0", 2989 | "source": { 2990 | "type": "git", 2991 | "url": "https://github.com/orchestral/testbench-core.git", 2992 | "reference": "b92e31c5b101fc87bc5c3137610151dcae82f0e3" 2993 | }, 2994 | "dist": { 2995 | "type": "zip", 2996 | "url": "https://api.github.com/repos/orchestral/testbench-core/zipball/b92e31c5b101fc87bc5c3137610151dcae82f0e3", 2997 | "reference": "b92e31c5b101fc87bc5c3137610151dcae82f0e3", 2998 | "shasum": "" 2999 | }, 3000 | "require": { 3001 | "fzaninotto/faker": "^1.4", 3002 | "php": ">=7.2" 3003 | }, 3004 | "require-dev": { 3005 | "laravel/framework": "^6.9", 3006 | "laravel/laravel": "dev-master", 3007 | "mockery/mockery": "^1.2.3", 3008 | "phpunit/phpunit": "^8.3 || ^9.0" 3009 | }, 3010 | "suggest": { 3011 | "laravel/framework": "Required for testing (^6.9).", 3012 | "mockery/mockery": "Allow using Mockery for testing (^1.2.3).", 3013 | "orchestra/testbench-browser-kit": "Allow using legacy Laravel BrowserKit for testing (^4.0).", 3014 | "orchestra/testbench-dusk": "Allow using Laravel Dusk for testing (^4.0).", 3015 | "phpunit/phpunit": "Allow using PHPUnit for testing (^8.3)." 3016 | }, 3017 | "type": "library", 3018 | "extra": { 3019 | "branch-alias": { 3020 | "dev-master": "4.0-dev" 3021 | } 3022 | }, 3023 | "autoload": { 3024 | "psr-4": { 3025 | "Orchestra\\Testbench\\": "src/" 3026 | } 3027 | }, 3028 | "notification-url": "https://packagist.org/downloads/", 3029 | "license": [ 3030 | "MIT" 3031 | ], 3032 | "authors": [ 3033 | { 3034 | "name": "Mior Muhammad Zaki", 3035 | "email": "crynobone@gmail.com", 3036 | "homepage": "https://github.com/crynobone" 3037 | } 3038 | ], 3039 | "description": "Testing Helper for Laravel Development", 3040 | "homepage": "http://orchestraplatform.com/docs/latest/components/testbench/", 3041 | "keywords": [ 3042 | "BDD", 3043 | "TDD", 3044 | "laravel", 3045 | "orchestra-platform", 3046 | "orchestral", 3047 | "testing" 3048 | ], 3049 | "time": "2019-12-31T01:37:59+00:00" 3050 | }, 3051 | { 3052 | "name": "phar-io/manifest", 3053 | "version": "1.0.3", 3054 | "source": { 3055 | "type": "git", 3056 | "url": "https://github.com/phar-io/manifest.git", 3057 | "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4" 3058 | }, 3059 | "dist": { 3060 | "type": "zip", 3061 | "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", 3062 | "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", 3063 | "shasum": "" 3064 | }, 3065 | "require": { 3066 | "ext-dom": "*", 3067 | "ext-phar": "*", 3068 | "phar-io/version": "^2.0", 3069 | "php": "^5.6 || ^7.0" 3070 | }, 3071 | "type": "library", 3072 | "extra": { 3073 | "branch-alias": { 3074 | "dev-master": "1.0.x-dev" 3075 | } 3076 | }, 3077 | "autoload": { 3078 | "classmap": [ 3079 | "src/" 3080 | ] 3081 | }, 3082 | "notification-url": "https://packagist.org/downloads/", 3083 | "license": [ 3084 | "BSD-3-Clause" 3085 | ], 3086 | "authors": [ 3087 | { 3088 | "name": "Arne Blankerts", 3089 | "email": "arne@blankerts.de", 3090 | "role": "Developer" 3091 | }, 3092 | { 3093 | "name": "Sebastian Heuer", 3094 | "email": "sebastian@phpeople.de", 3095 | "role": "Developer" 3096 | }, 3097 | { 3098 | "name": "Sebastian Bergmann", 3099 | "email": "sebastian@phpunit.de", 3100 | "role": "Developer" 3101 | } 3102 | ], 3103 | "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", 3104 | "time": "2018-07-08T19:23:20+00:00" 3105 | }, 3106 | { 3107 | "name": "phar-io/version", 3108 | "version": "2.0.1", 3109 | "source": { 3110 | "type": "git", 3111 | "url": "https://github.com/phar-io/version.git", 3112 | "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6" 3113 | }, 3114 | "dist": { 3115 | "type": "zip", 3116 | "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6", 3117 | "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6", 3118 | "shasum": "" 3119 | }, 3120 | "require": { 3121 | "php": "^5.6 || ^7.0" 3122 | }, 3123 | "type": "library", 3124 | "autoload": { 3125 | "classmap": [ 3126 | "src/" 3127 | ] 3128 | }, 3129 | "notification-url": "https://packagist.org/downloads/", 3130 | "license": [ 3131 | "BSD-3-Clause" 3132 | ], 3133 | "authors": [ 3134 | { 3135 | "name": "Arne Blankerts", 3136 | "email": "arne@blankerts.de", 3137 | "role": "Developer" 3138 | }, 3139 | { 3140 | "name": "Sebastian Heuer", 3141 | "email": "sebastian@phpeople.de", 3142 | "role": "Developer" 3143 | }, 3144 | { 3145 | "name": "Sebastian Bergmann", 3146 | "email": "sebastian@phpunit.de", 3147 | "role": "Developer" 3148 | } 3149 | ], 3150 | "description": "Library for handling version information and constraints", 3151 | "time": "2018-07-08T19:19:57+00:00" 3152 | }, 3153 | { 3154 | "name": "phpdocumentor/reflection-common", 3155 | "version": "2.0.0", 3156 | "source": { 3157 | "type": "git", 3158 | "url": "https://github.com/phpDocumentor/ReflectionCommon.git", 3159 | "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a" 3160 | }, 3161 | "dist": { 3162 | "type": "zip", 3163 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/63a995caa1ca9e5590304cd845c15ad6d482a62a", 3164 | "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a", 3165 | "shasum": "" 3166 | }, 3167 | "require": { 3168 | "php": ">=7.1" 3169 | }, 3170 | "require-dev": { 3171 | "phpunit/phpunit": "~6" 3172 | }, 3173 | "type": "library", 3174 | "extra": { 3175 | "branch-alias": { 3176 | "dev-master": "2.x-dev" 3177 | } 3178 | }, 3179 | "autoload": { 3180 | "psr-4": { 3181 | "phpDocumentor\\Reflection\\": "src/" 3182 | } 3183 | }, 3184 | "notification-url": "https://packagist.org/downloads/", 3185 | "license": [ 3186 | "MIT" 3187 | ], 3188 | "authors": [ 3189 | { 3190 | "name": "Jaap van Otterdijk", 3191 | "email": "opensource@ijaap.nl" 3192 | } 3193 | ], 3194 | "description": "Common reflection classes used by phpdocumentor to reflect the code structure", 3195 | "homepage": "http://www.phpdoc.org", 3196 | "keywords": [ 3197 | "FQSEN", 3198 | "phpDocumentor", 3199 | "phpdoc", 3200 | "reflection", 3201 | "static analysis" 3202 | ], 3203 | "time": "2018-08-07T13:53:10+00:00" 3204 | }, 3205 | { 3206 | "name": "phpdocumentor/reflection-docblock", 3207 | "version": "4.3.4", 3208 | "source": { 3209 | "type": "git", 3210 | "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", 3211 | "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c" 3212 | }, 3213 | "dist": { 3214 | "type": "zip", 3215 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/da3fd972d6bafd628114f7e7e036f45944b62e9c", 3216 | "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c", 3217 | "shasum": "" 3218 | }, 3219 | "require": { 3220 | "php": "^7.0", 3221 | "phpdocumentor/reflection-common": "^1.0.0 || ^2.0.0", 3222 | "phpdocumentor/type-resolver": "~0.4 || ^1.0.0", 3223 | "webmozart/assert": "^1.0" 3224 | }, 3225 | "require-dev": { 3226 | "doctrine/instantiator": "^1.0.5", 3227 | "mockery/mockery": "^1.0", 3228 | "phpdocumentor/type-resolver": "0.4.*", 3229 | "phpunit/phpunit": "^6.4" 3230 | }, 3231 | "type": "library", 3232 | "extra": { 3233 | "branch-alias": { 3234 | "dev-master": "4.x-dev" 3235 | } 3236 | }, 3237 | "autoload": { 3238 | "psr-4": { 3239 | "phpDocumentor\\Reflection\\": [ 3240 | "src/" 3241 | ] 3242 | } 3243 | }, 3244 | "notification-url": "https://packagist.org/downloads/", 3245 | "license": [ 3246 | "MIT" 3247 | ], 3248 | "authors": [ 3249 | { 3250 | "name": "Mike van Riel", 3251 | "email": "me@mikevanriel.com" 3252 | } 3253 | ], 3254 | "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", 3255 | "time": "2019-12-28T18:55:12+00:00" 3256 | }, 3257 | { 3258 | "name": "phpdocumentor/type-resolver", 3259 | "version": "1.0.1", 3260 | "source": { 3261 | "type": "git", 3262 | "url": "https://github.com/phpDocumentor/TypeResolver.git", 3263 | "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9" 3264 | }, 3265 | "dist": { 3266 | "type": "zip", 3267 | "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/2e32a6d48972b2c1976ed5d8967145b6cec4a4a9", 3268 | "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9", 3269 | "shasum": "" 3270 | }, 3271 | "require": { 3272 | "php": "^7.1", 3273 | "phpdocumentor/reflection-common": "^2.0" 3274 | }, 3275 | "require-dev": { 3276 | "ext-tokenizer": "^7.1", 3277 | "mockery/mockery": "~1", 3278 | "phpunit/phpunit": "^7.0" 3279 | }, 3280 | "type": "library", 3281 | "extra": { 3282 | "branch-alias": { 3283 | "dev-master": "1.x-dev" 3284 | } 3285 | }, 3286 | "autoload": { 3287 | "psr-4": { 3288 | "phpDocumentor\\Reflection\\": "src" 3289 | } 3290 | }, 3291 | "notification-url": "https://packagist.org/downloads/", 3292 | "license": [ 3293 | "MIT" 3294 | ], 3295 | "authors": [ 3296 | { 3297 | "name": "Mike van Riel", 3298 | "email": "me@mikevanriel.com" 3299 | } 3300 | ], 3301 | "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", 3302 | "time": "2019-08-22T18:11:29+00:00" 3303 | }, 3304 | { 3305 | "name": "phpspec/prophecy", 3306 | "version": "1.10.1", 3307 | "source": { 3308 | "type": "git", 3309 | "url": "https://github.com/phpspec/prophecy.git", 3310 | "reference": "cbe1df668b3fe136bcc909126a0f529a78d4cbbc" 3311 | }, 3312 | "dist": { 3313 | "type": "zip", 3314 | "url": "https://api.github.com/repos/phpspec/prophecy/zipball/cbe1df668b3fe136bcc909126a0f529a78d4cbbc", 3315 | "reference": "cbe1df668b3fe136bcc909126a0f529a78d4cbbc", 3316 | "shasum": "" 3317 | }, 3318 | "require": { 3319 | "doctrine/instantiator": "^1.0.2", 3320 | "php": "^5.3|^7.0", 3321 | "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0", 3322 | "sebastian/comparator": "^1.2.3|^2.0|^3.0", 3323 | "sebastian/recursion-context": "^1.0|^2.0|^3.0" 3324 | }, 3325 | "require-dev": { 3326 | "phpspec/phpspec": "^2.5 || ^3.2", 3327 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" 3328 | }, 3329 | "type": "library", 3330 | "extra": { 3331 | "branch-alias": { 3332 | "dev-master": "1.10.x-dev" 3333 | } 3334 | }, 3335 | "autoload": { 3336 | "psr-4": { 3337 | "Prophecy\\": "src/Prophecy" 3338 | } 3339 | }, 3340 | "notification-url": "https://packagist.org/downloads/", 3341 | "license": [ 3342 | "MIT" 3343 | ], 3344 | "authors": [ 3345 | { 3346 | "name": "Konstantin Kudryashov", 3347 | "email": "ever.zet@gmail.com", 3348 | "homepage": "http://everzet.com" 3349 | }, 3350 | { 3351 | "name": "Marcello Duarte", 3352 | "email": "marcello.duarte@gmail.com" 3353 | } 3354 | ], 3355 | "description": "Highly opinionated mocking framework for PHP 5.3+", 3356 | "homepage": "https://github.com/phpspec/prophecy", 3357 | "keywords": [ 3358 | "Double", 3359 | "Dummy", 3360 | "fake", 3361 | "mock", 3362 | "spy", 3363 | "stub" 3364 | ], 3365 | "time": "2019-12-22T21:05:45+00:00" 3366 | }, 3367 | { 3368 | "name": "phpstan/phpstan", 3369 | "version": "0.12.4", 3370 | "source": { 3371 | "type": "git", 3372 | "url": "https://github.com/phpstan/phpstan.git", 3373 | "reference": "100a25ba8561223f6bf5a5ff4204f951c0ec007c" 3374 | }, 3375 | "dist": { 3376 | "type": "zip", 3377 | "url": "https://api.github.com/repos/phpstan/phpstan/zipball/100a25ba8561223f6bf5a5ff4204f951c0ec007c", 3378 | "reference": "100a25ba8561223f6bf5a5ff4204f951c0ec007c", 3379 | "shasum": "" 3380 | }, 3381 | "require": { 3382 | "php": "^7.1" 3383 | }, 3384 | "bin": [ 3385 | "phpstan", 3386 | "phpstan.phar" 3387 | ], 3388 | "type": "library", 3389 | "extra": { 3390 | "branch-alias": { 3391 | "dev-master": "0.12-dev" 3392 | } 3393 | }, 3394 | "autoload": { 3395 | "files": [ 3396 | "bootstrap.php" 3397 | ] 3398 | }, 3399 | "notification-url": "https://packagist.org/downloads/", 3400 | "license": [ 3401 | "MIT" 3402 | ], 3403 | "description": "PHPStan - PHP Static Analysis Tool", 3404 | "time": "2020-01-06T06:38:17+00:00" 3405 | }, 3406 | { 3407 | "name": "phpunit/php-code-coverage", 3408 | "version": "7.0.10", 3409 | "source": { 3410 | "type": "git", 3411 | "url": "https://github.com/sebastianbergmann/php-code-coverage.git", 3412 | "reference": "f1884187926fbb755a9aaf0b3836ad3165b478bf" 3413 | }, 3414 | "dist": { 3415 | "type": "zip", 3416 | "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f1884187926fbb755a9aaf0b3836ad3165b478bf", 3417 | "reference": "f1884187926fbb755a9aaf0b3836ad3165b478bf", 3418 | "shasum": "" 3419 | }, 3420 | "require": { 3421 | "ext-dom": "*", 3422 | "ext-xmlwriter": "*", 3423 | "php": "^7.2", 3424 | "phpunit/php-file-iterator": "^2.0.2", 3425 | "phpunit/php-text-template": "^1.2.1", 3426 | "phpunit/php-token-stream": "^3.1.1", 3427 | "sebastian/code-unit-reverse-lookup": "^1.0.1", 3428 | "sebastian/environment": "^4.2.2", 3429 | "sebastian/version": "^2.0.1", 3430 | "theseer/tokenizer": "^1.1.3" 3431 | }, 3432 | "require-dev": { 3433 | "phpunit/phpunit": "^8.2.2" 3434 | }, 3435 | "suggest": { 3436 | "ext-xdebug": "^2.7.2" 3437 | }, 3438 | "type": "library", 3439 | "extra": { 3440 | "branch-alias": { 3441 | "dev-master": "7.0-dev" 3442 | } 3443 | }, 3444 | "autoload": { 3445 | "classmap": [ 3446 | "src/" 3447 | ] 3448 | }, 3449 | "notification-url": "https://packagist.org/downloads/", 3450 | "license": [ 3451 | "BSD-3-Clause" 3452 | ], 3453 | "authors": [ 3454 | { 3455 | "name": "Sebastian Bergmann", 3456 | "email": "sebastian@phpunit.de", 3457 | "role": "lead" 3458 | } 3459 | ], 3460 | "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", 3461 | "homepage": "https://github.com/sebastianbergmann/php-code-coverage", 3462 | "keywords": [ 3463 | "coverage", 3464 | "testing", 3465 | "xunit" 3466 | ], 3467 | "time": "2019-11-20T13:55:58+00:00" 3468 | }, 3469 | { 3470 | "name": "phpunit/php-file-iterator", 3471 | "version": "2.0.2", 3472 | "source": { 3473 | "type": "git", 3474 | "url": "https://github.com/sebastianbergmann/php-file-iterator.git", 3475 | "reference": "050bedf145a257b1ff02746c31894800e5122946" 3476 | }, 3477 | "dist": { 3478 | "type": "zip", 3479 | "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/050bedf145a257b1ff02746c31894800e5122946", 3480 | "reference": "050bedf145a257b1ff02746c31894800e5122946", 3481 | "shasum": "" 3482 | }, 3483 | "require": { 3484 | "php": "^7.1" 3485 | }, 3486 | "require-dev": { 3487 | "phpunit/phpunit": "^7.1" 3488 | }, 3489 | "type": "library", 3490 | "extra": { 3491 | "branch-alias": { 3492 | "dev-master": "2.0.x-dev" 3493 | } 3494 | }, 3495 | "autoload": { 3496 | "classmap": [ 3497 | "src/" 3498 | ] 3499 | }, 3500 | "notification-url": "https://packagist.org/downloads/", 3501 | "license": [ 3502 | "BSD-3-Clause" 3503 | ], 3504 | "authors": [ 3505 | { 3506 | "name": "Sebastian Bergmann", 3507 | "email": "sebastian@phpunit.de", 3508 | "role": "lead" 3509 | } 3510 | ], 3511 | "description": "FilterIterator implementation that filters files based on a list of suffixes.", 3512 | "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", 3513 | "keywords": [ 3514 | "filesystem", 3515 | "iterator" 3516 | ], 3517 | "time": "2018-09-13T20:33:42+00:00" 3518 | }, 3519 | { 3520 | "name": "phpunit/php-text-template", 3521 | "version": "1.2.1", 3522 | "source": { 3523 | "type": "git", 3524 | "url": "https://github.com/sebastianbergmann/php-text-template.git", 3525 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" 3526 | }, 3527 | "dist": { 3528 | "type": "zip", 3529 | "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 3530 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 3531 | "shasum": "" 3532 | }, 3533 | "require": { 3534 | "php": ">=5.3.3" 3535 | }, 3536 | "type": "library", 3537 | "autoload": { 3538 | "classmap": [ 3539 | "src/" 3540 | ] 3541 | }, 3542 | "notification-url": "https://packagist.org/downloads/", 3543 | "license": [ 3544 | "BSD-3-Clause" 3545 | ], 3546 | "authors": [ 3547 | { 3548 | "name": "Sebastian Bergmann", 3549 | "email": "sebastian@phpunit.de", 3550 | "role": "lead" 3551 | } 3552 | ], 3553 | "description": "Simple template engine.", 3554 | "homepage": "https://github.com/sebastianbergmann/php-text-template/", 3555 | "keywords": [ 3556 | "template" 3557 | ], 3558 | "time": "2015-06-21T13:50:34+00:00" 3559 | }, 3560 | { 3561 | "name": "phpunit/php-timer", 3562 | "version": "2.1.2", 3563 | "source": { 3564 | "type": "git", 3565 | "url": "https://github.com/sebastianbergmann/php-timer.git", 3566 | "reference": "1038454804406b0b5f5f520358e78c1c2f71501e" 3567 | }, 3568 | "dist": { 3569 | "type": "zip", 3570 | "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/1038454804406b0b5f5f520358e78c1c2f71501e", 3571 | "reference": "1038454804406b0b5f5f520358e78c1c2f71501e", 3572 | "shasum": "" 3573 | }, 3574 | "require": { 3575 | "php": "^7.1" 3576 | }, 3577 | "require-dev": { 3578 | "phpunit/phpunit": "^7.0" 3579 | }, 3580 | "type": "library", 3581 | "extra": { 3582 | "branch-alias": { 3583 | "dev-master": "2.1-dev" 3584 | } 3585 | }, 3586 | "autoload": { 3587 | "classmap": [ 3588 | "src/" 3589 | ] 3590 | }, 3591 | "notification-url": "https://packagist.org/downloads/", 3592 | "license": [ 3593 | "BSD-3-Clause" 3594 | ], 3595 | "authors": [ 3596 | { 3597 | "name": "Sebastian Bergmann", 3598 | "email": "sebastian@phpunit.de", 3599 | "role": "lead" 3600 | } 3601 | ], 3602 | "description": "Utility class for timing", 3603 | "homepage": "https://github.com/sebastianbergmann/php-timer/", 3604 | "keywords": [ 3605 | "timer" 3606 | ], 3607 | "time": "2019-06-07T04:22:29+00:00" 3608 | }, 3609 | { 3610 | "name": "phpunit/php-token-stream", 3611 | "version": "3.1.1", 3612 | "source": { 3613 | "type": "git", 3614 | "url": "https://github.com/sebastianbergmann/php-token-stream.git", 3615 | "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff" 3616 | }, 3617 | "dist": { 3618 | "type": "zip", 3619 | "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/995192df77f63a59e47f025390d2d1fdf8f425ff", 3620 | "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff", 3621 | "shasum": "" 3622 | }, 3623 | "require": { 3624 | "ext-tokenizer": "*", 3625 | "php": "^7.1" 3626 | }, 3627 | "require-dev": { 3628 | "phpunit/phpunit": "^7.0" 3629 | }, 3630 | "type": "library", 3631 | "extra": { 3632 | "branch-alias": { 3633 | "dev-master": "3.1-dev" 3634 | } 3635 | }, 3636 | "autoload": { 3637 | "classmap": [ 3638 | "src/" 3639 | ] 3640 | }, 3641 | "notification-url": "https://packagist.org/downloads/", 3642 | "license": [ 3643 | "BSD-3-Clause" 3644 | ], 3645 | "authors": [ 3646 | { 3647 | "name": "Sebastian Bergmann", 3648 | "email": "sebastian@phpunit.de" 3649 | } 3650 | ], 3651 | "description": "Wrapper around PHP's tokenizer extension.", 3652 | "homepage": "https://github.com/sebastianbergmann/php-token-stream/", 3653 | "keywords": [ 3654 | "tokenizer" 3655 | ], 3656 | "time": "2019-09-17T06:23:10+00:00" 3657 | }, 3658 | { 3659 | "name": "phpunit/phpunit", 3660 | "version": "8.5.1", 3661 | "source": { 3662 | "type": "git", 3663 | "url": "https://github.com/sebastianbergmann/phpunit.git", 3664 | "reference": "7870c78da3c5e4883eaef36ae47853ebb3cb86f2" 3665 | }, 3666 | "dist": { 3667 | "type": "zip", 3668 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/7870c78da3c5e4883eaef36ae47853ebb3cb86f2", 3669 | "reference": "7870c78da3c5e4883eaef36ae47853ebb3cb86f2", 3670 | "shasum": "" 3671 | }, 3672 | "require": { 3673 | "doctrine/instantiator": "^1.2.0", 3674 | "ext-dom": "*", 3675 | "ext-json": "*", 3676 | "ext-libxml": "*", 3677 | "ext-mbstring": "*", 3678 | "ext-xml": "*", 3679 | "ext-xmlwriter": "*", 3680 | "myclabs/deep-copy": "^1.9.1", 3681 | "phar-io/manifest": "^1.0.3", 3682 | "phar-io/version": "^2.0.1", 3683 | "php": "^7.2", 3684 | "phpspec/prophecy": "^1.8.1", 3685 | "phpunit/php-code-coverage": "^7.0.7", 3686 | "phpunit/php-file-iterator": "^2.0.2", 3687 | "phpunit/php-text-template": "^1.2.1", 3688 | "phpunit/php-timer": "^2.1.2", 3689 | "sebastian/comparator": "^3.0.2", 3690 | "sebastian/diff": "^3.0.2", 3691 | "sebastian/environment": "^4.2.2", 3692 | "sebastian/exporter": "^3.1.1", 3693 | "sebastian/global-state": "^3.0.0", 3694 | "sebastian/object-enumerator": "^3.0.3", 3695 | "sebastian/resource-operations": "^2.0.1", 3696 | "sebastian/type": "^1.1.3", 3697 | "sebastian/version": "^2.0.1" 3698 | }, 3699 | "require-dev": { 3700 | "ext-pdo": "*" 3701 | }, 3702 | "suggest": { 3703 | "ext-soap": "*", 3704 | "ext-xdebug": "*", 3705 | "phpunit/php-invoker": "^2.0.0" 3706 | }, 3707 | "bin": [ 3708 | "phpunit" 3709 | ], 3710 | "type": "library", 3711 | "extra": { 3712 | "branch-alias": { 3713 | "dev-master": "8.5-dev" 3714 | } 3715 | }, 3716 | "autoload": { 3717 | "classmap": [ 3718 | "src/" 3719 | ] 3720 | }, 3721 | "notification-url": "https://packagist.org/downloads/", 3722 | "license": [ 3723 | "BSD-3-Clause" 3724 | ], 3725 | "authors": [ 3726 | { 3727 | "name": "Sebastian Bergmann", 3728 | "email": "sebastian@phpunit.de", 3729 | "role": "lead" 3730 | } 3731 | ], 3732 | "description": "The PHP Unit Testing framework.", 3733 | "homepage": "https://phpunit.de/", 3734 | "keywords": [ 3735 | "phpunit", 3736 | "testing", 3737 | "xunit" 3738 | ], 3739 | "time": "2019-12-25T14:49:39+00:00" 3740 | }, 3741 | { 3742 | "name": "sebastian/code-unit-reverse-lookup", 3743 | "version": "1.0.1", 3744 | "source": { 3745 | "type": "git", 3746 | "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", 3747 | "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" 3748 | }, 3749 | "dist": { 3750 | "type": "zip", 3751 | "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", 3752 | "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", 3753 | "shasum": "" 3754 | }, 3755 | "require": { 3756 | "php": "^5.6 || ^7.0" 3757 | }, 3758 | "require-dev": { 3759 | "phpunit/phpunit": "^5.7 || ^6.0" 3760 | }, 3761 | "type": "library", 3762 | "extra": { 3763 | "branch-alias": { 3764 | "dev-master": "1.0.x-dev" 3765 | } 3766 | }, 3767 | "autoload": { 3768 | "classmap": [ 3769 | "src/" 3770 | ] 3771 | }, 3772 | "notification-url": "https://packagist.org/downloads/", 3773 | "license": [ 3774 | "BSD-3-Clause" 3775 | ], 3776 | "authors": [ 3777 | { 3778 | "name": "Sebastian Bergmann", 3779 | "email": "sebastian@phpunit.de" 3780 | } 3781 | ], 3782 | "description": "Looks up which function or method a line of code belongs to", 3783 | "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", 3784 | "time": "2017-03-04T06:30:41+00:00" 3785 | }, 3786 | { 3787 | "name": "sebastian/comparator", 3788 | "version": "3.0.2", 3789 | "source": { 3790 | "type": "git", 3791 | "url": "https://github.com/sebastianbergmann/comparator.git", 3792 | "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da" 3793 | }, 3794 | "dist": { 3795 | "type": "zip", 3796 | "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/5de4fc177adf9bce8df98d8d141a7559d7ccf6da", 3797 | "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da", 3798 | "shasum": "" 3799 | }, 3800 | "require": { 3801 | "php": "^7.1", 3802 | "sebastian/diff": "^3.0", 3803 | "sebastian/exporter": "^3.1" 3804 | }, 3805 | "require-dev": { 3806 | "phpunit/phpunit": "^7.1" 3807 | }, 3808 | "type": "library", 3809 | "extra": { 3810 | "branch-alias": { 3811 | "dev-master": "3.0-dev" 3812 | } 3813 | }, 3814 | "autoload": { 3815 | "classmap": [ 3816 | "src/" 3817 | ] 3818 | }, 3819 | "notification-url": "https://packagist.org/downloads/", 3820 | "license": [ 3821 | "BSD-3-Clause" 3822 | ], 3823 | "authors": [ 3824 | { 3825 | "name": "Jeff Welch", 3826 | "email": "whatthejeff@gmail.com" 3827 | }, 3828 | { 3829 | "name": "Volker Dusch", 3830 | "email": "github@wallbash.com" 3831 | }, 3832 | { 3833 | "name": "Bernhard Schussek", 3834 | "email": "bschussek@2bepublished.at" 3835 | }, 3836 | { 3837 | "name": "Sebastian Bergmann", 3838 | "email": "sebastian@phpunit.de" 3839 | } 3840 | ], 3841 | "description": "Provides the functionality to compare PHP values for equality", 3842 | "homepage": "https://github.com/sebastianbergmann/comparator", 3843 | "keywords": [ 3844 | "comparator", 3845 | "compare", 3846 | "equality" 3847 | ], 3848 | "time": "2018-07-12T15:12:46+00:00" 3849 | }, 3850 | { 3851 | "name": "sebastian/diff", 3852 | "version": "3.0.2", 3853 | "source": { 3854 | "type": "git", 3855 | "url": "https://github.com/sebastianbergmann/diff.git", 3856 | "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29" 3857 | }, 3858 | "dist": { 3859 | "type": "zip", 3860 | "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/720fcc7e9b5cf384ea68d9d930d480907a0c1a29", 3861 | "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29", 3862 | "shasum": "" 3863 | }, 3864 | "require": { 3865 | "php": "^7.1" 3866 | }, 3867 | "require-dev": { 3868 | "phpunit/phpunit": "^7.5 || ^8.0", 3869 | "symfony/process": "^2 || ^3.3 || ^4" 3870 | }, 3871 | "type": "library", 3872 | "extra": { 3873 | "branch-alias": { 3874 | "dev-master": "3.0-dev" 3875 | } 3876 | }, 3877 | "autoload": { 3878 | "classmap": [ 3879 | "src/" 3880 | ] 3881 | }, 3882 | "notification-url": "https://packagist.org/downloads/", 3883 | "license": [ 3884 | "BSD-3-Clause" 3885 | ], 3886 | "authors": [ 3887 | { 3888 | "name": "Kore Nordmann", 3889 | "email": "mail@kore-nordmann.de" 3890 | }, 3891 | { 3892 | "name": "Sebastian Bergmann", 3893 | "email": "sebastian@phpunit.de" 3894 | } 3895 | ], 3896 | "description": "Diff implementation", 3897 | "homepage": "https://github.com/sebastianbergmann/diff", 3898 | "keywords": [ 3899 | "diff", 3900 | "udiff", 3901 | "unidiff", 3902 | "unified diff" 3903 | ], 3904 | "time": "2019-02-04T06:01:07+00:00" 3905 | }, 3906 | { 3907 | "name": "sebastian/environment", 3908 | "version": "4.2.3", 3909 | "source": { 3910 | "type": "git", 3911 | "url": "https://github.com/sebastianbergmann/environment.git", 3912 | "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368" 3913 | }, 3914 | "dist": { 3915 | "type": "zip", 3916 | "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/464c90d7bdf5ad4e8a6aea15c091fec0603d4368", 3917 | "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368", 3918 | "shasum": "" 3919 | }, 3920 | "require": { 3921 | "php": "^7.1" 3922 | }, 3923 | "require-dev": { 3924 | "phpunit/phpunit": "^7.5" 3925 | }, 3926 | "suggest": { 3927 | "ext-posix": "*" 3928 | }, 3929 | "type": "library", 3930 | "extra": { 3931 | "branch-alias": { 3932 | "dev-master": "4.2-dev" 3933 | } 3934 | }, 3935 | "autoload": { 3936 | "classmap": [ 3937 | "src/" 3938 | ] 3939 | }, 3940 | "notification-url": "https://packagist.org/downloads/", 3941 | "license": [ 3942 | "BSD-3-Clause" 3943 | ], 3944 | "authors": [ 3945 | { 3946 | "name": "Sebastian Bergmann", 3947 | "email": "sebastian@phpunit.de" 3948 | } 3949 | ], 3950 | "description": "Provides functionality to handle HHVM/PHP environments", 3951 | "homepage": "http://www.github.com/sebastianbergmann/environment", 3952 | "keywords": [ 3953 | "Xdebug", 3954 | "environment", 3955 | "hhvm" 3956 | ], 3957 | "time": "2019-11-20T08:46:58+00:00" 3958 | }, 3959 | { 3960 | "name": "sebastian/exporter", 3961 | "version": "3.1.2", 3962 | "source": { 3963 | "type": "git", 3964 | "url": "https://github.com/sebastianbergmann/exporter.git", 3965 | "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e" 3966 | }, 3967 | "dist": { 3968 | "type": "zip", 3969 | "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/68609e1261d215ea5b21b7987539cbfbe156ec3e", 3970 | "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e", 3971 | "shasum": "" 3972 | }, 3973 | "require": { 3974 | "php": "^7.0", 3975 | "sebastian/recursion-context": "^3.0" 3976 | }, 3977 | "require-dev": { 3978 | "ext-mbstring": "*", 3979 | "phpunit/phpunit": "^6.0" 3980 | }, 3981 | "type": "library", 3982 | "extra": { 3983 | "branch-alias": { 3984 | "dev-master": "3.1.x-dev" 3985 | } 3986 | }, 3987 | "autoload": { 3988 | "classmap": [ 3989 | "src/" 3990 | ] 3991 | }, 3992 | "notification-url": "https://packagist.org/downloads/", 3993 | "license": [ 3994 | "BSD-3-Clause" 3995 | ], 3996 | "authors": [ 3997 | { 3998 | "name": "Sebastian Bergmann", 3999 | "email": "sebastian@phpunit.de" 4000 | }, 4001 | { 4002 | "name": "Jeff Welch", 4003 | "email": "whatthejeff@gmail.com" 4004 | }, 4005 | { 4006 | "name": "Volker Dusch", 4007 | "email": "github@wallbash.com" 4008 | }, 4009 | { 4010 | "name": "Adam Harvey", 4011 | "email": "aharvey@php.net" 4012 | }, 4013 | { 4014 | "name": "Bernhard Schussek", 4015 | "email": "bschussek@gmail.com" 4016 | } 4017 | ], 4018 | "description": "Provides the functionality to export PHP variables for visualization", 4019 | "homepage": "http://www.github.com/sebastianbergmann/exporter", 4020 | "keywords": [ 4021 | "export", 4022 | "exporter" 4023 | ], 4024 | "time": "2019-09-14T09:02:43+00:00" 4025 | }, 4026 | { 4027 | "name": "sebastian/global-state", 4028 | "version": "3.0.0", 4029 | "source": { 4030 | "type": "git", 4031 | "url": "https://github.com/sebastianbergmann/global-state.git", 4032 | "reference": "edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4" 4033 | }, 4034 | "dist": { 4035 | "type": "zip", 4036 | "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4", 4037 | "reference": "edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4", 4038 | "shasum": "" 4039 | }, 4040 | "require": { 4041 | "php": "^7.2", 4042 | "sebastian/object-reflector": "^1.1.1", 4043 | "sebastian/recursion-context": "^3.0" 4044 | }, 4045 | "require-dev": { 4046 | "ext-dom": "*", 4047 | "phpunit/phpunit": "^8.0" 4048 | }, 4049 | "suggest": { 4050 | "ext-uopz": "*" 4051 | }, 4052 | "type": "library", 4053 | "extra": { 4054 | "branch-alias": { 4055 | "dev-master": "3.0-dev" 4056 | } 4057 | }, 4058 | "autoload": { 4059 | "classmap": [ 4060 | "src/" 4061 | ] 4062 | }, 4063 | "notification-url": "https://packagist.org/downloads/", 4064 | "license": [ 4065 | "BSD-3-Clause" 4066 | ], 4067 | "authors": [ 4068 | { 4069 | "name": "Sebastian Bergmann", 4070 | "email": "sebastian@phpunit.de" 4071 | } 4072 | ], 4073 | "description": "Snapshotting of global state", 4074 | "homepage": "http://www.github.com/sebastianbergmann/global-state", 4075 | "keywords": [ 4076 | "global state" 4077 | ], 4078 | "time": "2019-02-01T05:30:01+00:00" 4079 | }, 4080 | { 4081 | "name": "sebastian/object-enumerator", 4082 | "version": "3.0.3", 4083 | "source": { 4084 | "type": "git", 4085 | "url": "https://github.com/sebastianbergmann/object-enumerator.git", 4086 | "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" 4087 | }, 4088 | "dist": { 4089 | "type": "zip", 4090 | "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", 4091 | "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", 4092 | "shasum": "" 4093 | }, 4094 | "require": { 4095 | "php": "^7.0", 4096 | "sebastian/object-reflector": "^1.1.1", 4097 | "sebastian/recursion-context": "^3.0" 4098 | }, 4099 | "require-dev": { 4100 | "phpunit/phpunit": "^6.0" 4101 | }, 4102 | "type": "library", 4103 | "extra": { 4104 | "branch-alias": { 4105 | "dev-master": "3.0.x-dev" 4106 | } 4107 | }, 4108 | "autoload": { 4109 | "classmap": [ 4110 | "src/" 4111 | ] 4112 | }, 4113 | "notification-url": "https://packagist.org/downloads/", 4114 | "license": [ 4115 | "BSD-3-Clause" 4116 | ], 4117 | "authors": [ 4118 | { 4119 | "name": "Sebastian Bergmann", 4120 | "email": "sebastian@phpunit.de" 4121 | } 4122 | ], 4123 | "description": "Traverses array structures and object graphs to enumerate all referenced objects", 4124 | "homepage": "https://github.com/sebastianbergmann/object-enumerator/", 4125 | "time": "2017-08-03T12:35:26+00:00" 4126 | }, 4127 | { 4128 | "name": "sebastian/object-reflector", 4129 | "version": "1.1.1", 4130 | "source": { 4131 | "type": "git", 4132 | "url": "https://github.com/sebastianbergmann/object-reflector.git", 4133 | "reference": "773f97c67f28de00d397be301821b06708fca0be" 4134 | }, 4135 | "dist": { 4136 | "type": "zip", 4137 | "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", 4138 | "reference": "773f97c67f28de00d397be301821b06708fca0be", 4139 | "shasum": "" 4140 | }, 4141 | "require": { 4142 | "php": "^7.0" 4143 | }, 4144 | "require-dev": { 4145 | "phpunit/phpunit": "^6.0" 4146 | }, 4147 | "type": "library", 4148 | "extra": { 4149 | "branch-alias": { 4150 | "dev-master": "1.1-dev" 4151 | } 4152 | }, 4153 | "autoload": { 4154 | "classmap": [ 4155 | "src/" 4156 | ] 4157 | }, 4158 | "notification-url": "https://packagist.org/downloads/", 4159 | "license": [ 4160 | "BSD-3-Clause" 4161 | ], 4162 | "authors": [ 4163 | { 4164 | "name": "Sebastian Bergmann", 4165 | "email": "sebastian@phpunit.de" 4166 | } 4167 | ], 4168 | "description": "Allows reflection of object attributes, including inherited and non-public ones", 4169 | "homepage": "https://github.com/sebastianbergmann/object-reflector/", 4170 | "time": "2017-03-29T09:07:27+00:00" 4171 | }, 4172 | { 4173 | "name": "sebastian/recursion-context", 4174 | "version": "3.0.0", 4175 | "source": { 4176 | "type": "git", 4177 | "url": "https://github.com/sebastianbergmann/recursion-context.git", 4178 | "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8" 4179 | }, 4180 | "dist": { 4181 | "type": "zip", 4182 | "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", 4183 | "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", 4184 | "shasum": "" 4185 | }, 4186 | "require": { 4187 | "php": "^7.0" 4188 | }, 4189 | "require-dev": { 4190 | "phpunit/phpunit": "^6.0" 4191 | }, 4192 | "type": "library", 4193 | "extra": { 4194 | "branch-alias": { 4195 | "dev-master": "3.0.x-dev" 4196 | } 4197 | }, 4198 | "autoload": { 4199 | "classmap": [ 4200 | "src/" 4201 | ] 4202 | }, 4203 | "notification-url": "https://packagist.org/downloads/", 4204 | "license": [ 4205 | "BSD-3-Clause" 4206 | ], 4207 | "authors": [ 4208 | { 4209 | "name": "Jeff Welch", 4210 | "email": "whatthejeff@gmail.com" 4211 | }, 4212 | { 4213 | "name": "Sebastian Bergmann", 4214 | "email": "sebastian@phpunit.de" 4215 | }, 4216 | { 4217 | "name": "Adam Harvey", 4218 | "email": "aharvey@php.net" 4219 | } 4220 | ], 4221 | "description": "Provides functionality to recursively process PHP variables", 4222 | "homepage": "http://www.github.com/sebastianbergmann/recursion-context", 4223 | "time": "2017-03-03T06:23:57+00:00" 4224 | }, 4225 | { 4226 | "name": "sebastian/resource-operations", 4227 | "version": "2.0.1", 4228 | "source": { 4229 | "type": "git", 4230 | "url": "https://github.com/sebastianbergmann/resource-operations.git", 4231 | "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9" 4232 | }, 4233 | "dist": { 4234 | "type": "zip", 4235 | "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/4d7a795d35b889bf80a0cc04e08d77cedfa917a9", 4236 | "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9", 4237 | "shasum": "" 4238 | }, 4239 | "require": { 4240 | "php": "^7.1" 4241 | }, 4242 | "type": "library", 4243 | "extra": { 4244 | "branch-alias": { 4245 | "dev-master": "2.0-dev" 4246 | } 4247 | }, 4248 | "autoload": { 4249 | "classmap": [ 4250 | "src/" 4251 | ] 4252 | }, 4253 | "notification-url": "https://packagist.org/downloads/", 4254 | "license": [ 4255 | "BSD-3-Clause" 4256 | ], 4257 | "authors": [ 4258 | { 4259 | "name": "Sebastian Bergmann", 4260 | "email": "sebastian@phpunit.de" 4261 | } 4262 | ], 4263 | "description": "Provides a list of PHP built-in functions that operate on resources", 4264 | "homepage": "https://www.github.com/sebastianbergmann/resource-operations", 4265 | "time": "2018-10-04T04:07:39+00:00" 4266 | }, 4267 | { 4268 | "name": "sebastian/type", 4269 | "version": "1.1.3", 4270 | "source": { 4271 | "type": "git", 4272 | "url": "https://github.com/sebastianbergmann/type.git", 4273 | "reference": "3aaaa15fa71d27650d62a948be022fe3b48541a3" 4274 | }, 4275 | "dist": { 4276 | "type": "zip", 4277 | "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/3aaaa15fa71d27650d62a948be022fe3b48541a3", 4278 | "reference": "3aaaa15fa71d27650d62a948be022fe3b48541a3", 4279 | "shasum": "" 4280 | }, 4281 | "require": { 4282 | "php": "^7.2" 4283 | }, 4284 | "require-dev": { 4285 | "phpunit/phpunit": "^8.2" 4286 | }, 4287 | "type": "library", 4288 | "extra": { 4289 | "branch-alias": { 4290 | "dev-master": "1.1-dev" 4291 | } 4292 | }, 4293 | "autoload": { 4294 | "classmap": [ 4295 | "src/" 4296 | ] 4297 | }, 4298 | "notification-url": "https://packagist.org/downloads/", 4299 | "license": [ 4300 | "BSD-3-Clause" 4301 | ], 4302 | "authors": [ 4303 | { 4304 | "name": "Sebastian Bergmann", 4305 | "email": "sebastian@phpunit.de", 4306 | "role": "lead" 4307 | } 4308 | ], 4309 | "description": "Collection of value objects that represent the types of the PHP type system", 4310 | "homepage": "https://github.com/sebastianbergmann/type", 4311 | "time": "2019-07-02T08:10:15+00:00" 4312 | }, 4313 | { 4314 | "name": "sebastian/version", 4315 | "version": "2.0.1", 4316 | "source": { 4317 | "type": "git", 4318 | "url": "https://github.com/sebastianbergmann/version.git", 4319 | "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" 4320 | }, 4321 | "dist": { 4322 | "type": "zip", 4323 | "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", 4324 | "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", 4325 | "shasum": "" 4326 | }, 4327 | "require": { 4328 | "php": ">=5.6" 4329 | }, 4330 | "type": "library", 4331 | "extra": { 4332 | "branch-alias": { 4333 | "dev-master": "2.0.x-dev" 4334 | } 4335 | }, 4336 | "autoload": { 4337 | "classmap": [ 4338 | "src/" 4339 | ] 4340 | }, 4341 | "notification-url": "https://packagist.org/downloads/", 4342 | "license": [ 4343 | "BSD-3-Clause" 4344 | ], 4345 | "authors": [ 4346 | { 4347 | "name": "Sebastian Bergmann", 4348 | "email": "sebastian@phpunit.de", 4349 | "role": "lead" 4350 | } 4351 | ], 4352 | "description": "Library that helps with managing the version number of Git-hosted PHP projects", 4353 | "homepage": "https://github.com/sebastianbergmann/version", 4354 | "time": "2016-10-03T07:35:21+00:00" 4355 | }, 4356 | { 4357 | "name": "theseer/tokenizer", 4358 | "version": "1.1.3", 4359 | "source": { 4360 | "type": "git", 4361 | "url": "https://github.com/theseer/tokenizer.git", 4362 | "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9" 4363 | }, 4364 | "dist": { 4365 | "type": "zip", 4366 | "url": "https://api.github.com/repos/theseer/tokenizer/zipball/11336f6f84e16a720dae9d8e6ed5019efa85a0f9", 4367 | "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9", 4368 | "shasum": "" 4369 | }, 4370 | "require": { 4371 | "ext-dom": "*", 4372 | "ext-tokenizer": "*", 4373 | "ext-xmlwriter": "*", 4374 | "php": "^7.0" 4375 | }, 4376 | "type": "library", 4377 | "autoload": { 4378 | "classmap": [ 4379 | "src/" 4380 | ] 4381 | }, 4382 | "notification-url": "https://packagist.org/downloads/", 4383 | "license": [ 4384 | "BSD-3-Clause" 4385 | ], 4386 | "authors": [ 4387 | { 4388 | "name": "Arne Blankerts", 4389 | "email": "arne@blankerts.de", 4390 | "role": "Developer" 4391 | } 4392 | ], 4393 | "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", 4394 | "time": "2019-06-13T22:48:21+00:00" 4395 | }, 4396 | { 4397 | "name": "webmozart/assert", 4398 | "version": "1.6.0", 4399 | "source": { 4400 | "type": "git", 4401 | "url": "https://github.com/webmozart/assert.git", 4402 | "reference": "573381c0a64f155a0d9a23f4b0c797194805b925" 4403 | }, 4404 | "dist": { 4405 | "type": "zip", 4406 | "url": "https://api.github.com/repos/webmozart/assert/zipball/573381c0a64f155a0d9a23f4b0c797194805b925", 4407 | "reference": "573381c0a64f155a0d9a23f4b0c797194805b925", 4408 | "shasum": "" 4409 | }, 4410 | "require": { 4411 | "php": "^5.3.3 || ^7.0", 4412 | "symfony/polyfill-ctype": "^1.8" 4413 | }, 4414 | "conflict": { 4415 | "vimeo/psalm": "<3.6.0" 4416 | }, 4417 | "require-dev": { 4418 | "phpunit/phpunit": "^4.8.36 || ^7.5.13" 4419 | }, 4420 | "type": "library", 4421 | "autoload": { 4422 | "psr-4": { 4423 | "Webmozart\\Assert\\": "src/" 4424 | } 4425 | }, 4426 | "notification-url": "https://packagist.org/downloads/", 4427 | "license": [ 4428 | "MIT" 4429 | ], 4430 | "authors": [ 4431 | { 4432 | "name": "Bernhard Schussek", 4433 | "email": "bschussek@gmail.com" 4434 | } 4435 | ], 4436 | "description": "Assertions to validate method input/output with nice error messages.", 4437 | "keywords": [ 4438 | "assert", 4439 | "check", 4440 | "validate" 4441 | ], 4442 | "time": "2019-11-24T13:36:37+00:00" 4443 | } 4444 | ], 4445 | "aliases": [], 4446 | "minimum-stability": "dev", 4447 | "stability-flags": [], 4448 | "prefer-stable": true, 4449 | "prefer-lowest": false, 4450 | "platform": [], 4451 | "platform-dev": [] 4452 | } 4453 | -------------------------------------------------------------------------------- /phpstan.neon: -------------------------------------------------------------------------------- 1 | parameters: 2 | level: 5 3 | paths: 4 | - src 5 | - tests 6 | ignoreErrors: 7 | # Ignore Laravel/Lumen incompatibilites 8 | - '#Cannot access offset [^\s]+ on Illuminate\\Contracts\\Foundation\\Application#' 9 | -------------------------------------------------------------------------------- /phpunit.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | ./tests 6 | 7 | 8 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | > :bangbang: This package is no longer maintained.
2 | > I recommend switching to https://github.com/blade-ui-kit/blade-icons 3 | 4 | # Font Awesome Blade directives for Laravel 5 | [![Latest Stable Version](https://poser.pugx.org/jerodev/laravel-font-awesome/v/stable?format=flat-square)](https://packagist.org/packages/jerodev/laravel-font-awesome) 6 | [![License](https://poser.pugx.org/jerodev/laravel-font-awesome/license?format=flat-square)](https://packagist.org/packages/jerodev/laravel-font-awesome) 7 | [![Travis (.com)](https://img.shields.io/travis/com/jerodev/laravel-font-awesome.svg?style=flat-square)](https://travis-ci.com/jerodev/laravel-font-awesome) 8 | [![StyleCI](https://github.styleci.io/repos/193088933/shield?branch=master)](https://github.styleci.io/repos/193088933) 9 | [![Scrutinizer code quality (GitHub/Bitbucket)](https://img.shields.io/scrutinizer/quality/g/jerodev/laravel-font-awesome/master.svg?style=flat-square)](https://scrutinizer-ci.com/g/jerodev/laravel-font-awesome/?branch=master) 10 | 11 | This package will render font awesome icons in your views on the server side. This removes the need to add extra JavaScript or webfont resources on the client side and in doing so reduces the size of your website significantly. 12 | 13 | This is achieved by replacing the icons with their svg counterpart before sending the response to the client. 14 | 15 | ``` html 16 | 17 | @fas('circle') 18 | 19 | 20 | 21 | 22 | 23 | ``` 24 | 25 | ## Requirements 26 | 27 | | Requirement | Version | 28 | | --- | --- | 29 | | PHP | >= 7.2 | 30 | | Laravel | 6.x | 31 | 32 | ### Laravel 5.x 33 | 34 | For Laravel 5.6 and up, use version v1.x of this package 35 | 36 | ## Installation 37 | 38 | Install the package using [Composer](https://getcomposer.org/). 39 | 40 | composer require jerodev/laravel-font-awesome 41 | 42 | ### Service Provider 43 | 44 | The package will be auto-discovered by Laravel. If you disabled auto-discovery, you should add the following provider to your `config/app.php` file. 45 | 46 | \Jerodev\LaraFontAwesome\FontAwesomeServiceProvider::class, 47 | 48 | ## Usage 49 | 50 | ### Middleware 51 | 52 | > :warning: Since version 2.0, the middleware is no longer automatically injected. You will have to add this to the routes where needed. 53 | 54 | This package includes a middleware, [`InjectStyleSheet`](src/Middleware/InjectStyleSheet.php), that injects a minimal stylesheet into your views on render. 55 | 56 | The middleware can be added to your routes [as documented by Laravel](https://laravel.com/docs/master/middleware#assigning-middleware-to-routes): 57 | 58 | ```php 59 | Route::middleware(InjectStyleSheet::class)->group(static function () { 60 | // Create routes here. 61 | }); 62 | ``` 63 | 64 | ### Views 65 | 66 | To use Font Awesome icons in your view there are a few new blade directives. 67 | 68 | ``` php 69 | // Let the package discover the best library for this icon. 70 | @fa('laravel') 71 | 72 | // Define the library that should be used. 73 | @far('circle') // Regular 74 | @fas('circle') // Solid 75 | @fab('laravel') // Brands 76 | ``` 77 | 78 | When using the `@fa()` directive. The package will scan the different Font Awesome libraries and use the first library where it finds the icon. 79 | 80 | The order in which the libraries are scanned is `regular`, `brands`, `solid`. But this can be modified in the [configuration](#configuration). 81 | 82 | ### Parameters 83 | 84 | The `@fa()` function can take three parameters of which only the first is required. 85 | 86 | | Parameter | Type | Description | 87 | | --- | --- | --- | 88 | | `name` | string | The name of the icon | 89 | | `css_class` | string | Extra css classes to be appended to the svg output | 90 | | `force_svg_href` | bool | Force the output to be an [svg href link](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/href#use) if possible. Can be useful in loops. 91 | 92 | ## Configuration 93 | 94 | The package contains a few configuration options that can be modified by first publishing the config file using the command below. This will create a `fontawesome.php` file in your `config` folder. 95 | 96 | php artisan vendor:publish --provider="Jerodev\LaraFontAwesome\FontAwesomeServiceProvider" 97 | 98 | | Key | Type | Default value | Description | 99 | | --- | --- | --- | --- | 100 | | `libraries` | string[] | `['regular', 'brands', 'solid']` | The icon libraries that will be available. This is also the order in which the libraries will be searched for icons. | 101 | | `svg_href` | bool| `true` | Use [svg href links](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/href#use) for consecutive icons. | 102 | -------------------------------------------------------------------------------- /src/BladeRenderer.php: -------------------------------------------------------------------------------- 1 | isStatic()) { 25 | return resolve(IconRenderer::class)->renderSvg( 26 | $icon->getName(true), 27 | $icon->getCssClasses(true), 28 | $icon->getLibrary(true) 29 | ); 30 | } 31 | 32 | return \implode([ 33 | 'renderSvg({$icon->getName()}, {$icon->getCssClasses()}, {$icon->getLibrary()}); ?>", 36 | ]); 37 | } 38 | 39 | /** 40 | * Parse a blade expression to an icon object. 41 | * 42 | * @param string $expression 43 | * @param string|null $library 44 | * 45 | * @return Icon 46 | */ 47 | private static function parseExpression(string $expression, ?string $library = null): Icon 48 | { 49 | $part = ''; 50 | $parts = []; 51 | $in_string = null; 52 | 53 | for ($i = 0; $i < \strlen($expression); $i++) { 54 | $char = $expression[$i]; 55 | 56 | if ($char === ',' && \is_null($in_string)) { 57 | $parts[] = \trim($part); 58 | $part = ''; 59 | continue; 60 | } 61 | 62 | if (\in_array($char, ['\'', '"'])) { 63 | if ($in_string === $char) { 64 | $in_string = null; 65 | } else { 66 | $in_string = $char; 67 | } 68 | } 69 | 70 | $part .= $char; 71 | } 72 | 73 | $parts[] = \trim($part); 74 | 75 | $icon = new Icon($parts[0], $library ? "'{$library}'" : 'null'); 76 | switch (\count($parts)) { 77 | case 3: 78 | $icon->setForceSvgHref(\filter_var($parts[2], \FILTER_VALIDATE_BOOLEAN)); 79 | // Fallthrough 80 | 81 | case 2: 82 | $icon->setCssClasses($parts[1]); 83 | } 84 | 85 | return $icon; 86 | } 87 | } 88 | -------------------------------------------------------------------------------- /src/FontAwesomeServiceProvider.php: -------------------------------------------------------------------------------- 1 | publishes([ 12 | __DIR__ . '/config/fontawesome.php' => \config_path('fontawesome.php'), 13 | ]); 14 | $this->mergeConfigFrom( 15 | __DIR__ . '/config/fontawesome.php', 'fontawesome' 16 | ); 17 | 18 | $this->registerBladeDirectives(); 19 | $this->registerIconRenderer(); 20 | } 21 | 22 | private function registerBladeDirectives() 23 | { 24 | $this->app['blade.compiler']->directive('fa', static function ($expression) { 25 | return BladeRenderer::renderGeneric($expression); 26 | }); 27 | 28 | foreach (\config('fontawesome.libraries') as $library) { 29 | $this->app['blade.compiler']->directive('fa' . $library[0], static function ($expression) use ($library) { 30 | return BladeRenderer::renderGeneric($expression, $library); 31 | }); 32 | } 33 | } 34 | 35 | private function registerIconRenderer() 36 | { 37 | $this->app->singleton(IconRenderer::class); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/IconRenderer.php: -------------------------------------------------------------------------------- 1 | svgParser = $svgParser; 18 | } 19 | 20 | /** 21 | * Render a Font Awesome icon as an svg. 22 | * 23 | * @param string $icon The name of the icon. 24 | * @param string|null $css_classes Extra css classes to add to the svg. 25 | * @param string|null $library The icon library to use. 26 | * 27 | * @return string|null 28 | */ 29 | public function renderSvg(string $icon, ?string $css_classes = null, ?string $library = null): ?string 30 | { 31 | $icon = $this->normalizeIconName($icon); 32 | 33 | $icon_id = 'fa' . ($library ? $library[0] : null) . "-{$icon}"; 34 | if (\config('fontawesome.svg_href') && \array_key_exists($icon_id, $this->rendered_icons)) { 35 | $svg = new Svg($icon_id, $css_classes); 36 | $svg->view_box = $this->rendered_icons[$icon_id]; 37 | 38 | return $svg->renderAsHref(); 39 | } 40 | 41 | $svg_str = $this->loadSvg($icon, $library); 42 | if ($svg_str !== null) { 43 | $svg = $this->svgParser->parseXml($icon_id, $svg_str); 44 | $svg->css_classes = $css_classes; 45 | 46 | $this->rendered_icons[$icon_id] = $svg->view_box; 47 | 48 | return $svg->render(); 49 | } 50 | 51 | return null; 52 | } 53 | 54 | /** 55 | * Find the svg file for this icon and return its content. 56 | * 57 | * @param string $icon The name of the icon. 58 | * @param string|null $library The icon library to use. 59 | * 60 | * @return string|null 61 | */ 62 | private function loadSvg(string $icon, ?string $library = null): ?string 63 | { 64 | $svg = null; 65 | $path_str = \config('fontawesome.icon_path') . "%s/$icon.svg"; 66 | 67 | foreach (\config('fontawesome.libraries') as $folder) { 68 | if ($library !== null && $folder !== $library) { 69 | continue; 70 | } 71 | 72 | $path = \sprintf($path_str, $folder); 73 | if (\file_exists($path)) { 74 | $svg = \trim(\file_get_contents($path)); 75 | break; 76 | } 77 | } 78 | 79 | return $svg; 80 | } 81 | 82 | /** 83 | * Format an icon name to the one used in the Font Awesome repository. 84 | * 85 | * @param string $icon The icon name to normalize. 86 | * 87 | * @return string 88 | */ 89 | public function normalizeIconName(string $icon): string 90 | { 91 | $icon = \trim($icon); 92 | 93 | // Remove library specification prefix from the string. 94 | if (\substr($icon, 0, 2) === 'fa' && ($spos = \strpos($icon, ' ')) !== false) { 95 | $icon = \substr($icon, $spos + 1); 96 | } 97 | 98 | // Remove 'fa-' from the start of the string. 99 | if (\substr($icon, 0, 3) === 'fa-') { 100 | $icon = \substr($icon, 3); 101 | } 102 | 103 | return \strtolower($icon); 104 | } 105 | } 106 | -------------------------------------------------------------------------------- /src/Middleware/InjectStyleSheet.php: -------------------------------------------------------------------------------- 1 | headers->has('Content-Type') && \strpos($response->headers->get('Content-Type'), 'html') === false) 19 | || $request->getRequestFormat() !== 'html' 20 | || $response->getContent() === false 21 | || $request->isXmlHttpRequest() 22 | ) { 23 | return $response; 24 | } 25 | 26 | return $this->injectStyleSheet($response); 27 | } 28 | 29 | private function injectStyleSheet(SymfonyBaseResponse $response) 30 | { 31 | $content = $response->getContent(); 32 | $content = \str_replace('', '', $content); 33 | $response->setContent($content); 34 | 35 | return $response; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/Models/Icon.php: -------------------------------------------------------------------------------- 1 | name = $name; 22 | $this->library = $library; 23 | $this->cssClasses = 'null'; 24 | $this->forceSvgHref = false; 25 | } 26 | 27 | /** 28 | * Indicates whether the icon contains any variables or expressions. 29 | * 30 | * @return bool 31 | */ 32 | public function isStatic(): bool 33 | { 34 | if ($this->forceSvgHref) { 35 | return false; 36 | } 37 | 38 | $values = [ 39 | $this->name, 40 | $this->library, 41 | $this->cssClasses, 42 | ]; 43 | foreach ($values as $value) { 44 | if ($value[0] === '$') { 45 | return false; 46 | } 47 | 48 | $in_double_quote_string = false; 49 | $in_string = false; 50 | $last_char = null; 51 | for ($i = 0; $i < \strlen($value); $i++) { 52 | $char = $value[$i]; 53 | 54 | switch ($char) { 55 | case '"': 56 | if (!$in_string) { 57 | $in_double_quote_string = !$in_double_quote_string; 58 | } 59 | break; 60 | 61 | case '\'': 62 | if (!$in_double_quote_string) { 63 | $in_string = !$in_string; 64 | } 65 | break; 66 | 67 | case '$': 68 | if (!$in_string && !$in_double_quote_string) { 69 | return false; 70 | } 71 | if ($in_double_quote_string && $last_char !== '\\') { 72 | return false; 73 | } 74 | break; 75 | } 76 | 77 | $last_char = $char; 78 | } 79 | } 80 | 81 | return true; 82 | } 83 | 84 | public function setForceSvgHref(bool $force = true): void 85 | { 86 | $this->forceSvgHref = $force; 87 | } 88 | 89 | public function setCssClasses(string $cssClasses): void 90 | { 91 | if ($cssClasses) { 92 | $this->cssClasses = $cssClasses; 93 | } 94 | } 95 | 96 | public function getName(bool $clean = false): ?string 97 | { 98 | if ($clean) { 99 | return $this->cleanValue($this->name); 100 | } 101 | 102 | return $this->name; 103 | } 104 | 105 | public function getLibrary(bool $clean = false): ?string 106 | { 107 | if ($clean) { 108 | return $this->cleanValue($this->library); 109 | } 110 | 111 | return $this->library; 112 | } 113 | 114 | public function getCssClasses(bool $clean = false): ?string 115 | { 116 | if ($clean) { 117 | return $this->cleanValue($this->cssClasses); 118 | } 119 | 120 | return $this->cssClasses; 121 | } 122 | 123 | private function cleanValue(string $value): ?string 124 | { 125 | $value = \trim($value, '\'"'); 126 | 127 | if ($value === 'null' || \strlen($value) === 0) { 128 | return null; 129 | } 130 | 131 | return $value; 132 | } 133 | } 134 | -------------------------------------------------------------------------------- /src/Models/Svg.php: -------------------------------------------------------------------------------- 1 | icon_id = $icon_id; 22 | $this->css_classes = $css_classes; 23 | 24 | $this->view_box = null; 25 | } 26 | 27 | public function render(): string 28 | { 29 | $svg_viewBox = ''; 30 | $symbol_start = ''; 31 | $symbol_end = ''; 32 | if (\config('fontawesome.svg_href')) { 33 | $symbol_start = "icon_id}\" viewBox=\"" . \implode(' ', $this->view_box) . '">'; 34 | $symbol_end = "icon_id}\"/>"; 35 | } else { 36 | $svg_viewBox = ' viewBox="' . \implode(' ', $this->view_box) . '"'; 37 | } 38 | 39 | return "renderCssClasses()}\"{$svg_viewBox}>{$symbol_start}path}\" />{$symbol_end}"; 40 | } 41 | 42 | public function renderAsHref(): string 43 | { 44 | return "renderCssClasses()}\">icon_id}\"/>"; 45 | } 46 | 47 | private function renderCssClasses(): string 48 | { 49 | $classes = \array_filter(\explode(' ', $this->css_classes)); 50 | $classes[] = 'svg-inline--fa'; 51 | $classes[] = 'fa-w-' . ($this->view_box[2] / $this->view_box[3] * 16); 52 | 53 | return \implode(' ', \array_unique($classes)); 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /src/SvgParser.php: -------------------------------------------------------------------------------- 1 | view_box = $this->parseViewBox( 14 | $this->getAttribute($xml, 'viewBox') 15 | ); 16 | $svg->path = $this->getAttribute($xml, 'd'); 17 | 18 | return $svg; 19 | } 20 | 21 | private function parseViewBox(string $str): array 22 | { 23 | $view_box = \array_map(static function (string $part) { 24 | return \intval($part); 25 | }, \explode(' ', $str)); 26 | 27 | if (\count($view_box) !== 4) { 28 | throw new Exception("ViewBox should contain 4 numeric values split by spaces. Got \"{$str}\""); 29 | } 30 | 31 | return $view_box; 32 | } 33 | 34 | private function getAttribute(string $xml, string $attribute): ?string 35 | { 36 | $start = \strpos($xml, "{$attribute}=\"") + \strlen($attribute) + 2; 37 | if ($start === -1) { 38 | return null; 39 | } 40 | 41 | $end = \strpos($xml, '"', $start); 42 | 43 | return \substr($xml, $start, $end - $start); 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/config/fontawesome.php: -------------------------------------------------------------------------------- 1 | \base_path('/vendor/fortawesome/font-awesome/svgs/'), 16 | 17 | /* 18 | |-------------------------------------------------------------------------- 19 | | Font Awesome Libraries 20 | |-------------------------------------------------------------------------- 21 | | 22 | | These are the font awesome libraries that will be available. 23 | | The order defined here is the order the libraries will be explored in 24 | | when using the @fa() directive. 25 | | 26 | */ 27 | 28 | 'libraries' => [ 29 | 'regular', 30 | 'brands', 31 | 'solid', 32 | ], 33 | 34 | /* 35 | |-------------------------------------------------------------------------- 36 | | Use svg href attribute 37 | |-------------------------------------------------------------------------- 38 | | 39 | | The href attribute can be used to link to an already existing svg in the 40 | | DOM, this way the svg code only needs to be loaded once if used multiple 41 | | times. 42 | | 43 | | Very old browser might not support this feature: 44 | | https://caniuse.com/#feat=mdn-svg_elements_use_href 45 | | 46 | */ 47 | 48 | 'svg_href' => true, 49 | 50 | ]; 51 | -------------------------------------------------------------------------------- /tests/BladeRendererTest.php: -------------------------------------------------------------------------------- 1 | assertEquals( 14 | '', 15 | $render 16 | ); 17 | } 18 | 19 | public function testStaticFabRenderWithoutClass(): void 20 | { 21 | $render = BladeRenderer::renderGeneric('\'laravel\'', 'brands'); 22 | 23 | $this->assertEquals( 24 | '', 25 | $render 26 | ); 27 | } 28 | 29 | public function testFabRenderWithVariable(): void 30 | { 31 | $render = BladeRenderer::renderGeneric('$expression', 'brands'); 32 | 33 | $this->assertStringEndsWith('($expression, null, \'brands\'); ?>', $render); 34 | } 35 | 36 | public function testFabRenderWithVariableAndClass(): void 37 | { 38 | $render = BladeRenderer::renderGeneric('$expression, \'spin\'', 'brands'); 39 | 40 | $this->assertStringEndsWith('($expression, \'spin\', \'brands\'); ?>', $render); 41 | } 42 | 43 | public function testRenderWithVariableClass(): void 44 | { 45 | $render = BladeRenderer::renderGeneric('\'laravel\', $class', 'brands'); 46 | 47 | $this->assertStringEndsWith('(\'laravel\', $class, \'brands\'); ?>', $render); 48 | } 49 | 50 | public function testStaticFarRender(): void 51 | { 52 | $render = BladeRenderer::renderGeneric('\'circle\'', 'regular'); 53 | 54 | $this->assertEquals( 55 | '', 56 | $render 57 | ); 58 | } 59 | 60 | public function testStaticFasRender(): void 61 | { 62 | $render = BladeRenderer::renderGeneric('\'circle\'', 'solid'); 63 | 64 | $this->assertEquals( 65 | '', 66 | $render 67 | ); 68 | } 69 | 70 | /** 71 | * @dataProvider variableRenderingDataProvider 72 | * 73 | * @param string[] $input 74 | * @param string $expected 75 | */ 76 | public function testVariableRendering(array $input, string $expected): void 77 | { 78 | $render = BladeRenderer::renderGeneric(...$input); 79 | 80 | $this->assertStringEndsWith("($expected); ?>", $render); 81 | } 82 | 83 | public function variableRenderingDataProvider() 84 | { 85 | yield [ 86 | [ 87 | '$var, \'foo,bar\'', 88 | 'brands', 89 | ], 90 | '$var, \'foo,bar\', \'brands\'', 91 | ]; 92 | 93 | yield [ 94 | ['"fa-$var"'], 95 | '"fa-$var", null, null', 96 | ]; 97 | 98 | yield [ 99 | ['$laravel'], 100 | '$laravel, null, null', 101 | ]; 102 | 103 | yield [ 104 | ['$laravel, null, true'], 105 | '$laravel, null, null', 106 | ]; 107 | } 108 | } 109 | -------------------------------------------------------------------------------- /tests/IconRendererTest.php: -------------------------------------------------------------------------------- 1 | iconRenderer = resolve(IconRenderer::class); 21 | $this->svgParser = resolve(SvgParser::class); 22 | } 23 | 24 | public function testConsecutiveIconRendering() 25 | { 26 | $icon_1 = $this->iconRenderer->renderSvg('laravel'); 27 | $icon_2 = $this->iconRenderer->renderSvg('laravel'); 28 | 29 | $this->assertStringContainsString('assertStringNotContainsString('app['config']->set('fontawesome.svg_href', false); 36 | 37 | $icon_1 = $this->iconRenderer->renderSvg('laravel'); 38 | $icon_2 = $this->iconRenderer->renderSvg('laravel'); 39 | 40 | $this->assertEquals($icon_1, $icon_2); 41 | } 42 | 43 | public function testRenderSvgWithClass() 44 | { 45 | $expected = ''; 46 | $circle = $this->iconRenderer->renderSvg('circle', 'foo-bar'); 47 | 48 | $this->assertEquals($expected, $circle); 49 | } 50 | 51 | public function testRenderWithLibrary() 52 | { 53 | $expected = ''; 54 | $circle = $this->iconRenderer->renderSvg('circle', null, 'solid'); 55 | 56 | $this->assertEquals($expected, $circle); 57 | } 58 | 59 | /** 60 | * @dataProvider svgTestCaseProvider 61 | */ 62 | public function testResolveSvg(string $icon, ?string $result) 63 | { 64 | $this->assertEquals( 65 | $result ? $this->svgParser->parseXml('fa-' . $this->iconRenderer->normalizeIconName($icon), $result)->render() : null, 66 | $this->iconRenderer->renderSvg($icon) 67 | ); 68 | } 69 | 70 | public static function svgTestCaseProvider(): array 71 | { 72 | return [ 73 | ['building', \trim(\file_get_contents(__DIR__ . '/../vendor/fortawesome/font-awesome/svgs/regular/building.svg'))], 74 | ['fa-laravel', \trim(\file_get_contents(__DIR__ . '/../vendor/fortawesome/font-awesome/svgs/brands/laravel.svg'))], 75 | ['fa fa-circle', \trim(\file_get_contents(__DIR__ . '/../vendor/fortawesome/font-awesome/svgs/regular/circle.svg'))], 76 | ['far fa-square', \trim(\file_get_contents(__DIR__ . '/../vendor/fortawesome/font-awesome/svgs/regular/square.svg'))], 77 | ['foo-bar', null], 78 | ]; 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /tests/MiddlewareTest.php: -------------------------------------------------------------------------------- 1 | middleware = new InjectStyleSheet(); 21 | } 22 | 23 | public function testDontInjectOnAjaxRequest(): void 24 | { 25 | $request = new Request(); 26 | $request->headers->add(['X-Requested-With' => 'XMLHttpRequest']); 27 | $next = static function () { 28 | return new Response(''); 29 | }; 30 | 31 | $response = $this->middleware->handle($request, $next); 32 | 33 | $this->assertStylesheetInjected($response, false); 34 | } 35 | 36 | public function testDontInjectOnRedirect(): void 37 | { 38 | $request = new Request(); 39 | $next = static function () { 40 | return new RedirectResponse('https://www.deviaene.eu/'); 41 | }; 42 | 43 | $response = $this->middleware->handle($request, $next); 44 | 45 | $this->assertStylesheetInjected($response, false); 46 | } 47 | 48 | public function testInjectsStylesheetInHtmlResponse(): void 49 | { 50 | $request = new Request(); 51 | $next = static function () { 52 | return new Response(''); 53 | }; 54 | 55 | $response = $this->middleware->handle($request, $next); 56 | 57 | $this->assertStylesheetInjected($response); 58 | } 59 | 60 | private function assertStylesheetInjected(SymfonyBaseResponse $response, bool $injected = true): void 61 | { 62 | if ($injected) { 63 | $this->assertStringContainsString( 64 | '@fortawesome', 65 | $response->getContent() 66 | ); 67 | } else { 68 | $this->assertStringNotContainsString( 69 | '@fortawesome', 70 | $response->getContent() 71 | ); 72 | } 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /tests/TestCase.php: -------------------------------------------------------------------------------- 1 | set('fontawesome.icon_path', __DIR__ . '/../vendor/fortawesome/font-awesome/svgs/'); 14 | 15 | // Tests assume svg_href is on by default 16 | $app['config']->set('fontawesome.svg_href', true); 17 | } 18 | 19 | protected function getPackageProviders($app) 20 | { 21 | return [ 22 | FontAwesomeServiceProvider::class, 23 | ]; 24 | } 25 | } 26 | --------------------------------------------------------------------------------