├── .gitignore ├── src ├── Facades │ └── SNS.php ├── LumenProvider.php ├── Commands │ ├── Create.php │ ├── Delete.php │ ├── Subscribe.php │ └── Unsubscribe.php ├── Broadcaster.php ├── Provider.php └── SNS.php ├── README.md ├── LICENSE.md ├── composer.json ├── config └── sns.php └── composer.lock /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | /vendor/ -------------------------------------------------------------------------------- /src/Facades/SNS.php: -------------------------------------------------------------------------------- 1 | app->singleton(\Illuminate\Broadcasting\BroadcastManager::class, function ($app, $config) { 16 | return new \Illuminate\Broadcasting\BroadcastManager($app); 17 | }); 18 | 19 | $this->bootWithRouter($this->app[Router::class]); 20 | } 21 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Laravel / Lumen SNS Broadcast Driver 2 | 3 | [![Latest Stable Version](https://poser.pugx.org/mitchdav/sns-laravel/v/stable)](https://packagist.org/packages/mitchdav/sns-laravel) 4 | [![Total Downloads](https://poser.pugx.org/mitchdav/sns-laravel/downloads)](https://packagist.org/packages/mitchdav/sns-laravel) 5 | [![License](https://poser.pugx.org/mitchdav/sns-laravel/license)](https://packagist.org/packages/mitchdav/sns-laravel) 6 | 7 | This library provides a Laravel and Lumen broadcast driver for the AWS SNS platform. 8 | 9 | Using this library, you can send and receive broadcasts to and from SNS topics. 10 | 11 | Please see the [wiki](https://github.com/mitchdav/sns-laravel/wiki) for installation and usage details. -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) Mitchell Davis 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mitchdav/sns-laravel", 3 | "description": "A library to enable sending and receiving broadcasts to and from SNS topics in Laravel and Lumen.", 4 | "keywords": [ 5 | "laravel", 6 | "lumen", 7 | "broadcast", 8 | "broadcasts", 9 | "broadcaster", 10 | "broadcasters", 11 | "broadcasting", 12 | "notification", 13 | "notifications", 14 | "sns", 15 | "aws" 16 | ], 17 | "type": "library", 18 | "license": "MIT", 19 | "authors": [ 20 | { 21 | "name": "Mitchell Davis", 22 | "email": "mitch@wingmanwebdesign.com.au" 23 | } 24 | ], 25 | "scripts": { 26 | "test": "phpunit" 27 | }, 28 | "autoload": { 29 | "psr-4": { 30 | "Mitchdav\\SNS\\": "src/" 31 | } 32 | }, 33 | "require": { 34 | "aws/aws-php-sns-message-validator": "^1.2", 35 | "aws/aws-sdk-php": "~3.0", 36 | "illuminate/broadcasting": "5.6.*", 37 | "illuminate/console": "5.6.*", 38 | "illuminate/notifications": "5.6.*", 39 | "illuminate/routing": "5.6.*", 40 | "illuminate/support": "5.6.*" 41 | }, 42 | "require-dev": { 43 | "phpunit/phpunit": "^5.7" 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/Commands/Create.php: -------------------------------------------------------------------------------- 1 | sns = $sns; 43 | } 44 | 45 | /** 46 | * Execute the console command. 47 | */ 48 | public function handle() 49 | { 50 | if ($this->argument('topic') !== NULL) { 51 | $topics = [ 52 | $this->argument('topic'), 53 | ]; 54 | } else { 55 | $topics = array_keys($this->sns->getTopics()); 56 | } 57 | 58 | foreach ($topics as $topic) { 59 | $this->sns->createTopic($topic); 60 | } 61 | } 62 | } -------------------------------------------------------------------------------- /src/Commands/Delete.php: -------------------------------------------------------------------------------- 1 | sns = $sns; 43 | } 44 | 45 | /** 46 | * Execute the console command. 47 | */ 48 | public function handle() 49 | { 50 | if ($this->argument('topic') !== NULL) { 51 | $topics = [ 52 | $this->argument('topic'), 53 | ]; 54 | } else { 55 | $topics = array_keys($this->sns->getTopics()); 56 | } 57 | 58 | foreach ($topics as $topic) { 59 | $this->sns->deleteTopic($topic); 60 | } 61 | } 62 | } -------------------------------------------------------------------------------- /src/Commands/Subscribe.php: -------------------------------------------------------------------------------- 1 | sns = $sns; 43 | } 44 | 45 | /** 46 | * Execute the console command. 47 | */ 48 | public function handle() 49 | { 50 | if ($this->argument('topic') !== NULL) { 51 | $topics = [ 52 | $this->argument('topic'), 53 | ]; 54 | } else { 55 | $topics = array_keys($this->sns->getSubscriptions()); 56 | } 57 | 58 | $create = $this->option('create'); 59 | 60 | foreach ($topics as $topic) { 61 | if ($create) { 62 | $this->sns->createTopic($topic); 63 | } 64 | 65 | $this->sns->subscribe($topic); 66 | } 67 | } 68 | } -------------------------------------------------------------------------------- /src/Commands/Unsubscribe.php: -------------------------------------------------------------------------------- 1 | sns = $sns; 43 | } 44 | 45 | /** 46 | * Execute the console command. 47 | */ 48 | public function handle() 49 | { 50 | if ($this->argument('topic') !== NULL) { 51 | $topics = [ 52 | $this->argument('topic'), 53 | ]; 54 | } else { 55 | $topics = array_keys($this->sns->getSubscriptions()); 56 | } 57 | 58 | $delete = $this->option('delete'); 59 | 60 | foreach ($topics as $topic) { 61 | $this->sns->unsubscribe($topic); 62 | 63 | if ($delete) { 64 | $this->sns->deleteTopic($topic); 65 | } 66 | } 67 | } 68 | } -------------------------------------------------------------------------------- /src/Broadcaster.php: -------------------------------------------------------------------------------- 1 | sns = $sns; 26 | } 27 | 28 | /** 29 | * @param $channelName 30 | * @param $callback 31 | * 32 | * @return bool 33 | */ 34 | public function channel($channelName, $callback) 35 | { 36 | return TRUE; 37 | } 38 | 39 | /** 40 | * @param array $channels 41 | * @param string $event 42 | * @param array $payload 43 | */ 44 | public function broadcast(array $channels, $event, array $payload = []) 45 | { 46 | $payload = json_encode([ 47 | 'event' => $event, 48 | 'data' => $payload, 49 | ]); 50 | 51 | foreach ($channels as $channel) { 52 | if (is_string($channel)) { 53 | $topic = $this->sns->getTopic($channel); 54 | 55 | $this->sns->getClient() 56 | ->publish([ 57 | 'Message' => $payload, 58 | 'TopicArn' => $topic['arn'], 59 | ]); 60 | } 61 | } 62 | } 63 | 64 | /** 65 | * Authenticate the incoming request for a given channel. 66 | * 67 | * @param \Illuminate\Http\Request $request 68 | * 69 | * @return mixed 70 | */ 71 | public function auth($request) 72 | { 73 | // SNS is for server-to-server communication, so there is no need to validate authenticate. 74 | } 75 | 76 | /** 77 | * Return the valid authentication response. 78 | * 79 | * @param \Illuminate\Http\Request $request 80 | * @param mixed $result 81 | * 82 | * @return mixed 83 | */ 84 | public function validAuthenticationResponse($request, $result) 85 | { 86 | // SNS is for server-to-server communication, so there is no need to validate authenticate. 87 | } 88 | } -------------------------------------------------------------------------------- /src/Provider.php: -------------------------------------------------------------------------------- 1 | mergeConfigFrom(__DIR__ . '/../config/sns.php', 'sns'); 22 | } 23 | 24 | public function boot() 25 | { 26 | $this->bootWithRouter($this->app[Router::class]); 27 | } 28 | 29 | /** 30 | * @param object $router 31 | * 32 | * @return $this 33 | */ 34 | protected function bootWithRouter($router) 35 | { 36 | $this->app->singleton(SnsClient::class, function ($app, $config) { 37 | return new SnsClient(config('sns.client')); 38 | }); 39 | 40 | $this->app->singleton(SNS::class, function ($app, $config) use ($router) { 41 | return new SNS($app[SnsClient::class], $router); 42 | }); 43 | 44 | $this->app[\Illuminate\Contracts\Broadcasting\Factory::class]->extend('sns', function ($app, $config) { 45 | return new Broadcaster($app[SNS::class]); 46 | }); 47 | 48 | $this->publishes([ 49 | __DIR__ . '/../config/sns.php' => $this->getConfigPath('sns.php'), 50 | ], 'config'); 51 | 52 | if ($this->app->runningInConsole()) { 53 | $this->commands([ 54 | Create::class, 55 | Delete::class, 56 | Subscribe::class, 57 | Unsubscribe::class, 58 | ]); 59 | } 60 | 61 | $this->app[SNS::class]->registerRoutes(); 62 | 63 | return $this; 64 | } 65 | 66 | /** 67 | * @param string $path 68 | * 69 | * @return string 70 | */ 71 | private function getConfigPath($path = '') 72 | { 73 | if (!function_exists('config_path')) { 74 | /** 75 | * @see https://gist.github.com/mabasic/21d13eab12462e596120 76 | */ 77 | return app()->basePath() . '/config' . ($path ? '/' . $path : $path); 78 | } else { 79 | return config_path($path); 80 | } 81 | } 82 | } -------------------------------------------------------------------------------- /config/sns.php: -------------------------------------------------------------------------------- 1 | [ 10 | 'id' => env('AWS_ACCOUNT_ID'), 11 | 'key' => env('AWS_ACCESS_KEY'), 12 | 'secret' => env('AWS_SECRET_KEY'), 13 | 'region' => env('AWS_REGION'), 14 | 'version' => 'latest', 15 | ], 16 | 17 | // The base URL for each of the routes, which is used to give SNS the right subscription endpoints 18 | 'url' => rtrim(env('APP_URL'), '/'), 19 | 20 | // Suitable defaults 21 | 'defaults' => [ 22 | 'topics' => [ 23 | 'region' => env('AWS_REGION'), 24 | 'id' => env('AWS_ACCOUNT_ID'), 25 | 'prefix' => str_slug(env('APP_NAME')), 26 | 'joiner' => '_', 27 | 'formARN' => function ($region, $id, $prefix, $joiner, $topic) { 28 | // This default joiner will form ARNs similar to arn:aws:sns:us-east-2:1234567890:app-name_test-broadcast 29 | $output = 'arn:aws:sns:' . $region . ':' . $id . ':'; 30 | 31 | if (!empty($prefix)) { 32 | $output .= $prefix . $joiner; 33 | } 34 | 35 | return $output . $topic; 36 | }, 37 | ], 38 | 39 | 'subscriptions' => [ 40 | // This will be the default route for all subscriptions 41 | 'route' => '/sns', 42 | ], 43 | ], 44 | 45 | // The topics and their matching ARNs, which can be created with 46 | // php artisan sns:create 47 | 'topics' => [ 48 | // The ARN can be formed using the defaults above 49 | 'test-broadcast', 50 | 51 | // You can also define the ARN directly 52 | //'test-broadcast-arn' => 'arn:aws:sns:us-east-2:1234567890:test-broadcast-arn', 53 | ], 54 | 55 | // The topics to be subscribed to, and their matching actions 56 | 'subscriptions' => [ 57 | 'test-broadcast' => [ 58 | // 'controller' => 'BroadcastController@testBroadcast', 59 | // 'job' => 'TestBroadcastJob', 60 | 'callback' => function (Message $message) { 61 | // Log::info('Broadcast received from ARN "' . $message->offsetGet('TopicArn') . '" with Message "' . $message->offsetGet('Message') . '".'); 62 | }, 63 | ], 64 | 65 | /*'test-broadcast-arn' => [ 66 | // You can also dispatch an array of actions 67 | 'controller' => [ 68 | 'BroadcastController@testBroadcastARN', 69 | ], 70 | 'job' => [ 71 | 'TestBroadcastARNJob', 72 | ], 73 | 'callback' => [ 74 | function (\Aws\Sns\Message $message) { 75 | // Log::info('Broadcast received from ARN "' . $message->offsetGet('TopicArn') . '" with Message "' . $message->offsetGet('Message') . '".'); 76 | }, 77 | ], 78 | // You can override the route on a per-subscription basis 79 | // 'route' => '/sns/test-broadcast-arn', 80 | ],*/ 81 | ], 82 | ]; -------------------------------------------------------------------------------- /src/SNS.php: -------------------------------------------------------------------------------- 1 | client = $client; 59 | $this->router = $router; 60 | 61 | $config = config('sns'); 62 | 63 | $this->url = $config['url']; 64 | $this->defaults = $config['defaults']; 65 | 66 | $this->topics = $this->parseTopics($config['topics']); 67 | $this->subscriptions = $this->parseSubscriptions($config['subscriptions']); 68 | } 69 | 70 | /** 71 | * @param $topic 72 | * 73 | * @return $this 74 | */ 75 | public function createTopic($topic) 76 | { 77 | if (!array_key_exists($topic, $this->getTopics())) { 78 | throw new \InvalidArgumentException('The topic must exist in the topics configuration.'); 79 | } 80 | 81 | $result = $this->getClient() 82 | ->createTopic([ 83 | 'Name' => $this->getTopic($topic)['name'], 84 | ]); 85 | 86 | $arn = $result->get('TopicArn'); 87 | 88 | $this->topics[$topic]['arn'] = $arn; 89 | 90 | return $this; 91 | } 92 | 93 | /** 94 | * @return array 95 | */ 96 | public function getTopics() 97 | { 98 | return $this->topics; 99 | } 100 | 101 | /** 102 | * @param string $topic 103 | * 104 | * @return array 105 | */ 106 | public function getTopic($topic) 107 | { 108 | if (!array_key_exists($topic, $this->getTopics())) { 109 | throw new \InvalidArgumentException('The topic must exist in the topics configuration.'); 110 | } 111 | 112 | return $this->getTopics()[$topic]; 113 | } 114 | 115 | /** 116 | * @return \Aws\Sns\SnsClient 117 | */ 118 | public function getClient() 119 | { 120 | return $this->client; 121 | } 122 | 123 | /** 124 | * @param $topic 125 | * 126 | * @return $this 127 | */ 128 | public function deleteTopic($topic) 129 | { 130 | if (!array_key_exists($topic, $this->getTopics())) { 131 | throw new \InvalidArgumentException('The topic must exist in the topics configuration.'); 132 | } 133 | 134 | $this->getClient() 135 | ->deleteTopic([ 136 | 'TopicArn' => $this->getTopic($topic)['arn'], 137 | ]); 138 | 139 | unset($this->topics[$topic]); 140 | 141 | return $this; 142 | } 143 | 144 | /** 145 | * @param $topic 146 | * 147 | * @return $this 148 | */ 149 | public function subscribe($topic) 150 | { 151 | if (!array_key_exists($topic, $this->getTopics())) { 152 | throw new \InvalidArgumentException('The topic must exist in the topics configuration.'); 153 | } 154 | 155 | if (!array_key_exists($topic, $this->getSubscriptions())) { 156 | throw new \InvalidArgumentException('The topic must exist in the subscriptions configuration.'); 157 | } 158 | 159 | $arn = $this->getTopics()[$topic]['arn']; 160 | $protocol = substr($this->url, 0, strpos($this->url, ':')); 161 | $endpoint = $this->url . $this->getSubscription($topic)['route']; 162 | 163 | $this->getClient() 164 | ->subscribe([ 165 | 'TopicArn' => $arn, 166 | 'Protocol' => $protocol, 167 | 'Endpoint' => $endpoint, 168 | ]); 169 | 170 | return $this; 171 | } 172 | 173 | /** 174 | * @return array 175 | */ 176 | public function getSubscriptions() 177 | { 178 | return $this->subscriptions; 179 | } 180 | 181 | /** 182 | * @param string $topic 183 | * 184 | * @return array 185 | */ 186 | public function getSubscription($topic) 187 | { 188 | if (!array_key_exists($topic, $this->getSubscriptions())) { 189 | throw new \InvalidArgumentException('The topic must exist in the subscriptions configuration.'); 190 | } 191 | 192 | return $this->getSubscriptions()[$topic]; 193 | } 194 | 195 | /** 196 | * @param string $topic 197 | * 198 | * @return $this 199 | */ 200 | public function unsubscribe($topic) 201 | { 202 | if (!array_key_exists($topic, $this->getTopics())) { 203 | throw new \InvalidArgumentException('The topic must exist in the topics configuration.'); 204 | } 205 | 206 | if (!array_key_exists($topic, $this->getSubscriptions())) { 207 | throw new \InvalidArgumentException('The topic must exist in the subscriptions configuration.'); 208 | } 209 | 210 | $arn = $this->getTopics()[$topic]['arn']; 211 | $protocol = substr($this->url, 0, strpos($this->url, ':')); 212 | $endpoint = $this->url . $this->getSubscription($topic)['route']; 213 | 214 | $nextToken = NULL; 215 | 216 | do { 217 | $args = [ 218 | 'TopicArn' => $arn, 219 | ]; 220 | 221 | if ($nextToken != NULL) { 222 | $args['NextToken'] = $nextToken; 223 | } 224 | 225 | $result = $this->getClient() 226 | ->listSubscriptionsByTopic($args); 227 | 228 | $nextToken = $result->get('NextToken'); 229 | 230 | $subscriptions = $result->get('Subscriptions'); 231 | 232 | foreach ($subscriptions as $subscription) { 233 | if ($subscription['Protocol'] == $protocol && $subscription['Endpoint'] == $endpoint) { 234 | $subscriptionArn = $subscription['SubscriptionArn']; 235 | 236 | $this->getClient() 237 | ->unsubscribe([ 238 | 'TopicArn' => $arn, 239 | 'SubscriptionArn' => $subscriptionArn, 240 | ]); 241 | } 242 | } 243 | } while ($nextToken != NULL); 244 | 245 | return $this; 246 | } 247 | 248 | /** 249 | * @return $this 250 | */ 251 | public function registerRoutes() 252 | { 253 | $this->routes = []; 254 | 255 | foreach ($this->getSubscriptions() as $topic => $subscription) { 256 | if (!array_key_exists($subscription['route'], $this->routes)) { 257 | $this->routes[$subscription['route']] = []; 258 | } 259 | 260 | $this->routes[$subscription['route']][] = [ 261 | 'topic' => $this->getTopic($topic), 262 | 'subscription' => $subscription, 263 | ]; 264 | } 265 | 266 | foreach ($this->routes as $route => $topics) { 267 | // Rebinding $this to $self avoids exceptions in Lumen about undefined methods used to fire actions 268 | // Symfony\Component\Debug\Exception\FatalThrowableError: Call to undefined method Laravel\Lumen\Routing\Closure::callController() 269 | // Symfony\Component\Debug\Exception\FatalThrowableError: Call to undefined method Laravel\Lumen\Routing\Closure::callJob() 270 | // Symfony\Component\Debug\Exception\FatalThrowableError: Call to undefined method Laravel\Lumen\Routing\Closure::callCallback() 271 | 272 | $self = $this; 273 | 274 | $this->router->post($route, function () use ($topics, $self) { 275 | $message = Message::fromRawPostData(); 276 | $validator = new MessageValidator(); 277 | 278 | // Validate the message and log errors if invalid. 279 | $validator->validate($message); 280 | 281 | $arn = $message['TopicArn']; 282 | $found = FALSE; 283 | 284 | foreach ($topics as $topic) { 285 | if ($arn == $topic['topic']['arn']) { 286 | $found = TRUE; 287 | 288 | switch ($message['Type']) { 289 | case 'SubscriptionConfirmation': { 290 | file_get_contents($message['SubscribeURL']); 291 | 292 | break; 293 | } 294 | 295 | case 'Notification': { 296 | $subscription = $topic['subscription']; 297 | 298 | if (array_key_exists('controller', $subscription)) { 299 | if (is_array($subscription['controller'])) { 300 | foreach ($subscription['controller'] as $controller) { 301 | $self->callController($controller, $message); 302 | } 303 | } else { 304 | $self->callController($subscription['controller'], $message); 305 | } 306 | } 307 | 308 | if (array_key_exists('job', $subscription)) { 309 | if (is_array($subscription['job'])) { 310 | foreach ($subscription['job'] as $job) { 311 | $self->callJob($job, $message); 312 | } 313 | } else { 314 | $self->callJob($subscription['job'], $message); 315 | } 316 | } 317 | 318 | if (array_key_exists('callback', $subscription)) { 319 | if (is_array($subscription['callback'])) { 320 | foreach ($subscription['callback'] as $callback) { 321 | $self->callCallback($callback, $message); 322 | } 323 | } else { 324 | $self->callCallback($subscription['callback'], $message); 325 | } 326 | } 327 | 328 | break; 329 | } 330 | } 331 | 332 | break; 333 | } 334 | } 335 | 336 | if (!$found) { 337 | throw new \Symfony\Component\HttpKernel\Exception\NotFoundHttpException(); 338 | } 339 | }); 340 | } 341 | 342 | return $this; 343 | } 344 | 345 | /** 346 | * @param array $topics 347 | * 348 | * @return array 349 | */ 350 | private function parseTopics($topics) 351 | { 352 | $output = []; 353 | 354 | foreach ($topics as $key => $value) { 355 | if (is_int($key)) { 356 | $key = $value; 357 | 358 | $value = []; 359 | } 360 | 361 | if (!is_string($value)) { 362 | $value = array_merge($this->defaults['topics'], [ 363 | 'topic' => $key, 364 | ], $value); 365 | 366 | $value = $value['formARN']($value['region'], $value['id'], $value['prefix'], $value['joiner'], $value['topic']); 367 | } 368 | 369 | $name = $this->getNameFromARN($value); 370 | 371 | $value = [ 372 | 'arn' => $value, 373 | 'name' => $name, 374 | ]; 375 | 376 | $output[$key] = $value; 377 | } 378 | 379 | return $output; 380 | } 381 | 382 | /** 383 | * @param string $arn 384 | * 385 | * @return string 386 | */ 387 | private function getNameFromARN($arn) 388 | { 389 | $parts = explode(':', $arn); 390 | 391 | $name = end($parts); 392 | 393 | return $name; 394 | } 395 | 396 | /** 397 | * @param array $subscriptions 398 | * 399 | * @return array 400 | */ 401 | private function parseSubscriptions($subscriptions) 402 | { 403 | $output = []; 404 | 405 | foreach ($subscriptions as $key => $value) { 406 | $value = array_merge($this->defaults['subscriptions'], $value); 407 | 408 | $output[$key] = $value; 409 | } 410 | 411 | return $output; 412 | } 413 | 414 | /** 415 | * @param string $controller 416 | * @param Message $message 417 | */ 418 | private function callController($controller, $message) 419 | { 420 | $split = explode('@', $controller); 421 | 422 | $controller = $split[0]; 423 | $method = $split[1]; 424 | 425 | /** @var \Illuminate\Routing\Controller $controller */ 426 | $controller = app()->make($controller); 427 | 428 | $controller->callAction($method, [ 429 | 'message' => $message, 430 | ]); 431 | } 432 | 433 | /** 434 | * @param string $job 435 | * @param Message $message 436 | */ 437 | private function callJob($job, Message $message) 438 | { 439 | dispatch(new $job($message)); 440 | } 441 | 442 | /** 443 | * @param callable $callback 444 | * @param Message $message 445 | */ 446 | private function callCallback($callback, Message $message) 447 | { 448 | if (is_callable($callback)) { 449 | $callback($message); 450 | } 451 | } 452 | } -------------------------------------------------------------------------------- /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#composer-lock-the-lock-file", 5 | "This file is @generated automatically" 6 | ], 7 | "content-hash": "e2d9f1d9fc7c94bef69633a9c81f775a", 8 | "packages": [ 9 | { 10 | "name": "aws/aws-php-sns-message-validator", 11 | "version": "1.4.0", 12 | "source": { 13 | "type": "git", 14 | "url": "https://github.com/aws/aws-php-sns-message-validator.git", 15 | "reference": "7b8eee4a56fe27d70395f1d87cc35a0651889d9f" 16 | }, 17 | "dist": { 18 | "type": "zip", 19 | "url": "https://api.github.com/repos/aws/aws-php-sns-message-validator/zipball/7b8eee4a56fe27d70395f1d87cc35a0651889d9f", 20 | "reference": "7b8eee4a56fe27d70395f1d87cc35a0651889d9f", 21 | "shasum": "" 22 | }, 23 | "require": { 24 | "ext-openssl": "*", 25 | "php": ">=5.4", 26 | "psr/http-message": "^1.0" 27 | }, 28 | "require-dev": { 29 | "guzzlehttp/psr7": "^1.4", 30 | "phpunit/phpunit": "^4.0", 31 | "squizlabs/php_codesniffer": "^2.3" 32 | }, 33 | "type": "library", 34 | "autoload": { 35 | "psr-4": { 36 | "Aws\\Sns\\": "src/" 37 | } 38 | }, 39 | "notification-url": "https://packagist.org/downloads/", 40 | "license": [ 41 | "Apache-2.0" 42 | ], 43 | "authors": [ 44 | { 45 | "name": "Amazon Web Services", 46 | "homepage": "http://aws.amazon.com" 47 | } 48 | ], 49 | "description": "Amazon SNS message validation for PHP", 50 | "homepage": "http://aws.amazon.com/sdkforphp", 51 | "keywords": [ 52 | "SNS", 53 | "amazon", 54 | "aws", 55 | "cloud", 56 | "message", 57 | "sdk", 58 | "webhooks" 59 | ], 60 | "time": "2017-09-27T23:05:21+00:00" 61 | }, 62 | { 63 | "name": "aws/aws-sdk-php", 64 | "version": "3.52.18", 65 | "source": { 66 | "type": "git", 67 | "url": "https://github.com/aws/aws-sdk-php.git", 68 | "reference": "becba2be9cfb22d6394c4d7e4d8cb70807c8a6b3" 69 | }, 70 | "dist": { 71 | "type": "zip", 72 | "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/becba2be9cfb22d6394c4d7e4d8cb70807c8a6b3", 73 | "reference": "becba2be9cfb22d6394c4d7e4d8cb70807c8a6b3", 74 | "shasum": "" 75 | }, 76 | "require": { 77 | "ext-json": "*", 78 | "ext-pcre": "*", 79 | "ext-simplexml": "*", 80 | "ext-spl": "*", 81 | "guzzlehttp/guzzle": "^5.3.1|^6.2.1", 82 | "guzzlehttp/promises": "~1.0", 83 | "guzzlehttp/psr7": "^1.4.1", 84 | "mtdowling/jmespath.php": "~2.2", 85 | "php": ">=5.5" 86 | }, 87 | "require-dev": { 88 | "andrewsville/php-token-reflection": "^1.4", 89 | "aws/aws-php-sns-message-validator": "~1.0", 90 | "behat/behat": "~3.0", 91 | "doctrine/cache": "~1.4", 92 | "ext-dom": "*", 93 | "ext-openssl": "*", 94 | "nette/neon": "^2.3", 95 | "phpunit/phpunit": "^4.8.35|^5.4.3", 96 | "psr/cache": "^1.0" 97 | }, 98 | "suggest": { 99 | "aws/aws-php-sns-message-validator": "To validate incoming SNS notifications", 100 | "doctrine/cache": "To use the DoctrineCacheAdapter", 101 | "ext-curl": "To send requests using cURL", 102 | "ext-openssl": "Allows working with CloudFront private distributions and verifying received SNS messages" 103 | }, 104 | "type": "library", 105 | "extra": { 106 | "branch-alias": { 107 | "dev-master": "3.0-dev" 108 | } 109 | }, 110 | "autoload": { 111 | "psr-4": { 112 | "Aws\\": "src/" 113 | }, 114 | "files": [ 115 | "src/functions.php" 116 | ] 117 | }, 118 | "notification-url": "https://packagist.org/downloads/", 119 | "license": [ 120 | "Apache-2.0" 121 | ], 122 | "authors": [ 123 | { 124 | "name": "Amazon Web Services", 125 | "homepage": "http://aws.amazon.com" 126 | } 127 | ], 128 | "description": "AWS SDK for PHP - Use Amazon Web Services in your PHP project", 129 | "homepage": "http://aws.amazon.com/sdkforphp", 130 | "keywords": [ 131 | "amazon", 132 | "aws", 133 | "cloud", 134 | "dynamodb", 135 | "ec2", 136 | "glacier", 137 | "s3", 138 | "sdk" 139 | ], 140 | "time": "2018-02-27T21:06:51+00:00" 141 | }, 142 | { 143 | "name": "doctrine/inflector", 144 | "version": "v1.3.0", 145 | "source": { 146 | "type": "git", 147 | "url": "https://github.com/doctrine/inflector.git", 148 | "reference": "5527a48b7313d15261292c149e55e26eae771b0a" 149 | }, 150 | "dist": { 151 | "type": "zip", 152 | "url": "https://api.github.com/repos/doctrine/inflector/zipball/5527a48b7313d15261292c149e55e26eae771b0a", 153 | "reference": "5527a48b7313d15261292c149e55e26eae771b0a", 154 | "shasum": "" 155 | }, 156 | "require": { 157 | "php": "^7.1" 158 | }, 159 | "require-dev": { 160 | "phpunit/phpunit": "^6.2" 161 | }, 162 | "type": "library", 163 | "extra": { 164 | "branch-alias": { 165 | "dev-master": "1.3.x-dev" 166 | } 167 | }, 168 | "autoload": { 169 | "psr-4": { 170 | "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector" 171 | } 172 | }, 173 | "notification-url": "https://packagist.org/downloads/", 174 | "license": [ 175 | "MIT" 176 | ], 177 | "authors": [ 178 | { 179 | "name": "Roman Borschel", 180 | "email": "roman@code-factory.org" 181 | }, 182 | { 183 | "name": "Benjamin Eberlei", 184 | "email": "kontakt@beberlei.de" 185 | }, 186 | { 187 | "name": "Guilherme Blanco", 188 | "email": "guilhermeblanco@gmail.com" 189 | }, 190 | { 191 | "name": "Jonathan Wage", 192 | "email": "jonwage@gmail.com" 193 | }, 194 | { 195 | "name": "Johannes Schmitt", 196 | "email": "schmittjoh@gmail.com" 197 | } 198 | ], 199 | "description": "Common String Manipulations with regard to casing and singular/plural rules.", 200 | "homepage": "http://www.doctrine-project.org", 201 | "keywords": [ 202 | "inflection", 203 | "pluralize", 204 | "singularize", 205 | "string" 206 | ], 207 | "time": "2018-01-09T20:05:19+00:00" 208 | }, 209 | { 210 | "name": "doctrine/lexer", 211 | "version": "v1.0.1", 212 | "source": { 213 | "type": "git", 214 | "url": "https://github.com/doctrine/lexer.git", 215 | "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c" 216 | }, 217 | "dist": { 218 | "type": "zip", 219 | "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c", 220 | "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c", 221 | "shasum": "" 222 | }, 223 | "require": { 224 | "php": ">=5.3.2" 225 | }, 226 | "type": "library", 227 | "extra": { 228 | "branch-alias": { 229 | "dev-master": "1.0.x-dev" 230 | } 231 | }, 232 | "autoload": { 233 | "psr-0": { 234 | "Doctrine\\Common\\Lexer\\": "lib/" 235 | } 236 | }, 237 | "notification-url": "https://packagist.org/downloads/", 238 | "license": [ 239 | "MIT" 240 | ], 241 | "authors": [ 242 | { 243 | "name": "Roman Borschel", 244 | "email": "roman@code-factory.org" 245 | }, 246 | { 247 | "name": "Guilherme Blanco", 248 | "email": "guilhermeblanco@gmail.com" 249 | }, 250 | { 251 | "name": "Johannes Schmitt", 252 | "email": "schmittjoh@gmail.com" 253 | } 254 | ], 255 | "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.", 256 | "homepage": "http://www.doctrine-project.org", 257 | "keywords": [ 258 | "lexer", 259 | "parser" 260 | ], 261 | "time": "2014-09-09T13:34:57+00:00" 262 | }, 263 | { 264 | "name": "egulias/email-validator", 265 | "version": "2.1.3", 266 | "source": { 267 | "type": "git", 268 | "url": "https://github.com/egulias/EmailValidator.git", 269 | "reference": "1bec00a10039b823cc94eef4eddd47dcd3b2ca04" 270 | }, 271 | "dist": { 272 | "type": "zip", 273 | "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/1bec00a10039b823cc94eef4eddd47dcd3b2ca04", 274 | "reference": "1bec00a10039b823cc94eef4eddd47dcd3b2ca04", 275 | "shasum": "" 276 | }, 277 | "require": { 278 | "doctrine/lexer": "^1.0.1", 279 | "php": ">= 5.5" 280 | }, 281 | "require-dev": { 282 | "dominicsayers/isemail": "dev-master", 283 | "phpunit/phpunit": "^4.8.35", 284 | "satooshi/php-coveralls": "^1.0.1" 285 | }, 286 | "suggest": { 287 | "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" 288 | }, 289 | "type": "library", 290 | "extra": { 291 | "branch-alias": { 292 | "dev-master": "2.0.x-dev" 293 | } 294 | }, 295 | "autoload": { 296 | "psr-4": { 297 | "Egulias\\EmailValidator\\": "EmailValidator" 298 | } 299 | }, 300 | "notification-url": "https://packagist.org/downloads/", 301 | "license": [ 302 | "MIT" 303 | ], 304 | "authors": [ 305 | { 306 | "name": "Eduardo Gulias Davis" 307 | } 308 | ], 309 | "description": "A library for validating emails against several RFCs", 310 | "homepage": "https://github.com/egulias/EmailValidator", 311 | "keywords": [ 312 | "email", 313 | "emailvalidation", 314 | "emailvalidator", 315 | "validation", 316 | "validator" 317 | ], 318 | "time": "2017-11-15T23:40:40+00:00" 319 | }, 320 | { 321 | "name": "erusev/parsedown", 322 | "version": "1.6.4", 323 | "source": { 324 | "type": "git", 325 | "url": "https://github.com/erusev/parsedown.git", 326 | "reference": "fbe3fe878f4fe69048bb8a52783a09802004f548" 327 | }, 328 | "dist": { 329 | "type": "zip", 330 | "url": "https://api.github.com/repos/erusev/parsedown/zipball/fbe3fe878f4fe69048bb8a52783a09802004f548", 331 | "reference": "fbe3fe878f4fe69048bb8a52783a09802004f548", 332 | "shasum": "" 333 | }, 334 | "require": { 335 | "php": ">=5.3.0" 336 | }, 337 | "require-dev": { 338 | "phpunit/phpunit": "^4.8.35" 339 | }, 340 | "type": "library", 341 | "autoload": { 342 | "psr-0": { 343 | "Parsedown": "" 344 | } 345 | }, 346 | "notification-url": "https://packagist.org/downloads/", 347 | "license": [ 348 | "MIT" 349 | ], 350 | "authors": [ 351 | { 352 | "name": "Emanuil Rusev", 353 | "email": "hello@erusev.com", 354 | "homepage": "http://erusev.com" 355 | } 356 | ], 357 | "description": "Parser for Markdown.", 358 | "homepage": "http://parsedown.org", 359 | "keywords": [ 360 | "markdown", 361 | "parser" 362 | ], 363 | "time": "2017-11-14T20:44:03+00:00" 364 | }, 365 | { 366 | "name": "guzzlehttp/guzzle", 367 | "version": "6.3.0", 368 | "source": { 369 | "type": "git", 370 | "url": "https://github.com/guzzle/guzzle.git", 371 | "reference": "f4db5a78a5ea468d4831de7f0bf9d9415e348699" 372 | }, 373 | "dist": { 374 | "type": "zip", 375 | "url": "https://api.github.com/repos/guzzle/guzzle/zipball/f4db5a78a5ea468d4831de7f0bf9d9415e348699", 376 | "reference": "f4db5a78a5ea468d4831de7f0bf9d9415e348699", 377 | "shasum": "" 378 | }, 379 | "require": { 380 | "guzzlehttp/promises": "^1.0", 381 | "guzzlehttp/psr7": "^1.4", 382 | "php": ">=5.5" 383 | }, 384 | "require-dev": { 385 | "ext-curl": "*", 386 | "phpunit/phpunit": "^4.0 || ^5.0", 387 | "psr/log": "^1.0" 388 | }, 389 | "suggest": { 390 | "psr/log": "Required for using the Log middleware" 391 | }, 392 | "type": "library", 393 | "extra": { 394 | "branch-alias": { 395 | "dev-master": "6.2-dev" 396 | } 397 | }, 398 | "autoload": { 399 | "files": [ 400 | "src/functions_include.php" 401 | ], 402 | "psr-4": { 403 | "GuzzleHttp\\": "src/" 404 | } 405 | }, 406 | "notification-url": "https://packagist.org/downloads/", 407 | "license": [ 408 | "MIT" 409 | ], 410 | "authors": [ 411 | { 412 | "name": "Michael Dowling", 413 | "email": "mtdowling@gmail.com", 414 | "homepage": "https://github.com/mtdowling" 415 | } 416 | ], 417 | "description": "Guzzle is a PHP HTTP client library", 418 | "homepage": "http://guzzlephp.org/", 419 | "keywords": [ 420 | "client", 421 | "curl", 422 | "framework", 423 | "http", 424 | "http client", 425 | "rest", 426 | "web service" 427 | ], 428 | "time": "2017-06-22T18:50:49+00:00" 429 | }, 430 | { 431 | "name": "guzzlehttp/promises", 432 | "version": "v1.3.1", 433 | "source": { 434 | "type": "git", 435 | "url": "https://github.com/guzzle/promises.git", 436 | "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646" 437 | }, 438 | "dist": { 439 | "type": "zip", 440 | "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646", 441 | "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646", 442 | "shasum": "" 443 | }, 444 | "require": { 445 | "php": ">=5.5.0" 446 | }, 447 | "require-dev": { 448 | "phpunit/phpunit": "^4.0" 449 | }, 450 | "type": "library", 451 | "extra": { 452 | "branch-alias": { 453 | "dev-master": "1.4-dev" 454 | } 455 | }, 456 | "autoload": { 457 | "psr-4": { 458 | "GuzzleHttp\\Promise\\": "src/" 459 | }, 460 | "files": [ 461 | "src/functions_include.php" 462 | ] 463 | }, 464 | "notification-url": "https://packagist.org/downloads/", 465 | "license": [ 466 | "MIT" 467 | ], 468 | "authors": [ 469 | { 470 | "name": "Michael Dowling", 471 | "email": "mtdowling@gmail.com", 472 | "homepage": "https://github.com/mtdowling" 473 | } 474 | ], 475 | "description": "Guzzle promises library", 476 | "keywords": [ 477 | "promise" 478 | ], 479 | "time": "2016-12-20T10:07:11+00:00" 480 | }, 481 | { 482 | "name": "guzzlehttp/psr7", 483 | "version": "1.4.2", 484 | "source": { 485 | "type": "git", 486 | "url": "https://github.com/guzzle/psr7.git", 487 | "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c" 488 | }, 489 | "dist": { 490 | "type": "zip", 491 | "url": "https://api.github.com/repos/guzzle/psr7/zipball/f5b8a8512e2b58b0071a7280e39f14f72e05d87c", 492 | "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c", 493 | "shasum": "" 494 | }, 495 | "require": { 496 | "php": ">=5.4.0", 497 | "psr/http-message": "~1.0" 498 | }, 499 | "provide": { 500 | "psr/http-message-implementation": "1.0" 501 | }, 502 | "require-dev": { 503 | "phpunit/phpunit": "~4.0" 504 | }, 505 | "type": "library", 506 | "extra": { 507 | "branch-alias": { 508 | "dev-master": "1.4-dev" 509 | } 510 | }, 511 | "autoload": { 512 | "psr-4": { 513 | "GuzzleHttp\\Psr7\\": "src/" 514 | }, 515 | "files": [ 516 | "src/functions_include.php" 517 | ] 518 | }, 519 | "notification-url": "https://packagist.org/downloads/", 520 | "license": [ 521 | "MIT" 522 | ], 523 | "authors": [ 524 | { 525 | "name": "Michael Dowling", 526 | "email": "mtdowling@gmail.com", 527 | "homepage": "https://github.com/mtdowling" 528 | }, 529 | { 530 | "name": "Tobias Schultze", 531 | "homepage": "https://github.com/Tobion" 532 | } 533 | ], 534 | "description": "PSR-7 message implementation that also provides common utility methods", 535 | "keywords": [ 536 | "http", 537 | "message", 538 | "request", 539 | "response", 540 | "stream", 541 | "uri", 542 | "url" 543 | ], 544 | "time": "2017-03-20T17:10:46+00:00" 545 | }, 546 | { 547 | "name": "illuminate/broadcasting", 548 | "version": "v5.6.6", 549 | "source": { 550 | "type": "git", 551 | "url": "https://github.com/illuminate/broadcasting.git", 552 | "reference": "4953e8447b201552bb90c298276745a6a5240f81" 553 | }, 554 | "dist": { 555 | "type": "zip", 556 | "url": "https://api.github.com/repos/illuminate/broadcasting/zipball/4953e8447b201552bb90c298276745a6a5240f81", 557 | "reference": "4953e8447b201552bb90c298276745a6a5240f81", 558 | "shasum": "" 559 | }, 560 | "require": { 561 | "illuminate/bus": "5.6.*", 562 | "illuminate/contracts": "5.6.*", 563 | "illuminate/queue": "5.6.*", 564 | "illuminate/support": "5.6.*", 565 | "php": "^7.1.3", 566 | "psr/log": "~1.0" 567 | }, 568 | "suggest": { 569 | "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (~3.0)." 570 | }, 571 | "type": "library", 572 | "extra": { 573 | "branch-alias": { 574 | "dev-master": "5.6-dev" 575 | } 576 | }, 577 | "autoload": { 578 | "psr-4": { 579 | "Illuminate\\Broadcasting\\": "" 580 | } 581 | }, 582 | "notification-url": "https://packagist.org/downloads/", 583 | "license": [ 584 | "MIT" 585 | ], 586 | "authors": [ 587 | { 588 | "name": "Taylor Otwell", 589 | "email": "taylor@laravel.com" 590 | } 591 | ], 592 | "description": "The Illuminate Broadcasting package.", 593 | "homepage": "https://laravel.com", 594 | "time": "2018-01-03T16:10:25+00:00" 595 | }, 596 | { 597 | "name": "illuminate/bus", 598 | "version": "v5.6.6", 599 | "source": { 600 | "type": "git", 601 | "url": "https://github.com/illuminate/bus.git", 602 | "reference": "8702a90ae06fabf080cb2cfffda3efaeae0e417a" 603 | }, 604 | "dist": { 605 | "type": "zip", 606 | "url": "https://api.github.com/repos/illuminate/bus/zipball/8702a90ae06fabf080cb2cfffda3efaeae0e417a", 607 | "reference": "8702a90ae06fabf080cb2cfffda3efaeae0e417a", 608 | "shasum": "" 609 | }, 610 | "require": { 611 | "illuminate/contracts": "5.6.*", 612 | "illuminate/pipeline": "5.6.*", 613 | "illuminate/support": "5.6.*", 614 | "php": "^7.1.3" 615 | }, 616 | "type": "library", 617 | "extra": { 618 | "branch-alias": { 619 | "dev-master": "5.6-dev" 620 | } 621 | }, 622 | "autoload": { 623 | "psr-4": { 624 | "Illuminate\\Bus\\": "" 625 | } 626 | }, 627 | "notification-url": "https://packagist.org/downloads/", 628 | "license": [ 629 | "MIT" 630 | ], 631 | "authors": [ 632 | { 633 | "name": "Taylor Otwell", 634 | "email": "taylor@laravel.com" 635 | } 636 | ], 637 | "description": "The Illuminate Bus package.", 638 | "homepage": "https://laravel.com", 639 | "time": "2017-12-14T13:30:55+00:00" 640 | }, 641 | { 642 | "name": "illuminate/console", 643 | "version": "v5.6.6", 644 | "source": { 645 | "type": "git", 646 | "url": "https://github.com/illuminate/console.git", 647 | "reference": "3454cc6bb6bc1321dc958123959c2b158402bd78" 648 | }, 649 | "dist": { 650 | "type": "zip", 651 | "url": "https://api.github.com/repos/illuminate/console/zipball/3454cc6bb6bc1321dc958123959c2b158402bd78", 652 | "reference": "3454cc6bb6bc1321dc958123959c2b158402bd78", 653 | "shasum": "" 654 | }, 655 | "require": { 656 | "illuminate/contracts": "5.6.*", 657 | "illuminate/support": "5.6.*", 658 | "php": "^7.1.3", 659 | "symfony/console": "~4.0" 660 | }, 661 | "suggest": { 662 | "dragonmantank/cron-expression": "Required to use scheduling component (~2.0).", 663 | "guzzlehttp/guzzle": "Required to use the ping methods on schedules (~6.0).", 664 | "symfony/process": "Required to use scheduling component (~4.0)." 665 | }, 666 | "type": "library", 667 | "extra": { 668 | "branch-alias": { 669 | "dev-master": "5.6-dev" 670 | } 671 | }, 672 | "autoload": { 673 | "psr-4": { 674 | "Illuminate\\Console\\": "" 675 | } 676 | }, 677 | "notification-url": "https://packagist.org/downloads/", 678 | "license": [ 679 | "MIT" 680 | ], 681 | "authors": [ 682 | { 683 | "name": "Taylor Otwell", 684 | "email": "taylor@laravel.com" 685 | } 686 | ], 687 | "description": "The Illuminate Console package.", 688 | "homepage": "https://laravel.com", 689 | "time": "2018-02-20T14:08:22+00:00" 690 | }, 691 | { 692 | "name": "illuminate/container", 693 | "version": "v5.6.6", 694 | "source": { 695 | "type": "git", 696 | "url": "https://github.com/illuminate/container.git", 697 | "reference": "4a42d667a05ec6d31f05b532cdac7e8e68e5ea2a" 698 | }, 699 | "dist": { 700 | "type": "zip", 701 | "url": "https://api.github.com/repos/illuminate/container/zipball/4a42d667a05ec6d31f05b532cdac7e8e68e5ea2a", 702 | "reference": "4a42d667a05ec6d31f05b532cdac7e8e68e5ea2a", 703 | "shasum": "" 704 | }, 705 | "require": { 706 | "illuminate/contracts": "5.6.*", 707 | "php": "^7.1.3", 708 | "psr/container": "~1.0" 709 | }, 710 | "type": "library", 711 | "extra": { 712 | "branch-alias": { 713 | "dev-master": "5.6-dev" 714 | } 715 | }, 716 | "autoload": { 717 | "psr-4": { 718 | "Illuminate\\Container\\": "" 719 | } 720 | }, 721 | "notification-url": "https://packagist.org/downloads/", 722 | "license": [ 723 | "MIT" 724 | ], 725 | "authors": [ 726 | { 727 | "name": "Taylor Otwell", 728 | "email": "taylor@laravel.com" 729 | } 730 | ], 731 | "description": "The Illuminate Container package.", 732 | "homepage": "https://laravel.com", 733 | "time": "2018-01-21T02:13:38+00:00" 734 | }, 735 | { 736 | "name": "illuminate/contracts", 737 | "version": "v5.6.6", 738 | "source": { 739 | "type": "git", 740 | "url": "https://github.com/illuminate/contracts.git", 741 | "reference": "00a8296c63b6429eb8705d2700c2436ea193c553" 742 | }, 743 | "dist": { 744 | "type": "zip", 745 | "url": "https://api.github.com/repos/illuminate/contracts/zipball/00a8296c63b6429eb8705d2700c2436ea193c553", 746 | "reference": "00a8296c63b6429eb8705d2700c2436ea193c553", 747 | "shasum": "" 748 | }, 749 | "require": { 750 | "php": "^7.1.3", 751 | "psr/container": "~1.0", 752 | "psr/simple-cache": "~1.0" 753 | }, 754 | "type": "library", 755 | "extra": { 756 | "branch-alias": { 757 | "dev-master": "5.6-dev" 758 | } 759 | }, 760 | "autoload": { 761 | "psr-4": { 762 | "Illuminate\\Contracts\\": "" 763 | } 764 | }, 765 | "notification-url": "https://packagist.org/downloads/", 766 | "license": [ 767 | "MIT" 768 | ], 769 | "authors": [ 770 | { 771 | "name": "Taylor Otwell", 772 | "email": "taylor@laravel.com" 773 | } 774 | ], 775 | "description": "The Illuminate Contracts package.", 776 | "homepage": "https://laravel.com", 777 | "time": "2018-02-20T16:46:51+00:00" 778 | }, 779 | { 780 | "name": "illuminate/database", 781 | "version": "v5.6.6", 782 | "source": { 783 | "type": "git", 784 | "url": "https://github.com/illuminate/database.git", 785 | "reference": "03283cbe9b3f39573d2196daebb20be3e218c7ca" 786 | }, 787 | "dist": { 788 | "type": "zip", 789 | "url": "https://api.github.com/repos/illuminate/database/zipball/03283cbe9b3f39573d2196daebb20be3e218c7ca", 790 | "reference": "03283cbe9b3f39573d2196daebb20be3e218c7ca", 791 | "shasum": "" 792 | }, 793 | "require": { 794 | "illuminate/container": "5.6.*", 795 | "illuminate/contracts": "5.6.*", 796 | "illuminate/support": "5.6.*", 797 | "php": "^7.1.3" 798 | }, 799 | "suggest": { 800 | "doctrine/dbal": "Required to rename columns and drop SQLite columns (~2.6).", 801 | "fzaninotto/faker": "Required to use the eloquent factory builder (~1.4).", 802 | "illuminate/console": "Required to use the database commands (5.6.*).", 803 | "illuminate/events": "Required to use the observers with Eloquent (5.6.*).", 804 | "illuminate/filesystem": "Required to use the migrations (5.6.*).", 805 | "illuminate/pagination": "Required to paginate the result set (5.6.*)." 806 | }, 807 | "type": "library", 808 | "extra": { 809 | "branch-alias": { 810 | "dev-master": "5.6-dev" 811 | } 812 | }, 813 | "autoload": { 814 | "psr-4": { 815 | "Illuminate\\Database\\": "" 816 | } 817 | }, 818 | "notification-url": "https://packagist.org/downloads/", 819 | "license": [ 820 | "MIT" 821 | ], 822 | "authors": [ 823 | { 824 | "name": "Taylor Otwell", 825 | "email": "taylor@laravel.com" 826 | } 827 | ], 828 | "description": "The Illuminate Database package.", 829 | "homepage": "https://laravel.com", 830 | "keywords": [ 831 | "database", 832 | "laravel", 833 | "orm", 834 | "sql" 835 | ], 836 | "time": "2018-02-27T14:02:09+00:00" 837 | }, 838 | { 839 | "name": "illuminate/filesystem", 840 | "version": "v5.6.6", 841 | "source": { 842 | "type": "git", 843 | "url": "https://github.com/illuminate/filesystem.git", 844 | "reference": "f9fb22e00852f32901289cd8698ba0eb4c8d91fe" 845 | }, 846 | "dist": { 847 | "type": "zip", 848 | "url": "https://api.github.com/repos/illuminate/filesystem/zipball/f9fb22e00852f32901289cd8698ba0eb4c8d91fe", 849 | "reference": "f9fb22e00852f32901289cd8698ba0eb4c8d91fe", 850 | "shasum": "" 851 | }, 852 | "require": { 853 | "illuminate/contracts": "5.6.*", 854 | "illuminate/support": "5.6.*", 855 | "php": "^7.1.3", 856 | "symfony/finder": "~4.0" 857 | }, 858 | "suggest": { 859 | "league/flysystem": "Required to use the Flysystem local and FTP drivers (~1.0).", 860 | "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (~1.0).", 861 | "league/flysystem-rackspace": "Required to use the Flysystem Rackspace driver (~1.0)." 862 | }, 863 | "type": "library", 864 | "extra": { 865 | "branch-alias": { 866 | "dev-master": "5.6-dev" 867 | } 868 | }, 869 | "autoload": { 870 | "psr-4": { 871 | "Illuminate\\Filesystem\\": "" 872 | } 873 | }, 874 | "notification-url": "https://packagist.org/downloads/", 875 | "license": [ 876 | "MIT" 877 | ], 878 | "authors": [ 879 | { 880 | "name": "Taylor Otwell", 881 | "email": "taylor@laravel.com" 882 | } 883 | ], 884 | "description": "The Illuminate Filesystem package.", 885 | "homepage": "https://laravel.com", 886 | "time": "2018-02-23T13:54:46+00:00" 887 | }, 888 | { 889 | "name": "illuminate/http", 890 | "version": "v5.6.6", 891 | "source": { 892 | "type": "git", 893 | "url": "https://github.com/illuminate/http.git", 894 | "reference": "999b8628b1db20e3d749e15782a667dfe6585abe" 895 | }, 896 | "dist": { 897 | "type": "zip", 898 | "url": "https://api.github.com/repos/illuminate/http/zipball/999b8628b1db20e3d749e15782a667dfe6585abe", 899 | "reference": "999b8628b1db20e3d749e15782a667dfe6585abe", 900 | "shasum": "" 901 | }, 902 | "require": { 903 | "illuminate/session": "5.6.*", 904 | "illuminate/support": "5.6.*", 905 | "php": "^7.1.3", 906 | "symfony/http-foundation": "~4.0", 907 | "symfony/http-kernel": "~4.0" 908 | }, 909 | "type": "library", 910 | "extra": { 911 | "branch-alias": { 912 | "dev-master": "5.6-dev" 913 | } 914 | }, 915 | "autoload": { 916 | "psr-4": { 917 | "Illuminate\\Http\\": "" 918 | } 919 | }, 920 | "notification-url": "https://packagist.org/downloads/", 921 | "license": [ 922 | "MIT" 923 | ], 924 | "authors": [ 925 | { 926 | "name": "Taylor Otwell", 927 | "email": "taylor@laravel.com" 928 | } 929 | ], 930 | "description": "The Illuminate Http package.", 931 | "homepage": "https://laravel.com", 932 | "time": "2018-02-23T13:54:46+00:00" 933 | }, 934 | { 935 | "name": "illuminate/mail", 936 | "version": "v5.6.6", 937 | "source": { 938 | "type": "git", 939 | "url": "https://github.com/illuminate/mail.git", 940 | "reference": "723b08f7d6099225d3299c4e60fb5f1a1713a216" 941 | }, 942 | "dist": { 943 | "type": "zip", 944 | "url": "https://api.github.com/repos/illuminate/mail/zipball/723b08f7d6099225d3299c4e60fb5f1a1713a216", 945 | "reference": "723b08f7d6099225d3299c4e60fb5f1a1713a216", 946 | "shasum": "" 947 | }, 948 | "require": { 949 | "erusev/parsedown": "~1.6", 950 | "illuminate/container": "5.6.*", 951 | "illuminate/contracts": "5.6.*", 952 | "illuminate/support": "5.6.*", 953 | "php": "^7.1.3", 954 | "psr/log": "~1.0", 955 | "swiftmailer/swiftmailer": "~6.0", 956 | "tijsverkoyen/css-to-inline-styles": "^2.2.1" 957 | }, 958 | "suggest": { 959 | "aws/aws-sdk-php": "Required to use the SES mail driver (~3.0).", 960 | "guzzlehttp/guzzle": "Required to use the Mailgun and Mandrill mail drivers (~6.0)." 961 | }, 962 | "type": "library", 963 | "extra": { 964 | "branch-alias": { 965 | "dev-master": "5.6-dev" 966 | } 967 | }, 968 | "autoload": { 969 | "psr-4": { 970 | "Illuminate\\Mail\\": "" 971 | } 972 | }, 973 | "notification-url": "https://packagist.org/downloads/", 974 | "license": [ 975 | "MIT" 976 | ], 977 | "authors": [ 978 | { 979 | "name": "Taylor Otwell", 980 | "email": "taylor@laravel.com" 981 | } 982 | ], 983 | "description": "The Illuminate Mail package.", 984 | "homepage": "https://laravel.com", 985 | "time": "2018-02-23T13:54:46+00:00" 986 | }, 987 | { 988 | "name": "illuminate/notifications", 989 | "version": "v5.6.6", 990 | "source": { 991 | "type": "git", 992 | "url": "https://github.com/illuminate/notifications.git", 993 | "reference": "84db16a6d94b27e61063b0055943f2a59b915bb3" 994 | }, 995 | "dist": { 996 | "type": "zip", 997 | "url": "https://api.github.com/repos/illuminate/notifications/zipball/84db16a6d94b27e61063b0055943f2a59b915bb3", 998 | "reference": "84db16a6d94b27e61063b0055943f2a59b915bb3", 999 | "shasum": "" 1000 | }, 1001 | "require": { 1002 | "illuminate/broadcasting": "5.6.*", 1003 | "illuminate/bus": "5.6.*", 1004 | "illuminate/container": "5.6.*", 1005 | "illuminate/contracts": "5.6.*", 1006 | "illuminate/filesystem": "5.6.*", 1007 | "illuminate/mail": "5.6.*", 1008 | "illuminate/queue": "5.6.*", 1009 | "illuminate/support": "5.6.*", 1010 | "php": "^7.1.3", 1011 | "ramsey/uuid": "~3.0" 1012 | }, 1013 | "suggest": { 1014 | "guzzlehttp/guzzle": "Required to use the Slack transport (~6.0)", 1015 | "illuminate/database": "Required to use the database transport (5.6.*).", 1016 | "nexmo/client": "Required to use the Nexmo transport (~1.0)." 1017 | }, 1018 | "type": "library", 1019 | "extra": { 1020 | "branch-alias": { 1021 | "dev-master": "5.6-dev" 1022 | } 1023 | }, 1024 | "autoload": { 1025 | "psr-4": { 1026 | "Illuminate\\Notifications\\": "" 1027 | } 1028 | }, 1029 | "notification-url": "https://packagist.org/downloads/", 1030 | "license": [ 1031 | "MIT" 1032 | ], 1033 | "authors": [ 1034 | { 1035 | "name": "Taylor Otwell", 1036 | "email": "taylor@laravel.com" 1037 | } 1038 | ], 1039 | "description": "The Illuminate Notifications package.", 1040 | "homepage": "https://laravel.com", 1041 | "time": "2018-02-23T13:54:46+00:00" 1042 | }, 1043 | { 1044 | "name": "illuminate/pipeline", 1045 | "version": "v5.6.6", 1046 | "source": { 1047 | "type": "git", 1048 | "url": "https://github.com/illuminate/pipeline.git", 1049 | "reference": "0ea9439ed6e4b0bbbc74bf15aab84e4c9a3a9b3b" 1050 | }, 1051 | "dist": { 1052 | "type": "zip", 1053 | "url": "https://api.github.com/repos/illuminate/pipeline/zipball/0ea9439ed6e4b0bbbc74bf15aab84e4c9a3a9b3b", 1054 | "reference": "0ea9439ed6e4b0bbbc74bf15aab84e4c9a3a9b3b", 1055 | "shasum": "" 1056 | }, 1057 | "require": { 1058 | "illuminate/contracts": "5.6.*", 1059 | "illuminate/support": "5.6.*", 1060 | "php": "^7.1.3" 1061 | }, 1062 | "type": "library", 1063 | "extra": { 1064 | "branch-alias": { 1065 | "dev-master": "5.6-dev" 1066 | } 1067 | }, 1068 | "autoload": { 1069 | "psr-4": { 1070 | "Illuminate\\Pipeline\\": "" 1071 | } 1072 | }, 1073 | "notification-url": "https://packagist.org/downloads/", 1074 | "license": [ 1075 | "MIT" 1076 | ], 1077 | "authors": [ 1078 | { 1079 | "name": "Taylor Otwell", 1080 | "email": "taylor@laravel.com" 1081 | } 1082 | ], 1083 | "description": "The Illuminate Pipeline package.", 1084 | "homepage": "https://laravel.com", 1085 | "time": "2017-11-07T20:23:51+00:00" 1086 | }, 1087 | { 1088 | "name": "illuminate/queue", 1089 | "version": "v5.6.6", 1090 | "source": { 1091 | "type": "git", 1092 | "url": "https://github.com/illuminate/queue.git", 1093 | "reference": "7a981b7cdba4ff346f6d20450f7adac0f38f7ebf" 1094 | }, 1095 | "dist": { 1096 | "type": "zip", 1097 | "url": "https://api.github.com/repos/illuminate/queue/zipball/7a981b7cdba4ff346f6d20450f7adac0f38f7ebf", 1098 | "reference": "7a981b7cdba4ff346f6d20450f7adac0f38f7ebf", 1099 | "shasum": "" 1100 | }, 1101 | "require": { 1102 | "illuminate/console": "5.6.*", 1103 | "illuminate/container": "5.6.*", 1104 | "illuminate/contracts": "5.6.*", 1105 | "illuminate/database": "5.6.*", 1106 | "illuminate/filesystem": "5.6.*", 1107 | "illuminate/support": "5.6.*", 1108 | "php": "^7.1.3", 1109 | "symfony/debug": "~4.0", 1110 | "symfony/process": "~4.0" 1111 | }, 1112 | "suggest": { 1113 | "aws/aws-sdk-php": "Required to use the SQS queue driver (~3.0).", 1114 | "ext-pcntl": "Required to use all features of the queue worker.", 1115 | "ext-posix": "Required to use all features of the queue worker.", 1116 | "illuminate/redis": "Required to use the Redis queue driver (5.6.*).", 1117 | "pda/pheanstalk": "Required to use the Beanstalk queue driver (~3.0)." 1118 | }, 1119 | "type": "library", 1120 | "extra": { 1121 | "branch-alias": { 1122 | "dev-master": "5.6-dev" 1123 | } 1124 | }, 1125 | "autoload": { 1126 | "psr-4": { 1127 | "Illuminate\\Queue\\": "" 1128 | } 1129 | }, 1130 | "notification-url": "https://packagist.org/downloads/", 1131 | "license": [ 1132 | "MIT" 1133 | ], 1134 | "authors": [ 1135 | { 1136 | "name": "Taylor Otwell", 1137 | "email": "taylor@laravel.com" 1138 | } 1139 | ], 1140 | "description": "The Illuminate Queue package.", 1141 | "homepage": "https://laravel.com", 1142 | "time": "2018-02-25T15:35:05+00:00" 1143 | }, 1144 | { 1145 | "name": "illuminate/routing", 1146 | "version": "v5.6.6", 1147 | "source": { 1148 | "type": "git", 1149 | "url": "https://github.com/illuminate/routing.git", 1150 | "reference": "1d461a14c12af6671a457116244189dd669d6d64" 1151 | }, 1152 | "dist": { 1153 | "type": "zip", 1154 | "url": "https://api.github.com/repos/illuminate/routing/zipball/1d461a14c12af6671a457116244189dd669d6d64", 1155 | "reference": "1d461a14c12af6671a457116244189dd669d6d64", 1156 | "shasum": "" 1157 | }, 1158 | "require": { 1159 | "illuminate/container": "5.6.*", 1160 | "illuminate/contracts": "5.6.*", 1161 | "illuminate/http": "5.6.*", 1162 | "illuminate/pipeline": "5.6.*", 1163 | "illuminate/session": "5.6.*", 1164 | "illuminate/support": "5.6.*", 1165 | "php": "^7.1.3", 1166 | "symfony/debug": "~4.0", 1167 | "symfony/http-foundation": "~4.0", 1168 | "symfony/http-kernel": "~4.0", 1169 | "symfony/routing": "~4.0" 1170 | }, 1171 | "suggest": { 1172 | "illuminate/console": "Required to use the make commands (5.6.*).", 1173 | "symfony/psr-http-message-bridge": "Required to psr7 bridging features (~1.0)." 1174 | }, 1175 | "type": "library", 1176 | "extra": { 1177 | "branch-alias": { 1178 | "dev-master": "5.6-dev" 1179 | } 1180 | }, 1181 | "autoload": { 1182 | "psr-4": { 1183 | "Illuminate\\Routing\\": "" 1184 | } 1185 | }, 1186 | "notification-url": "https://packagist.org/downloads/", 1187 | "license": [ 1188 | "MIT" 1189 | ], 1190 | "authors": [ 1191 | { 1192 | "name": "Taylor Otwell", 1193 | "email": "taylor@laravel.com" 1194 | } 1195 | ], 1196 | "description": "The Illuminate Routing package.", 1197 | "homepage": "https://laravel.com", 1198 | "time": "2018-02-23T13:54:46+00:00" 1199 | }, 1200 | { 1201 | "name": "illuminate/session", 1202 | "version": "v5.6.6", 1203 | "source": { 1204 | "type": "git", 1205 | "url": "https://github.com/illuminate/session.git", 1206 | "reference": "97e5c38b26fa6d0fd4d5496080fe0ef43c8f4c2d" 1207 | }, 1208 | "dist": { 1209 | "type": "zip", 1210 | "url": "https://api.github.com/repos/illuminate/session/zipball/97e5c38b26fa6d0fd4d5496080fe0ef43c8f4c2d", 1211 | "reference": "97e5c38b26fa6d0fd4d5496080fe0ef43c8f4c2d", 1212 | "shasum": "" 1213 | }, 1214 | "require": { 1215 | "illuminate/contracts": "5.6.*", 1216 | "illuminate/filesystem": "5.6.*", 1217 | "illuminate/support": "5.6.*", 1218 | "php": "^7.1.3", 1219 | "symfony/finder": "~4.0", 1220 | "symfony/http-foundation": "~4.0" 1221 | }, 1222 | "suggest": { 1223 | "illuminate/console": "Required to use the session:table command (5.6.*)." 1224 | }, 1225 | "type": "library", 1226 | "extra": { 1227 | "branch-alias": { 1228 | "dev-master": "5.6-dev" 1229 | } 1230 | }, 1231 | "autoload": { 1232 | "psr-4": { 1233 | "Illuminate\\Session\\": "" 1234 | } 1235 | }, 1236 | "notification-url": "https://packagist.org/downloads/", 1237 | "license": [ 1238 | "MIT" 1239 | ], 1240 | "authors": [ 1241 | { 1242 | "name": "Taylor Otwell", 1243 | "email": "taylor@laravel.com" 1244 | } 1245 | ], 1246 | "description": "The Illuminate Session package.", 1247 | "homepage": "https://laravel.com", 1248 | "time": "2018-01-29T14:08:55+00:00" 1249 | }, 1250 | { 1251 | "name": "illuminate/support", 1252 | "version": "v5.6.6", 1253 | "source": { 1254 | "type": "git", 1255 | "url": "https://github.com/illuminate/support.git", 1256 | "reference": "c2dd9c94c4518fed1285b11e46eb381f81d916ee" 1257 | }, 1258 | "dist": { 1259 | "type": "zip", 1260 | "url": "https://api.github.com/repos/illuminate/support/zipball/c2dd9c94c4518fed1285b11e46eb381f81d916ee", 1261 | "reference": "c2dd9c94c4518fed1285b11e46eb381f81d916ee", 1262 | "shasum": "" 1263 | }, 1264 | "require": { 1265 | "doctrine/inflector": "~1.1", 1266 | "ext-mbstring": "*", 1267 | "illuminate/contracts": "5.6.*", 1268 | "nesbot/carbon": "^1.20", 1269 | "php": "^7.1.3" 1270 | }, 1271 | "replace": { 1272 | "tightenco/collect": "<5.5.33" 1273 | }, 1274 | "suggest": { 1275 | "illuminate/filesystem": "Required to use the composer class (5.2.*).", 1276 | "symfony/process": "Required to use the composer class (~4.0).", 1277 | "symfony/var-dumper": "Required to use the dd function (~4.0)." 1278 | }, 1279 | "type": "library", 1280 | "extra": { 1281 | "branch-alias": { 1282 | "dev-master": "5.6-dev" 1283 | } 1284 | }, 1285 | "autoload": { 1286 | "psr-4": { 1287 | "Illuminate\\Support\\": "" 1288 | }, 1289 | "files": [ 1290 | "helpers.php" 1291 | ] 1292 | }, 1293 | "notification-url": "https://packagist.org/downloads/", 1294 | "license": [ 1295 | "MIT" 1296 | ], 1297 | "authors": [ 1298 | { 1299 | "name": "Taylor Otwell", 1300 | "email": "taylor@laravel.com" 1301 | } 1302 | ], 1303 | "description": "The Illuminate Support package.", 1304 | "homepage": "https://laravel.com", 1305 | "time": "2018-02-26T14:00:30+00:00" 1306 | }, 1307 | { 1308 | "name": "mtdowling/jmespath.php", 1309 | "version": "2.4.0", 1310 | "source": { 1311 | "type": "git", 1312 | "url": "https://github.com/jmespath/jmespath.php.git", 1313 | "reference": "adcc9531682cf87dfda21e1fd5d0e7a41d292fac" 1314 | }, 1315 | "dist": { 1316 | "type": "zip", 1317 | "url": "https://api.github.com/repos/jmespath/jmespath.php/zipball/adcc9531682cf87dfda21e1fd5d0e7a41d292fac", 1318 | "reference": "adcc9531682cf87dfda21e1fd5d0e7a41d292fac", 1319 | "shasum": "" 1320 | }, 1321 | "require": { 1322 | "php": ">=5.4.0" 1323 | }, 1324 | "require-dev": { 1325 | "phpunit/phpunit": "~4.0" 1326 | }, 1327 | "bin": [ 1328 | "bin/jp.php" 1329 | ], 1330 | "type": "library", 1331 | "extra": { 1332 | "branch-alias": { 1333 | "dev-master": "2.0-dev" 1334 | } 1335 | }, 1336 | "autoload": { 1337 | "psr-4": { 1338 | "JmesPath\\": "src/" 1339 | }, 1340 | "files": [ 1341 | "src/JmesPath.php" 1342 | ] 1343 | }, 1344 | "notification-url": "https://packagist.org/downloads/", 1345 | "license": [ 1346 | "MIT" 1347 | ], 1348 | "authors": [ 1349 | { 1350 | "name": "Michael Dowling", 1351 | "email": "mtdowling@gmail.com", 1352 | "homepage": "https://github.com/mtdowling" 1353 | } 1354 | ], 1355 | "description": "Declaratively specify how to extract elements from a JSON document", 1356 | "keywords": [ 1357 | "json", 1358 | "jsonpath" 1359 | ], 1360 | "time": "2016-12-03T22:08:25+00:00" 1361 | }, 1362 | { 1363 | "name": "nesbot/carbon", 1364 | "version": "1.22.1", 1365 | "source": { 1366 | "type": "git", 1367 | "url": "https://github.com/briannesbitt/Carbon.git", 1368 | "reference": "7cdf42c0b1cc763ab7e4c33c47a24e27c66bfccc" 1369 | }, 1370 | "dist": { 1371 | "type": "zip", 1372 | "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/7cdf42c0b1cc763ab7e4c33c47a24e27c66bfccc", 1373 | "reference": "7cdf42c0b1cc763ab7e4c33c47a24e27c66bfccc", 1374 | "shasum": "" 1375 | }, 1376 | "require": { 1377 | "php": ">=5.3.0", 1378 | "symfony/translation": "~2.6 || ~3.0" 1379 | }, 1380 | "require-dev": { 1381 | "friendsofphp/php-cs-fixer": "~2", 1382 | "phpunit/phpunit": "~4.0 || ~5.0" 1383 | }, 1384 | "type": "library", 1385 | "extra": { 1386 | "branch-alias": { 1387 | "dev-master": "1.23-dev" 1388 | } 1389 | }, 1390 | "autoload": { 1391 | "psr-4": { 1392 | "Carbon\\": "src/Carbon/" 1393 | } 1394 | }, 1395 | "notification-url": "https://packagist.org/downloads/", 1396 | "license": [ 1397 | "MIT" 1398 | ], 1399 | "authors": [ 1400 | { 1401 | "name": "Brian Nesbitt", 1402 | "email": "brian@nesbot.com", 1403 | "homepage": "http://nesbot.com" 1404 | } 1405 | ], 1406 | "description": "A simple API extension for DateTime.", 1407 | "homepage": "http://carbon.nesbot.com", 1408 | "keywords": [ 1409 | "date", 1410 | "datetime", 1411 | "time" 1412 | ], 1413 | "time": "2017-01-16T07:55:07+00:00" 1414 | }, 1415 | { 1416 | "name": "paragonie/random_compat", 1417 | "version": "v2.0.11", 1418 | "source": { 1419 | "type": "git", 1420 | "url": "https://github.com/paragonie/random_compat.git", 1421 | "reference": "5da4d3c796c275c55f057af5a643ae297d96b4d8" 1422 | }, 1423 | "dist": { 1424 | "type": "zip", 1425 | "url": "https://api.github.com/repos/paragonie/random_compat/zipball/5da4d3c796c275c55f057af5a643ae297d96b4d8", 1426 | "reference": "5da4d3c796c275c55f057af5a643ae297d96b4d8", 1427 | "shasum": "" 1428 | }, 1429 | "require": { 1430 | "php": ">=5.2.0" 1431 | }, 1432 | "require-dev": { 1433 | "phpunit/phpunit": "4.*|5.*" 1434 | }, 1435 | "suggest": { 1436 | "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." 1437 | }, 1438 | "type": "library", 1439 | "autoload": { 1440 | "files": [ 1441 | "lib/random.php" 1442 | ] 1443 | }, 1444 | "notification-url": "https://packagist.org/downloads/", 1445 | "license": [ 1446 | "MIT" 1447 | ], 1448 | "authors": [ 1449 | { 1450 | "name": "Paragon Initiative Enterprises", 1451 | "email": "security@paragonie.com", 1452 | "homepage": "https://paragonie.com" 1453 | } 1454 | ], 1455 | "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", 1456 | "keywords": [ 1457 | "csprng", 1458 | "pseudorandom", 1459 | "random" 1460 | ], 1461 | "time": "2017-09-27T21:40:39+00:00" 1462 | }, 1463 | { 1464 | "name": "psr/container", 1465 | "version": "1.0.0", 1466 | "source": { 1467 | "type": "git", 1468 | "url": "https://github.com/php-fig/container.git", 1469 | "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" 1470 | }, 1471 | "dist": { 1472 | "type": "zip", 1473 | "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", 1474 | "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", 1475 | "shasum": "" 1476 | }, 1477 | "require": { 1478 | "php": ">=5.3.0" 1479 | }, 1480 | "type": "library", 1481 | "extra": { 1482 | "branch-alias": { 1483 | "dev-master": "1.0.x-dev" 1484 | } 1485 | }, 1486 | "autoload": { 1487 | "psr-4": { 1488 | "Psr\\Container\\": "src/" 1489 | } 1490 | }, 1491 | "notification-url": "https://packagist.org/downloads/", 1492 | "license": [ 1493 | "MIT" 1494 | ], 1495 | "authors": [ 1496 | { 1497 | "name": "PHP-FIG", 1498 | "homepage": "http://www.php-fig.org/" 1499 | } 1500 | ], 1501 | "description": "Common Container Interface (PHP FIG PSR-11)", 1502 | "homepage": "https://github.com/php-fig/container", 1503 | "keywords": [ 1504 | "PSR-11", 1505 | "container", 1506 | "container-interface", 1507 | "container-interop", 1508 | "psr" 1509 | ], 1510 | "time": "2017-02-14T16:28:37+00:00" 1511 | }, 1512 | { 1513 | "name": "psr/http-message", 1514 | "version": "1.0.1", 1515 | "source": { 1516 | "type": "git", 1517 | "url": "https://github.com/php-fig/http-message.git", 1518 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" 1519 | }, 1520 | "dist": { 1521 | "type": "zip", 1522 | "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", 1523 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", 1524 | "shasum": "" 1525 | }, 1526 | "require": { 1527 | "php": ">=5.3.0" 1528 | }, 1529 | "type": "library", 1530 | "extra": { 1531 | "branch-alias": { 1532 | "dev-master": "1.0.x-dev" 1533 | } 1534 | }, 1535 | "autoload": { 1536 | "psr-4": { 1537 | "Psr\\Http\\Message\\": "src/" 1538 | } 1539 | }, 1540 | "notification-url": "https://packagist.org/downloads/", 1541 | "license": [ 1542 | "MIT" 1543 | ], 1544 | "authors": [ 1545 | { 1546 | "name": "PHP-FIG", 1547 | "homepage": "http://www.php-fig.org/" 1548 | } 1549 | ], 1550 | "description": "Common interface for HTTP messages", 1551 | "homepage": "https://github.com/php-fig/http-message", 1552 | "keywords": [ 1553 | "http", 1554 | "http-message", 1555 | "psr", 1556 | "psr-7", 1557 | "request", 1558 | "response" 1559 | ], 1560 | "time": "2016-08-06T14:39:51+00:00" 1561 | }, 1562 | { 1563 | "name": "psr/log", 1564 | "version": "1.0.2", 1565 | "source": { 1566 | "type": "git", 1567 | "url": "https://github.com/php-fig/log.git", 1568 | "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d" 1569 | }, 1570 | "dist": { 1571 | "type": "zip", 1572 | "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", 1573 | "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", 1574 | "shasum": "" 1575 | }, 1576 | "require": { 1577 | "php": ">=5.3.0" 1578 | }, 1579 | "type": "library", 1580 | "extra": { 1581 | "branch-alias": { 1582 | "dev-master": "1.0.x-dev" 1583 | } 1584 | }, 1585 | "autoload": { 1586 | "psr-4": { 1587 | "Psr\\Log\\": "Psr/Log/" 1588 | } 1589 | }, 1590 | "notification-url": "https://packagist.org/downloads/", 1591 | "license": [ 1592 | "MIT" 1593 | ], 1594 | "authors": [ 1595 | { 1596 | "name": "PHP-FIG", 1597 | "homepage": "http://www.php-fig.org/" 1598 | } 1599 | ], 1600 | "description": "Common interface for logging libraries", 1601 | "homepage": "https://github.com/php-fig/log", 1602 | "keywords": [ 1603 | "log", 1604 | "psr", 1605 | "psr-3" 1606 | ], 1607 | "time": "2016-10-10T12:19:37+00:00" 1608 | }, 1609 | { 1610 | "name": "psr/simple-cache", 1611 | "version": "1.0.0", 1612 | "source": { 1613 | "type": "git", 1614 | "url": "https://github.com/php-fig/simple-cache.git", 1615 | "reference": "753fa598e8f3b9966c886fe13f370baa45ef0e24" 1616 | }, 1617 | "dist": { 1618 | "type": "zip", 1619 | "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/753fa598e8f3b9966c886fe13f370baa45ef0e24", 1620 | "reference": "753fa598e8f3b9966c886fe13f370baa45ef0e24", 1621 | "shasum": "" 1622 | }, 1623 | "require": { 1624 | "php": ">=5.3.0" 1625 | }, 1626 | "type": "library", 1627 | "extra": { 1628 | "branch-alias": { 1629 | "dev-master": "1.0.x-dev" 1630 | } 1631 | }, 1632 | "autoload": { 1633 | "psr-4": { 1634 | "Psr\\SimpleCache\\": "src/" 1635 | } 1636 | }, 1637 | "notification-url": "https://packagist.org/downloads/", 1638 | "license": [ 1639 | "MIT" 1640 | ], 1641 | "authors": [ 1642 | { 1643 | "name": "PHP-FIG", 1644 | "homepage": "http://www.php-fig.org/" 1645 | } 1646 | ], 1647 | "description": "Common interfaces for simple caching", 1648 | "keywords": [ 1649 | "cache", 1650 | "caching", 1651 | "psr", 1652 | "psr-16", 1653 | "simple-cache" 1654 | ], 1655 | "time": "2017-01-02T13:31:39+00:00" 1656 | }, 1657 | { 1658 | "name": "ramsey/uuid", 1659 | "version": "3.7.3", 1660 | "source": { 1661 | "type": "git", 1662 | "url": "https://github.com/ramsey/uuid.git", 1663 | "reference": "44abcdad877d9a46685a3a4d221e3b2c4b87cb76" 1664 | }, 1665 | "dist": { 1666 | "type": "zip", 1667 | "url": "https://api.github.com/repos/ramsey/uuid/zipball/44abcdad877d9a46685a3a4d221e3b2c4b87cb76", 1668 | "reference": "44abcdad877d9a46685a3a4d221e3b2c4b87cb76", 1669 | "shasum": "" 1670 | }, 1671 | "require": { 1672 | "paragonie/random_compat": "^1.0|^2.0", 1673 | "php": "^5.4 || ^7.0" 1674 | }, 1675 | "replace": { 1676 | "rhumsaa/uuid": "self.version" 1677 | }, 1678 | "require-dev": { 1679 | "codeception/aspect-mock": "^1.0 | ~2.0.0", 1680 | "doctrine/annotations": "~1.2.0", 1681 | "goaop/framework": "1.0.0-alpha.2 | ^1.0 | ^2.1", 1682 | "ircmaxell/random-lib": "^1.1", 1683 | "jakub-onderka/php-parallel-lint": "^0.9.0", 1684 | "mockery/mockery": "^0.9.9", 1685 | "moontoast/math": "^1.1", 1686 | "php-mock/php-mock-phpunit": "^0.3|^1.1", 1687 | "phpunit/phpunit": "^4.7|^5.0", 1688 | "squizlabs/php_codesniffer": "^2.3" 1689 | }, 1690 | "suggest": { 1691 | "ext-libsodium": "Provides the PECL libsodium extension for use with the SodiumRandomGenerator", 1692 | "ext-uuid": "Provides the PECL UUID extension for use with the PeclUuidTimeGenerator and PeclUuidRandomGenerator", 1693 | "ircmaxell/random-lib": "Provides RandomLib for use with the RandomLibAdapter", 1694 | "moontoast/math": "Provides support for converting UUID to 128-bit integer (in string form).", 1695 | "ramsey/uuid-console": "A console application for generating UUIDs with ramsey/uuid", 1696 | "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." 1697 | }, 1698 | "type": "library", 1699 | "extra": { 1700 | "branch-alias": { 1701 | "dev-master": "3.x-dev" 1702 | } 1703 | }, 1704 | "autoload": { 1705 | "psr-4": { 1706 | "Ramsey\\Uuid\\": "src/" 1707 | } 1708 | }, 1709 | "notification-url": "https://packagist.org/downloads/", 1710 | "license": [ 1711 | "MIT" 1712 | ], 1713 | "authors": [ 1714 | { 1715 | "name": "Marijn Huizendveld", 1716 | "email": "marijn.huizendveld@gmail.com" 1717 | }, 1718 | { 1719 | "name": "Thibaud Fabre", 1720 | "email": "thibaud@aztech.io" 1721 | }, 1722 | { 1723 | "name": "Ben Ramsey", 1724 | "email": "ben@benramsey.com", 1725 | "homepage": "https://benramsey.com" 1726 | } 1727 | ], 1728 | "description": "Formerly rhumsaa/uuid. A PHP 5.4+ library for generating RFC 4122 version 1, 3, 4, and 5 universally unique identifiers (UUID).", 1729 | "homepage": "https://github.com/ramsey/uuid", 1730 | "keywords": [ 1731 | "guid", 1732 | "identifier", 1733 | "uuid" 1734 | ], 1735 | "time": "2018-01-20T00:28:24+00:00" 1736 | }, 1737 | { 1738 | "name": "swiftmailer/swiftmailer", 1739 | "version": "v6.0.2", 1740 | "source": { 1741 | "type": "git", 1742 | "url": "https://github.com/swiftmailer/swiftmailer.git", 1743 | "reference": "412333372fb6c8ffb65496a2bbd7321af75733fc" 1744 | }, 1745 | "dist": { 1746 | "type": "zip", 1747 | "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/412333372fb6c8ffb65496a2bbd7321af75733fc", 1748 | "reference": "412333372fb6c8ffb65496a2bbd7321af75733fc", 1749 | "shasum": "" 1750 | }, 1751 | "require": { 1752 | "egulias/email-validator": "~2.0", 1753 | "php": ">=7.0.0" 1754 | }, 1755 | "require-dev": { 1756 | "mockery/mockery": "~0.9.1", 1757 | "symfony/phpunit-bridge": "~3.3@dev" 1758 | }, 1759 | "type": "library", 1760 | "extra": { 1761 | "branch-alias": { 1762 | "dev-master": "6.0-dev" 1763 | } 1764 | }, 1765 | "autoload": { 1766 | "files": [ 1767 | "lib/swift_required.php" 1768 | ] 1769 | }, 1770 | "notification-url": "https://packagist.org/downloads/", 1771 | "license": [ 1772 | "MIT" 1773 | ], 1774 | "authors": [ 1775 | { 1776 | "name": "Chris Corbyn" 1777 | }, 1778 | { 1779 | "name": "Fabien Potencier", 1780 | "email": "fabien@symfony.com" 1781 | } 1782 | ], 1783 | "description": "Swiftmailer, free feature-rich PHP mailer", 1784 | "homepage": "http://swiftmailer.symfony.com", 1785 | "keywords": [ 1786 | "email", 1787 | "mail", 1788 | "mailer" 1789 | ], 1790 | "time": "2017-09-30T22:39:41+00:00" 1791 | }, 1792 | { 1793 | "name": "symfony/console", 1794 | "version": "v4.0.4", 1795 | "source": { 1796 | "type": "git", 1797 | "url": "https://github.com/symfony/console.git", 1798 | "reference": "36d5b41e7d4e1ccf0370f6babe966c08ef0a1488" 1799 | }, 1800 | "dist": { 1801 | "type": "zip", 1802 | "url": "https://api.github.com/repos/symfony/console/zipball/36d5b41e7d4e1ccf0370f6babe966c08ef0a1488", 1803 | "reference": "36d5b41e7d4e1ccf0370f6babe966c08ef0a1488", 1804 | "shasum": "" 1805 | }, 1806 | "require": { 1807 | "php": "^7.1.3", 1808 | "symfony/polyfill-mbstring": "~1.0" 1809 | }, 1810 | "conflict": { 1811 | "symfony/dependency-injection": "<3.4", 1812 | "symfony/process": "<3.3" 1813 | }, 1814 | "require-dev": { 1815 | "psr/log": "~1.0", 1816 | "symfony/config": "~3.4|~4.0", 1817 | "symfony/dependency-injection": "~3.4|~4.0", 1818 | "symfony/event-dispatcher": "~3.4|~4.0", 1819 | "symfony/lock": "~3.4|~4.0", 1820 | "symfony/process": "~3.4|~4.0" 1821 | }, 1822 | "suggest": { 1823 | "psr/log": "For using the console logger", 1824 | "symfony/event-dispatcher": "", 1825 | "symfony/lock": "", 1826 | "symfony/process": "" 1827 | }, 1828 | "type": "library", 1829 | "extra": { 1830 | "branch-alias": { 1831 | "dev-master": "4.0-dev" 1832 | } 1833 | }, 1834 | "autoload": { 1835 | "psr-4": { 1836 | "Symfony\\Component\\Console\\": "" 1837 | }, 1838 | "exclude-from-classmap": [ 1839 | "/Tests/" 1840 | ] 1841 | }, 1842 | "notification-url": "https://packagist.org/downloads/", 1843 | "license": [ 1844 | "MIT" 1845 | ], 1846 | "authors": [ 1847 | { 1848 | "name": "Fabien Potencier", 1849 | "email": "fabien@symfony.com" 1850 | }, 1851 | { 1852 | "name": "Symfony Community", 1853 | "homepage": "https://symfony.com/contributors" 1854 | } 1855 | ], 1856 | "description": "Symfony Console Component", 1857 | "homepage": "https://symfony.com", 1858 | "time": "2018-01-29T09:06:29+00:00" 1859 | }, 1860 | { 1861 | "name": "symfony/css-selector", 1862 | "version": "v4.0.4", 1863 | "source": { 1864 | "type": "git", 1865 | "url": "https://github.com/symfony/css-selector.git", 1866 | "reference": "f97600434e3141ef3cbb9ea42cf500fba88022b7" 1867 | }, 1868 | "dist": { 1869 | "type": "zip", 1870 | "url": "https://api.github.com/repos/symfony/css-selector/zipball/f97600434e3141ef3cbb9ea42cf500fba88022b7", 1871 | "reference": "f97600434e3141ef3cbb9ea42cf500fba88022b7", 1872 | "shasum": "" 1873 | }, 1874 | "require": { 1875 | "php": "^7.1.3" 1876 | }, 1877 | "type": "library", 1878 | "extra": { 1879 | "branch-alias": { 1880 | "dev-master": "4.0-dev" 1881 | } 1882 | }, 1883 | "autoload": { 1884 | "psr-4": { 1885 | "Symfony\\Component\\CssSelector\\": "" 1886 | }, 1887 | "exclude-from-classmap": [ 1888 | "/Tests/" 1889 | ] 1890 | }, 1891 | "notification-url": "https://packagist.org/downloads/", 1892 | "license": [ 1893 | "MIT" 1894 | ], 1895 | "authors": [ 1896 | { 1897 | "name": "Jean-François Simon", 1898 | "email": "jeanfrancois.simon@sensiolabs.com" 1899 | }, 1900 | { 1901 | "name": "Fabien Potencier", 1902 | "email": "fabien@symfony.com" 1903 | }, 1904 | { 1905 | "name": "Symfony Community", 1906 | "homepage": "https://symfony.com/contributors" 1907 | } 1908 | ], 1909 | "description": "Symfony CssSelector Component", 1910 | "homepage": "https://symfony.com", 1911 | "time": "2018-01-03T07:38:00+00:00" 1912 | }, 1913 | { 1914 | "name": "symfony/debug", 1915 | "version": "v4.0.4", 1916 | "source": { 1917 | "type": "git", 1918 | "url": "https://github.com/symfony/debug.git", 1919 | "reference": "c77bb31d0f6310a2ac11e657475d396a92e5dc54" 1920 | }, 1921 | "dist": { 1922 | "type": "zip", 1923 | "url": "https://api.github.com/repos/symfony/debug/zipball/c77bb31d0f6310a2ac11e657475d396a92e5dc54", 1924 | "reference": "c77bb31d0f6310a2ac11e657475d396a92e5dc54", 1925 | "shasum": "" 1926 | }, 1927 | "require": { 1928 | "php": "^7.1.3", 1929 | "psr/log": "~1.0" 1930 | }, 1931 | "conflict": { 1932 | "symfony/http-kernel": "<3.4" 1933 | }, 1934 | "require-dev": { 1935 | "symfony/http-kernel": "~3.4|~4.0" 1936 | }, 1937 | "type": "library", 1938 | "extra": { 1939 | "branch-alias": { 1940 | "dev-master": "4.0-dev" 1941 | } 1942 | }, 1943 | "autoload": { 1944 | "psr-4": { 1945 | "Symfony\\Component\\Debug\\": "" 1946 | }, 1947 | "exclude-from-classmap": [ 1948 | "/Tests/" 1949 | ] 1950 | }, 1951 | "notification-url": "https://packagist.org/downloads/", 1952 | "license": [ 1953 | "MIT" 1954 | ], 1955 | "authors": [ 1956 | { 1957 | "name": "Fabien Potencier", 1958 | "email": "fabien@symfony.com" 1959 | }, 1960 | { 1961 | "name": "Symfony Community", 1962 | "homepage": "https://symfony.com/contributors" 1963 | } 1964 | ], 1965 | "description": "Symfony Debug Component", 1966 | "homepage": "https://symfony.com", 1967 | "time": "2018-01-18T22:19:33+00:00" 1968 | }, 1969 | { 1970 | "name": "symfony/event-dispatcher", 1971 | "version": "v4.0.4", 1972 | "source": { 1973 | "type": "git", 1974 | "url": "https://github.com/symfony/event-dispatcher.git", 1975 | "reference": "74d33aac36208c4d6757807d9f598f0133a3a4eb" 1976 | }, 1977 | "dist": { 1978 | "type": "zip", 1979 | "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/74d33aac36208c4d6757807d9f598f0133a3a4eb", 1980 | "reference": "74d33aac36208c4d6757807d9f598f0133a3a4eb", 1981 | "shasum": "" 1982 | }, 1983 | "require": { 1984 | "php": "^7.1.3" 1985 | }, 1986 | "conflict": { 1987 | "symfony/dependency-injection": "<3.4" 1988 | }, 1989 | "require-dev": { 1990 | "psr/log": "~1.0", 1991 | "symfony/config": "~3.4|~4.0", 1992 | "symfony/dependency-injection": "~3.4|~4.0", 1993 | "symfony/expression-language": "~3.4|~4.0", 1994 | "symfony/stopwatch": "~3.4|~4.0" 1995 | }, 1996 | "suggest": { 1997 | "symfony/dependency-injection": "", 1998 | "symfony/http-kernel": "" 1999 | }, 2000 | "type": "library", 2001 | "extra": { 2002 | "branch-alias": { 2003 | "dev-master": "4.0-dev" 2004 | } 2005 | }, 2006 | "autoload": { 2007 | "psr-4": { 2008 | "Symfony\\Component\\EventDispatcher\\": "" 2009 | }, 2010 | "exclude-from-classmap": [ 2011 | "/Tests/" 2012 | ] 2013 | }, 2014 | "notification-url": "https://packagist.org/downloads/", 2015 | "license": [ 2016 | "MIT" 2017 | ], 2018 | "authors": [ 2019 | { 2020 | "name": "Fabien Potencier", 2021 | "email": "fabien@symfony.com" 2022 | }, 2023 | { 2024 | "name": "Symfony Community", 2025 | "homepage": "https://symfony.com/contributors" 2026 | } 2027 | ], 2028 | "description": "Symfony EventDispatcher Component", 2029 | "homepage": "https://symfony.com", 2030 | "time": "2018-01-03T07:38:00+00:00" 2031 | }, 2032 | { 2033 | "name": "symfony/finder", 2034 | "version": "v4.0.4", 2035 | "source": { 2036 | "type": "git", 2037 | "url": "https://github.com/symfony/finder.git", 2038 | "reference": "8b08180f2b7ccb41062366b9ad91fbc4f1af8601" 2039 | }, 2040 | "dist": { 2041 | "type": "zip", 2042 | "url": "https://api.github.com/repos/symfony/finder/zipball/8b08180f2b7ccb41062366b9ad91fbc4f1af8601", 2043 | "reference": "8b08180f2b7ccb41062366b9ad91fbc4f1af8601", 2044 | "shasum": "" 2045 | }, 2046 | "require": { 2047 | "php": "^7.1.3" 2048 | }, 2049 | "type": "library", 2050 | "extra": { 2051 | "branch-alias": { 2052 | "dev-master": "4.0-dev" 2053 | } 2054 | }, 2055 | "autoload": { 2056 | "psr-4": { 2057 | "Symfony\\Component\\Finder\\": "" 2058 | }, 2059 | "exclude-from-classmap": [ 2060 | "/Tests/" 2061 | ] 2062 | }, 2063 | "notification-url": "https://packagist.org/downloads/", 2064 | "license": [ 2065 | "MIT" 2066 | ], 2067 | "authors": [ 2068 | { 2069 | "name": "Fabien Potencier", 2070 | "email": "fabien@symfony.com" 2071 | }, 2072 | { 2073 | "name": "Symfony Community", 2074 | "homepage": "https://symfony.com/contributors" 2075 | } 2076 | ], 2077 | "description": "Symfony Finder Component", 2078 | "homepage": "https://symfony.com", 2079 | "time": "2018-01-03T07:38:00+00:00" 2080 | }, 2081 | { 2082 | "name": "symfony/http-foundation", 2083 | "version": "v4.0.4", 2084 | "source": { 2085 | "type": "git", 2086 | "url": "https://github.com/symfony/http-foundation.git", 2087 | "reference": "82a3ee2c6662d08ca1adf99e1ef2e31ab48196d4" 2088 | }, 2089 | "dist": { 2090 | "type": "zip", 2091 | "url": "https://api.github.com/repos/symfony/http-foundation/zipball/82a3ee2c6662d08ca1adf99e1ef2e31ab48196d4", 2092 | "reference": "82a3ee2c6662d08ca1adf99e1ef2e31ab48196d4", 2093 | "shasum": "" 2094 | }, 2095 | "require": { 2096 | "php": "^7.1.3", 2097 | "symfony/polyfill-mbstring": "~1.1" 2098 | }, 2099 | "require-dev": { 2100 | "symfony/expression-language": "~3.4|~4.0" 2101 | }, 2102 | "type": "library", 2103 | "extra": { 2104 | "branch-alias": { 2105 | "dev-master": "4.0-dev" 2106 | } 2107 | }, 2108 | "autoload": { 2109 | "psr-4": { 2110 | "Symfony\\Component\\HttpFoundation\\": "" 2111 | }, 2112 | "exclude-from-classmap": [ 2113 | "/Tests/" 2114 | ] 2115 | }, 2116 | "notification-url": "https://packagist.org/downloads/", 2117 | "license": [ 2118 | "MIT" 2119 | ], 2120 | "authors": [ 2121 | { 2122 | "name": "Fabien Potencier", 2123 | "email": "fabien@symfony.com" 2124 | }, 2125 | { 2126 | "name": "Symfony Community", 2127 | "homepage": "https://symfony.com/contributors" 2128 | } 2129 | ], 2130 | "description": "Symfony HttpFoundation Component", 2131 | "homepage": "https://symfony.com", 2132 | "time": "2018-01-29T09:06:29+00:00" 2133 | }, 2134 | { 2135 | "name": "symfony/http-kernel", 2136 | "version": "v4.0.4", 2137 | "source": { 2138 | "type": "git", 2139 | "url": "https://github.com/symfony/http-kernel.git", 2140 | "reference": "194bd224ec27952eac6d4fea6264b22990834eca" 2141 | }, 2142 | "dist": { 2143 | "type": "zip", 2144 | "url": "https://api.github.com/repos/symfony/http-kernel/zipball/194bd224ec27952eac6d4fea6264b22990834eca", 2145 | "reference": "194bd224ec27952eac6d4fea6264b22990834eca", 2146 | "shasum": "" 2147 | }, 2148 | "require": { 2149 | "php": "^7.1.3", 2150 | "psr/log": "~1.0", 2151 | "symfony/debug": "~3.4|~4.0", 2152 | "symfony/event-dispatcher": "~3.4|~4.0", 2153 | "symfony/http-foundation": "~3.4.4|~4.0.4" 2154 | }, 2155 | "conflict": { 2156 | "symfony/config": "<3.4", 2157 | "symfony/dependency-injection": "<3.4", 2158 | "symfony/var-dumper": "<3.4", 2159 | "twig/twig": "<1.34|<2.4,>=2" 2160 | }, 2161 | "provide": { 2162 | "psr/log-implementation": "1.0" 2163 | }, 2164 | "require-dev": { 2165 | "psr/cache": "~1.0", 2166 | "symfony/browser-kit": "~3.4|~4.0", 2167 | "symfony/config": "~3.4|~4.0", 2168 | "symfony/console": "~3.4|~4.0", 2169 | "symfony/css-selector": "~3.4|~4.0", 2170 | "symfony/dependency-injection": "~3.4|~4.0", 2171 | "symfony/dom-crawler": "~3.4|~4.0", 2172 | "symfony/expression-language": "~3.4|~4.0", 2173 | "symfony/finder": "~3.4|~4.0", 2174 | "symfony/process": "~3.4|~4.0", 2175 | "symfony/routing": "~3.4|~4.0", 2176 | "symfony/stopwatch": "~3.4|~4.0", 2177 | "symfony/templating": "~3.4|~4.0", 2178 | "symfony/translation": "~3.4|~4.0", 2179 | "symfony/var-dumper": "~3.4|~4.0" 2180 | }, 2181 | "suggest": { 2182 | "symfony/browser-kit": "", 2183 | "symfony/config": "", 2184 | "symfony/console": "", 2185 | "symfony/dependency-injection": "", 2186 | "symfony/var-dumper": "" 2187 | }, 2188 | "type": "library", 2189 | "extra": { 2190 | "branch-alias": { 2191 | "dev-master": "4.0-dev" 2192 | } 2193 | }, 2194 | "autoload": { 2195 | "psr-4": { 2196 | "Symfony\\Component\\HttpKernel\\": "" 2197 | }, 2198 | "exclude-from-classmap": [ 2199 | "/Tests/" 2200 | ] 2201 | }, 2202 | "notification-url": "https://packagist.org/downloads/", 2203 | "license": [ 2204 | "MIT" 2205 | ], 2206 | "authors": [ 2207 | { 2208 | "name": "Fabien Potencier", 2209 | "email": "fabien@symfony.com" 2210 | }, 2211 | { 2212 | "name": "Symfony Community", 2213 | "homepage": "https://symfony.com/contributors" 2214 | } 2215 | ], 2216 | "description": "Symfony HttpKernel Component", 2217 | "homepage": "https://symfony.com", 2218 | "time": "2018-01-29T13:27:08+00:00" 2219 | }, 2220 | { 2221 | "name": "symfony/polyfill-mbstring", 2222 | "version": "v1.7.0", 2223 | "source": { 2224 | "type": "git", 2225 | "url": "https://github.com/symfony/polyfill-mbstring.git", 2226 | "reference": "78be803ce01e55d3491c1397cf1c64beb9c1b63b" 2227 | }, 2228 | "dist": { 2229 | "type": "zip", 2230 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/78be803ce01e55d3491c1397cf1c64beb9c1b63b", 2231 | "reference": "78be803ce01e55d3491c1397cf1c64beb9c1b63b", 2232 | "shasum": "" 2233 | }, 2234 | "require": { 2235 | "php": ">=5.3.3" 2236 | }, 2237 | "suggest": { 2238 | "ext-mbstring": "For best performance" 2239 | }, 2240 | "type": "library", 2241 | "extra": { 2242 | "branch-alias": { 2243 | "dev-master": "1.7-dev" 2244 | } 2245 | }, 2246 | "autoload": { 2247 | "psr-4": { 2248 | "Symfony\\Polyfill\\Mbstring\\": "" 2249 | }, 2250 | "files": [ 2251 | "bootstrap.php" 2252 | ] 2253 | }, 2254 | "notification-url": "https://packagist.org/downloads/", 2255 | "license": [ 2256 | "MIT" 2257 | ], 2258 | "authors": [ 2259 | { 2260 | "name": "Nicolas Grekas", 2261 | "email": "p@tchwork.com" 2262 | }, 2263 | { 2264 | "name": "Symfony Community", 2265 | "homepage": "https://symfony.com/contributors" 2266 | } 2267 | ], 2268 | "description": "Symfony polyfill for the Mbstring extension", 2269 | "homepage": "https://symfony.com", 2270 | "keywords": [ 2271 | "compatibility", 2272 | "mbstring", 2273 | "polyfill", 2274 | "portable", 2275 | "shim" 2276 | ], 2277 | "time": "2018-01-30T19:27:44+00:00" 2278 | }, 2279 | { 2280 | "name": "symfony/process", 2281 | "version": "v4.0.4", 2282 | "source": { 2283 | "type": "git", 2284 | "url": "https://github.com/symfony/process.git", 2285 | "reference": "e1712002d81de6f39f854bc5bbd9e9f4bb6345b4" 2286 | }, 2287 | "dist": { 2288 | "type": "zip", 2289 | "url": "https://api.github.com/repos/symfony/process/zipball/e1712002d81de6f39f854bc5bbd9e9f4bb6345b4", 2290 | "reference": "e1712002d81de6f39f854bc5bbd9e9f4bb6345b4", 2291 | "shasum": "" 2292 | }, 2293 | "require": { 2294 | "php": "^7.1.3" 2295 | }, 2296 | "type": "library", 2297 | "extra": { 2298 | "branch-alias": { 2299 | "dev-master": "4.0-dev" 2300 | } 2301 | }, 2302 | "autoload": { 2303 | "psr-4": { 2304 | "Symfony\\Component\\Process\\": "" 2305 | }, 2306 | "exclude-from-classmap": [ 2307 | "/Tests/" 2308 | ] 2309 | }, 2310 | "notification-url": "https://packagist.org/downloads/", 2311 | "license": [ 2312 | "MIT" 2313 | ], 2314 | "authors": [ 2315 | { 2316 | "name": "Fabien Potencier", 2317 | "email": "fabien@symfony.com" 2318 | }, 2319 | { 2320 | "name": "Symfony Community", 2321 | "homepage": "https://symfony.com/contributors" 2322 | } 2323 | ], 2324 | "description": "Symfony Process Component", 2325 | "homepage": "https://symfony.com", 2326 | "time": "2018-01-29T09:06:29+00:00" 2327 | }, 2328 | { 2329 | "name": "symfony/routing", 2330 | "version": "v4.0.4", 2331 | "source": { 2332 | "type": "git", 2333 | "url": "https://github.com/symfony/routing.git", 2334 | "reference": "a69bd948700b672e036147762f46749bcae33796" 2335 | }, 2336 | "dist": { 2337 | "type": "zip", 2338 | "url": "https://api.github.com/repos/symfony/routing/zipball/a69bd948700b672e036147762f46749bcae33796", 2339 | "reference": "a69bd948700b672e036147762f46749bcae33796", 2340 | "shasum": "" 2341 | }, 2342 | "require": { 2343 | "php": "^7.1.3" 2344 | }, 2345 | "conflict": { 2346 | "symfony/config": "<3.4", 2347 | "symfony/dependency-injection": "<3.4", 2348 | "symfony/yaml": "<3.4" 2349 | }, 2350 | "require-dev": { 2351 | "doctrine/annotations": "~1.0", 2352 | "doctrine/common": "~2.2", 2353 | "psr/log": "~1.0", 2354 | "symfony/config": "~3.4|~4.0", 2355 | "symfony/dependency-injection": "~3.4|~4.0", 2356 | "symfony/expression-language": "~3.4|~4.0", 2357 | "symfony/http-foundation": "~3.4|~4.0", 2358 | "symfony/yaml": "~3.4|~4.0" 2359 | }, 2360 | "suggest": { 2361 | "doctrine/annotations": "For using the annotation loader", 2362 | "symfony/config": "For using the all-in-one router or any loader", 2363 | "symfony/dependency-injection": "For loading routes from a service", 2364 | "symfony/expression-language": "For using expression matching", 2365 | "symfony/http-foundation": "For using a Symfony Request object", 2366 | "symfony/yaml": "For using the YAML loader" 2367 | }, 2368 | "type": "library", 2369 | "extra": { 2370 | "branch-alias": { 2371 | "dev-master": "4.0-dev" 2372 | } 2373 | }, 2374 | "autoload": { 2375 | "psr-4": { 2376 | "Symfony\\Component\\Routing\\": "" 2377 | }, 2378 | "exclude-from-classmap": [ 2379 | "/Tests/" 2380 | ] 2381 | }, 2382 | "notification-url": "https://packagist.org/downloads/", 2383 | "license": [ 2384 | "MIT" 2385 | ], 2386 | "authors": [ 2387 | { 2388 | "name": "Fabien Potencier", 2389 | "email": "fabien@symfony.com" 2390 | }, 2391 | { 2392 | "name": "Symfony Community", 2393 | "homepage": "https://symfony.com/contributors" 2394 | } 2395 | ], 2396 | "description": "Symfony Routing Component", 2397 | "homepage": "https://symfony.com", 2398 | "keywords": [ 2399 | "router", 2400 | "routing", 2401 | "uri", 2402 | "url" 2403 | ], 2404 | "time": "2018-01-16T18:04:12+00:00" 2405 | }, 2406 | { 2407 | "name": "symfony/translation", 2408 | "version": "v3.4.4", 2409 | "source": { 2410 | "type": "git", 2411 | "url": "https://github.com/symfony/translation.git", 2412 | "reference": "10b32cf0eae28b9b39fe26c456c42b19854c4b84" 2413 | }, 2414 | "dist": { 2415 | "type": "zip", 2416 | "url": "https://api.github.com/repos/symfony/translation/zipball/10b32cf0eae28b9b39fe26c456c42b19854c4b84", 2417 | "reference": "10b32cf0eae28b9b39fe26c456c42b19854c4b84", 2418 | "shasum": "" 2419 | }, 2420 | "require": { 2421 | "php": "^5.5.9|>=7.0.8", 2422 | "symfony/polyfill-mbstring": "~1.0" 2423 | }, 2424 | "conflict": { 2425 | "symfony/config": "<2.8", 2426 | "symfony/dependency-injection": "<3.4", 2427 | "symfony/yaml": "<3.4" 2428 | }, 2429 | "require-dev": { 2430 | "psr/log": "~1.0", 2431 | "symfony/config": "~2.8|~3.0|~4.0", 2432 | "symfony/dependency-injection": "~3.4|~4.0", 2433 | "symfony/finder": "~2.8|~3.0|~4.0", 2434 | "symfony/intl": "^2.8.18|^3.2.5|~4.0", 2435 | "symfony/yaml": "~3.4|~4.0" 2436 | }, 2437 | "suggest": { 2438 | "psr/log": "To use logging capability in translator", 2439 | "symfony/config": "", 2440 | "symfony/yaml": "" 2441 | }, 2442 | "type": "library", 2443 | "extra": { 2444 | "branch-alias": { 2445 | "dev-master": "3.4-dev" 2446 | } 2447 | }, 2448 | "autoload": { 2449 | "psr-4": { 2450 | "Symfony\\Component\\Translation\\": "" 2451 | }, 2452 | "exclude-from-classmap": [ 2453 | "/Tests/" 2454 | ] 2455 | }, 2456 | "notification-url": "https://packagist.org/downloads/", 2457 | "license": [ 2458 | "MIT" 2459 | ], 2460 | "authors": [ 2461 | { 2462 | "name": "Fabien Potencier", 2463 | "email": "fabien@symfony.com" 2464 | }, 2465 | { 2466 | "name": "Symfony Community", 2467 | "homepage": "https://symfony.com/contributors" 2468 | } 2469 | ], 2470 | "description": "Symfony Translation Component", 2471 | "homepage": "https://symfony.com", 2472 | "time": "2018-01-18T22:16:57+00:00" 2473 | }, 2474 | { 2475 | "name": "tijsverkoyen/css-to-inline-styles", 2476 | "version": "2.2.1", 2477 | "source": { 2478 | "type": "git", 2479 | "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", 2480 | "reference": "0ed4a2ea4e0902dac0489e6436ebcd5bbcae9757" 2481 | }, 2482 | "dist": { 2483 | "type": "zip", 2484 | "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/0ed4a2ea4e0902dac0489e6436ebcd5bbcae9757", 2485 | "reference": "0ed4a2ea4e0902dac0489e6436ebcd5bbcae9757", 2486 | "shasum": "" 2487 | }, 2488 | "require": { 2489 | "php": "^5.5 || ^7.0", 2490 | "symfony/css-selector": "^2.7 || ^3.0 || ^4.0" 2491 | }, 2492 | "require-dev": { 2493 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" 2494 | }, 2495 | "type": "library", 2496 | "extra": { 2497 | "branch-alias": { 2498 | "dev-master": "2.2.x-dev" 2499 | } 2500 | }, 2501 | "autoload": { 2502 | "psr-4": { 2503 | "TijsVerkoyen\\CssToInlineStyles\\": "src" 2504 | } 2505 | }, 2506 | "notification-url": "https://packagist.org/downloads/", 2507 | "license": [ 2508 | "BSD-3-Clause" 2509 | ], 2510 | "authors": [ 2511 | { 2512 | "name": "Tijs Verkoyen", 2513 | "email": "css_to_inline_styles@verkoyen.eu", 2514 | "role": "Developer" 2515 | } 2516 | ], 2517 | "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", 2518 | "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", 2519 | "time": "2017-11-27T11:13:29+00:00" 2520 | } 2521 | ], 2522 | "packages-dev": [ 2523 | { 2524 | "name": "doctrine/instantiator", 2525 | "version": "1.1.0", 2526 | "source": { 2527 | "type": "git", 2528 | "url": "https://github.com/doctrine/instantiator.git", 2529 | "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda" 2530 | }, 2531 | "dist": { 2532 | "type": "zip", 2533 | "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", 2534 | "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", 2535 | "shasum": "" 2536 | }, 2537 | "require": { 2538 | "php": "^7.1" 2539 | }, 2540 | "require-dev": { 2541 | "athletic/athletic": "~0.1.8", 2542 | "ext-pdo": "*", 2543 | "ext-phar": "*", 2544 | "phpunit/phpunit": "^6.2.3", 2545 | "squizlabs/php_codesniffer": "^3.0.2" 2546 | }, 2547 | "type": "library", 2548 | "extra": { 2549 | "branch-alias": { 2550 | "dev-master": "1.2.x-dev" 2551 | } 2552 | }, 2553 | "autoload": { 2554 | "psr-4": { 2555 | "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" 2556 | } 2557 | }, 2558 | "notification-url": "https://packagist.org/downloads/", 2559 | "license": [ 2560 | "MIT" 2561 | ], 2562 | "authors": [ 2563 | { 2564 | "name": "Marco Pivetta", 2565 | "email": "ocramius@gmail.com", 2566 | "homepage": "http://ocramius.github.com/" 2567 | } 2568 | ], 2569 | "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", 2570 | "homepage": "https://github.com/doctrine/instantiator", 2571 | "keywords": [ 2572 | "constructor", 2573 | "instantiate" 2574 | ], 2575 | "time": "2017-07-22T11:58:36+00:00" 2576 | }, 2577 | { 2578 | "name": "myclabs/deep-copy", 2579 | "version": "1.7.0", 2580 | "source": { 2581 | "type": "git", 2582 | "url": "https://github.com/myclabs/DeepCopy.git", 2583 | "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e" 2584 | }, 2585 | "dist": { 2586 | "type": "zip", 2587 | "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", 2588 | "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", 2589 | "shasum": "" 2590 | }, 2591 | "require": { 2592 | "php": "^5.6 || ^7.0" 2593 | }, 2594 | "require-dev": { 2595 | "doctrine/collections": "^1.0", 2596 | "doctrine/common": "^2.6", 2597 | "phpunit/phpunit": "^4.1" 2598 | }, 2599 | "type": "library", 2600 | "autoload": { 2601 | "psr-4": { 2602 | "DeepCopy\\": "src/DeepCopy/" 2603 | }, 2604 | "files": [ 2605 | "src/DeepCopy/deep_copy.php" 2606 | ] 2607 | }, 2608 | "notification-url": "https://packagist.org/downloads/", 2609 | "license": [ 2610 | "MIT" 2611 | ], 2612 | "description": "Create deep copies (clones) of your objects", 2613 | "keywords": [ 2614 | "clone", 2615 | "copy", 2616 | "duplicate", 2617 | "object", 2618 | "object graph" 2619 | ], 2620 | "time": "2017-10-19T19:58:43+00:00" 2621 | }, 2622 | { 2623 | "name": "phpdocumentor/reflection-common", 2624 | "version": "1.0.1", 2625 | "source": { 2626 | "type": "git", 2627 | "url": "https://github.com/phpDocumentor/ReflectionCommon.git", 2628 | "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6" 2629 | }, 2630 | "dist": { 2631 | "type": "zip", 2632 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", 2633 | "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", 2634 | "shasum": "" 2635 | }, 2636 | "require": { 2637 | "php": ">=5.5" 2638 | }, 2639 | "require-dev": { 2640 | "phpunit/phpunit": "^4.6" 2641 | }, 2642 | "type": "library", 2643 | "extra": { 2644 | "branch-alias": { 2645 | "dev-master": "1.0.x-dev" 2646 | } 2647 | }, 2648 | "autoload": { 2649 | "psr-4": { 2650 | "phpDocumentor\\Reflection\\": [ 2651 | "src" 2652 | ] 2653 | } 2654 | }, 2655 | "notification-url": "https://packagist.org/downloads/", 2656 | "license": [ 2657 | "MIT" 2658 | ], 2659 | "authors": [ 2660 | { 2661 | "name": "Jaap van Otterdijk", 2662 | "email": "opensource@ijaap.nl" 2663 | } 2664 | ], 2665 | "description": "Common reflection classes used by phpdocumentor to reflect the code structure", 2666 | "homepage": "http://www.phpdoc.org", 2667 | "keywords": [ 2668 | "FQSEN", 2669 | "phpDocumentor", 2670 | "phpdoc", 2671 | "reflection", 2672 | "static analysis" 2673 | ], 2674 | "time": "2017-09-11T18:02:19+00:00" 2675 | }, 2676 | { 2677 | "name": "phpdocumentor/reflection-docblock", 2678 | "version": "4.3.0", 2679 | "source": { 2680 | "type": "git", 2681 | "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", 2682 | "reference": "94fd0001232e47129dd3504189fa1c7225010d08" 2683 | }, 2684 | "dist": { 2685 | "type": "zip", 2686 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08", 2687 | "reference": "94fd0001232e47129dd3504189fa1c7225010d08", 2688 | "shasum": "" 2689 | }, 2690 | "require": { 2691 | "php": "^7.0", 2692 | "phpdocumentor/reflection-common": "^1.0.0", 2693 | "phpdocumentor/type-resolver": "^0.4.0", 2694 | "webmozart/assert": "^1.0" 2695 | }, 2696 | "require-dev": { 2697 | "doctrine/instantiator": "~1.0.5", 2698 | "mockery/mockery": "^1.0", 2699 | "phpunit/phpunit": "^6.4" 2700 | }, 2701 | "type": "library", 2702 | "extra": { 2703 | "branch-alias": { 2704 | "dev-master": "4.x-dev" 2705 | } 2706 | }, 2707 | "autoload": { 2708 | "psr-4": { 2709 | "phpDocumentor\\Reflection\\": [ 2710 | "src/" 2711 | ] 2712 | } 2713 | }, 2714 | "notification-url": "https://packagist.org/downloads/", 2715 | "license": [ 2716 | "MIT" 2717 | ], 2718 | "authors": [ 2719 | { 2720 | "name": "Mike van Riel", 2721 | "email": "me@mikevanriel.com" 2722 | } 2723 | ], 2724 | "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", 2725 | "time": "2017-11-30T07:14:17+00:00" 2726 | }, 2727 | { 2728 | "name": "phpdocumentor/type-resolver", 2729 | "version": "0.4.0", 2730 | "source": { 2731 | "type": "git", 2732 | "url": "https://github.com/phpDocumentor/TypeResolver.git", 2733 | "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7" 2734 | }, 2735 | "dist": { 2736 | "type": "zip", 2737 | "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7", 2738 | "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7", 2739 | "shasum": "" 2740 | }, 2741 | "require": { 2742 | "php": "^5.5 || ^7.0", 2743 | "phpdocumentor/reflection-common": "^1.0" 2744 | }, 2745 | "require-dev": { 2746 | "mockery/mockery": "^0.9.4", 2747 | "phpunit/phpunit": "^5.2||^4.8.24" 2748 | }, 2749 | "type": "library", 2750 | "extra": { 2751 | "branch-alias": { 2752 | "dev-master": "1.0.x-dev" 2753 | } 2754 | }, 2755 | "autoload": { 2756 | "psr-4": { 2757 | "phpDocumentor\\Reflection\\": [ 2758 | "src/" 2759 | ] 2760 | } 2761 | }, 2762 | "notification-url": "https://packagist.org/downloads/", 2763 | "license": [ 2764 | "MIT" 2765 | ], 2766 | "authors": [ 2767 | { 2768 | "name": "Mike van Riel", 2769 | "email": "me@mikevanriel.com" 2770 | } 2771 | ], 2772 | "time": "2017-07-14T14:27:02+00:00" 2773 | }, 2774 | { 2775 | "name": "phpspec/prophecy", 2776 | "version": "1.7.5", 2777 | "source": { 2778 | "type": "git", 2779 | "url": "https://github.com/phpspec/prophecy.git", 2780 | "reference": "dfd6be44111a7c41c2e884a336cc4f461b3b2401" 2781 | }, 2782 | "dist": { 2783 | "type": "zip", 2784 | "url": "https://api.github.com/repos/phpspec/prophecy/zipball/dfd6be44111a7c41c2e884a336cc4f461b3b2401", 2785 | "reference": "dfd6be44111a7c41c2e884a336cc4f461b3b2401", 2786 | "shasum": "" 2787 | }, 2788 | "require": { 2789 | "doctrine/instantiator": "^1.0.2", 2790 | "php": "^5.3|^7.0", 2791 | "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", 2792 | "sebastian/comparator": "^1.1|^2.0", 2793 | "sebastian/recursion-context": "^1.0|^2.0|^3.0" 2794 | }, 2795 | "require-dev": { 2796 | "phpspec/phpspec": "^2.5|^3.2", 2797 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5" 2798 | }, 2799 | "type": "library", 2800 | "extra": { 2801 | "branch-alias": { 2802 | "dev-master": "1.7.x-dev" 2803 | } 2804 | }, 2805 | "autoload": { 2806 | "psr-0": { 2807 | "Prophecy\\": "src/" 2808 | } 2809 | }, 2810 | "notification-url": "https://packagist.org/downloads/", 2811 | "license": [ 2812 | "MIT" 2813 | ], 2814 | "authors": [ 2815 | { 2816 | "name": "Konstantin Kudryashov", 2817 | "email": "ever.zet@gmail.com", 2818 | "homepage": "http://everzet.com" 2819 | }, 2820 | { 2821 | "name": "Marcello Duarte", 2822 | "email": "marcello.duarte@gmail.com" 2823 | } 2824 | ], 2825 | "description": "Highly opinionated mocking framework for PHP 5.3+", 2826 | "homepage": "https://github.com/phpspec/prophecy", 2827 | "keywords": [ 2828 | "Double", 2829 | "Dummy", 2830 | "fake", 2831 | "mock", 2832 | "spy", 2833 | "stub" 2834 | ], 2835 | "time": "2018-02-19T10:16:54+00:00" 2836 | }, 2837 | { 2838 | "name": "phpunit/php-code-coverage", 2839 | "version": "4.0.8", 2840 | "source": { 2841 | "type": "git", 2842 | "url": "https://github.com/sebastianbergmann/php-code-coverage.git", 2843 | "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d" 2844 | }, 2845 | "dist": { 2846 | "type": "zip", 2847 | "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ef7b2f56815df854e66ceaee8ebe9393ae36a40d", 2848 | "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d", 2849 | "shasum": "" 2850 | }, 2851 | "require": { 2852 | "ext-dom": "*", 2853 | "ext-xmlwriter": "*", 2854 | "php": "^5.6 || ^7.0", 2855 | "phpunit/php-file-iterator": "^1.3", 2856 | "phpunit/php-text-template": "^1.2", 2857 | "phpunit/php-token-stream": "^1.4.2 || ^2.0", 2858 | "sebastian/code-unit-reverse-lookup": "^1.0", 2859 | "sebastian/environment": "^1.3.2 || ^2.0", 2860 | "sebastian/version": "^1.0 || ^2.0" 2861 | }, 2862 | "require-dev": { 2863 | "ext-xdebug": "^2.1.4", 2864 | "phpunit/phpunit": "^5.7" 2865 | }, 2866 | "suggest": { 2867 | "ext-xdebug": "^2.5.1" 2868 | }, 2869 | "type": "library", 2870 | "extra": { 2871 | "branch-alias": { 2872 | "dev-master": "4.0.x-dev" 2873 | } 2874 | }, 2875 | "autoload": { 2876 | "classmap": [ 2877 | "src/" 2878 | ] 2879 | }, 2880 | "notification-url": "https://packagist.org/downloads/", 2881 | "license": [ 2882 | "BSD-3-Clause" 2883 | ], 2884 | "authors": [ 2885 | { 2886 | "name": "Sebastian Bergmann", 2887 | "email": "sb@sebastian-bergmann.de", 2888 | "role": "lead" 2889 | } 2890 | ], 2891 | "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", 2892 | "homepage": "https://github.com/sebastianbergmann/php-code-coverage", 2893 | "keywords": [ 2894 | "coverage", 2895 | "testing", 2896 | "xunit" 2897 | ], 2898 | "time": "2017-04-02T07:44:40+00:00" 2899 | }, 2900 | { 2901 | "name": "phpunit/php-file-iterator", 2902 | "version": "1.4.5", 2903 | "source": { 2904 | "type": "git", 2905 | "url": "https://github.com/sebastianbergmann/php-file-iterator.git", 2906 | "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4" 2907 | }, 2908 | "dist": { 2909 | "type": "zip", 2910 | "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4", 2911 | "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4", 2912 | "shasum": "" 2913 | }, 2914 | "require": { 2915 | "php": ">=5.3.3" 2916 | }, 2917 | "type": "library", 2918 | "extra": { 2919 | "branch-alias": { 2920 | "dev-master": "1.4.x-dev" 2921 | } 2922 | }, 2923 | "autoload": { 2924 | "classmap": [ 2925 | "src/" 2926 | ] 2927 | }, 2928 | "notification-url": "https://packagist.org/downloads/", 2929 | "license": [ 2930 | "BSD-3-Clause" 2931 | ], 2932 | "authors": [ 2933 | { 2934 | "name": "Sebastian Bergmann", 2935 | "email": "sb@sebastian-bergmann.de", 2936 | "role": "lead" 2937 | } 2938 | ], 2939 | "description": "FilterIterator implementation that filters files based on a list of suffixes.", 2940 | "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", 2941 | "keywords": [ 2942 | "filesystem", 2943 | "iterator" 2944 | ], 2945 | "time": "2017-11-27T13:52:08+00:00" 2946 | }, 2947 | { 2948 | "name": "phpunit/php-text-template", 2949 | "version": "1.2.1", 2950 | "source": { 2951 | "type": "git", 2952 | "url": "https://github.com/sebastianbergmann/php-text-template.git", 2953 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" 2954 | }, 2955 | "dist": { 2956 | "type": "zip", 2957 | "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 2958 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 2959 | "shasum": "" 2960 | }, 2961 | "require": { 2962 | "php": ">=5.3.3" 2963 | }, 2964 | "type": "library", 2965 | "autoload": { 2966 | "classmap": [ 2967 | "src/" 2968 | ] 2969 | }, 2970 | "notification-url": "https://packagist.org/downloads/", 2971 | "license": [ 2972 | "BSD-3-Clause" 2973 | ], 2974 | "authors": [ 2975 | { 2976 | "name": "Sebastian Bergmann", 2977 | "email": "sebastian@phpunit.de", 2978 | "role": "lead" 2979 | } 2980 | ], 2981 | "description": "Simple template engine.", 2982 | "homepage": "https://github.com/sebastianbergmann/php-text-template/", 2983 | "keywords": [ 2984 | "template" 2985 | ], 2986 | "time": "2015-06-21T13:50:34+00:00" 2987 | }, 2988 | { 2989 | "name": "phpunit/php-timer", 2990 | "version": "1.0.9", 2991 | "source": { 2992 | "type": "git", 2993 | "url": "https://github.com/sebastianbergmann/php-timer.git", 2994 | "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" 2995 | }, 2996 | "dist": { 2997 | "type": "zip", 2998 | "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", 2999 | "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", 3000 | "shasum": "" 3001 | }, 3002 | "require": { 3003 | "php": "^5.3.3 || ^7.0" 3004 | }, 3005 | "require-dev": { 3006 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" 3007 | }, 3008 | "type": "library", 3009 | "extra": { 3010 | "branch-alias": { 3011 | "dev-master": "1.0-dev" 3012 | } 3013 | }, 3014 | "autoload": { 3015 | "classmap": [ 3016 | "src/" 3017 | ] 3018 | }, 3019 | "notification-url": "https://packagist.org/downloads/", 3020 | "license": [ 3021 | "BSD-3-Clause" 3022 | ], 3023 | "authors": [ 3024 | { 3025 | "name": "Sebastian Bergmann", 3026 | "email": "sb@sebastian-bergmann.de", 3027 | "role": "lead" 3028 | } 3029 | ], 3030 | "description": "Utility class for timing", 3031 | "homepage": "https://github.com/sebastianbergmann/php-timer/", 3032 | "keywords": [ 3033 | "timer" 3034 | ], 3035 | "time": "2017-02-26T11:10:40+00:00" 3036 | }, 3037 | { 3038 | "name": "phpunit/php-token-stream", 3039 | "version": "2.0.2", 3040 | "source": { 3041 | "type": "git", 3042 | "url": "https://github.com/sebastianbergmann/php-token-stream.git", 3043 | "reference": "791198a2c6254db10131eecfe8c06670700904db" 3044 | }, 3045 | "dist": { 3046 | "type": "zip", 3047 | "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db", 3048 | "reference": "791198a2c6254db10131eecfe8c06670700904db", 3049 | "shasum": "" 3050 | }, 3051 | "require": { 3052 | "ext-tokenizer": "*", 3053 | "php": "^7.0" 3054 | }, 3055 | "require-dev": { 3056 | "phpunit/phpunit": "^6.2.4" 3057 | }, 3058 | "type": "library", 3059 | "extra": { 3060 | "branch-alias": { 3061 | "dev-master": "2.0-dev" 3062 | } 3063 | }, 3064 | "autoload": { 3065 | "classmap": [ 3066 | "src/" 3067 | ] 3068 | }, 3069 | "notification-url": "https://packagist.org/downloads/", 3070 | "license": [ 3071 | "BSD-3-Clause" 3072 | ], 3073 | "authors": [ 3074 | { 3075 | "name": "Sebastian Bergmann", 3076 | "email": "sebastian@phpunit.de" 3077 | } 3078 | ], 3079 | "description": "Wrapper around PHP's tokenizer extension.", 3080 | "homepage": "https://github.com/sebastianbergmann/php-token-stream/", 3081 | "keywords": [ 3082 | "tokenizer" 3083 | ], 3084 | "time": "2017-11-27T05:48:46+00:00" 3085 | }, 3086 | { 3087 | "name": "phpunit/phpunit", 3088 | "version": "5.7.27", 3089 | "source": { 3090 | "type": "git", 3091 | "url": "https://github.com/sebastianbergmann/phpunit.git", 3092 | "reference": "b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c" 3093 | }, 3094 | "dist": { 3095 | "type": "zip", 3096 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c", 3097 | "reference": "b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c", 3098 | "shasum": "" 3099 | }, 3100 | "require": { 3101 | "ext-dom": "*", 3102 | "ext-json": "*", 3103 | "ext-libxml": "*", 3104 | "ext-mbstring": "*", 3105 | "ext-xml": "*", 3106 | "myclabs/deep-copy": "~1.3", 3107 | "php": "^5.6 || ^7.0", 3108 | "phpspec/prophecy": "^1.6.2", 3109 | "phpunit/php-code-coverage": "^4.0.4", 3110 | "phpunit/php-file-iterator": "~1.4", 3111 | "phpunit/php-text-template": "~1.2", 3112 | "phpunit/php-timer": "^1.0.6", 3113 | "phpunit/phpunit-mock-objects": "^3.2", 3114 | "sebastian/comparator": "^1.2.4", 3115 | "sebastian/diff": "^1.4.3", 3116 | "sebastian/environment": "^1.3.4 || ^2.0", 3117 | "sebastian/exporter": "~2.0", 3118 | "sebastian/global-state": "^1.1", 3119 | "sebastian/object-enumerator": "~2.0", 3120 | "sebastian/resource-operations": "~1.0", 3121 | "sebastian/version": "^1.0.6|^2.0.1", 3122 | "symfony/yaml": "~2.1|~3.0|~4.0" 3123 | }, 3124 | "conflict": { 3125 | "phpdocumentor/reflection-docblock": "3.0.2" 3126 | }, 3127 | "require-dev": { 3128 | "ext-pdo": "*" 3129 | }, 3130 | "suggest": { 3131 | "ext-xdebug": "*", 3132 | "phpunit/php-invoker": "~1.1" 3133 | }, 3134 | "bin": [ 3135 | "phpunit" 3136 | ], 3137 | "type": "library", 3138 | "extra": { 3139 | "branch-alias": { 3140 | "dev-master": "5.7.x-dev" 3141 | } 3142 | }, 3143 | "autoload": { 3144 | "classmap": [ 3145 | "src/" 3146 | ] 3147 | }, 3148 | "notification-url": "https://packagist.org/downloads/", 3149 | "license": [ 3150 | "BSD-3-Clause" 3151 | ], 3152 | "authors": [ 3153 | { 3154 | "name": "Sebastian Bergmann", 3155 | "email": "sebastian@phpunit.de", 3156 | "role": "lead" 3157 | } 3158 | ], 3159 | "description": "The PHP Unit Testing framework.", 3160 | "homepage": "https://phpunit.de/", 3161 | "keywords": [ 3162 | "phpunit", 3163 | "testing", 3164 | "xunit" 3165 | ], 3166 | "time": "2018-02-01T05:50:59+00:00" 3167 | }, 3168 | { 3169 | "name": "phpunit/phpunit-mock-objects", 3170 | "version": "3.4.4", 3171 | "source": { 3172 | "type": "git", 3173 | "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", 3174 | "reference": "a23b761686d50a560cc56233b9ecf49597cc9118" 3175 | }, 3176 | "dist": { 3177 | "type": "zip", 3178 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/a23b761686d50a560cc56233b9ecf49597cc9118", 3179 | "reference": "a23b761686d50a560cc56233b9ecf49597cc9118", 3180 | "shasum": "" 3181 | }, 3182 | "require": { 3183 | "doctrine/instantiator": "^1.0.2", 3184 | "php": "^5.6 || ^7.0", 3185 | "phpunit/php-text-template": "^1.2", 3186 | "sebastian/exporter": "^1.2 || ^2.0" 3187 | }, 3188 | "conflict": { 3189 | "phpunit/phpunit": "<5.4.0" 3190 | }, 3191 | "require-dev": { 3192 | "phpunit/phpunit": "^5.4" 3193 | }, 3194 | "suggest": { 3195 | "ext-soap": "*" 3196 | }, 3197 | "type": "library", 3198 | "extra": { 3199 | "branch-alias": { 3200 | "dev-master": "3.2.x-dev" 3201 | } 3202 | }, 3203 | "autoload": { 3204 | "classmap": [ 3205 | "src/" 3206 | ] 3207 | }, 3208 | "notification-url": "https://packagist.org/downloads/", 3209 | "license": [ 3210 | "BSD-3-Clause" 3211 | ], 3212 | "authors": [ 3213 | { 3214 | "name": "Sebastian Bergmann", 3215 | "email": "sb@sebastian-bergmann.de", 3216 | "role": "lead" 3217 | } 3218 | ], 3219 | "description": "Mock Object library for PHPUnit", 3220 | "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", 3221 | "keywords": [ 3222 | "mock", 3223 | "xunit" 3224 | ], 3225 | "time": "2017-06-30T09:13:00+00:00" 3226 | }, 3227 | { 3228 | "name": "sebastian/code-unit-reverse-lookup", 3229 | "version": "1.0.1", 3230 | "source": { 3231 | "type": "git", 3232 | "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", 3233 | "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" 3234 | }, 3235 | "dist": { 3236 | "type": "zip", 3237 | "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", 3238 | "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", 3239 | "shasum": "" 3240 | }, 3241 | "require": { 3242 | "php": "^5.6 || ^7.0" 3243 | }, 3244 | "require-dev": { 3245 | "phpunit/phpunit": "^5.7 || ^6.0" 3246 | }, 3247 | "type": "library", 3248 | "extra": { 3249 | "branch-alias": { 3250 | "dev-master": "1.0.x-dev" 3251 | } 3252 | }, 3253 | "autoload": { 3254 | "classmap": [ 3255 | "src/" 3256 | ] 3257 | }, 3258 | "notification-url": "https://packagist.org/downloads/", 3259 | "license": [ 3260 | "BSD-3-Clause" 3261 | ], 3262 | "authors": [ 3263 | { 3264 | "name": "Sebastian Bergmann", 3265 | "email": "sebastian@phpunit.de" 3266 | } 3267 | ], 3268 | "description": "Looks up which function or method a line of code belongs to", 3269 | "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", 3270 | "time": "2017-03-04T06:30:41+00:00" 3271 | }, 3272 | { 3273 | "name": "sebastian/comparator", 3274 | "version": "1.2.4", 3275 | "source": { 3276 | "type": "git", 3277 | "url": "https://github.com/sebastianbergmann/comparator.git", 3278 | "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be" 3279 | }, 3280 | "dist": { 3281 | "type": "zip", 3282 | "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", 3283 | "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", 3284 | "shasum": "" 3285 | }, 3286 | "require": { 3287 | "php": ">=5.3.3", 3288 | "sebastian/diff": "~1.2", 3289 | "sebastian/exporter": "~1.2 || ~2.0" 3290 | }, 3291 | "require-dev": { 3292 | "phpunit/phpunit": "~4.4" 3293 | }, 3294 | "type": "library", 3295 | "extra": { 3296 | "branch-alias": { 3297 | "dev-master": "1.2.x-dev" 3298 | } 3299 | }, 3300 | "autoload": { 3301 | "classmap": [ 3302 | "src/" 3303 | ] 3304 | }, 3305 | "notification-url": "https://packagist.org/downloads/", 3306 | "license": [ 3307 | "BSD-3-Clause" 3308 | ], 3309 | "authors": [ 3310 | { 3311 | "name": "Jeff Welch", 3312 | "email": "whatthejeff@gmail.com" 3313 | }, 3314 | { 3315 | "name": "Volker Dusch", 3316 | "email": "github@wallbash.com" 3317 | }, 3318 | { 3319 | "name": "Bernhard Schussek", 3320 | "email": "bschussek@2bepublished.at" 3321 | }, 3322 | { 3323 | "name": "Sebastian Bergmann", 3324 | "email": "sebastian@phpunit.de" 3325 | } 3326 | ], 3327 | "description": "Provides the functionality to compare PHP values for equality", 3328 | "homepage": "http://www.github.com/sebastianbergmann/comparator", 3329 | "keywords": [ 3330 | "comparator", 3331 | "compare", 3332 | "equality" 3333 | ], 3334 | "time": "2017-01-29T09:50:25+00:00" 3335 | }, 3336 | { 3337 | "name": "sebastian/diff", 3338 | "version": "1.4.3", 3339 | "source": { 3340 | "type": "git", 3341 | "url": "https://github.com/sebastianbergmann/diff.git", 3342 | "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4" 3343 | }, 3344 | "dist": { 3345 | "type": "zip", 3346 | "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4", 3347 | "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4", 3348 | "shasum": "" 3349 | }, 3350 | "require": { 3351 | "php": "^5.3.3 || ^7.0" 3352 | }, 3353 | "require-dev": { 3354 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" 3355 | }, 3356 | "type": "library", 3357 | "extra": { 3358 | "branch-alias": { 3359 | "dev-master": "1.4-dev" 3360 | } 3361 | }, 3362 | "autoload": { 3363 | "classmap": [ 3364 | "src/" 3365 | ] 3366 | }, 3367 | "notification-url": "https://packagist.org/downloads/", 3368 | "license": [ 3369 | "BSD-3-Clause" 3370 | ], 3371 | "authors": [ 3372 | { 3373 | "name": "Kore Nordmann", 3374 | "email": "mail@kore-nordmann.de" 3375 | }, 3376 | { 3377 | "name": "Sebastian Bergmann", 3378 | "email": "sebastian@phpunit.de" 3379 | } 3380 | ], 3381 | "description": "Diff implementation", 3382 | "homepage": "https://github.com/sebastianbergmann/diff", 3383 | "keywords": [ 3384 | "diff" 3385 | ], 3386 | "time": "2017-05-22T07:24:03+00:00" 3387 | }, 3388 | { 3389 | "name": "sebastian/environment", 3390 | "version": "2.0.0", 3391 | "source": { 3392 | "type": "git", 3393 | "url": "https://github.com/sebastianbergmann/environment.git", 3394 | "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac" 3395 | }, 3396 | "dist": { 3397 | "type": "zip", 3398 | "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5795ffe5dc5b02460c3e34222fee8cbe245d8fac", 3399 | "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac", 3400 | "shasum": "" 3401 | }, 3402 | "require": { 3403 | "php": "^5.6 || ^7.0" 3404 | }, 3405 | "require-dev": { 3406 | "phpunit/phpunit": "^5.0" 3407 | }, 3408 | "type": "library", 3409 | "extra": { 3410 | "branch-alias": { 3411 | "dev-master": "2.0.x-dev" 3412 | } 3413 | }, 3414 | "autoload": { 3415 | "classmap": [ 3416 | "src/" 3417 | ] 3418 | }, 3419 | "notification-url": "https://packagist.org/downloads/", 3420 | "license": [ 3421 | "BSD-3-Clause" 3422 | ], 3423 | "authors": [ 3424 | { 3425 | "name": "Sebastian Bergmann", 3426 | "email": "sebastian@phpunit.de" 3427 | } 3428 | ], 3429 | "description": "Provides functionality to handle HHVM/PHP environments", 3430 | "homepage": "http://www.github.com/sebastianbergmann/environment", 3431 | "keywords": [ 3432 | "Xdebug", 3433 | "environment", 3434 | "hhvm" 3435 | ], 3436 | "time": "2016-11-26T07:53:53+00:00" 3437 | }, 3438 | { 3439 | "name": "sebastian/exporter", 3440 | "version": "2.0.0", 3441 | "source": { 3442 | "type": "git", 3443 | "url": "https://github.com/sebastianbergmann/exporter.git", 3444 | "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4" 3445 | }, 3446 | "dist": { 3447 | "type": "zip", 3448 | "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", 3449 | "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", 3450 | "shasum": "" 3451 | }, 3452 | "require": { 3453 | "php": ">=5.3.3", 3454 | "sebastian/recursion-context": "~2.0" 3455 | }, 3456 | "require-dev": { 3457 | "ext-mbstring": "*", 3458 | "phpunit/phpunit": "~4.4" 3459 | }, 3460 | "type": "library", 3461 | "extra": { 3462 | "branch-alias": { 3463 | "dev-master": "2.0.x-dev" 3464 | } 3465 | }, 3466 | "autoload": { 3467 | "classmap": [ 3468 | "src/" 3469 | ] 3470 | }, 3471 | "notification-url": "https://packagist.org/downloads/", 3472 | "license": [ 3473 | "BSD-3-Clause" 3474 | ], 3475 | "authors": [ 3476 | { 3477 | "name": "Jeff Welch", 3478 | "email": "whatthejeff@gmail.com" 3479 | }, 3480 | { 3481 | "name": "Volker Dusch", 3482 | "email": "github@wallbash.com" 3483 | }, 3484 | { 3485 | "name": "Bernhard Schussek", 3486 | "email": "bschussek@2bepublished.at" 3487 | }, 3488 | { 3489 | "name": "Sebastian Bergmann", 3490 | "email": "sebastian@phpunit.de" 3491 | }, 3492 | { 3493 | "name": "Adam Harvey", 3494 | "email": "aharvey@php.net" 3495 | } 3496 | ], 3497 | "description": "Provides the functionality to export PHP variables for visualization", 3498 | "homepage": "http://www.github.com/sebastianbergmann/exporter", 3499 | "keywords": [ 3500 | "export", 3501 | "exporter" 3502 | ], 3503 | "time": "2016-11-19T08:54:04+00:00" 3504 | }, 3505 | { 3506 | "name": "sebastian/global-state", 3507 | "version": "1.1.1", 3508 | "source": { 3509 | "type": "git", 3510 | "url": "https://github.com/sebastianbergmann/global-state.git", 3511 | "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4" 3512 | }, 3513 | "dist": { 3514 | "type": "zip", 3515 | "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4", 3516 | "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4", 3517 | "shasum": "" 3518 | }, 3519 | "require": { 3520 | "php": ">=5.3.3" 3521 | }, 3522 | "require-dev": { 3523 | "phpunit/phpunit": "~4.2" 3524 | }, 3525 | "suggest": { 3526 | "ext-uopz": "*" 3527 | }, 3528 | "type": "library", 3529 | "extra": { 3530 | "branch-alias": { 3531 | "dev-master": "1.0-dev" 3532 | } 3533 | }, 3534 | "autoload": { 3535 | "classmap": [ 3536 | "src/" 3537 | ] 3538 | }, 3539 | "notification-url": "https://packagist.org/downloads/", 3540 | "license": [ 3541 | "BSD-3-Clause" 3542 | ], 3543 | "authors": [ 3544 | { 3545 | "name": "Sebastian Bergmann", 3546 | "email": "sebastian@phpunit.de" 3547 | } 3548 | ], 3549 | "description": "Snapshotting of global state", 3550 | "homepage": "http://www.github.com/sebastianbergmann/global-state", 3551 | "keywords": [ 3552 | "global state" 3553 | ], 3554 | "time": "2015-10-12T03:26:01+00:00" 3555 | }, 3556 | { 3557 | "name": "sebastian/object-enumerator", 3558 | "version": "2.0.1", 3559 | "source": { 3560 | "type": "git", 3561 | "url": "https://github.com/sebastianbergmann/object-enumerator.git", 3562 | "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7" 3563 | }, 3564 | "dist": { 3565 | "type": "zip", 3566 | "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/1311872ac850040a79c3c058bea3e22d0f09cbb7", 3567 | "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7", 3568 | "shasum": "" 3569 | }, 3570 | "require": { 3571 | "php": ">=5.6", 3572 | "sebastian/recursion-context": "~2.0" 3573 | }, 3574 | "require-dev": { 3575 | "phpunit/phpunit": "~5" 3576 | }, 3577 | "type": "library", 3578 | "extra": { 3579 | "branch-alias": { 3580 | "dev-master": "2.0.x-dev" 3581 | } 3582 | }, 3583 | "autoload": { 3584 | "classmap": [ 3585 | "src/" 3586 | ] 3587 | }, 3588 | "notification-url": "https://packagist.org/downloads/", 3589 | "license": [ 3590 | "BSD-3-Clause" 3591 | ], 3592 | "authors": [ 3593 | { 3594 | "name": "Sebastian Bergmann", 3595 | "email": "sebastian@phpunit.de" 3596 | } 3597 | ], 3598 | "description": "Traverses array structures and object graphs to enumerate all referenced objects", 3599 | "homepage": "https://github.com/sebastianbergmann/object-enumerator/", 3600 | "time": "2017-02-18T15:18:39+00:00" 3601 | }, 3602 | { 3603 | "name": "sebastian/recursion-context", 3604 | "version": "2.0.0", 3605 | "source": { 3606 | "type": "git", 3607 | "url": "https://github.com/sebastianbergmann/recursion-context.git", 3608 | "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a" 3609 | }, 3610 | "dist": { 3611 | "type": "zip", 3612 | "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/2c3ba150cbec723aa057506e73a8d33bdb286c9a", 3613 | "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a", 3614 | "shasum": "" 3615 | }, 3616 | "require": { 3617 | "php": ">=5.3.3" 3618 | }, 3619 | "require-dev": { 3620 | "phpunit/phpunit": "~4.4" 3621 | }, 3622 | "type": "library", 3623 | "extra": { 3624 | "branch-alias": { 3625 | "dev-master": "2.0.x-dev" 3626 | } 3627 | }, 3628 | "autoload": { 3629 | "classmap": [ 3630 | "src/" 3631 | ] 3632 | }, 3633 | "notification-url": "https://packagist.org/downloads/", 3634 | "license": [ 3635 | "BSD-3-Clause" 3636 | ], 3637 | "authors": [ 3638 | { 3639 | "name": "Jeff Welch", 3640 | "email": "whatthejeff@gmail.com" 3641 | }, 3642 | { 3643 | "name": "Sebastian Bergmann", 3644 | "email": "sebastian@phpunit.de" 3645 | }, 3646 | { 3647 | "name": "Adam Harvey", 3648 | "email": "aharvey@php.net" 3649 | } 3650 | ], 3651 | "description": "Provides functionality to recursively process PHP variables", 3652 | "homepage": "http://www.github.com/sebastianbergmann/recursion-context", 3653 | "time": "2016-11-19T07:33:16+00:00" 3654 | }, 3655 | { 3656 | "name": "sebastian/resource-operations", 3657 | "version": "1.0.0", 3658 | "source": { 3659 | "type": "git", 3660 | "url": "https://github.com/sebastianbergmann/resource-operations.git", 3661 | "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" 3662 | }, 3663 | "dist": { 3664 | "type": "zip", 3665 | "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", 3666 | "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", 3667 | "shasum": "" 3668 | }, 3669 | "require": { 3670 | "php": ">=5.6.0" 3671 | }, 3672 | "type": "library", 3673 | "extra": { 3674 | "branch-alias": { 3675 | "dev-master": "1.0.x-dev" 3676 | } 3677 | }, 3678 | "autoload": { 3679 | "classmap": [ 3680 | "src/" 3681 | ] 3682 | }, 3683 | "notification-url": "https://packagist.org/downloads/", 3684 | "license": [ 3685 | "BSD-3-Clause" 3686 | ], 3687 | "authors": [ 3688 | { 3689 | "name": "Sebastian Bergmann", 3690 | "email": "sebastian@phpunit.de" 3691 | } 3692 | ], 3693 | "description": "Provides a list of PHP built-in functions that operate on resources", 3694 | "homepage": "https://www.github.com/sebastianbergmann/resource-operations", 3695 | "time": "2015-07-28T20:34:47+00:00" 3696 | }, 3697 | { 3698 | "name": "sebastian/version", 3699 | "version": "2.0.1", 3700 | "source": { 3701 | "type": "git", 3702 | "url": "https://github.com/sebastianbergmann/version.git", 3703 | "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" 3704 | }, 3705 | "dist": { 3706 | "type": "zip", 3707 | "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", 3708 | "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", 3709 | "shasum": "" 3710 | }, 3711 | "require": { 3712 | "php": ">=5.6" 3713 | }, 3714 | "type": "library", 3715 | "extra": { 3716 | "branch-alias": { 3717 | "dev-master": "2.0.x-dev" 3718 | } 3719 | }, 3720 | "autoload": { 3721 | "classmap": [ 3722 | "src/" 3723 | ] 3724 | }, 3725 | "notification-url": "https://packagist.org/downloads/", 3726 | "license": [ 3727 | "BSD-3-Clause" 3728 | ], 3729 | "authors": [ 3730 | { 3731 | "name": "Sebastian Bergmann", 3732 | "email": "sebastian@phpunit.de", 3733 | "role": "lead" 3734 | } 3735 | ], 3736 | "description": "Library that helps with managing the version number of Git-hosted PHP projects", 3737 | "homepage": "https://github.com/sebastianbergmann/version", 3738 | "time": "2016-10-03T07:35:21+00:00" 3739 | }, 3740 | { 3741 | "name": "symfony/yaml", 3742 | "version": "v4.0.4", 3743 | "source": { 3744 | "type": "git", 3745 | "url": "https://github.com/symfony/yaml.git", 3746 | "reference": "ffc60bda1d4a00ec0b32eeabf39dc017bf480028" 3747 | }, 3748 | "dist": { 3749 | "type": "zip", 3750 | "url": "https://api.github.com/repos/symfony/yaml/zipball/ffc60bda1d4a00ec0b32eeabf39dc017bf480028", 3751 | "reference": "ffc60bda1d4a00ec0b32eeabf39dc017bf480028", 3752 | "shasum": "" 3753 | }, 3754 | "require": { 3755 | "php": "^7.1.3" 3756 | }, 3757 | "conflict": { 3758 | "symfony/console": "<3.4" 3759 | }, 3760 | "require-dev": { 3761 | "symfony/console": "~3.4|~4.0" 3762 | }, 3763 | "suggest": { 3764 | "symfony/console": "For validating YAML files using the lint command" 3765 | }, 3766 | "type": "library", 3767 | "extra": { 3768 | "branch-alias": { 3769 | "dev-master": "4.0-dev" 3770 | } 3771 | }, 3772 | "autoload": { 3773 | "psr-4": { 3774 | "Symfony\\Component\\Yaml\\": "" 3775 | }, 3776 | "exclude-from-classmap": [ 3777 | "/Tests/" 3778 | ] 3779 | }, 3780 | "notification-url": "https://packagist.org/downloads/", 3781 | "license": [ 3782 | "MIT" 3783 | ], 3784 | "authors": [ 3785 | { 3786 | "name": "Fabien Potencier", 3787 | "email": "fabien@symfony.com" 3788 | }, 3789 | { 3790 | "name": "Symfony Community", 3791 | "homepage": "https://symfony.com/contributors" 3792 | } 3793 | ], 3794 | "description": "Symfony Yaml Component", 3795 | "homepage": "https://symfony.com", 3796 | "time": "2018-01-21T19:06:11+00:00" 3797 | }, 3798 | { 3799 | "name": "webmozart/assert", 3800 | "version": "1.3.0", 3801 | "source": { 3802 | "type": "git", 3803 | "url": "https://github.com/webmozart/assert.git", 3804 | "reference": "0df1908962e7a3071564e857d86874dad1ef204a" 3805 | }, 3806 | "dist": { 3807 | "type": "zip", 3808 | "url": "https://api.github.com/repos/webmozart/assert/zipball/0df1908962e7a3071564e857d86874dad1ef204a", 3809 | "reference": "0df1908962e7a3071564e857d86874dad1ef204a", 3810 | "shasum": "" 3811 | }, 3812 | "require": { 3813 | "php": "^5.3.3 || ^7.0" 3814 | }, 3815 | "require-dev": { 3816 | "phpunit/phpunit": "^4.6", 3817 | "sebastian/version": "^1.0.1" 3818 | }, 3819 | "type": "library", 3820 | "extra": { 3821 | "branch-alias": { 3822 | "dev-master": "1.3-dev" 3823 | } 3824 | }, 3825 | "autoload": { 3826 | "psr-4": { 3827 | "Webmozart\\Assert\\": "src/" 3828 | } 3829 | }, 3830 | "notification-url": "https://packagist.org/downloads/", 3831 | "license": [ 3832 | "MIT" 3833 | ], 3834 | "authors": [ 3835 | { 3836 | "name": "Bernhard Schussek", 3837 | "email": "bschussek@gmail.com" 3838 | } 3839 | ], 3840 | "description": "Assertions to validate method input/output with nice error messages.", 3841 | "keywords": [ 3842 | "assert", 3843 | "check", 3844 | "validate" 3845 | ], 3846 | "time": "2018-01-29T19:49:41+00:00" 3847 | } 3848 | ], 3849 | "aliases": [], 3850 | "minimum-stability": "stable", 3851 | "stability-flags": [], 3852 | "prefer-stable": false, 3853 | "prefer-lowest": false, 3854 | "platform": [], 3855 | "platform-dev": [] 3856 | } 3857 | --------------------------------------------------------------------------------