├── public ├── favicon.ico ├── robots.txt ├── .htaccess └── index.php ├── database ├── seeds │ └── .gitkeep ├── migrations │ └── .gitkeep └── .gitignore ├── resources ├── views │ ├── vendor │ │ └── .gitkeep │ ├── welcome.blade.php │ └── errors │ │ └── 503.blade.php └── lang │ └── en │ ├── auth.php │ └── validation.php ├── storage ├── app │ └── .gitignore ├── logs │ └── .gitignore └── framework │ ├── cache │ └── .gitignore │ ├── views │ └── .gitignore │ ├── sessions │ └── .gitignore │ └── .gitignore ├── bootstrap ├── cache │ └── .gitignore ├── autoload.php └── app.php ├── config ├── services.php ├── administrators.json ├── compile.php ├── view.php ├── database.php ├── session.php └── app.php ├── .gitattributes ├── .gitignore ├── app ├── Events │ └── Event.php ├── Http │ ├── Requests │ │ └── Request.php │ ├── Middleware │ │ ├── EncryptCookies.php │ │ ├── VerifyCsrfToken.php │ │ └── Authenticate.php │ ├── Controllers │ │ └── Controller.php │ ├── routes.php │ └── Kernel.php ├── Providers │ ├── AppServiceProvider.php │ ├── AuthServiceProvider.php │ ├── EventServiceProvider.php │ └── RouteServiceProvider.php ├── Console │ └── Kernel.php ├── User.php └── Exceptions │ └── Handler.php ├── .env.example ├── .github ├── dependabot.yml └── workflows │ └── laravel.yml ├── package.json ├── .travis.yml ├── tests ├── app │ └── FailingRouteTest.php └── TestCase.php ├── server.php ├── phpunit.xml ├── composer.json ├── artisan ├── readme.md └── composer.lock /public/favicon.ico: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /database/seeds/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /database/migrations/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /database/.gitignore: -------------------------------------------------------------------------------- 1 | *.sqlite 2 | -------------------------------------------------------------------------------- /resources/views/vendor/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /storage/app/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /bootstrap/cache/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /storage/logs/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: 3 | -------------------------------------------------------------------------------- /storage/framework/cache/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /config/services.php: -------------------------------------------------------------------------------- 1 | call('GET', '/error'); 8 | $this->assertEquals(500, $response->getStatusCode()); 9 | } 10 | 11 | public function testCorrectRoute() 12 | { 13 | $response = $this->call('GET', '/'); 14 | $this->assertEquals(200, $response->getStatusCode()); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /public/.htaccess: -------------------------------------------------------------------------------- 1 | 2 | 3 | Options -MultiViews 4 | 5 | 6 | RewriteEngine On 7 | 8 | # Redirect Trailing Slashes If Not A Folder... 9 | RewriteCond %{REQUEST_FILENAME} !-d 10 | RewriteRule ^(.*)/$ /$1 [L,R=301] 11 | 12 | # Handle Front Controller... 13 | RewriteCond %{REQUEST_FILENAME} !-d 14 | RewriteCond %{REQUEST_FILENAME} !-f 15 | RewriteRule ^ index.php [L] 16 | 17 | -------------------------------------------------------------------------------- /app/Providers/AppServiceProvider.php: -------------------------------------------------------------------------------- 1 | make(Illuminate\Contracts\Console\Kernel::class)->bootstrap(); 22 | 23 | return $app; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /server.php: -------------------------------------------------------------------------------- 1 | 8 | */ 9 | 10 | $uri = urldecode( 11 | parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH) 12 | ); 13 | 14 | // This file allows us to emulate Apache's "mod_rewrite" functionality from the 15 | // built-in PHP web server. This provides a convenient way to test a Laravel 16 | // application without having installed a "real" web server software here. 17 | if ($uri !== '/' && file_exists(__DIR__.'/public'.$uri)) { 18 | return false; 19 | } 20 | 21 | require_once __DIR__.'/public/index.php'; 22 | -------------------------------------------------------------------------------- /app/Console/Kernel.php: -------------------------------------------------------------------------------- 1 | 'These credentials do not match our records.', 17 | 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', 18 | 19 | ]; 20 | -------------------------------------------------------------------------------- /app/Providers/AuthServiceProvider.php: -------------------------------------------------------------------------------- 1 | 'App\Policies\ModelPolicy', 17 | ]; 18 | 19 | /** 20 | * Register any application authentication / authorization services. 21 | * 22 | * @param \Illuminate\Contracts\Auth\Access\Gate $gate 23 | * @return void 24 | */ 25 | public function boot(GateContract $gate) 26 | { 27 | parent::registerPolicies($gate); 28 | 29 | // 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /app/Providers/EventServiceProvider.php: -------------------------------------------------------------------------------- 1 | [ 17 | 'App\Listeners\EventListener', 18 | ], 19 | ]; 20 | 21 | /** 22 | * Register any other events for your application. 23 | * 24 | * @param \Illuminate\Contracts\Events\Dispatcher $events 25 | * @return void 26 | */ 27 | public function boot(DispatcherContract $events) 28 | { 29 | parent::boot($events); 30 | 31 | // 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /phpunit.xml: -------------------------------------------------------------------------------- 1 | 2 | 12 | 13 | 14 | ./tests/ 15 | 16 | 17 | 18 | 19 | app/ 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /app/Http/Kernel.php: -------------------------------------------------------------------------------- 1 | \App\Http\Middleware\Authenticate::class, 30 | 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 31 | ]; 32 | } 33 | -------------------------------------------------------------------------------- /.github/workflows/laravel.yml: -------------------------------------------------------------------------------- 1 | name: Laravel 2 | 3 | on: 4 | push: 5 | branches: [ master ] 6 | pull_request: 7 | branches: [ master ] 8 | 9 | jobs: 10 | laravel-tests: 11 | 12 | runs-on: ubuntu-latest 13 | 14 | steps: 15 | - uses: shivammathur/setup-php@15c43e89cdef867065b0213be354c2841860869e 16 | with: 17 | php-version: '7.4' 18 | - uses: actions/checkout@v2 19 | - name: Copy .env 20 | run: php -r "file_exists('.env') || copy('.env.example', '.env');" 21 | - name: Install Dependencies 22 | run: composer install --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist 23 | - name: Generate key 24 | run: php artisan key:generate 25 | - name: Directory Permissions 26 | run: chmod -R 777 storage bootstrap/cache 27 | - name: Create Database 28 | run: | 29 | mkdir -p database 30 | touch database/database.sqlite 31 | - name: Execute tests (Unit and Feature tests) via PHPUnit 32 | env: 33 | DB_CONNECTION: sqlite 34 | DB_DATABASE: database/database.sqlite 35 | run: vendor/bin/phpunit 36 | -------------------------------------------------------------------------------- /app/Http/Middleware/Authenticate.php: -------------------------------------------------------------------------------- 1 | auth = $auth; 26 | } 27 | 28 | /** 29 | * Handle an incoming request. 30 | * 31 | * @param \Illuminate\Http\Request $request 32 | * @param \Closure $next 33 | * @return mixed 34 | */ 35 | public function handle($request, Closure $next) 36 | { 37 | if ($this->auth->guest()) { 38 | if ($request->ajax()) { 39 | return response('Unauthorized.', 401); 40 | } else { 41 | return redirect()->guest('auth/login'); 42 | } 43 | } 44 | 45 | return $next($request); 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /config/compile.php: -------------------------------------------------------------------------------- 1 | [ 17 | // 18 | ], 19 | 20 | /* 21 | |-------------------------------------------------------------------------- 22 | | Compiled File Providers 23 | |-------------------------------------------------------------------------- 24 | | 25 | | Here you may list service providers which define a "compiles" function 26 | | that returns additional files that should be compiled, providing an 27 | | easy way to get common files from any packages you are utilizing. 28 | | 29 | */ 30 | 31 | 'providers' => [ 32 | // 33 | ], 34 | 35 | ]; 36 | -------------------------------------------------------------------------------- /config/view.php: -------------------------------------------------------------------------------- 1 | [ 17 | realpath(base_path('resources/views')), 18 | ], 19 | 20 | /* 21 | |-------------------------------------------------------------------------- 22 | | Compiled View Path 23 | |-------------------------------------------------------------------------- 24 | | 25 | | This option determines where all the compiled Blade templates will be 26 | | stored for your application. Typically, this is within the storage 27 | | directory. However, as usual, you are free to change this value. 28 | | 29 | */ 30 | 31 | 'compiled' => realpath(storage_path('framework/views')), 32 | 33 | ]; 34 | -------------------------------------------------------------------------------- /bootstrap/autoload.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Laravel 5 | 6 | 7 | 8 | 37 | 38 | 39 |
40 |
41 |
Laravel 5
42 |
43 |
44 | 45 | 46 | -------------------------------------------------------------------------------- /app/Providers/RouteServiceProvider.php: -------------------------------------------------------------------------------- 1 | group(['namespace' => $this->namespace], function ($router) { 41 | require app_path('Http/routes.php'); 42 | }); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /app/User.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Be right back. 5 | 6 | 7 | 8 | 39 | 40 | 41 |
42 |
43 |
Be right back.
44 |
45 |
46 | 47 | 48 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "twilio-deved/server-notifications-laravel", 3 | "description": "Send SMS notifications whenever a Laravel error happens", 4 | "keywords": ["twilio", "sms", "notfications", "laravel"], 5 | "license": "MIT", 6 | "type": "project", 7 | "require": { 8 | "php": ">=5.5.9", 9 | "laravel/framework": "5.1.*", 10 | "twilio/sdk": "^6.0" 11 | }, 12 | "require-dev": { 13 | "phpunit/phpunit": "4.8.28" 14 | }, 15 | "autoload": { 16 | "classmap": [ 17 | "database" 18 | ], 19 | "psr-4": { 20 | "App\\": "app/" 21 | } 22 | }, 23 | "autoload-dev": { 24 | "classmap": [ 25 | "tests/TestCase.php" 26 | ] 27 | }, 28 | "scripts": { 29 | "post-install-cmd": [ 30 | "php artisan clear-compiled", 31 | "php artisan optimize" 32 | ], 33 | "pre-update-cmd": [ 34 | "php artisan clear-compiled" 35 | ], 36 | "post-update-cmd": [ 37 | "php artisan optimize" 38 | ], 39 | "post-root-package-install": [ 40 | "php -r \"copy('.env.example', '.env');\"" 41 | ], 42 | "post-create-project-cmd": [ 43 | "php artisan key:generate" 44 | ] 45 | }, 46 | "config": { 47 | "preferred-install": "dist" 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /bootstrap/app.php: -------------------------------------------------------------------------------- 1 | singleton( 30 | Illuminate\Contracts\Http\Kernel::class, 31 | App\Http\Kernel::class 32 | ); 33 | 34 | $app->singleton( 35 | Illuminate\Contracts\Console\Kernel::class, 36 | App\Console\Kernel::class 37 | ); 38 | 39 | $app->singleton( 40 | Illuminate\Contracts\Debug\ExceptionHandler::class, 41 | App\Exceptions\Handler::class 42 | ); 43 | 44 | /* 45 | |-------------------------------------------------------------------------- 46 | | Return The Application 47 | |-------------------------------------------------------------------------- 48 | | 49 | | This script returns the application instance. The instance is given to 50 | | the calling script so we can separate the building of the instances 51 | | from the actual running of the application and sending responses. 52 | | 53 | */ 54 | 55 | return $app; 56 | -------------------------------------------------------------------------------- /artisan: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env php 2 | make(Illuminate\Contracts\Console\Kernel::class); 32 | 33 | $status = $kernel->handle( 34 | $input = new Symfony\Component\Console\Input\ArgvInput, 35 | new Symfony\Component\Console\Output\ConsoleOutput 36 | ); 37 | 38 | /* 39 | |-------------------------------------------------------------------------- 40 | | Shutdown The Application 41 | |-------------------------------------------------------------------------- 42 | | 43 | | Once Artisan has finished running. We will fire off the shutdown events 44 | | so that any final work may be done by the application before we shut 45 | | down the process. This is the last thing to happen to the request. 46 | | 47 | */ 48 | 49 | $kernel->terminate($input, $status); 50 | 51 | exit($status); 52 | -------------------------------------------------------------------------------- /public/index.php: -------------------------------------------------------------------------------- 1 | 8 | */ 9 | 10 | /* 11 | |-------------------------------------------------------------------------- 12 | | Register The Auto Loader 13 | |-------------------------------------------------------------------------- 14 | | 15 | | Composer provides a convenient, automatically generated class loader for 16 | | our application. We just need to utilize it! We'll simply require it 17 | | into the script here so that we don't have to worry about manual 18 | | loading any of our classes later on. It feels nice to relax. 19 | | 20 | */ 21 | 22 | require __DIR__.'/../bootstrap/autoload.php'; 23 | 24 | /* 25 | |-------------------------------------------------------------------------- 26 | | Turn On The Lights 27 | |-------------------------------------------------------------------------- 28 | | 29 | | We need to illuminate PHP development, so let us turn on the lights. 30 | | This bootstraps the framework and gets it ready for use, then it 31 | | will load up this application so that we can run it and send 32 | | the responses back to the browser and delight our users. 33 | | 34 | */ 35 | 36 | $app = require_once __DIR__.'/../bootstrap/app.php'; 37 | 38 | /* 39 | |-------------------------------------------------------------------------- 40 | | Run The Application 41 | |-------------------------------------------------------------------------- 42 | | 43 | | Once we have the application, we can handle the incoming request 44 | | through the kernel, and send the associated response back to 45 | | the client's browser allowing them to enjoy the creative 46 | | and wonderful application we have prepared for them. 47 | | 48 | */ 49 | 50 | $kernel = $app->make(Illuminate\Contracts\Http\Kernel::class); 51 | 52 | $response = $kernel->handle( 53 | $request = Illuminate\Http\Request::capture() 54 | ); 55 | 56 | $response->send(); 57 | 58 | $kernel->terminate($request, $response); 59 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | 2 | Twilio 3 | 4 | 5 | # Server Notifications & Alerts with Twilio and Laravel 6 | 7 | [![Build Status](https://github.com/TwilioDevEd/server-notifications-laravel/actions/workflows/laravel.yml/badge.svg)](https://github.com/TwilioDevEd/server-notifications-node/actions/workflows/laravel.yml) 8 | 9 | Use Twilio to create SMS alerts so that you never miss a critical issue. 10 | 11 | [Read the full tutorial here](https://www.twilio.com/docs/tutorials/walkthrough/server-notifications/php/laravel)! 12 | 13 | ## Local Development 14 | 15 | 1. Grab latest source 16 | 17 | ```bash 18 | git clone git@github.com:TwilioDevEd/server-notifications-laravel.git 19 | ``` 20 | 21 | 1. Copy the sample configuration file and edit it to match your configuration. 22 | 23 | ```bash 24 | cp .env.example .env 25 | ``` 26 | You can find your `TWILIO_ACCOUNT_SID` and `TWILIO_AUTH_TOKEN` under 27 | your [Twilio Account Settings](https://www.twilio.com/user/account/settings). 28 | You can buy Twilio phone numbers at 29 | [Twilio numbers](https://www.twilio.com/user/account/phone-numbers/search) 30 | `TWILIO_NUMBER` should be set to the phone number you purchased above. 31 | `TWILIO_RR_NUMBER` should be set to a Twilio number too. 32 | 33 | 1. Customize `config/administrators.json` with your name and phone number. 34 | 35 | 1. Install the dependencies with [Composer](https://getcomposer.org/). 36 | 37 | ```bash 38 | composer install 39 | ``` 40 | 41 | 1. Generate an `APP_KEY`. 42 | 43 | ```bash 44 | php artisan key:generate 45 | ``` 46 | 47 | 1. Start the server. 48 | 49 | ```bash 50 | php artisan serve 51 | ``` 52 | 53 | ### How To Demo? 54 | 55 | Visit the application's error route at 56 | [http://localhost:8000/error](http://localhost:8000/error). You'll 57 | soon get a message informing you of an error. 58 | 59 | ## Meta 60 | 61 | * No warranty expressed or implied. Software is as is. Diggity. 62 | * [MIT License](http://www.opensource.org/licenses/mit-license.html) 63 | * Lovingly crafted by Twilio Developer Education. 64 | -------------------------------------------------------------------------------- /app/Exceptions/Handler.php: -------------------------------------------------------------------------------- 1 | _notifyThroughSms($e); 38 | return parent::report($e); 39 | } 40 | 41 | /** 42 | * Render an exception into an HTTP response. 43 | * 44 | * @param \Illuminate\Http\Request $request 45 | * @param \Exception $e 46 | * @return \Illuminate\Http\Response 47 | */ 48 | public function render($request, Exception $e) 49 | { 50 | if ($e instanceof ModelNotFoundException) { 51 | $e = new NotFoundHttpException($e->getMessage(), $e); 52 | } 53 | 54 | return parent::render($request, $e); 55 | } 56 | 57 | private function _notifyThroughSms($e) 58 | { 59 | foreach ($this->_notificationRecipients() as $recipient) { 60 | $this->_sendSms( 61 | $recipient->phone_number, 62 | '[This is a test] It appears the server' . 63 | ' is having issues. Exception: ' . $e->getMessage() . 64 | ' Go to http://newrelic.com for more details.' 65 | ); 66 | } 67 | } 68 | 69 | private function _notificationRecipients() 70 | { 71 | $adminsFile = base_path() . 72 | DIRECTORY_SEPARATOR . 73 | 'config' . DIRECTORY_SEPARATOR . 74 | 'administrators.json'; 75 | try { 76 | $adminsFileContents = \File::get($adminsFile); 77 | 78 | return json_decode($adminsFileContents); 79 | } catch (FileNotFoundException $e) { 80 | Log::error( 81 | 'Could not find ' . 82 | $adminsFile . 83 | ' to notify admins through SMS' 84 | ); 85 | return []; 86 | } 87 | } 88 | 89 | private function _sendSms($to, $message) 90 | { 91 | $accountSid = env('TWILIO_ACCOUNT_SID'); 92 | $authToken = env('TWILIO_AUTH_TOKEN'); 93 | $twilioNumber = env('TWILIO_NUMBER'); 94 | 95 | $client = new Client($accountSid, $authToken); 96 | 97 | try { 98 | $client->messages->create( 99 | $to, 100 | [ 101 | "body" => $message, 102 | "from" => $twilioNumber 103 | // On US phone numbers, you could send an image as well! 104 | // 'mediaUrl' => $imageUrl 105 | ] 106 | ); 107 | Log::info('Message sent to ' . $to); 108 | } catch (TwilioException $e) { 109 | Log::error( 110 | 'Could not send SMS notification.' . 111 | ' Twilio replied with: ' . $e 112 | ); 113 | } 114 | } 115 | } 116 | -------------------------------------------------------------------------------- /config/database.php: -------------------------------------------------------------------------------- 1 | PDO::FETCH_CLASS, 17 | 18 | /* 19 | |-------------------------------------------------------------------------- 20 | | Default Database Connection Name 21 | |-------------------------------------------------------------------------- 22 | | 23 | | Here you may specify which of the database connections below you wish 24 | | to use as your default connection for all database work. Of course 25 | | you may use many connections at once using the Database library. 26 | | 27 | */ 28 | 29 | 'default' => env('DB_CONNECTION', 'mysql'), 30 | 31 | /* 32 | |-------------------------------------------------------------------------- 33 | | Database Connections 34 | |-------------------------------------------------------------------------- 35 | | 36 | | Here are each of the database connections setup for your application. 37 | | Of course, examples of configuring each database platform that is 38 | | supported by Laravel is shown below to make development simple. 39 | | 40 | | 41 | | All database work in Laravel is done through the PHP PDO facilities 42 | | so make sure you have the driver for your particular database of 43 | | choice installed on your machine before you begin development. 44 | | 45 | */ 46 | 47 | 'connections' => [ 48 | 49 | 'sqlite' => [ 50 | 'driver' => 'sqlite', 51 | 'database' => storage_path('database.sqlite'), 52 | 'prefix' => '', 53 | ], 54 | 55 | 'mysql' => [ 56 | 'driver' => 'mysql', 57 | 'host' => env('DB_HOST', 'localhost'), 58 | 'database' => env('DB_DATABASE', 'forge'), 59 | 'username' => env('DB_USERNAME', 'forge'), 60 | 'password' => env('DB_PASSWORD', ''), 61 | 'charset' => 'utf8', 62 | 'collation' => 'utf8_unicode_ci', 63 | 'prefix' => '', 64 | 'strict' => false, 65 | ], 66 | 67 | 'pgsql' => [ 68 | 'driver' => 'pgsql', 69 | 'host' => env('DB_HOST', 'localhost'), 70 | 'database' => env('DB_DATABASE', 'forge'), 71 | 'username' => env('DB_USERNAME', 'forge'), 72 | 'password' => env('DB_PASSWORD', ''), 73 | 'charset' => 'utf8', 74 | 'prefix' => '', 75 | 'schema' => 'public', 76 | ], 77 | 78 | 'sqlsrv' => [ 79 | 'driver' => 'sqlsrv', 80 | 'host' => env('DB_HOST', 'localhost'), 81 | 'database' => env('DB_DATABASE', 'forge'), 82 | 'username' => env('DB_USERNAME', 'forge'), 83 | 'password' => env('DB_PASSWORD', ''), 84 | 'charset' => 'utf8', 85 | 'prefix' => '', 86 | ], 87 | 88 | ], 89 | 90 | /* 91 | |-------------------------------------------------------------------------- 92 | | Migration Repository Table 93 | |-------------------------------------------------------------------------- 94 | | 95 | | This table keeps track of all the migrations that have already run for 96 | | your application. Using this information, we can determine which of 97 | | the migrations on disk haven't actually been run in the database. 98 | | 99 | */ 100 | 101 | 'migrations' => 'migrations', 102 | 103 | /* 104 | |-------------------------------------------------------------------------- 105 | | Redis Databases 106 | |-------------------------------------------------------------------------- 107 | | 108 | | Redis is an open source, fast, and advanced key-value store that also 109 | | provides a richer set of commands than a typical key-value systems 110 | | such as APC or Memcached. Laravel makes it easy to dig right in. 111 | | 112 | */ 113 | 114 | 'redis' => [ 115 | 116 | 'cluster' => false, 117 | 118 | 'default' => [ 119 | 'host' => '127.0.0.1', 120 | 'port' => 6379, 121 | 'database' => 0, 122 | ], 123 | 124 | ], 125 | 126 | ]; 127 | -------------------------------------------------------------------------------- /config/session.php: -------------------------------------------------------------------------------- 1 | env('SESSION_DRIVER', 'file'), 20 | 21 | /* 22 | |-------------------------------------------------------------------------- 23 | | Session Lifetime 24 | |-------------------------------------------------------------------------- 25 | | 26 | | Here you may specify the number of minutes that you wish the session 27 | | to be allowed to remain idle before it expires. If you want them 28 | | to immediately expire on the browser closing, set that option. 29 | | 30 | */ 31 | 32 | 'lifetime' => 120, 33 | 34 | 'expire_on_close' => false, 35 | 36 | /* 37 | |-------------------------------------------------------------------------- 38 | | Session Encryption 39 | |-------------------------------------------------------------------------- 40 | | 41 | | This option allows you to easily specify that all of your session data 42 | | should be encrypted before it is stored. All encryption will be run 43 | | automatically by Laravel and you can use the Session like normal. 44 | | 45 | */ 46 | 47 | 'encrypt' => false, 48 | 49 | /* 50 | |-------------------------------------------------------------------------- 51 | | Session File Location 52 | |-------------------------------------------------------------------------- 53 | | 54 | | When using the native session driver, we need a location where session 55 | | files may be stored. A default has been set for you but a different 56 | | location may be specified. This is only needed for file sessions. 57 | | 58 | */ 59 | 60 | 'files' => storage_path('framework/sessions'), 61 | 62 | /* 63 | |-------------------------------------------------------------------------- 64 | | Session Database Connection 65 | |-------------------------------------------------------------------------- 66 | | 67 | | When using the "database" or "redis" session drivers, you may specify a 68 | | connection that should be used to manage these sessions. This should 69 | | correspond to a connection in your database configuration options. 70 | | 71 | */ 72 | 73 | 'connection' => null, 74 | 75 | /* 76 | |-------------------------------------------------------------------------- 77 | | Session Database Table 78 | |-------------------------------------------------------------------------- 79 | | 80 | | When using the "database" session driver, you may specify the table we 81 | | should use to manage the sessions. Of course, a sensible default is 82 | | provided for you; however, you are free to change this as needed. 83 | | 84 | */ 85 | 86 | 'table' => 'sessions', 87 | 88 | /* 89 | |-------------------------------------------------------------------------- 90 | | Session Sweeping Lottery 91 | |-------------------------------------------------------------------------- 92 | | 93 | | Some session drivers must manually sweep their storage location to get 94 | | rid of old sessions from storage. Here are the chances that it will 95 | | happen on a given request. By default, the odds are 2 out of 100. 96 | | 97 | */ 98 | 99 | 'lottery' => [2, 100], 100 | 101 | /* 102 | |-------------------------------------------------------------------------- 103 | | Session Cookie Name 104 | |-------------------------------------------------------------------------- 105 | | 106 | | Here you may change the name of the cookie used to identify a session 107 | | instance by ID. The name specified here will get used every time a 108 | | new session cookie is created by the framework for every driver. 109 | | 110 | */ 111 | 112 | 'cookie' => 'laravel_session', 113 | 114 | /* 115 | |-------------------------------------------------------------------------- 116 | | Session Cookie Path 117 | |-------------------------------------------------------------------------- 118 | | 119 | | The session cookie path determines the path for which the cookie will 120 | | be regarded as available. Typically, this will be the root path of 121 | | your application but you are free to change this when necessary. 122 | | 123 | */ 124 | 125 | 'path' => '/', 126 | 127 | /* 128 | |-------------------------------------------------------------------------- 129 | | Session Cookie Domain 130 | |-------------------------------------------------------------------------- 131 | | 132 | | Here you may change the domain of the cookie used to identify a session 133 | | in your application. This will determine which domains the cookie is 134 | | available to in your application. A sensible default has been set. 135 | | 136 | */ 137 | 138 | 'domain' => null, 139 | 140 | /* 141 | |-------------------------------------------------------------------------- 142 | | HTTPS Only Cookies 143 | |-------------------------------------------------------------------------- 144 | | 145 | | By setting this option to true, session cookies will only be sent back 146 | | to the server if the browser has a HTTPS connection. This will keep 147 | | the cookie from being sent to you if it can not be done securely. 148 | | 149 | */ 150 | 151 | 'secure' => false, 152 | 153 | ]; 154 | -------------------------------------------------------------------------------- /resources/lang/en/validation.php: -------------------------------------------------------------------------------- 1 | 'The :attribute must be accepted.', 17 | 'active_url' => 'The :attribute is not a valid URL.', 18 | 'after' => 'The :attribute must be a date after :date.', 19 | 'alpha' => 'The :attribute may only contain letters.', 20 | 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', 21 | 'alpha_num' => 'The :attribute may only contain letters and numbers.', 22 | 'array' => 'The :attribute must be an array.', 23 | 'before' => 'The :attribute must be a date before :date.', 24 | 'between' => [ 25 | 'numeric' => 'The :attribute must be between :min and :max.', 26 | 'file' => 'The :attribute must be between :min and :max kilobytes.', 27 | 'string' => 'The :attribute must be between :min and :max characters.', 28 | 'array' => 'The :attribute must have between :min and :max items.', 29 | ], 30 | 'boolean' => 'The :attribute field must be true or false.', 31 | 'confirmed' => 'The :attribute confirmation does not match.', 32 | 'date' => 'The :attribute is not a valid date.', 33 | 'date_format' => 'The :attribute does not match the format :format.', 34 | 'different' => 'The :attribute and :other must be different.', 35 | 'digits' => 'The :attribute must be :digits digits.', 36 | 'digits_between' => 'The :attribute must be between :min and :max digits.', 37 | 'email' => 'The :attribute must be a valid email address.', 38 | 'exists' => 'The selected :attribute is invalid.', 39 | 'filled' => 'The :attribute field is required.', 40 | 'image' => 'The :attribute must be an image.', 41 | 'in' => 'The selected :attribute is invalid.', 42 | 'integer' => 'The :attribute must be an integer.', 43 | 'ip' => 'The :attribute must be a valid IP address.', 44 | 'json' => 'The :attribute must be a valid JSON string.', 45 | 'max' => [ 46 | 'numeric' => 'The :attribute may not be greater than :max.', 47 | 'file' => 'The :attribute may not be greater than :max kilobytes.', 48 | 'string' => 'The :attribute may not be greater than :max characters.', 49 | 'array' => 'The :attribute may not have more than :max items.', 50 | ], 51 | 'mimes' => 'The :attribute must be a file of type: :values.', 52 | 'min' => [ 53 | 'numeric' => 'The :attribute must be at least :min.', 54 | 'file' => 'The :attribute must be at least :min kilobytes.', 55 | 'string' => 'The :attribute must be at least :min characters.', 56 | 'array' => 'The :attribute must have at least :min items.', 57 | ], 58 | 'not_in' => 'The selected :attribute is invalid.', 59 | 'numeric' => 'The :attribute must be a number.', 60 | 'regex' => 'The :attribute format is invalid.', 61 | 'required' => 'The :attribute field is required.', 62 | 'required_if' => 'The :attribute field is required when :other is :value.', 63 | 'required_with' => 'The :attribute field is required when :values is present.', 64 | 'required_with_all' => 'The :attribute field is required when :values is present.', 65 | 'required_without' => 'The :attribute field is required when :values is not present.', 66 | 'required_without_all' => 'The :attribute field is required when none of :values are present.', 67 | 'same' => 'The :attribute and :other must match.', 68 | 'size' => [ 69 | 'numeric' => 'The :attribute must be :size.', 70 | 'file' => 'The :attribute must be :size kilobytes.', 71 | 'string' => 'The :attribute must be :size characters.', 72 | 'array' => 'The :attribute must contain :size items.', 73 | ], 74 | 'string' => 'The :attribute must be a string.', 75 | 'timezone' => 'The :attribute must be a valid zone.', 76 | 'unique' => 'The :attribute has already been taken.', 77 | 'url' => 'The :attribute format is invalid.', 78 | 79 | /* 80 | |-------------------------------------------------------------------------- 81 | | Custom Validation Language Lines 82 | |-------------------------------------------------------------------------- 83 | | 84 | | Here you may specify custom validation messages for attributes using the 85 | | convention "attribute.rule" to name the lines. This makes it quick to 86 | | specify a specific custom language line for a given attribute rule. 87 | | 88 | */ 89 | 90 | 'custom' => [ 91 | 'attribute-name' => [ 92 | 'rule-name' => 'custom-message', 93 | ], 94 | ], 95 | 96 | /* 97 | |-------------------------------------------------------------------------- 98 | | Custom Validation Attributes 99 | |-------------------------------------------------------------------------- 100 | | 101 | | The following language lines are used to swap attribute place-holders 102 | | with something more reader friendly such as E-Mail Address instead 103 | | of "email". This simply helps us make messages a little cleaner. 104 | | 105 | */ 106 | 107 | 'attributes' => [], 108 | 109 | ]; 110 | -------------------------------------------------------------------------------- /config/app.php: -------------------------------------------------------------------------------- 1 | env('APP_DEBUG', false), 17 | 18 | /* 19 | |-------------------------------------------------------------------------- 20 | | Application URL 21 | |-------------------------------------------------------------------------- 22 | | 23 | | This URL is used by the console to properly generate URLs when using 24 | | the Artisan command line tool. You should set this to the root of 25 | | your application so that it is used when running Artisan tasks. 26 | | 27 | */ 28 | 29 | 'url' => 'http://localhost', 30 | 31 | /* 32 | |-------------------------------------------------------------------------- 33 | | Application Timezone 34 | |-------------------------------------------------------------------------- 35 | | 36 | | Here you may specify the default timezone for your application, which 37 | | will be used by the PHP date and date-time functions. We have gone 38 | | ahead and set this to a sensible default for you out of the box. 39 | | 40 | */ 41 | 42 | 'timezone' => 'UTC', 43 | 44 | /* 45 | |-------------------------------------------------------------------------- 46 | | Application Locale Configuration 47 | |-------------------------------------------------------------------------- 48 | | 49 | | The application locale determines the default locale that will be used 50 | | by the translation service provider. You are free to set this value 51 | | to any of the locales which will be supported by the application. 52 | | 53 | */ 54 | 55 | 'locale' => 'en', 56 | 57 | /* 58 | |-------------------------------------------------------------------------- 59 | | Application Fallback Locale 60 | |-------------------------------------------------------------------------- 61 | | 62 | | The fallback locale determines the locale to use when the current one 63 | | is not available. You may change the value to correspond to any of 64 | | the language folders that are provided through your application. 65 | | 66 | */ 67 | 68 | 'fallback_locale' => 'en', 69 | 70 | /* 71 | |-------------------------------------------------------------------------- 72 | | Encryption Key 73 | |-------------------------------------------------------------------------- 74 | | 75 | | This key is used by the Illuminate encrypter service and should be set 76 | | to a random, 32 character string, otherwise these encrypted strings 77 | | will not be safe. Please do this before deploying an application! 78 | | 79 | */ 80 | 81 | 'key' => env('APP_KEY', 'SomeRandomString'), 82 | 83 | 'cipher' => 'AES-256-CBC', 84 | 85 | /* 86 | |-------------------------------------------------------------------------- 87 | | Logging Configuration 88 | |-------------------------------------------------------------------------- 89 | | 90 | | Here you may configure the log settings for your application. Out of 91 | | the box, Laravel uses the Monolog PHP logging library. This gives 92 | | you a variety of powerful log handlers / formatters to utilize. 93 | | 94 | | Available Settings: "single", "daily", "syslog", "errorlog" 95 | | 96 | */ 97 | 98 | 'log' => 'single', 99 | 100 | /* 101 | |-------------------------------------------------------------------------- 102 | | Autoloaded Service Providers 103 | |-------------------------------------------------------------------------- 104 | | 105 | | The service providers listed here will be automatically loaded on the 106 | | request to your application. Feel free to add your own services to 107 | | this array to grant expanded functionality to your applications. 108 | | 109 | */ 110 | 111 | 'providers' => [ 112 | 113 | /* 114 | * Laravel Framework Service Providers... 115 | */ 116 | Illuminate\Foundation\Providers\ArtisanServiceProvider::class, 117 | Illuminate\Auth\AuthServiceProvider::class, 118 | Illuminate\Broadcasting\BroadcastServiceProvider::class, 119 | Illuminate\Bus\BusServiceProvider::class, 120 | Illuminate\Cache\CacheServiceProvider::class, 121 | Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, 122 | Illuminate\Routing\ControllerServiceProvider::class, 123 | Illuminate\Cookie\CookieServiceProvider::class, 124 | Illuminate\Database\DatabaseServiceProvider::class, 125 | Illuminate\Encryption\EncryptionServiceProvider::class, 126 | Illuminate\Filesystem\FilesystemServiceProvider::class, 127 | Illuminate\Foundation\Providers\FoundationServiceProvider::class, 128 | Illuminate\Hashing\HashServiceProvider::class, 129 | Illuminate\Mail\MailServiceProvider::class, 130 | Illuminate\Pagination\PaginationServiceProvider::class, 131 | Illuminate\Pipeline\PipelineServiceProvider::class, 132 | Illuminate\Queue\QueueServiceProvider::class, 133 | Illuminate\Redis\RedisServiceProvider::class, 134 | Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, 135 | Illuminate\Session\SessionServiceProvider::class, 136 | Illuminate\Translation\TranslationServiceProvider::class, 137 | Illuminate\Validation\ValidationServiceProvider::class, 138 | Illuminate\View\ViewServiceProvider::class, 139 | 140 | /* 141 | * Application Service Providers... 142 | */ 143 | App\Providers\AppServiceProvider::class, 144 | App\Providers\AuthServiceProvider::class, 145 | App\Providers\EventServiceProvider::class, 146 | App\Providers\RouteServiceProvider::class, 147 | 148 | ], 149 | 150 | /* 151 | |-------------------------------------------------------------------------- 152 | | Class Aliases 153 | |-------------------------------------------------------------------------- 154 | | 155 | | This array of class aliases will be registered when this application 156 | | is started. However, feel free to register as many as you wish as 157 | | the aliases are "lazy" loaded so they don't hinder performance. 158 | | 159 | */ 160 | 161 | 'aliases' => [ 162 | 163 | 'App' => Illuminate\Support\Facades\App::class, 164 | 'Artisan' => Illuminate\Support\Facades\Artisan::class, 165 | 'Auth' => Illuminate\Support\Facades\Auth::class, 166 | 'Blade' => Illuminate\Support\Facades\Blade::class, 167 | 'Bus' => Illuminate\Support\Facades\Bus::class, 168 | 'Cache' => Illuminate\Support\Facades\Cache::class, 169 | 'Config' => Illuminate\Support\Facades\Config::class, 170 | 'Cookie' => Illuminate\Support\Facades\Cookie::class, 171 | 'Crypt' => Illuminate\Support\Facades\Crypt::class, 172 | 'DB' => Illuminate\Support\Facades\DB::class, 173 | 'Eloquent' => Illuminate\Database\Eloquent\Model::class, 174 | 'Event' => Illuminate\Support\Facades\Event::class, 175 | 'File' => Illuminate\Support\Facades\File::class, 176 | 'Gate' => Illuminate\Support\Facades\Gate::class, 177 | 'Hash' => Illuminate\Support\Facades\Hash::class, 178 | 'Input' => Illuminate\Support\Facades\Input::class, 179 | 'Inspiring' => Illuminate\Foundation\Inspiring::class, 180 | 'Lang' => Illuminate\Support\Facades\Lang::class, 181 | 'Log' => Illuminate\Support\Facades\Log::class, 182 | 'Mail' => Illuminate\Support\Facades\Mail::class, 183 | 'Password' => Illuminate\Support\Facades\Password::class, 184 | 'Queue' => Illuminate\Support\Facades\Queue::class, 185 | 'Redirect' => Illuminate\Support\Facades\Redirect::class, 186 | 'Redis' => Illuminate\Support\Facades\Redis::class, 187 | 'Request' => Illuminate\Support\Facades\Request::class, 188 | 'Response' => Illuminate\Support\Facades\Response::class, 189 | 'Route' => Illuminate\Support\Facades\Route::class, 190 | 'Schema' => Illuminate\Support\Facades\Schema::class, 191 | 'Session' => Illuminate\Support\Facades\Session::class, 192 | 'Storage' => Illuminate\Support\Facades\Storage::class, 193 | 'URL' => Illuminate\Support\Facades\URL::class, 194 | 'Validator' => Illuminate\Support\Facades\Validator::class, 195 | 'View' => Illuminate\Support\Facades\View::class, 196 | 197 | ], 198 | 199 | ]; 200 | -------------------------------------------------------------------------------- /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": "4d056dd944177d33492a2bc1779c2288", 8 | "packages": [ 9 | { 10 | "name": "classpreloader/classpreloader", 11 | "version": "3.2.1", 12 | "source": { 13 | "type": "git", 14 | "url": "https://github.com/ClassPreloader/ClassPreloader.git", 15 | "reference": "297db07cabece3946f4a98d23f11f90aa10e1797" 16 | }, 17 | "dist": { 18 | "type": "zip", 19 | "url": "https://api.github.com/repos/ClassPreloader/ClassPreloader/zipball/297db07cabece3946f4a98d23f11f90aa10e1797", 20 | "reference": "297db07cabece3946f4a98d23f11f90aa10e1797", 21 | "shasum": "" 22 | }, 23 | "require": { 24 | "nikic/php-parser": "^1.0|^2.0|^3.0", 25 | "php": ">=5.5.9" 26 | }, 27 | "require-dev": { 28 | "phpunit/phpunit": "^4.8|^5.0" 29 | }, 30 | "type": "library", 31 | "extra": { 32 | "branch-alias": { 33 | "dev-master": "3.2-dev" 34 | } 35 | }, 36 | "autoload": { 37 | "psr-4": { 38 | "ClassPreloader\\": "src/" 39 | } 40 | }, 41 | "notification-url": "https://packagist.org/downloads/", 42 | "license": [ 43 | "MIT" 44 | ], 45 | "authors": [ 46 | { 47 | "name": "Michael Dowling", 48 | "email": "mtdowling@gmail.com" 49 | }, 50 | { 51 | "name": "Graham Campbell", 52 | "email": "graham@alt-three.com" 53 | } 54 | ], 55 | "description": "Helps class loading performance by generating a single PHP file containing all of the autoloaded files for a specific use case", 56 | "keywords": [ 57 | "autoload", 58 | "class", 59 | "preload" 60 | ], 61 | "support": { 62 | "issues": "https://github.com/ClassPreloader/ClassPreloader/issues", 63 | "source": "https://github.com/ClassPreloader/ClassPreloader/tree/3.2" 64 | }, 65 | "funding": [ 66 | { 67 | "url": "https://tidelift.com/funding/github/packagist/classpreloader/classpreloader", 68 | "type": "tidelift" 69 | } 70 | ], 71 | "time": "2020-04-12T22:01:25+00:00" 72 | }, 73 | { 74 | "name": "danielstjules/stringy", 75 | "version": "1.10.0", 76 | "source": { 77 | "type": "git", 78 | "url": "https://github.com/danielstjules/Stringy.git", 79 | "reference": "4749c205db47ee5b32e8d1adf6d9aff8db6caf3b" 80 | }, 81 | "dist": { 82 | "type": "zip", 83 | "url": "https://api.github.com/repos/danielstjules/Stringy/zipball/4749c205db47ee5b32e8d1adf6d9aff8db6caf3b", 84 | "reference": "4749c205db47ee5b32e8d1adf6d9aff8db6caf3b", 85 | "shasum": "" 86 | }, 87 | "require": { 88 | "ext-mbstring": "*", 89 | "php": ">=5.3.0" 90 | }, 91 | "require-dev": { 92 | "phpunit/phpunit": "~4.0" 93 | }, 94 | "type": "library", 95 | "autoload": { 96 | "psr-4": { 97 | "Stringy\\": "src/" 98 | }, 99 | "files": [ 100 | "src/Create.php" 101 | ] 102 | }, 103 | "notification-url": "https://packagist.org/downloads/", 104 | "license": [ 105 | "MIT" 106 | ], 107 | "authors": [ 108 | { 109 | "name": "Daniel St. Jules", 110 | "email": "danielst.jules@gmail.com", 111 | "homepage": "http://www.danielstjules.com" 112 | } 113 | ], 114 | "description": "A string manipulation library with multibyte support", 115 | "homepage": "https://github.com/danielstjules/Stringy", 116 | "keywords": [ 117 | "UTF", 118 | "helpers", 119 | "manipulation", 120 | "methods", 121 | "multibyte", 122 | "string", 123 | "utf-8", 124 | "utility", 125 | "utils" 126 | ], 127 | "time": "2015-07-23T00:54:12+00:00" 128 | }, 129 | { 130 | "name": "dnoegel/php-xdg-base-dir", 131 | "version": "0.1", 132 | "source": { 133 | "type": "git", 134 | "url": "https://github.com/dnoegel/php-xdg-base-dir.git", 135 | "reference": "265b8593498b997dc2d31e75b89f053b5cc9621a" 136 | }, 137 | "dist": { 138 | "type": "zip", 139 | "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/265b8593498b997dc2d31e75b89f053b5cc9621a", 140 | "reference": "265b8593498b997dc2d31e75b89f053b5cc9621a", 141 | "shasum": "" 142 | }, 143 | "require": { 144 | "php": ">=5.3.2" 145 | }, 146 | "require-dev": { 147 | "phpunit/phpunit": "@stable" 148 | }, 149 | "type": "project", 150 | "autoload": { 151 | "psr-4": { 152 | "XdgBaseDir\\": "src/" 153 | } 154 | }, 155 | "notification-url": "https://packagist.org/downloads/", 156 | "license": [ 157 | "MIT" 158 | ], 159 | "description": "implementation of xdg base directory specification for php", 160 | "time": "2014-10-24T07:27:01+00:00" 161 | }, 162 | { 163 | "name": "doctrine/inflector", 164 | "version": "1.4.4", 165 | "source": { 166 | "type": "git", 167 | "url": "https://github.com/doctrine/inflector.git", 168 | "reference": "4bd5c1cdfcd00e9e2d8c484f79150f67e5d355d9" 169 | }, 170 | "dist": { 171 | "type": "zip", 172 | "url": "https://api.github.com/repos/doctrine/inflector/zipball/4bd5c1cdfcd00e9e2d8c484f79150f67e5d355d9", 173 | "reference": "4bd5c1cdfcd00e9e2d8c484f79150f67e5d355d9", 174 | "shasum": "" 175 | }, 176 | "require": { 177 | "php": "^7.1 || ^8.0" 178 | }, 179 | "require-dev": { 180 | "doctrine/coding-standard": "^8.0", 181 | "phpstan/phpstan": "^0.12", 182 | "phpstan/phpstan-phpunit": "^0.12", 183 | "phpstan/phpstan-strict-rules": "^0.12", 184 | "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" 185 | }, 186 | "type": "library", 187 | "extra": { 188 | "branch-alias": { 189 | "dev-master": "2.0.x-dev" 190 | } 191 | }, 192 | "autoload": { 193 | "psr-4": { 194 | "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector", 195 | "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" 196 | } 197 | }, 198 | "notification-url": "https://packagist.org/downloads/", 199 | "license": [ 200 | "MIT" 201 | ], 202 | "authors": [ 203 | { 204 | "name": "Guilherme Blanco", 205 | "email": "guilhermeblanco@gmail.com" 206 | }, 207 | { 208 | "name": "Roman Borschel", 209 | "email": "roman@code-factory.org" 210 | }, 211 | { 212 | "name": "Benjamin Eberlei", 213 | "email": "kontakt@beberlei.de" 214 | }, 215 | { 216 | "name": "Jonathan Wage", 217 | "email": "jonwage@gmail.com" 218 | }, 219 | { 220 | "name": "Johannes Schmitt", 221 | "email": "schmittjoh@gmail.com" 222 | } 223 | ], 224 | "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.", 225 | "homepage": "https://www.doctrine-project.org/projects/inflector.html", 226 | "keywords": [ 227 | "inflection", 228 | "inflector", 229 | "lowercase", 230 | "manipulation", 231 | "php", 232 | "plural", 233 | "singular", 234 | "strings", 235 | "uppercase", 236 | "words" 237 | ], 238 | "support": { 239 | "issues": "https://github.com/doctrine/inflector/issues", 240 | "source": "https://github.com/doctrine/inflector/tree/1.4.4" 241 | }, 242 | "funding": [ 243 | { 244 | "url": "https://www.doctrine-project.org/sponsorship.html", 245 | "type": "custom" 246 | }, 247 | { 248 | "url": "https://www.patreon.com/phpdoctrine", 249 | "type": "patreon" 250 | }, 251 | { 252 | "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector", 253 | "type": "tidelift" 254 | } 255 | ], 256 | "time": "2021-04-16T17:34:40+00:00" 257 | }, 258 | { 259 | "name": "jakub-onderka/php-console-color", 260 | "version": "v0.2", 261 | "source": { 262 | "type": "git", 263 | "url": "https://github.com/JakubOnderka/PHP-Console-Color.git", 264 | "reference": "d5deaecff52a0d61ccb613bb3804088da0307191" 265 | }, 266 | "dist": { 267 | "type": "zip", 268 | "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Color/zipball/d5deaecff52a0d61ccb613bb3804088da0307191", 269 | "reference": "d5deaecff52a0d61ccb613bb3804088da0307191", 270 | "shasum": "" 271 | }, 272 | "require": { 273 | "php": ">=5.4.0" 274 | }, 275 | "require-dev": { 276 | "jakub-onderka/php-code-style": "1.0", 277 | "jakub-onderka/php-parallel-lint": "1.0", 278 | "jakub-onderka/php-var-dump-check": "0.*", 279 | "phpunit/phpunit": "~4.3", 280 | "squizlabs/php_codesniffer": "1.*" 281 | }, 282 | "type": "library", 283 | "autoload": { 284 | "psr-4": { 285 | "JakubOnderka\\PhpConsoleColor\\": "src/" 286 | } 287 | }, 288 | "notification-url": "https://packagist.org/downloads/", 289 | "license": [ 290 | "BSD-2-Clause" 291 | ], 292 | "authors": [ 293 | { 294 | "name": "Jakub Onderka", 295 | "email": "jakub.onderka@gmail.com" 296 | } 297 | ], 298 | "support": { 299 | "issues": "https://github.com/JakubOnderka/PHP-Console-Color/issues", 300 | "source": "https://github.com/JakubOnderka/PHP-Console-Color/tree/master" 301 | }, 302 | "abandoned": "php-parallel-lint/php-console-color", 303 | "time": "2018-09-29T17:23:10+00:00" 304 | }, 305 | { 306 | "name": "jakub-onderka/php-console-highlighter", 307 | "version": "v0.3.2", 308 | "source": { 309 | "type": "git", 310 | "url": "https://github.com/JakubOnderka/PHP-Console-Highlighter.git", 311 | "reference": "7daa75df45242c8d5b75a22c00a201e7954e4fb5" 312 | }, 313 | "dist": { 314 | "type": "zip", 315 | "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Highlighter/zipball/7daa75df45242c8d5b75a22c00a201e7954e4fb5", 316 | "reference": "7daa75df45242c8d5b75a22c00a201e7954e4fb5", 317 | "shasum": "" 318 | }, 319 | "require": { 320 | "jakub-onderka/php-console-color": "~0.1", 321 | "php": ">=5.3.0" 322 | }, 323 | "require-dev": { 324 | "jakub-onderka/php-code-style": "~1.0", 325 | "jakub-onderka/php-parallel-lint": "~0.5", 326 | "jakub-onderka/php-var-dump-check": "~0.1", 327 | "phpunit/phpunit": "~4.0", 328 | "squizlabs/php_codesniffer": "~1.5" 329 | }, 330 | "type": "library", 331 | "autoload": { 332 | "psr-0": { 333 | "JakubOnderka\\PhpConsoleHighlighter": "src/" 334 | } 335 | }, 336 | "notification-url": "https://packagist.org/downloads/", 337 | "license": [ 338 | "MIT" 339 | ], 340 | "authors": [ 341 | { 342 | "name": "Jakub Onderka", 343 | "email": "acci@acci.cz", 344 | "homepage": "http://www.acci.cz/" 345 | } 346 | ], 347 | "abandoned": "php-parallel-lint/php-console-highlighter", 348 | "time": "2015-04-20T18:58:01+00:00" 349 | }, 350 | { 351 | "name": "jeremeamia/superclosure", 352 | "version": "2.4.0", 353 | "source": { 354 | "type": "git", 355 | "url": "https://github.com/jeremeamia/super_closure.git", 356 | "reference": "5707d5821b30b9a07acfb4d76949784aaa0e9ce9" 357 | }, 358 | "dist": { 359 | "type": "zip", 360 | "url": "https://api.github.com/repos/jeremeamia/super_closure/zipball/5707d5821b30b9a07acfb4d76949784aaa0e9ce9", 361 | "reference": "5707d5821b30b9a07acfb4d76949784aaa0e9ce9", 362 | "shasum": "" 363 | }, 364 | "require": { 365 | "nikic/php-parser": "^1.2|^2.0|^3.0|^4.0", 366 | "php": ">=5.4", 367 | "symfony/polyfill-php56": "^1.0" 368 | }, 369 | "require-dev": { 370 | "phpunit/phpunit": "^4.0|^5.0" 371 | }, 372 | "type": "library", 373 | "extra": { 374 | "branch-alias": { 375 | "dev-master": "2.4-dev" 376 | } 377 | }, 378 | "autoload": { 379 | "psr-4": { 380 | "SuperClosure\\": "src/" 381 | } 382 | }, 383 | "notification-url": "https://packagist.org/downloads/", 384 | "license": [ 385 | "MIT" 386 | ], 387 | "authors": [ 388 | { 389 | "name": "Jeremy Lindblom", 390 | "email": "jeremeamia@gmail.com", 391 | "homepage": "https://github.com/jeremeamia", 392 | "role": "Developer" 393 | } 394 | ], 395 | "description": "Serialize Closure objects, including their context and binding", 396 | "homepage": "https://github.com/jeremeamia/super_closure", 397 | "keywords": [ 398 | "closure", 399 | "function", 400 | "lambda", 401 | "parser", 402 | "serializable", 403 | "serialize", 404 | "tokenizer" 405 | ], 406 | "support": { 407 | "issues": "https://github.com/jeremeamia/super_closure/issues", 408 | "source": "https://github.com/jeremeamia/super_closure/tree/master" 409 | }, 410 | "abandoned": "opis/closure", 411 | "time": "2018-03-21T22:21:57+00:00" 412 | }, 413 | { 414 | "name": "kylekatarnls/update-helper", 415 | "version": "1.2.1", 416 | "source": { 417 | "type": "git", 418 | "url": "https://github.com/kylekatarnls/update-helper.git", 419 | "reference": "429be50660ed8a196e0798e5939760f168ec8ce9" 420 | }, 421 | "dist": { 422 | "type": "zip", 423 | "url": "https://api.github.com/repos/kylekatarnls/update-helper/zipball/429be50660ed8a196e0798e5939760f168ec8ce9", 424 | "reference": "429be50660ed8a196e0798e5939760f168ec8ce9", 425 | "shasum": "" 426 | }, 427 | "require": { 428 | "composer-plugin-api": "^1.1.0 || ^2.0.0", 429 | "php": ">=5.3.0" 430 | }, 431 | "require-dev": { 432 | "codeclimate/php-test-reporter": "dev-master", 433 | "composer/composer": "2.0.x-dev || ^2.0.0-dev", 434 | "phpunit/phpunit": ">=4.8.35 <6.0" 435 | }, 436 | "type": "composer-plugin", 437 | "extra": { 438 | "class": "UpdateHelper\\ComposerPlugin" 439 | }, 440 | "autoload": { 441 | "psr-0": { 442 | "UpdateHelper\\": "src/" 443 | } 444 | }, 445 | "notification-url": "https://packagist.org/downloads/", 446 | "license": [ 447 | "MIT" 448 | ], 449 | "authors": [ 450 | { 451 | "name": "Kyle", 452 | "email": "kylekatarnls@gmail.com" 453 | } 454 | ], 455 | "description": "Update helper", 456 | "support": { 457 | "issues": "https://github.com/kylekatarnls/update-helper/issues", 458 | "source": "https://github.com/kylekatarnls/update-helper/tree/1.2.1" 459 | }, 460 | "funding": [ 461 | { 462 | "url": "https://github.com/kylekatarnls", 463 | "type": "github" 464 | }, 465 | { 466 | "url": "https://opencollective.com/Carbon", 467 | "type": "open_collective" 468 | }, 469 | { 470 | "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", 471 | "type": "tidelift" 472 | } 473 | ], 474 | "time": "2020-04-07T20:44:10+00:00" 475 | }, 476 | { 477 | "name": "laravel/framework", 478 | "version": "v5.1.46", 479 | "source": { 480 | "type": "git", 481 | "url": "https://github.com/laravel/framework.git", 482 | "reference": "7f2f892e62163138121e8210b92b21394fda8d1c" 483 | }, 484 | "dist": { 485 | "type": "zip", 486 | "url": "https://api.github.com/repos/laravel/framework/zipball/7f2f892e62163138121e8210b92b21394fda8d1c", 487 | "reference": "7f2f892e62163138121e8210b92b21394fda8d1c", 488 | "shasum": "" 489 | }, 490 | "require": { 491 | "classpreloader/classpreloader": "~2.0|~3.0", 492 | "danielstjules/stringy": "~1.8", 493 | "doctrine/inflector": "~1.0", 494 | "ext-mbstring": "*", 495 | "ext-openssl": "*", 496 | "jeremeamia/superclosure": "~2.0", 497 | "league/flysystem": "~1.0", 498 | "monolog/monolog": "~1.11", 499 | "mtdowling/cron-expression": "~1.0", 500 | "nesbot/carbon": "~1.19", 501 | "paragonie/random_compat": "~1.4", 502 | "php": ">=5.5.9", 503 | "psy/psysh": "0.7.*", 504 | "swiftmailer/swiftmailer": "~5.1", 505 | "symfony/console": "2.7.*", 506 | "symfony/css-selector": "2.7.*|2.8.*", 507 | "symfony/debug": "2.7.*", 508 | "symfony/dom-crawler": "2.7.*", 509 | "symfony/finder": "2.7.*", 510 | "symfony/http-foundation": "2.7.*", 511 | "symfony/http-kernel": "2.7.*", 512 | "symfony/process": "2.7.*", 513 | "symfony/routing": "2.7.*", 514 | "symfony/translation": "2.7.*", 515 | "symfony/var-dumper": "2.7.*", 516 | "vlucas/phpdotenv": "~1.0" 517 | }, 518 | "replace": { 519 | "illuminate/auth": "self.version", 520 | "illuminate/broadcasting": "self.version", 521 | "illuminate/bus": "self.version", 522 | "illuminate/cache": "self.version", 523 | "illuminate/config": "self.version", 524 | "illuminate/console": "self.version", 525 | "illuminate/container": "self.version", 526 | "illuminate/contracts": "self.version", 527 | "illuminate/cookie": "self.version", 528 | "illuminate/database": "self.version", 529 | "illuminate/encryption": "self.version", 530 | "illuminate/events": "self.version", 531 | "illuminate/exception": "self.version", 532 | "illuminate/filesystem": "self.version", 533 | "illuminate/hashing": "self.version", 534 | "illuminate/http": "self.version", 535 | "illuminate/log": "self.version", 536 | "illuminate/mail": "self.version", 537 | "illuminate/pagination": "self.version", 538 | "illuminate/pipeline": "self.version", 539 | "illuminate/queue": "self.version", 540 | "illuminate/redis": "self.version", 541 | "illuminate/routing": "self.version", 542 | "illuminate/session": "self.version", 543 | "illuminate/support": "self.version", 544 | "illuminate/translation": "self.version", 545 | "illuminate/validation": "self.version", 546 | "illuminate/view": "self.version" 547 | }, 548 | "require-dev": { 549 | "aws/aws-sdk-php": "~3.0", 550 | "iron-io/iron_mq": "~2.0", 551 | "mockery/mockery": "~0.9.4", 552 | "pda/pheanstalk": "~3.0", 553 | "phpunit/phpunit": "~4.0", 554 | "predis/predis": "~1.0" 555 | }, 556 | "suggest": { 557 | "aws/aws-sdk-php": "Required to use the SQS queue driver and SES mail driver (~3.0).", 558 | "doctrine/dbal": "Required to rename columns and drop SQLite columns (~2.4).", 559 | "fzaninotto/faker": "Required to use the eloquent factory builder (~1.4).", 560 | "guzzlehttp/guzzle": "Required to use the Mailgun and Mandrill mail drivers and the ping methods on schedules (~5.3|~6.0).", 561 | "iron-io/iron_mq": "Required to use the iron queue driver (~2.0).", 562 | "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (~1.0).", 563 | "league/flysystem-rackspace": "Required to use the Flysystem Rackspace driver (~1.0).", 564 | "pda/pheanstalk": "Required to use the beanstalk queue driver (~3.0).", 565 | "predis/predis": "Required to use the redis cache and queue drivers (~1.0).", 566 | "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (~2.0).", 567 | "symfony/psr-http-message-bridge": "Required to psr7 bridging features (0.2.*)." 568 | }, 569 | "type": "library", 570 | "extra": { 571 | "branch-alias": { 572 | "dev-master": "5.1-dev" 573 | } 574 | }, 575 | "autoload": { 576 | "classmap": [ 577 | "src/Illuminate/Queue/IlluminateQueueClosure.php" 578 | ], 579 | "files": [ 580 | "src/Illuminate/Foundation/helpers.php", 581 | "src/Illuminate/Support/helpers.php" 582 | ], 583 | "psr-4": { 584 | "Illuminate\\": "src/Illuminate/" 585 | } 586 | }, 587 | "notification-url": "https://packagist.org/downloads/", 588 | "license": [ 589 | "MIT" 590 | ], 591 | "authors": [ 592 | { 593 | "name": "Taylor Otwell", 594 | "email": "taylorotwell@gmail.com" 595 | } 596 | ], 597 | "description": "The Laravel Framework.", 598 | "homepage": "http://laravel.com", 599 | "keywords": [ 600 | "framework", 601 | "laravel" 602 | ], 603 | "support": { 604 | "issues": "https://github.com/laravel/framework/issues", 605 | "source": "https://github.com/laravel/framework" 606 | }, 607 | "time": "2017-03-24T16:31:45+00:00" 608 | }, 609 | { 610 | "name": "league/flysystem", 611 | "version": "1.1.9", 612 | "source": { 613 | "type": "git", 614 | "url": "https://github.com/thephpleague/flysystem.git", 615 | "reference": "094defdb4a7001845300334e7c1ee2335925ef99" 616 | }, 617 | "dist": { 618 | "type": "zip", 619 | "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/094defdb4a7001845300334e7c1ee2335925ef99", 620 | "reference": "094defdb4a7001845300334e7c1ee2335925ef99", 621 | "shasum": "" 622 | }, 623 | "require": { 624 | "ext-fileinfo": "*", 625 | "league/mime-type-detection": "^1.3", 626 | "php": "^7.2.5 || ^8.0" 627 | }, 628 | "conflict": { 629 | "league/flysystem-sftp": "<1.0.6" 630 | }, 631 | "require-dev": { 632 | "phpspec/prophecy": "^1.11.1", 633 | "phpunit/phpunit": "^8.5.8" 634 | }, 635 | "suggest": { 636 | "ext-ftp": "Allows you to use FTP server storage", 637 | "ext-openssl": "Allows you to use FTPS server storage", 638 | "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2", 639 | "league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3", 640 | "league/flysystem-azure": "Allows you to use Windows Azure Blob storage", 641 | "league/flysystem-cached-adapter": "Flysystem adapter decorator for metadata caching", 642 | "league/flysystem-eventable-filesystem": "Allows you to use EventableFilesystem", 643 | "league/flysystem-rackspace": "Allows you to use Rackspace Cloud Files", 644 | "league/flysystem-sftp": "Allows you to use SFTP server storage via phpseclib", 645 | "league/flysystem-webdav": "Allows you to use WebDAV storage", 646 | "league/flysystem-ziparchive": "Allows you to use ZipArchive adapter", 647 | "spatie/flysystem-dropbox": "Allows you to use Dropbox storage", 648 | "srmklive/flysystem-dropbox-v2": "Allows you to use Dropbox storage for PHP 5 applications" 649 | }, 650 | "type": "library", 651 | "extra": { 652 | "branch-alias": { 653 | "dev-master": "1.1-dev" 654 | } 655 | }, 656 | "autoload": { 657 | "psr-4": { 658 | "League\\Flysystem\\": "src/" 659 | } 660 | }, 661 | "notification-url": "https://packagist.org/downloads/", 662 | "license": [ 663 | "MIT" 664 | ], 665 | "authors": [ 666 | { 667 | "name": "Frank de Jonge", 668 | "email": "info@frenky.net" 669 | } 670 | ], 671 | "description": "Filesystem abstraction: Many filesystems, one API.", 672 | "keywords": [ 673 | "Cloud Files", 674 | "WebDAV", 675 | "abstraction", 676 | "aws", 677 | "cloud", 678 | "copy.com", 679 | "dropbox", 680 | "file systems", 681 | "files", 682 | "filesystem", 683 | "filesystems", 684 | "ftp", 685 | "rackspace", 686 | "remote", 687 | "s3", 688 | "sftp", 689 | "storage" 690 | ], 691 | "support": { 692 | "issues": "https://github.com/thephpleague/flysystem/issues", 693 | "source": "https://github.com/thephpleague/flysystem/tree/1.1.9" 694 | }, 695 | "funding": [ 696 | { 697 | "url": "https://offset.earth/frankdejonge", 698 | "type": "other" 699 | } 700 | ], 701 | "time": "2021-12-09T09:40:50+00:00" 702 | }, 703 | { 704 | "name": "league/mime-type-detection", 705 | "version": "1.9.0", 706 | "source": { 707 | "type": "git", 708 | "url": "https://github.com/thephpleague/mime-type-detection.git", 709 | "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69" 710 | }, 711 | "dist": { 712 | "type": "zip", 713 | "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/aa70e813a6ad3d1558fc927863d47309b4c23e69", 714 | "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69", 715 | "shasum": "" 716 | }, 717 | "require": { 718 | "ext-fileinfo": "*", 719 | "php": "^7.2 || ^8.0" 720 | }, 721 | "require-dev": { 722 | "friendsofphp/php-cs-fixer": "^3.2", 723 | "phpstan/phpstan": "^0.12.68", 724 | "phpunit/phpunit": "^8.5.8 || ^9.3" 725 | }, 726 | "type": "library", 727 | "autoload": { 728 | "psr-4": { 729 | "League\\MimeTypeDetection\\": "src" 730 | } 731 | }, 732 | "notification-url": "https://packagist.org/downloads/", 733 | "license": [ 734 | "MIT" 735 | ], 736 | "authors": [ 737 | { 738 | "name": "Frank de Jonge", 739 | "email": "info@frankdejonge.nl" 740 | } 741 | ], 742 | "description": "Mime-type detection for Flysystem", 743 | "support": { 744 | "issues": "https://github.com/thephpleague/mime-type-detection/issues", 745 | "source": "https://github.com/thephpleague/mime-type-detection/tree/1.9.0" 746 | }, 747 | "funding": [ 748 | { 749 | "url": "https://github.com/frankdejonge", 750 | "type": "github" 751 | }, 752 | { 753 | "url": "https://tidelift.com/funding/github/packagist/league/flysystem", 754 | "type": "tidelift" 755 | } 756 | ], 757 | "time": "2021-11-21T11:48:40+00:00" 758 | }, 759 | { 760 | "name": "monolog/monolog", 761 | "version": "1.26.1", 762 | "source": { 763 | "type": "git", 764 | "url": "https://github.com/Seldaek/monolog.git", 765 | "reference": "c6b00f05152ae2c9b04a448f99c7590beb6042f5" 766 | }, 767 | "dist": { 768 | "type": "zip", 769 | "url": "https://api.github.com/repos/Seldaek/monolog/zipball/c6b00f05152ae2c9b04a448f99c7590beb6042f5", 770 | "reference": "c6b00f05152ae2c9b04a448f99c7590beb6042f5", 771 | "shasum": "" 772 | }, 773 | "require": { 774 | "php": ">=5.3.0", 775 | "psr/log": "~1.0" 776 | }, 777 | "provide": { 778 | "psr/log-implementation": "1.0.0" 779 | }, 780 | "require-dev": { 781 | "aws/aws-sdk-php": "^2.4.9 || ^3.0", 782 | "doctrine/couchdb": "~1.0@dev", 783 | "graylog2/gelf-php": "~1.0", 784 | "php-amqplib/php-amqplib": "~2.4", 785 | "php-console/php-console": "^3.1.3", 786 | "phpstan/phpstan": "^0.12.59", 787 | "phpunit/phpunit": "~4.5", 788 | "ruflin/elastica": ">=0.90 <3.0", 789 | "sentry/sentry": "^0.13", 790 | "swiftmailer/swiftmailer": "^5.3|^6.0" 791 | }, 792 | "suggest": { 793 | "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", 794 | "doctrine/couchdb": "Allow sending log messages to a CouchDB server", 795 | "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", 796 | "ext-mongo": "Allow sending log messages to a MongoDB server", 797 | "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", 798 | "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", 799 | "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", 800 | "php-console/php-console": "Allow sending log messages to Google Chrome", 801 | "rollbar/rollbar": "Allow sending log messages to Rollbar", 802 | "ruflin/elastica": "Allow sending log messages to an Elastic Search server", 803 | "sentry/sentry": "Allow sending log messages to a Sentry server" 804 | }, 805 | "type": "library", 806 | "autoload": { 807 | "psr-4": { 808 | "Monolog\\": "src/Monolog" 809 | } 810 | }, 811 | "notification-url": "https://packagist.org/downloads/", 812 | "license": [ 813 | "MIT" 814 | ], 815 | "authors": [ 816 | { 817 | "name": "Jordi Boggiano", 818 | "email": "j.boggiano@seld.be", 819 | "homepage": "http://seld.be" 820 | } 821 | ], 822 | "description": "Sends your logs to files, sockets, inboxes, databases and various web services", 823 | "homepage": "http://github.com/Seldaek/monolog", 824 | "keywords": [ 825 | "log", 826 | "logging", 827 | "psr-3" 828 | ], 829 | "support": { 830 | "issues": "https://github.com/Seldaek/monolog/issues", 831 | "source": "https://github.com/Seldaek/monolog/tree/1.26.1" 832 | }, 833 | "funding": [ 834 | { 835 | "url": "https://github.com/Seldaek", 836 | "type": "github" 837 | }, 838 | { 839 | "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", 840 | "type": "tidelift" 841 | } 842 | ], 843 | "time": "2021-05-28T08:32:12+00:00" 844 | }, 845 | { 846 | "name": "mtdowling/cron-expression", 847 | "version": "v1.2.3", 848 | "source": { 849 | "type": "git", 850 | "url": "https://github.com/mtdowling/cron-expression.git", 851 | "reference": "9be552eebcc1ceec9776378f7dcc085246cacca6" 852 | }, 853 | "dist": { 854 | "type": "zip", 855 | "url": "https://api.github.com/repos/mtdowling/cron-expression/zipball/9be552eebcc1ceec9776378f7dcc085246cacca6", 856 | "reference": "9be552eebcc1ceec9776378f7dcc085246cacca6", 857 | "shasum": "" 858 | }, 859 | "require": { 860 | "php": ">=5.3.2" 861 | }, 862 | "require-dev": { 863 | "phpunit/phpunit": "~4.0|~5.0" 864 | }, 865 | "type": "library", 866 | "autoload": { 867 | "psr-4": { 868 | "Cron\\": "src/Cron/" 869 | } 870 | }, 871 | "notification-url": "https://packagist.org/downloads/", 872 | "license": [ 873 | "MIT" 874 | ], 875 | "authors": [ 876 | { 877 | "name": "Michael Dowling", 878 | "email": "mtdowling@gmail.com", 879 | "homepage": "https://github.com/mtdowling" 880 | } 881 | ], 882 | "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", 883 | "keywords": [ 884 | "cron", 885 | "schedule" 886 | ], 887 | "support": { 888 | "issues": "https://github.com/mtdowling/cron-expression/issues", 889 | "source": "https://github.com/mtdowling/cron-expression/tree/v1.2.3" 890 | }, 891 | "abandoned": "dragonmantank/cron-expression", 892 | "time": "2019-12-28T04:23:06+00:00" 893 | }, 894 | { 895 | "name": "nesbot/carbon", 896 | "version": "1.39.1", 897 | "source": { 898 | "type": "git", 899 | "url": "https://github.com/briannesbitt/Carbon.git", 900 | "reference": "4be0c005164249208ce1b5ca633cd57bdd42ff33" 901 | }, 902 | "dist": { 903 | "type": "zip", 904 | "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/4be0c005164249208ce1b5ca633cd57bdd42ff33", 905 | "reference": "4be0c005164249208ce1b5ca633cd57bdd42ff33", 906 | "shasum": "" 907 | }, 908 | "require": { 909 | "kylekatarnls/update-helper": "^1.1", 910 | "php": ">=5.3.9", 911 | "symfony/translation": "~2.6 || ~3.0 || ~4.0" 912 | }, 913 | "require-dev": { 914 | "composer/composer": "^1.2", 915 | "friendsofphp/php-cs-fixer": "~2", 916 | "phpunit/phpunit": "^4.8.35 || ^5.7" 917 | }, 918 | "bin": [ 919 | "bin/upgrade-carbon" 920 | ], 921 | "type": "library", 922 | "extra": { 923 | "update-helper": "Carbon\\Upgrade", 924 | "laravel": { 925 | "providers": [ 926 | "Carbon\\Laravel\\ServiceProvider" 927 | ] 928 | } 929 | }, 930 | "autoload": { 931 | "psr-4": { 932 | "": "src/" 933 | } 934 | }, 935 | "notification-url": "https://packagist.org/downloads/", 936 | "license": [ 937 | "MIT" 938 | ], 939 | "authors": [ 940 | { 941 | "name": "Brian Nesbitt", 942 | "email": "brian@nesbot.com", 943 | "homepage": "http://nesbot.com" 944 | } 945 | ], 946 | "description": "A simple API extension for DateTime.", 947 | "homepage": "http://carbon.nesbot.com", 948 | "keywords": [ 949 | "date", 950 | "datetime", 951 | "time" 952 | ], 953 | "support": { 954 | "issues": "https://github.com/briannesbitt/Carbon/issues", 955 | "source": "https://github.com/briannesbitt/Carbon" 956 | }, 957 | "time": "2019-10-14T05:51:36+00:00" 958 | }, 959 | { 960 | "name": "nikic/php-parser", 961 | "version": "v2.1.1", 962 | "source": { 963 | "type": "git", 964 | "url": "https://github.com/nikic/PHP-Parser.git", 965 | "reference": "4dd659edadffdc2143e4753df655d866dbfeedf0" 966 | }, 967 | "dist": { 968 | "type": "zip", 969 | "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/4dd659edadffdc2143e4753df655d866dbfeedf0", 970 | "reference": "4dd659edadffdc2143e4753df655d866dbfeedf0", 971 | "shasum": "" 972 | }, 973 | "require": { 974 | "ext-tokenizer": "*", 975 | "php": ">=5.4" 976 | }, 977 | "require-dev": { 978 | "phpunit/phpunit": "~4.0" 979 | }, 980 | "bin": [ 981 | "bin/php-parse" 982 | ], 983 | "type": "library", 984 | "extra": { 985 | "branch-alias": { 986 | "dev-master": "2.1-dev" 987 | } 988 | }, 989 | "autoload": { 990 | "psr-4": { 991 | "PhpParser\\": "lib/PhpParser" 992 | } 993 | }, 994 | "notification-url": "https://packagist.org/downloads/", 995 | "license": [ 996 | "BSD-3-Clause" 997 | ], 998 | "authors": [ 999 | { 1000 | "name": "Nikita Popov" 1001 | } 1002 | ], 1003 | "description": "A PHP parser written in PHP", 1004 | "keywords": [ 1005 | "parser", 1006 | "php" 1007 | ], 1008 | "support": { 1009 | "issues": "https://github.com/nikic/PHP-Parser/issues", 1010 | "source": "https://github.com/nikic/PHP-Parser/tree/2.x" 1011 | }, 1012 | "time": "2016-09-16T12:04:44+00:00" 1013 | }, 1014 | { 1015 | "name": "paragonie/random_compat", 1016 | "version": "v1.4.3", 1017 | "source": { 1018 | "type": "git", 1019 | "url": "https://github.com/paragonie/random_compat.git", 1020 | "reference": "9b3899e3c3ddde89016f576edb8c489708ad64cd" 1021 | }, 1022 | "dist": { 1023 | "type": "zip", 1024 | "url": "https://api.github.com/repos/paragonie/random_compat/zipball/9b3899e3c3ddde89016f576edb8c489708ad64cd", 1025 | "reference": "9b3899e3c3ddde89016f576edb8c489708ad64cd", 1026 | "shasum": "" 1027 | }, 1028 | "require": { 1029 | "php": ">=5.2.0" 1030 | }, 1031 | "require-dev": { 1032 | "phpunit/phpunit": "4.*|5.*" 1033 | }, 1034 | "suggest": { 1035 | "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." 1036 | }, 1037 | "type": "library", 1038 | "autoload": { 1039 | "files": [ 1040 | "lib/random.php" 1041 | ] 1042 | }, 1043 | "notification-url": "https://packagist.org/downloads/", 1044 | "license": [ 1045 | "MIT" 1046 | ], 1047 | "authors": [ 1048 | { 1049 | "name": "Paragon Initiative Enterprises", 1050 | "email": "security@paragonie.com", 1051 | "homepage": "https://paragonie.com" 1052 | } 1053 | ], 1054 | "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", 1055 | "keywords": [ 1056 | "csprng", 1057 | "pseudorandom", 1058 | "random" 1059 | ], 1060 | "support": { 1061 | "email": "info@paragonie.com", 1062 | "issues": "https://github.com/paragonie/random_compat/issues", 1063 | "source": "https://github.com/paragonie/random_compat" 1064 | }, 1065 | "time": "2018-04-04T21:48:54+00:00" 1066 | }, 1067 | { 1068 | "name": "psr/log", 1069 | "version": "1.1.4", 1070 | "source": { 1071 | "type": "git", 1072 | "url": "https://github.com/php-fig/log.git", 1073 | "reference": "d49695b909c3b7628b6289db5479a1c204601f11" 1074 | }, 1075 | "dist": { 1076 | "type": "zip", 1077 | "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", 1078 | "reference": "d49695b909c3b7628b6289db5479a1c204601f11", 1079 | "shasum": "" 1080 | }, 1081 | "require": { 1082 | "php": ">=5.3.0" 1083 | }, 1084 | "type": "library", 1085 | "extra": { 1086 | "branch-alias": { 1087 | "dev-master": "1.1.x-dev" 1088 | } 1089 | }, 1090 | "autoload": { 1091 | "psr-4": { 1092 | "Psr\\Log\\": "Psr/Log/" 1093 | } 1094 | }, 1095 | "notification-url": "https://packagist.org/downloads/", 1096 | "license": [ 1097 | "MIT" 1098 | ], 1099 | "authors": [ 1100 | { 1101 | "name": "PHP-FIG", 1102 | "homepage": "https://www.php-fig.org/" 1103 | } 1104 | ], 1105 | "description": "Common interface for logging libraries", 1106 | "homepage": "https://github.com/php-fig/log", 1107 | "keywords": [ 1108 | "log", 1109 | "psr", 1110 | "psr-3" 1111 | ], 1112 | "support": { 1113 | "source": "https://github.com/php-fig/log/tree/1.1.4" 1114 | }, 1115 | "time": "2021-05-03T11:20:27+00:00" 1116 | }, 1117 | { 1118 | "name": "psy/psysh", 1119 | "version": "v0.7.2", 1120 | "source": { 1121 | "type": "git", 1122 | "url": "https://github.com/bobthecow/psysh.git", 1123 | "reference": "e64e10b20f8d229cac76399e1f3edddb57a0f280" 1124 | }, 1125 | "dist": { 1126 | "type": "zip", 1127 | "url": "https://api.github.com/repos/bobthecow/psysh/zipball/e64e10b20f8d229cac76399e1f3edddb57a0f280", 1128 | "reference": "e64e10b20f8d229cac76399e1f3edddb57a0f280", 1129 | "shasum": "" 1130 | }, 1131 | "require": { 1132 | "dnoegel/php-xdg-base-dir": "0.1", 1133 | "jakub-onderka/php-console-highlighter": "0.3.*", 1134 | "nikic/php-parser": "^1.2.1|~2.0", 1135 | "php": ">=5.3.9", 1136 | "symfony/console": "~2.3.10|^2.4.2|~3.0", 1137 | "symfony/var-dumper": "~2.7|~3.0" 1138 | }, 1139 | "require-dev": { 1140 | "fabpot/php-cs-fixer": "~1.5", 1141 | "phpunit/phpunit": "~3.7|~4.0|~5.0", 1142 | "squizlabs/php_codesniffer": "~2.0", 1143 | "symfony/finder": "~2.1|~3.0" 1144 | }, 1145 | "suggest": { 1146 | "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", 1147 | "ext-pdo-sqlite": "The doc command requires SQLite to work.", 1148 | "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well.", 1149 | "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history." 1150 | }, 1151 | "bin": [ 1152 | "bin/psysh" 1153 | ], 1154 | "type": "library", 1155 | "extra": { 1156 | "branch-alias": { 1157 | "dev-develop": "0.8.x-dev" 1158 | } 1159 | }, 1160 | "autoload": { 1161 | "files": [ 1162 | "src/Psy/functions.php" 1163 | ], 1164 | "psr-4": { 1165 | "Psy\\": "src/Psy/" 1166 | } 1167 | }, 1168 | "notification-url": "https://packagist.org/downloads/", 1169 | "license": [ 1170 | "MIT" 1171 | ], 1172 | "authors": [ 1173 | { 1174 | "name": "Justin Hileman", 1175 | "email": "justin@justinhileman.info", 1176 | "homepage": "http://justinhileman.com" 1177 | } 1178 | ], 1179 | "description": "An interactive shell for modern PHP.", 1180 | "homepage": "http://psysh.org", 1181 | "keywords": [ 1182 | "REPL", 1183 | "console", 1184 | "interactive", 1185 | "shell" 1186 | ], 1187 | "time": "2016-03-09T05:03:14+00:00" 1188 | }, 1189 | { 1190 | "name": "swiftmailer/swiftmailer", 1191 | "version": "v5.4.12", 1192 | "source": { 1193 | "type": "git", 1194 | "url": "https://github.com/swiftmailer/swiftmailer.git", 1195 | "reference": "181b89f18a90f8925ef805f950d47a7190e9b950" 1196 | }, 1197 | "dist": { 1198 | "type": "zip", 1199 | "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/181b89f18a90f8925ef805f950d47a7190e9b950", 1200 | "reference": "181b89f18a90f8925ef805f950d47a7190e9b950", 1201 | "shasum": "" 1202 | }, 1203 | "require": { 1204 | "php": ">=5.3.3" 1205 | }, 1206 | "require-dev": { 1207 | "mockery/mockery": "~0.9.1", 1208 | "symfony/phpunit-bridge": "~3.2" 1209 | }, 1210 | "type": "library", 1211 | "extra": { 1212 | "branch-alias": { 1213 | "dev-master": "5.4-dev" 1214 | } 1215 | }, 1216 | "autoload": { 1217 | "files": [ 1218 | "lib/swift_required.php" 1219 | ] 1220 | }, 1221 | "notification-url": "https://packagist.org/downloads/", 1222 | "license": [ 1223 | "MIT" 1224 | ], 1225 | "authors": [ 1226 | { 1227 | "name": "Chris Corbyn" 1228 | }, 1229 | { 1230 | "name": "Fabien Potencier", 1231 | "email": "fabien@symfony.com" 1232 | } 1233 | ], 1234 | "description": "Swiftmailer, free feature-rich PHP mailer", 1235 | "homepage": "https://swiftmailer.symfony.com", 1236 | "keywords": [ 1237 | "email", 1238 | "mail", 1239 | "mailer" 1240 | ], 1241 | "support": { 1242 | "issues": "https://github.com/swiftmailer/swiftmailer/issues", 1243 | "source": "https://github.com/swiftmailer/swiftmailer/tree/v5.4.12" 1244 | }, 1245 | "abandoned": "symfony/mailer", 1246 | "time": "2018-07-31T09:26:32+00:00" 1247 | }, 1248 | { 1249 | "name": "symfony/console", 1250 | "version": "v2.7.51", 1251 | "source": { 1252 | "type": "git", 1253 | "url": "https://github.com/symfony/console.git", 1254 | "reference": "574cb4cfaa01ba115fc2fc0c2355b2c5472a4804" 1255 | }, 1256 | "dist": { 1257 | "type": "zip", 1258 | "url": "https://api.github.com/repos/symfony/console/zipball/574cb4cfaa01ba115fc2fc0c2355b2c5472a4804", 1259 | "reference": "574cb4cfaa01ba115fc2fc0c2355b2c5472a4804", 1260 | "shasum": "" 1261 | }, 1262 | "require": { 1263 | "php": ">=5.3.9", 1264 | "symfony/debug": "^2.7.2" 1265 | }, 1266 | "require-dev": { 1267 | "psr/log": "~1.0", 1268 | "symfony/event-dispatcher": "~2.1", 1269 | "symfony/process": "~2.1" 1270 | }, 1271 | "suggest": { 1272 | "psr/log-implementation": "For using the console logger", 1273 | "symfony/event-dispatcher": "", 1274 | "symfony/process": "" 1275 | }, 1276 | "type": "library", 1277 | "extra": { 1278 | "branch-alias": { 1279 | "dev-master": "2.7-dev" 1280 | } 1281 | }, 1282 | "autoload": { 1283 | "psr-4": { 1284 | "Symfony\\Component\\Console\\": "" 1285 | }, 1286 | "exclude-from-classmap": [ 1287 | "/Tests/" 1288 | ] 1289 | }, 1290 | "notification-url": "https://packagist.org/downloads/", 1291 | "license": [ 1292 | "MIT" 1293 | ], 1294 | "authors": [ 1295 | { 1296 | "name": "Fabien Potencier", 1297 | "email": "fabien@symfony.com" 1298 | }, 1299 | { 1300 | "name": "Symfony Community", 1301 | "homepage": "https://symfony.com/contributors" 1302 | } 1303 | ], 1304 | "description": "Symfony Console Component", 1305 | "homepage": "https://symfony.com", 1306 | "support": { 1307 | "source": "https://github.com/symfony/console/tree/v2.7.51" 1308 | }, 1309 | "time": "2018-05-13T15:44:36+00:00" 1310 | }, 1311 | { 1312 | "name": "symfony/css-selector", 1313 | "version": "v2.8.52", 1314 | "source": { 1315 | "type": "git", 1316 | "url": "https://github.com/symfony/css-selector.git", 1317 | "reference": "7b1692e418d7ccac24c373528453bc90e42797de" 1318 | }, 1319 | "dist": { 1320 | "type": "zip", 1321 | "url": "https://api.github.com/repos/symfony/css-selector/zipball/7b1692e418d7ccac24c373528453bc90e42797de", 1322 | "reference": "7b1692e418d7ccac24c373528453bc90e42797de", 1323 | "shasum": "" 1324 | }, 1325 | "require": { 1326 | "php": ">=5.3.9" 1327 | }, 1328 | "type": "library", 1329 | "extra": { 1330 | "branch-alias": { 1331 | "dev-master": "2.8-dev" 1332 | } 1333 | }, 1334 | "autoload": { 1335 | "psr-4": { 1336 | "Symfony\\Component\\CssSelector\\": "" 1337 | }, 1338 | "exclude-from-classmap": [ 1339 | "/Tests/" 1340 | ] 1341 | }, 1342 | "notification-url": "https://packagist.org/downloads/", 1343 | "license": [ 1344 | "MIT" 1345 | ], 1346 | "authors": [ 1347 | { 1348 | "name": "Fabien Potencier", 1349 | "email": "fabien@symfony.com" 1350 | }, 1351 | { 1352 | "name": "Jean-François Simon", 1353 | "email": "jeanfrancois.simon@sensiolabs.com" 1354 | }, 1355 | { 1356 | "name": "Symfony Community", 1357 | "homepage": "https://symfony.com/contributors" 1358 | } 1359 | ], 1360 | "description": "Symfony CssSelector Component", 1361 | "homepage": "https://symfony.com", 1362 | "support": { 1363 | "source": "https://github.com/symfony/css-selector/tree/v2.8.52" 1364 | }, 1365 | "time": "2018-11-11T11:18:13+00:00" 1366 | }, 1367 | { 1368 | "name": "symfony/debug", 1369 | "version": "v2.7.51", 1370 | "source": { 1371 | "type": "git", 1372 | "url": "https://github.com/symfony/debug.git", 1373 | "reference": "4a7330f29b3d215f8bacf076689f9d1c3d568681" 1374 | }, 1375 | "dist": { 1376 | "type": "zip", 1377 | "url": "https://api.github.com/repos/symfony/debug/zipball/4a7330f29b3d215f8bacf076689f9d1c3d568681", 1378 | "reference": "4a7330f29b3d215f8bacf076689f9d1c3d568681", 1379 | "shasum": "" 1380 | }, 1381 | "require": { 1382 | "php": ">=5.3.9", 1383 | "psr/log": "~1.0" 1384 | }, 1385 | "conflict": { 1386 | "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" 1387 | }, 1388 | "require-dev": { 1389 | "symfony/class-loader": "~2.2", 1390 | "symfony/http-kernel": "~2.3.24|~2.5.9|^2.6.2" 1391 | }, 1392 | "type": "library", 1393 | "extra": { 1394 | "branch-alias": { 1395 | "dev-master": "2.7-dev" 1396 | } 1397 | }, 1398 | "autoload": { 1399 | "psr-4": { 1400 | "Symfony\\Component\\Debug\\": "" 1401 | }, 1402 | "exclude-from-classmap": [ 1403 | "/Tests/" 1404 | ] 1405 | }, 1406 | "notification-url": "https://packagist.org/downloads/", 1407 | "license": [ 1408 | "MIT" 1409 | ], 1410 | "authors": [ 1411 | { 1412 | "name": "Fabien Potencier", 1413 | "email": "fabien@symfony.com" 1414 | }, 1415 | { 1416 | "name": "Symfony Community", 1417 | "homepage": "https://symfony.com/contributors" 1418 | } 1419 | ], 1420 | "description": "Symfony Debug Component", 1421 | "homepage": "https://symfony.com", 1422 | "support": { 1423 | "source": "https://github.com/symfony/debug/tree/v2.7.51" 1424 | }, 1425 | "time": "2018-08-03T11:24:48+00:00" 1426 | }, 1427 | { 1428 | "name": "symfony/dom-crawler", 1429 | "version": "v2.7.51", 1430 | "source": { 1431 | "type": "git", 1432 | "url": "https://github.com/symfony/dom-crawler.git", 1433 | "reference": "d905e1c5885735ee66af60c205429b9941f24752" 1434 | }, 1435 | "dist": { 1436 | "type": "zip", 1437 | "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/d905e1c5885735ee66af60c205429b9941f24752", 1438 | "reference": "d905e1c5885735ee66af60c205429b9941f24752", 1439 | "shasum": "" 1440 | }, 1441 | "require": { 1442 | "php": ">=5.3.9", 1443 | "symfony/polyfill-ctype": "~1.8" 1444 | }, 1445 | "require-dev": { 1446 | "symfony/css-selector": "~2.3" 1447 | }, 1448 | "suggest": { 1449 | "symfony/css-selector": "" 1450 | }, 1451 | "type": "library", 1452 | "extra": { 1453 | "branch-alias": { 1454 | "dev-master": "2.7-dev" 1455 | } 1456 | }, 1457 | "autoload": { 1458 | "psr-4": { 1459 | "Symfony\\Component\\DomCrawler\\": "" 1460 | }, 1461 | "exclude-from-classmap": [ 1462 | "/Tests/" 1463 | ] 1464 | }, 1465 | "notification-url": "https://packagist.org/downloads/", 1466 | "license": [ 1467 | "MIT" 1468 | ], 1469 | "authors": [ 1470 | { 1471 | "name": "Fabien Potencier", 1472 | "email": "fabien@symfony.com" 1473 | }, 1474 | { 1475 | "name": "Symfony Community", 1476 | "homepage": "https://symfony.com/contributors" 1477 | } 1478 | ], 1479 | "description": "Symfony DomCrawler Component", 1480 | "homepage": "https://symfony.com", 1481 | "support": { 1482 | "source": "https://github.com/symfony/dom-crawler/tree/v2.7.51" 1483 | }, 1484 | "time": "2018-05-01T22:30:49+00:00" 1485 | }, 1486 | { 1487 | "name": "symfony/event-dispatcher", 1488 | "version": "v2.8.52", 1489 | "source": { 1490 | "type": "git", 1491 | "url": "https://github.com/symfony/event-dispatcher.git", 1492 | "reference": "a77e974a5fecb4398833b0709210e3d5e334ffb0" 1493 | }, 1494 | "dist": { 1495 | "type": "zip", 1496 | "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/a77e974a5fecb4398833b0709210e3d5e334ffb0", 1497 | "reference": "a77e974a5fecb4398833b0709210e3d5e334ffb0", 1498 | "shasum": "" 1499 | }, 1500 | "require": { 1501 | "php": ">=5.3.9" 1502 | }, 1503 | "require-dev": { 1504 | "psr/log": "~1.0", 1505 | "symfony/config": "^2.0.5|~3.0.0", 1506 | "symfony/dependency-injection": "~2.6|~3.0.0", 1507 | "symfony/expression-language": "~2.6|~3.0.0", 1508 | "symfony/stopwatch": "~2.3|~3.0.0" 1509 | }, 1510 | "suggest": { 1511 | "symfony/dependency-injection": "", 1512 | "symfony/http-kernel": "" 1513 | }, 1514 | "type": "library", 1515 | "extra": { 1516 | "branch-alias": { 1517 | "dev-master": "2.8-dev" 1518 | } 1519 | }, 1520 | "autoload": { 1521 | "psr-4": { 1522 | "Symfony\\Component\\EventDispatcher\\": "" 1523 | }, 1524 | "exclude-from-classmap": [ 1525 | "/Tests/" 1526 | ] 1527 | }, 1528 | "notification-url": "https://packagist.org/downloads/", 1529 | "license": [ 1530 | "MIT" 1531 | ], 1532 | "authors": [ 1533 | { 1534 | "name": "Fabien Potencier", 1535 | "email": "fabien@symfony.com" 1536 | }, 1537 | { 1538 | "name": "Symfony Community", 1539 | "homepage": "https://symfony.com/contributors" 1540 | } 1541 | ], 1542 | "description": "Symfony EventDispatcher Component", 1543 | "homepage": "https://symfony.com", 1544 | "support": { 1545 | "source": "https://github.com/symfony/event-dispatcher/tree/v2.8.50" 1546 | }, 1547 | "time": "2018-11-21T14:20:20+00:00" 1548 | }, 1549 | { 1550 | "name": "symfony/finder", 1551 | "version": "v2.7.51", 1552 | "source": { 1553 | "type": "git", 1554 | "url": "https://github.com/symfony/finder.git", 1555 | "reference": "34226a3aa279f1e356ad56181b91acfdc9a2525c" 1556 | }, 1557 | "dist": { 1558 | "type": "zip", 1559 | "url": "https://api.github.com/repos/symfony/finder/zipball/34226a3aa279f1e356ad56181b91acfdc9a2525c", 1560 | "reference": "34226a3aa279f1e356ad56181b91acfdc9a2525c", 1561 | "shasum": "" 1562 | }, 1563 | "require": { 1564 | "php": ">=5.3.9" 1565 | }, 1566 | "type": "library", 1567 | "extra": { 1568 | "branch-alias": { 1569 | "dev-master": "2.7-dev" 1570 | } 1571 | }, 1572 | "autoload": { 1573 | "psr-4": { 1574 | "Symfony\\Component\\Finder\\": "" 1575 | }, 1576 | "exclude-from-classmap": [ 1577 | "/Tests/" 1578 | ] 1579 | }, 1580 | "notification-url": "https://packagist.org/downloads/", 1581 | "license": [ 1582 | "MIT" 1583 | ], 1584 | "authors": [ 1585 | { 1586 | "name": "Fabien Potencier", 1587 | "email": "fabien@symfony.com" 1588 | }, 1589 | { 1590 | "name": "Symfony Community", 1591 | "homepage": "https://symfony.com/contributors" 1592 | } 1593 | ], 1594 | "description": "Symfony Finder Component", 1595 | "homepage": "https://symfony.com", 1596 | "support": { 1597 | "source": "https://github.com/symfony/finder/tree/v2.7.51" 1598 | }, 1599 | "time": "2018-05-14T06:36:14+00:00" 1600 | }, 1601 | { 1602 | "name": "symfony/http-foundation", 1603 | "version": "v2.7.51", 1604 | "source": { 1605 | "type": "git", 1606 | "url": "https://github.com/symfony/http-foundation.git", 1607 | "reference": "b67e5cbd2bf837fb3681f2c4965826d6c6758532" 1608 | }, 1609 | "dist": { 1610 | "type": "zip", 1611 | "url": "https://api.github.com/repos/symfony/http-foundation/zipball/b67e5cbd2bf837fb3681f2c4965826d6c6758532", 1612 | "reference": "b67e5cbd2bf837fb3681f2c4965826d6c6758532", 1613 | "shasum": "" 1614 | }, 1615 | "require": { 1616 | "php": ">=5.3.9", 1617 | "symfony/polyfill-mbstring": "~1.1" 1618 | }, 1619 | "require-dev": { 1620 | "symfony/expression-language": "~2.4" 1621 | }, 1622 | "type": "library", 1623 | "extra": { 1624 | "branch-alias": { 1625 | "dev-master": "2.7-dev" 1626 | } 1627 | }, 1628 | "autoload": { 1629 | "psr-4": { 1630 | "Symfony\\Component\\HttpFoundation\\": "" 1631 | }, 1632 | "classmap": [ 1633 | "Resources/stubs" 1634 | ], 1635 | "exclude-from-classmap": [ 1636 | "/Tests/" 1637 | ] 1638 | }, 1639 | "notification-url": "https://packagist.org/downloads/", 1640 | "license": [ 1641 | "MIT" 1642 | ], 1643 | "authors": [ 1644 | { 1645 | "name": "Fabien Potencier", 1646 | "email": "fabien@symfony.com" 1647 | }, 1648 | { 1649 | "name": "Symfony Community", 1650 | "homepage": "https://symfony.com/contributors" 1651 | } 1652 | ], 1653 | "description": "Symfony HttpFoundation Component", 1654 | "homepage": "https://symfony.com", 1655 | "support": { 1656 | "source": "https://github.com/symfony/http-foundation/tree/2.7" 1657 | }, 1658 | "time": "2019-04-16T09:58:21+00:00" 1659 | }, 1660 | { 1661 | "name": "symfony/http-kernel", 1662 | "version": "v2.7.52", 1663 | "source": { 1664 | "type": "git", 1665 | "url": "https://github.com/symfony/http-kernel.git", 1666 | "reference": "435064b3b143f79469206915137c21e88b56bfb9" 1667 | }, 1668 | "dist": { 1669 | "type": "zip", 1670 | "url": "https://api.github.com/repos/symfony/http-kernel/zipball/435064b3b143f79469206915137c21e88b56bfb9", 1671 | "reference": "435064b3b143f79469206915137c21e88b56bfb9", 1672 | "shasum": "" 1673 | }, 1674 | "require": { 1675 | "php": ">=5.3.9", 1676 | "psr/log": "~1.0", 1677 | "symfony/debug": "^2.6.2", 1678 | "symfony/event-dispatcher": "^2.6.7", 1679 | "symfony/http-foundation": "~2.7.36|^2.8.29", 1680 | "symfony/polyfill-ctype": "~1.8" 1681 | }, 1682 | "conflict": { 1683 | "symfony/config": "<2.7", 1684 | "twig/twig": "<1.34|<2.4,>=2" 1685 | }, 1686 | "require-dev": { 1687 | "symfony/browser-kit": "~2.3", 1688 | "symfony/class-loader": "~2.1", 1689 | "symfony/config": "~2.7", 1690 | "symfony/console": "~2.3", 1691 | "symfony/css-selector": "^2.0.5", 1692 | "symfony/dependency-injection": "~2.2", 1693 | "symfony/dom-crawler": "^2.0.5", 1694 | "symfony/expression-language": "~2.4", 1695 | "symfony/finder": "^2.0.5", 1696 | "symfony/process": "^2.0.5", 1697 | "symfony/routing": "~2.2", 1698 | "symfony/stopwatch": "~2.3", 1699 | "symfony/templating": "~2.2", 1700 | "symfony/translation": "^2.0.5", 1701 | "symfony/var-dumper": "~2.6" 1702 | }, 1703 | "suggest": { 1704 | "symfony/browser-kit": "", 1705 | "symfony/class-loader": "", 1706 | "symfony/config": "", 1707 | "symfony/console": "", 1708 | "symfony/dependency-injection": "", 1709 | "symfony/finder": "", 1710 | "symfony/var-dumper": "" 1711 | }, 1712 | "type": "library", 1713 | "extra": { 1714 | "branch-alias": { 1715 | "dev-master": "2.7-dev" 1716 | } 1717 | }, 1718 | "autoload": { 1719 | "psr-4": { 1720 | "Symfony\\Component\\HttpKernel\\": "" 1721 | }, 1722 | "exclude-from-classmap": [ 1723 | "/Tests/" 1724 | ] 1725 | }, 1726 | "notification-url": "https://packagist.org/downloads/", 1727 | "license": [ 1728 | "MIT" 1729 | ], 1730 | "authors": [ 1731 | { 1732 | "name": "Fabien Potencier", 1733 | "email": "fabien@symfony.com" 1734 | }, 1735 | { 1736 | "name": "Symfony Community", 1737 | "homepage": "https://symfony.com/contributors" 1738 | } 1739 | ], 1740 | "description": "Symfony HttpKernel Component", 1741 | "homepage": "https://symfony.com", 1742 | "support": { 1743 | "source": "https://github.com/symfony/http-kernel/tree/v2.7.52" 1744 | }, 1745 | "time": "2019-04-17T16:37:53+00:00" 1746 | }, 1747 | { 1748 | "name": "symfony/polyfill-ctype", 1749 | "version": "v1.23.0", 1750 | "source": { 1751 | "type": "git", 1752 | "url": "https://github.com/symfony/polyfill-ctype.git", 1753 | "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce" 1754 | }, 1755 | "dist": { 1756 | "type": "zip", 1757 | "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/46cd95797e9df938fdd2b03693b5fca5e64b01ce", 1758 | "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce", 1759 | "shasum": "" 1760 | }, 1761 | "require": { 1762 | "php": ">=7.1" 1763 | }, 1764 | "suggest": { 1765 | "ext-ctype": "For best performance" 1766 | }, 1767 | "type": "library", 1768 | "extra": { 1769 | "branch-alias": { 1770 | "dev-main": "1.23-dev" 1771 | }, 1772 | "thanks": { 1773 | "name": "symfony/polyfill", 1774 | "url": "https://github.com/symfony/polyfill" 1775 | } 1776 | }, 1777 | "autoload": { 1778 | "psr-4": { 1779 | "Symfony\\Polyfill\\Ctype\\": "" 1780 | }, 1781 | "files": [ 1782 | "bootstrap.php" 1783 | ] 1784 | }, 1785 | "notification-url": "https://packagist.org/downloads/", 1786 | "license": [ 1787 | "MIT" 1788 | ], 1789 | "authors": [ 1790 | { 1791 | "name": "Gert de Pagter", 1792 | "email": "BackEndTea@gmail.com" 1793 | }, 1794 | { 1795 | "name": "Symfony Community", 1796 | "homepage": "https://symfony.com/contributors" 1797 | } 1798 | ], 1799 | "description": "Symfony polyfill for ctype functions", 1800 | "homepage": "https://symfony.com", 1801 | "keywords": [ 1802 | "compatibility", 1803 | "ctype", 1804 | "polyfill", 1805 | "portable" 1806 | ], 1807 | "support": { 1808 | "source": "https://github.com/symfony/polyfill-ctype/tree/v1.23.0" 1809 | }, 1810 | "funding": [ 1811 | { 1812 | "url": "https://symfony.com/sponsor", 1813 | "type": "custom" 1814 | }, 1815 | { 1816 | "url": "https://github.com/fabpot", 1817 | "type": "github" 1818 | }, 1819 | { 1820 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1821 | "type": "tidelift" 1822 | } 1823 | ], 1824 | "time": "2021-02-19T12:13:01+00:00" 1825 | }, 1826 | { 1827 | "name": "symfony/polyfill-mbstring", 1828 | "version": "v1.23.1", 1829 | "source": { 1830 | "type": "git", 1831 | "url": "https://github.com/symfony/polyfill-mbstring.git", 1832 | "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6" 1833 | }, 1834 | "dist": { 1835 | "type": "zip", 1836 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9174a3d80210dca8daa7f31fec659150bbeabfc6", 1837 | "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6", 1838 | "shasum": "" 1839 | }, 1840 | "require": { 1841 | "php": ">=7.1" 1842 | }, 1843 | "suggest": { 1844 | "ext-mbstring": "For best performance" 1845 | }, 1846 | "type": "library", 1847 | "extra": { 1848 | "branch-alias": { 1849 | "dev-main": "1.23-dev" 1850 | }, 1851 | "thanks": { 1852 | "name": "symfony/polyfill", 1853 | "url": "https://github.com/symfony/polyfill" 1854 | } 1855 | }, 1856 | "autoload": { 1857 | "psr-4": { 1858 | "Symfony\\Polyfill\\Mbstring\\": "" 1859 | }, 1860 | "files": [ 1861 | "bootstrap.php" 1862 | ] 1863 | }, 1864 | "notification-url": "https://packagist.org/downloads/", 1865 | "license": [ 1866 | "MIT" 1867 | ], 1868 | "authors": [ 1869 | { 1870 | "name": "Nicolas Grekas", 1871 | "email": "p@tchwork.com" 1872 | }, 1873 | { 1874 | "name": "Symfony Community", 1875 | "homepage": "https://symfony.com/contributors" 1876 | } 1877 | ], 1878 | "description": "Symfony polyfill for the Mbstring extension", 1879 | "homepage": "https://symfony.com", 1880 | "keywords": [ 1881 | "compatibility", 1882 | "mbstring", 1883 | "polyfill", 1884 | "portable", 1885 | "shim" 1886 | ], 1887 | "support": { 1888 | "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.1" 1889 | }, 1890 | "funding": [ 1891 | { 1892 | "url": "https://symfony.com/sponsor", 1893 | "type": "custom" 1894 | }, 1895 | { 1896 | "url": "https://github.com/fabpot", 1897 | "type": "github" 1898 | }, 1899 | { 1900 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1901 | "type": "tidelift" 1902 | } 1903 | ], 1904 | "time": "2021-05-27T12:26:48+00:00" 1905 | }, 1906 | { 1907 | "name": "symfony/polyfill-php56", 1908 | "version": "v1.20.0", 1909 | "source": { 1910 | "type": "git", 1911 | "url": "https://github.com/symfony/polyfill-php56.git", 1912 | "reference": "54b8cd7e6c1643d78d011f3be89f3ef1f9f4c675" 1913 | }, 1914 | "dist": { 1915 | "type": "zip", 1916 | "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/54b8cd7e6c1643d78d011f3be89f3ef1f9f4c675", 1917 | "reference": "54b8cd7e6c1643d78d011f3be89f3ef1f9f4c675", 1918 | "shasum": "" 1919 | }, 1920 | "require": { 1921 | "php": ">=7.1" 1922 | }, 1923 | "type": "metapackage", 1924 | "extra": { 1925 | "branch-alias": { 1926 | "dev-main": "1.20-dev" 1927 | }, 1928 | "thanks": { 1929 | "name": "symfony/polyfill", 1930 | "url": "https://github.com/symfony/polyfill" 1931 | } 1932 | }, 1933 | "notification-url": "https://packagist.org/downloads/", 1934 | "license": [ 1935 | "MIT" 1936 | ], 1937 | "authors": [ 1938 | { 1939 | "name": "Nicolas Grekas", 1940 | "email": "p@tchwork.com" 1941 | }, 1942 | { 1943 | "name": "Symfony Community", 1944 | "homepage": "https://symfony.com/contributors" 1945 | } 1946 | ], 1947 | "description": "Symfony polyfill backporting some PHP 5.6+ features to lower PHP versions", 1948 | "homepage": "https://symfony.com", 1949 | "keywords": [ 1950 | "compatibility", 1951 | "polyfill", 1952 | "portable", 1953 | "shim" 1954 | ], 1955 | "support": { 1956 | "source": "https://github.com/symfony/polyfill-php56/tree/v1.20.0" 1957 | }, 1958 | "funding": [ 1959 | { 1960 | "url": "https://symfony.com/sponsor", 1961 | "type": "custom" 1962 | }, 1963 | { 1964 | "url": "https://github.com/fabpot", 1965 | "type": "github" 1966 | }, 1967 | { 1968 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1969 | "type": "tidelift" 1970 | } 1971 | ], 1972 | "time": "2020-10-23T14:02:19+00:00" 1973 | }, 1974 | { 1975 | "name": "symfony/process", 1976 | "version": "v2.7.51", 1977 | "source": { 1978 | "type": "git", 1979 | "url": "https://github.com/symfony/process.git", 1980 | "reference": "eda637e05670e2afeec3842dcd646dce94262f6b" 1981 | }, 1982 | "dist": { 1983 | "type": "zip", 1984 | "url": "https://api.github.com/repos/symfony/process/zipball/eda637e05670e2afeec3842dcd646dce94262f6b", 1985 | "reference": "eda637e05670e2afeec3842dcd646dce94262f6b", 1986 | "shasum": "" 1987 | }, 1988 | "require": { 1989 | "php": ">=5.3.9" 1990 | }, 1991 | "type": "library", 1992 | "extra": { 1993 | "branch-alias": { 1994 | "dev-master": "2.7-dev" 1995 | } 1996 | }, 1997 | "autoload": { 1998 | "psr-4": { 1999 | "Symfony\\Component\\Process\\": "" 2000 | }, 2001 | "exclude-from-classmap": [ 2002 | "/Tests/" 2003 | ] 2004 | }, 2005 | "notification-url": "https://packagist.org/downloads/", 2006 | "license": [ 2007 | "MIT" 2008 | ], 2009 | "authors": [ 2010 | { 2011 | "name": "Fabien Potencier", 2012 | "email": "fabien@symfony.com" 2013 | }, 2014 | { 2015 | "name": "Symfony Community", 2016 | "homepage": "https://symfony.com/contributors" 2017 | } 2018 | ], 2019 | "description": "Symfony Process Component", 2020 | "homepage": "https://symfony.com", 2021 | "support": { 2022 | "source": "https://github.com/symfony/process/tree/v2.7.51" 2023 | }, 2024 | "time": "2018-08-03T11:24:48+00:00" 2025 | }, 2026 | { 2027 | "name": "symfony/routing", 2028 | "version": "v2.7.51", 2029 | "source": { 2030 | "type": "git", 2031 | "url": "https://github.com/symfony/routing.git", 2032 | "reference": "33bd5882f201f9a3b7dd9640b95710b71304c4fb" 2033 | }, 2034 | "dist": { 2035 | "type": "zip", 2036 | "url": "https://api.github.com/repos/symfony/routing/zipball/33bd5882f201f9a3b7dd9640b95710b71304c4fb", 2037 | "reference": "33bd5882f201f9a3b7dd9640b95710b71304c4fb", 2038 | "shasum": "" 2039 | }, 2040 | "require": { 2041 | "php": ">=5.3.9" 2042 | }, 2043 | "conflict": { 2044 | "symfony/config": "<2.7" 2045 | }, 2046 | "require-dev": { 2047 | "doctrine/annotations": "~1.0", 2048 | "doctrine/common": "~2.2", 2049 | "psr/log": "~1.0", 2050 | "symfony/config": "~2.7", 2051 | "symfony/expression-language": "~2.4", 2052 | "symfony/http-foundation": "~2.3", 2053 | "symfony/yaml": "^2.0.5" 2054 | }, 2055 | "suggest": { 2056 | "doctrine/annotations": "For using the annotation loader", 2057 | "symfony/config": "For using the all-in-one router or any loader", 2058 | "symfony/expression-language": "For using expression matching", 2059 | "symfony/http-foundation": "For using a Symfony Request object", 2060 | "symfony/yaml": "For using the YAML loader" 2061 | }, 2062 | "type": "library", 2063 | "extra": { 2064 | "branch-alias": { 2065 | "dev-master": "2.7-dev" 2066 | } 2067 | }, 2068 | "autoload": { 2069 | "psr-4": { 2070 | "Symfony\\Component\\Routing\\": "" 2071 | }, 2072 | "exclude-from-classmap": [ 2073 | "/Tests/" 2074 | ] 2075 | }, 2076 | "notification-url": "https://packagist.org/downloads/", 2077 | "license": [ 2078 | "MIT" 2079 | ], 2080 | "authors": [ 2081 | { 2082 | "name": "Fabien Potencier", 2083 | "email": "fabien@symfony.com" 2084 | }, 2085 | { 2086 | "name": "Symfony Community", 2087 | "homepage": "https://symfony.com/contributors" 2088 | } 2089 | ], 2090 | "description": "Symfony Routing Component", 2091 | "homepage": "https://symfony.com", 2092 | "keywords": [ 2093 | "router", 2094 | "routing", 2095 | "uri", 2096 | "url" 2097 | ], 2098 | "support": { 2099 | "source": "https://github.com/symfony/routing/tree/v2.7.51" 2100 | }, 2101 | "time": "2018-02-28T09:36:59+00:00" 2102 | }, 2103 | { 2104 | "name": "symfony/translation", 2105 | "version": "v2.7.51", 2106 | "source": { 2107 | "type": "git", 2108 | "url": "https://github.com/symfony/translation.git", 2109 | "reference": "1959c78c5a32539ef221b3e18a961a96d949118f" 2110 | }, 2111 | "dist": { 2112 | "type": "zip", 2113 | "url": "https://api.github.com/repos/symfony/translation/zipball/1959c78c5a32539ef221b3e18a961a96d949118f", 2114 | "reference": "1959c78c5a32539ef221b3e18a961a96d949118f", 2115 | "shasum": "" 2116 | }, 2117 | "require": { 2118 | "php": ">=5.3.9" 2119 | }, 2120 | "conflict": { 2121 | "symfony/config": "<2.7" 2122 | }, 2123 | "require-dev": { 2124 | "psr/log": "~1.0", 2125 | "symfony/config": "~2.7", 2126 | "symfony/intl": "~2.7.25|^2.8.18", 2127 | "symfony/yaml": "~2.2" 2128 | }, 2129 | "suggest": { 2130 | "psr/log-implementation": "To use logging capability in translator", 2131 | "symfony/config": "", 2132 | "symfony/yaml": "" 2133 | }, 2134 | "type": "library", 2135 | "extra": { 2136 | "branch-alias": { 2137 | "dev-master": "2.7-dev" 2138 | } 2139 | }, 2140 | "autoload": { 2141 | "psr-4": { 2142 | "Symfony\\Component\\Translation\\": "" 2143 | }, 2144 | "exclude-from-classmap": [ 2145 | "/Tests/" 2146 | ] 2147 | }, 2148 | "notification-url": "https://packagist.org/downloads/", 2149 | "license": [ 2150 | "MIT" 2151 | ], 2152 | "authors": [ 2153 | { 2154 | "name": "Fabien Potencier", 2155 | "email": "fabien@symfony.com" 2156 | }, 2157 | { 2158 | "name": "Symfony Community", 2159 | "homepage": "https://symfony.com/contributors" 2160 | } 2161 | ], 2162 | "description": "Symfony Translation Component", 2163 | "homepage": "https://symfony.com", 2164 | "support": { 2165 | "source": "https://github.com/symfony/translation/tree/v2.7.51" 2166 | }, 2167 | "time": "2018-05-17T10:34:06+00:00" 2168 | }, 2169 | { 2170 | "name": "symfony/var-dumper", 2171 | "version": "v2.7.24", 2172 | "source": { 2173 | "type": "git", 2174 | "url": "https://github.com/symfony/var-dumper.git", 2175 | "reference": "34e560fdaa2e738e08ac6228025d952452d7d8ef" 2176 | }, 2177 | "dist": { 2178 | "type": "zip", 2179 | "url": "https://api.github.com/repos/symfony/var-dumper/zipball/34e560fdaa2e738e08ac6228025d952452d7d8ef", 2180 | "reference": "34e560fdaa2e738e08ac6228025d952452d7d8ef", 2181 | "shasum": "" 2182 | }, 2183 | "require": { 2184 | "php": ">=5.3.9" 2185 | }, 2186 | "suggest": { 2187 | "ext-symfony_debug": "" 2188 | }, 2189 | "type": "library", 2190 | "extra": { 2191 | "branch-alias": { 2192 | "dev-master": "2.7-dev" 2193 | } 2194 | }, 2195 | "autoload": { 2196 | "files": [ 2197 | "Resources/functions/dump.php" 2198 | ], 2199 | "psr-4": { 2200 | "Symfony\\Component\\VarDumper\\": "" 2201 | }, 2202 | "exclude-from-classmap": [ 2203 | "/Tests/" 2204 | ] 2205 | }, 2206 | "notification-url": "https://packagist.org/downloads/", 2207 | "license": [ 2208 | "MIT" 2209 | ], 2210 | "authors": [ 2211 | { 2212 | "name": "Nicolas Grekas", 2213 | "email": "p@tchwork.com" 2214 | }, 2215 | { 2216 | "name": "Symfony Community", 2217 | "homepage": "https://symfony.com/contributors" 2218 | } 2219 | ], 2220 | "description": "Symfony mechanism for exploring and dumping PHP variables", 2221 | "homepage": "https://symfony.com", 2222 | "keywords": [ 2223 | "debug", 2224 | "dump" 2225 | ], 2226 | "support": { 2227 | "source": "https://github.com/symfony/var-dumper/tree/2.7" 2228 | }, 2229 | "time": "2017-01-21T16:37:26+00:00" 2230 | }, 2231 | { 2232 | "name": "twilio/sdk", 2233 | "version": "6.32.0", 2234 | "source": { 2235 | "type": "git", 2236 | "url": "https://github.com/twilio/twilio-php.git", 2237 | "reference": "d4a5ad22e761a14c5e355debb88a6f17640b247c" 2238 | }, 2239 | "dist": { 2240 | "type": "zip", 2241 | "url": "https://api.github.com/repos/twilio/twilio-php/zipball/d4a5ad22e761a14c5e355debb88a6f17640b247c", 2242 | "reference": "d4a5ad22e761a14c5e355debb88a6f17640b247c", 2243 | "shasum": "" 2244 | }, 2245 | "require": { 2246 | "php": ">=7.1.0" 2247 | }, 2248 | "require-dev": { 2249 | "guzzlehttp/guzzle": "^6.3 || ^7.0", 2250 | "phpunit/phpunit": ">=4.5", 2251 | "theseer/phpdox": "^0.12.0" 2252 | }, 2253 | "suggest": { 2254 | "guzzlehttp/guzzle": "An HTTP client to execute the API requests" 2255 | }, 2256 | "type": "library", 2257 | "autoload": { 2258 | "psr-4": { 2259 | "Twilio\\": "src/Twilio/" 2260 | } 2261 | }, 2262 | "notification-url": "https://packagist.org/downloads/", 2263 | "license": [ 2264 | "MIT" 2265 | ], 2266 | "authors": [ 2267 | { 2268 | "name": "Twilio API Team", 2269 | "email": "api@twilio.com" 2270 | } 2271 | ], 2272 | "description": "A PHP wrapper for Twilio's API", 2273 | "homepage": "http://github.com/twilio/twilio-php", 2274 | "keywords": [ 2275 | "api", 2276 | "sms", 2277 | "twilio" 2278 | ], 2279 | "time": "2021-12-15T20:48:09+00:00" 2280 | }, 2281 | { 2282 | "name": "vlucas/phpdotenv", 2283 | "version": "v1.1.1", 2284 | "source": { 2285 | "type": "git", 2286 | "url": "https://github.com/vlucas/phpdotenv.git", 2287 | "reference": "0cac554ce06277e33ddf9f0b7ade4b8bbf2af3fa" 2288 | }, 2289 | "dist": { 2290 | "type": "zip", 2291 | "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/0cac554ce06277e33ddf9f0b7ade4b8bbf2af3fa", 2292 | "reference": "0cac554ce06277e33ddf9f0b7ade4b8bbf2af3fa", 2293 | "shasum": "" 2294 | }, 2295 | "require": { 2296 | "php": ">=5.3.2" 2297 | }, 2298 | "require-dev": { 2299 | "phpunit/phpunit": "~4.0" 2300 | }, 2301 | "type": "library", 2302 | "autoload": { 2303 | "psr-0": { 2304 | "Dotenv": "src/" 2305 | } 2306 | }, 2307 | "notification-url": "https://packagist.org/downloads/", 2308 | "license": [ 2309 | "BSD" 2310 | ], 2311 | "authors": [ 2312 | { 2313 | "name": "Vance Lucas", 2314 | "email": "vance@vancelucas.com", 2315 | "homepage": "http://www.vancelucas.com" 2316 | } 2317 | ], 2318 | "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", 2319 | "homepage": "http://github.com/vlucas/phpdotenv", 2320 | "keywords": [ 2321 | "dotenv", 2322 | "env", 2323 | "environment" 2324 | ], 2325 | "time": "2015-05-30T15:59:26+00:00" 2326 | } 2327 | ], 2328 | "packages-dev": [ 2329 | { 2330 | "name": "doctrine/instantiator", 2331 | "version": "1.4.0", 2332 | "source": { 2333 | "type": "git", 2334 | "url": "https://github.com/doctrine/instantiator.git", 2335 | "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" 2336 | }, 2337 | "dist": { 2338 | "type": "zip", 2339 | "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", 2340 | "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", 2341 | "shasum": "" 2342 | }, 2343 | "require": { 2344 | "php": "^7.1 || ^8.0" 2345 | }, 2346 | "require-dev": { 2347 | "doctrine/coding-standard": "^8.0", 2348 | "ext-pdo": "*", 2349 | "ext-phar": "*", 2350 | "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", 2351 | "phpstan/phpstan": "^0.12", 2352 | "phpstan/phpstan-phpunit": "^0.12", 2353 | "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" 2354 | }, 2355 | "type": "library", 2356 | "autoload": { 2357 | "psr-4": { 2358 | "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" 2359 | } 2360 | }, 2361 | "notification-url": "https://packagist.org/downloads/", 2362 | "license": [ 2363 | "MIT" 2364 | ], 2365 | "authors": [ 2366 | { 2367 | "name": "Marco Pivetta", 2368 | "email": "ocramius@gmail.com", 2369 | "homepage": "https://ocramius.github.io/" 2370 | } 2371 | ], 2372 | "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", 2373 | "homepage": "https://www.doctrine-project.org/projects/instantiator.html", 2374 | "keywords": [ 2375 | "constructor", 2376 | "instantiate" 2377 | ], 2378 | "support": { 2379 | "issues": "https://github.com/doctrine/instantiator/issues", 2380 | "source": "https://github.com/doctrine/instantiator/tree/1.4.0" 2381 | }, 2382 | "funding": [ 2383 | { 2384 | "url": "https://www.doctrine-project.org/sponsorship.html", 2385 | "type": "custom" 2386 | }, 2387 | { 2388 | "url": "https://www.patreon.com/phpdoctrine", 2389 | "type": "patreon" 2390 | }, 2391 | { 2392 | "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", 2393 | "type": "tidelift" 2394 | } 2395 | ], 2396 | "time": "2020-11-10T18:47:58+00:00" 2397 | }, 2398 | { 2399 | "name": "phpdocumentor/reflection-common", 2400 | "version": "2.2.0", 2401 | "source": { 2402 | "type": "git", 2403 | "url": "https://github.com/phpDocumentor/ReflectionCommon.git", 2404 | "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" 2405 | }, 2406 | "dist": { 2407 | "type": "zip", 2408 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", 2409 | "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", 2410 | "shasum": "" 2411 | }, 2412 | "require": { 2413 | "php": "^7.2 || ^8.0" 2414 | }, 2415 | "type": "library", 2416 | "extra": { 2417 | "branch-alias": { 2418 | "dev-2.x": "2.x-dev" 2419 | } 2420 | }, 2421 | "autoload": { 2422 | "psr-4": { 2423 | "phpDocumentor\\Reflection\\": "src/" 2424 | } 2425 | }, 2426 | "notification-url": "https://packagist.org/downloads/", 2427 | "license": [ 2428 | "MIT" 2429 | ], 2430 | "authors": [ 2431 | { 2432 | "name": "Jaap van Otterdijk", 2433 | "email": "opensource@ijaap.nl" 2434 | } 2435 | ], 2436 | "description": "Common reflection classes used by phpdocumentor to reflect the code structure", 2437 | "homepage": "http://www.phpdoc.org", 2438 | "keywords": [ 2439 | "FQSEN", 2440 | "phpDocumentor", 2441 | "phpdoc", 2442 | "reflection", 2443 | "static analysis" 2444 | ], 2445 | "support": { 2446 | "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", 2447 | "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" 2448 | }, 2449 | "time": "2020-06-27T09:03:43+00:00" 2450 | }, 2451 | { 2452 | "name": "phpdocumentor/reflection-docblock", 2453 | "version": "5.3.0", 2454 | "source": { 2455 | "type": "git", 2456 | "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", 2457 | "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" 2458 | }, 2459 | "dist": { 2460 | "type": "zip", 2461 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", 2462 | "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", 2463 | "shasum": "" 2464 | }, 2465 | "require": { 2466 | "ext-filter": "*", 2467 | "php": "^7.2 || ^8.0", 2468 | "phpdocumentor/reflection-common": "^2.2", 2469 | "phpdocumentor/type-resolver": "^1.3", 2470 | "webmozart/assert": "^1.9.1" 2471 | }, 2472 | "require-dev": { 2473 | "mockery/mockery": "~1.3.2", 2474 | "psalm/phar": "^4.8" 2475 | }, 2476 | "type": "library", 2477 | "extra": { 2478 | "branch-alias": { 2479 | "dev-master": "5.x-dev" 2480 | } 2481 | }, 2482 | "autoload": { 2483 | "psr-4": { 2484 | "phpDocumentor\\Reflection\\": "src" 2485 | } 2486 | }, 2487 | "notification-url": "https://packagist.org/downloads/", 2488 | "license": [ 2489 | "MIT" 2490 | ], 2491 | "authors": [ 2492 | { 2493 | "name": "Mike van Riel", 2494 | "email": "me@mikevanriel.com" 2495 | }, 2496 | { 2497 | "name": "Jaap van Otterdijk", 2498 | "email": "account@ijaap.nl" 2499 | } 2500 | ], 2501 | "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", 2502 | "support": { 2503 | "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", 2504 | "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" 2505 | }, 2506 | "time": "2021-10-19T17:43:47+00:00" 2507 | }, 2508 | { 2509 | "name": "phpdocumentor/type-resolver", 2510 | "version": "1.5.1", 2511 | "source": { 2512 | "type": "git", 2513 | "url": "https://github.com/phpDocumentor/TypeResolver.git", 2514 | "reference": "a12f7e301eb7258bb68acd89d4aefa05c2906cae" 2515 | }, 2516 | "dist": { 2517 | "type": "zip", 2518 | "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/a12f7e301eb7258bb68acd89d4aefa05c2906cae", 2519 | "reference": "a12f7e301eb7258bb68acd89d4aefa05c2906cae", 2520 | "shasum": "" 2521 | }, 2522 | "require": { 2523 | "php": "^7.2 || ^8.0", 2524 | "phpdocumentor/reflection-common": "^2.0" 2525 | }, 2526 | "require-dev": { 2527 | "ext-tokenizer": "*", 2528 | "psalm/phar": "^4.8" 2529 | }, 2530 | "type": "library", 2531 | "extra": { 2532 | "branch-alias": { 2533 | "dev-1.x": "1.x-dev" 2534 | } 2535 | }, 2536 | "autoload": { 2537 | "psr-4": { 2538 | "phpDocumentor\\Reflection\\": "src" 2539 | } 2540 | }, 2541 | "notification-url": "https://packagist.org/downloads/", 2542 | "license": [ 2543 | "MIT" 2544 | ], 2545 | "authors": [ 2546 | { 2547 | "name": "Mike van Riel", 2548 | "email": "me@mikevanriel.com" 2549 | } 2550 | ], 2551 | "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", 2552 | "support": { 2553 | "issues": "https://github.com/phpDocumentor/TypeResolver/issues", 2554 | "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.5.1" 2555 | }, 2556 | "time": "2021-10-02T14:08:47+00:00" 2557 | }, 2558 | { 2559 | "name": "phpspec/prophecy", 2560 | "version": "v1.10.3", 2561 | "source": { 2562 | "type": "git", 2563 | "url": "https://github.com/phpspec/prophecy.git", 2564 | "reference": "451c3cd1418cf640de218914901e51b064abb093" 2565 | }, 2566 | "dist": { 2567 | "type": "zip", 2568 | "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093", 2569 | "reference": "451c3cd1418cf640de218914901e51b064abb093", 2570 | "shasum": "" 2571 | }, 2572 | "require": { 2573 | "doctrine/instantiator": "^1.0.2", 2574 | "php": "^5.3|^7.0", 2575 | "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0", 2576 | "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0", 2577 | "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0" 2578 | }, 2579 | "require-dev": { 2580 | "phpspec/phpspec": "^2.5 || ^3.2", 2581 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" 2582 | }, 2583 | "type": "library", 2584 | "extra": { 2585 | "branch-alias": { 2586 | "dev-master": "1.10.x-dev" 2587 | } 2588 | }, 2589 | "autoload": { 2590 | "psr-4": { 2591 | "Prophecy\\": "src/Prophecy" 2592 | } 2593 | }, 2594 | "notification-url": "https://packagist.org/downloads/", 2595 | "license": [ 2596 | "MIT" 2597 | ], 2598 | "authors": [ 2599 | { 2600 | "name": "Konstantin Kudryashov", 2601 | "email": "ever.zet@gmail.com", 2602 | "homepage": "http://everzet.com" 2603 | }, 2604 | { 2605 | "name": "Marcello Duarte", 2606 | "email": "marcello.duarte@gmail.com" 2607 | } 2608 | ], 2609 | "description": "Highly opinionated mocking framework for PHP 5.3+", 2610 | "homepage": "https://github.com/phpspec/prophecy", 2611 | "keywords": [ 2612 | "Double", 2613 | "Dummy", 2614 | "fake", 2615 | "mock", 2616 | "spy", 2617 | "stub" 2618 | ], 2619 | "support": { 2620 | "issues": "https://github.com/phpspec/prophecy/issues", 2621 | "source": "https://github.com/phpspec/prophecy/tree/v1.10.3" 2622 | }, 2623 | "time": "2020-03-05T15:02:03+00:00" 2624 | }, 2625 | { 2626 | "name": "phpunit/php-code-coverage", 2627 | "version": "2.2.4", 2628 | "source": { 2629 | "type": "git", 2630 | "url": "https://github.com/sebastianbergmann/php-code-coverage.git", 2631 | "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979" 2632 | }, 2633 | "dist": { 2634 | "type": "zip", 2635 | "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/eabf68b476ac7d0f73793aada060f1c1a9bf8979", 2636 | "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979", 2637 | "shasum": "" 2638 | }, 2639 | "require": { 2640 | "php": ">=5.3.3", 2641 | "phpunit/php-file-iterator": "~1.3", 2642 | "phpunit/php-text-template": "~1.2", 2643 | "phpunit/php-token-stream": "~1.3", 2644 | "sebastian/environment": "^1.3.2", 2645 | "sebastian/version": "~1.0" 2646 | }, 2647 | "require-dev": { 2648 | "ext-xdebug": ">=2.1.4", 2649 | "phpunit/phpunit": "~4" 2650 | }, 2651 | "suggest": { 2652 | "ext-dom": "*", 2653 | "ext-xdebug": ">=2.2.1", 2654 | "ext-xmlwriter": "*" 2655 | }, 2656 | "type": "library", 2657 | "extra": { 2658 | "branch-alias": { 2659 | "dev-master": "2.2.x-dev" 2660 | } 2661 | }, 2662 | "autoload": { 2663 | "classmap": [ 2664 | "src/" 2665 | ] 2666 | }, 2667 | "notification-url": "https://packagist.org/downloads/", 2668 | "license": [ 2669 | "BSD-3-Clause" 2670 | ], 2671 | "authors": [ 2672 | { 2673 | "name": "Sebastian Bergmann", 2674 | "email": "sb@sebastian-bergmann.de", 2675 | "role": "lead" 2676 | } 2677 | ], 2678 | "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", 2679 | "homepage": "https://github.com/sebastianbergmann/php-code-coverage", 2680 | "keywords": [ 2681 | "coverage", 2682 | "testing", 2683 | "xunit" 2684 | ], 2685 | "time": "2015-10-06T15:47:00+00:00" 2686 | }, 2687 | { 2688 | "name": "phpunit/php-file-iterator", 2689 | "version": "1.4.5", 2690 | "source": { 2691 | "type": "git", 2692 | "url": "https://github.com/sebastianbergmann/php-file-iterator.git", 2693 | "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4" 2694 | }, 2695 | "dist": { 2696 | "type": "zip", 2697 | "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4", 2698 | "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4", 2699 | "shasum": "" 2700 | }, 2701 | "require": { 2702 | "php": ">=5.3.3" 2703 | }, 2704 | "type": "library", 2705 | "extra": { 2706 | "branch-alias": { 2707 | "dev-master": "1.4.x-dev" 2708 | } 2709 | }, 2710 | "autoload": { 2711 | "classmap": [ 2712 | "src/" 2713 | ] 2714 | }, 2715 | "notification-url": "https://packagist.org/downloads/", 2716 | "license": [ 2717 | "BSD-3-Clause" 2718 | ], 2719 | "authors": [ 2720 | { 2721 | "name": "Sebastian Bergmann", 2722 | "email": "sb@sebastian-bergmann.de", 2723 | "role": "lead" 2724 | } 2725 | ], 2726 | "description": "FilterIterator implementation that filters files based on a list of suffixes.", 2727 | "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", 2728 | "keywords": [ 2729 | "filesystem", 2730 | "iterator" 2731 | ], 2732 | "time": "2017-11-27T13:52:08+00:00" 2733 | }, 2734 | { 2735 | "name": "phpunit/php-text-template", 2736 | "version": "1.2.1", 2737 | "source": { 2738 | "type": "git", 2739 | "url": "https://github.com/sebastianbergmann/php-text-template.git", 2740 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" 2741 | }, 2742 | "dist": { 2743 | "type": "zip", 2744 | "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 2745 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 2746 | "shasum": "" 2747 | }, 2748 | "require": { 2749 | "php": ">=5.3.3" 2750 | }, 2751 | "type": "library", 2752 | "autoload": { 2753 | "classmap": [ 2754 | "src/" 2755 | ] 2756 | }, 2757 | "notification-url": "https://packagist.org/downloads/", 2758 | "license": [ 2759 | "BSD-3-Clause" 2760 | ], 2761 | "authors": [ 2762 | { 2763 | "name": "Sebastian Bergmann", 2764 | "email": "sebastian@phpunit.de", 2765 | "role": "lead" 2766 | } 2767 | ], 2768 | "description": "Simple template engine.", 2769 | "homepage": "https://github.com/sebastianbergmann/php-text-template/", 2770 | "keywords": [ 2771 | "template" 2772 | ], 2773 | "time": "2015-06-21T13:50:34+00:00" 2774 | }, 2775 | { 2776 | "name": "phpunit/php-timer", 2777 | "version": "1.0.9", 2778 | "source": { 2779 | "type": "git", 2780 | "url": "https://github.com/sebastianbergmann/php-timer.git", 2781 | "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" 2782 | }, 2783 | "dist": { 2784 | "type": "zip", 2785 | "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", 2786 | "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", 2787 | "shasum": "" 2788 | }, 2789 | "require": { 2790 | "php": "^5.3.3 || ^7.0" 2791 | }, 2792 | "require-dev": { 2793 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" 2794 | }, 2795 | "type": "library", 2796 | "extra": { 2797 | "branch-alias": { 2798 | "dev-master": "1.0-dev" 2799 | } 2800 | }, 2801 | "autoload": { 2802 | "classmap": [ 2803 | "src/" 2804 | ] 2805 | }, 2806 | "notification-url": "https://packagist.org/downloads/", 2807 | "license": [ 2808 | "BSD-3-Clause" 2809 | ], 2810 | "authors": [ 2811 | { 2812 | "name": "Sebastian Bergmann", 2813 | "email": "sb@sebastian-bergmann.de", 2814 | "role": "lead" 2815 | } 2816 | ], 2817 | "description": "Utility class for timing", 2818 | "homepage": "https://github.com/sebastianbergmann/php-timer/", 2819 | "keywords": [ 2820 | "timer" 2821 | ], 2822 | "time": "2017-02-26T11:10:40+00:00" 2823 | }, 2824 | { 2825 | "name": "phpunit/php-token-stream", 2826 | "version": "1.4.12", 2827 | "source": { 2828 | "type": "git", 2829 | "url": "https://github.com/sebastianbergmann/php-token-stream.git", 2830 | "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16" 2831 | }, 2832 | "dist": { 2833 | "type": "zip", 2834 | "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/1ce90ba27c42e4e44e6d8458241466380b51fa16", 2835 | "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16", 2836 | "shasum": "" 2837 | }, 2838 | "require": { 2839 | "ext-tokenizer": "*", 2840 | "php": ">=5.3.3" 2841 | }, 2842 | "require-dev": { 2843 | "phpunit/phpunit": "~4.2" 2844 | }, 2845 | "type": "library", 2846 | "extra": { 2847 | "branch-alias": { 2848 | "dev-master": "1.4-dev" 2849 | } 2850 | }, 2851 | "autoload": { 2852 | "classmap": [ 2853 | "src/" 2854 | ] 2855 | }, 2856 | "notification-url": "https://packagist.org/downloads/", 2857 | "license": [ 2858 | "BSD-3-Clause" 2859 | ], 2860 | "authors": [ 2861 | { 2862 | "name": "Sebastian Bergmann", 2863 | "email": "sebastian@phpunit.de" 2864 | } 2865 | ], 2866 | "description": "Wrapper around PHP's tokenizer extension.", 2867 | "homepage": "https://github.com/sebastianbergmann/php-token-stream/", 2868 | "keywords": [ 2869 | "tokenizer" 2870 | ], 2871 | "time": "2017-12-04T08:55:13+00:00" 2872 | }, 2873 | { 2874 | "name": "phpunit/phpunit", 2875 | "version": "4.8.28", 2876 | "source": { 2877 | "type": "git", 2878 | "url": "https://github.com/sebastianbergmann/phpunit.git", 2879 | "reference": "558a3a0d28b4cb7e4a593a4fbd2220e787076225" 2880 | }, 2881 | "dist": { 2882 | "type": "zip", 2883 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/558a3a0d28b4cb7e4a593a4fbd2220e787076225", 2884 | "reference": "558a3a0d28b4cb7e4a593a4fbd2220e787076225", 2885 | "shasum": "" 2886 | }, 2887 | "require": { 2888 | "ext-dom": "*", 2889 | "ext-json": "*", 2890 | "ext-pcre": "*", 2891 | "ext-reflection": "*", 2892 | "ext-spl": "*", 2893 | "php": ">=5.3.3", 2894 | "phpspec/prophecy": "^1.3.1", 2895 | "phpunit/php-code-coverage": "~2.1", 2896 | "phpunit/php-file-iterator": "~1.4", 2897 | "phpunit/php-text-template": "~1.2", 2898 | "phpunit/php-timer": "^1.0.6", 2899 | "phpunit/phpunit-mock-objects": "~2.3", 2900 | "sebastian/comparator": "~1.1", 2901 | "sebastian/diff": "~1.2", 2902 | "sebastian/environment": "~1.3", 2903 | "sebastian/exporter": "~1.2", 2904 | "sebastian/global-state": "~1.0", 2905 | "sebastian/version": "~1.0", 2906 | "symfony/yaml": "~2.1|~3.0" 2907 | }, 2908 | "suggest": { 2909 | "phpunit/php-invoker": "~1.1" 2910 | }, 2911 | "bin": [ 2912 | "phpunit" 2913 | ], 2914 | "type": "library", 2915 | "extra": { 2916 | "branch-alias": { 2917 | "dev-master": "4.8.x-dev" 2918 | } 2919 | }, 2920 | "autoload": { 2921 | "classmap": [ 2922 | "src/" 2923 | ] 2924 | }, 2925 | "notification-url": "https://packagist.org/downloads/", 2926 | "license": [ 2927 | "BSD-3-Clause" 2928 | ], 2929 | "authors": [ 2930 | { 2931 | "name": "Sebastian Bergmann", 2932 | "email": "sebastian@phpunit.de", 2933 | "role": "lead" 2934 | } 2935 | ], 2936 | "description": "The PHP Unit Testing framework.", 2937 | "homepage": "https://phpunit.de/", 2938 | "keywords": [ 2939 | "phpunit", 2940 | "testing", 2941 | "xunit" 2942 | ], 2943 | "time": "2016-11-14T06:25:28+00:00" 2944 | }, 2945 | { 2946 | "name": "phpunit/phpunit-mock-objects", 2947 | "version": "2.3.8", 2948 | "source": { 2949 | "type": "git", 2950 | "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", 2951 | "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983" 2952 | }, 2953 | "dist": { 2954 | "type": "zip", 2955 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/ac8e7a3db35738d56ee9a76e78a4e03d97628983", 2956 | "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983", 2957 | "shasum": "" 2958 | }, 2959 | "require": { 2960 | "doctrine/instantiator": "^1.0.2", 2961 | "php": ">=5.3.3", 2962 | "phpunit/php-text-template": "~1.2", 2963 | "sebastian/exporter": "~1.2" 2964 | }, 2965 | "require-dev": { 2966 | "phpunit/phpunit": "~4.4" 2967 | }, 2968 | "suggest": { 2969 | "ext-soap": "*" 2970 | }, 2971 | "type": "library", 2972 | "extra": { 2973 | "branch-alias": { 2974 | "dev-master": "2.3.x-dev" 2975 | } 2976 | }, 2977 | "autoload": { 2978 | "classmap": [ 2979 | "src/" 2980 | ] 2981 | }, 2982 | "notification-url": "https://packagist.org/downloads/", 2983 | "license": [ 2984 | "BSD-3-Clause" 2985 | ], 2986 | "authors": [ 2987 | { 2988 | "name": "Sebastian Bergmann", 2989 | "email": "sb@sebastian-bergmann.de", 2990 | "role": "lead" 2991 | } 2992 | ], 2993 | "description": "Mock Object library for PHPUnit", 2994 | "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", 2995 | "keywords": [ 2996 | "mock", 2997 | "xunit" 2998 | ], 2999 | "abandoned": true, 3000 | "time": "2015-10-02T06:51:40+00:00" 3001 | }, 3002 | { 3003 | "name": "sebastian/comparator", 3004 | "version": "1.2.4", 3005 | "source": { 3006 | "type": "git", 3007 | "url": "https://github.com/sebastianbergmann/comparator.git", 3008 | "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be" 3009 | }, 3010 | "dist": { 3011 | "type": "zip", 3012 | "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", 3013 | "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", 3014 | "shasum": "" 3015 | }, 3016 | "require": { 3017 | "php": ">=5.3.3", 3018 | "sebastian/diff": "~1.2", 3019 | "sebastian/exporter": "~1.2 || ~2.0" 3020 | }, 3021 | "require-dev": { 3022 | "phpunit/phpunit": "~4.4" 3023 | }, 3024 | "type": "library", 3025 | "extra": { 3026 | "branch-alias": { 3027 | "dev-master": "1.2.x-dev" 3028 | } 3029 | }, 3030 | "autoload": { 3031 | "classmap": [ 3032 | "src/" 3033 | ] 3034 | }, 3035 | "notification-url": "https://packagist.org/downloads/", 3036 | "license": [ 3037 | "BSD-3-Clause" 3038 | ], 3039 | "authors": [ 3040 | { 3041 | "name": "Jeff Welch", 3042 | "email": "whatthejeff@gmail.com" 3043 | }, 3044 | { 3045 | "name": "Volker Dusch", 3046 | "email": "github@wallbash.com" 3047 | }, 3048 | { 3049 | "name": "Bernhard Schussek", 3050 | "email": "bschussek@2bepublished.at" 3051 | }, 3052 | { 3053 | "name": "Sebastian Bergmann", 3054 | "email": "sebastian@phpunit.de" 3055 | } 3056 | ], 3057 | "description": "Provides the functionality to compare PHP values for equality", 3058 | "homepage": "http://www.github.com/sebastianbergmann/comparator", 3059 | "keywords": [ 3060 | "comparator", 3061 | "compare", 3062 | "equality" 3063 | ], 3064 | "time": "2017-01-29T09:50:25+00:00" 3065 | }, 3066 | { 3067 | "name": "sebastian/diff", 3068 | "version": "1.4.3", 3069 | "source": { 3070 | "type": "git", 3071 | "url": "https://github.com/sebastianbergmann/diff.git", 3072 | "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4" 3073 | }, 3074 | "dist": { 3075 | "type": "zip", 3076 | "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4", 3077 | "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4", 3078 | "shasum": "" 3079 | }, 3080 | "require": { 3081 | "php": "^5.3.3 || ^7.0" 3082 | }, 3083 | "require-dev": { 3084 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" 3085 | }, 3086 | "type": "library", 3087 | "extra": { 3088 | "branch-alias": { 3089 | "dev-master": "1.4-dev" 3090 | } 3091 | }, 3092 | "autoload": { 3093 | "classmap": [ 3094 | "src/" 3095 | ] 3096 | }, 3097 | "notification-url": "https://packagist.org/downloads/", 3098 | "license": [ 3099 | "BSD-3-Clause" 3100 | ], 3101 | "authors": [ 3102 | { 3103 | "name": "Kore Nordmann", 3104 | "email": "mail@kore-nordmann.de" 3105 | }, 3106 | { 3107 | "name": "Sebastian Bergmann", 3108 | "email": "sebastian@phpunit.de" 3109 | } 3110 | ], 3111 | "description": "Diff implementation", 3112 | "homepage": "https://github.com/sebastianbergmann/diff", 3113 | "keywords": [ 3114 | "diff" 3115 | ], 3116 | "time": "2017-05-22T07:24:03+00:00" 3117 | }, 3118 | { 3119 | "name": "sebastian/environment", 3120 | "version": "1.3.8", 3121 | "source": { 3122 | "type": "git", 3123 | "url": "https://github.com/sebastianbergmann/environment.git", 3124 | "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea" 3125 | }, 3126 | "dist": { 3127 | "type": "zip", 3128 | "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/be2c607e43ce4c89ecd60e75c6a85c126e754aea", 3129 | "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea", 3130 | "shasum": "" 3131 | }, 3132 | "require": { 3133 | "php": "^5.3.3 || ^7.0" 3134 | }, 3135 | "require-dev": { 3136 | "phpunit/phpunit": "^4.8 || ^5.0" 3137 | }, 3138 | "type": "library", 3139 | "extra": { 3140 | "branch-alias": { 3141 | "dev-master": "1.3.x-dev" 3142 | } 3143 | }, 3144 | "autoload": { 3145 | "classmap": [ 3146 | "src/" 3147 | ] 3148 | }, 3149 | "notification-url": "https://packagist.org/downloads/", 3150 | "license": [ 3151 | "BSD-3-Clause" 3152 | ], 3153 | "authors": [ 3154 | { 3155 | "name": "Sebastian Bergmann", 3156 | "email": "sebastian@phpunit.de" 3157 | } 3158 | ], 3159 | "description": "Provides functionality to handle HHVM/PHP environments", 3160 | "homepage": "http://www.github.com/sebastianbergmann/environment", 3161 | "keywords": [ 3162 | "Xdebug", 3163 | "environment", 3164 | "hhvm" 3165 | ], 3166 | "time": "2016-08-18T05:49:44+00:00" 3167 | }, 3168 | { 3169 | "name": "sebastian/exporter", 3170 | "version": "1.2.2", 3171 | "source": { 3172 | "type": "git", 3173 | "url": "https://github.com/sebastianbergmann/exporter.git", 3174 | "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4" 3175 | }, 3176 | "dist": { 3177 | "type": "zip", 3178 | "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/42c4c2eec485ee3e159ec9884f95b431287edde4", 3179 | "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4", 3180 | "shasum": "" 3181 | }, 3182 | "require": { 3183 | "php": ">=5.3.3", 3184 | "sebastian/recursion-context": "~1.0" 3185 | }, 3186 | "require-dev": { 3187 | "ext-mbstring": "*", 3188 | "phpunit/phpunit": "~4.4" 3189 | }, 3190 | "type": "library", 3191 | "extra": { 3192 | "branch-alias": { 3193 | "dev-master": "1.3.x-dev" 3194 | } 3195 | }, 3196 | "autoload": { 3197 | "classmap": [ 3198 | "src/" 3199 | ] 3200 | }, 3201 | "notification-url": "https://packagist.org/downloads/", 3202 | "license": [ 3203 | "BSD-3-Clause" 3204 | ], 3205 | "authors": [ 3206 | { 3207 | "name": "Jeff Welch", 3208 | "email": "whatthejeff@gmail.com" 3209 | }, 3210 | { 3211 | "name": "Volker Dusch", 3212 | "email": "github@wallbash.com" 3213 | }, 3214 | { 3215 | "name": "Bernhard Schussek", 3216 | "email": "bschussek@2bepublished.at" 3217 | }, 3218 | { 3219 | "name": "Sebastian Bergmann", 3220 | "email": "sebastian@phpunit.de" 3221 | }, 3222 | { 3223 | "name": "Adam Harvey", 3224 | "email": "aharvey@php.net" 3225 | } 3226 | ], 3227 | "description": "Provides the functionality to export PHP variables for visualization", 3228 | "homepage": "http://www.github.com/sebastianbergmann/exporter", 3229 | "keywords": [ 3230 | "export", 3231 | "exporter" 3232 | ], 3233 | "time": "2016-06-17T09:04:28+00:00" 3234 | }, 3235 | { 3236 | "name": "sebastian/global-state", 3237 | "version": "1.1.1", 3238 | "source": { 3239 | "type": "git", 3240 | "url": "https://github.com/sebastianbergmann/global-state.git", 3241 | "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4" 3242 | }, 3243 | "dist": { 3244 | "type": "zip", 3245 | "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4", 3246 | "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4", 3247 | "shasum": "" 3248 | }, 3249 | "require": { 3250 | "php": ">=5.3.3" 3251 | }, 3252 | "require-dev": { 3253 | "phpunit/phpunit": "~4.2" 3254 | }, 3255 | "suggest": { 3256 | "ext-uopz": "*" 3257 | }, 3258 | "type": "library", 3259 | "extra": { 3260 | "branch-alias": { 3261 | "dev-master": "1.0-dev" 3262 | } 3263 | }, 3264 | "autoload": { 3265 | "classmap": [ 3266 | "src/" 3267 | ] 3268 | }, 3269 | "notification-url": "https://packagist.org/downloads/", 3270 | "license": [ 3271 | "BSD-3-Clause" 3272 | ], 3273 | "authors": [ 3274 | { 3275 | "name": "Sebastian Bergmann", 3276 | "email": "sebastian@phpunit.de" 3277 | } 3278 | ], 3279 | "description": "Snapshotting of global state", 3280 | "homepage": "http://www.github.com/sebastianbergmann/global-state", 3281 | "keywords": [ 3282 | "global state" 3283 | ], 3284 | "time": "2015-10-12T03:26:01+00:00" 3285 | }, 3286 | { 3287 | "name": "sebastian/recursion-context", 3288 | "version": "1.0.5", 3289 | "source": { 3290 | "type": "git", 3291 | "url": "https://github.com/sebastianbergmann/recursion-context.git", 3292 | "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7" 3293 | }, 3294 | "dist": { 3295 | "type": "zip", 3296 | "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/b19cc3298482a335a95f3016d2f8a6950f0fbcd7", 3297 | "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7", 3298 | "shasum": "" 3299 | }, 3300 | "require": { 3301 | "php": ">=5.3.3" 3302 | }, 3303 | "require-dev": { 3304 | "phpunit/phpunit": "~4.4" 3305 | }, 3306 | "type": "library", 3307 | "extra": { 3308 | "branch-alias": { 3309 | "dev-master": "1.0.x-dev" 3310 | } 3311 | }, 3312 | "autoload": { 3313 | "classmap": [ 3314 | "src/" 3315 | ] 3316 | }, 3317 | "notification-url": "https://packagist.org/downloads/", 3318 | "license": [ 3319 | "BSD-3-Clause" 3320 | ], 3321 | "authors": [ 3322 | { 3323 | "name": "Jeff Welch", 3324 | "email": "whatthejeff@gmail.com" 3325 | }, 3326 | { 3327 | "name": "Sebastian Bergmann", 3328 | "email": "sebastian@phpunit.de" 3329 | }, 3330 | { 3331 | "name": "Adam Harvey", 3332 | "email": "aharvey@php.net" 3333 | } 3334 | ], 3335 | "description": "Provides functionality to recursively process PHP variables", 3336 | "homepage": "http://www.github.com/sebastianbergmann/recursion-context", 3337 | "time": "2016-10-03T07:41:43+00:00" 3338 | }, 3339 | { 3340 | "name": "sebastian/version", 3341 | "version": "1.0.6", 3342 | "source": { 3343 | "type": "git", 3344 | "url": "https://github.com/sebastianbergmann/version.git", 3345 | "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6" 3346 | }, 3347 | "dist": { 3348 | "type": "zip", 3349 | "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", 3350 | "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", 3351 | "shasum": "" 3352 | }, 3353 | "type": "library", 3354 | "autoload": { 3355 | "classmap": [ 3356 | "src/" 3357 | ] 3358 | }, 3359 | "notification-url": "https://packagist.org/downloads/", 3360 | "license": [ 3361 | "BSD-3-Clause" 3362 | ], 3363 | "authors": [ 3364 | { 3365 | "name": "Sebastian Bergmann", 3366 | "email": "sebastian@phpunit.de", 3367 | "role": "lead" 3368 | } 3369 | ], 3370 | "description": "Library that helps with managing the version number of Git-hosted PHP projects", 3371 | "homepage": "https://github.com/sebastianbergmann/version", 3372 | "time": "2015-06-21T13:59:46+00:00" 3373 | }, 3374 | { 3375 | "name": "symfony/yaml", 3376 | "version": "v3.3.18", 3377 | "source": { 3378 | "type": "git", 3379 | "url": "https://github.com/symfony/yaml.git", 3380 | "reference": "af615970e265543a26ee712c958404eb9b7ac93d" 3381 | }, 3382 | "dist": { 3383 | "type": "zip", 3384 | "url": "https://api.github.com/repos/symfony/yaml/zipball/af615970e265543a26ee712c958404eb9b7ac93d", 3385 | "reference": "af615970e265543a26ee712c958404eb9b7ac93d", 3386 | "shasum": "" 3387 | }, 3388 | "require": { 3389 | "php": "^5.5.9|>=7.0.8" 3390 | }, 3391 | "require-dev": { 3392 | "symfony/console": "~2.8|~3.0" 3393 | }, 3394 | "suggest": { 3395 | "symfony/console": "For validating YAML files using the lint command" 3396 | }, 3397 | "type": "library", 3398 | "extra": { 3399 | "branch-alias": { 3400 | "dev-master": "3.3-dev" 3401 | } 3402 | }, 3403 | "autoload": { 3404 | "psr-4": { 3405 | "Symfony\\Component\\Yaml\\": "" 3406 | }, 3407 | "exclude-from-classmap": [ 3408 | "/Tests/" 3409 | ] 3410 | }, 3411 | "notification-url": "https://packagist.org/downloads/", 3412 | "license": [ 3413 | "MIT" 3414 | ], 3415 | "authors": [ 3416 | { 3417 | "name": "Fabien Potencier", 3418 | "email": "fabien@symfony.com" 3419 | }, 3420 | { 3421 | "name": "Symfony Community", 3422 | "homepage": "https://symfony.com/contributors" 3423 | } 3424 | ], 3425 | "description": "Symfony Yaml Component", 3426 | "homepage": "https://symfony.com", 3427 | "time": "2018-01-20T15:04:53+00:00" 3428 | }, 3429 | { 3430 | "name": "webmozart/assert", 3431 | "version": "1.10.0", 3432 | "source": { 3433 | "type": "git", 3434 | "url": "https://github.com/webmozarts/assert.git", 3435 | "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" 3436 | }, 3437 | "dist": { 3438 | "type": "zip", 3439 | "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", 3440 | "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", 3441 | "shasum": "" 3442 | }, 3443 | "require": { 3444 | "php": "^7.2 || ^8.0", 3445 | "symfony/polyfill-ctype": "^1.8" 3446 | }, 3447 | "conflict": { 3448 | "phpstan/phpstan": "<0.12.20", 3449 | "vimeo/psalm": "<4.6.1 || 4.6.2" 3450 | }, 3451 | "require-dev": { 3452 | "phpunit/phpunit": "^8.5.13" 3453 | }, 3454 | "type": "library", 3455 | "extra": { 3456 | "branch-alias": { 3457 | "dev-master": "1.10-dev" 3458 | } 3459 | }, 3460 | "autoload": { 3461 | "psr-4": { 3462 | "Webmozart\\Assert\\": "src/" 3463 | } 3464 | }, 3465 | "notification-url": "https://packagist.org/downloads/", 3466 | "license": [ 3467 | "MIT" 3468 | ], 3469 | "authors": [ 3470 | { 3471 | "name": "Bernhard Schussek", 3472 | "email": "bschussek@gmail.com" 3473 | } 3474 | ], 3475 | "description": "Assertions to validate method input/output with nice error messages.", 3476 | "keywords": [ 3477 | "assert", 3478 | "check", 3479 | "validate" 3480 | ], 3481 | "support": { 3482 | "issues": "https://github.com/webmozarts/assert/issues", 3483 | "source": "https://github.com/webmozarts/assert/tree/1.10.0" 3484 | }, 3485 | "time": "2021-03-09T10:59:23+00:00" 3486 | } 3487 | ], 3488 | "aliases": [], 3489 | "minimum-stability": "stable", 3490 | "stability-flags": [], 3491 | "prefer-stable": false, 3492 | "prefer-lowest": false, 3493 | "platform": { 3494 | "php": ">=5.5.9" 3495 | }, 3496 | "platform-dev": [], 3497 | "plugin-api-version": "1.1.0" 3498 | } 3499 | --------------------------------------------------------------------------------