├── .gitignore ├── LICENSE ├── README.md ├── TELEGRAM_BOT_INSTRUCTIONS.md ├── composer.json ├── composer.lock ├── config └── telegram-logger.php └── src ├── Services └── TelegramService.php ├── TelegramLogger.php ├── TelegramLoggerHandler.php └── TelegramLoggerServiceProvider.php /.gitignore: -------------------------------------------------------------------------------- 1 | composer.phar 2 | /vendor/ -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Rafael Laurindo 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. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Laravel Telegram Logging 2 | 3 | Send Laravel logs to a Telegram chat via Telegram Bot. 4 | 5 | [![Total Downloads](https://poser.pugx.org/rafaellaurindo/laravel-telegram-logging/downloads)](//packagist.org/packages/rafaellaurindo/laravel-telegram-logging) 6 | [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=LUAC5W7GF2BVW&source=url) 7 | [![license](https://img.shields.io/github/license/rafaellaurindo/laravel-telegram-logging.svg)](https://github.com/rafaellaurindo/laravel-telegram-logging/blob/master/LICENSE) 8 | 9 | ## Installation 10 | 11 | To install the package you can use [Composer](https://getcomposer.org/). 12 | 13 | ```bash 14 | composer require rafaellaurindo/laravel-telegram-logging 15 | ``` 16 | 17 | Publish the package configuration file using the following artisan command: 18 | 19 | ```bash 20 | php artisan vendor:publish --provider "RLaurindo\TelegramLogger\TelegramLoggerServiceProvider" 21 | ``` 22 | 23 | To send messages to your Telegram Chat, you first need a Telegram Bot. If you don't have one, see in this [Telegram Instructions](TELEGRAM_BOT_INSTRUCTIONS.md) how to create one. 24 | 25 | Set your Bot Token and chat_id (user, channel or group that will receive log messages) and set as environment variable. 26 | 27 | Add in your **.env**, the follows variables: 28 | 29 | ```bash 30 | TELEGRAM_BOT_TOKEN=bot_token 31 | TELEGRAM_CHAT_ID=chat_id 32 | ``` 33 | 34 | ## Usage 35 | 36 | Add the new Log Channel in **config/logging.php**: 37 | 38 | ```php 39 | 'telegram' => [ 40 | 'driver' => 'custom', 41 | 'via' => RLaurindo\TelegramLogger\TelegramLogger::class, 42 | 'level' => 'debug', 43 | ] 44 | ``` 45 | 46 | If you use the **stack channel** as default logger, you can just the telegram channel to your stack: 47 | 48 | ```php 49 | 'stack' => [ 50 | 'driver' => 'stack', 51 | 'channels' => ['single', 'telegram'], 52 | ] 53 | ``` 54 | 55 | Or you can simply change the default logging channel in the .env file. 56 | 57 | ```bash 58 | LOG_CHANNEL=telegram 59 | ``` 60 | 61 | Great! Your Laravel project can now send logs to your Telegram chat. 62 | 63 | You can use **Laravel Log Facade** to send logs to your chat: 64 | 65 | ```php 66 | // Use the Laravel Log Facade 67 | use Illuminate\Support\Facades\Log; 68 | ... 69 | 70 | // All Laravel log leves are avaiable 71 | Log::channel('telegram')->emergency($message); 72 | Log::channel('telegram')->alert($message); 73 | Log::channel('telegram')->critical($message); 74 | Log::channel('telegram')->error($message); 75 | Log::channel('telegram')->warning($message); 76 | Log::channel('telegram')->notice($message); 77 | Log::channel('telegram')->info($message); 78 | Log::channel('telegram')->debug($message); 79 | ``` 80 | 81 | ## Telegram Instructions 82 | 83 | To use this package, you need to create a Telegram bot to send messages to your chat. 84 | 85 | If you need help, check out these [Telegram Instructions](TELEGRAM_BOT_INSTRUCTIONS.md) that I created for you. 86 | 87 | ## Contributing 88 | 89 | Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change. 90 | 91 | Please make sure to update tests as appropriate. 92 | 93 | ## Donations are welcome 94 | 95 | If this project help you reduce time to develop, you can give me a cup of coffee :) 96 | 97 | Donate with Paypal: 98 | 99 | [![paypal](https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=LUAC5W7GF2BVW&source=url) 100 | 101 | ## License 102 | 103 | [MIT](https://github.com/rafaellaurindo/laravel-telegram-logging/blob/master/LICENSE) 104 | -------------------------------------------------------------------------------- /TELEGRAM_BOT_INSTRUCTIONS.md: -------------------------------------------------------------------------------- 1 | # Telegram Instructions 2 | 3 | Instructions for creating a new Telegram Bot and getting chat_id from a particular group or chat. 4 | 5 | ## Creating a Bot 6 | 7 | 1. Go to [@BotFather](https://t.me/botfather) on Telegram. 8 | 9 | 2. Send `/newbot`, to start creating a new Bot. 10 | 11 | ![message](https://i.imgur.com/M2KEEp2.png) 12 | 13 | 3. Set the bot's username and username. 14 | 15 | ![defines-a-bot-name](https://i.imgur.com/ixpfVfQ.png) 16 | 17 | 4. Now you need to allow your Bot to send direct messages, so send `/setjoingroups` to @BotFather, select your Bot and click Enable: 18 | 19 | ![set-join-group](https://i.imgur.com/TCk4WkC.png) 20 | 21 | 5. Get the Bot token and add it to your .env file. 22 | 23 | ![get-bot-token](https://i.imgur.com/EwrhvmU.png) 24 | 25 | Bot Token in .env: 26 | 27 | ![token-in-env-file](https://i.imgur.com/SniTiQt.png) 28 | 29 | ## Getting a Telegram Chat ID 30 | 31 | - If you want to send messages to a group: 32 | 33 | 1. Add your Bot to a Telegram group. 34 | 2. Send any message from another user to this group. 35 | 36 | - If you want send direct messages to a user: 37 | 38 | 1. Search for your bot name, and select the chat. 39 | 2. Send `/start` to your Bot. 40 | 41 | 3. Visit the following link to get updates about your bot and get chat_id: 42 | 43 | https://api.telegram.org/botXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/getUpdates 44 | 45 | Replace all **X** in the URL with your **Bot Token**. 46 | 47 | 4. Search for the chat that you want to send messages, and get the **chat->id**: 48 | 49 | ![get-a-chat-id](https://i.imgur.com/EJIVfWc.png) 50 | 51 | 5. Add it to your .env file: 52 | 53 | ![env](https://i.imgur.com/aqRdV1S.png) 54 | 55 | --- 56 | 57 | Hope this helps you! 58 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "rafaellaurindo/laravel-telegram-logging", 3 | "description": "Send Laravel logs to a Telegram chat via Telegram Bot.", 4 | "homepage": "https://github.com/rafaellaurindo/laravel-telegram-logging", 5 | "require": { 6 | "php": ">=7.2", 7 | "laravel/framework": "7.0 || ^8.0 || ^9.0 || ^10.0", 8 | "monolog/monolog": "2.*" 9 | }, 10 | "license": "MIT", 11 | "authors": [ 12 | { 13 | "name": "Rafael Laurindo", 14 | "email": "rafaelfilholm@gmail.com", 15 | "homepage": "https://rafaellaurindo.com.br" 16 | } 17 | ], 18 | "minimum-stability": "dev", 19 | "prefer-stable": true, 20 | "autoload": { 21 | "psr-4": { 22 | "RLaurindo\\TelegramLogger\\": "src/" 23 | } 24 | }, 25 | "extra": { 26 | "laravel": { 27 | "providers": [ 28 | "RLaurindo\\TelegramLogger\\TelegramLoggerServiceProvider" 29 | ] 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /composer.lock: -------------------------------------------------------------------------------- 1 | { 2 | "_readme": [ 3 | "This file locks the dependencies of your project to a known state", 4 | "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", 5 | "This file is @generated automatically" 6 | ], 7 | "content-hash": "18068d66a71f445235edee9b5522804c", 8 | "packages": [ 9 | { 10 | "name": "brick/math", 11 | "version": "0.11.0", 12 | "source": { 13 | "type": "git", 14 | "url": "https://github.com/brick/math.git", 15 | "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478" 16 | }, 17 | "dist": { 18 | "type": "zip", 19 | "url": "https://api.github.com/repos/brick/math/zipball/0ad82ce168c82ba30d1c01ec86116ab52f589478", 20 | "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478", 21 | "shasum": "" 22 | }, 23 | "require": { 24 | "php": "^8.0" 25 | }, 26 | "require-dev": { 27 | "php-coveralls/php-coveralls": "^2.2", 28 | "phpunit/phpunit": "^9.0", 29 | "vimeo/psalm": "5.0.0" 30 | }, 31 | "type": "library", 32 | "autoload": { 33 | "psr-4": { 34 | "Brick\\Math\\": "src/" 35 | } 36 | }, 37 | "notification-url": "https://packagist.org/downloads/", 38 | "license": [ 39 | "MIT" 40 | ], 41 | "description": "Arbitrary-precision arithmetic library", 42 | "keywords": [ 43 | "Arbitrary-precision", 44 | "BigInteger", 45 | "BigRational", 46 | "arithmetic", 47 | "bigdecimal", 48 | "bignum", 49 | "brick", 50 | "math" 51 | ], 52 | "support": { 53 | "issues": "https://github.com/brick/math/issues", 54 | "source": "https://github.com/brick/math/tree/0.11.0" 55 | }, 56 | "funding": [ 57 | { 58 | "url": "https://github.com/BenMorel", 59 | "type": "github" 60 | } 61 | ], 62 | "time": "2023-01-15T23:15:59+00:00" 63 | }, 64 | { 65 | "name": "dflydev/dot-access-data", 66 | "version": "v3.0.2", 67 | "source": { 68 | "type": "git", 69 | "url": "https://github.com/dflydev/dflydev-dot-access-data.git", 70 | "reference": "f41715465d65213d644d3141a6a93081be5d3549" 71 | }, 72 | "dist": { 73 | "type": "zip", 74 | "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/f41715465d65213d644d3141a6a93081be5d3549", 75 | "reference": "f41715465d65213d644d3141a6a93081be5d3549", 76 | "shasum": "" 77 | }, 78 | "require": { 79 | "php": "^7.1 || ^8.0" 80 | }, 81 | "require-dev": { 82 | "phpstan/phpstan": "^0.12.42", 83 | "phpunit/phpunit": "^7.5 || ^8.5 || ^9.3", 84 | "scrutinizer/ocular": "1.6.0", 85 | "squizlabs/php_codesniffer": "^3.5", 86 | "vimeo/psalm": "^4.0.0" 87 | }, 88 | "type": "library", 89 | "extra": { 90 | "branch-alias": { 91 | "dev-main": "3.x-dev" 92 | } 93 | }, 94 | "autoload": { 95 | "psr-4": { 96 | "Dflydev\\DotAccessData\\": "src/" 97 | } 98 | }, 99 | "notification-url": "https://packagist.org/downloads/", 100 | "license": [ 101 | "MIT" 102 | ], 103 | "authors": [ 104 | { 105 | "name": "Dragonfly Development Inc.", 106 | "email": "info@dflydev.com", 107 | "homepage": "http://dflydev.com" 108 | }, 109 | { 110 | "name": "Beau Simensen", 111 | "email": "beau@dflydev.com", 112 | "homepage": "http://beausimensen.com" 113 | }, 114 | { 115 | "name": "Carlos Frutos", 116 | "email": "carlos@kiwing.it", 117 | "homepage": "https://github.com/cfrutos" 118 | }, 119 | { 120 | "name": "Colin O'Dell", 121 | "email": "colinodell@gmail.com", 122 | "homepage": "https://www.colinodell.com" 123 | } 124 | ], 125 | "description": "Given a deep data structure, access data by dot notation.", 126 | "homepage": "https://github.com/dflydev/dflydev-dot-access-data", 127 | "keywords": [ 128 | "access", 129 | "data", 130 | "dot", 131 | "notation" 132 | ], 133 | "support": { 134 | "issues": "https://github.com/dflydev/dflydev-dot-access-data/issues", 135 | "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.2" 136 | }, 137 | "time": "2022-10-27T11:44:00+00:00" 138 | }, 139 | { 140 | "name": "doctrine/inflector", 141 | "version": "2.0.6", 142 | "source": { 143 | "type": "git", 144 | "url": "https://github.com/doctrine/inflector.git", 145 | "reference": "d9d313a36c872fd6ee06d9a6cbcf713eaa40f024" 146 | }, 147 | "dist": { 148 | "type": "zip", 149 | "url": "https://api.github.com/repos/doctrine/inflector/zipball/d9d313a36c872fd6ee06d9a6cbcf713eaa40f024", 150 | "reference": "d9d313a36c872fd6ee06d9a6cbcf713eaa40f024", 151 | "shasum": "" 152 | }, 153 | "require": { 154 | "php": "^7.2 || ^8.0" 155 | }, 156 | "require-dev": { 157 | "doctrine/coding-standard": "^10", 158 | "phpstan/phpstan": "^1.8", 159 | "phpstan/phpstan-phpunit": "^1.1", 160 | "phpstan/phpstan-strict-rules": "^1.3", 161 | "phpunit/phpunit": "^8.5 || ^9.5", 162 | "vimeo/psalm": "^4.25" 163 | }, 164 | "type": "library", 165 | "autoload": { 166 | "psr-4": { 167 | "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" 168 | } 169 | }, 170 | "notification-url": "https://packagist.org/downloads/", 171 | "license": [ 172 | "MIT" 173 | ], 174 | "authors": [ 175 | { 176 | "name": "Guilherme Blanco", 177 | "email": "guilhermeblanco@gmail.com" 178 | }, 179 | { 180 | "name": "Roman Borschel", 181 | "email": "roman@code-factory.org" 182 | }, 183 | { 184 | "name": "Benjamin Eberlei", 185 | "email": "kontakt@beberlei.de" 186 | }, 187 | { 188 | "name": "Jonathan Wage", 189 | "email": "jonwage@gmail.com" 190 | }, 191 | { 192 | "name": "Johannes Schmitt", 193 | "email": "schmittjoh@gmail.com" 194 | } 195 | ], 196 | "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.", 197 | "homepage": "https://www.doctrine-project.org/projects/inflector.html", 198 | "keywords": [ 199 | "inflection", 200 | "inflector", 201 | "lowercase", 202 | "manipulation", 203 | "php", 204 | "plural", 205 | "singular", 206 | "strings", 207 | "uppercase", 208 | "words" 209 | ], 210 | "support": { 211 | "issues": "https://github.com/doctrine/inflector/issues", 212 | "source": "https://github.com/doctrine/inflector/tree/2.0.6" 213 | }, 214 | "funding": [ 215 | { 216 | "url": "https://www.doctrine-project.org/sponsorship.html", 217 | "type": "custom" 218 | }, 219 | { 220 | "url": "https://www.patreon.com/phpdoctrine", 221 | "type": "patreon" 222 | }, 223 | { 224 | "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector", 225 | "type": "tidelift" 226 | } 227 | ], 228 | "time": "2022-10-20T09:10:12+00:00" 229 | }, 230 | { 231 | "name": "doctrine/lexer", 232 | "version": "3.0.0", 233 | "source": { 234 | "type": "git", 235 | "url": "https://github.com/doctrine/lexer.git", 236 | "reference": "84a527db05647743d50373e0ec53a152f2cde568" 237 | }, 238 | "dist": { 239 | "type": "zip", 240 | "url": "https://api.github.com/repos/doctrine/lexer/zipball/84a527db05647743d50373e0ec53a152f2cde568", 241 | "reference": "84a527db05647743d50373e0ec53a152f2cde568", 242 | "shasum": "" 243 | }, 244 | "require": { 245 | "php": "^8.1" 246 | }, 247 | "require-dev": { 248 | "doctrine/coding-standard": "^10", 249 | "phpstan/phpstan": "^1.9", 250 | "phpunit/phpunit": "^9.5", 251 | "psalm/plugin-phpunit": "^0.18.3", 252 | "vimeo/psalm": "^5.0" 253 | }, 254 | "type": "library", 255 | "autoload": { 256 | "psr-4": { 257 | "Doctrine\\Common\\Lexer\\": "src" 258 | } 259 | }, 260 | "notification-url": "https://packagist.org/downloads/", 261 | "license": [ 262 | "MIT" 263 | ], 264 | "authors": [ 265 | { 266 | "name": "Guilherme Blanco", 267 | "email": "guilhermeblanco@gmail.com" 268 | }, 269 | { 270 | "name": "Roman Borschel", 271 | "email": "roman@code-factory.org" 272 | }, 273 | { 274 | "name": "Johannes Schmitt", 275 | "email": "schmittjoh@gmail.com" 276 | } 277 | ], 278 | "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", 279 | "homepage": "https://www.doctrine-project.org/projects/lexer.html", 280 | "keywords": [ 281 | "annotations", 282 | "docblock", 283 | "lexer", 284 | "parser", 285 | "php" 286 | ], 287 | "support": { 288 | "issues": "https://github.com/doctrine/lexer/issues", 289 | "source": "https://github.com/doctrine/lexer/tree/3.0.0" 290 | }, 291 | "funding": [ 292 | { 293 | "url": "https://www.doctrine-project.org/sponsorship.html", 294 | "type": "custom" 295 | }, 296 | { 297 | "url": "https://www.patreon.com/phpdoctrine", 298 | "type": "patreon" 299 | }, 300 | { 301 | "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", 302 | "type": "tidelift" 303 | } 304 | ], 305 | "time": "2022-12-15T16:57:16+00:00" 306 | }, 307 | { 308 | "name": "dragonmantank/cron-expression", 309 | "version": "v3.3.2", 310 | "source": { 311 | "type": "git", 312 | "url": "https://github.com/dragonmantank/cron-expression.git", 313 | "reference": "782ca5968ab8b954773518e9e49a6f892a34b2a8" 314 | }, 315 | "dist": { 316 | "type": "zip", 317 | "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/782ca5968ab8b954773518e9e49a6f892a34b2a8", 318 | "reference": "782ca5968ab8b954773518e9e49a6f892a34b2a8", 319 | "shasum": "" 320 | }, 321 | "require": { 322 | "php": "^7.2|^8.0", 323 | "webmozart/assert": "^1.0" 324 | }, 325 | "replace": { 326 | "mtdowling/cron-expression": "^1.0" 327 | }, 328 | "require-dev": { 329 | "phpstan/extension-installer": "^1.0", 330 | "phpstan/phpstan": "^1.0", 331 | "phpstan/phpstan-webmozart-assert": "^1.0", 332 | "phpunit/phpunit": "^7.0|^8.0|^9.0" 333 | }, 334 | "type": "library", 335 | "autoload": { 336 | "psr-4": { 337 | "Cron\\": "src/Cron/" 338 | } 339 | }, 340 | "notification-url": "https://packagist.org/downloads/", 341 | "license": [ 342 | "MIT" 343 | ], 344 | "authors": [ 345 | { 346 | "name": "Chris Tankersley", 347 | "email": "chris@ctankersley.com", 348 | "homepage": "https://github.com/dragonmantank" 349 | } 350 | ], 351 | "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", 352 | "keywords": [ 353 | "cron", 354 | "schedule" 355 | ], 356 | "support": { 357 | "issues": "https://github.com/dragonmantank/cron-expression/issues", 358 | "source": "https://github.com/dragonmantank/cron-expression/tree/v3.3.2" 359 | }, 360 | "funding": [ 361 | { 362 | "url": "https://github.com/dragonmantank", 363 | "type": "github" 364 | } 365 | ], 366 | "time": "2022-09-10T18:51:20+00:00" 367 | }, 368 | { 369 | "name": "egulias/email-validator", 370 | "version": "4.0.1", 371 | "source": { 372 | "type": "git", 373 | "url": "https://github.com/egulias/EmailValidator.git", 374 | "reference": "3a85486b709bc384dae8eb78fb2eec649bdb64ff" 375 | }, 376 | "dist": { 377 | "type": "zip", 378 | "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/3a85486b709bc384dae8eb78fb2eec649bdb64ff", 379 | "reference": "3a85486b709bc384dae8eb78fb2eec649bdb64ff", 380 | "shasum": "" 381 | }, 382 | "require": { 383 | "doctrine/lexer": "^2.0 || ^3.0", 384 | "php": ">=8.1", 385 | "symfony/polyfill-intl-idn": "^1.26" 386 | }, 387 | "require-dev": { 388 | "phpunit/phpunit": "^9.5.27", 389 | "vimeo/psalm": "^4.30" 390 | }, 391 | "suggest": { 392 | "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" 393 | }, 394 | "type": "library", 395 | "extra": { 396 | "branch-alias": { 397 | "dev-master": "4.0.x-dev" 398 | } 399 | }, 400 | "autoload": { 401 | "psr-4": { 402 | "Egulias\\EmailValidator\\": "src" 403 | } 404 | }, 405 | "notification-url": "https://packagist.org/downloads/", 406 | "license": [ 407 | "MIT" 408 | ], 409 | "authors": [ 410 | { 411 | "name": "Eduardo Gulias Davis" 412 | } 413 | ], 414 | "description": "A library for validating emails against several RFCs", 415 | "homepage": "https://github.com/egulias/EmailValidator", 416 | "keywords": [ 417 | "email", 418 | "emailvalidation", 419 | "emailvalidator", 420 | "validation", 421 | "validator" 422 | ], 423 | "support": { 424 | "issues": "https://github.com/egulias/EmailValidator/issues", 425 | "source": "https://github.com/egulias/EmailValidator/tree/4.0.1" 426 | }, 427 | "funding": [ 428 | { 429 | "url": "https://github.com/egulias", 430 | "type": "github" 431 | } 432 | ], 433 | "time": "2023-01-14T14:17:03+00:00" 434 | }, 435 | { 436 | "name": "fruitcake/php-cors", 437 | "version": "v1.2.0", 438 | "source": { 439 | "type": "git", 440 | "url": "https://github.com/fruitcake/php-cors.git", 441 | "reference": "58571acbaa5f9f462c9c77e911700ac66f446d4e" 442 | }, 443 | "dist": { 444 | "type": "zip", 445 | "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/58571acbaa5f9f462c9c77e911700ac66f446d4e", 446 | "reference": "58571acbaa5f9f462c9c77e911700ac66f446d4e", 447 | "shasum": "" 448 | }, 449 | "require": { 450 | "php": "^7.4|^8.0", 451 | "symfony/http-foundation": "^4.4|^5.4|^6" 452 | }, 453 | "require-dev": { 454 | "phpstan/phpstan": "^1.4", 455 | "phpunit/phpunit": "^9", 456 | "squizlabs/php_codesniffer": "^3.5" 457 | }, 458 | "type": "library", 459 | "extra": { 460 | "branch-alias": { 461 | "dev-main": "1.1-dev" 462 | } 463 | }, 464 | "autoload": { 465 | "psr-4": { 466 | "Fruitcake\\Cors\\": "src/" 467 | } 468 | }, 469 | "notification-url": "https://packagist.org/downloads/", 470 | "license": [ 471 | "MIT" 472 | ], 473 | "authors": [ 474 | { 475 | "name": "Fruitcake", 476 | "homepage": "https://fruitcake.nl" 477 | }, 478 | { 479 | "name": "Barryvdh", 480 | "email": "barryvdh@gmail.com" 481 | } 482 | ], 483 | "description": "Cross-origin resource sharing library for the Symfony HttpFoundation", 484 | "homepage": "https://github.com/fruitcake/php-cors", 485 | "keywords": [ 486 | "cors", 487 | "laravel", 488 | "symfony" 489 | ], 490 | "support": { 491 | "issues": "https://github.com/fruitcake/php-cors/issues", 492 | "source": "https://github.com/fruitcake/php-cors/tree/v1.2.0" 493 | }, 494 | "funding": [ 495 | { 496 | "url": "https://fruitcake.nl", 497 | "type": "custom" 498 | }, 499 | { 500 | "url": "https://github.com/barryvdh", 501 | "type": "github" 502 | } 503 | ], 504 | "time": "2022-02-20T15:07:15+00:00" 505 | }, 506 | { 507 | "name": "graham-campbell/result-type", 508 | "version": "v1.1.1", 509 | "source": { 510 | "type": "git", 511 | "url": "https://github.com/GrahamCampbell/Result-Type.git", 512 | "reference": "672eff8cf1d6fe1ef09ca0f89c4b287d6a3eb831" 513 | }, 514 | "dist": { 515 | "type": "zip", 516 | "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/672eff8cf1d6fe1ef09ca0f89c4b287d6a3eb831", 517 | "reference": "672eff8cf1d6fe1ef09ca0f89c4b287d6a3eb831", 518 | "shasum": "" 519 | }, 520 | "require": { 521 | "php": "^7.2.5 || ^8.0", 522 | "phpoption/phpoption": "^1.9.1" 523 | }, 524 | "require-dev": { 525 | "phpunit/phpunit": "^8.5.32 || ^9.6.3 || ^10.0.12" 526 | }, 527 | "type": "library", 528 | "autoload": { 529 | "psr-4": { 530 | "GrahamCampbell\\ResultType\\": "src/" 531 | } 532 | }, 533 | "notification-url": "https://packagist.org/downloads/", 534 | "license": [ 535 | "MIT" 536 | ], 537 | "authors": [ 538 | { 539 | "name": "Graham Campbell", 540 | "email": "hello@gjcampbell.co.uk", 541 | "homepage": "https://github.com/GrahamCampbell" 542 | } 543 | ], 544 | "description": "An Implementation Of The Result Type", 545 | "keywords": [ 546 | "Graham Campbell", 547 | "GrahamCampbell", 548 | "Result Type", 549 | "Result-Type", 550 | "result" 551 | ], 552 | "support": { 553 | "issues": "https://github.com/GrahamCampbell/Result-Type/issues", 554 | "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.1" 555 | }, 556 | "funding": [ 557 | { 558 | "url": "https://github.com/GrahamCampbell", 559 | "type": "github" 560 | }, 561 | { 562 | "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", 563 | "type": "tidelift" 564 | } 565 | ], 566 | "time": "2023-02-25T20:23:15+00:00" 567 | }, 568 | { 569 | "name": "guzzlehttp/uri-template", 570 | "version": "v1.0.1", 571 | "source": { 572 | "type": "git", 573 | "url": "https://github.com/guzzle/uri-template.git", 574 | "reference": "b945d74a55a25a949158444f09ec0d3c120d69e2" 575 | }, 576 | "dist": { 577 | "type": "zip", 578 | "url": "https://api.github.com/repos/guzzle/uri-template/zipball/b945d74a55a25a949158444f09ec0d3c120d69e2", 579 | "reference": "b945d74a55a25a949158444f09ec0d3c120d69e2", 580 | "shasum": "" 581 | }, 582 | "require": { 583 | "php": "^7.2.5 || ^8.0", 584 | "symfony/polyfill-php80": "^1.17" 585 | }, 586 | "require-dev": { 587 | "phpunit/phpunit": "^8.5.19 || ^9.5.8", 588 | "uri-template/tests": "1.0.0" 589 | }, 590 | "type": "library", 591 | "extra": { 592 | "branch-alias": { 593 | "dev-master": "1.0-dev" 594 | } 595 | }, 596 | "autoload": { 597 | "psr-4": { 598 | "GuzzleHttp\\UriTemplate\\": "src" 599 | } 600 | }, 601 | "notification-url": "https://packagist.org/downloads/", 602 | "license": [ 603 | "MIT" 604 | ], 605 | "authors": [ 606 | { 607 | "name": "Graham Campbell", 608 | "email": "hello@gjcampbell.co.uk", 609 | "homepage": "https://github.com/GrahamCampbell" 610 | }, 611 | { 612 | "name": "Michael Dowling", 613 | "email": "mtdowling@gmail.com", 614 | "homepage": "https://github.com/mtdowling" 615 | }, 616 | { 617 | "name": "George Mponos", 618 | "email": "gmponos@gmail.com", 619 | "homepage": "https://github.com/gmponos" 620 | }, 621 | { 622 | "name": "Tobias Nyholm", 623 | "email": "tobias.nyholm@gmail.com", 624 | "homepage": "https://github.com/Nyholm" 625 | } 626 | ], 627 | "description": "A polyfill class for uri_template of PHP", 628 | "keywords": [ 629 | "guzzlehttp", 630 | "uri-template" 631 | ], 632 | "support": { 633 | "issues": "https://github.com/guzzle/uri-template/issues", 634 | "source": "https://github.com/guzzle/uri-template/tree/v1.0.1" 635 | }, 636 | "funding": [ 637 | { 638 | "url": "https://github.com/GrahamCampbell", 639 | "type": "github" 640 | }, 641 | { 642 | "url": "https://github.com/Nyholm", 643 | "type": "github" 644 | }, 645 | { 646 | "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/uri-template", 647 | "type": "tidelift" 648 | } 649 | ], 650 | "time": "2021-10-07T12:57:01+00:00" 651 | }, 652 | { 653 | "name": "laravel/framework", 654 | "version": "v9.52.4", 655 | "source": { 656 | "type": "git", 657 | "url": "https://github.com/laravel/framework.git", 658 | "reference": "9239128cfb4d22afefb64060dfecf53e82987267" 659 | }, 660 | "dist": { 661 | "type": "zip", 662 | "url": "https://api.github.com/repos/laravel/framework/zipball/9239128cfb4d22afefb64060dfecf53e82987267", 663 | "reference": "9239128cfb4d22afefb64060dfecf53e82987267", 664 | "shasum": "" 665 | }, 666 | "require": { 667 | "brick/math": "^0.9.3|^0.10.2|^0.11", 668 | "doctrine/inflector": "^2.0.5", 669 | "dragonmantank/cron-expression": "^3.3.2", 670 | "egulias/email-validator": "^3.2.1|^4.0", 671 | "ext-ctype": "*", 672 | "ext-filter": "*", 673 | "ext-hash": "*", 674 | "ext-mbstring": "*", 675 | "ext-openssl": "*", 676 | "ext-session": "*", 677 | "ext-tokenizer": "*", 678 | "fruitcake/php-cors": "^1.2", 679 | "guzzlehttp/uri-template": "^1.0", 680 | "laravel/serializable-closure": "^1.2.2", 681 | "league/commonmark": "^2.2.1", 682 | "league/flysystem": "^3.8.0", 683 | "monolog/monolog": "^2.0", 684 | "nesbot/carbon": "^2.62.1", 685 | "nunomaduro/termwind": "^1.13", 686 | "php": "^8.0.2", 687 | "psr/container": "^1.1.1|^2.0.1", 688 | "psr/log": "^1.0|^2.0|^3.0", 689 | "psr/simple-cache": "^1.0|^2.0|^3.0", 690 | "ramsey/uuid": "^4.7", 691 | "symfony/console": "^6.0.9", 692 | "symfony/error-handler": "^6.0", 693 | "symfony/finder": "^6.0", 694 | "symfony/http-foundation": "^6.0", 695 | "symfony/http-kernel": "^6.0", 696 | "symfony/mailer": "^6.0", 697 | "symfony/mime": "^6.0", 698 | "symfony/process": "^6.0", 699 | "symfony/routing": "^6.0", 700 | "symfony/uid": "^6.0", 701 | "symfony/var-dumper": "^6.0", 702 | "tijsverkoyen/css-to-inline-styles": "^2.2.5", 703 | "vlucas/phpdotenv": "^5.4.1", 704 | "voku/portable-ascii": "^2.0" 705 | }, 706 | "conflict": { 707 | "tightenco/collect": "<5.5.33" 708 | }, 709 | "provide": { 710 | "psr/container-implementation": "1.1|2.0", 711 | "psr/simple-cache-implementation": "1.0|2.0|3.0" 712 | }, 713 | "replace": { 714 | "illuminate/auth": "self.version", 715 | "illuminate/broadcasting": "self.version", 716 | "illuminate/bus": "self.version", 717 | "illuminate/cache": "self.version", 718 | "illuminate/collections": "self.version", 719 | "illuminate/conditionable": "self.version", 720 | "illuminate/config": "self.version", 721 | "illuminate/console": "self.version", 722 | "illuminate/container": "self.version", 723 | "illuminate/contracts": "self.version", 724 | "illuminate/cookie": "self.version", 725 | "illuminate/database": "self.version", 726 | "illuminate/encryption": "self.version", 727 | "illuminate/events": "self.version", 728 | "illuminate/filesystem": "self.version", 729 | "illuminate/hashing": "self.version", 730 | "illuminate/http": "self.version", 731 | "illuminate/log": "self.version", 732 | "illuminate/macroable": "self.version", 733 | "illuminate/mail": "self.version", 734 | "illuminate/notifications": "self.version", 735 | "illuminate/pagination": "self.version", 736 | "illuminate/pipeline": "self.version", 737 | "illuminate/queue": "self.version", 738 | "illuminate/redis": "self.version", 739 | "illuminate/routing": "self.version", 740 | "illuminate/session": "self.version", 741 | "illuminate/support": "self.version", 742 | "illuminate/testing": "self.version", 743 | "illuminate/translation": "self.version", 744 | "illuminate/validation": "self.version", 745 | "illuminate/view": "self.version" 746 | }, 747 | "require-dev": { 748 | "ably/ably-php": "^1.0", 749 | "aws/aws-sdk-php": "^3.235.5", 750 | "doctrine/dbal": "^2.13.3|^3.1.4", 751 | "ext-gmp": "*", 752 | "fakerphp/faker": "^1.21", 753 | "guzzlehttp/guzzle": "^7.5", 754 | "league/flysystem-aws-s3-v3": "^3.0", 755 | "league/flysystem-ftp": "^3.0", 756 | "league/flysystem-path-prefixing": "^3.3", 757 | "league/flysystem-read-only": "^3.3", 758 | "league/flysystem-sftp-v3": "^3.0", 759 | "mockery/mockery": "^1.5.1", 760 | "orchestra/testbench-core": "^7.16", 761 | "pda/pheanstalk": "^4.0", 762 | "phpstan/phpdoc-parser": "^1.15", 763 | "phpstan/phpstan": "^1.4.7", 764 | "phpunit/phpunit": "^9.5.8", 765 | "predis/predis": "^1.1.9|^2.0.2", 766 | "symfony/cache": "^6.0", 767 | "symfony/http-client": "^6.0" 768 | }, 769 | "suggest": { 770 | "ably/ably-php": "Required to use the Ably broadcast driver (^1.0).", 771 | "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage, and SES mail driver (^3.235.5).", 772 | "brianium/paratest": "Required to run tests in parallel (^6.0).", 773 | "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", 774 | "ext-apcu": "Required to use the APC cache driver.", 775 | "ext-fileinfo": "Required to use the Filesystem class.", 776 | "ext-ftp": "Required to use the Flysystem FTP driver.", 777 | "ext-gd": "Required to use Illuminate\\Http\\Testing\\FileFactory::image().", 778 | "ext-memcached": "Required to use the memcache cache driver.", 779 | "ext-pcntl": "Required to use all features of the queue worker and console signal trapping.", 780 | "ext-pdo": "Required to use all database features.", 781 | "ext-posix": "Required to use all features of the queue worker.", 782 | "ext-redis": "Required to use the Redis cache and queue drivers (^4.0|^5.0).", 783 | "fakerphp/faker": "Required to use the eloquent factory builder (^1.9.1).", 784 | "filp/whoops": "Required for friendly error pages in development (^2.14.3).", 785 | "guzzlehttp/guzzle": "Required to use the HTTP Client and the ping methods on schedules (^7.5).", 786 | "laravel/tinker": "Required to use the tinker console command (^2.0).", 787 | "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^3.0).", 788 | "league/flysystem-ftp": "Required to use the Flysystem FTP driver (^3.0).", 789 | "league/flysystem-path-prefixing": "Required to use the scoped driver (^3.3).", 790 | "league/flysystem-read-only": "Required to use read-only disks (^3.3)", 791 | "league/flysystem-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", 792 | "mockery/mockery": "Required to use mocking (^1.5.1).", 793 | "nyholm/psr7": "Required to use PSR-7 bridging features (^1.2).", 794 | "pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).", 795 | "phpunit/phpunit": "Required to use assertions and run tests (^9.5.8).", 796 | "predis/predis": "Required to use the predis connector (^1.1.9|^2.0.2).", 797 | "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).", 798 | "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^6.0|^7.0).", 799 | "symfony/cache": "Required to PSR-6 cache bridge (^6.0).", 800 | "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).", 801 | "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).", 802 | "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).", 803 | "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).", 804 | "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." 805 | }, 806 | "type": "library", 807 | "extra": { 808 | "branch-alias": { 809 | "dev-master": "9.x-dev" 810 | } 811 | }, 812 | "autoload": { 813 | "files": [ 814 | "src/Illuminate/Collections/helpers.php", 815 | "src/Illuminate/Events/functions.php", 816 | "src/Illuminate/Foundation/helpers.php", 817 | "src/Illuminate/Support/helpers.php" 818 | ], 819 | "psr-4": { 820 | "Illuminate\\": "src/Illuminate/", 821 | "Illuminate\\Support\\": [ 822 | "src/Illuminate/Macroable/", 823 | "src/Illuminate/Collections/", 824 | "src/Illuminate/Conditionable/" 825 | ] 826 | } 827 | }, 828 | "notification-url": "https://packagist.org/downloads/", 829 | "license": [ 830 | "MIT" 831 | ], 832 | "authors": [ 833 | { 834 | "name": "Taylor Otwell", 835 | "email": "taylor@laravel.com" 836 | } 837 | ], 838 | "description": "The Laravel Framework.", 839 | "homepage": "https://laravel.com", 840 | "keywords": [ 841 | "framework", 842 | "laravel" 843 | ], 844 | "support": { 845 | "issues": "https://github.com/laravel/framework/issues", 846 | "source": "https://github.com/laravel/framework" 847 | }, 848 | "time": "2023-02-22T14:38:06+00:00" 849 | }, 850 | { 851 | "name": "laravel/serializable-closure", 852 | "version": "v1.3.0", 853 | "source": { 854 | "type": "git", 855 | "url": "https://github.com/laravel/serializable-closure.git", 856 | "reference": "f23fe9d4e95255dacee1bf3525e0810d1a1b0f37" 857 | }, 858 | "dist": { 859 | "type": "zip", 860 | "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/f23fe9d4e95255dacee1bf3525e0810d1a1b0f37", 861 | "reference": "f23fe9d4e95255dacee1bf3525e0810d1a1b0f37", 862 | "shasum": "" 863 | }, 864 | "require": { 865 | "php": "^7.3|^8.0" 866 | }, 867 | "require-dev": { 868 | "nesbot/carbon": "^2.61", 869 | "pestphp/pest": "^1.21.3", 870 | "phpstan/phpstan": "^1.8.2", 871 | "symfony/var-dumper": "^5.4.11" 872 | }, 873 | "type": "library", 874 | "extra": { 875 | "branch-alias": { 876 | "dev-master": "1.x-dev" 877 | } 878 | }, 879 | "autoload": { 880 | "psr-4": { 881 | "Laravel\\SerializableClosure\\": "src/" 882 | } 883 | }, 884 | "notification-url": "https://packagist.org/downloads/", 885 | "license": [ 886 | "MIT" 887 | ], 888 | "authors": [ 889 | { 890 | "name": "Taylor Otwell", 891 | "email": "taylor@laravel.com" 892 | }, 893 | { 894 | "name": "Nuno Maduro", 895 | "email": "nuno@laravel.com" 896 | } 897 | ], 898 | "description": "Laravel Serializable Closure provides an easy and secure way to serialize closures in PHP.", 899 | "keywords": [ 900 | "closure", 901 | "laravel", 902 | "serializable" 903 | ], 904 | "support": { 905 | "issues": "https://github.com/laravel/serializable-closure/issues", 906 | "source": "https://github.com/laravel/serializable-closure" 907 | }, 908 | "time": "2023-01-30T18:31:20+00:00" 909 | }, 910 | { 911 | "name": "league/commonmark", 912 | "version": "2.3.9", 913 | "source": { 914 | "type": "git", 915 | "url": "https://github.com/thephpleague/commonmark.git", 916 | "reference": "c1e114f74e518daca2729ea8c4bf1167038fa4b5" 917 | }, 918 | "dist": { 919 | "type": "zip", 920 | "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/c1e114f74e518daca2729ea8c4bf1167038fa4b5", 921 | "reference": "c1e114f74e518daca2729ea8c4bf1167038fa4b5", 922 | "shasum": "" 923 | }, 924 | "require": { 925 | "ext-mbstring": "*", 926 | "league/config": "^1.1.1", 927 | "php": "^7.4 || ^8.0", 928 | "psr/event-dispatcher": "^1.0", 929 | "symfony/deprecation-contracts": "^2.1 || ^3.0", 930 | "symfony/polyfill-php80": "^1.16" 931 | }, 932 | "require-dev": { 933 | "cebe/markdown": "^1.0", 934 | "commonmark/cmark": "0.30.0", 935 | "commonmark/commonmark.js": "0.30.0", 936 | "composer/package-versions-deprecated": "^1.8", 937 | "embed/embed": "^4.4", 938 | "erusev/parsedown": "^1.0", 939 | "ext-json": "*", 940 | "github/gfm": "0.29.0", 941 | "michelf/php-markdown": "^1.4 || ^2.0", 942 | "nyholm/psr7": "^1.5", 943 | "phpstan/phpstan": "^1.8.2", 944 | "phpunit/phpunit": "^9.5.21", 945 | "scrutinizer/ocular": "^1.8.1", 946 | "symfony/finder": "^5.3 | ^6.0", 947 | "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", 948 | "unleashedtech/php-coding-standard": "^3.1.1", 949 | "vimeo/psalm": "^4.24.0 || ^5.0.0" 950 | }, 951 | "suggest": { 952 | "symfony/yaml": "v2.3+ required if using the Front Matter extension" 953 | }, 954 | "type": "library", 955 | "extra": { 956 | "branch-alias": { 957 | "dev-main": "2.4-dev" 958 | } 959 | }, 960 | "autoload": { 961 | "psr-4": { 962 | "League\\CommonMark\\": "src" 963 | } 964 | }, 965 | "notification-url": "https://packagist.org/downloads/", 966 | "license": [ 967 | "BSD-3-Clause" 968 | ], 969 | "authors": [ 970 | { 971 | "name": "Colin O'Dell", 972 | "email": "colinodell@gmail.com", 973 | "homepage": "https://www.colinodell.com", 974 | "role": "Lead Developer" 975 | } 976 | ], 977 | "description": "Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and GitHub-Flavored Markdown (GFM)", 978 | "homepage": "https://commonmark.thephpleague.com", 979 | "keywords": [ 980 | "commonmark", 981 | "flavored", 982 | "gfm", 983 | "github", 984 | "github-flavored", 985 | "markdown", 986 | "md", 987 | "parser" 988 | ], 989 | "support": { 990 | "docs": "https://commonmark.thephpleague.com/", 991 | "forum": "https://github.com/thephpleague/commonmark/discussions", 992 | "issues": "https://github.com/thephpleague/commonmark/issues", 993 | "rss": "https://github.com/thephpleague/commonmark/releases.atom", 994 | "source": "https://github.com/thephpleague/commonmark" 995 | }, 996 | "funding": [ 997 | { 998 | "url": "https://www.colinodell.com/sponsor", 999 | "type": "custom" 1000 | }, 1001 | { 1002 | "url": "https://www.paypal.me/colinpodell/10.00", 1003 | "type": "custom" 1004 | }, 1005 | { 1006 | "url": "https://github.com/colinodell", 1007 | "type": "github" 1008 | }, 1009 | { 1010 | "url": "https://tidelift.com/funding/github/packagist/league/commonmark", 1011 | "type": "tidelift" 1012 | } 1013 | ], 1014 | "time": "2023-02-15T14:07:24+00:00" 1015 | }, 1016 | { 1017 | "name": "league/config", 1018 | "version": "v1.2.0", 1019 | "source": { 1020 | "type": "git", 1021 | "url": "https://github.com/thephpleague/config.git", 1022 | "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3" 1023 | }, 1024 | "dist": { 1025 | "type": "zip", 1026 | "url": "https://api.github.com/repos/thephpleague/config/zipball/754b3604fb2984c71f4af4a9cbe7b57f346ec1f3", 1027 | "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3", 1028 | "shasum": "" 1029 | }, 1030 | "require": { 1031 | "dflydev/dot-access-data": "^3.0.1", 1032 | "nette/schema": "^1.2", 1033 | "php": "^7.4 || ^8.0" 1034 | }, 1035 | "require-dev": { 1036 | "phpstan/phpstan": "^1.8.2", 1037 | "phpunit/phpunit": "^9.5.5", 1038 | "scrutinizer/ocular": "^1.8.1", 1039 | "unleashedtech/php-coding-standard": "^3.1", 1040 | "vimeo/psalm": "^4.7.3" 1041 | }, 1042 | "type": "library", 1043 | "extra": { 1044 | "branch-alias": { 1045 | "dev-main": "1.2-dev" 1046 | } 1047 | }, 1048 | "autoload": { 1049 | "psr-4": { 1050 | "League\\Config\\": "src" 1051 | } 1052 | }, 1053 | "notification-url": "https://packagist.org/downloads/", 1054 | "license": [ 1055 | "BSD-3-Clause" 1056 | ], 1057 | "authors": [ 1058 | { 1059 | "name": "Colin O'Dell", 1060 | "email": "colinodell@gmail.com", 1061 | "homepage": "https://www.colinodell.com", 1062 | "role": "Lead Developer" 1063 | } 1064 | ], 1065 | "description": "Define configuration arrays with strict schemas and access values with dot notation", 1066 | "homepage": "https://config.thephpleague.com", 1067 | "keywords": [ 1068 | "array", 1069 | "config", 1070 | "configuration", 1071 | "dot", 1072 | "dot-access", 1073 | "nested", 1074 | "schema" 1075 | ], 1076 | "support": { 1077 | "docs": "https://config.thephpleague.com/", 1078 | "issues": "https://github.com/thephpleague/config/issues", 1079 | "rss": "https://github.com/thephpleague/config/releases.atom", 1080 | "source": "https://github.com/thephpleague/config" 1081 | }, 1082 | "funding": [ 1083 | { 1084 | "url": "https://www.colinodell.com/sponsor", 1085 | "type": "custom" 1086 | }, 1087 | { 1088 | "url": "https://www.paypal.me/colinpodell/10.00", 1089 | "type": "custom" 1090 | }, 1091 | { 1092 | "url": "https://github.com/colinodell", 1093 | "type": "github" 1094 | } 1095 | ], 1096 | "time": "2022-12-11T20:36:23+00:00" 1097 | }, 1098 | { 1099 | "name": "league/flysystem", 1100 | "version": "3.12.3", 1101 | "source": { 1102 | "type": "git", 1103 | "url": "https://github.com/thephpleague/flysystem.git", 1104 | "reference": "81e87e74dd5213795c7846d65089712d2dda90ce" 1105 | }, 1106 | "dist": { 1107 | "type": "zip", 1108 | "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/81e87e74dd5213795c7846d65089712d2dda90ce", 1109 | "reference": "81e87e74dd5213795c7846d65089712d2dda90ce", 1110 | "shasum": "" 1111 | }, 1112 | "require": { 1113 | "league/mime-type-detection": "^1.0.0", 1114 | "php": "^8.0.2" 1115 | }, 1116 | "conflict": { 1117 | "aws/aws-sdk-php": "3.209.31 || 3.210.0", 1118 | "guzzlehttp/guzzle": "<7.0", 1119 | "guzzlehttp/ringphp": "<1.1.1", 1120 | "phpseclib/phpseclib": "3.0.15", 1121 | "symfony/http-client": "<5.2" 1122 | }, 1123 | "require-dev": { 1124 | "async-aws/s3": "^1.5", 1125 | "async-aws/simple-s3": "^1.1", 1126 | "aws/aws-sdk-php": "^3.220.0", 1127 | "composer/semver": "^3.0", 1128 | "ext-fileinfo": "*", 1129 | "ext-ftp": "*", 1130 | "ext-zip": "*", 1131 | "friendsofphp/php-cs-fixer": "^3.5", 1132 | "google/cloud-storage": "^1.23", 1133 | "microsoft/azure-storage-blob": "^1.1", 1134 | "phpseclib/phpseclib": "^3.0.14", 1135 | "phpstan/phpstan": "^0.12.26", 1136 | "phpunit/phpunit": "^9.5.11", 1137 | "sabre/dav": "^4.3.1" 1138 | }, 1139 | "type": "library", 1140 | "autoload": { 1141 | "psr-4": { 1142 | "League\\Flysystem\\": "src" 1143 | } 1144 | }, 1145 | "notification-url": "https://packagist.org/downloads/", 1146 | "license": [ 1147 | "MIT" 1148 | ], 1149 | "authors": [ 1150 | { 1151 | "name": "Frank de Jonge", 1152 | "email": "info@frankdejonge.nl" 1153 | } 1154 | ], 1155 | "description": "File storage abstraction for PHP", 1156 | "keywords": [ 1157 | "WebDAV", 1158 | "aws", 1159 | "cloud", 1160 | "file", 1161 | "files", 1162 | "filesystem", 1163 | "filesystems", 1164 | "ftp", 1165 | "s3", 1166 | "sftp", 1167 | "storage" 1168 | ], 1169 | "support": { 1170 | "issues": "https://github.com/thephpleague/flysystem/issues", 1171 | "source": "https://github.com/thephpleague/flysystem/tree/3.12.3" 1172 | }, 1173 | "funding": [ 1174 | { 1175 | "url": "https://ecologi.com/frankdejonge", 1176 | "type": "custom" 1177 | }, 1178 | { 1179 | "url": "https://github.com/frankdejonge", 1180 | "type": "github" 1181 | }, 1182 | { 1183 | "url": "https://tidelift.com/funding/github/packagist/league/flysystem", 1184 | "type": "tidelift" 1185 | } 1186 | ], 1187 | "time": "2023-02-18T15:32:41+00:00" 1188 | }, 1189 | { 1190 | "name": "league/mime-type-detection", 1191 | "version": "1.11.0", 1192 | "source": { 1193 | "type": "git", 1194 | "url": "https://github.com/thephpleague/mime-type-detection.git", 1195 | "reference": "ff6248ea87a9f116e78edd6002e39e5128a0d4dd" 1196 | }, 1197 | "dist": { 1198 | "type": "zip", 1199 | "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/ff6248ea87a9f116e78edd6002e39e5128a0d4dd", 1200 | "reference": "ff6248ea87a9f116e78edd6002e39e5128a0d4dd", 1201 | "shasum": "" 1202 | }, 1203 | "require": { 1204 | "ext-fileinfo": "*", 1205 | "php": "^7.2 || ^8.0" 1206 | }, 1207 | "require-dev": { 1208 | "friendsofphp/php-cs-fixer": "^3.2", 1209 | "phpstan/phpstan": "^0.12.68", 1210 | "phpunit/phpunit": "^8.5.8 || ^9.3" 1211 | }, 1212 | "type": "library", 1213 | "autoload": { 1214 | "psr-4": { 1215 | "League\\MimeTypeDetection\\": "src" 1216 | } 1217 | }, 1218 | "notification-url": "https://packagist.org/downloads/", 1219 | "license": [ 1220 | "MIT" 1221 | ], 1222 | "authors": [ 1223 | { 1224 | "name": "Frank de Jonge", 1225 | "email": "info@frankdejonge.nl" 1226 | } 1227 | ], 1228 | "description": "Mime-type detection for Flysystem", 1229 | "support": { 1230 | "issues": "https://github.com/thephpleague/mime-type-detection/issues", 1231 | "source": "https://github.com/thephpleague/mime-type-detection/tree/1.11.0" 1232 | }, 1233 | "funding": [ 1234 | { 1235 | "url": "https://github.com/frankdejonge", 1236 | "type": "github" 1237 | }, 1238 | { 1239 | "url": "https://tidelift.com/funding/github/packagist/league/flysystem", 1240 | "type": "tidelift" 1241 | } 1242 | ], 1243 | "time": "2022-04-17T13:12:02+00:00" 1244 | }, 1245 | { 1246 | "name": "monolog/monolog", 1247 | "version": "2.9.1", 1248 | "source": { 1249 | "type": "git", 1250 | "url": "https://github.com/Seldaek/monolog.git", 1251 | "reference": "f259e2b15fb95494c83f52d3caad003bbf5ffaa1" 1252 | }, 1253 | "dist": { 1254 | "type": "zip", 1255 | "url": "https://api.github.com/repos/Seldaek/monolog/zipball/f259e2b15fb95494c83f52d3caad003bbf5ffaa1", 1256 | "reference": "f259e2b15fb95494c83f52d3caad003bbf5ffaa1", 1257 | "shasum": "" 1258 | }, 1259 | "require": { 1260 | "php": ">=7.2", 1261 | "psr/log": "^1.0.1 || ^2.0 || ^3.0" 1262 | }, 1263 | "provide": { 1264 | "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" 1265 | }, 1266 | "require-dev": { 1267 | "aws/aws-sdk-php": "^2.4.9 || ^3.0", 1268 | "doctrine/couchdb": "~1.0@dev", 1269 | "elasticsearch/elasticsearch": "^7 || ^8", 1270 | "ext-json": "*", 1271 | "graylog2/gelf-php": "^1.4.2 || ^2@dev", 1272 | "guzzlehttp/guzzle": "^7.4", 1273 | "guzzlehttp/psr7": "^2.2", 1274 | "mongodb/mongodb": "^1.8", 1275 | "php-amqplib/php-amqplib": "~2.4 || ^3", 1276 | "phpspec/prophecy": "^1.15", 1277 | "phpstan/phpstan": "^0.12.91", 1278 | "phpunit/phpunit": "^8.5.14", 1279 | "predis/predis": "^1.1 || ^2.0", 1280 | "rollbar/rollbar": "^1.3 || ^2 || ^3", 1281 | "ruflin/elastica": "^7", 1282 | "swiftmailer/swiftmailer": "^5.3|^6.0", 1283 | "symfony/mailer": "^5.4 || ^6", 1284 | "symfony/mime": "^5.4 || ^6" 1285 | }, 1286 | "suggest": { 1287 | "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", 1288 | "doctrine/couchdb": "Allow sending log messages to a CouchDB server", 1289 | "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", 1290 | "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", 1291 | "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler", 1292 | "ext-mbstring": "Allow to work properly with unicode symbols", 1293 | "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", 1294 | "ext-openssl": "Required to send log messages using SSL", 1295 | "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)", 1296 | "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", 1297 | "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", 1298 | "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", 1299 | "rollbar/rollbar": "Allow sending log messages to Rollbar", 1300 | "ruflin/elastica": "Allow sending log messages to an Elastic Search server" 1301 | }, 1302 | "type": "library", 1303 | "extra": { 1304 | "branch-alias": { 1305 | "dev-main": "2.x-dev" 1306 | } 1307 | }, 1308 | "autoload": { 1309 | "psr-4": { 1310 | "Monolog\\": "src/Monolog" 1311 | } 1312 | }, 1313 | "notification-url": "https://packagist.org/downloads/", 1314 | "license": [ 1315 | "MIT" 1316 | ], 1317 | "authors": [ 1318 | { 1319 | "name": "Jordi Boggiano", 1320 | "email": "j.boggiano@seld.be", 1321 | "homepage": "https://seld.be" 1322 | } 1323 | ], 1324 | "description": "Sends your logs to files, sockets, inboxes, databases and various web services", 1325 | "homepage": "https://github.com/Seldaek/monolog", 1326 | "keywords": [ 1327 | "log", 1328 | "logging", 1329 | "psr-3" 1330 | ], 1331 | "support": { 1332 | "issues": "https://github.com/Seldaek/monolog/issues", 1333 | "source": "https://github.com/Seldaek/monolog/tree/2.9.1" 1334 | }, 1335 | "funding": [ 1336 | { 1337 | "url": "https://github.com/Seldaek", 1338 | "type": "github" 1339 | }, 1340 | { 1341 | "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", 1342 | "type": "tidelift" 1343 | } 1344 | ], 1345 | "time": "2023-02-06T13:44:46+00:00" 1346 | }, 1347 | { 1348 | "name": "nesbot/carbon", 1349 | "version": "2.66.0", 1350 | "source": { 1351 | "type": "git", 1352 | "url": "https://github.com/briannesbitt/Carbon.git", 1353 | "reference": "496712849902241f04902033b0441b269effe001" 1354 | }, 1355 | "dist": { 1356 | "type": "zip", 1357 | "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/496712849902241f04902033b0441b269effe001", 1358 | "reference": "496712849902241f04902033b0441b269effe001", 1359 | "shasum": "" 1360 | }, 1361 | "require": { 1362 | "ext-json": "*", 1363 | "php": "^7.1.8 || ^8.0", 1364 | "symfony/polyfill-mbstring": "^1.0", 1365 | "symfony/polyfill-php80": "^1.16", 1366 | "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" 1367 | }, 1368 | "require-dev": { 1369 | "doctrine/dbal": "^2.0 || ^3.1.4", 1370 | "doctrine/orm": "^2.7", 1371 | "friendsofphp/php-cs-fixer": "^3.0", 1372 | "kylekatarnls/multi-tester": "^2.0", 1373 | "ondrejmirtes/better-reflection": "*", 1374 | "phpmd/phpmd": "^2.9", 1375 | "phpstan/extension-installer": "^1.0", 1376 | "phpstan/phpstan": "^0.12.99 || ^1.7.14", 1377 | "phpunit/php-file-iterator": "^2.0.5 || ^3.0.6", 1378 | "phpunit/phpunit": "^7.5.20 || ^8.5.26 || ^9.5.20", 1379 | "squizlabs/php_codesniffer": "^3.4" 1380 | }, 1381 | "bin": [ 1382 | "bin/carbon" 1383 | ], 1384 | "type": "library", 1385 | "extra": { 1386 | "branch-alias": { 1387 | "dev-3.x": "3.x-dev", 1388 | "dev-master": "2.x-dev" 1389 | }, 1390 | "laravel": { 1391 | "providers": [ 1392 | "Carbon\\Laravel\\ServiceProvider" 1393 | ] 1394 | }, 1395 | "phpstan": { 1396 | "includes": [ 1397 | "extension.neon" 1398 | ] 1399 | } 1400 | }, 1401 | "autoload": { 1402 | "psr-4": { 1403 | "Carbon\\": "src/Carbon/" 1404 | } 1405 | }, 1406 | "notification-url": "https://packagist.org/downloads/", 1407 | "license": [ 1408 | "MIT" 1409 | ], 1410 | "authors": [ 1411 | { 1412 | "name": "Brian Nesbitt", 1413 | "email": "brian@nesbot.com", 1414 | "homepage": "https://markido.com" 1415 | }, 1416 | { 1417 | "name": "kylekatarnls", 1418 | "homepage": "https://github.com/kylekatarnls" 1419 | } 1420 | ], 1421 | "description": "An API extension for DateTime that supports 281 different languages.", 1422 | "homepage": "https://carbon.nesbot.com", 1423 | "keywords": [ 1424 | "date", 1425 | "datetime", 1426 | "time" 1427 | ], 1428 | "support": { 1429 | "docs": "https://carbon.nesbot.com/docs", 1430 | "issues": "https://github.com/briannesbitt/Carbon/issues", 1431 | "source": "https://github.com/briannesbitt/Carbon" 1432 | }, 1433 | "funding": [ 1434 | { 1435 | "url": "https://github.com/sponsors/kylekatarnls", 1436 | "type": "github" 1437 | }, 1438 | { 1439 | "url": "https://opencollective.com/Carbon#sponsor", 1440 | "type": "opencollective" 1441 | }, 1442 | { 1443 | "url": "https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme", 1444 | "type": "tidelift" 1445 | } 1446 | ], 1447 | "time": "2023-01-29T18:53:47+00:00" 1448 | }, 1449 | { 1450 | "name": "nette/schema", 1451 | "version": "v1.2.3", 1452 | "source": { 1453 | "type": "git", 1454 | "url": "https://github.com/nette/schema.git", 1455 | "reference": "abbdbb70e0245d5f3bf77874cea1dfb0c930d06f" 1456 | }, 1457 | "dist": { 1458 | "type": "zip", 1459 | "url": "https://api.github.com/repos/nette/schema/zipball/abbdbb70e0245d5f3bf77874cea1dfb0c930d06f", 1460 | "reference": "abbdbb70e0245d5f3bf77874cea1dfb0c930d06f", 1461 | "shasum": "" 1462 | }, 1463 | "require": { 1464 | "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", 1465 | "php": ">=7.1 <8.3" 1466 | }, 1467 | "require-dev": { 1468 | "nette/tester": "^2.3 || ^2.4", 1469 | "phpstan/phpstan-nette": "^1.0", 1470 | "tracy/tracy": "^2.7" 1471 | }, 1472 | "type": "library", 1473 | "extra": { 1474 | "branch-alias": { 1475 | "dev-master": "1.2-dev" 1476 | } 1477 | }, 1478 | "autoload": { 1479 | "classmap": [ 1480 | "src/" 1481 | ] 1482 | }, 1483 | "notification-url": "https://packagist.org/downloads/", 1484 | "license": [ 1485 | "BSD-3-Clause", 1486 | "GPL-2.0-only", 1487 | "GPL-3.0-only" 1488 | ], 1489 | "authors": [ 1490 | { 1491 | "name": "David Grudl", 1492 | "homepage": "https://davidgrudl.com" 1493 | }, 1494 | { 1495 | "name": "Nette Community", 1496 | "homepage": "https://nette.org/contributors" 1497 | } 1498 | ], 1499 | "description": "📐 Nette Schema: validating data structures against a given Schema.", 1500 | "homepage": "https://nette.org", 1501 | "keywords": [ 1502 | "config", 1503 | "nette" 1504 | ], 1505 | "support": { 1506 | "issues": "https://github.com/nette/schema/issues", 1507 | "source": "https://github.com/nette/schema/tree/v1.2.3" 1508 | }, 1509 | "time": "2022-10-13T01:24:26+00:00" 1510 | }, 1511 | { 1512 | "name": "nette/utils", 1513 | "version": "v4.0.0", 1514 | "source": { 1515 | "type": "git", 1516 | "url": "https://github.com/nette/utils.git", 1517 | "reference": "cacdbf5a91a657ede665c541eda28941d4b09c1e" 1518 | }, 1519 | "dist": { 1520 | "type": "zip", 1521 | "url": "https://api.github.com/repos/nette/utils/zipball/cacdbf5a91a657ede665c541eda28941d4b09c1e", 1522 | "reference": "cacdbf5a91a657ede665c541eda28941d4b09c1e", 1523 | "shasum": "" 1524 | }, 1525 | "require": { 1526 | "php": ">=8.0 <8.3" 1527 | }, 1528 | "conflict": { 1529 | "nette/finder": "<3", 1530 | "nette/schema": "<1.2.2" 1531 | }, 1532 | "require-dev": { 1533 | "jetbrains/phpstorm-attributes": "dev-master", 1534 | "nette/tester": "^2.4", 1535 | "phpstan/phpstan": "^1.0", 1536 | "tracy/tracy": "^2.9" 1537 | }, 1538 | "suggest": { 1539 | "ext-gd": "to use Image", 1540 | "ext-iconv": "to use Strings::webalize(), toAscii(), chr() and reverse()", 1541 | "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()", 1542 | "ext-json": "to use Nette\\Utils\\Json", 1543 | "ext-mbstring": "to use Strings::lower() etc...", 1544 | "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()", 1545 | "ext-xml": "to use Strings::length() etc. when mbstring is not available" 1546 | }, 1547 | "type": "library", 1548 | "extra": { 1549 | "branch-alias": { 1550 | "dev-master": "4.0-dev" 1551 | } 1552 | }, 1553 | "autoload": { 1554 | "classmap": [ 1555 | "src/" 1556 | ] 1557 | }, 1558 | "notification-url": "https://packagist.org/downloads/", 1559 | "license": [ 1560 | "BSD-3-Clause", 1561 | "GPL-2.0-only", 1562 | "GPL-3.0-only" 1563 | ], 1564 | "authors": [ 1565 | { 1566 | "name": "David Grudl", 1567 | "homepage": "https://davidgrudl.com" 1568 | }, 1569 | { 1570 | "name": "Nette Community", 1571 | "homepage": "https://nette.org/contributors" 1572 | } 1573 | ], 1574 | "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.", 1575 | "homepage": "https://nette.org", 1576 | "keywords": [ 1577 | "array", 1578 | "core", 1579 | "datetime", 1580 | "images", 1581 | "json", 1582 | "nette", 1583 | "paginator", 1584 | "password", 1585 | "slugify", 1586 | "string", 1587 | "unicode", 1588 | "utf-8", 1589 | "utility", 1590 | "validation" 1591 | ], 1592 | "support": { 1593 | "issues": "https://github.com/nette/utils/issues", 1594 | "source": "https://github.com/nette/utils/tree/v4.0.0" 1595 | }, 1596 | "time": "2023-02-02T10:41:53+00:00" 1597 | }, 1598 | { 1599 | "name": "nunomaduro/termwind", 1600 | "version": "v1.15.1", 1601 | "source": { 1602 | "type": "git", 1603 | "url": "https://github.com/nunomaduro/termwind.git", 1604 | "reference": "8ab0b32c8caa4a2e09700ea32925441385e4a5dc" 1605 | }, 1606 | "dist": { 1607 | "type": "zip", 1608 | "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/8ab0b32c8caa4a2e09700ea32925441385e4a5dc", 1609 | "reference": "8ab0b32c8caa4a2e09700ea32925441385e4a5dc", 1610 | "shasum": "" 1611 | }, 1612 | "require": { 1613 | "ext-mbstring": "*", 1614 | "php": "^8.0", 1615 | "symfony/console": "^5.3.0|^6.0.0" 1616 | }, 1617 | "require-dev": { 1618 | "ergebnis/phpstan-rules": "^1.0.", 1619 | "illuminate/console": "^8.0|^9.0", 1620 | "illuminate/support": "^8.0|^9.0", 1621 | "laravel/pint": "^1.0.0", 1622 | "pestphp/pest": "^1.21.0", 1623 | "pestphp/pest-plugin-mock": "^1.0", 1624 | "phpstan/phpstan": "^1.4.6", 1625 | "phpstan/phpstan-strict-rules": "^1.1.0", 1626 | "symfony/var-dumper": "^5.2.7|^6.0.0", 1627 | "thecodingmachine/phpstan-strict-rules": "^1.0.0" 1628 | }, 1629 | "type": "library", 1630 | "extra": { 1631 | "laravel": { 1632 | "providers": [ 1633 | "Termwind\\Laravel\\TermwindServiceProvider" 1634 | ] 1635 | } 1636 | }, 1637 | "autoload": { 1638 | "files": [ 1639 | "src/Functions.php" 1640 | ], 1641 | "psr-4": { 1642 | "Termwind\\": "src/" 1643 | } 1644 | }, 1645 | "notification-url": "https://packagist.org/downloads/", 1646 | "license": [ 1647 | "MIT" 1648 | ], 1649 | "authors": [ 1650 | { 1651 | "name": "Nuno Maduro", 1652 | "email": "enunomaduro@gmail.com" 1653 | } 1654 | ], 1655 | "description": "Its like Tailwind CSS, but for the console.", 1656 | "keywords": [ 1657 | "cli", 1658 | "console", 1659 | "css", 1660 | "package", 1661 | "php", 1662 | "style" 1663 | ], 1664 | "support": { 1665 | "issues": "https://github.com/nunomaduro/termwind/issues", 1666 | "source": "https://github.com/nunomaduro/termwind/tree/v1.15.1" 1667 | }, 1668 | "funding": [ 1669 | { 1670 | "url": "https://www.paypal.com/paypalme/enunomaduro", 1671 | "type": "custom" 1672 | }, 1673 | { 1674 | "url": "https://github.com/nunomaduro", 1675 | "type": "github" 1676 | }, 1677 | { 1678 | "url": "https://github.com/xiCO2k", 1679 | "type": "github" 1680 | } 1681 | ], 1682 | "time": "2023-02-08T01:06:31+00:00" 1683 | }, 1684 | { 1685 | "name": "phpoption/phpoption", 1686 | "version": "1.9.1", 1687 | "source": { 1688 | "type": "git", 1689 | "url": "https://github.com/schmittjoh/php-option.git", 1690 | "reference": "dd3a383e599f49777d8b628dadbb90cae435b87e" 1691 | }, 1692 | "dist": { 1693 | "type": "zip", 1694 | "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/dd3a383e599f49777d8b628dadbb90cae435b87e", 1695 | "reference": "dd3a383e599f49777d8b628dadbb90cae435b87e", 1696 | "shasum": "" 1697 | }, 1698 | "require": { 1699 | "php": "^7.2.5 || ^8.0" 1700 | }, 1701 | "require-dev": { 1702 | "bamarni/composer-bin-plugin": "^1.8.2", 1703 | "phpunit/phpunit": "^8.5.32 || ^9.6.3 || ^10.0.12" 1704 | }, 1705 | "type": "library", 1706 | "extra": { 1707 | "bamarni-bin": { 1708 | "bin-links": true, 1709 | "forward-command": true 1710 | }, 1711 | "branch-alias": { 1712 | "dev-master": "1.9-dev" 1713 | } 1714 | }, 1715 | "autoload": { 1716 | "psr-4": { 1717 | "PhpOption\\": "src/PhpOption/" 1718 | } 1719 | }, 1720 | "notification-url": "https://packagist.org/downloads/", 1721 | "license": [ 1722 | "Apache-2.0" 1723 | ], 1724 | "authors": [ 1725 | { 1726 | "name": "Johannes M. Schmitt", 1727 | "email": "schmittjoh@gmail.com", 1728 | "homepage": "https://github.com/schmittjoh" 1729 | }, 1730 | { 1731 | "name": "Graham Campbell", 1732 | "email": "hello@gjcampbell.co.uk", 1733 | "homepage": "https://github.com/GrahamCampbell" 1734 | } 1735 | ], 1736 | "description": "Option Type for PHP", 1737 | "keywords": [ 1738 | "language", 1739 | "option", 1740 | "php", 1741 | "type" 1742 | ], 1743 | "support": { 1744 | "issues": "https://github.com/schmittjoh/php-option/issues", 1745 | "source": "https://github.com/schmittjoh/php-option/tree/1.9.1" 1746 | }, 1747 | "funding": [ 1748 | { 1749 | "url": "https://github.com/GrahamCampbell", 1750 | "type": "github" 1751 | }, 1752 | { 1753 | "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", 1754 | "type": "tidelift" 1755 | } 1756 | ], 1757 | "time": "2023-02-25T19:38:58+00:00" 1758 | }, 1759 | { 1760 | "name": "psr/container", 1761 | "version": "2.0.2", 1762 | "source": { 1763 | "type": "git", 1764 | "url": "https://github.com/php-fig/container.git", 1765 | "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" 1766 | }, 1767 | "dist": { 1768 | "type": "zip", 1769 | "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", 1770 | "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", 1771 | "shasum": "" 1772 | }, 1773 | "require": { 1774 | "php": ">=7.4.0" 1775 | }, 1776 | "type": "library", 1777 | "extra": { 1778 | "branch-alias": { 1779 | "dev-master": "2.0.x-dev" 1780 | } 1781 | }, 1782 | "autoload": { 1783 | "psr-4": { 1784 | "Psr\\Container\\": "src/" 1785 | } 1786 | }, 1787 | "notification-url": "https://packagist.org/downloads/", 1788 | "license": [ 1789 | "MIT" 1790 | ], 1791 | "authors": [ 1792 | { 1793 | "name": "PHP-FIG", 1794 | "homepage": "https://www.php-fig.org/" 1795 | } 1796 | ], 1797 | "description": "Common Container Interface (PHP FIG PSR-11)", 1798 | "homepage": "https://github.com/php-fig/container", 1799 | "keywords": [ 1800 | "PSR-11", 1801 | "container", 1802 | "container-interface", 1803 | "container-interop", 1804 | "psr" 1805 | ], 1806 | "support": { 1807 | "issues": "https://github.com/php-fig/container/issues", 1808 | "source": "https://github.com/php-fig/container/tree/2.0.2" 1809 | }, 1810 | "time": "2021-11-05T16:47:00+00:00" 1811 | }, 1812 | { 1813 | "name": "psr/event-dispatcher", 1814 | "version": "1.0.0", 1815 | "source": { 1816 | "type": "git", 1817 | "url": "https://github.com/php-fig/event-dispatcher.git", 1818 | "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" 1819 | }, 1820 | "dist": { 1821 | "type": "zip", 1822 | "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", 1823 | "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", 1824 | "shasum": "" 1825 | }, 1826 | "require": { 1827 | "php": ">=7.2.0" 1828 | }, 1829 | "type": "library", 1830 | "extra": { 1831 | "branch-alias": { 1832 | "dev-master": "1.0.x-dev" 1833 | } 1834 | }, 1835 | "autoload": { 1836 | "psr-4": { 1837 | "Psr\\EventDispatcher\\": "src/" 1838 | } 1839 | }, 1840 | "notification-url": "https://packagist.org/downloads/", 1841 | "license": [ 1842 | "MIT" 1843 | ], 1844 | "authors": [ 1845 | { 1846 | "name": "PHP-FIG", 1847 | "homepage": "http://www.php-fig.org/" 1848 | } 1849 | ], 1850 | "description": "Standard interfaces for event handling.", 1851 | "keywords": [ 1852 | "events", 1853 | "psr", 1854 | "psr-14" 1855 | ], 1856 | "support": { 1857 | "issues": "https://github.com/php-fig/event-dispatcher/issues", 1858 | "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" 1859 | }, 1860 | "time": "2019-01-08T18:20:26+00:00" 1861 | }, 1862 | { 1863 | "name": "psr/log", 1864 | "version": "3.0.0", 1865 | "source": { 1866 | "type": "git", 1867 | "url": "https://github.com/php-fig/log.git", 1868 | "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001" 1869 | }, 1870 | "dist": { 1871 | "type": "zip", 1872 | "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001", 1873 | "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001", 1874 | "shasum": "" 1875 | }, 1876 | "require": { 1877 | "php": ">=8.0.0" 1878 | }, 1879 | "type": "library", 1880 | "extra": { 1881 | "branch-alias": { 1882 | "dev-master": "3.x-dev" 1883 | } 1884 | }, 1885 | "autoload": { 1886 | "psr-4": { 1887 | "Psr\\Log\\": "src" 1888 | } 1889 | }, 1890 | "notification-url": "https://packagist.org/downloads/", 1891 | "license": [ 1892 | "MIT" 1893 | ], 1894 | "authors": [ 1895 | { 1896 | "name": "PHP-FIG", 1897 | "homepage": "https://www.php-fig.org/" 1898 | } 1899 | ], 1900 | "description": "Common interface for logging libraries", 1901 | "homepage": "https://github.com/php-fig/log", 1902 | "keywords": [ 1903 | "log", 1904 | "psr", 1905 | "psr-3" 1906 | ], 1907 | "support": { 1908 | "source": "https://github.com/php-fig/log/tree/3.0.0" 1909 | }, 1910 | "time": "2021-07-14T16:46:02+00:00" 1911 | }, 1912 | { 1913 | "name": "psr/simple-cache", 1914 | "version": "3.0.0", 1915 | "source": { 1916 | "type": "git", 1917 | "url": "https://github.com/php-fig/simple-cache.git", 1918 | "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865" 1919 | }, 1920 | "dist": { 1921 | "type": "zip", 1922 | "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/764e0b3939f5ca87cb904f570ef9be2d78a07865", 1923 | "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865", 1924 | "shasum": "" 1925 | }, 1926 | "require": { 1927 | "php": ">=8.0.0" 1928 | }, 1929 | "type": "library", 1930 | "extra": { 1931 | "branch-alias": { 1932 | "dev-master": "3.0.x-dev" 1933 | } 1934 | }, 1935 | "autoload": { 1936 | "psr-4": { 1937 | "Psr\\SimpleCache\\": "src/" 1938 | } 1939 | }, 1940 | "notification-url": "https://packagist.org/downloads/", 1941 | "license": [ 1942 | "MIT" 1943 | ], 1944 | "authors": [ 1945 | { 1946 | "name": "PHP-FIG", 1947 | "homepage": "https://www.php-fig.org/" 1948 | } 1949 | ], 1950 | "description": "Common interfaces for simple caching", 1951 | "keywords": [ 1952 | "cache", 1953 | "caching", 1954 | "psr", 1955 | "psr-16", 1956 | "simple-cache" 1957 | ], 1958 | "support": { 1959 | "source": "https://github.com/php-fig/simple-cache/tree/3.0.0" 1960 | }, 1961 | "time": "2021-10-29T13:26:27+00:00" 1962 | }, 1963 | { 1964 | "name": "ramsey/collection", 1965 | "version": "2.0.0", 1966 | "source": { 1967 | "type": "git", 1968 | "url": "https://github.com/ramsey/collection.git", 1969 | "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5" 1970 | }, 1971 | "dist": { 1972 | "type": "zip", 1973 | "url": "https://api.github.com/repos/ramsey/collection/zipball/a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", 1974 | "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", 1975 | "shasum": "" 1976 | }, 1977 | "require": { 1978 | "php": "^8.1" 1979 | }, 1980 | "require-dev": { 1981 | "captainhook/plugin-composer": "^5.3", 1982 | "ergebnis/composer-normalize": "^2.28.3", 1983 | "fakerphp/faker": "^1.21", 1984 | "hamcrest/hamcrest-php": "^2.0", 1985 | "jangregor/phpstan-prophecy": "^1.0", 1986 | "mockery/mockery": "^1.5", 1987 | "php-parallel-lint/php-console-highlighter": "^1.0", 1988 | "php-parallel-lint/php-parallel-lint": "^1.3", 1989 | "phpcsstandards/phpcsutils": "^1.0.0-rc1", 1990 | "phpspec/prophecy-phpunit": "^2.0", 1991 | "phpstan/extension-installer": "^1.2", 1992 | "phpstan/phpstan": "^1.9", 1993 | "phpstan/phpstan-mockery": "^1.1", 1994 | "phpstan/phpstan-phpunit": "^1.3", 1995 | "phpunit/phpunit": "^9.5", 1996 | "psalm/plugin-mockery": "^1.1", 1997 | "psalm/plugin-phpunit": "^0.18.4", 1998 | "ramsey/coding-standard": "^2.0.3", 1999 | "ramsey/conventional-commits": "^1.3", 2000 | "vimeo/psalm": "^5.4" 2001 | }, 2002 | "type": "library", 2003 | "extra": { 2004 | "captainhook": { 2005 | "force-install": true 2006 | }, 2007 | "ramsey/conventional-commits": { 2008 | "configFile": "conventional-commits.json" 2009 | } 2010 | }, 2011 | "autoload": { 2012 | "psr-4": { 2013 | "Ramsey\\Collection\\": "src/" 2014 | } 2015 | }, 2016 | "notification-url": "https://packagist.org/downloads/", 2017 | "license": [ 2018 | "MIT" 2019 | ], 2020 | "authors": [ 2021 | { 2022 | "name": "Ben Ramsey", 2023 | "email": "ben@benramsey.com", 2024 | "homepage": "https://benramsey.com" 2025 | } 2026 | ], 2027 | "description": "A PHP library for representing and manipulating collections.", 2028 | "keywords": [ 2029 | "array", 2030 | "collection", 2031 | "hash", 2032 | "map", 2033 | "queue", 2034 | "set" 2035 | ], 2036 | "support": { 2037 | "issues": "https://github.com/ramsey/collection/issues", 2038 | "source": "https://github.com/ramsey/collection/tree/2.0.0" 2039 | }, 2040 | "funding": [ 2041 | { 2042 | "url": "https://github.com/ramsey", 2043 | "type": "github" 2044 | }, 2045 | { 2046 | "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", 2047 | "type": "tidelift" 2048 | } 2049 | ], 2050 | "time": "2022-12-31T21:50:55+00:00" 2051 | }, 2052 | { 2053 | "name": "ramsey/uuid", 2054 | "version": "4.x-dev", 2055 | "source": { 2056 | "type": "git", 2057 | "url": "https://github.com/ramsey/uuid.git", 2058 | "reference": "bf2bee216a4379eaf62162307d62bb7850405fec" 2059 | }, 2060 | "dist": { 2061 | "type": "zip", 2062 | "url": "https://api.github.com/repos/ramsey/uuid/zipball/bf2bee216a4379eaf62162307d62bb7850405fec", 2063 | "reference": "bf2bee216a4379eaf62162307d62bb7850405fec", 2064 | "shasum": "" 2065 | }, 2066 | "require": { 2067 | "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11", 2068 | "ext-json": "*", 2069 | "php": "^8.0", 2070 | "ramsey/collection": "^1.2 || ^2.0" 2071 | }, 2072 | "replace": { 2073 | "rhumsaa/uuid": "self.version" 2074 | }, 2075 | "require-dev": { 2076 | "captainhook/captainhook": "^5.10", 2077 | "captainhook/plugin-composer": "^5.3", 2078 | "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", 2079 | "doctrine/annotations": "^1.8", 2080 | "ergebnis/composer-normalize": "^2.15", 2081 | "mockery/mockery": "^1.3", 2082 | "paragonie/random-lib": "^2", 2083 | "php-mock/php-mock": "^2.2", 2084 | "php-mock/php-mock-mockery": "^1.3", 2085 | "php-parallel-lint/php-parallel-lint": "^1.1", 2086 | "phpbench/phpbench": "^1.0", 2087 | "phpstan/extension-installer": "^1.1", 2088 | "phpstan/phpstan": "^1.8", 2089 | "phpstan/phpstan-mockery": "^1.1", 2090 | "phpstan/phpstan-phpunit": "^1.1", 2091 | "phpunit/phpunit": "^8.5 || ^9", 2092 | "ramsey/composer-repl": "^1.4", 2093 | "slevomat/coding-standard": "^8.4", 2094 | "squizlabs/php_codesniffer": "^3.5", 2095 | "vimeo/psalm": "^4.9" 2096 | }, 2097 | "suggest": { 2098 | "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", 2099 | "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", 2100 | "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", 2101 | "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", 2102 | "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." 2103 | }, 2104 | "default-branch": true, 2105 | "type": "library", 2106 | "extra": { 2107 | "captainhook": { 2108 | "force-install": true 2109 | } 2110 | }, 2111 | "autoload": { 2112 | "files": [ 2113 | "src/functions.php" 2114 | ], 2115 | "psr-4": { 2116 | "Ramsey\\Uuid\\": "src/" 2117 | } 2118 | }, 2119 | "notification-url": "https://packagist.org/downloads/", 2120 | "license": [ 2121 | "MIT" 2122 | ], 2123 | "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", 2124 | "keywords": [ 2125 | "guid", 2126 | "identifier", 2127 | "uuid" 2128 | ], 2129 | "support": { 2130 | "issues": "https://github.com/ramsey/uuid/issues", 2131 | "source": "https://github.com/ramsey/uuid/tree/4.x" 2132 | }, 2133 | "funding": [ 2134 | { 2135 | "url": "https://github.com/ramsey", 2136 | "type": "github" 2137 | }, 2138 | { 2139 | "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", 2140 | "type": "tidelift" 2141 | } 2142 | ], 2143 | "time": "2023-02-07T16:14:23+00:00" 2144 | }, 2145 | { 2146 | "name": "symfony/console", 2147 | "version": "v6.2.7", 2148 | "source": { 2149 | "type": "git", 2150 | "url": "https://github.com/symfony/console.git", 2151 | "reference": "cbad09eb8925b6ad4fb721c7a179344dc4a19d45" 2152 | }, 2153 | "dist": { 2154 | "type": "zip", 2155 | "url": "https://api.github.com/repos/symfony/console/zipball/cbad09eb8925b6ad4fb721c7a179344dc4a19d45", 2156 | "reference": "cbad09eb8925b6ad4fb721c7a179344dc4a19d45", 2157 | "shasum": "" 2158 | }, 2159 | "require": { 2160 | "php": ">=8.1", 2161 | "symfony/deprecation-contracts": "^2.1|^3", 2162 | "symfony/polyfill-mbstring": "~1.0", 2163 | "symfony/service-contracts": "^1.1|^2|^3", 2164 | "symfony/string": "^5.4|^6.0" 2165 | }, 2166 | "conflict": { 2167 | "symfony/dependency-injection": "<5.4", 2168 | "symfony/dotenv": "<5.4", 2169 | "symfony/event-dispatcher": "<5.4", 2170 | "symfony/lock": "<5.4", 2171 | "symfony/process": "<5.4" 2172 | }, 2173 | "provide": { 2174 | "psr/log-implementation": "1.0|2.0|3.0" 2175 | }, 2176 | "require-dev": { 2177 | "psr/log": "^1|^2|^3", 2178 | "symfony/config": "^5.4|^6.0", 2179 | "symfony/dependency-injection": "^5.4|^6.0", 2180 | "symfony/event-dispatcher": "^5.4|^6.0", 2181 | "symfony/lock": "^5.4|^6.0", 2182 | "symfony/process": "^5.4|^6.0", 2183 | "symfony/var-dumper": "^5.4|^6.0" 2184 | }, 2185 | "suggest": { 2186 | "psr/log": "For using the console logger", 2187 | "symfony/event-dispatcher": "", 2188 | "symfony/lock": "", 2189 | "symfony/process": "" 2190 | }, 2191 | "type": "library", 2192 | "autoload": { 2193 | "psr-4": { 2194 | "Symfony\\Component\\Console\\": "" 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": "Eases the creation of beautiful and testable command line interfaces", 2215 | "homepage": "https://symfony.com", 2216 | "keywords": [ 2217 | "cli", 2218 | "command line", 2219 | "console", 2220 | "terminal" 2221 | ], 2222 | "support": { 2223 | "source": "https://github.com/symfony/console/tree/v6.2.7" 2224 | }, 2225 | "funding": [ 2226 | { 2227 | "url": "https://symfony.com/sponsor", 2228 | "type": "custom" 2229 | }, 2230 | { 2231 | "url": "https://github.com/fabpot", 2232 | "type": "github" 2233 | }, 2234 | { 2235 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2236 | "type": "tidelift" 2237 | } 2238 | ], 2239 | "time": "2023-02-25T17:00:03+00:00" 2240 | }, 2241 | { 2242 | "name": "symfony/css-selector", 2243 | "version": "v6.2.7", 2244 | "source": { 2245 | "type": "git", 2246 | "url": "https://github.com/symfony/css-selector.git", 2247 | "reference": "aedf3cb0f5b929ec255d96bbb4909e9932c769e0" 2248 | }, 2249 | "dist": { 2250 | "type": "zip", 2251 | "url": "https://api.github.com/repos/symfony/css-selector/zipball/aedf3cb0f5b929ec255d96bbb4909e9932c769e0", 2252 | "reference": "aedf3cb0f5b929ec255d96bbb4909e9932c769e0", 2253 | "shasum": "" 2254 | }, 2255 | "require": { 2256 | "php": ">=8.1" 2257 | }, 2258 | "type": "library", 2259 | "autoload": { 2260 | "psr-4": { 2261 | "Symfony\\Component\\CssSelector\\": "" 2262 | }, 2263 | "exclude-from-classmap": [ 2264 | "/Tests/" 2265 | ] 2266 | }, 2267 | "notification-url": "https://packagist.org/downloads/", 2268 | "license": [ 2269 | "MIT" 2270 | ], 2271 | "authors": [ 2272 | { 2273 | "name": "Fabien Potencier", 2274 | "email": "fabien@symfony.com" 2275 | }, 2276 | { 2277 | "name": "Jean-François Simon", 2278 | "email": "jeanfrancois.simon@sensiolabs.com" 2279 | }, 2280 | { 2281 | "name": "Symfony Community", 2282 | "homepage": "https://symfony.com/contributors" 2283 | } 2284 | ], 2285 | "description": "Converts CSS selectors to XPath expressions", 2286 | "homepage": "https://symfony.com", 2287 | "support": { 2288 | "source": "https://github.com/symfony/css-selector/tree/v6.2.7" 2289 | }, 2290 | "funding": [ 2291 | { 2292 | "url": "https://symfony.com/sponsor", 2293 | "type": "custom" 2294 | }, 2295 | { 2296 | "url": "https://github.com/fabpot", 2297 | "type": "github" 2298 | }, 2299 | { 2300 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2301 | "type": "tidelift" 2302 | } 2303 | ], 2304 | "time": "2023-02-14T08:44:56+00:00" 2305 | }, 2306 | { 2307 | "name": "symfony/deprecation-contracts", 2308 | "version": "v3.2.1", 2309 | "source": { 2310 | "type": "git", 2311 | "url": "https://github.com/symfony/deprecation-contracts.git", 2312 | "reference": "e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e" 2313 | }, 2314 | "dist": { 2315 | "type": "zip", 2316 | "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e", 2317 | "reference": "e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e", 2318 | "shasum": "" 2319 | }, 2320 | "require": { 2321 | "php": ">=8.1" 2322 | }, 2323 | "type": "library", 2324 | "extra": { 2325 | "branch-alias": { 2326 | "dev-main": "3.3-dev" 2327 | }, 2328 | "thanks": { 2329 | "name": "symfony/contracts", 2330 | "url": "https://github.com/symfony/contracts" 2331 | } 2332 | }, 2333 | "autoload": { 2334 | "files": [ 2335 | "function.php" 2336 | ] 2337 | }, 2338 | "notification-url": "https://packagist.org/downloads/", 2339 | "license": [ 2340 | "MIT" 2341 | ], 2342 | "authors": [ 2343 | { 2344 | "name": "Nicolas Grekas", 2345 | "email": "p@tchwork.com" 2346 | }, 2347 | { 2348 | "name": "Symfony Community", 2349 | "homepage": "https://symfony.com/contributors" 2350 | } 2351 | ], 2352 | "description": "A generic function and convention to trigger deprecation notices", 2353 | "homepage": "https://symfony.com", 2354 | "support": { 2355 | "source": "https://github.com/symfony/deprecation-contracts/tree/v3.2.1" 2356 | }, 2357 | "funding": [ 2358 | { 2359 | "url": "https://symfony.com/sponsor", 2360 | "type": "custom" 2361 | }, 2362 | { 2363 | "url": "https://github.com/fabpot", 2364 | "type": "github" 2365 | }, 2366 | { 2367 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2368 | "type": "tidelift" 2369 | } 2370 | ], 2371 | "time": "2023-03-01T10:25:55+00:00" 2372 | }, 2373 | { 2374 | "name": "symfony/error-handler", 2375 | "version": "v6.2.7", 2376 | "source": { 2377 | "type": "git", 2378 | "url": "https://github.com/symfony/error-handler.git", 2379 | "reference": "61e90f94eb014054000bc902257d2763fac09166" 2380 | }, 2381 | "dist": { 2382 | "type": "zip", 2383 | "url": "https://api.github.com/repos/symfony/error-handler/zipball/61e90f94eb014054000bc902257d2763fac09166", 2384 | "reference": "61e90f94eb014054000bc902257d2763fac09166", 2385 | "shasum": "" 2386 | }, 2387 | "require": { 2388 | "php": ">=8.1", 2389 | "psr/log": "^1|^2|^3", 2390 | "symfony/var-dumper": "^5.4|^6.0" 2391 | }, 2392 | "require-dev": { 2393 | "symfony/deprecation-contracts": "^2.1|^3", 2394 | "symfony/http-kernel": "^5.4|^6.0", 2395 | "symfony/serializer": "^5.4|^6.0" 2396 | }, 2397 | "bin": [ 2398 | "Resources/bin/patch-type-declarations" 2399 | ], 2400 | "type": "library", 2401 | "autoload": { 2402 | "psr-4": { 2403 | "Symfony\\Component\\ErrorHandler\\": "" 2404 | }, 2405 | "exclude-from-classmap": [ 2406 | "/Tests/" 2407 | ] 2408 | }, 2409 | "notification-url": "https://packagist.org/downloads/", 2410 | "license": [ 2411 | "MIT" 2412 | ], 2413 | "authors": [ 2414 | { 2415 | "name": "Fabien Potencier", 2416 | "email": "fabien@symfony.com" 2417 | }, 2418 | { 2419 | "name": "Symfony Community", 2420 | "homepage": "https://symfony.com/contributors" 2421 | } 2422 | ], 2423 | "description": "Provides tools to manage errors and ease debugging PHP code", 2424 | "homepage": "https://symfony.com", 2425 | "support": { 2426 | "source": "https://github.com/symfony/error-handler/tree/v6.2.7" 2427 | }, 2428 | "funding": [ 2429 | { 2430 | "url": "https://symfony.com/sponsor", 2431 | "type": "custom" 2432 | }, 2433 | { 2434 | "url": "https://github.com/fabpot", 2435 | "type": "github" 2436 | }, 2437 | { 2438 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2439 | "type": "tidelift" 2440 | } 2441 | ], 2442 | "time": "2023-02-14T08:44:56+00:00" 2443 | }, 2444 | { 2445 | "name": "symfony/event-dispatcher", 2446 | "version": "v6.2.7", 2447 | "source": { 2448 | "type": "git", 2449 | "url": "https://github.com/symfony/event-dispatcher.git", 2450 | "reference": "404b307de426c1c488e5afad64403e5f145e82a5" 2451 | }, 2452 | "dist": { 2453 | "type": "zip", 2454 | "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/404b307de426c1c488e5afad64403e5f145e82a5", 2455 | "reference": "404b307de426c1c488e5afad64403e5f145e82a5", 2456 | "shasum": "" 2457 | }, 2458 | "require": { 2459 | "php": ">=8.1", 2460 | "symfony/event-dispatcher-contracts": "^2|^3" 2461 | }, 2462 | "conflict": { 2463 | "symfony/dependency-injection": "<5.4" 2464 | }, 2465 | "provide": { 2466 | "psr/event-dispatcher-implementation": "1.0", 2467 | "symfony/event-dispatcher-implementation": "2.0|3.0" 2468 | }, 2469 | "require-dev": { 2470 | "psr/log": "^1|^2|^3", 2471 | "symfony/config": "^5.4|^6.0", 2472 | "symfony/dependency-injection": "^5.4|^6.0", 2473 | "symfony/error-handler": "^5.4|^6.0", 2474 | "symfony/expression-language": "^5.4|^6.0", 2475 | "symfony/http-foundation": "^5.4|^6.0", 2476 | "symfony/service-contracts": "^1.1|^2|^3", 2477 | "symfony/stopwatch": "^5.4|^6.0" 2478 | }, 2479 | "suggest": { 2480 | "symfony/dependency-injection": "", 2481 | "symfony/http-kernel": "" 2482 | }, 2483 | "type": "library", 2484 | "autoload": { 2485 | "psr-4": { 2486 | "Symfony\\Component\\EventDispatcher\\": "" 2487 | }, 2488 | "exclude-from-classmap": [ 2489 | "/Tests/" 2490 | ] 2491 | }, 2492 | "notification-url": "https://packagist.org/downloads/", 2493 | "license": [ 2494 | "MIT" 2495 | ], 2496 | "authors": [ 2497 | { 2498 | "name": "Fabien Potencier", 2499 | "email": "fabien@symfony.com" 2500 | }, 2501 | { 2502 | "name": "Symfony Community", 2503 | "homepage": "https://symfony.com/contributors" 2504 | } 2505 | ], 2506 | "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", 2507 | "homepage": "https://symfony.com", 2508 | "support": { 2509 | "source": "https://github.com/symfony/event-dispatcher/tree/v6.2.7" 2510 | }, 2511 | "funding": [ 2512 | { 2513 | "url": "https://symfony.com/sponsor", 2514 | "type": "custom" 2515 | }, 2516 | { 2517 | "url": "https://github.com/fabpot", 2518 | "type": "github" 2519 | }, 2520 | { 2521 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2522 | "type": "tidelift" 2523 | } 2524 | ], 2525 | "time": "2023-02-14T08:44:56+00:00" 2526 | }, 2527 | { 2528 | "name": "symfony/event-dispatcher-contracts", 2529 | "version": "v3.2.1", 2530 | "source": { 2531 | "type": "git", 2532 | "url": "https://github.com/symfony/event-dispatcher-contracts.git", 2533 | "reference": "0ad3b6f1e4e2da5690fefe075cd53a238646d8dd" 2534 | }, 2535 | "dist": { 2536 | "type": "zip", 2537 | "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/0ad3b6f1e4e2da5690fefe075cd53a238646d8dd", 2538 | "reference": "0ad3b6f1e4e2da5690fefe075cd53a238646d8dd", 2539 | "shasum": "" 2540 | }, 2541 | "require": { 2542 | "php": ">=8.1", 2543 | "psr/event-dispatcher": "^1" 2544 | }, 2545 | "suggest": { 2546 | "symfony/event-dispatcher-implementation": "" 2547 | }, 2548 | "type": "library", 2549 | "extra": { 2550 | "branch-alias": { 2551 | "dev-main": "3.3-dev" 2552 | }, 2553 | "thanks": { 2554 | "name": "symfony/contracts", 2555 | "url": "https://github.com/symfony/contracts" 2556 | } 2557 | }, 2558 | "autoload": { 2559 | "psr-4": { 2560 | "Symfony\\Contracts\\EventDispatcher\\": "" 2561 | } 2562 | }, 2563 | "notification-url": "https://packagist.org/downloads/", 2564 | "license": [ 2565 | "MIT" 2566 | ], 2567 | "authors": [ 2568 | { 2569 | "name": "Nicolas Grekas", 2570 | "email": "p@tchwork.com" 2571 | }, 2572 | { 2573 | "name": "Symfony Community", 2574 | "homepage": "https://symfony.com/contributors" 2575 | } 2576 | ], 2577 | "description": "Generic abstractions related to dispatching event", 2578 | "homepage": "https://symfony.com", 2579 | "keywords": [ 2580 | "abstractions", 2581 | "contracts", 2582 | "decoupling", 2583 | "interfaces", 2584 | "interoperability", 2585 | "standards" 2586 | ], 2587 | "support": { 2588 | "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.2.1" 2589 | }, 2590 | "funding": [ 2591 | { 2592 | "url": "https://symfony.com/sponsor", 2593 | "type": "custom" 2594 | }, 2595 | { 2596 | "url": "https://github.com/fabpot", 2597 | "type": "github" 2598 | }, 2599 | { 2600 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2601 | "type": "tidelift" 2602 | } 2603 | ], 2604 | "time": "2023-03-01T10:32:47+00:00" 2605 | }, 2606 | { 2607 | "name": "symfony/finder", 2608 | "version": "v6.2.7", 2609 | "source": { 2610 | "type": "git", 2611 | "url": "https://github.com/symfony/finder.git", 2612 | "reference": "20808dc6631aecafbe67c186af5dcb370be3a0eb" 2613 | }, 2614 | "dist": { 2615 | "type": "zip", 2616 | "url": "https://api.github.com/repos/symfony/finder/zipball/20808dc6631aecafbe67c186af5dcb370be3a0eb", 2617 | "reference": "20808dc6631aecafbe67c186af5dcb370be3a0eb", 2618 | "shasum": "" 2619 | }, 2620 | "require": { 2621 | "php": ">=8.1" 2622 | }, 2623 | "require-dev": { 2624 | "symfony/filesystem": "^6.0" 2625 | }, 2626 | "type": "library", 2627 | "autoload": { 2628 | "psr-4": { 2629 | "Symfony\\Component\\Finder\\": "" 2630 | }, 2631 | "exclude-from-classmap": [ 2632 | "/Tests/" 2633 | ] 2634 | }, 2635 | "notification-url": "https://packagist.org/downloads/", 2636 | "license": [ 2637 | "MIT" 2638 | ], 2639 | "authors": [ 2640 | { 2641 | "name": "Fabien Potencier", 2642 | "email": "fabien@symfony.com" 2643 | }, 2644 | { 2645 | "name": "Symfony Community", 2646 | "homepage": "https://symfony.com/contributors" 2647 | } 2648 | ], 2649 | "description": "Finds files and directories via an intuitive fluent interface", 2650 | "homepage": "https://symfony.com", 2651 | "support": { 2652 | "source": "https://github.com/symfony/finder/tree/v6.2.7" 2653 | }, 2654 | "funding": [ 2655 | { 2656 | "url": "https://symfony.com/sponsor", 2657 | "type": "custom" 2658 | }, 2659 | { 2660 | "url": "https://github.com/fabpot", 2661 | "type": "github" 2662 | }, 2663 | { 2664 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2665 | "type": "tidelift" 2666 | } 2667 | ], 2668 | "time": "2023-02-16T09:57:23+00:00" 2669 | }, 2670 | { 2671 | "name": "symfony/http-foundation", 2672 | "version": "v6.2.7", 2673 | "source": { 2674 | "type": "git", 2675 | "url": "https://github.com/symfony/http-foundation.git", 2676 | "reference": "5fc3038d4a594223f9ea42e4e985548f3fcc9a3b" 2677 | }, 2678 | "dist": { 2679 | "type": "zip", 2680 | "url": "https://api.github.com/repos/symfony/http-foundation/zipball/5fc3038d4a594223f9ea42e4e985548f3fcc9a3b", 2681 | "reference": "5fc3038d4a594223f9ea42e4e985548f3fcc9a3b", 2682 | "shasum": "" 2683 | }, 2684 | "require": { 2685 | "php": ">=8.1", 2686 | "symfony/deprecation-contracts": "^2.1|^3", 2687 | "symfony/polyfill-mbstring": "~1.1" 2688 | }, 2689 | "conflict": { 2690 | "symfony/cache": "<6.2" 2691 | }, 2692 | "require-dev": { 2693 | "predis/predis": "~1.0", 2694 | "symfony/cache": "^5.4|^6.0", 2695 | "symfony/dependency-injection": "^5.4|^6.0", 2696 | "symfony/expression-language": "^5.4|^6.0", 2697 | "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4", 2698 | "symfony/mime": "^5.4|^6.0", 2699 | "symfony/rate-limiter": "^5.2|^6.0" 2700 | }, 2701 | "suggest": { 2702 | "symfony/mime": "To use the file extension guesser" 2703 | }, 2704 | "type": "library", 2705 | "autoload": { 2706 | "psr-4": { 2707 | "Symfony\\Component\\HttpFoundation\\": "" 2708 | }, 2709 | "exclude-from-classmap": [ 2710 | "/Tests/" 2711 | ] 2712 | }, 2713 | "notification-url": "https://packagist.org/downloads/", 2714 | "license": [ 2715 | "MIT" 2716 | ], 2717 | "authors": [ 2718 | { 2719 | "name": "Fabien Potencier", 2720 | "email": "fabien@symfony.com" 2721 | }, 2722 | { 2723 | "name": "Symfony Community", 2724 | "homepage": "https://symfony.com/contributors" 2725 | } 2726 | ], 2727 | "description": "Defines an object-oriented layer for the HTTP specification", 2728 | "homepage": "https://symfony.com", 2729 | "support": { 2730 | "source": "https://github.com/symfony/http-foundation/tree/v6.2.7" 2731 | }, 2732 | "funding": [ 2733 | { 2734 | "url": "https://symfony.com/sponsor", 2735 | "type": "custom" 2736 | }, 2737 | { 2738 | "url": "https://github.com/fabpot", 2739 | "type": "github" 2740 | }, 2741 | { 2742 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2743 | "type": "tidelift" 2744 | } 2745 | ], 2746 | "time": "2023-02-21T10:54:55+00:00" 2747 | }, 2748 | { 2749 | "name": "symfony/http-kernel", 2750 | "version": "v6.2.7", 2751 | "source": { 2752 | "type": "git", 2753 | "url": "https://github.com/symfony/http-kernel.git", 2754 | "reference": "ca0680ad1e2d678536cc20e0ae33f9e4e5d2becd" 2755 | }, 2756 | "dist": { 2757 | "type": "zip", 2758 | "url": "https://api.github.com/repos/symfony/http-kernel/zipball/ca0680ad1e2d678536cc20e0ae33f9e4e5d2becd", 2759 | "reference": "ca0680ad1e2d678536cc20e0ae33f9e4e5d2becd", 2760 | "shasum": "" 2761 | }, 2762 | "require": { 2763 | "php": ">=8.1", 2764 | "psr/log": "^1|^2|^3", 2765 | "symfony/deprecation-contracts": "^2.1|^3", 2766 | "symfony/error-handler": "^6.1", 2767 | "symfony/event-dispatcher": "^5.4|^6.0", 2768 | "symfony/http-foundation": "^5.4.21|^6.2.7", 2769 | "symfony/polyfill-ctype": "^1.8" 2770 | }, 2771 | "conflict": { 2772 | "symfony/browser-kit": "<5.4", 2773 | "symfony/cache": "<5.4", 2774 | "symfony/config": "<6.1", 2775 | "symfony/console": "<5.4", 2776 | "symfony/dependency-injection": "<6.2", 2777 | "symfony/doctrine-bridge": "<5.4", 2778 | "symfony/form": "<5.4", 2779 | "symfony/http-client": "<5.4", 2780 | "symfony/mailer": "<5.4", 2781 | "symfony/messenger": "<5.4", 2782 | "symfony/translation": "<5.4", 2783 | "symfony/twig-bridge": "<5.4", 2784 | "symfony/validator": "<5.4", 2785 | "twig/twig": "<2.13" 2786 | }, 2787 | "provide": { 2788 | "psr/log-implementation": "1.0|2.0|3.0" 2789 | }, 2790 | "require-dev": { 2791 | "psr/cache": "^1.0|^2.0|^3.0", 2792 | "symfony/browser-kit": "^5.4|^6.0", 2793 | "symfony/config": "^6.1", 2794 | "symfony/console": "^5.4|^6.0", 2795 | "symfony/css-selector": "^5.4|^6.0", 2796 | "symfony/dependency-injection": "^6.2", 2797 | "symfony/dom-crawler": "^5.4|^6.0", 2798 | "symfony/expression-language": "^5.4|^6.0", 2799 | "symfony/finder": "^5.4|^6.0", 2800 | "symfony/http-client-contracts": "^1.1|^2|^3", 2801 | "symfony/process": "^5.4|^6.0", 2802 | "symfony/routing": "^5.4|^6.0", 2803 | "symfony/stopwatch": "^5.4|^6.0", 2804 | "symfony/translation": "^5.4|^6.0", 2805 | "symfony/translation-contracts": "^1.1|^2|^3", 2806 | "symfony/uid": "^5.4|^6.0", 2807 | "twig/twig": "^2.13|^3.0.4" 2808 | }, 2809 | "suggest": { 2810 | "symfony/browser-kit": "", 2811 | "symfony/config": "", 2812 | "symfony/console": "", 2813 | "symfony/dependency-injection": "" 2814 | }, 2815 | "type": "library", 2816 | "autoload": { 2817 | "psr-4": { 2818 | "Symfony\\Component\\HttpKernel\\": "" 2819 | }, 2820 | "exclude-from-classmap": [ 2821 | "/Tests/" 2822 | ] 2823 | }, 2824 | "notification-url": "https://packagist.org/downloads/", 2825 | "license": [ 2826 | "MIT" 2827 | ], 2828 | "authors": [ 2829 | { 2830 | "name": "Fabien Potencier", 2831 | "email": "fabien@symfony.com" 2832 | }, 2833 | { 2834 | "name": "Symfony Community", 2835 | "homepage": "https://symfony.com/contributors" 2836 | } 2837 | ], 2838 | "description": "Provides a structured process for converting a Request into a Response", 2839 | "homepage": "https://symfony.com", 2840 | "support": { 2841 | "source": "https://github.com/symfony/http-kernel/tree/v6.2.7" 2842 | }, 2843 | "funding": [ 2844 | { 2845 | "url": "https://symfony.com/sponsor", 2846 | "type": "custom" 2847 | }, 2848 | { 2849 | "url": "https://github.com/fabpot", 2850 | "type": "github" 2851 | }, 2852 | { 2853 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2854 | "type": "tidelift" 2855 | } 2856 | ], 2857 | "time": "2023-02-28T13:26:41+00:00" 2858 | }, 2859 | { 2860 | "name": "symfony/mailer", 2861 | "version": "v6.2.7", 2862 | "source": { 2863 | "type": "git", 2864 | "url": "https://github.com/symfony/mailer.git", 2865 | "reference": "e4f84c633b72ec70efc50b8016871c3bc43e691e" 2866 | }, 2867 | "dist": { 2868 | "type": "zip", 2869 | "url": "https://api.github.com/repos/symfony/mailer/zipball/e4f84c633b72ec70efc50b8016871c3bc43e691e", 2870 | "reference": "e4f84c633b72ec70efc50b8016871c3bc43e691e", 2871 | "shasum": "" 2872 | }, 2873 | "require": { 2874 | "egulias/email-validator": "^2.1.10|^3|^4", 2875 | "php": ">=8.1", 2876 | "psr/event-dispatcher": "^1", 2877 | "psr/log": "^1|^2|^3", 2878 | "symfony/event-dispatcher": "^5.4|^6.0", 2879 | "symfony/mime": "^6.2", 2880 | "symfony/service-contracts": "^1.1|^2|^3" 2881 | }, 2882 | "conflict": { 2883 | "symfony/http-kernel": "<5.4", 2884 | "symfony/messenger": "<6.2", 2885 | "symfony/mime": "<6.2", 2886 | "symfony/twig-bridge": "<6.2.1" 2887 | }, 2888 | "require-dev": { 2889 | "symfony/console": "^5.4|^6.0", 2890 | "symfony/http-client": "^5.4|^6.0", 2891 | "symfony/messenger": "^6.2", 2892 | "symfony/twig-bridge": "^6.2" 2893 | }, 2894 | "type": "library", 2895 | "autoload": { 2896 | "psr-4": { 2897 | "Symfony\\Component\\Mailer\\": "" 2898 | }, 2899 | "exclude-from-classmap": [ 2900 | "/Tests/" 2901 | ] 2902 | }, 2903 | "notification-url": "https://packagist.org/downloads/", 2904 | "license": [ 2905 | "MIT" 2906 | ], 2907 | "authors": [ 2908 | { 2909 | "name": "Fabien Potencier", 2910 | "email": "fabien@symfony.com" 2911 | }, 2912 | { 2913 | "name": "Symfony Community", 2914 | "homepage": "https://symfony.com/contributors" 2915 | } 2916 | ], 2917 | "description": "Helps sending emails", 2918 | "homepage": "https://symfony.com", 2919 | "support": { 2920 | "source": "https://github.com/symfony/mailer/tree/v6.2.7" 2921 | }, 2922 | "funding": [ 2923 | { 2924 | "url": "https://symfony.com/sponsor", 2925 | "type": "custom" 2926 | }, 2927 | { 2928 | "url": "https://github.com/fabpot", 2929 | "type": "github" 2930 | }, 2931 | { 2932 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2933 | "type": "tidelift" 2934 | } 2935 | ], 2936 | "time": "2023-02-21T10:35:38+00:00" 2937 | }, 2938 | { 2939 | "name": "symfony/mime", 2940 | "version": "v6.2.7", 2941 | "source": { 2942 | "type": "git", 2943 | "url": "https://github.com/symfony/mime.git", 2944 | "reference": "62e341f80699badb0ad70b31149c8df89a2d778e" 2945 | }, 2946 | "dist": { 2947 | "type": "zip", 2948 | "url": "https://api.github.com/repos/symfony/mime/zipball/62e341f80699badb0ad70b31149c8df89a2d778e", 2949 | "reference": "62e341f80699badb0ad70b31149c8df89a2d778e", 2950 | "shasum": "" 2951 | }, 2952 | "require": { 2953 | "php": ">=8.1", 2954 | "symfony/polyfill-intl-idn": "^1.10", 2955 | "symfony/polyfill-mbstring": "^1.0" 2956 | }, 2957 | "conflict": { 2958 | "egulias/email-validator": "~3.0.0", 2959 | "phpdocumentor/reflection-docblock": "<3.2.2", 2960 | "phpdocumentor/type-resolver": "<1.4.0", 2961 | "symfony/mailer": "<5.4", 2962 | "symfony/serializer": "<6.2" 2963 | }, 2964 | "require-dev": { 2965 | "egulias/email-validator": "^2.1.10|^3.1|^4", 2966 | "league/html-to-markdown": "^5.0", 2967 | "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", 2968 | "symfony/dependency-injection": "^5.4|^6.0", 2969 | "symfony/property-access": "^5.4|^6.0", 2970 | "symfony/property-info": "^5.4|^6.0", 2971 | "symfony/serializer": "^6.2" 2972 | }, 2973 | "type": "library", 2974 | "autoload": { 2975 | "psr-4": { 2976 | "Symfony\\Component\\Mime\\": "" 2977 | }, 2978 | "exclude-from-classmap": [ 2979 | "/Tests/" 2980 | ] 2981 | }, 2982 | "notification-url": "https://packagist.org/downloads/", 2983 | "license": [ 2984 | "MIT" 2985 | ], 2986 | "authors": [ 2987 | { 2988 | "name": "Fabien Potencier", 2989 | "email": "fabien@symfony.com" 2990 | }, 2991 | { 2992 | "name": "Symfony Community", 2993 | "homepage": "https://symfony.com/contributors" 2994 | } 2995 | ], 2996 | "description": "Allows manipulating MIME messages", 2997 | "homepage": "https://symfony.com", 2998 | "keywords": [ 2999 | "mime", 3000 | "mime-type" 3001 | ], 3002 | "support": { 3003 | "source": "https://github.com/symfony/mime/tree/v6.2.7" 3004 | }, 3005 | "funding": [ 3006 | { 3007 | "url": "https://symfony.com/sponsor", 3008 | "type": "custom" 3009 | }, 3010 | { 3011 | "url": "https://github.com/fabpot", 3012 | "type": "github" 3013 | }, 3014 | { 3015 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3016 | "type": "tidelift" 3017 | } 3018 | ], 3019 | "time": "2023-02-24T10:42:00+00:00" 3020 | }, 3021 | { 3022 | "name": "symfony/polyfill-ctype", 3023 | "version": "v1.27.0", 3024 | "source": { 3025 | "type": "git", 3026 | "url": "https://github.com/symfony/polyfill-ctype.git", 3027 | "reference": "5bbc823adecdae860bb64756d639ecfec17b050a" 3028 | }, 3029 | "dist": { 3030 | "type": "zip", 3031 | "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a", 3032 | "reference": "5bbc823adecdae860bb64756d639ecfec17b050a", 3033 | "shasum": "" 3034 | }, 3035 | "require": { 3036 | "php": ">=7.1" 3037 | }, 3038 | "provide": { 3039 | "ext-ctype": "*" 3040 | }, 3041 | "suggest": { 3042 | "ext-ctype": "For best performance" 3043 | }, 3044 | "type": "library", 3045 | "extra": { 3046 | "branch-alias": { 3047 | "dev-main": "1.27-dev" 3048 | }, 3049 | "thanks": { 3050 | "name": "symfony/polyfill", 3051 | "url": "https://github.com/symfony/polyfill" 3052 | } 3053 | }, 3054 | "autoload": { 3055 | "files": [ 3056 | "bootstrap.php" 3057 | ], 3058 | "psr-4": { 3059 | "Symfony\\Polyfill\\Ctype\\": "" 3060 | } 3061 | }, 3062 | "notification-url": "https://packagist.org/downloads/", 3063 | "license": [ 3064 | "MIT" 3065 | ], 3066 | "authors": [ 3067 | { 3068 | "name": "Gert de Pagter", 3069 | "email": "BackEndTea@gmail.com" 3070 | }, 3071 | { 3072 | "name": "Symfony Community", 3073 | "homepage": "https://symfony.com/contributors" 3074 | } 3075 | ], 3076 | "description": "Symfony polyfill for ctype functions", 3077 | "homepage": "https://symfony.com", 3078 | "keywords": [ 3079 | "compatibility", 3080 | "ctype", 3081 | "polyfill", 3082 | "portable" 3083 | ], 3084 | "support": { 3085 | "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0" 3086 | }, 3087 | "funding": [ 3088 | { 3089 | "url": "https://symfony.com/sponsor", 3090 | "type": "custom" 3091 | }, 3092 | { 3093 | "url": "https://github.com/fabpot", 3094 | "type": "github" 3095 | }, 3096 | { 3097 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3098 | "type": "tidelift" 3099 | } 3100 | ], 3101 | "time": "2022-11-03T14:55:06+00:00" 3102 | }, 3103 | { 3104 | "name": "symfony/polyfill-intl-grapheme", 3105 | "version": "v1.27.0", 3106 | "source": { 3107 | "type": "git", 3108 | "url": "https://github.com/symfony/polyfill-intl-grapheme.git", 3109 | "reference": "511a08c03c1960e08a883f4cffcacd219b758354" 3110 | }, 3111 | "dist": { 3112 | "type": "zip", 3113 | "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/511a08c03c1960e08a883f4cffcacd219b758354", 3114 | "reference": "511a08c03c1960e08a883f4cffcacd219b758354", 3115 | "shasum": "" 3116 | }, 3117 | "require": { 3118 | "php": ">=7.1" 3119 | }, 3120 | "suggest": { 3121 | "ext-intl": "For best performance" 3122 | }, 3123 | "type": "library", 3124 | "extra": { 3125 | "branch-alias": { 3126 | "dev-main": "1.27-dev" 3127 | }, 3128 | "thanks": { 3129 | "name": "symfony/polyfill", 3130 | "url": "https://github.com/symfony/polyfill" 3131 | } 3132 | }, 3133 | "autoload": { 3134 | "files": [ 3135 | "bootstrap.php" 3136 | ], 3137 | "psr-4": { 3138 | "Symfony\\Polyfill\\Intl\\Grapheme\\": "" 3139 | } 3140 | }, 3141 | "notification-url": "https://packagist.org/downloads/", 3142 | "license": [ 3143 | "MIT" 3144 | ], 3145 | "authors": [ 3146 | { 3147 | "name": "Nicolas Grekas", 3148 | "email": "p@tchwork.com" 3149 | }, 3150 | { 3151 | "name": "Symfony Community", 3152 | "homepage": "https://symfony.com/contributors" 3153 | } 3154 | ], 3155 | "description": "Symfony polyfill for intl's grapheme_* functions", 3156 | "homepage": "https://symfony.com", 3157 | "keywords": [ 3158 | "compatibility", 3159 | "grapheme", 3160 | "intl", 3161 | "polyfill", 3162 | "portable", 3163 | "shim" 3164 | ], 3165 | "support": { 3166 | "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.27.0" 3167 | }, 3168 | "funding": [ 3169 | { 3170 | "url": "https://symfony.com/sponsor", 3171 | "type": "custom" 3172 | }, 3173 | { 3174 | "url": "https://github.com/fabpot", 3175 | "type": "github" 3176 | }, 3177 | { 3178 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3179 | "type": "tidelift" 3180 | } 3181 | ], 3182 | "time": "2022-11-03T14:55:06+00:00" 3183 | }, 3184 | { 3185 | "name": "symfony/polyfill-intl-idn", 3186 | "version": "v1.27.0", 3187 | "source": { 3188 | "type": "git", 3189 | "url": "https://github.com/symfony/polyfill-intl-idn.git", 3190 | "reference": "639084e360537a19f9ee352433b84ce831f3d2da" 3191 | }, 3192 | "dist": { 3193 | "type": "zip", 3194 | "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/639084e360537a19f9ee352433b84ce831f3d2da", 3195 | "reference": "639084e360537a19f9ee352433b84ce831f3d2da", 3196 | "shasum": "" 3197 | }, 3198 | "require": { 3199 | "php": ">=7.1", 3200 | "symfony/polyfill-intl-normalizer": "^1.10", 3201 | "symfony/polyfill-php72": "^1.10" 3202 | }, 3203 | "suggest": { 3204 | "ext-intl": "For best performance" 3205 | }, 3206 | "type": "library", 3207 | "extra": { 3208 | "branch-alias": { 3209 | "dev-main": "1.27-dev" 3210 | }, 3211 | "thanks": { 3212 | "name": "symfony/polyfill", 3213 | "url": "https://github.com/symfony/polyfill" 3214 | } 3215 | }, 3216 | "autoload": { 3217 | "files": [ 3218 | "bootstrap.php" 3219 | ], 3220 | "psr-4": { 3221 | "Symfony\\Polyfill\\Intl\\Idn\\": "" 3222 | } 3223 | }, 3224 | "notification-url": "https://packagist.org/downloads/", 3225 | "license": [ 3226 | "MIT" 3227 | ], 3228 | "authors": [ 3229 | { 3230 | "name": "Laurent Bassin", 3231 | "email": "laurent@bassin.info" 3232 | }, 3233 | { 3234 | "name": "Trevor Rowbotham", 3235 | "email": "trevor.rowbotham@pm.me" 3236 | }, 3237 | { 3238 | "name": "Symfony Community", 3239 | "homepage": "https://symfony.com/contributors" 3240 | } 3241 | ], 3242 | "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", 3243 | "homepage": "https://symfony.com", 3244 | "keywords": [ 3245 | "compatibility", 3246 | "idn", 3247 | "intl", 3248 | "polyfill", 3249 | "portable", 3250 | "shim" 3251 | ], 3252 | "support": { 3253 | "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.27.0" 3254 | }, 3255 | "funding": [ 3256 | { 3257 | "url": "https://symfony.com/sponsor", 3258 | "type": "custom" 3259 | }, 3260 | { 3261 | "url": "https://github.com/fabpot", 3262 | "type": "github" 3263 | }, 3264 | { 3265 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3266 | "type": "tidelift" 3267 | } 3268 | ], 3269 | "time": "2022-11-03T14:55:06+00:00" 3270 | }, 3271 | { 3272 | "name": "symfony/polyfill-intl-normalizer", 3273 | "version": "v1.27.0", 3274 | "source": { 3275 | "type": "git", 3276 | "url": "https://github.com/symfony/polyfill-intl-normalizer.git", 3277 | "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6" 3278 | }, 3279 | "dist": { 3280 | "type": "zip", 3281 | "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6", 3282 | "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6", 3283 | "shasum": "" 3284 | }, 3285 | "require": { 3286 | "php": ">=7.1" 3287 | }, 3288 | "suggest": { 3289 | "ext-intl": "For best performance" 3290 | }, 3291 | "type": "library", 3292 | "extra": { 3293 | "branch-alias": { 3294 | "dev-main": "1.27-dev" 3295 | }, 3296 | "thanks": { 3297 | "name": "symfony/polyfill", 3298 | "url": "https://github.com/symfony/polyfill" 3299 | } 3300 | }, 3301 | "autoload": { 3302 | "files": [ 3303 | "bootstrap.php" 3304 | ], 3305 | "psr-4": { 3306 | "Symfony\\Polyfill\\Intl\\Normalizer\\": "" 3307 | }, 3308 | "classmap": [ 3309 | "Resources/stubs" 3310 | ] 3311 | }, 3312 | "notification-url": "https://packagist.org/downloads/", 3313 | "license": [ 3314 | "MIT" 3315 | ], 3316 | "authors": [ 3317 | { 3318 | "name": "Nicolas Grekas", 3319 | "email": "p@tchwork.com" 3320 | }, 3321 | { 3322 | "name": "Symfony Community", 3323 | "homepage": "https://symfony.com/contributors" 3324 | } 3325 | ], 3326 | "description": "Symfony polyfill for intl's Normalizer class and related functions", 3327 | "homepage": "https://symfony.com", 3328 | "keywords": [ 3329 | "compatibility", 3330 | "intl", 3331 | "normalizer", 3332 | "polyfill", 3333 | "portable", 3334 | "shim" 3335 | ], 3336 | "support": { 3337 | "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0" 3338 | }, 3339 | "funding": [ 3340 | { 3341 | "url": "https://symfony.com/sponsor", 3342 | "type": "custom" 3343 | }, 3344 | { 3345 | "url": "https://github.com/fabpot", 3346 | "type": "github" 3347 | }, 3348 | { 3349 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3350 | "type": "tidelift" 3351 | } 3352 | ], 3353 | "time": "2022-11-03T14:55:06+00:00" 3354 | }, 3355 | { 3356 | "name": "symfony/polyfill-mbstring", 3357 | "version": "v1.27.0", 3358 | "source": { 3359 | "type": "git", 3360 | "url": "https://github.com/symfony/polyfill-mbstring.git", 3361 | "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" 3362 | }, 3363 | "dist": { 3364 | "type": "zip", 3365 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534", 3366 | "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534", 3367 | "shasum": "" 3368 | }, 3369 | "require": { 3370 | "php": ">=7.1" 3371 | }, 3372 | "provide": { 3373 | "ext-mbstring": "*" 3374 | }, 3375 | "suggest": { 3376 | "ext-mbstring": "For best performance" 3377 | }, 3378 | "type": "library", 3379 | "extra": { 3380 | "branch-alias": { 3381 | "dev-main": "1.27-dev" 3382 | }, 3383 | "thanks": { 3384 | "name": "symfony/polyfill", 3385 | "url": "https://github.com/symfony/polyfill" 3386 | } 3387 | }, 3388 | "autoload": { 3389 | "files": [ 3390 | "bootstrap.php" 3391 | ], 3392 | "psr-4": { 3393 | "Symfony\\Polyfill\\Mbstring\\": "" 3394 | } 3395 | }, 3396 | "notification-url": "https://packagist.org/downloads/", 3397 | "license": [ 3398 | "MIT" 3399 | ], 3400 | "authors": [ 3401 | { 3402 | "name": "Nicolas Grekas", 3403 | "email": "p@tchwork.com" 3404 | }, 3405 | { 3406 | "name": "Symfony Community", 3407 | "homepage": "https://symfony.com/contributors" 3408 | } 3409 | ], 3410 | "description": "Symfony polyfill for the Mbstring extension", 3411 | "homepage": "https://symfony.com", 3412 | "keywords": [ 3413 | "compatibility", 3414 | "mbstring", 3415 | "polyfill", 3416 | "portable", 3417 | "shim" 3418 | ], 3419 | "support": { 3420 | "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0" 3421 | }, 3422 | "funding": [ 3423 | { 3424 | "url": "https://symfony.com/sponsor", 3425 | "type": "custom" 3426 | }, 3427 | { 3428 | "url": "https://github.com/fabpot", 3429 | "type": "github" 3430 | }, 3431 | { 3432 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3433 | "type": "tidelift" 3434 | } 3435 | ], 3436 | "time": "2022-11-03T14:55:06+00:00" 3437 | }, 3438 | { 3439 | "name": "symfony/polyfill-php72", 3440 | "version": "v1.27.0", 3441 | "source": { 3442 | "type": "git", 3443 | "url": "https://github.com/symfony/polyfill-php72.git", 3444 | "reference": "869329b1e9894268a8a61dabb69153029b7a8c97" 3445 | }, 3446 | "dist": { 3447 | "type": "zip", 3448 | "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/869329b1e9894268a8a61dabb69153029b7a8c97", 3449 | "reference": "869329b1e9894268a8a61dabb69153029b7a8c97", 3450 | "shasum": "" 3451 | }, 3452 | "require": { 3453 | "php": ">=7.1" 3454 | }, 3455 | "type": "library", 3456 | "extra": { 3457 | "branch-alias": { 3458 | "dev-main": "1.27-dev" 3459 | }, 3460 | "thanks": { 3461 | "name": "symfony/polyfill", 3462 | "url": "https://github.com/symfony/polyfill" 3463 | } 3464 | }, 3465 | "autoload": { 3466 | "files": [ 3467 | "bootstrap.php" 3468 | ], 3469 | "psr-4": { 3470 | "Symfony\\Polyfill\\Php72\\": "" 3471 | } 3472 | }, 3473 | "notification-url": "https://packagist.org/downloads/", 3474 | "license": [ 3475 | "MIT" 3476 | ], 3477 | "authors": [ 3478 | { 3479 | "name": "Nicolas Grekas", 3480 | "email": "p@tchwork.com" 3481 | }, 3482 | { 3483 | "name": "Symfony Community", 3484 | "homepage": "https://symfony.com/contributors" 3485 | } 3486 | ], 3487 | "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", 3488 | "homepage": "https://symfony.com", 3489 | "keywords": [ 3490 | "compatibility", 3491 | "polyfill", 3492 | "portable", 3493 | "shim" 3494 | ], 3495 | "support": { 3496 | "source": "https://github.com/symfony/polyfill-php72/tree/v1.27.0" 3497 | }, 3498 | "funding": [ 3499 | { 3500 | "url": "https://symfony.com/sponsor", 3501 | "type": "custom" 3502 | }, 3503 | { 3504 | "url": "https://github.com/fabpot", 3505 | "type": "github" 3506 | }, 3507 | { 3508 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3509 | "type": "tidelift" 3510 | } 3511 | ], 3512 | "time": "2022-11-03T14:55:06+00:00" 3513 | }, 3514 | { 3515 | "name": "symfony/polyfill-php80", 3516 | "version": "v1.27.0", 3517 | "source": { 3518 | "type": "git", 3519 | "url": "https://github.com/symfony/polyfill-php80.git", 3520 | "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936" 3521 | }, 3522 | "dist": { 3523 | "type": "zip", 3524 | "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", 3525 | "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", 3526 | "shasum": "" 3527 | }, 3528 | "require": { 3529 | "php": ">=7.1" 3530 | }, 3531 | "type": "library", 3532 | "extra": { 3533 | "branch-alias": { 3534 | "dev-main": "1.27-dev" 3535 | }, 3536 | "thanks": { 3537 | "name": "symfony/polyfill", 3538 | "url": "https://github.com/symfony/polyfill" 3539 | } 3540 | }, 3541 | "autoload": { 3542 | "files": [ 3543 | "bootstrap.php" 3544 | ], 3545 | "psr-4": { 3546 | "Symfony\\Polyfill\\Php80\\": "" 3547 | }, 3548 | "classmap": [ 3549 | "Resources/stubs" 3550 | ] 3551 | }, 3552 | "notification-url": "https://packagist.org/downloads/", 3553 | "license": [ 3554 | "MIT" 3555 | ], 3556 | "authors": [ 3557 | { 3558 | "name": "Ion Bazan", 3559 | "email": "ion.bazan@gmail.com" 3560 | }, 3561 | { 3562 | "name": "Nicolas Grekas", 3563 | "email": "p@tchwork.com" 3564 | }, 3565 | { 3566 | "name": "Symfony Community", 3567 | "homepage": "https://symfony.com/contributors" 3568 | } 3569 | ], 3570 | "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", 3571 | "homepage": "https://symfony.com", 3572 | "keywords": [ 3573 | "compatibility", 3574 | "polyfill", 3575 | "portable", 3576 | "shim" 3577 | ], 3578 | "support": { 3579 | "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0" 3580 | }, 3581 | "funding": [ 3582 | { 3583 | "url": "https://symfony.com/sponsor", 3584 | "type": "custom" 3585 | }, 3586 | { 3587 | "url": "https://github.com/fabpot", 3588 | "type": "github" 3589 | }, 3590 | { 3591 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3592 | "type": "tidelift" 3593 | } 3594 | ], 3595 | "time": "2022-11-03T14:55:06+00:00" 3596 | }, 3597 | { 3598 | "name": "symfony/polyfill-uuid", 3599 | "version": "v1.27.0", 3600 | "source": { 3601 | "type": "git", 3602 | "url": "https://github.com/symfony/polyfill-uuid.git", 3603 | "reference": "f3cf1a645c2734236ed1e2e671e273eeb3586166" 3604 | }, 3605 | "dist": { 3606 | "type": "zip", 3607 | "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/f3cf1a645c2734236ed1e2e671e273eeb3586166", 3608 | "reference": "f3cf1a645c2734236ed1e2e671e273eeb3586166", 3609 | "shasum": "" 3610 | }, 3611 | "require": { 3612 | "php": ">=7.1" 3613 | }, 3614 | "provide": { 3615 | "ext-uuid": "*" 3616 | }, 3617 | "suggest": { 3618 | "ext-uuid": "For best performance" 3619 | }, 3620 | "type": "library", 3621 | "extra": { 3622 | "branch-alias": { 3623 | "dev-main": "1.27-dev" 3624 | }, 3625 | "thanks": { 3626 | "name": "symfony/polyfill", 3627 | "url": "https://github.com/symfony/polyfill" 3628 | } 3629 | }, 3630 | "autoload": { 3631 | "files": [ 3632 | "bootstrap.php" 3633 | ], 3634 | "psr-4": { 3635 | "Symfony\\Polyfill\\Uuid\\": "" 3636 | } 3637 | }, 3638 | "notification-url": "https://packagist.org/downloads/", 3639 | "license": [ 3640 | "MIT" 3641 | ], 3642 | "authors": [ 3643 | { 3644 | "name": "Grégoire Pineau", 3645 | "email": "lyrixx@lyrixx.info" 3646 | }, 3647 | { 3648 | "name": "Symfony Community", 3649 | "homepage": "https://symfony.com/contributors" 3650 | } 3651 | ], 3652 | "description": "Symfony polyfill for uuid functions", 3653 | "homepage": "https://symfony.com", 3654 | "keywords": [ 3655 | "compatibility", 3656 | "polyfill", 3657 | "portable", 3658 | "uuid" 3659 | ], 3660 | "support": { 3661 | "source": "https://github.com/symfony/polyfill-uuid/tree/v1.27.0" 3662 | }, 3663 | "funding": [ 3664 | { 3665 | "url": "https://symfony.com/sponsor", 3666 | "type": "custom" 3667 | }, 3668 | { 3669 | "url": "https://github.com/fabpot", 3670 | "type": "github" 3671 | }, 3672 | { 3673 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3674 | "type": "tidelift" 3675 | } 3676 | ], 3677 | "time": "2022-11-03T14:55:06+00:00" 3678 | }, 3679 | { 3680 | "name": "symfony/process", 3681 | "version": "v6.2.7", 3682 | "source": { 3683 | "type": "git", 3684 | "url": "https://github.com/symfony/process.git", 3685 | "reference": "680e8a2ea6b3f87aecc07a6a65a203ae573d1902" 3686 | }, 3687 | "dist": { 3688 | "type": "zip", 3689 | "url": "https://api.github.com/repos/symfony/process/zipball/680e8a2ea6b3f87aecc07a6a65a203ae573d1902", 3690 | "reference": "680e8a2ea6b3f87aecc07a6a65a203ae573d1902", 3691 | "shasum": "" 3692 | }, 3693 | "require": { 3694 | "php": ">=8.1" 3695 | }, 3696 | "type": "library", 3697 | "autoload": { 3698 | "psr-4": { 3699 | "Symfony\\Component\\Process\\": "" 3700 | }, 3701 | "exclude-from-classmap": [ 3702 | "/Tests/" 3703 | ] 3704 | }, 3705 | "notification-url": "https://packagist.org/downloads/", 3706 | "license": [ 3707 | "MIT" 3708 | ], 3709 | "authors": [ 3710 | { 3711 | "name": "Fabien Potencier", 3712 | "email": "fabien@symfony.com" 3713 | }, 3714 | { 3715 | "name": "Symfony Community", 3716 | "homepage": "https://symfony.com/contributors" 3717 | } 3718 | ], 3719 | "description": "Executes commands in sub-processes", 3720 | "homepage": "https://symfony.com", 3721 | "support": { 3722 | "source": "https://github.com/symfony/process/tree/v6.2.7" 3723 | }, 3724 | "funding": [ 3725 | { 3726 | "url": "https://symfony.com/sponsor", 3727 | "type": "custom" 3728 | }, 3729 | { 3730 | "url": "https://github.com/fabpot", 3731 | "type": "github" 3732 | }, 3733 | { 3734 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3735 | "type": "tidelift" 3736 | } 3737 | ], 3738 | "time": "2023-02-24T10:42:00+00:00" 3739 | }, 3740 | { 3741 | "name": "symfony/routing", 3742 | "version": "v6.2.7", 3743 | "source": { 3744 | "type": "git", 3745 | "url": "https://github.com/symfony/routing.git", 3746 | "reference": "fa643fa4c56de161f8bc8c0492a76a60140b50e4" 3747 | }, 3748 | "dist": { 3749 | "type": "zip", 3750 | "url": "https://api.github.com/repos/symfony/routing/zipball/fa643fa4c56de161f8bc8c0492a76a60140b50e4", 3751 | "reference": "fa643fa4c56de161f8bc8c0492a76a60140b50e4", 3752 | "shasum": "" 3753 | }, 3754 | "require": { 3755 | "php": ">=8.1" 3756 | }, 3757 | "conflict": { 3758 | "doctrine/annotations": "<1.12", 3759 | "symfony/config": "<6.2", 3760 | "symfony/dependency-injection": "<5.4", 3761 | "symfony/yaml": "<5.4" 3762 | }, 3763 | "require-dev": { 3764 | "doctrine/annotations": "^1.12|^2", 3765 | "psr/log": "^1|^2|^3", 3766 | "symfony/config": "^6.2", 3767 | "symfony/dependency-injection": "^5.4|^6.0", 3768 | "symfony/expression-language": "^5.4|^6.0", 3769 | "symfony/http-foundation": "^5.4|^6.0", 3770 | "symfony/yaml": "^5.4|^6.0" 3771 | }, 3772 | "suggest": { 3773 | "symfony/config": "For using the all-in-one router or any loader", 3774 | "symfony/expression-language": "For using expression matching", 3775 | "symfony/http-foundation": "For using a Symfony Request object", 3776 | "symfony/yaml": "For using the YAML loader" 3777 | }, 3778 | "type": "library", 3779 | "autoload": { 3780 | "psr-4": { 3781 | "Symfony\\Component\\Routing\\": "" 3782 | }, 3783 | "exclude-from-classmap": [ 3784 | "/Tests/" 3785 | ] 3786 | }, 3787 | "notification-url": "https://packagist.org/downloads/", 3788 | "license": [ 3789 | "MIT" 3790 | ], 3791 | "authors": [ 3792 | { 3793 | "name": "Fabien Potencier", 3794 | "email": "fabien@symfony.com" 3795 | }, 3796 | { 3797 | "name": "Symfony Community", 3798 | "homepage": "https://symfony.com/contributors" 3799 | } 3800 | ], 3801 | "description": "Maps an HTTP request to a set of configuration variables", 3802 | "homepage": "https://symfony.com", 3803 | "keywords": [ 3804 | "router", 3805 | "routing", 3806 | "uri", 3807 | "url" 3808 | ], 3809 | "support": { 3810 | "source": "https://github.com/symfony/routing/tree/v6.2.7" 3811 | }, 3812 | "funding": [ 3813 | { 3814 | "url": "https://symfony.com/sponsor", 3815 | "type": "custom" 3816 | }, 3817 | { 3818 | "url": "https://github.com/fabpot", 3819 | "type": "github" 3820 | }, 3821 | { 3822 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3823 | "type": "tidelift" 3824 | } 3825 | ], 3826 | "time": "2023-02-14T08:53:37+00:00" 3827 | }, 3828 | { 3829 | "name": "symfony/service-contracts", 3830 | "version": "v3.2.1", 3831 | "source": { 3832 | "type": "git", 3833 | "url": "https://github.com/symfony/service-contracts.git", 3834 | "reference": "a8c9cedf55f314f3a186041d19537303766df09a" 3835 | }, 3836 | "dist": { 3837 | "type": "zip", 3838 | "url": "https://api.github.com/repos/symfony/service-contracts/zipball/a8c9cedf55f314f3a186041d19537303766df09a", 3839 | "reference": "a8c9cedf55f314f3a186041d19537303766df09a", 3840 | "shasum": "" 3841 | }, 3842 | "require": { 3843 | "php": ">=8.1", 3844 | "psr/container": "^2.0" 3845 | }, 3846 | "conflict": { 3847 | "ext-psr": "<1.1|>=2" 3848 | }, 3849 | "suggest": { 3850 | "symfony/service-implementation": "" 3851 | }, 3852 | "type": "library", 3853 | "extra": { 3854 | "branch-alias": { 3855 | "dev-main": "3.3-dev" 3856 | }, 3857 | "thanks": { 3858 | "name": "symfony/contracts", 3859 | "url": "https://github.com/symfony/contracts" 3860 | } 3861 | }, 3862 | "autoload": { 3863 | "psr-4": { 3864 | "Symfony\\Contracts\\Service\\": "" 3865 | }, 3866 | "exclude-from-classmap": [ 3867 | "/Test/" 3868 | ] 3869 | }, 3870 | "notification-url": "https://packagist.org/downloads/", 3871 | "license": [ 3872 | "MIT" 3873 | ], 3874 | "authors": [ 3875 | { 3876 | "name": "Nicolas Grekas", 3877 | "email": "p@tchwork.com" 3878 | }, 3879 | { 3880 | "name": "Symfony Community", 3881 | "homepage": "https://symfony.com/contributors" 3882 | } 3883 | ], 3884 | "description": "Generic abstractions related to writing services", 3885 | "homepage": "https://symfony.com", 3886 | "keywords": [ 3887 | "abstractions", 3888 | "contracts", 3889 | "decoupling", 3890 | "interfaces", 3891 | "interoperability", 3892 | "standards" 3893 | ], 3894 | "support": { 3895 | "source": "https://github.com/symfony/service-contracts/tree/v3.2.1" 3896 | }, 3897 | "funding": [ 3898 | { 3899 | "url": "https://symfony.com/sponsor", 3900 | "type": "custom" 3901 | }, 3902 | { 3903 | "url": "https://github.com/fabpot", 3904 | "type": "github" 3905 | }, 3906 | { 3907 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3908 | "type": "tidelift" 3909 | } 3910 | ], 3911 | "time": "2023-03-01T10:32:47+00:00" 3912 | }, 3913 | { 3914 | "name": "symfony/string", 3915 | "version": "v6.2.7", 3916 | "source": { 3917 | "type": "git", 3918 | "url": "https://github.com/symfony/string.git", 3919 | "reference": "67b8c1eec78296b85dc1c7d9743830160218993d" 3920 | }, 3921 | "dist": { 3922 | "type": "zip", 3923 | "url": "https://api.github.com/repos/symfony/string/zipball/67b8c1eec78296b85dc1c7d9743830160218993d", 3924 | "reference": "67b8c1eec78296b85dc1c7d9743830160218993d", 3925 | "shasum": "" 3926 | }, 3927 | "require": { 3928 | "php": ">=8.1", 3929 | "symfony/polyfill-ctype": "~1.8", 3930 | "symfony/polyfill-intl-grapheme": "~1.0", 3931 | "symfony/polyfill-intl-normalizer": "~1.0", 3932 | "symfony/polyfill-mbstring": "~1.0" 3933 | }, 3934 | "conflict": { 3935 | "symfony/translation-contracts": "<2.0" 3936 | }, 3937 | "require-dev": { 3938 | "symfony/error-handler": "^5.4|^6.0", 3939 | "symfony/http-client": "^5.4|^6.0", 3940 | "symfony/intl": "^6.2", 3941 | "symfony/translation-contracts": "^2.0|^3.0", 3942 | "symfony/var-exporter": "^5.4|^6.0" 3943 | }, 3944 | "type": "library", 3945 | "autoload": { 3946 | "files": [ 3947 | "Resources/functions.php" 3948 | ], 3949 | "psr-4": { 3950 | "Symfony\\Component\\String\\": "" 3951 | }, 3952 | "exclude-from-classmap": [ 3953 | "/Tests/" 3954 | ] 3955 | }, 3956 | "notification-url": "https://packagist.org/downloads/", 3957 | "license": [ 3958 | "MIT" 3959 | ], 3960 | "authors": [ 3961 | { 3962 | "name": "Nicolas Grekas", 3963 | "email": "p@tchwork.com" 3964 | }, 3965 | { 3966 | "name": "Symfony Community", 3967 | "homepage": "https://symfony.com/contributors" 3968 | } 3969 | ], 3970 | "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", 3971 | "homepage": "https://symfony.com", 3972 | "keywords": [ 3973 | "grapheme", 3974 | "i18n", 3975 | "string", 3976 | "unicode", 3977 | "utf-8", 3978 | "utf8" 3979 | ], 3980 | "support": { 3981 | "source": "https://github.com/symfony/string/tree/v6.2.7" 3982 | }, 3983 | "funding": [ 3984 | { 3985 | "url": "https://symfony.com/sponsor", 3986 | "type": "custom" 3987 | }, 3988 | { 3989 | "url": "https://github.com/fabpot", 3990 | "type": "github" 3991 | }, 3992 | { 3993 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3994 | "type": "tidelift" 3995 | } 3996 | ], 3997 | "time": "2023-02-24T10:42:00+00:00" 3998 | }, 3999 | { 4000 | "name": "symfony/translation", 4001 | "version": "v6.2.7", 4002 | "source": { 4003 | "type": "git", 4004 | "url": "https://github.com/symfony/translation.git", 4005 | "reference": "90db1c6138c90527917671cd9ffa9e8b359e3a73" 4006 | }, 4007 | "dist": { 4008 | "type": "zip", 4009 | "url": "https://api.github.com/repos/symfony/translation/zipball/90db1c6138c90527917671cd9ffa9e8b359e3a73", 4010 | "reference": "90db1c6138c90527917671cd9ffa9e8b359e3a73", 4011 | "shasum": "" 4012 | }, 4013 | "require": { 4014 | "php": ">=8.1", 4015 | "symfony/polyfill-mbstring": "~1.0", 4016 | "symfony/translation-contracts": "^2.3|^3.0" 4017 | }, 4018 | "conflict": { 4019 | "symfony/config": "<5.4", 4020 | "symfony/console": "<5.4", 4021 | "symfony/dependency-injection": "<5.4", 4022 | "symfony/http-kernel": "<5.4", 4023 | "symfony/twig-bundle": "<5.4", 4024 | "symfony/yaml": "<5.4" 4025 | }, 4026 | "provide": { 4027 | "symfony/translation-implementation": "2.3|3.0" 4028 | }, 4029 | "require-dev": { 4030 | "nikic/php-parser": "^4.13", 4031 | "psr/log": "^1|^2|^3", 4032 | "symfony/config": "^5.4|^6.0", 4033 | "symfony/console": "^5.4|^6.0", 4034 | "symfony/dependency-injection": "^5.4|^6.0", 4035 | "symfony/finder": "^5.4|^6.0", 4036 | "symfony/http-client-contracts": "^1.1|^2.0|^3.0", 4037 | "symfony/http-kernel": "^5.4|^6.0", 4038 | "symfony/intl": "^5.4|^6.0", 4039 | "symfony/polyfill-intl-icu": "^1.21", 4040 | "symfony/routing": "^5.4|^6.0", 4041 | "symfony/service-contracts": "^1.1.2|^2|^3", 4042 | "symfony/yaml": "^5.4|^6.0" 4043 | }, 4044 | "suggest": { 4045 | "nikic/php-parser": "To use PhpAstExtractor", 4046 | "psr/log-implementation": "To use logging capability in translator", 4047 | "symfony/config": "", 4048 | "symfony/yaml": "" 4049 | }, 4050 | "type": "library", 4051 | "autoload": { 4052 | "files": [ 4053 | "Resources/functions.php" 4054 | ], 4055 | "psr-4": { 4056 | "Symfony\\Component\\Translation\\": "" 4057 | }, 4058 | "exclude-from-classmap": [ 4059 | "/Tests/" 4060 | ] 4061 | }, 4062 | "notification-url": "https://packagist.org/downloads/", 4063 | "license": [ 4064 | "MIT" 4065 | ], 4066 | "authors": [ 4067 | { 4068 | "name": "Fabien Potencier", 4069 | "email": "fabien@symfony.com" 4070 | }, 4071 | { 4072 | "name": "Symfony Community", 4073 | "homepage": "https://symfony.com/contributors" 4074 | } 4075 | ], 4076 | "description": "Provides tools to internationalize your application", 4077 | "homepage": "https://symfony.com", 4078 | "support": { 4079 | "source": "https://github.com/symfony/translation/tree/v6.2.7" 4080 | }, 4081 | "funding": [ 4082 | { 4083 | "url": "https://symfony.com/sponsor", 4084 | "type": "custom" 4085 | }, 4086 | { 4087 | "url": "https://github.com/fabpot", 4088 | "type": "github" 4089 | }, 4090 | { 4091 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 4092 | "type": "tidelift" 4093 | } 4094 | ], 4095 | "time": "2023-02-24T10:42:00+00:00" 4096 | }, 4097 | { 4098 | "name": "symfony/translation-contracts", 4099 | "version": "v3.2.1", 4100 | "source": { 4101 | "type": "git", 4102 | "url": "https://github.com/symfony/translation-contracts.git", 4103 | "reference": "dfec258b9dd17a6b24420d464c43bffe347441c8" 4104 | }, 4105 | "dist": { 4106 | "type": "zip", 4107 | "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/dfec258b9dd17a6b24420d464c43bffe347441c8", 4108 | "reference": "dfec258b9dd17a6b24420d464c43bffe347441c8", 4109 | "shasum": "" 4110 | }, 4111 | "require": { 4112 | "php": ">=8.1" 4113 | }, 4114 | "suggest": { 4115 | "symfony/translation-implementation": "" 4116 | }, 4117 | "type": "library", 4118 | "extra": { 4119 | "branch-alias": { 4120 | "dev-main": "3.3-dev" 4121 | }, 4122 | "thanks": { 4123 | "name": "symfony/contracts", 4124 | "url": "https://github.com/symfony/contracts" 4125 | } 4126 | }, 4127 | "autoload": { 4128 | "psr-4": { 4129 | "Symfony\\Contracts\\Translation\\": "" 4130 | }, 4131 | "exclude-from-classmap": [ 4132 | "/Test/" 4133 | ] 4134 | }, 4135 | "notification-url": "https://packagist.org/downloads/", 4136 | "license": [ 4137 | "MIT" 4138 | ], 4139 | "authors": [ 4140 | { 4141 | "name": "Nicolas Grekas", 4142 | "email": "p@tchwork.com" 4143 | }, 4144 | { 4145 | "name": "Symfony Community", 4146 | "homepage": "https://symfony.com/contributors" 4147 | } 4148 | ], 4149 | "description": "Generic abstractions related to translation", 4150 | "homepage": "https://symfony.com", 4151 | "keywords": [ 4152 | "abstractions", 4153 | "contracts", 4154 | "decoupling", 4155 | "interfaces", 4156 | "interoperability", 4157 | "standards" 4158 | ], 4159 | "support": { 4160 | "source": "https://github.com/symfony/translation-contracts/tree/v3.2.1" 4161 | }, 4162 | "funding": [ 4163 | { 4164 | "url": "https://symfony.com/sponsor", 4165 | "type": "custom" 4166 | }, 4167 | { 4168 | "url": "https://github.com/fabpot", 4169 | "type": "github" 4170 | }, 4171 | { 4172 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 4173 | "type": "tidelift" 4174 | } 4175 | ], 4176 | "time": "2023-03-01T10:32:47+00:00" 4177 | }, 4178 | { 4179 | "name": "symfony/uid", 4180 | "version": "v6.2.7", 4181 | "source": { 4182 | "type": "git", 4183 | "url": "https://github.com/symfony/uid.git", 4184 | "reference": "d30c72a63897cfa043e1de4d4dd2ffa9ecefcdc0" 4185 | }, 4186 | "dist": { 4187 | "type": "zip", 4188 | "url": "https://api.github.com/repos/symfony/uid/zipball/d30c72a63897cfa043e1de4d4dd2ffa9ecefcdc0", 4189 | "reference": "d30c72a63897cfa043e1de4d4dd2ffa9ecefcdc0", 4190 | "shasum": "" 4191 | }, 4192 | "require": { 4193 | "php": ">=8.1", 4194 | "symfony/polyfill-uuid": "^1.15" 4195 | }, 4196 | "require-dev": { 4197 | "symfony/console": "^5.4|^6.0" 4198 | }, 4199 | "type": "library", 4200 | "autoload": { 4201 | "psr-4": { 4202 | "Symfony\\Component\\Uid\\": "" 4203 | }, 4204 | "exclude-from-classmap": [ 4205 | "/Tests/" 4206 | ] 4207 | }, 4208 | "notification-url": "https://packagist.org/downloads/", 4209 | "license": [ 4210 | "MIT" 4211 | ], 4212 | "authors": [ 4213 | { 4214 | "name": "Grégoire Pineau", 4215 | "email": "lyrixx@lyrixx.info" 4216 | }, 4217 | { 4218 | "name": "Nicolas Grekas", 4219 | "email": "p@tchwork.com" 4220 | }, 4221 | { 4222 | "name": "Symfony Community", 4223 | "homepage": "https://symfony.com/contributors" 4224 | } 4225 | ], 4226 | "description": "Provides an object-oriented API to generate and represent UIDs", 4227 | "homepage": "https://symfony.com", 4228 | "keywords": [ 4229 | "UID", 4230 | "ulid", 4231 | "uuid" 4232 | ], 4233 | "support": { 4234 | "source": "https://github.com/symfony/uid/tree/v6.2.7" 4235 | }, 4236 | "funding": [ 4237 | { 4238 | "url": "https://symfony.com/sponsor", 4239 | "type": "custom" 4240 | }, 4241 | { 4242 | "url": "https://github.com/fabpot", 4243 | "type": "github" 4244 | }, 4245 | { 4246 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 4247 | "type": "tidelift" 4248 | } 4249 | ], 4250 | "time": "2023-02-14T08:44:56+00:00" 4251 | }, 4252 | { 4253 | "name": "symfony/var-dumper", 4254 | "version": "v6.2.7", 4255 | "source": { 4256 | "type": "git", 4257 | "url": "https://github.com/symfony/var-dumper.git", 4258 | "reference": "cf8d4ca1ddc1e3cc242375deb8fc23e54f5e2a1e" 4259 | }, 4260 | "dist": { 4261 | "type": "zip", 4262 | "url": "https://api.github.com/repos/symfony/var-dumper/zipball/cf8d4ca1ddc1e3cc242375deb8fc23e54f5e2a1e", 4263 | "reference": "cf8d4ca1ddc1e3cc242375deb8fc23e54f5e2a1e", 4264 | "shasum": "" 4265 | }, 4266 | "require": { 4267 | "php": ">=8.1", 4268 | "symfony/polyfill-mbstring": "~1.0" 4269 | }, 4270 | "conflict": { 4271 | "phpunit/phpunit": "<5.4.3", 4272 | "symfony/console": "<5.4" 4273 | }, 4274 | "require-dev": { 4275 | "ext-iconv": "*", 4276 | "symfony/console": "^5.4|^6.0", 4277 | "symfony/process": "^5.4|^6.0", 4278 | "symfony/uid": "^5.4|^6.0", 4279 | "twig/twig": "^2.13|^3.0.4" 4280 | }, 4281 | "suggest": { 4282 | "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", 4283 | "ext-intl": "To show region name in time zone dump", 4284 | "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" 4285 | }, 4286 | "bin": [ 4287 | "Resources/bin/var-dump-server" 4288 | ], 4289 | "type": "library", 4290 | "autoload": { 4291 | "files": [ 4292 | "Resources/functions/dump.php" 4293 | ], 4294 | "psr-4": { 4295 | "Symfony\\Component\\VarDumper\\": "" 4296 | }, 4297 | "exclude-from-classmap": [ 4298 | "/Tests/" 4299 | ] 4300 | }, 4301 | "notification-url": "https://packagist.org/downloads/", 4302 | "license": [ 4303 | "MIT" 4304 | ], 4305 | "authors": [ 4306 | { 4307 | "name": "Nicolas Grekas", 4308 | "email": "p@tchwork.com" 4309 | }, 4310 | { 4311 | "name": "Symfony Community", 4312 | "homepage": "https://symfony.com/contributors" 4313 | } 4314 | ], 4315 | "description": "Provides mechanisms for walking through any arbitrary PHP variable", 4316 | "homepage": "https://symfony.com", 4317 | "keywords": [ 4318 | "debug", 4319 | "dump" 4320 | ], 4321 | "support": { 4322 | "source": "https://github.com/symfony/var-dumper/tree/v6.2.7" 4323 | }, 4324 | "funding": [ 4325 | { 4326 | "url": "https://symfony.com/sponsor", 4327 | "type": "custom" 4328 | }, 4329 | { 4330 | "url": "https://github.com/fabpot", 4331 | "type": "github" 4332 | }, 4333 | { 4334 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 4335 | "type": "tidelift" 4336 | } 4337 | ], 4338 | "time": "2023-02-24T10:42:00+00:00" 4339 | }, 4340 | { 4341 | "name": "tijsverkoyen/css-to-inline-styles", 4342 | "version": "2.2.6", 4343 | "source": { 4344 | "type": "git", 4345 | "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", 4346 | "reference": "c42125b83a4fa63b187fdf29f9c93cb7733da30c" 4347 | }, 4348 | "dist": { 4349 | "type": "zip", 4350 | "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/c42125b83a4fa63b187fdf29f9c93cb7733da30c", 4351 | "reference": "c42125b83a4fa63b187fdf29f9c93cb7733da30c", 4352 | "shasum": "" 4353 | }, 4354 | "require": { 4355 | "ext-dom": "*", 4356 | "ext-libxml": "*", 4357 | "php": "^5.5 || ^7.0 || ^8.0", 4358 | "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" 4359 | }, 4360 | "require-dev": { 4361 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" 4362 | }, 4363 | "type": "library", 4364 | "extra": { 4365 | "branch-alias": { 4366 | "dev-master": "2.2.x-dev" 4367 | } 4368 | }, 4369 | "autoload": { 4370 | "psr-4": { 4371 | "TijsVerkoyen\\CssToInlineStyles\\": "src" 4372 | } 4373 | }, 4374 | "notification-url": "https://packagist.org/downloads/", 4375 | "license": [ 4376 | "BSD-3-Clause" 4377 | ], 4378 | "authors": [ 4379 | { 4380 | "name": "Tijs Verkoyen", 4381 | "email": "css_to_inline_styles@verkoyen.eu", 4382 | "role": "Developer" 4383 | } 4384 | ], 4385 | "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.", 4386 | "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", 4387 | "support": { 4388 | "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", 4389 | "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.6" 4390 | }, 4391 | "time": "2023-01-03T09:29:04+00:00" 4392 | }, 4393 | { 4394 | "name": "vlucas/phpdotenv", 4395 | "version": "v5.5.0", 4396 | "source": { 4397 | "type": "git", 4398 | "url": "https://github.com/vlucas/phpdotenv.git", 4399 | "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7" 4400 | }, 4401 | "dist": { 4402 | "type": "zip", 4403 | "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7", 4404 | "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7", 4405 | "shasum": "" 4406 | }, 4407 | "require": { 4408 | "ext-pcre": "*", 4409 | "graham-campbell/result-type": "^1.0.2", 4410 | "php": "^7.1.3 || ^8.0", 4411 | "phpoption/phpoption": "^1.8", 4412 | "symfony/polyfill-ctype": "^1.23", 4413 | "symfony/polyfill-mbstring": "^1.23.1", 4414 | "symfony/polyfill-php80": "^1.23.1" 4415 | }, 4416 | "require-dev": { 4417 | "bamarni/composer-bin-plugin": "^1.4.1", 4418 | "ext-filter": "*", 4419 | "phpunit/phpunit": "^7.5.20 || ^8.5.30 || ^9.5.25" 4420 | }, 4421 | "suggest": { 4422 | "ext-filter": "Required to use the boolean validator." 4423 | }, 4424 | "type": "library", 4425 | "extra": { 4426 | "bamarni-bin": { 4427 | "bin-links": true, 4428 | "forward-command": true 4429 | }, 4430 | "branch-alias": { 4431 | "dev-master": "5.5-dev" 4432 | } 4433 | }, 4434 | "autoload": { 4435 | "psr-4": { 4436 | "Dotenv\\": "src/" 4437 | } 4438 | }, 4439 | "notification-url": "https://packagist.org/downloads/", 4440 | "license": [ 4441 | "BSD-3-Clause" 4442 | ], 4443 | "authors": [ 4444 | { 4445 | "name": "Graham Campbell", 4446 | "email": "hello@gjcampbell.co.uk", 4447 | "homepage": "https://github.com/GrahamCampbell" 4448 | }, 4449 | { 4450 | "name": "Vance Lucas", 4451 | "email": "vance@vancelucas.com", 4452 | "homepage": "https://github.com/vlucas" 4453 | } 4454 | ], 4455 | "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", 4456 | "keywords": [ 4457 | "dotenv", 4458 | "env", 4459 | "environment" 4460 | ], 4461 | "support": { 4462 | "issues": "https://github.com/vlucas/phpdotenv/issues", 4463 | "source": "https://github.com/vlucas/phpdotenv/tree/v5.5.0" 4464 | }, 4465 | "funding": [ 4466 | { 4467 | "url": "https://github.com/GrahamCampbell", 4468 | "type": "github" 4469 | }, 4470 | { 4471 | "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", 4472 | "type": "tidelift" 4473 | } 4474 | ], 4475 | "time": "2022-10-16T01:01:54+00:00" 4476 | }, 4477 | { 4478 | "name": "voku/portable-ascii", 4479 | "version": "2.0.1", 4480 | "source": { 4481 | "type": "git", 4482 | "url": "https://github.com/voku/portable-ascii.git", 4483 | "reference": "b56450eed252f6801410d810c8e1727224ae0743" 4484 | }, 4485 | "dist": { 4486 | "type": "zip", 4487 | "url": "https://api.github.com/repos/voku/portable-ascii/zipball/b56450eed252f6801410d810c8e1727224ae0743", 4488 | "reference": "b56450eed252f6801410d810c8e1727224ae0743", 4489 | "shasum": "" 4490 | }, 4491 | "require": { 4492 | "php": ">=7.0.0" 4493 | }, 4494 | "require-dev": { 4495 | "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0" 4496 | }, 4497 | "suggest": { 4498 | "ext-intl": "Use Intl for transliterator_transliterate() support" 4499 | }, 4500 | "type": "library", 4501 | "autoload": { 4502 | "psr-4": { 4503 | "voku\\": "src/voku/" 4504 | } 4505 | }, 4506 | "notification-url": "https://packagist.org/downloads/", 4507 | "license": [ 4508 | "MIT" 4509 | ], 4510 | "authors": [ 4511 | { 4512 | "name": "Lars Moelleken", 4513 | "homepage": "http://www.moelleken.org/" 4514 | } 4515 | ], 4516 | "description": "Portable ASCII library - performance optimized (ascii) string functions for php.", 4517 | "homepage": "https://github.com/voku/portable-ascii", 4518 | "keywords": [ 4519 | "ascii", 4520 | "clean", 4521 | "php" 4522 | ], 4523 | "support": { 4524 | "issues": "https://github.com/voku/portable-ascii/issues", 4525 | "source": "https://github.com/voku/portable-ascii/tree/2.0.1" 4526 | }, 4527 | "funding": [ 4528 | { 4529 | "url": "https://www.paypal.me/moelleken", 4530 | "type": "custom" 4531 | }, 4532 | { 4533 | "url": "https://github.com/voku", 4534 | "type": "github" 4535 | }, 4536 | { 4537 | "url": "https://opencollective.com/portable-ascii", 4538 | "type": "open_collective" 4539 | }, 4540 | { 4541 | "url": "https://www.patreon.com/voku", 4542 | "type": "patreon" 4543 | }, 4544 | { 4545 | "url": "https://tidelift.com/funding/github/packagist/voku/portable-ascii", 4546 | "type": "tidelift" 4547 | } 4548 | ], 4549 | "time": "2022-03-08T17:03:00+00:00" 4550 | }, 4551 | { 4552 | "name": "webmozart/assert", 4553 | "version": "1.11.0", 4554 | "source": { 4555 | "type": "git", 4556 | "url": "https://github.com/webmozarts/assert.git", 4557 | "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" 4558 | }, 4559 | "dist": { 4560 | "type": "zip", 4561 | "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", 4562 | "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", 4563 | "shasum": "" 4564 | }, 4565 | "require": { 4566 | "ext-ctype": "*", 4567 | "php": "^7.2 || ^8.0" 4568 | }, 4569 | "conflict": { 4570 | "phpstan/phpstan": "<0.12.20", 4571 | "vimeo/psalm": "<4.6.1 || 4.6.2" 4572 | }, 4573 | "require-dev": { 4574 | "phpunit/phpunit": "^8.5.13" 4575 | }, 4576 | "type": "library", 4577 | "extra": { 4578 | "branch-alias": { 4579 | "dev-master": "1.10-dev" 4580 | } 4581 | }, 4582 | "autoload": { 4583 | "psr-4": { 4584 | "Webmozart\\Assert\\": "src/" 4585 | } 4586 | }, 4587 | "notification-url": "https://packagist.org/downloads/", 4588 | "license": [ 4589 | "MIT" 4590 | ], 4591 | "authors": [ 4592 | { 4593 | "name": "Bernhard Schussek", 4594 | "email": "bschussek@gmail.com" 4595 | } 4596 | ], 4597 | "description": "Assertions to validate method input/output with nice error messages.", 4598 | "keywords": [ 4599 | "assert", 4600 | "check", 4601 | "validate" 4602 | ], 4603 | "support": { 4604 | "issues": "https://github.com/webmozarts/assert/issues", 4605 | "source": "https://github.com/webmozarts/assert/tree/1.11.0" 4606 | }, 4607 | "time": "2022-06-03T18:03:27+00:00" 4608 | } 4609 | ], 4610 | "packages-dev": [], 4611 | "aliases": [], 4612 | "minimum-stability": "dev", 4613 | "stability-flags": [], 4614 | "prefer-stable": true, 4615 | "prefer-lowest": false, 4616 | "platform": { 4617 | "php": ">=7.2" 4618 | }, 4619 | "platform-dev": [], 4620 | "plugin-api-version": "2.3.0" 4621 | } 4622 | -------------------------------------------------------------------------------- /config/telegram-logger.php: -------------------------------------------------------------------------------- 1 | env('TELEGRAM_BOT_TOKEN'), 14 | 15 | /* 16 | |-------------------------------------------------------------------------- 17 | | TELEGRAM CHAT ID 18 | |-------------------------------------------------------------------------- 19 | | 20 | | Defines the id of your Telegram group that will receive the messages. 21 | | 22 | */ 23 | 24 | 'chat_id' => env('TELEGRAM_CHAT_ID'), 25 | 26 | /* 27 | |-------------------------------------------------------------------------- 28 | | TELEGRAM BASE URL 29 | |-------------------------------------------------------------------------- 30 | | 31 | | Defines the base url of telegram. For countries block telegram servers, 32 | | this create a bridge for sending message to telegram. for more info see: 33 | | https://github.com/AmirrezaNasiri/telegram-web-bridge 34 | | 35 | */ 36 | 37 | 'base_url' => env('TELEGRAM_BASE_URL', 'https://api.telegram.org/'), 38 | ]; 39 | -------------------------------------------------------------------------------- /src/Services/TelegramService.php: -------------------------------------------------------------------------------- 1 | telegramApiBaseUrl = $telegramApiBaseUrl . 'bot'; 44 | $this->telegramApiSendMessageEndpoint = 'sendMessage'; 45 | $this->telegramBotToken = $telegramBotToken; 46 | $this->telegramChatId = $telegramChatId; 47 | } 48 | 49 | public function sendMessage(string $messageText) 50 | { 51 | $telegramApiSendMessageFullUrl = $this->telegramApiBaseUrl . $this->telegramBotToken . '/' . $this->telegramApiSendMessageEndpoint; 52 | $requestQueryData = $this->prepareRequestQuery($messageText); 53 | 54 | try { 55 | $responseStatusCode = $this->getResponseStatusCode($telegramApiSendMessageFullUrl . '?' . $requestQueryData); 56 | 57 | return $this->returnResponseOfApiByStatusCode($responseStatusCode); 58 | } catch (\Exception $exception) {} 59 | } 60 | 61 | private function prepareRequestQuery(string $messageText) 62 | { 63 | return http_build_query([ 64 | 'text' => $messageText, 65 | 'chat_id' => $this->telegramChatId, 66 | 'parse_mode' => 'html', 67 | ]); 68 | } 69 | 70 | private function returnResponseOfApiByStatusCode($responseStatusCode) 71 | { 72 | $responseMessages = [ 73 | '200' => 'Message has been sent.', 74 | '400' => 'Chat ID is not valid.', 75 | '401' => 'Bot Token is not valid.', 76 | '404' => 'Bot Token is not valid.', 77 | ]; 78 | 79 | return $responseMessages[$responseStatusCode] ?? null; 80 | } 81 | 82 | private function getResponseStatusCode(string $url): string 83 | { 84 | $requestHeaders = get_headers($url); 85 | $requestStatusCode = substr($requestHeaders[0], 9, 3); 86 | return $requestStatusCode; 87 | } 88 | } 89 | -------------------------------------------------------------------------------- /src/TelegramLogger.php: -------------------------------------------------------------------------------- 1 | applicationName = config('app.name'); 49 | $this->applicationEnvironment = config('app.env'); 50 | 51 | $this->telegramService = new TelegramService(config('telegram-logger.bot_token'), config('telegram-logger.chat_id'), config('telegram-logger.base_url')); 52 | } 53 | 54 | /** 55 | * Send log text to Telegram 56 | * 57 | * @param array $record 58 | * @return void 59 | */ 60 | protected function write(array $record): void 61 | { 62 | $this->telegramService->sendMessage($this->formatLogText($record)); 63 | } 64 | 65 | /** 66 | * Formart log text to send 67 | * 68 | * @var array $log 69 | * @return string 70 | */ 71 | protected function formatLogText(array $log): string 72 | { 73 | $logText = 'Application: ' . $this->applicationName . PHP_EOL; 74 | $logText .= 'Environment: ' . $this->applicationEnvironment . PHP_EOL; 75 | $logText .= 'Log Level: ' . $log['level_name'] . '' . PHP_EOL; 76 | 77 | if (!empty($log['extra'])) { 78 | $logText .= 'Extra:' . PHP_EOL . '' . json_encode($log['extra']) . '' . PHP_EOL; 79 | } 80 | 81 | if (!empty($log['context'])) { 82 | $logText .= 'Context:' . PHP_EOL . '' . json_encode($log['context']) . '' . PHP_EOL; 83 | } 84 | 85 | $logText .= 'Message:' . PHP_EOL . '
' . $log['message'] . '
'; 86 | 87 | return $logText; 88 | } 89 | } 90 | -------------------------------------------------------------------------------- /src/TelegramLoggerServiceProvider.php: -------------------------------------------------------------------------------- 1 | publishes([__DIR__ . '/../config/telegram-logger.php' => config_path('telegram-logger.php')]); 23 | } 24 | 25 | /** 26 | * Register bindings in the container. 27 | * 28 | * @return void 29 | */ 30 | public function register() 31 | { 32 | $this->mergeConfigFrom(__DIR__ . '/../config/telegram-logger.php', 'telegram-logger'); 33 | } 34 | } 35 | --------------------------------------------------------------------------------