From 8b03afc2c1dbffe562ae457cfcb84563011f080d Mon Sep 17 00:00:00 2001 From: ashu555 Date: Mon, 6 May 2019 19:54:12 +0530 Subject: [PATCH 1/8] License Manager Updates --- app/Http/Controllers/Auth/AuthController.php | 2 +- .../Controllers/Front/ClientController.php | 10 +- .../Controllers/License/LicenseController.php | 30 +- .../Order/ExtendedOrderController.php | 6 - .../Controllers/Order/OrderController.php | 7 +- .../Product/BaseProductController.php | 5 +- .../Product/ExtendedBaseProductController.php | 2 +- resources/lang/en/message.php | 2 +- .../front/auth/login-register.blade.php | 5 +- .../clients/reissue-licenseModal.blade.php | 4 +- .../front/clients/show-order.blade.php | 312 ++++++++++-------- .../themes/default1/front/domain.blade.php | 5 +- .../layouts/front/myaccount_master.blade.php | 24 +- .../themes/default1/order/show.blade.php | 194 ++++++++--- .../themes/default1/user/verify.blade.php | 3 + 15 files changed, 404 insertions(+), 207 deletions(-) diff --git a/app/Http/Controllers/Auth/AuthController.php b/app/Http/Controllers/Auth/AuthController.php index 1198a47dab..1f61807429 100755 --- a/app/Http/Controllers/Auth/AuthController.php +++ b/app/Http/Controllers/Auth/AuthController.php @@ -170,7 +170,7 @@ public function requestOtp(Request $request) try { $code = $request->input('code'); $mobile = $request->input('mobile'); - $number = $code.$mobile; + $number = '(+'.$code.') '.$mobile; $result = $this->sendOtp($mobile, $code); $response = ['type' => 'success', 'message' => 'OTP has been sent to '.$number.'.Please Verify to Login']; diff --git a/app/Http/Controllers/Front/ClientController.php b/app/Http/Controllers/Front/ClientController.php index 6f4729932a..e48268333b 100644 --- a/app/Http/Controllers/Front/ClientController.php +++ b/app/Http/Controllers/Front/ClientController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers\Front; use App\Http\Controllers\Github\GithubApiController; +use App\Http\Controllers\License\LicenseController; use App\Http\Controllers\License\LicensePermissionsController; use App\Model\Common\StatusSetting; use App\Model\Github\Github; @@ -367,6 +368,11 @@ public function getOrder($id) $plan = $subscription->plan()->first(); } + $licenseStatus = StatusSetting::pluck('license_status')->first(); + if ($licenseStatus == 1) { + $cont = new \App\Http\Controllers\License\LicenseController(); + $installationDetails = $cont->searchInstallationPath($order->serial_key,$order->product); + } $product = $order->product()->first(); $price = $product->price()->first(); $licenseStatus = StatusSetting::pluck('license_status')->first(); @@ -374,7 +380,7 @@ public function getOrder($id) return view( 'themes.default1.front.clients.show-order', - compact('invoice', 'order', 'user', 'plan', 'product', 'subscription', 'licenseStatus') + compact('invoice', 'order', 'user', 'plan', 'product', 'subscription', 'licenseStatus','installationDetails') ); } catch (Exception $ex) { Bugsnag::notifyException($ex); @@ -382,7 +388,7 @@ public function getOrder($id) return redirect('/')->with('fails', $ex->getMessage()); } } - + public function getPaymentByOrderId($orderid, $userid) { try { diff --git a/app/Http/Controllers/License/LicenseController.php b/app/Http/Controllers/License/LicenseController.php index 8c87bd9abb..ded6531467 100644 --- a/app/Http/Controllers/License/LicenseController.php +++ b/app/Http/Controllers/License/LicenseController.php @@ -35,7 +35,6 @@ private function postCurl($post_url, $post_info) curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); $result = curl_exec($ch); curl_close($ch); - return $result; } @@ -176,7 +175,7 @@ public function updateLicensedDomain($licenseCode, $domain, $productId, $license } $url = $this->url; $isIP = (bool) ip2long($domain); - if ($isIP == true) { + if ($isIP == true) { $requiredomain = 0; $ip = $domain; $domain = ''; @@ -190,7 +189,7 @@ public function updateLicensedDomain($licenseCode, $domain, $productId, $license $licenseId = $searchLicense['licenseId']; $productId = $searchLicense['productId']; $licenseCode = $searchLicense['code']; - $updateLicense = $this->postCurl($url, "api_key_secret=$api_key_secret&api_function=licenses_edit&product_id=$productId&license_code=$licenseCode&license_id=$licenseId&license_order_number=$orderNo&license_require_domain=$requiredomain&license_status=1&license_expire_date=$l_expiry&license_updates_date=$u_expiry&license_support_date=$s_expiry&license_domain=$domain&license_ip=$ip"); + $updateLicense = $this->postCurl($url, "api_key_secret=$api_key_secret&api_function=licenses_edit&product_id=$productId&license_code=$licenseCode&license_id=$licenseId&license_order_number=$orderNo&license_require_domain=$requiredomain&license_status=1&license_expire_date=$l_expiry&license_updates_date=$u_expiry&license_support_date=$s_expiry&license_domain=$domain&license_ip=$ip&license_limit=2"); } public function searchLicenseId($licenseCode, $productId) @@ -219,8 +218,6 @@ public function searchLicenseId($licenseCode, $productId) //Update the Installation status as Inactive after Licensed Domain Is Chnaged public function updateInstalledDomain($licenseCode, $productId) { - $installation_id = ''; - $installation_ip = ''; $url = $this->url; $api_key_secret = $this->api_key_secret; //Search for the Installation Id @@ -231,11 +228,12 @@ public function updateInstalledDomain($licenseCode, $productId) if ($detail->product_id == $productId) { $installation_id = $detail->installation_id; $installation_ip = $detail->installation_ip; + //delete all existing installation + $updateInstallation = $this->postCurl($url, "api_key_secret=$api_key_secret&api_function=installations_edit&installation_id=$installation_id&installation_ip=$installation_ip&installation_status=0&delete_record=1"); } } } - // deactivate The Existing Installation - $updateInstallation = $this->postCurl($url, "api_key_secret=$api_key_secret&api_function=installations_edit&installation_id=$installation_id&installation_ip=$installation_ip&installation_status=0"); + } public function searchInstallationId($licenseCode) @@ -248,6 +246,22 @@ public function searchInstallationId($licenseCode) return $getInstallId; } + public function searchInstallationPath($licenseCode, $productId) + { + $installation_domain = array(); + $installation_ip = array(); + $details = json_decode($this->searchInstallationId($licenseCode)); + if ($details->api_error_detected == 0 && is_array($details->page_message)) { + foreach ($details->page_message as $detail) { + if ($detail->product_id == $productId) { + $installation_domain[] = $detail->installation_domain; + $installation_ip[] = $detail->installation_ip; + } + } + } + return ['installed_path' => $installation_domain , 'installed_ip' => $installation_ip]; + } + //Update Expiration Date After Renewal public function updateExpirationDate($licenseCode, $expiryDate, $productId, $domain, $orderNo, $licenseExpiry, $supportExpiry) { @@ -267,6 +281,6 @@ public function updateExpirationDate($licenseCode, $expiryDate, $productId, $dom $licenseId = $searchLicense['licenseId']; $productId = $searchLicense['productId']; $code = $searchLicense['code']; - $updateLicense = $this->postCurl($url, "api_key_secret=$api_key_secret&api_function=licenses_edit&product_id=$productId&license_code=$code&license_id=$licenseId&license_order_number=$orderNo&license_domain=$domain&license_ip=$ip&license_require_domain=$requiredomain&license_status=1&license_expire_date=$licenseExpiry&license_updates_date=$expiryDate&license_support_date=$supportExpiry"); + $updateLicense = $this->postCurl($url, "api_key_secret=$api_key_secret&api_function=licenses_edit&product_id=$productId&license_code=$code&license_id=$licenseId&license_order_number=$orderNo&license_domain=$domain&license_ip=$ip&license_require_domain=$requiredomain&license_status=1&license_expire_date=$licenseExpiry&license_updates_date=$expiryDate&license_support_date=$supportExpiry&license_limit=2"); } } diff --git a/app/Http/Controllers/Order/ExtendedOrderController.php b/app/Http/Controllers/Order/ExtendedOrderController.php index e763b89d61..787b9c8a2f 100644 --- a/app/Http/Controllers/Order/ExtendedOrderController.php +++ b/app/Http/Controllers/Order/ExtendedOrderController.php @@ -336,13 +336,7 @@ public function getAllowedDomains($seperateDomains) { $needle = 'www'; foreach ($seperateDomains as $domain) { - $isIP = (bool) ip2long($domain); - if ($isIP == true) { $allowedDomains[] = $domain; - } else { - $customDomain = (strpos($domain, $needle) !== false) ? str_replace('www.', '', $domain) : 'www.'.$domain; - $allowedDomains[] = ($domain.','.$customDomain); - } } return $allowedDomains; diff --git a/app/Http/Controllers/Order/OrderController.php b/app/Http/Controllers/Order/OrderController.php index ca22f5d00b..03734e7159 100755 --- a/app/Http/Controllers/Order/OrderController.php +++ b/app/Http/Controllers/Order/OrderController.php @@ -225,9 +225,12 @@ public function show($id) $invoiceItems = $this->invoice_items->where('invoice_id', $invoiceid)->get(); $user = $this->user->find($invoice->user_id); $licenseStatus = StatusSetting::pluck('license_status')->first(); - + if ($licenseStatus == 1) { + $cont = new \App\Http\Controllers\License\LicenseController(); + $installationDetails = $cont->searchInstallationPath($order->serial_key,$order->product); + } return view('themes.default1.order.show', - compact('invoiceItems', 'invoice', 'user', 'order', 'subscription', 'licenseStatus')); + compact('invoiceItems', 'invoice', 'user', 'order', 'subscription', 'licenseStatus','installationDetails')); } catch (\Exception $ex) { Bugsnag::notifyException($ex); diff --git a/app/Http/Controllers/Product/BaseProductController.php b/app/Http/Controllers/Product/BaseProductController.php index ec8dc87556..28b6a19d95 100644 --- a/app/Http/Controllers/Product/BaseProductController.php +++ b/app/Http/Controllers/Product/BaseProductController.php @@ -182,9 +182,10 @@ public function userDownload($uploadid, $userid, $invoice_number, $version_id = header('Content-Disposition: attachment; filename='.$name.'.zip'); //header("Content-type: application/zip"); header('Content-Length: '.filesize($release)); - ob_end_clean(); - // flush(); readfile($release); + // ob_end_clean(); + // flush(); + } } else { return redirect('auth/login')->with('fails', \Lang::get('activate-your-account')); diff --git a/app/Http/Controllers/Product/ExtendedBaseProductController.php b/app/Http/Controllers/Product/ExtendedBaseProductController.php index 31dff8e0c5..174c7aede7 100644 --- a/app/Http/Controllers/Product/ExtendedBaseProductController.php +++ b/app/Http/Controllers/Product/ExtendedBaseProductController.php @@ -148,7 +148,7 @@ public function adminDownload($id, $invoice = '', $api = false) header('Content-Disposition: attachment; filename = '.$name.'.zip'); header('Content-Length: '.filesize($release)); readfile($release); - ob_end_clean(); + // ob_end_clean(); } } catch (\Exception $e) { if ($api) { diff --git a/resources/lang/en/message.php b/resources/lang/en/message.php index 57d3a4ecdf..e32cdcf359 100644 --- a/resources/lang/en/message.php +++ b/resources/lang/en/message.php @@ -384,7 +384,7 @@ 'order-confirmation' => 'Order Confirmation', 'generate-invoice' => 'Generate Invoice', 'send-email' => 'Send Email', - 'domain' => 'Domain', + 'domain' => 'Domain/Ip', 'price-override' => 'Price Override', 'quantity' => 'Quantity', 'agent' => 'No. of Agents', diff --git a/resources/views/themes/default1/front/auth/login-register.blade.php b/resources/views/themes/default1/front/auth/login-register.blade.php index 29a75e3097..1eeb7eaddf 100644 --- a/resources/views/themes/default1/front/auth/login-register.blade.php +++ b/resources/views/themes/default1/front/auth/login-register.blade.php @@ -619,6 +619,7 @@ @section('script') @@ -218,29 +276,20 @@ $('.loader').css('display', 'block'); }, }); - - - - - - + - -
- - -
- - - + - - -
-
-
-
-

Payment receipts

-
+ +
+
-
-
- - - - +


@@ -235,13 +332,18 @@
- +
+ + +
+
+
- - + + + + + + @yield('modals') + @yield('scripts') + + diff --git a/vendor/arcanedev/log-viewer/src/Helpers/LogParser.php b/vendor/arcanedev/log-viewer/src/Helpers/LogParser.php index be654c3dcd..5c07b2eaf9 100644 --- a/vendor/arcanedev/log-viewer/src/Helpers/LogParser.php +++ b/vendor/arcanedev/log-viewer/src/Helpers/LogParser.php @@ -113,6 +113,6 @@ private static function populateEntries($heading, $data, $key) */ private static function hasLogLevel($heading, $level) { - return Str::contains(strtolower($heading), strtolower('.' . $level)); + return Str::contains($heading, strtoupper(".{$level}:")); } } diff --git a/vendor/arcanedev/log-viewer/src/LogViewer.php b/vendor/arcanedev/log-viewer/src/LogViewer.php index 1a4f6e37aa..db121d994f 100644 --- a/vendor/arcanedev/log-viewer/src/LogViewer.php +++ b/vendor/arcanedev/log-viewer/src/LogViewer.php @@ -21,7 +21,7 @@ class LogViewer implements LogViewerContract /** * LogViewer Version */ - const VERSION = '4.6.3'; + const VERSION = '4.7.1'; /* ----------------------------------------------------------------- | Properties diff --git a/vendor/arcanedev/log-viewer/src/Utilities/LogChecker.php b/vendor/arcanedev/log-viewer/src/Utilities/LogChecker.php index 0d6afd2c50..5f1780b8ef 100644 --- a/vendor/arcanedev/log-viewer/src/Utilities/LogChecker.php +++ b/vendor/arcanedev/log-viewer/src/Utilities/LogChecker.php @@ -304,8 +304,8 @@ private function isSingleLogFile($file) */ private function isInvalidLogDate($file) { - $pattern = '/laravel-(\d){4}-(\d){2}-(\d){2}.log/'; + $pattern = $this->filesystem->getPattern(); - return ((bool) preg_match($pattern, $file, $matches)) === false; + return ((bool) preg_match("/{$pattern}/", $file, $matches)) === false; } } diff --git a/vendor/arcanedev/support/LICENSE.md b/vendor/arcanedev/support/LICENSE.md index 24c2d413b8..14a04f42b4 100644 --- a/vendor/arcanedev/support/LICENSE.md +++ b/vendor/arcanedev/support/LICENSE.md @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2015-2017 | ARCANEDEV - Support +Copyright (c) 2015-2019 | ARCANEDEV - Support Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/vendor/arcanedev/support/README.md b/vendor/arcanedev/support/README.md index 6dfa785efb..ec012b05e4 100644 --- a/vendor/arcanedev/support/README.md +++ b/vendor/arcanedev/support/README.md @@ -30,7 +30,7 @@ If you discover any security related issues, please email arcanedev.maroc@gmail. - [All Contributors][link-contributors] [badge_license]: http://img.shields.io/packagist/l/arcanedev/support.svg?style=flat-square -[badge_laravel]: https://img.shields.io/badge/Laravel-5.1%20to%205.4-orange.svg?style=flat-square +[badge_laravel]: https://img.shields.io/badge/Laravel-5.1%20to%205.8-orange.svg?style=flat-square [badge_build]: http://img.shields.io/travis/ARCANEDEV/Support.svg?style=flat-square [badge_coverage]: https://img.shields.io/scrutinizer/coverage/g/ARCANEDEV/Support.svg?style=flat-square [badge_quality]: https://img.shields.io/scrutinizer/g/ARCANEDEV/Support.svg?style=flat-square diff --git a/vendor/arcanedev/support/composer.json b/vendor/arcanedev/support/composer.json index 92543b34a4..695eee35fa 100644 --- a/vendor/arcanedev/support/composer.json +++ b/vendor/arcanedev/support/composer.json @@ -14,13 +14,13 @@ "license": "MIT", "require": { "php": ">=7.1.3", - "illuminate/filesystem": "~5.7.0", - "illuminate/support": "~5.7.0" + "illuminate/filesystem": "~5.8.0", + "illuminate/support": "~5.8.0" }, "require-dev": { - "orchestra/testbench": "~3.7.0", - "phpunit/phpcov": "~5.0", - "phpunit/phpunit": "~7.0" + "orchestra/testbench": "~3.8.0", + "phpunit/phpcov": "~5.0|~6.0", + "phpunit/phpunit": "~7.0|~8.0" }, "autoload": { "psr-4": { diff --git a/vendor/asm89/stack-cors/README.md b/vendor/asm89/stack-cors/README.md deleted file mode 100644 index 40b60e5b78..0000000000 --- a/vendor/asm89/stack-cors/README.md +++ /dev/null @@ -1,83 +0,0 @@ -# Stack/Cors - -Library and middleware enabling cross-origin resource sharing for your -http-{foundation,kernel} using application. It attempts to implement the -[W3C Recommendation] for cross-origin resource sharing. - -[W3C Recommendation]: http://www.w3.org/TR/cors/ - -Master [![Build Status](https://secure.travis-ci.org/asm89/stack-cors.png?branch=master)](http://travis-ci.org/asm89/stack-cors) - -## Installation - -Require `asm89/stack-cors` using composer. - -## Usage - -This package can be used as a library or as [stack middleware]. - -[stack middleware]: http://stackphp.com/ - -### Options - -| Option | Description | Default value | -|------------------------|------------------------------------------------------------|---------------| -| allowedMethods | Matches the request method. | `array()` | -| allowedOrigins | Matches the request origin. | `array()` | -| allowedOriginsPatterns | Matches the request origin with `preg_match`. | `array()` | -| allowedHeaders | Sets the Access-Control-Allow-Headers response header. | `array()` | -| exposedHeaders | Sets the Access-Control-Expose-Headers response header. | `false` | -| maxAge | Sets the Access-Control-Max-Age response header. | `false` | -| supportsCredentials | Sets the Access-Control-Allow-Credentials header. | `false` | - -The _allowedMethods_ and _allowedHeaders_ options are case-insensitive. - -You don't need to provide both _allowedOrigins_ and _allowedOriginsPatterns_. If one of the strings passed matches, it is considered a valid origin. - -If `array('*')` is provided to _allowedMethods_, _allowedOrigins_ or _allowedHeaders_ all methods / origins / headers are allowed. - -### Example: using the library - -```php - array('x-allowed-header', 'x-other-allowed-header'), - 'allowedMethods' => array('DELETE', 'GET', 'POST', 'PUT'), - 'allowedOrigins' => array('localhost'), - 'allowedOriginsPatterns' => array('/localhost:\d/'), - 'exposedHeaders' => false, - 'maxAge' => false, - 'supportsCredentials' => false, -)); - -$cors->addActualRequestHeaders(Response $response, $origin); -$cors->handlePreflightRequest(Request $request); -$cors->isActualRequestAllowed(Request $request); -$cors->isCorsRequest(Request $request); -$cors->isPreflightRequest(Request $request); -``` - -## Example: using the stack middleware - -```php - array('x-allowed-header', 'x-other-allowed-header'), - // you can use array('*') to allow any methods - 'allowedMethods' => array('DELETE', 'GET', 'POST', 'PUT'), - // you can use array('*') to allow requests from any origin - 'allowedOrigins' => array('localhost'), - // you can enter regexes that are matched to the origin request header - 'allowedOriginsPatterns' => array('/localhost:\d/'), - 'exposedHeaders' => false, - 'maxAge' => false, - 'supportsCredentials' => false, -)); -``` diff --git a/vendor/asm89/stack-cors/composer.json b/vendor/asm89/stack-cors/composer.json deleted file mode 100644 index 643053868e..0000000000 --- a/vendor/asm89/stack-cors/composer.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "name": "asm89/stack-cors", - "description": "Cross-origin resource sharing library and stack middleware", - "keywords": ["stack", "cors"], - "homepage": "https://github.com/asm89/stack-cors", - "type": "library", - "license": "MIT", - "authors": [ - { - "name": "Alexander", - "email": "iam.asm89@gmail.com" - } - ], - "require": { - "php": ">=5.5.9", - "symfony/http-foundation": "~2.7|~3.0|~4.0", - "symfony/http-kernel": "~2.7|~3.0|~4.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.0 || ^4.8.10", - "squizlabs/php_codesniffer": "^2.3" - }, - "autoload": { - "psr-4": { - "Asm89\\Stack\\": "src/Asm89/Stack/" - } - }, - "autoload-dev": { - "psr-4": { - "Asm89\\Stack\\": "test/Asm89/Stack/" - } - }, - "scripts": { - "test": "phpunit", - "check-style": "phpcs -p --standard=PSR2 --runtime-set ignore_errors_on_exit 1 --runtime-set ignore_warnings_on_exit 1 src", - "fix-style": "phpcbf -p --standard=PSR2 --runtime-set ignore_errors_on_exit 1 --runtime-set ignore_warnings_on_exit 1 src" - }, - "extra": { - "branch-alias": { - "dev-master": "1.2-dev" - } - } -} diff --git a/vendor/asm89/stack-cors/src/Asm89/Stack/Cors.php b/vendor/asm89/stack-cors/src/Asm89/Stack/Cors.php deleted file mode 100644 index e5735f916b..0000000000 --- a/vendor/asm89/stack-cors/src/Asm89/Stack/Cors.php +++ /dev/null @@ -1,64 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Asm89\Stack; - -use Symfony\Component\HttpKernel\HttpKernelInterface; -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpFoundation\Response; - -class Cors implements HttpKernelInterface -{ - /** - * @var \Symfony\Component\HttpKernel\HttpKernelInterface - */ - private $app; - - /** - * @var \Asm89\Stack\CorsService - */ - private $cors; - - private $defaultOptions = array( - 'allowedHeaders' => array(), - 'allowedMethods' => array(), - 'allowedOrigins' => array(), - 'allowedOriginsPatterns' => array(), - 'exposedHeaders' => false, - 'maxAge' => false, - 'supportsCredentials' => false, - ); - - public function __construct(HttpKernelInterface $app, array $options = array()) - { - $this->app = $app; - $this->cors = new CorsService(array_merge($this->defaultOptions, $options)); - } - - public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true) - { - if (!$this->cors->isCorsRequest($request)) { - return $this->app->handle($request, $type, $catch); - } - - if ($this->cors->isPreflightRequest($request)) { - return $this->cors->handlePreflightRequest($request); - } - - if (!$this->cors->isActualRequestAllowed($request)) { - return new Response('Not allowed.', 403); - } - - $response = $this->app->handle($request, $type, $catch); - - return $this->cors->addActualRequestHeaders($response, $request); - } -} diff --git a/vendor/asm89/stack-cors/src/Asm89/Stack/CorsService.php b/vendor/asm89/stack-cors/src/Asm89/Stack/CorsService.php deleted file mode 100644 index ccf5d58cae..0000000000 --- a/vendor/asm89/stack-cors/src/Asm89/Stack/CorsService.php +++ /dev/null @@ -1,203 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Asm89\Stack; - -use Symfony\Component\HttpKernel\HttpKernelInterface; -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpFoundation\Response; - -class CorsService -{ - private $options; - - public function __construct(array $options = array()) - { - $this->options = $this->normalizeOptions($options); - } - - private function normalizeOptions(array $options = array()) - { - $options += array( - 'allowedOrigins' => array(), - 'allowedOriginsPatterns' => array(), - 'supportsCredentials' => false, - 'allowedHeaders' => array(), - 'exposedHeaders' => array(), - 'allowedMethods' => array(), - 'maxAge' => 0, - ); - - // normalize array('*') to true - if (in_array('*', $options['allowedOrigins'])) { - $options['allowedOrigins'] = true; - } - if (in_array('*', $options['allowedHeaders'])) { - $options['allowedHeaders'] = true; - } else { - $options['allowedHeaders'] = array_map('strtolower', $options['allowedHeaders']); - } - - if (in_array('*', $options['allowedMethods'])) { - $options['allowedMethods'] = true; - } else { - $options['allowedMethods'] = array_map('strtoupper', $options['allowedMethods']); - } - - return $options; - } - - public function isActualRequestAllowed(Request $request) - { - return $this->checkOrigin($request); - } - - public function isCorsRequest(Request $request) - { - return $request->headers->has('Origin') && !$this->isSameHost($request); - } - - public function isPreflightRequest(Request $request) - { - return $this->isCorsRequest($request) - && $request->getMethod() === 'OPTIONS' - && $request->headers->has('Access-Control-Request-Method'); - } - - public function addActualRequestHeaders(Response $response, Request $request) - { - if (!$this->checkOrigin($request)) { - return $response; - } - - $response->headers->set('Access-Control-Allow-Origin', $request->headers->get('Origin')); - - if (!$response->headers->has('Vary')) { - $response->headers->set('Vary', 'Origin'); - } else { - $response->headers->set('Vary', $response->headers->get('Vary') . ', Origin'); - } - - if ($this->options['supportsCredentials']) { - $response->headers->set('Access-Control-Allow-Credentials', 'true'); - } - - if ($this->options['exposedHeaders']) { - $response->headers->set('Access-Control-Expose-Headers', implode(', ', $this->options['exposedHeaders'])); - } - - return $response; - } - - public function handlePreflightRequest(Request $request) - { - if (true !== $check = $this->checkPreflightRequestConditions($request)) { - return $check; - } - - return $this->buildPreflightCheckResponse($request); - } - - private function buildPreflightCheckResponse(Request $request) - { - $response = new Response(); - - if ($this->options['supportsCredentials']) { - $response->headers->set('Access-Control-Allow-Credentials', 'true'); - } - - $response->headers->set('Access-Control-Allow-Origin', $request->headers->get('Origin')); - - if ($this->options['maxAge']) { - $response->headers->set('Access-Control-Max-Age', $this->options['maxAge']); - } - - $allowMethods = $this->options['allowedMethods'] === true - ? strtoupper($request->headers->get('Access-Control-Request-Method')) - : implode(', ', $this->options['allowedMethods']); - $response->headers->set('Access-Control-Allow-Methods', $allowMethods); - - $allowHeaders = $this->options['allowedHeaders'] === true - ? strtoupper($request->headers->get('Access-Control-Request-Headers')) - : implode(', ', $this->options['allowedHeaders']); - $response->headers->set('Access-Control-Allow-Headers', $allowHeaders); - - return $response; - } - - private function checkPreflightRequestConditions(Request $request) - { - if (!$this->checkOrigin($request)) { - return $this->createBadRequestResponse(403, 'Origin not allowed'); - } - - if (!$this->checkMethod($request)) { - return $this->createBadRequestResponse(405, 'Method not allowed'); - } - - $requestHeaders = array(); - // if allowedHeaders has been set to true ('*' allow all flag) just skip this check - if ($this->options['allowedHeaders'] !== true && $request->headers->has('Access-Control-Request-Headers')) { - $headers = strtolower($request->headers->get('Access-Control-Request-Headers')); - $requestHeaders = array_filter(explode(',', $headers)); - - foreach ($requestHeaders as $header) { - if (!in_array(trim($header), $this->options['allowedHeaders'])) { - return $this->createBadRequestResponse(403, 'Header not allowed'); - } - } - } - - return true; - } - - private function createBadRequestResponse($code, $reason = '') - { - return new Response($reason, $code); - } - - private function isSameHost(Request $request) - { - return $request->headers->get('Origin') === $request->getSchemeAndHttpHost(); - } - - private function checkOrigin(Request $request) - { - if ($this->options['allowedOrigins'] === true) { - // allow all '*' flag - return true; - } - $origin = $request->headers->get('Origin'); - - if (in_array($origin, $this->options['allowedOrigins'])) { - return true; - } - - foreach ($this->options['allowedOriginsPatterns'] as $pattern) { - if (preg_match($pattern, $origin)) { - return true; - } - } - - return false; - } - - private function checkMethod(Request $request) - { - if ($this->options['allowedMethods'] === true) { - // allow all '*' flag - return true; - } - - $requestMethod = strtoupper($request->headers->get('Access-Control-Request-Method')); - return in_array($requestMethod, $this->options['allowedMethods']); - } -} diff --git a/vendor/barryvdh/laravel-cors/.gitignore b/vendor/barryvdh/laravel-cors/.gitignore deleted file mode 100644 index 2c1fc0c14b..0000000000 --- a/vendor/barryvdh/laravel-cors/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -/vendor -composer.phar -composer.lock -.DS_Store \ No newline at end of file diff --git a/vendor/barryvdh/laravel-cors/.travis.yml b/vendor/barryvdh/laravel-cors/.travis.yml deleted file mode 100644 index cb4d6c2cf9..0000000000 --- a/vendor/barryvdh/laravel-cors/.travis.yml +++ /dev/null @@ -1,41 +0,0 @@ -language: php - -php: - - 7.1 - - 7.2 - -env: - global: - - setup=stable - - laravel=5.x - - testbench=3.x - -matrix: - include: - - php: 7.1 - env: setup=lowest - - php: 7.1 - env: - - laravel=5.6.x - - testbench=3.6.x - - php: 7.1 - env: - - laravel=5.7.x - - testbench=3.7.x - -sudo: false - -cache: - directories: - - $HOME/.composer/cache - -install: - - composer require illuminate/support:${laravel} --no-update - - composer require laravel/framework:${laravel} --no-update - - composer require orchestra/testbench:${testbench} --no-update - - if [[ $setup = 'stable' ]]; then travis_retry composer update --prefer-dist --no-interaction --prefer-stable; fi - - if [[ $setup = 'lowest' ]]; then travis_retry composer update --prefer-dist --no-interaction --prefer-lowest --prefer-stable; fi - -script: - - vendor/bin/phpunit - - vendor/bin/phpcs --standard=psr2 src/ diff --git a/vendor/barryvdh/laravel-cors/LICENSE b/vendor/barryvdh/laravel-cors/LICENSE deleted file mode 100644 index 3bf9128223..0000000000 --- a/vendor/barryvdh/laravel-cors/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -Copyright (c) 2013-2016 Barry vd. Heuvel - -Copyright for portions of this project are held by [asm89 (Alexander)] as part of project asm89/stack-cors. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is furnished -to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. \ No newline at end of file diff --git a/vendor/barryvdh/laravel-cors/changelog.md b/vendor/barryvdh/laravel-cors/changelog.md deleted file mode 100644 index 9048d613e0..0000000000 --- a/vendor/barryvdh/laravel-cors/changelog.md +++ /dev/null @@ -1,21 +0,0 @@ -# Change Log -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](http://keepachangelog.com/) -and this project adheres to [Semantic Versioning](http://semver.org/). - -## v0.11.0 (2017-12-xx) -### Breaking changes - - The wildcard matcher is changed. You can use `allowedOriginPatterns` for your own patterns, - or simple wildcards in the normal origins. Eg. `*.laravel.com` should still work. - -## v0.9.0 (2016-03-2017) -### Breaking changes - - The `cors` alias is no longer added by default. Use the full class or add the alias yourself. - - The Lumen ServiceProvider has been removed. Both Laravel and Lumen should use `Barryvdh\Cors\ServiceProvider::class`. - - `Barryvdh\Cors\Stack\CorsService` moves to `\Barryvdh\Cors\CorsService` (namespace changed). - - `Barryvdh\Cors@addActualRequestHeaders` will automatically attached when Exception occured. - -### Added - - Better error-handling when exceptions occur. - - A lot of tests, also on older Laravel versions. diff --git a/vendor/barryvdh/laravel-cors/composer.json b/vendor/barryvdh/laravel-cors/composer.json deleted file mode 100644 index 335af51816..0000000000 --- a/vendor/barryvdh/laravel-cors/composer.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "name": "barryvdh/laravel-cors", - "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", - "keywords": ["laravel", "cors", "crossdomain", "api"], - "license": "MIT", - "authors": [ - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "require": { - "php": ">=7", - "illuminate/support": "5.5.x|5.6.x|5.7.x|5.8.x", - "symfony/http-foundation": "^3.1|^4", - "symfony/http-kernel": "^3.1|^4", - "asm89/stack-cors": "^1.2" - }, - "autoload": { - "psr-4": { - "Barryvdh\\Cors\\": "src/" - } - }, - "autoload-dev": { - "psr-4": { - "Barryvdh\\Cors\\Tests\\": "tests/" - } - }, - "extra": { - "branch-alias": { - "dev-master": "0.11-dev" - }, - "laravel": { - "providers": [ - "Barryvdh\\Cors\\ServiceProvider" - ] - } - }, - "require-dev": { - "laravel/framework": "^5.5", - "phpunit/phpunit": "^4.8|^5.2|^7.0", - "orchestra/testbench": "3.3.x|3.4.x|3.5.x|3.6.x|3.7.x", - "squizlabs/php_codesniffer": "^2.3" - }, - "scripts": { - "test": "phpunit", - "check-style": "phpcs -p --standard=PSR2 src/", - "fix-style": "phpcbf -p --standard=PSR2 src/" - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/vendor/barryvdh/laravel-cors/config/cors.php b/vendor/barryvdh/laravel-cors/config/cors.php deleted file mode 100644 index e9b90f8b33..0000000000 --- a/vendor/barryvdh/laravel-cors/config/cors.php +++ /dev/null @@ -1,23 +0,0 @@ - false, - 'allowedOrigins' => ['*'], - 'allowedOriginsPatterns' => [], - 'allowedHeaders' => ['*'], - 'allowedMethods' => ['*'], - 'exposedHeaders' => [], - 'maxAge' => 0, - -]; diff --git a/vendor/barryvdh/laravel-cors/phpunit.php b/vendor/barryvdh/laravel-cors/phpunit.php deleted file mode 100644 index f866e3dc33..0000000000 --- a/vendor/barryvdh/laravel-cors/phpunit.php +++ /dev/null @@ -1,16 +0,0 @@ - - - - - ./tests/ - - - - - ./src - - - \ No newline at end of file diff --git a/vendor/barryvdh/laravel-cors/readme.md b/vendor/barryvdh/laravel-cors/readme.md deleted file mode 100644 index 722252635d..0000000000 --- a/vendor/barryvdh/laravel-cors/readme.md +++ /dev/null @@ -1,171 +0,0 @@ -# CORS Middleware for Laravel 5 - -[![Latest Version on Packagist][ico-version]][link-packagist] -[![Software License][ico-license]](LICENSE.md) -[![Build Status][ico-travis]][link-travis] -[![Total Downloads][ico-downloads]][link-downloads] - -Based on https://github.com/asm89/stack-cors - -## About - -The `laravel-cors` package allows you to send [Cross-Origin Resource Sharing](http://enable-cors.org/) -headers with Laravel middleware configuration. - -If you want to have have a global overview of CORS workflow, you can browse -this [image](http://www.html5rocks.com/static/images/cors_server_flowchart.png). - -## Features - -* Handles CORS pre-flight OPTIONS requests -* Adds CORS headers to your responses - -## Installation - -Require the `barryvdh/laravel-cors` package in your `composer.json` and update your dependencies: -```sh -$ composer require barryvdh/laravel-cors -``` - -For laravel >=5.5 that's all. This package supports Laravel new [Package Discovery](https://laravel.com/docs/5.5/packages#package-discovery). - -If you are using Laravel < 5.5, you also need to add Cors\ServiceProvider to your `config/app.php` providers array: -```php -Barryvdh\Cors\ServiceProvider::class, -``` - -## Global usage - -To allow CORS for all your routes, add the `HandleCors` middleware in the `$middleware` property of `app/Http/Kernel.php` class: - -```php -protected $middleware = [ - // ... - \Barryvdh\Cors\HandleCors::class, -]; -``` - -## Group middleware - -If you want to allow CORS on a specific middleware group or route, add the `HandleCors` middleware to your group: - -```php -protected $middlewareGroups = [ - 'web' => [ - // ... - ], - - 'api' => [ - // ... - \Barryvdh\Cors\HandleCors::class, - ], -]; -``` - -## Configuration - -The defaults are set in `config/cors.php`. Copy this file to your own config directory to modify the values. You can publish the config using this command: -```sh -$ php artisan vendor:publish --provider="Barryvdh\Cors\ServiceProvider" -``` -> **Note:** When using custom headers, like `X-Auth-Token` or `X-Requested-With`, you must set the `allowedHeaders` to include those headers. You can also set it to `array('*')` to allow all custom headers. - -> **Note:** If you are explicitly whitelisting headers, you must include `Origin` or requests will fail to be recognized as CORS. - - -```php -return [ - /* - |-------------------------------------------------------------------------- - | Laravel CORS - |-------------------------------------------------------------------------- - | - | allowedOrigins, allowedHeaders and allowedMethods can be set to array('*') - | to accept any value. - | - */ - 'supportsCredentials' => false, - 'allowedOrigins' => ['*'], - 'allowedHeaders' => ['Content-Type', 'X-Requested-With'], - 'allowedMethods' => ['*'], // ex: ['GET', 'POST', 'PUT', 'DELETE'] - 'exposedHeaders' => [], - 'maxAge' => 0, -]; -``` - -`allowedOrigins`, `allowedHeaders` and `allowedMethods` can be set to `array('*')` to accept any value. - -> **Note:** Try to be a specific as possible. You can start developing with loose constraints, but it's better to be as strict as possible! - -> **Note:** Because of [http method overriding](http://symfony.com/doc/current/reference/configuration/framework.html#http-method-override) in Laravel, allowing POST methods will also enable the API users to perform PUT and DELETE requests as well. - -### Lumen - -On Laravel Lumen, load your configuration file manually in `bootstrap/app.php`: -```php -$app->configure('cors'); -``` - -And register the ServiceProvider: - -```php -$app->register(Barryvdh\Cors\ServiceProvider::class); -``` - -## Global usage for Lumen -To allow CORS for all your routes, add the `HandleCors` middleware to the global middleware: -```php -$app->middleware([ - // ... - \Barryvdh\Cors\HandleCors::class, -]); -``` - -## Group middleware for Lumen -If you want to allow CORS on a specific middleware group or route, add the `HandleCors` middleware to your group: - -```php -$app->routeMiddleware([ - // ... - 'cors' => \Barryvdh\Cors\HandleCors::class, -]); -``` - -## Common problems and errors (Pre Laravel 5.3) -In order for the package to work, the request has to be a valid CORS request and needs to include an "Origin" header. - -When an error occurs, the middleware isn't run completely. So when this happens, you won't see the actual result, but will get a CORS error instead. - -This could be a CSRF token error or just a simple problem. - -> **Note:** This should be working in Laravel 5.3+. - -### Disabling CSRF protection for your API - -If possible, use a different route group with CSRF protection enabled. -Otherwise you can disable CSRF for certain requests in `App\Http\Middleware\VerifyCsrfToken`: - -```php -protected $except = [ - 'api/*' -]; -``` - -## License - -Released under the MIT License, see [LICENSE](LICENSE). - -[ico-version]: https://img.shields.io/packagist/v/barryvdh/laravel-cors.svg?style=flat-square -[ico-license]: https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square -[ico-travis]: https://img.shields.io/travis/barryvdh/laravel-cors/master.svg?style=flat-square -[ico-scrutinizer]: https://img.shields.io/scrutinizer/coverage/g/barryvdh/laravel-cors.svg?style=flat-square -[ico-code-quality]: https://img.shields.io/scrutinizer/g/barryvdh/laravel-cors.svg?style=flat-square -[ico-downloads]: https://img.shields.io/packagist/dt/barryvdh/laravel-cors.svg?style=flat-square - -[link-packagist]: https://packagist.org/packages/barryvdh/laravel-cors -[link-travis]: https://travis-ci.org/barryvdh/laravel-cors -[link-scrutinizer]: https://scrutinizer-ci.com/g/barryvdh/laravel-cors/code-structure -[link-code-quality]: https://scrutinizer-ci.com/g/barryvdh/laravel-cors -[link-downloads]: https://packagist.org/packages/barryvdh/laravel-cors -[link-author]: https://github.com/barryvdh -[link-contributors]: ../../contributors diff --git a/vendor/barryvdh/laravel-cors/src/HandleCors.php b/vendor/barryvdh/laravel-cors/src/HandleCors.php deleted file mode 100644 index cd2dc2d7a1..0000000000 --- a/vendor/barryvdh/laravel-cors/src/HandleCors.php +++ /dev/null @@ -1,77 +0,0 @@ -cors = $cors; - $this->events = $events; - } - - /** - * Handle an incoming request. Based on Asm89\Stack\Cors by asm89 - * @see https://github.com/asm89/stack-cors/blob/master/src/Asm89/Stack/Cors.php - * - * @param \Illuminate\Http\Request $request - * @param \Closure $next - * @return mixed - */ - public function handle($request, Closure $next) - { - if (! $this->cors->isCorsRequest($request)) { - return $next($request); - } - - if ($this->cors->isPreflightRequest($request)) { - return $this->cors->handlePreflightRequest($request); - } - - if (! $this->cors->isActualRequestAllowed($request)) { - return new LaravelResponse('Not allowed in CORS policy.', 403); - } - - // Add the headers on the Request Handled event as fallback in case of exceptions - if (class_exists(RequestHandled::class)) { - $this->events->listen(RequestHandled::class, function (RequestHandled $event) { - $this->addHeaders($event->request, $event->response); - }); - } else { - $this->events->listen('kernel.handled', function (Request $request, Response $response) { - $this->addHeaders($request, $response); - }); - } - - $response = $next($request); - - return $this->addHeaders($request, $response); - } - - /** - * @param Request $request - * @param Response $response - * @return Response - */ - protected function addHeaders(Request $request, Response $response) - { - // Prevent double checking - if (! $response->headers->has('Access-Control-Allow-Origin')) { - $response = $this->cors->addActualRequestHeaders($response, $request); - } - - return $response; - } -} diff --git a/vendor/barryvdh/laravel-cors/src/HandlePreflight.php b/vendor/barryvdh/laravel-cors/src/HandlePreflight.php deleted file mode 100644 index 6a0c0b77c3..0000000000 --- a/vendor/barryvdh/laravel-cors/src/HandlePreflight.php +++ /dev/null @@ -1,31 +0,0 @@ -cors = $cors; - } - - /** - * Handle an incoming Preflight request. - * - * @param \Illuminate\Http\Request $request - * @param \Closure $next - * @return mixed - */ - public function handle($request, Closure $next) - { - if ($this->cors->isPreflightRequest($request)) { - return $this->cors->handlePreflightRequest($request); - } - - return $next($request); - } -} diff --git a/vendor/barryvdh/laravel-cors/src/LumenServiceProvider.php b/vendor/barryvdh/laravel-cors/src/LumenServiceProvider.php deleted file mode 100644 index 56d634425b..0000000000 --- a/vendor/barryvdh/laravel-cors/src/LumenServiceProvider.php +++ /dev/null @@ -1,13 +0,0 @@ -mergeConfigFrom($this->configPath(), 'cors'); - - $this->app->singleton(CorsService::class, function ($app) { - $options = $app['config']->get('cors'); - - if (isset($options['allowedOrigins'])) { - foreach ($options['allowedOrigins'] as $origin) { - if (strpos($origin, '*') !== false) { - $options['allowedOriginsPatterns'][] = $this->convertWildcardToPattern($origin); - } - } - } - - return new CorsService($options); - }); - } - - /** - * Add the Cors middleware to the router. - * - */ - public function boot() - { - // Lumen is limited, so always add the preflight. - if ($this->isLumen()) { - $this->app->middleware([HandlePreflight::class]); - } else { - $this->publishes([$this->configPath() => config_path('cors.php')]); - - /** @var \Illuminate\Foundation\Http\Kernel $kernel */ - $kernel = $this->app->make(Kernel::class); - - // When the HandleCors middleware is not attached globally, add the PreflightCheck - if (! $kernel->hasMiddleware(HandleCors::class)) { - $kernel->prependMiddleware(HandlePreflight::class); - } - } - } - - protected function configPath() - { - return __DIR__ . '/../config/cors.php'; - } - - protected function isLumen() - { - return str_contains($this->app->version(), 'Lumen'); - } - - /** - * Create a pattern for a wildcard, based on Str::is() from Laravel - * - * @see https://github.com/laravel/framework/blob/5.5/src/Illuminate/Support/Str.php - * @param $pattern - * @return string - */ - protected function convertWildcardToPattern($pattern) - { - $pattern = preg_quote($pattern, '#'); - - // Asterisks are translated into zero-or-more regular expression wildcards - // to make it convenient to check if the strings starts with the given - // pattern such as "library/*", making any string check convenient. - $pattern = str_replace('\*', '.*', $pattern); - - return '#^'.$pattern.'\z#u'; - } -} diff --git a/vendor/barryvdh/laravel-cors/tests/CorsKernel.php b/vendor/barryvdh/laravel-cors/tests/CorsKernel.php deleted file mode 100644 index 49b57a7b58..0000000000 --- a/vendor/barryvdh/laravel-cors/tests/CorsKernel.php +++ /dev/null @@ -1,58 +0,0 @@ - array(), - 'allowedMethods' => array(), - 'allowedOrigins' => array(), - 'exposedHeaders' => false, - 'maxAge' => false, - 'supportsCredentials' => false, - ); - - public function __construct(HttpKernelInterface $app, array $options = array()) - { - $this->app = $app; - $this->cors = new CorsService(array_merge($this->defaultOptions, $options)); - } - - public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true) - { - if (!$this->cors->isCorsRequest($request)) { - return $this->app->handle($request, $type, $catch); - } - - if ($this->cors->isPreflightRequest($request)) { - return $this->cors->handlePreflightRequest($request); - } - - if (!$this->cors->isActualRequestAllowed($request)) { - return new Response('Not allowed.', 403); - } - - $response = $this->app->handle($request, $type, $catch); - - return $this->cors->addActualRequestHeaders($response, $request); - } -} diff --git a/vendor/barryvdh/laravel-cors/tests/GlobalMiddlewareTest.php b/vendor/barryvdh/laravel-cors/tests/GlobalMiddlewareTest.php deleted file mode 100644 index 088e8af402..0000000000 --- a/vendor/barryvdh/laravel-cors/tests/GlobalMiddlewareTest.php +++ /dev/null @@ -1,163 +0,0 @@ -make(\Illuminate\Contracts\Http\Kernel::class); - $kernel->prependMiddleware(\Barryvdh\Cors\HandleCors::class); - - parent::getEnvironmentSetUp($app); - } - - public function testShouldReturnNullOnHeaderAssessControlAllowOriginBecauseDontHaveHttpOriginOnRequest() - { - $crawler = $this->call('OPTIONS', 'api/ping', [], [], [], [ - 'HTTP_ACCESS_CONTROL_REQUEST_METHOD' => 'POST', - ]); - - $this->assertNull($crawler->headers->get('Access-Control-Allow-Origin')); - $this->assertEquals(200, $crawler->getStatusCode()); - } - - public function testOptionsAllowOriginAllowed() - { - $crawler = $this->call('OPTIONS', 'api/ping', [], [], [], [ - 'HTTP_ORIGIN' => 'localhost', - 'HTTP_ACCESS_CONTROL_REQUEST_METHOD' => 'POST', - ]); - - $this->assertEquals('localhost', $crawler->headers->get('Access-Control-Allow-Origin')); - $this->assertEquals(200, $crawler->getStatusCode()); - } - - public function testOptionsAllowOriginAllowedNonExistingRoute() - { - $crawler = $this->call('OPTIONS', 'api/pang', [], [], [], [ - 'HTTP_ORIGIN' => 'localhost', - 'HTTP_ACCESS_CONTROL_REQUEST_METHOD' => 'POST', - ]); - - $this->assertEquals('localhost', $crawler->headers->get('Access-Control-Allow-Origin')); - $this->assertEquals(200, $crawler->getStatusCode()); - } - - public function testOptionsAllowOriginNotAllowed() - { - $crawler = $this->call('OPTIONS', 'api/ping', [], [], [], [ - 'HTTP_ORIGIN' => 'otherhost', - 'HTTP_ACCESS_CONTROL_REQUEST_METHOD' => 'POST', - ]); - - $this->assertEquals(null, $crawler->headers->get('Access-Control-Allow-Origin')); - $this->assertEquals(403, $crawler->getStatusCode()); - } - - - public function testAllowOriginAllowed() - { - $crawler = $this->call('POST', 'web/ping', [], [], [], [ - 'HTTP_ORIGIN' => 'localhost', - 'HTTP_ACCESS_CONTROL_REQUEST_METHOD' => 'POST', - ]); - - $this->assertEquals('localhost', $crawler->headers->get('Access-Control-Allow-Origin')); - $this->assertEquals(200, $crawler->getStatusCode()); - - $this->assertEquals('PONG', $crawler->getContent()); - } - - public function testAllowOriginNotAllowed() - { - $crawler = $this->call('POST', 'web/ping', [], [], [], [ - 'HTTP_ORIGIN' => 'otherhost', - 'HTTP_ACCESS_CONTROL_REQUEST_METHOD' => 'POST', - ]); - - $this->assertEquals(null, $crawler->headers->get('Access-Control-Allow-Origin')); - $this->assertEquals(403, $crawler->getStatusCode()); - } - - public function testAllowMethodAllowed() - { - $crawler = $this->call('POST', 'web/ping', [], [], [], [ - 'HTTP_ORIGIN' => 'localhost', - 'HTTP_ACCESS_CONTROL_REQUEST_METHOD' => 'POST', - ]); - $this->assertEquals(null, $crawler->headers->get('Access-Control-Allow-Methods')); - $this->assertEquals(200, $crawler->getStatusCode()); - - $this->assertEquals('PONG', $crawler->getContent()); - } - - public function testAllowMethodNotAllowed() - { - $crawler = $this->call('POST', 'web/ping', [], [], [], [ - 'HTTP_ORIGIN' => 'localhost', - 'HTTP_ACCESS_CONTROL_REQUEST_METHOD' => 'PUT', - ]); - $this->assertEquals(null, $crawler->headers->get('Access-Control-Allow-Methods')); - $this->assertEquals(200, $crawler->getStatusCode()); - } - - public function testAllowHeaderAllowed() - { - $crawler = $this->call('POST', 'web/ping', [], [], [], [ - 'HTTP_ORIGIN' => 'localhost', - 'HTTP_ACCESS_CONTROL_REQUEST_HEADERS' => 'x-custom-1, x-custom-2', - ]); - $this->assertEquals(null, $crawler->headers->get('Access-Control-Allow-Headers')); - $this->assertEquals(200, $crawler->getStatusCode()); - - $this->assertEquals('PONG', $crawler->getContent()); - } - - public function testAllowHeaderNotAllowed() - { - $crawler = $this->call('POST', 'web/ping', [], [], [], [ - 'HTTP_ORIGIN' => 'localhost', - 'HTTP_ACCESS_CONTROL_REQUEST_HEADERS' => 'x-custom-3', - ]); - $this->assertEquals(null, $crawler->headers->get('Access-Control-Allow-Headers')); - $this->assertEquals(200, $crawler->getStatusCode()); - } - - public function testError() - { - if ($this->checkVersion('5.3', '<')) { - $this->markTestSkipped('Catching exceptions is not possible on Laravel 5.1'); - } - - $crawler = $this->call('POST', 'web/error', [], [], [], [ - 'HTTP_ORIGIN' => 'localhost', - 'HTTP_ACCESS_CONTROL_REQUEST_METHOD' => 'POST', - ]); - - $this->assertEquals('localhost', $crawler->headers->get('Access-Control-Allow-Origin')); - $this->assertEquals(500, $crawler->getStatusCode()); - } - - public function testValidationException() - { - if ($this->checkVersion('5.3', '<')) { - $this->markTestSkipped('Catching exceptions is not possible on Laravel 5.1'); - } - - $crawler = $this->call('POST', 'web/validation', [], [], [], [ - 'HTTP_ORIGIN' => 'localhost', - 'HTTP_ACCESS_CONTROL_REQUEST_METHOD' => 'POST', - ]); - $this->assertEquals('localhost', $crawler->headers->get('Access-Control-Allow-Origin')); - $this->assertEquals(302, $crawler->getStatusCode()); - } -} diff --git a/vendor/barryvdh/laravel-cors/tests/GroupMiddlewareTest.php b/vendor/barryvdh/laravel-cors/tests/GroupMiddlewareTest.php deleted file mode 100644 index 66c41483ab..0000000000 --- a/vendor/barryvdh/laravel-cors/tests/GroupMiddlewareTest.php +++ /dev/null @@ -1,124 +0,0 @@ -call('OPTIONS', 'api/ping', [], [], [], [ - 'HTTP_ORIGIN' => 'localhost', - 'HTTP_ACCESS_CONTROL_REQUEST_METHOD' => 'POST', - ]); - - $this->assertEquals('localhost', $crawler->headers->get('Access-Control-Allow-Origin')); - $this->assertEquals(200, $crawler->getStatusCode()); - } - - public function testAllowOriginAllowed() - { - $crawler = $this->call('POST', 'api/ping', [], [], [], [ - 'HTTP_ORIGIN' => 'localhost', - 'HTTP_ACCESS_CONTROL_REQUEST_METHOD' => 'POST', - ]); - - $this->assertEquals('localhost', $crawler->headers->get('Access-Control-Allow-Origin')); - $this->assertEquals(200, $crawler->getStatusCode()); - - $this->assertEquals('PONG', $crawler->getContent()); - } - - public function testAllowOriginNotAllowed() - { - $crawler = $this->call('POST', 'api/ping', [], [], [], [ - 'HTTP_ORIGIN' => 'otherhost', - 'HTTP_ACCESS_CONTROL_REQUEST_METHOD' => 'POST', - ]); - - $this->assertEquals(null, $crawler->headers->get('Access-Control-Allow-Origin')); - $this->assertEquals(403, $crawler->getStatusCode()); - } - - public function testAllowMethodAllowed() - { - $crawler = $this->call('POST', 'api/ping', [], [], [], [ - 'HTTP_ORIGIN' => 'localhost', - 'HTTP_ACCESS_CONTROL_REQUEST_METHOD' => 'POST', - ]); - $this->assertEquals(null, $crawler->headers->get('Access-Control-Allow-Methods')); - $this->assertEquals(200, $crawler->getStatusCode()); - - $this->assertEquals('PONG', $crawler->getContent()); - } - - public function testAllowMethodNotAllowed() - { - $crawler = $this->call('POST', 'api/ping', [], [], [], [ - 'HTTP_ORIGIN' => 'localhost', - 'HTTP_ACCESS_CONTROL_REQUEST_METHOD' => 'PUT', - ]); - $this->assertEquals(null, $crawler->headers->get('Access-Control-Allow-Methods')); - $this->assertEquals(200, $crawler->getStatusCode()); - } - - public function testAllowMethodsForWebNotAllowed() - { - $crawler = $this->call('POST', 'web/ping', [], [], [], [ - 'HTTP_ORIGIN' => 'localhost', - 'HTTP_ACCESS_CONTROL_REQUEST_METHOD' => 'POST', - ]); - $this->assertEquals(null, $crawler->headers->get('Access-Control-Allow-Methods')); - $this->assertEquals(200, $crawler->getStatusCode()); - } - - public function testAllowHeaderAllowed() - { - $crawler = $this->call('POST', 'api/ping', [], [], [], [ - 'HTTP_ORIGIN' => 'localhost', - 'HTTP_ACCESS_CONTROL_REQUEST_HEADERS' => 'x-custom-1, x-custom-2', - ]); - $this->assertEquals(null, $crawler->headers->get('Access-Control-Allow-Headers')); - $this->assertEquals(200, $crawler->getStatusCode()); - - $this->assertEquals('PONG', $crawler->getContent()); - } - - public function testAllowHeaderNotAllowed() - { - $crawler = $this->call('POST', 'api/ping', [], [], [], [ - 'HTTP_ORIGIN' => 'localhost', - 'HTTP_ACCESS_CONTROL_REQUEST_HEADERS' => 'x-custom-3', - ]); - $this->assertEquals(null, $crawler->headers->get('Access-Control-Allow-Headers')); - $this->assertEquals(200, $crawler->getStatusCode()); - } - - public function testError() - { - if ($this->checkVersion('5.3', '<')) { - $this->markTestSkipped('Catching exceptions is not possible on Laravel 5.1'); - } - - $crawler = $this->call('POST', 'api/error', [], [], [], [ - 'HTTP_ORIGIN' => 'localhost', - 'HTTP_ACCESS_CONTROL_REQUEST_METHOD' => 'POST', - ]); - - $this->assertEquals('localhost', $crawler->headers->get('Access-Control-Allow-Origin')); - $this->assertEquals(500, $crawler->getStatusCode()); - } - - public function testValidationException() - { - if ($this->checkVersion('5.3', '<')) { - $this->markTestSkipped('Catching exceptions is not possible on Laravel 5.1'); - } - - $crawler = $this->call('POST', 'api/validation', [], [], [], [ - 'HTTP_ORIGIN' => 'localhost', - 'HTTP_ACCESS_CONTROL_REQUEST_METHOD' => 'POST', - ]); - $this->assertEquals('localhost', $crawler->headers->get('Access-Control-Allow-Origin')); - $this->assertEquals(302, $crawler->getStatusCode()); - } -} diff --git a/vendor/barryvdh/laravel-cors/tests/PreflightTest.php b/vendor/barryvdh/laravel-cors/tests/PreflightTest.php deleted file mode 100644 index 143cb2d782..0000000000 --- a/vendor/barryvdh/laravel-cors/tests/PreflightTest.php +++ /dev/null @@ -1,115 +0,0 @@ -call('OPTIONS', 'api/ping', [], [], [], [ - 'HTTP_ORIGIN' => 'localhost', - 'HTTP_ACCESS_CONTROL_REQUEST_METHOD' => 'POST', - ]); - - $this->assertEquals('localhost', $crawler->headers->get('Access-Control-Allow-Origin')); - $this->assertEquals(200, $crawler->getStatusCode()); - } - - public function testAllowWildcardOriginAllowed() - { - config(['cors.allowedOrigins' => ['*.laravel.com']]); - - $crawler = $this->call('OPTIONS', 'api/ping', [], [], [], [ - 'HTTP_ORIGIN' => 'blog.laravel.com', - 'HTTP_ACCESS_CONTROL_REQUEST_METHOD' => 'POST', - ]); - $this->assertEquals('blog.laravel.com', $crawler->headers->get('Access-Control-Allow-Origin')); - $this->assertEquals(200, $crawler->getStatusCode()); - } - - public function testAllowOriginNotAllowed() - { - $crawler = $this->call('OPTIONS', 'api/ping', [], [], [], [ - 'HTTP_ORIGIN' => 'otherhost', - 'HTTP_ACCESS_CONTROL_REQUEST_METHOD' => 'POST', - ]); - - $this->assertEquals(null, $crawler->headers->get('Access-Control-Allow-Origin')); - $this->assertEquals(403, $crawler->getStatusCode()); - } - - public function testAllowNotFoundUsesConfig() - { - $crawler = $this->call('OPTIONS', 'api/pang', [], [], [], [ - 'HTTP_ORIGIN' => 'localhost', - 'HTTP_ACCESS_CONTROL_REQUEST_METHOD' => 'POST', - ]); - $this->assertEquals('GET, POST', $crawler->headers->get('Access-Control-Allow-Methods')); - $this->assertEquals(200, $crawler->getStatusCode()); - } - - public function testAllowMethodAllowed() - { - $crawler = $this->call('OPTIONS', 'api/ping', [], [], [], [ - 'HTTP_ORIGIN' => 'localhost', - 'HTTP_ACCESS_CONTROL_REQUEST_METHOD' => 'POST', - ]); - $this->assertEquals('GET, POST', $crawler->headers->get('Access-Control-Allow-Methods')); - $this->assertEquals(200, $crawler->getStatusCode()); - } - - public function testAllowMethodNotAllowed() - { - $crawler = $this->call('OPTIONS', 'api/ping', [], [], [], [ - 'HTTP_ORIGIN' => 'localhost', - 'HTTP_ACCESS_CONTROL_REQUEST_METHOD' => 'PUT', - ]); - $this->assertEquals(null, $crawler->headers->get('Access-Control-Allow-Methods')); - $this->assertEquals(405, $crawler->getStatusCode()); - } - - public function testAllowMethodsForWeb() - { - $crawler = $this->call('OPTIONS', 'web/ping', [], [], [], [ - 'HTTP_ORIGIN' => 'localhost', - 'HTTP_ACCESS_CONTROL_REQUEST_METHOD' => 'POST', - ]); - $this->assertEquals('GET, POST', $crawler->headers->get('Access-Control-Allow-Methods')); - $this->assertEquals(200, $crawler->getStatusCode()); - } - - public function testAllowHeaderAllowed() - { - $crawler = $this->call('OPTIONS', 'api/ping', [], [], [], [ - 'HTTP_ORIGIN' => 'localhost', - 'HTTP_ACCESS_CONTROL_REQUEST_METHOD' => 'POST', - 'HTTP_ACCESS_CONTROL_REQUEST_HEADERS' => 'X-Custom-1, X-Custom-2', - ]); - $this->assertEquals('x-custom-1, x-custom-2', $crawler->headers->get('Access-Control-Allow-Headers')); - $this->assertEquals(200, $crawler->getStatusCode()); - } - - public function testAllowAllHeaderAllowed() - { - config(['cors.allowedHeaders' => ['*']]); - - $crawler = $this->call('OPTIONS', 'api/ping', [], [], [], [ - 'HTTP_ORIGIN' => 'localhost', - 'HTTP_ACCESS_CONTROL_REQUEST_METHOD' => 'POST', - 'HTTP_ACCESS_CONTROL_REQUEST_HEADERS' => 'X-Custom-3', - ]); - $this->assertEquals('X-CUSTOM-3', $crawler->headers->get('Access-Control-Allow-Headers')); - $this->assertEquals(200, $crawler->getStatusCode()); - } - - public function testAllowHeaderNotAllowed() - { - $crawler = $this->call('OPTIONS', 'api/ping', [], [], [], [ - 'HTTP_ORIGIN' => 'localhost', - 'HTTP_ACCESS_CONTROL_REQUEST_METHOD' => 'POST', - 'HTTP_ACCESS_CONTROL_REQUEST_HEADERS' => 'x-custom-3', - ]); - $this->assertEquals(null, $crawler->headers->get('Access-Control-Allow-Headers')); - $this->assertEquals(403, $crawler->getStatusCode()); - } -} diff --git a/vendor/barryvdh/laravel-cors/tests/TestCase.php b/vendor/barryvdh/laravel-cors/tests/TestCase.php deleted file mode 100644 index deb8248901..0000000000 --- a/vendor/barryvdh/laravel-cors/tests/TestCase.php +++ /dev/null @@ -1,127 +0,0 @@ - false, - 'allowedOrigins' => ['localhost'], - 'allowedHeaders' => ['X-Custom-1', 'X-Custom-2'], - 'allowedMethods' => ['GET', 'POST'], - 'exposedHeaders' => [], - 'maxAge' => 0, - ]; - } - - protected function getPackageProviders($app) - { - return [\Barryvdh\Cors\ServiceProvider::class]; - } - - /** - * Define environment setup. - * - * @param Illuminate\Foundation\Application $app - * - * @return void - */ - protected function getEnvironmentSetUp($app) - { - $router = $app['router']; - $this->addWebRoutes($router); - $this->addApiRoutes($router); - } - - /** - * @param Router $router - */ - protected function addWebRoutes(Router $router) - { - $router->get('web/ping', [ - 'as' => 'web.ping', - 'uses' => function () { - return 'pong'; - } - ]); - - $router->post('web/ping', [ - 'uses' => function () { - return 'PONG'; - } - ]); - - $router->post('web/error', [ - 'uses' => function () { - abort(500); - } - ]); - - $router->post('web/validation', [ - 'uses' => function (\Illuminate\Http\Request $request) { - $this->validate($request, [ - 'name' => 'required', - ]); - - return 'ok'; - } - ]); - } - - /** - * @param Router $router - */ - protected function addApiRoutes($router) - { - $router->group(['middleware' => \Barryvdh\Cors\HandleCors::class], function () use ($router) { - - $router->get('api/ping', [ - 'as' => 'api.ping', - 'uses' => function () { - return 'pong'; - } - ]); - - $router->post('api/ping', [ - 'uses' => function () { - return 'PONG'; - } - ]); - - $router->put('api/ping', [ - 'uses' => function () { - return 'PONG'; - } - ]); - - $router->post('api/error', [ - 'uses' => function () { - abort(500); - } - ]); - - $router->post('api/validation', [ - 'uses' => function (\Illuminate\Http\Request $request) { - $this->validate($request, [ - 'name' => 'required', - ]); - - return 'ok'; - } - ]); - }); - } - - protected function checkVersion($version, $operator = ">=") - { - return version_compare($this->app->version(), $version, $operator); - } -} diff --git a/vendor/barryvdh/laravel-ide-helper/src/Alias.php b/vendor/barryvdh/laravel-ide-helper/src/Alias.php index 522ff61115..8f1c570506 100644 --- a/vendor/barryvdh/laravel-ide-helper/src/Alias.php +++ b/vendor/barryvdh/laravel-ide-helper/src/Alias.php @@ -10,6 +10,7 @@ namespace Barryvdh\LaravelIdeHelper; +use Closure; use ReflectionClass; use Barryvdh\Reflection\DocBlock; use Barryvdh\Reflection\DocBlock\Context; @@ -395,7 +396,7 @@ protected function getMacroFunction($macro_func) return new \ReflectionMethod($macro_func[0], $macro_func[1]); } - if (is_object($macro_func) && is_callable($macro_func)) { + if (is_object($macro_func) && is_callable($macro_func) && !$macro_func instanceof Closure) { return new \ReflectionMethod($macro_func, '__invoke'); } diff --git a/vendor/barryvdh/laravel-ide-helper/src/Console/MetaCommand.php b/vendor/barryvdh/laravel-ide-helper/src/Console/MetaCommand.php index fe77e387d0..68b3e7f254 100644 --- a/vendor/barryvdh/laravel-ide-helper/src/Console/MetaCommand.php +++ b/vendor/barryvdh/laravel-ide-helper/src/Console/MetaCommand.php @@ -135,7 +135,7 @@ protected function getAbstracts() protected function registerClassAutoloadExceptions() { spl_autoload_register(function ($class) { - throw new \Exception("Class '$class' not found."); + throw new \ReflectionException("Class '$class' not found."); }); } diff --git a/vendor/barryvdh/laravel-ide-helper/src/Console/ModelsCommand.php b/vendor/barryvdh/laravel-ide-helper/src/Console/ModelsCommand.php index 587fa294e1..162d2e49b5 100644 --- a/vendor/barryvdh/laravel-ide-helper/src/Console/ModelsCommand.php +++ b/vendor/barryvdh/laravel-ide-helper/src/Console/ModelsCommand.php @@ -446,14 +446,17 @@ protected function getPropertiesFromMethods($model) } } elseif (in_array($method, ['query', 'newQuery', 'newModelQuery'])) { $reflection = new \ReflectionClass($model); - $this->setMethod($method, '\Illuminate\Database\Eloquent\Builder|\\' . $reflection->getName()); + + $builder = get_class($model->newModelQuery()); + + $this->setMethod($method, "\\{$builder}|\\" . $reflection->getName()); } elseif (!method_exists('Illuminate\Database\Eloquent\Model', $method) && !Str::startsWith($method, 'get') ) { //Use reflection to inspect the code, based on Illuminate/Support/SerializableClosure.php $reflection = new \ReflectionMethod($model, $method); // php 7.x type or fallback to docblock - $type = (string) $reflection->getReturnType() ?: $this->getReturnTypeFromDocBlock($reflection); + $type = (string) $reflection->getReturnType() ?: (string)$this->getReturnTypeFromDocBlock($reflection); $file = new \SplFileObject($reflection->getFileName()); $file->seek($reflection->getStartLine() - 1); @@ -480,7 +483,7 @@ protected function getPropertiesFromMethods($model) 'morphedByMany' => '\Illuminate\Database\Eloquent\Relations\MorphToMany' ) as $relation => $impl) { $search = '$this->' . $relation . '('; - if (stripos($code, $search) || stripos($impl, $type) !== false) { + if (stripos($code, $search) || stripos($impl, (string)$type) !== false) { //Resolve the relation's model to a Relation object. $methodReflection = new \ReflectionMethod($model, $method); if ($methodReflection->getNumberOfParameters()) { diff --git a/vendor/chumper/datatable/.gitattributes b/vendor/chumper/datatable/.gitattributes deleted file mode 100644 index 412eeda78d..0000000000 --- a/vendor/chumper/datatable/.gitattributes +++ /dev/null @@ -1,22 +0,0 @@ -# Auto detect text files and perform LF normalization -* text=auto - -# Custom for Visual Studio -*.cs diff=csharp -*.sln merge=union -*.csproj merge=union -*.vbproj merge=union -*.fsproj merge=union -*.dbproj merge=union - -# Standard to msysgit -*.doc diff=astextplain -*.DOC diff=astextplain -*.docx diff=astextplain -*.DOCX diff=astextplain -*.dot diff=astextplain -*.DOT diff=astextplain -*.pdf diff=astextplain -*.PDF diff=astextplain -*.rtf diff=astextplain -*.RTF diff=astextplain diff --git a/vendor/chumper/datatable/.gitignore b/vendor/chumper/datatable/.gitignore deleted file mode 100644 index 343ad7744d..0000000000 --- a/vendor/chumper/datatable/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -/vendor -composer.phar -composer.lock -datatable.sublime-project -.DS_Store -.idea diff --git a/vendor/chumper/datatable/.travis.yml b/vendor/chumper/datatable/.travis.yml deleted file mode 100644 index 0a1c1cb2ee..0000000000 --- a/vendor/chumper/datatable/.travis.yml +++ /dev/null @@ -1,12 +0,0 @@ -language: php - -php: - - 5.3 - - 5.4 - - 5.5 - -before_script: - - curl -s http://getcomposer.org/installer | php - - php composer.phar install --dev - -script: phpunit \ No newline at end of file diff --git a/vendor/chumper/datatable/README.md b/vendor/chumper/datatable/README.md deleted file mode 100644 index 62a951ccde..0000000000 --- a/vendor/chumper/datatable/README.md +++ /dev/null @@ -1,614 +0,0 @@ -Datatable -========= - -This is a __Laravel 5 package__ for the server and client side of datatables at http://datatables.net/ - -![Image](https://raw.githubusercontent.com/Chumper/Datatable/master/datatable.jpg) - -##Known Issues - -* none i know of so far - -##TODO - -* fix incoming bugs -* code documentaion - -##Features - -This package supports: - -* Support for Collections and Query Builder -* Easy to add and order columns -* Includes a simple helper for the HTML side -* Use your own functions and presenters in your columns -* Search in your custom defined columns ( Collection only!!! ) -* Define your specific fields for searching and ordering -* Add custom javascript values for the table -* Tested! (Ok, maybe not fully, but I did my best :) ) - -## Please note! - -There are some differences between the collection part and the query part of this package. -The differences are: - -| Difference | Collection | Query | -| --- |:----------:| :----:| -|Speed | - | + | -Custom fields | + | + -Search in custom fields | + | - -Order by custom fields | + | - -Search outside the shown data (e.g.) database | - | + - -For a detailed explanation please see the video below. -http://www.youtube.com/watch?v=c9fao_5Jo3Y - -Please let me know any issues or features you want to have in the issues section. -I would be really thankful if you can provide a test that points to the issue. - -##Installation - -This package is available on http://packagist.org, just add it to your composer.json - - "chumper/datatable": "dev-develop" - -Alternatively, you can install it using the `composer` command: - - composer require chumper/datatable "dev-develop" - - -In Config/App.php: Add line Provider: - -```php - 'Chumper\Datatable\DatatableServiceProvider', -``` - -__If using Laravel 5.1:__ you will want to add: -```php - Chumper\Datatable\DatatableServiceProvider::class, -``` - -Add line Alias: -```php - //new - 'Datatable' => 'Chumper\Datatable\Facades\DatatableFacade', -``` - -You can then access it under the `Datatable` alias. - -##Basic Usage - -There are two ways you can use the plugin, within one route or within two routes: - -###Two routes - -* Create two routes: One to deliver the view to the user, the other for datatable data, eg: - -```php - Route::resource('users', 'UsersController'); - Route::get('api/users', array('as'=>'api.users', 'uses'=>'UsersController@getDatatable')); -``` - -* Your main route will deliver a view to the user. This view should include references to your local copy of [datatables](http://datatables.net/). In the example below, files were copied from the datatables/media directories and written to public/assets. Please note that the scripts must be located above the call to Datatable: - -```php - - - - - {!! Datatable::table() - ->addColumn('id','Name') // these are the column headings to be shown - ->setUrl(route('api.users')) // this is the route where data will be retrieved - ->render() !!} -``` - -* Create a controller function to return your data in a way that can be read by Datatables: - -```php - public function getDatatable() - { - return Datatable::collection(User::all(array('id','name'))) - ->showColumns('id', 'name') - ->searchColumns('name') - ->orderColumns('id','name') - ->make(); - } -``` - -You should now have a working datatable on your page. - -###One route - -In your route you should use the Datatable::shouldHandle method which will check whether the plugin should handle the request or not. - -```php - if(Datatable::shouldHandle()) - { - return Datatable::collection(User::all(array('id','name'))) - ->showColumns('id', 'name') - ->searchColumns('name') - ->orderColumns('id','name') - ->make(); - } -``` - -The plugin will then query the same url for information. The shouldHandle method just checks for an ajax request and if sEcho is set. - -##HTML Example - -```php - Datatable::table() - ->addColumn('id',Lang::get('user.lastname')) - ->setUrl(URL::to('auth/users/table')) - ->render(); -``` - -With seperate table and script: -```php - $table = Datatable::table() - ->addColumn('Email2','Email', "Test") - ->noScript(); - - // to render the table: - $table->render() - - // later in the view you can render the javascript: - $table->script(); -``` - -This will generate a HTML table with two columns (id, lastname -> your translation) and will set the URL for the ajax request. - -> Note: This package will **NOT** include the `datatable.js`, that is your work to do. -> The reason is that for example i use Basset and everybody wants to do it their way... - -If you want to provide your own template for the table just provide the path to the view in laravel style. - -```php - Datatable::table() - ->addColumn('id',Lang::get('user.lastname')) - ->setUrl(URL::to('auth/users/table')) - ->render('views.templates.datatable'); -``` -##Server Example - -```php - Datatable::collection(User::all()) - ->showColumns('id') - ->addColumn('name',function($model) - { - return $model->getPresenter()->yourProperty; - } - )->make(); -``` - -This will generate a server side datatable handler from the collection `User::all()`. -It will add the `id` column to the result and also a custom column called `name`. -Please note that we need to pass a function as a second parameter, it will **always** be called -with the object the collection holds. In this case it would be the `User` model. - -You could now also access all relationship, so it would be easy for a book model to show the author relationship. - -```php - Datatable::collection(User::all()) - ->showColumns('id') - ->addColumn('name',function($model) - { - return $model->author->name; - } - )->make(); -``` - -> Note: If you pass a collection of arrays to the `collection` method you will have an array in the function, not a model. - -The order of the columns is always defined by the user and will be the same order the user adds the columns to the Datatable. - -##Query or Collection? - -There is a difference between query() and collection(). -A collection will be compiled before any operation - like search or order - will be performed so that it can also include your custom fields. -This said the collection method is not as performing as the query method where the search and order will be tackled before we query the database. - -So if you have a lot of Entries (100k+) a collection will not perform well because we need to compile the whole amount of entries to provide accurate sets. -A query on the other side is not able to perform a search or orderBy correctly on your custom field functions. - -> TLTR: If you have no custom fields, then use query() it will be much faster -> If you have custom fields but don't want to provide search and/or order on the fields use query(). -> Collection is the choice if you have data from somewhere else, just wrap it into a collection and you are good to go. -> If you have custom fields and want to provide search and/or order on these, you need to use a collection. - -Please also note that there is a significant difference betweeen the search and order functionality if you use query compared to collections. -Please see the following video for more details. - -http://www.youtube.com/watch?v=c9fao_5Jo3Y - -##Available functions - -This package is separated into two smaller parts: - -1. Datatable::table() -2. Datatable::collection() -3. Datatable::query() - -The second and third one is for the server side, the first one is a helper to generate the needed table and javascript calls. - -###Collection & Query - -**collection($collection)** - -Will set the internal engine to the collection. -For further performance improvement you can limit the number of columns and rows, i.e.: - - $users = User::activeOnly()->get('id','name'); - Datatable::collection($users)->... - -**query($query)** - -This will set the internal engine to a Eloquent query... -E.g.: - - $users = DB::table('users'); - Datatable::query($users)->... - -The query engine is much faster than the collection engine but also lacks some functionality, -for further information look at the table above. - -**showColumns(...$columns)** - -This will add the named columns to the result. -> Note: You need to pass the name in the format you would access it on the model or array. -> example: in the db: `last_name`, on the model `lastname` -> showColumns('lastname') - -You can provide as many names as you like - -**searchColumns(..$fields)** - -Will enable the table to allow search only in the given columns. -Please note that a collection behaves different to a builder object. - -Note: If you want to search on number columns with the query engine, then you can also pass a search column like this - ``` - //mysql - ->searchColumns(array('id:char:255', 'first_name', 'last_name', 'address', 'email', 'age:char:255')) - - //postgree - ->searchColumns(array('id:text', 'first_name', 'last_name', 'address', 'email', 'age:text')) - ``` - - This will cast the columns int the given types when searching on this columns - -**orderColumns(..$fields)** - -Will enable the table to allow ordering only in the given columns. -Please note that a collection behaves different to a builder object. - -**addColumn($name, $function)** - -Will add a custom field to the result set, in the function you will get the whole model or array for that row -E.g.: -```php - Datatable::collection(User::all()) - ->addColumn('name',function($model) - { - return $model->author->name; - } - )->make(); -``` -You can also just add a predefined Column, like a DateColumn, a FunctionColumn, or a TextColumn -E.g.: - -```php - $column = new TextColumn('foo', 'bar'); // Will always return the text bar - //$column = new FunctionColumn('foo', function($model){return $model->bar}); // Will return the bar column - //$column = new DateColumn('foo', DateColumn::TIME); // Will return the foo date object as toTimeString() representation - //$column = new DateColumn('foo', DateColumn::CUSTOM, 'd.M.Y H:m:i'); // Will return the foo date object as custom representation - - Datatable::collection(User::all()) - ->addColumn($column) - ->make(); -``` - -You can also overwrite the results returned by the QueryMethod by using addColumn in combination with showColumns. -You must name the column exactly like the database column that you're displaying using showColumns in order for this to work. - -```php - $column = new FunctionColumn('foo', function ($row) { return strtolower($row->foo); } - Datatable::query(DB::table('table')->lists('foo')) - ->showColumns('foo') - ->addColumn($column) - ->orderColumns('foo') - ->searchColumns('foo') - ->make() -``` -This will allow you to have sortable and searchable columns using the QueryEngine while also allowing you to modify the return value of that database column entry. - -Eg: linking an user_id column to it's page listing -```php - $column = new FunctionColumn('user_id', function ($row) { return link_to('users/'.$row->user_id, $row->username) } - Datatable::query(DB::table('table')->lists('user_id', 'username')) - ->showColumns('user_id') - ->addColumn($column) - ->orderColumns('user_id') - ->searchColumns('user_id') -``` - - -Please look into the specific Columns for further information. - -**setAliasMapping()** - -Will advise the Datatable to return the data mapped with the column name. -So instead of -```javascript - { - "aaData":[ - [3,"name","2014-02-02 23:28:14"] - ], - "sEcho":9, - "iTotalRecords":2, - "iTotalDisplayRecords":1 - } -``` -you will get something like this as response -```javascript -{ - "aaData":[ - {"id":2,"name":"Datatable","created_at":"Sun, Feb 2, 2014 7:17 PM"} - ], - "sEcho":2, - "iTotalRecords":2, - "iTotalDisplayRecords":1 -} -``` - -**make()** - -This will handle the input data of the request and provides the result set. -> Without this command no response will be returned. - -**clearColumns()** - -This will reset all columns, mainly used for testing and debugging, not really useful for you. -> If you don't provide any column with `showColumn` or `addColumn` then no column will be shown. -> The columns in the query or collection do not have any influence which column will be shown. - -**getOrder()** - -This will return an array with the columns that will be shown, mainly used for testing and debugging, not really useful for you. - -**getColumn($name)** - -Will get a column by its name, mainly used for testing and debugging, not really useful for you. - -###Specific QueryEngine methods - -**setSearchWithAlias()** - -If you want to use an alias column on the query engine and you don't get the correct results back while searching then you should try this flag. -E.g.: -```php - Datatable::from(DB::table("users")->select('firstname', "users.email as email2")->join('partners','users.partner_id','=','partners.id')) - ->showColumns('firstname','email2') - ->setSearchWithAlias() - ->searchColumns("email2") -``` - -In SQL it is not allowed to have an alias in the where part (used for searching) and therefore the results will not counted correctly. - -With this flag you enable aliases in the search part (email2 in searchColumns). - -Please be aware that this flag will slow down your application, since we are getting the results back twice to count them manually. - - -**setSearchOperator($value = "LIKE")** - -With this method you can set the operator on searches like "ILIKE" on PostgreSQL for case insensitivity. - -**setExactWordSearch** - -Will advice the engines only to search for the exact given search string. - -###Specific CollectionEngine methods - -**setSearchStrip() & setOrderStrip()** - -If you use the search functionality then you can advice -all columns to strip any HTML and PHP tags before searching this column. - -This can be useful if you return a link to the model detail but still want to provide search ability in this column. - -**setCaseSensitive($boolean = 'false')** - -Set the search method to case sensitive or not, default is false - -###Table - -**noScript()** - -With setting this property the Table will not render the javascript part. - -You can render it manually with - -**script($view = null)** - -Will render the javascript if no view is given or the default one and will pass the class name, the options and the callbacks. - -Example: - -```php - $table = Datatable::table() - ->addColumn('Email2','Email', "Test") - ->noScript(); - - // to render the table: - $table->render() - - // later in the view you can render the javascript: - $table->script(); -``` - -**setUrl($url)** - -Will set the URL and options for fetching the content via ajax. - -**setOptions($name, $value) OR setOptions($array)** - -Will set a single option or an array of options for the jquery call. - -You can pass as paramater something like this ('MyOption', 'ValueMyOption') or an Array with parameters, but some values in DataTable is a JSON so how can i pass a JSON in values? Use another array, like that: -setOptions(array("MyOption"=> array('MyAnotherOption'=> 'MyAnotherValue', 'MyAnotherOption2'=> 'MyAnotherValue2'))); - -```js - -//GENERATE - -jQuery(.Myclass).DataTable({ - MyOption: { - MyAnotherOption: MyAnotherValue, - MyAnotherOption2: MyAnotherValue2, - } -}); -``` - -As a sugestion, take a look at this 2 files javascript.blade.php && template.blade.php in vendor/Chumper/datatable/src/views. You'll understand all the logic and see why it's important to pass the parameter like an array (json_encode and others stuffs). - -**setCallbacks($name, $value) OR setCallbacks($array)** - -Will set a single callback function or an array of callbacks for the jquery call. DataTables callback functions are described at https://datatables.net/usage/callbacks. For example, - -```php - ->setCallbacks( - 'fnServerParams', 'function ( aoData ) { - aoData.push( { "name": "more_data", "value": "my_value" } ); - }' - ) - -``` - -**addColumn($name)** - -Will add a column to the table, where the name will be rendered on the table head. -So you can provide the string that should be shown. - -if you want to use the alias mapping feature of the server side table then you need to add an array like this - -```php -Datatable::table() - ->addColumn(array( - 'id' => 'ID', - 'name' => 'Name', - 'created_at' => 'Erstellt' - )) - ->render(); -``` -Please note that passing an assosiative array to the addColumn function will automatically enable the alias function on the table - -**setAliasMapping(boolean)** - -Here you can explicitly set if the table should be aliased or not. - -**countColumns()** - -This will return the number of columns that will be rendered later. Mainly for testing and debugging. - -**getData()** - -Will return the data that will be rendered into the table as an array. - -**getOptions()** - -Get all options as an array. - -**render($view = template.blade)** - -Renders the table. You can customize this by passing a view name. -Please see the template inside the package for further information of how the data is passed to the view. - -**setData($data)** - -Expects an array of arrays and will render this data when the table is shown. - -**setCustomValues($name, $value) OR setCustomValues($array)** - -Will set a single custom value, or an array of custom values, which will be passed to the view. You can access these values in your custom view file. For example, if you wanted to click anywhere on a row to go to a record (where the record id is in the first column of the table): - -In the calling view: - -```php -{{ DataTable::table() - ->addColumn($columns) - ->setUrl($ajaxRouteToTableData) - ->setCustomValues('table-url', $pathToTableDataLinks) - ->render('my.datatable.template') }} -``` - -In the datatable view (eg, 'my.datatable.template'): - -```js - @if (isset($values['table-url'])) - $('.{{$class}}').hover(function() { - $(this).css('cursor', 'pointer'); - }); - $('.{{$class}}').on('click', 'tbody tr', function(e) { - $id = e.currentTarget.children[0].innerHTML; - $url = e.currentTarget.baseURI; - document.location.href = "{{ $values['table-url'] }}/" + $id; - }); - @endif -``` - - -**setOrder(array $order)** - -Defines the order that a datatable will be ordered by on first page load. -```php -{{ DataTable::table() - ->addColumn('ID', 'First Name', 'Last Name') - ->setUrl($ajaxRouteToTableData) - ->setOrder(array(2=>'asc', 1=>'asc')) // sort by last name then first name - ->render('my.datatable.template') }} -``` -##Extras -Some extras features, using the Datatables api. - -### - TableTools - -To use TableTools you will need to add some files in your project (https://datatables.net/extensions/tabletools/), if you want some help download the datatable's package and inside the extension folder go to /tabletools and study the examples. After, all the files include, don't forget to pass the parameters like this: - -```js -//In view: - -{{ - Datatable::table() - ->addColumn('your columns here separated by comma') - ->setUrl('your URL for server side') - ->setOptions(array( - 'dom' =>"T<'clear'>lfrtip", - 'tabletools' => array( - "aSwfPath" => "your/path/to/swf/copy_csv_cls_pdf.swf", - "aButtons" => array("copy", "pdf", "xls") - ) - )) -}} - -``` -If you want to get some properties like "which row did i click?", see the javascript.blade.php and the variable $values. - -##Contributors - -* [jgoux](https://github.com/jgoux) for helping with searching on number columns in the database -* [jijoel](https://github.com/jijoel) for helping with callback options and documentation - -##Changelog - -* 2.0.0: - * Seperated Query and Collection Engine - * Added single column search - * Code cleanup - -##Applications - -https://github.com/hillelcoren/invoice-ninja (by Hillel Coren) - -##License - -This package is licensed under the MIT License diff --git a/vendor/chumper/datatable/composer.json b/vendor/chumper/datatable/composer.json deleted file mode 100644 index 1d1bf8fb94..0000000000 --- a/vendor/chumper/datatable/composer.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "name": "chumper/datatable", - "description": "This is a laravel 4 package for the server and client side of datatablaes at http://datatables.net/", - "keywords" : ["laravel","datatables", "ajax", "jquery"], - "license": "MIT", - "homepage": "http://github.com/Chumper/datatable", - "authors": [ - { - "name": "Nils Plaschke", - "email": "github@nilsplaschke.de", - "homepage": "http://nilsplaschke.de", - "role": "Developer" - } - ], - "require": { - "php": ">=5.3.0", - "illuminate/support": "~5.0", - "illuminate/view": "~5.0", - "illuminate/config": "~5.0" - }, - "require-dev": { - "phpunit/phpunit": "3.7.*", - "mockery/mockery": "dev-master", - "orchestra/testbench": "3.1.*" - }, - "autoload": { - "psr-0": { - "Chumper\\Datatable": "src/" - } - }, - "minimum-stability": "dev", - "repositories": [ - { - "type": "vcs", - "url": "git://github.com/orchestral/phpseclib.git" - } - ] -} diff --git a/vendor/chumper/datatable/datatable.jpg b/vendor/chumper/datatable/datatable.jpg deleted file mode 100644 index 3bdbcf223339fcfa398b9ed9dda9e81847e63b61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46151 zcmeFZdt4J&yDvV7ilP{~D2mFcXi-q(1w;`uTB>*{M(PC>A+@O7YE!F7fRI5EP*78A zl@^tth^PoD0#Xq&a<@_ppb!NmBvAtdWQI$akjdmMeD{7Y`+YxqpYuEWbN={!Hhu=f z%4E&6p7lK6=elBiWo(BgZ`rtcBV=M?0(}ksK}H2cZQz9*h9GZm$O(d=agdpb9W(~K zG6B~&CNuu}I@DwVWcq1*6nJwP1b#zS;QGO2&8OERpE;cv0*(H34+JG$yZ&hobMSW; zxJG`y2G_{EpZ?!|AmqE_OSWy;Is3$lC9X@BErYg&e0vPMJNie{Pczzp*H3;N{nyto zf4cbTwW-^32>R)#zr6ld62Oc z@*LsC|JBdPB>z_vjC|Pm1hO1wGJe$erY3WtQI;mAmL|qZ2nO65^Ow0tmN@cbGRk!H zn6YN##+y$7Hxy2WMwytJjv8$`X3S{7c#|0LJ~Y~LjMbcF>&IIA959=E)Moj~i#NtO ze4bY}<*NpK-imL2I5pmUs_nGtcJn`TT(Ho|#dW3Is@3kEUu@XuwQ2K~9XogJ_T960 zU*N$*hl7GcLXRB}KM}!;jEXxQpOARwY|>Ace!hGq<(FSmZ)V)eyq$ID?!5>31%(fb zet%S4UQt<9UGwyhXN@mjHZ{v$y>3w`Rqx(^P{uUwOa3EcHpS>+~p_7*?fNSMqb%?hZSGpQ@;73 z!F=jG7sY&HWNDvP_P@8VQ~#e<_Sc2|ZCx$UL{k&6d8U>S0@3sW@lyIVk@)L7Lw5R=cOH|+uzZHf|g^;ogZIg&vN$oIw zT-0jMG(w`@iAJbhxW@>+H$YJvrhG6$t@aE1sNNoAVw4ejI$<}3y+cHr*6Hb?^up1) z;*|Jm6)iMER*U`8)(-X$Z#TQ;6YyO)X9ilkaA3S7b<%yrN6dJ)O5-bOP{G6FgAww} zE+a(MZ#N6y5Q%APk}-AvU&zLE(Oak9Ro>lXgucX$&_yHk^()f?jnCnLcV6}u@v`YtQD*eGLN?8*H$(q<%H4A@;&h(6Ck^gEKA2{sfF*G7L^qdDqQaF9o2(6ptn?*A)Sk{tV zb)R>S<7ik>L8%a8Zc~gq*m<5xSlb-Cc5YJtt3t%)*{}4AdKCY)8PTOXz=`bVDf%5% zoPo*s5Fi6=#r6?0_}r3!qwl){Y>ki*d+RifD@JIz_fYx-VX>Q3NG>g$6wEfjJ=)MwJ<72xF^6}#3x zsh@~Zjh|;|`T*8CU<${Kg6}5&Qbz-}Uj&&Dfw@c9B0h5ja-&7+MOp57KcJQSa2rlfhFGb$*=%29` znkg4PB!l4KR#Eq2zg6Hl>w8OEfgrm0UNu5sI)oSks^D-N{VkkROMA9q>Ow1xJyS?? zJP?_X{PEvZB=fI0@*nWU5(uRcx>B5yFxv?IJ~c;ZKt%m@pYA5QXy&iPEOjDrK?F93 zBi0Ts+9yiNyhMK4MI_Cr>F^kUb&CHRn90gLf`)dVzT=0%y05IFd0ayltFZ+ zcS#Ib(c@3k|KKW`@&|oyXx&=uo$04txCQo{{j0ENu^9lO>m1f~R56>zvRq6$cKV9Y z&=E+ow>Ls%lkOU!+O7nDcD3bZBLt_xER2}b6oYlGrDK9k8#=_S#2o}*)HlLLfGBUV zk82H~)5DP|8;sC0=ENZSiI)+&DrHLn3jx_!OTf~;l3uVUMrd?YQ7+Pf$Y8p7?n}zw zDG1=3nM`lC8|=IDo9$*dd;++JETA~c+d3wHqo!l`iNyyDrJDMeMyMqKus!{DJW#P_ zAosOhpQQeu!4(bRWznZnZE5R$7*LNpruD(%RkV!QO@Vg;0S)_#vcy_Ch8A7+{w!1Z z<7d?w>HN~aVqo8hNCI^N69bX_D?q(mu3uxqtI~M(- zKOFaOgw>5jIhx&qRv_^@!@q+~x;euAfRf};ue`rq!1+_Zvr#u{Z;26N7XTUq-h@jF z?RO%r{kP+GyG>oRj#6x?Elb$=DH9{!ByVw$R& zpiZix(L2|4NRVgR%T-tDrw&PLuhfU4Ab-wUsd5Q}~p`CFAywX(+CT6H8} zppy4+(hw0M{(906doUo?Z%POnWn_ld+5&ZV?lvS+Q3l>SV9T4&ev`Toc`vsYsj0!? zhHzWzVe(MF9u@VI^(IDWF&dtRsl`M%h1z+@oz{~o84!o;VV_0$8yu;}G)Fzay1vvY z@?c`O5dsK(=WHQRcZxm^VSO)#@*}N*837EGl{#LHcn?&`-cX84b*d@I$HPA{-n>EE znPjv&=@$R|6_)QswH^%^fG%!zeaSOIK&&@C1~Q>0Ztk6%@)RhYklmlOXud%{tl_Oi z8ifO3XEZP2(8O+BpwH5&vId9JO$}U@cUd)}dUZ?+=d6E^iu3bp+-!tq4bSaHjO%6;t)L0A1-gD(6r!DVSBJf577Wh4!WU(AEME;wHwwi3h;du zZMdn~HnOrcI{|zo(tyAhMLM9cjakK4U}~%p%Hq_HEIaZy9XcS-71WXfz;^Ql&LEbI zIsu+7p(Cz;FK94A+az)|l{7cy&)=^B#bOj5)g3oNgY-_5XxhKM?`D6y-Uoowei{xy zq+2rH@2xr-Gft0CF{m`xY3Q=q>zd1MFJQF{r^7ey!6MAAYSBIhs%h<9H+iegT;%OB zIth6%n+CWJ_;Y!C(!vs~t>Wk~EmG&z9Tz>)BbVq5gKf7cMIo~eX%q4#{B^#e<{_&I_!}G_-O%0l0JiB2@h~$0?Ehc}kottZm^0_Y#$ZUlXj!EF zPI=!TeUy%InsAq&EnFia2X8WUs>RnIRmp(Q(tP)Q-#10}J6T>N5K_&$(GTkMK#E&| z#VE7-=noN4HRe-L3x^^^MT zCht7~haMQx^afi>MbW!PKg<_U=p7@p1?dAEwE`mAfA?elqKLQK77KnEk&kR#md+?LLVgs&c_xm@mILAH zzB6iE?rp#<2cXxIVqaYkX&zT+gl@O-ZQ=A@a>xkT&HcG*x)x%LI7Pkp`^F zz);Sfn+bkA#_(CXR?8|uMUAnuf4kDSMmQ*&{`-i+(?yD!zRdn_DXBYC2M|HT)tehu z^%$JE4|IF3(lLNV&NQ2wHPdH`xEGNLV8XSRK1QBMXByCe?A{4`ZWy5*^hMEdBr8jf z2xWa4Ae55sK|AJm(lJPlD{t$2dUyv{E$pXZb?T|DVkb7;1@>dmd}M+w8BgeWc)KDNo~#-on{tU{jM*=o}uAicS)=oz^p z^`I*C-zZ^8KhlrIC3BPOE|`u)YHW^l5bzp#Su+A$=xanRqmI6cMz_pQtP>998=)Gk z6qW!~0tg*|sp&Dm8xd=oViZBI4RTrd(CJ6XLv0c7>Gj$S`s$XLL|6^PL}Q+|@BsKf zn$GB!fQU}*a&ha#Ji2Q}9DNy>Jxr`=P6l>Sc28d}&DUeOnqJ$wt3&io;I4?JEQ~Hb zwea>8)pCOfY~0}8LrL%wRM$%a`G6I>lvlU~Y#@d}FJxIjOyAHpoMF1uw{7ZQm=wuE z8|WG)1;joR6>+4)XO<%B^FWV7f$1`=8EOXm8RJYvsdPInw|@A8&U$Wyz?ww4h*Y6# zKsCdI9Nu0n8Zr1bMxo`jtq0t+$2!*vGKzG=J1xhZSnoCrAUfvK3qYG_i^%q;H|zCR zg#+kt6rhz3_t-sI_kHAVH26b9UciKn|6!pMelPjG_cj~^KFpR;Lv>RhRA_k~a@}CB zlp{dw(l}1esAFdYZC@JMn-n+XKnoCHNjhals7Xj;AO2yfysc>{qw@uE)4}bv8dy8E z9xVH$A(Y`Z^kXDvcx%rvji`21z27?Xlf_Qq7^(!0u=?&hY|s!TE?J~U9uI$%^i8;P zBT314(^^I+3-e>Hg6KbT`!ItV4O6=SqZg?SgBT1fA}uK$Ggb1Xk4m14Jf+sgbXZ<~ z@2v&y(+@%LpoaF+QR02I6Zh-dyms`GqW+p3&YwvC8z4aPPR$Ddy*<0AS12mY0-(Tp zX|ho^^cA~P8}JDH^?PT)=FHBh*IAU<0CPEz2e^?*X8yVLv0)}va z3VS;6tq}_BV}pVOYI_s2h84m)-%Oxv4xK5%El zasIoD7hI3YG*uBWp3C<&LY|3<;K}EjP+dv-Bu70AvK8rvMZld*5O&8n&?i$-dX!xc zrq~aHsze3@ME=u3(9j?0MLCP6fN)Hq00cR>a%k=X)3bC$ zLLJ|a#HE(0Vk6}CGg|(L;20*^!yw39u?qy5eX*-Vf1?@s+f*UNJ7t$zIU7*dlKwp! z$=t@=+#@-H3T;_NS8B8H+NopJKf1?6=4^rL{_dIouz-R)=@aGua_+D#N&oXPAR>Rq z?*AXKE1KH)Res2`#dnvqtnKCx@`r`Z0W-#5 zsk>8q`I+0>A0FmjzVz^(p;?`Y9s)RE0X&o^T)Gr~9R*P0TLhm0Oi=(A=oYhQ4!{sb zB8T)3l~ZK^jK{hC-4F(b49T;MP~i^@$^!MbeZ%Y-GD4qs)AVLtdv7^`-_GY0D3C{GMHe)1OM=>NQ{~-FGw^%tXZfc zd<1vQy#9Gay9n(F`w?vq8}5*_({dwp_XIkGFcJ3Srvt+7QUGEPVbTJmQhx`4>ZZfdD4=#~C40j%>q_8OU-OwgSK6(SH|r z0Q=!#yLT{YM;9}HM~aM4m%qp$t(Cs`*tgcPM=PdXihH^%Rn4h@w;@`LvII5?}NT=H!0y|}x;PxSiviuWHd=5p`8y9*wQ!}%#wUsY7t z6CM$kt$Q_yjjgiCkz`wlUn}DD(e&EK=u_tnYRn_Bb#QG-DHg3(Q>?-o((75@pxh1a z12+0iK=KPpoq1faH)TlPX$`#c^xdd*us2|R_s{6DX1_J(fG-EsujxXR>{{?^U<0vk z+XGbMKxaUa4W~pTrbmr9d;KQ^HfIFs;VmG`>z~*MzsQ96m-YLp7$UJOS{Q#K$}LG^ zOU=R~F1WHS(egw3P5f|NlC6{i%`rDZc>_7Ndbqr8X`>6%ZU)4rJNO8`e#LJ3&^r|#GY@0gAk=+7NWwa#f&&~x@3+&TCu_i z9pV599m!tEt2kq%aTJQneaQ?WtO926t=l=)JX__;JSEeX7f~r$K(MJ@C@v&D%hH(S zT_a>8PNJP+VhGQ2BQ(ub)Sa`nU0%gzQ0_7pz5m8$jW+=%2fm0OhcS45%^tc6Ab4)x zt>82d@&GYGA5p=1JslTP4jdbg#R@igofk)2BjZ56bRmb_Ac-Q~^ZRap4SJZ-xC_5IiV1+#+i#Ie0E@M{<;+DlU1GS`VI?NF`zT&x8A< zJ(+m)`sT61d!DLsOjMCxGF|W1Vz|1sQB1#9GSAvWIH$4{Oxg!Rn4f$M@yZ^Uc5>2b zz$B+)$ciVZg^M@=nIu4h>6wisK6)0pLi;^Q+zsUbOerc^uab`CA+)vkj7@}Z1xh{+ zm8YN%ZSS5@dMb{V~#yr_chJ(W40Uo@7i z*RKZrO{g!iK9UKl2Ur>QQvYC(*%#hGWS>n`H)A6baKU>CKpk+e|U{{yzKb-uX&q#4s_)_75}bL zpz)~10TRKp70ikSgL*(!U3-`)J^*gw``>N-#t2o>bLv%n_RGI zeB`R)aN>>Ngc!Ec#fJ=4uOl;*A&$wLQbT4J{G{BJ-Y*?T%YftId% zYeX{!Ltk#EcmG2v=9z*`6-!VJJCC z{4L$|jH^`=1}@ebWYkzSLueHVEJBE(uut6GW&6*kIAEMPkIxO z0?324QwMPA>A85(8NrgS-!>DY2=6PXNAbRgELWhp2gycm8_FE9nD~nx2rWigyZ?+@(G)> zI$6^i=!w*dX4kbrdz-`myl(4>ccU%2HI8F0Z0-_#5XX5$C`wJMht)lE+Syb0TCmF{ zD`cp`me}^o64w|veb73YU;?$gu`q|J-{GaJf0*=V73afO-@o|~yV8|mLQQJ?c>LbBu3cECGO zVOHhsT!UKCD|r>Fsfjr9C1HCCIS5;5qHY7bHdU;UpK}qD*U<6`^k-iE}SMQV6d^zbS!0-Yu1^86HA`#Q|uCw1jz{;!y+MHxmwYd`qUiNk$ z;U804IBacjNe;Y2UaDrTAkeDCL1k$S-0XD0O#yc@FU7xUfIErw&i^U==4RLa9$8PB z;_-wSXD^I&B$PGE+j&G7ZF83V>^K&W;=e7T=c47=&64H8sy$7>?K*;%U!%(j=E>v0 z^ptNnL~4HA3H_<-kQ4C!^-GYyg=kJy}X_xp%}&E5YT$#WX}_ z)0UVJHm974IAubH0x{{@*Or3&(U!mp!9*zS$gADc#0NWW-D^!Idg9CkOkvrKC~q2} zB)=*YzuX}Kq4CA+GKnJ?$))4;4q^6IL}CSV1}{)45RT1mN6*U(q?K>KYV{+J-II6H z^YEY^AC)1jI$#+-R%l36NhhM;gh}kc6Olx|17S@&iOkW;6nX=LyxXtvn+iXexH8Sm z@Dtw}RbfSY=vsQgOTK6LF|e>lARvjqlof`U(~f)>`k4{>aftFk`g~BuTorAV0n)tt zAhAN)DpmyC&FX5KN5H393wWjqDFrxoMl?e*lky?Hi&OX+Av5Z0au+VA9a&3(Nd`9K zbAF@}J;Ui6)ii)k7EYqJ;8?kQ3YlM?Dx-YTCKJ2)I|8b3t}0wzb!U*%gT%phtV!~a zVNPO+XJ!lK(@2>ZL`wD~jVV2E__k2l8{g(ZUdM;Pvwrllp9OX-gSNuPtARj{1GuFC zyD!;nNJHAw+>!3Lkui*lPV6vhwx^ReC2T9?iHH?z23<`)egw&5v zpQY9kUjBG&E<_Uc8}d_PJuSvLn_NsTc01lUda)2Ld}+AWy_5@lD&WdNW6q%AP0P z(^y#gHR07nVwg7FJQRc%(2)L4&+?-m|{YPMXbY6(6&P|)p#Dd9* zB%CfM<)0?eKCMPRjH8sQtyUl?797I3?V z+U1FDGs(LurVt+M;f#x`;nx*qn3cz70(s)j0BAZ54eLZ(?Yy)|a$((ZUNjJyvs1t4 zyOvFJa7d+E2<{VR%i}7TK{1qoV|ET@Exu)-NF7H{Ie50K zI6?H9gXalcHF9e#sFdrE%c_L7VX&o#0|-i;m5EhMG86eA=J{58mP@ShoautGbYt60 zAn@L93TZqVa-QKyjJ>P>l1x;(opp8Qke>lRwP$_%h!RcnKyPXgVpY>%saX}A-*y&f zR$_!NnOr5uZ+S44qNFz@ibDq9CKi*LU(esH;FxI;YYE&Lu#BkDMo@DkRxbhD{TP#Z zPc(2V=M@O6513ke9ZS*W1xEE#hvu z0=4AjD`l}PTVCxG`^DsqcEcLLkXBBs-R?XE+#@G{3d4v6P1G6ywM=TRJdC;ZWkT7$MX$%>ET9Lmko>0BZ_5suF!B+Jc!Gw z&7fBT(3JF5NiOG<+}>66N>s&pa2k8iOMwXA!U!FNlQ5G4_?%!Kp)TW+#c9i%J%FB# z<7&l#u5Rz>N_q}mPResTVf-TRaV2L4P{PmAaz_z^P>RWWn8F4!fM%v12JTS3kCiRv zaa3;Q=Z|dxxydA#-qF09YH#xV2y6j`oEv5*)~*z`Go}F`l@s#_xmGLA;2kF;=#3b; zMF)C8lKAt1LngOCLWGvo=M9o6Z#X>DJ%$t`beJ1=|R4{ z9xRQnfQh+eSUYEG2R#=AS3Br0z;q>tfM1#!le5l#i>PluJpp~ypkx?!Vb=4#o{l>!dV0r=J zk0rR~{PAvsl3`h$#?k7h_JaWOCp9oc)xybWR}OjIe<&I7e8>m|iS({$E0EjWvTnx! zIyyY@sT&86eJqaF`?(ZlKdgCva4IitZgFY8yh87=u=Qb)?#=Lnq!lzOed#0Wrv(}P zVrY2j&5?Mte-OSteWd!<1^O-)WFTtF;HBOO%9+E$=dtDsq&o1PkFMb_pGqI~mq`T2 zgGP!Pcc>2Nzhjb7_vJ^QuWl(BdY6lOTpNBjECZfxFLg<32D*`e=`y&a>bp3DT)K;n zA5SH6wve`3;4u6Y33N|Cg#y9J?Ms{uDUWfv73<#Km8HIV1E}|iTz?6ve6zYCdXegC zmccv+t(Nuov##RYH!`IAGh{$^Q?}!SE)P`gO@#fa@A=F{4St%m-H|dZ?ea~*EKq>h zrS{fFf&>RhX04)7LwJAkp$=gt<3Zh`OLd_1Ibeti7dtfM8-$tYt0fgWMrUJb_RvEK zdKpxd{IOwO9WVDh$do(NWhdaL=(eAqyu6vT00Nikie1(&yMOT8x1ZyEAeW5ZrFRvN z?bkb0xi888xO_!hsTn=>CR%?{*{j#Lv+3`$FW!uG?(|dYqr^v%emG;{DdHH7@MQ z-QTpH_;vc$%g{_!s>}AVhkyQTk9gjrg5UE}jgUVvDO($s>n+k^N#Qv`uMVmTLmDvum$^%IkumhjgTa1EA^BvBs2fj`#go}KzDF05M0JI@(v zl%fjI{4($S5_6yvN&M-Dl)euxXEt?fT+0&;PQ=rWfnb4n1oWLLoOJe>na|GS-{~_ydtweja`0BCxf*sOR zj;hghI|I`}`r6414AB%6@8<6So$I}is16WI9nC@Obp-HXCe>6Sbbwy;T-d#TtO(Cc z>}<>$;!~o5DuXx`t$&b3kLjd2qT?|QE*F0hg{fumwziDUL9I9r3F_5-CIQwfk5eHU z4#^oOnHdK9(1Ze~7(@|9`M~%fGhYW2%cw^xN+~%Mk`>rx3c^WGKnnmaEX)WoIPCXwS9)!+l!_l@ z>&-)vXV|N)LoDA*Q`90lS<5B|L65uA8DxRWhO@LA^D?`7a7-IaURCtW z*l(w3NZ@-Z6HE$kx@QM6wO2tN^r)aw{y?6D9G04swca>(fr*8|W66jrZ0twYjIPw& z$64ehA0i?9W``V)MJs#P<296T0HE*mW8j4jI>9|+5cX9aSO<^s;oJvqloz|@p-lTG z&k*NZiH!XySiGOV8c0Q6F8N$m)wYOpT40GsXgS*7LEo?Pk;mw?xuZp7mK!gkoc?UR zGKX97@lWdy;xQy}P)2LX_k@|stcQcIlzl~_3h7J`yqc1A#02F@;=8-bYzt)13&G@2 z>=j7Ym%xUz?TEDzI-+Tt5BDt)f+(btpHTwRG?NM@9INFm44@f7?Y*&P ziaq3cWsg??saL*T9S)y^L}r~)8!rMG4<+2r6yCoGXj9uybzHQndJ{y2-Ygc{@gg?i zS!ctqgXmM5Aea|&#dks&SA~uB<9)0t512jgP~l?7&E(Z~ZbBNX?NLijWq=+2?4VU{ zZQTCS|J1{p61@>*VI&~_IpDoUx67_H1AWQ?9Qy6{b?VNj^ESR6Uga?PnOlz=Ay;so zFq1^%?^APBGvF3P$*e>Y(k$?|4%4gJZB*PJ`bxxEU||L4AM8%?Ih)T!xTiC zqsWYiZL6n4)X+_d4itv0)zv>z%gA4ez;>(#c`eu8#?dm^rV}Isnpq|qxlJ#CkoXpX z7`O)qL+lqe6$q1%@$__F;(mOU%oHZ~a4b;80z7Z$3Gc`6L9&|eh8IwI6L2Q@J6O|S3E^22^TvC+53#;gAH)&9O!XKl`-2^b4ek{)E#ly+(0=Pp@{(7CYbIoo3q(|dh2y= z?&@?#U9oc~+7hAtlFZgS@{-F^*+Nk{Yd&67#e_(%5-sN@$tMkdA)}}BeaOiBvB!nh z91V+=8C zqI?H{upP<8@TswL`aq=ZWvD9waimnHQ^E15@Vk7_C>*ncE>9KqiM3V+;`ccEI%sLr zfR;6GTMSR_iaT+j$w1tiPSG6eaCagt?jxQ8BMoA7Gdhn`52(k75E6ilJ$flOEu zuBx2?5=sFN@7@Xq3MN?OrMKmO&$4Jn^Cn&Z1Sg8DC3duyWAQ9Uf2XSG6=y2iUMR{J z#>ZbcuZUszkVFj7&=ceorTn#DRWohTwCG#bc)B&ps|=mNpGlm^QW_kp2^1KLBL7LO&VamDs~1Qp(ZE6iQ^PkQx*y zg1_PC0Vad*mRt>wp=XmwnZy#W&>*us*csGbG7|?ms>FiR#FG3amlPj-ad{HoTX~}X zN6&E_X4Q{B0H~#G9JJGkpdM5Gdb;T$W|dMF;AjA8@b)W`6(pN*R5T5pk~nGHdrzaG zShsjgM+*{P$ej`_H|MWO=l#jM^m(Jp0U&pbinJM^%LY+y0T9ZXG8RiQUtp?Dq|Gxy zYA@7qZ%`Zu+IR(%1TRJAg^%S4@&~q0gmJ~{G6VYwS|ErcRvMw|fXQ?VYbjmTR46`q z1V{B2=);u{K??8bgy3&|oqUnxm;ZI@)V2UvXgjgtlo1+QcvA-QciWiB9EQY{2Hk=W zz(W|x?n5AxHAw>Vx8uEM_<_n5nO()bS|sstDE8X!vpA)2vgYey@*rF-aeV=L8bUEG zkc2n4lXnK24yS?|=#(|ueI&@Wd1__kLj4y0`s62IQvkpsr{GaoFoA1oib*nF@63Cw zT1bfE_^v9D|K(dMIhLR0<6A%X=J?~+qK0`#u2#4Y2y85~&W)+O&;JH&^EDbU!(ymM ztY@+vh4gg6b7V3SgpB1cG>9b5Wb#){9vr;Fi(qyafT~rzjbt*Ya7@v=2+trB=MeUf zb3!rvGB2?bwJO;>d)X-38h>(_Z4TNj3$~jLh7&>bguVJzgNGi9m0#pkxPRRX;}IDL{{8B=(@s1lhr z1GXbgm5bcmKi-H0c$@`twG%_rO!2Wf2B7}d*La@g?$VQj>15m&^=0kkasE>LcPV>Z zn)Ata4WC9jsthN=H+`exJ^w$9EE@?Y(g&CctES0WifYKGAH+U7*cA_|HzUpg_4H>){73VWT+-*;@&(_3Kdv3EQS9{F$v5|e)V6)xifAcaM zDgt)zA^HqqEj2=~-%+1~HXmm_OE&Q92f7!u!~v&9LthWm-3Mg)QN3h@yqf7u3mue8 zP`p+kl^a6oD<$H$>OX!5cWx;JM}ICYDiZa#(*7|9><*%yLY?pePe>y#1)N%ZLZ(&L zABfxiJSXhPQ9Y{*?MU?9^{olmi({+j#Fm++-GVI8K(y*;c#kT?OgzPLIX~#yBOa&FNh!CFR@4XLPFkE~Z^aDvPw%!N8BbiT3$~zWxD>wkI zFGyZfx&svWw?6h?v-L&JcU*Dq*AGwa-Dx@!@SWLA?E=PJnht7htWbm+TJSH%oQHP+ zLz{<|Ey6nIi+(esKlAF=0NZaTB%^I9t6KV}y?O{$9uz#sDB_Ok2&4XI-v8mlf1f-^ zK>duNETZQ)621nQ1uWVb-5t>B`X=L_hr~Ug+njbrl~(8!w4uKPA%&>`w$?sF{%M4M zdFTIdTE~xQ`%AV}Frjlpi>97rYRl-Sg?gl04WVs}anzK4_$9GHyQznI zjlI|O2r$EUa&ag`yP!&&wb8Wj5-?zuKQtja3Rr@Xp+EaDMR5rN1l0iO>emgbSS2#8 zFSB@I=Ltr~z=!KGO(I&d|sQ_)!S$kaid7a2uA- z)E^NJ_^&a{kOMz~+-X(&K?jaTz37OfF}kGQjHs}s>|(^zfTQqT&L~*itsY@e3w4h{ zp4JES8KH1}I4MB&MQeRQa#p63M$xr%lMVI^dJ8xljRXt^z=IKRB7MCILT8}F_}()h zfjd+nqP!|bo}V>BZpr3GPV1!#9FQG!{~ zFX6EML*Qh5P-mkCBhkSQQxX(KM`i$$(3FlUStIgxS5AxvVhGL`y#v`6K8VgnhH0~+ zP`c)ulp$18LXYfeVrR?!eYNyOy*M94rht4u+`&v<3h3kz<3W7rA$6o@d=iyoO>2*V z6L(=QXr&_ybeLtR8ZcsJA%_+W8ibMgk*G#EjCj07(+WL6EO?_w!HeBSJs7LE0UDyj1_%;uXei2sOADA{BL$%Ss zX-Pxb)pu%_9DDD55eSQ@zcCiMz#!up0bl{|M-~vyp`&+VU{B6^U~A|Z(IZ-Myy+( zG(dtY9oy#he{F=$y#wzwx`Qnk(OPXDd8xx2J(%b3X(RY@$9}X%2F@8jRSMmJs(cAf z9vhh5BBBeORA8b5A=&6G!^!WE_G=ulKb73rArO@1(2E1eI2C$E;)s@SKGH5H*U^6% z^4b{*`rZAUEI4EsxGk50^E9BskJ9ExjL?F!Ad-#+Z9S`y zP|R=`KC^4ctTzV;my`8h&ZH_xx{w%2eK?j2oQPh^N~(Q>Gf(nYC>eIV)@tBr_RLox zX1q1!Q7bc)$P`|FRe*!xT1j{Y8C?M~rCQ;U$ZU;dwk$ll)|9Iu@(zstG* z?UAfUX$yWar9AJ5F<*MTCkVc_d=CQfGFOb-JbIKlT>}?v9=-Ix%eq23s zhZkifq|JZa`w}g41>5$Z;rH_|1vN;)`h!2-`eED~M&e%Ig^RY?D3UhMFiHGs9c%PW z38=+yVUkXpr^C26+KQil_6W|C_DtTWHh=mE=;X1XU;WK5+@HSb>4D4OPMCD^sYcpU zfM@>9!FOIc3}TE^VYK|*Q`+y2;Q|_b>W?|+4_W>OPx>MEo8u`V z6_MYH&)*;aiB=N*L~2kLW$mk_SIwI_!l=#fmVLE~Joa*_lh^hq7j6O-p9DB z#ntDQKM-x)J!^eBBR1QR!$Jg2Mrg+Uk^^@;IO8ZYg~35l6pMy2Uc*|H=&fGsS#x4C zuTdXBrho|iESao`u~sZ8!c!{U$L6*Bv@?@_bIf}KC=^$!; zprU?aQ&vEiepwDu?>n?KG!vAdj8Fl4bbC99;vcp5xep8Xff9hoPEgI7NTgJHZ>?TV z?I7zEIcAlh%ZW9G3MJU(Ohza@7RW`ol6?*xSHi|sl`Km_doNrBk;0ndZ=Yims2K{W z4H*U!I#zsFTvoZV1!*~i?;+wVc$c4eWVEMHHi3$v8cvJnF48hxPR%?N6QtC}wf|n? zpx?kdR*l#_zl*P_vf@QlMTn*$LF91;LxWBzS*v{5FjyC%I9voLd4%#oIB(z5UsX@K zt1Fw^>@N){CBEb#J?kysk*GOS$eu`rlaG;#QtnQIb7qmiM1$b>#FFWxXC=!;_6>2k z=q?$!n|qprOCt7%4Gq(e?BkW}3#_@gIFWJY_JbFcbC_ZQe}zJBVfb5ya;9$*+RWq7 z)wUps$O#Z%2XHiv%vQ*{%k&$l&+(17k29x{GupkXI8(_r`}8X>qlQaLrWu7a4_=3N zx^H|WVrV?|5u42H=Q(&xRLwTnDn)~7V79z?0PME1>^~)o_-h(jOg@uL#>JJsQSm8> zk_Dt~HOg?UJ#VG<&Xe`HfFyQ^dzxZFO9`ycxe7nYb|$`0D*LsyPqcs=UY6 z>R0%`463KNxJbL(P*jKt?Z@Nwcuu^bw~Bkxj?=Brp;i&Taf313C#W@+=fbq+%}}~g zi@4)Ne`nhI_a9@Tp=$2;w7*q z{rt#32zV}ao0L?lL?jatl`+%CWl{C%*W;NCA-_4Oi%>_zj(Ncuf9ozk-h1DWD@AU zw?=@we+D!6s^q?sR}_OfZcDy4xDk9e(3z={<>Y1kPLQe*SBfDLDc>i5g1$bd5sXFS z_dV1S)5)*d@g;k6M4%0F$rZ3x-*Pl+zu-@daf@_l$6nKGfEvH%!B5xW8McB(JFhb(aJxmA(pM|4 zL|=nqt&o~yKZaNmub34`Tf&x%B>M#fhuS8AML?IqS%XVJTqBt#XxTbys|rn&EF{9k zWkORq?=&e=aDbmXisxL;DTs)t_TG6#Z6M2(Qqr@46VE9)Aq0ZWND#~sNRcU$8E9oz zCC8R>7l6Wl*n8Kg zCeF5D6pD(18aaugFjZ6(#IzNpV$4WA;Gu{X5k(ws7_IcL(?H_xuz1H6Qhb|3d=Dx4< z`SK-bs=gL^4~-E|=GS-pQB2}N%`)dmzDQkG!+rsEjg5kkT>1d|Ud2XoY?tIYm)#;y ziDyxv%;b-t_F#8#Mg`2#AQbd$H^)KVD6BGIm_1dn2P7qjo$q&gIIhiFcfj-wGn*bu zSrxu3k4(mL_o8;gyf%le6sb`-Q^k;U50ZqSIB7gv`)9bf|`2sQrQ{ z^25M1;Y&i?I|%t$IoFapcT2F0x~lCz%^eTygQ(RcDozlO=kchEa?MB@qz2@*<#+Gr zb|qS$5}-M;$y=#CxgIA=P!V@30b+}tu`h}c_eX`3Ne;|76A}GM6KC?+_- zd!#Cs9~X?)#s(d&D$oF#l=Z4^3W8c?)2V`0Es{qPLhO3D1|!Ni(Q1{m*p9!8o~Oab zz3b~3R6Bsqbl?{XHdy{jPXYxmqWvkYam8Mql}|c;(xKAhv~XTmq^+Bs=?cx(;2C%u zW?j0fk;4NEUDOfYwN6TZ)KC#X4GzzM}_ilbIvf=vvC7mOFz|6aBg~#L^!zH(zmT10M=eJu(<~fhC9xzekf17UM*Z zZKS=miwG=jD2cbC0aG6UdO8f~e@?{`1dDV4g}Z?) zVffUxX0YnH7s&nRjdS?t1E5g=Pjg}S?Jx#zDXYO;_sD!n>4`ansuuvWeDm$5Ptg}# zOP4y_xR9T$wdGq^yC6TP`^WJGbWj*kk|?Waq>34bK(2>{+ic?^db#OJ>C%I`*oRaq zS+Idj$?VH8E~c6_PxEtF@6p}_a|vqB%hzWTitwi3N0)ia36E2PWdd9ED+dj?SlvmC z$nD6G+B0oz(NEk3yLpa?qd`&`u}d)UVq;T7MKSj0uKJ}5oHZt?I@s|L zZ#4czur+N@I*WYkS>Vf05hO(s#z*Cu)zTBt-gx{56+TjhyvKFxaXEY1fTwW4_!}F2 zOyI4VkaUQ@uFB0V&K}ITuv*kf3a!!-;(G@T4~&nh;Fm9jinaxr9nxvkl4|JI6|1*N zr_q6=q&7;+8qb#)t!iZmDM_ajIWe;uosAQNtil>Ni;JKK&Q~Lb*2Ajyc|>_xGW0G$ z^Dn!m-Glh;81jJ-T+7n1l!|#B!RcUK_Du!6ZQx-pi+mKh9gdYn0TT77R1s!77qK5_i3VvWUGn3*Gc&*Tj3dy0cIxk?teh1cMe!-7G zA+ox6uSXtrZj;C@Zu8*>`Mr{4-l#s=q;RTy71?DwTL? zbXW=eQ^AwGhnzkluU4F@tU%S`RAw?ENk`ST4XE0O5T*I?^8}kLNoBRPO;PtPbgbAk zl=io=*OMOUvRT4re5%lz>eP8l)>2#Z(MOo54VbDRoLWg*2~#_c8v|n6RH;L(lfv=j zdwh|GmrAc83N-mCvN=omepT61?D-o4hoWl~Z3|aZ&p=oT5Ths4ARNa$rV7Zi8f1ci zN1pGP6@tvjc^V>$o${$AhflIRO5!&rw|*#%7X54Jo(ZV;v0}1 zxm7|`neat}Z$@l2GZnS3*hc#EY*yZ)Qg_5H{k9xCqZ&0N&L~Hccb>0p|ByNW(nZ90 zi{-qDLU+N(6+{(P@JKf2d|<1wd9G<41wdM+yTPd4Mlw}rP z{-&f`Ewx`^Nu0f}m7XzV_Ua3%2cf1s;X*1*gH(ynKuKft6CZjuf%m@Hah++%UWmA$ z>LA(;W^3jNHkd967k9a^P76Mjuf&}2>Xn52 z#&@W}rV64G$Vn8smSFCaJ=F|C9nIlC2vIh#3AjZWR}$H!9c+8SjK+wxOr|nZ{bROM z*q6sPjV`iXX8NACR7=M2*^kc0azAL5Co>+;1^Z-V*y+-s1;8g@v)yd>Y!yTmP}16d zkPe2ffQpsUck-Hbz>wpqXmig~&P76;98%Rjk!a$Fqd7Z`Zs<{v`nTZO z`*E;SGwO|Vm^#tA7EXc&2Xm<8;)8setE`BHvMSmWrzG+5SPJGKo89A*pB#_5I}sc~MX6sM+`hX-OwW`MKRu)8lW{2mx2=NR z65?Abq?YUTfZbc#agK;p=T{bjgJdW0l#KCR>J>_bk?1ElQAwqAsO-Ar+nan;PJ2F! z6^cYd@&sQ5{g=S|Kh8Z}JV7LUUlcH_@aWF0GG-h8qyR}rD5q|f!;5~cQR5cO=B32*p{i?Gko38!={c*O-DM?3v#uVi= zpy*?qneptC(H*J`ALNu_3U%NV83;1fL2Sb>+eVHg3!>qdoYtsIdA5mhy^!;kGas3< zuxOA%?fWndnhxbfQNa&LNk%F$=ERq!tlrB}Tim?JL+7rFZKpj{*nPR$qXuNmC;ExL+IB6tDRL84i$tctMaDdovR zq+9aB*?<52Sarl<#zDbyWrsInKMOv`Zr_goDB*x+62})Px9mwyjFm@aK2#WxtF7gb z5n%l3y_5o~2@*xs*|Q1gzRTQ9Ie`_=Ji*!`r!~_7`9*mkxRo`E(O6Y?%lcFeYdn=) z+h$!;7`xofoe+!M$rXDvij=lR$?t>g-yAo2A%2Z{k|?Pug;K@lN`Hu@#yK(#s_`-; zg3qo_jIL!(=SQoVWQ`F$BQi!Y&a5iaY?%#ZrOrR*s~E-SEkhCJI{p=?dCV-P?lSf@B$5vmy` z!_Msf=zZ%JX48k;m@fSk7=af&C=YJ#4$*I@MSk3ILMR#NQ8~frO~mj!G?HB&9n8LL z6q^h5R4EqAjo<(A{vdc&9!vyg$8aTUv({jTEz=nxrU;;hMsk!RKPLvqLHh}BQ2%T| z|Itf*`{Dk+KOnrW|I_0A_h1|y_OKVGZRYC@XD^_a%##2InaGEz;tlo8o*6N1YK8n% zv&x$G9NL=6Km<>DXQY3bqo6s#<2(o|SD``zMggljFMyrD5PBb_`T8D{=SaUy(XWHp zyj(XeZfbDX>}W$Ay0ue9h>`jev=%%#DdhA@~rR&`d|q2mZ#Uj&pL;1{ArQ& z7W)wb`KGLVm>?-2J70n!ywue7-ngGmADL9^M?b_A4e-0BxIDK_AHCfJfm0qAmjr{! zA3E7C>88STSZ_GWe0OAnUi530)-+Q|GgzL*j;{7k%d*`E@Ml;Y1QPCttz^Y z*SF3rOF?^i4cL&<_4A083_jw4Gg@cc{%r` z)T(%u-T-CZPK+0{PxK+gnQnY=ScA}B<`&TUHjD01*uW({Mc&sGE>U z54YmPb#rSCyUXh9v}&dj5_j3zRhGoAu0V@|I%AP8 zLu794(}y=m-D>mc% z|Fj6-Z*2&J%$%ra`>paZmmqPM1R}S?yj$Ul6t*vPheLd5w>RA##|dE0#iMUy{+kds zd+|JUYv3CVK;r}?@av8OeVYUPYZ3& zSya+(XbsbiLShsz6V71In>7+xL-6WA?WC?n*x<_=H!N7s+6#L+x?xpAE+nYWL~eVc z!-nvo{jyW}gP+O*H~wj{ALl9I7(=&EDsYD4GFvC769G$&H?g3jWM^r>=7_FasmWu-MzCe?FK8p&v!zlP3yX-vez$CwiV5Ie%Knn&Gf3L8ioYOFH$5p;O~0 zEZPFD;isgvX(?7?tmR4RU|dnSk*RFn33VUs?@LUMFg)&PD2=`4VAtkaecd`Q2f(xO zG`Akq0#8Zn zXKO`(*vR@XC~6rCXIVX{Ne)b{H!x0#tv$>SLU?i~ot5h+nm@=qsBsOX{aA9 zqpuI$sCW+Y^-+j;NID2#8}S8_iQ39&N803cHE!l3JeZOo!XJhVTQUQR2hoH@ci_A; z`axVnYMk-0$nxutGk=TpX%^GKqt6O*OdoC&G26fFmDKR*2ush=Y0oh~YE$rn}^8{hyip@a%=}xfmo=9nfj*+P{;;3L|Wt>^ab2fn(yXz$CpZhCC=WuEVCWCmJJ59F9GpZqM9bHDTJ zmoD>WExKFhb$Adg${Bm-TA7Y2Xjf;*RC@JSM;faz>?$%ZB3p({QzIQ>4Nv?l3y=~|G=uSw8&AEmMB)|*WoGU z{q$^PyzB!3O2pN&MUk_a-&*5?snr$ZNUQ3sxO9$t5wHtCJ-CSz@DmnGVPVa~tllSw z*Eaj6vr3XOLz;V~JG0wRB2YT~%5(|FJ-H#&Yz1v+geYj;OH~TbqNM*tr*0_`)`w~p zV+Fhxncd@#HMlxOuuvN;0!QsUd9<>97NJNL+Q!J{l1~eXUsrvLIZ)x4)8it_s%l}q z$4S|orTFP(=+$yBB2$+NaaJ}y7e0dP<5)DlA20$=xM}|Y78@rzfH3@NSzV=2}s0~v%jG7G!h4Xkuud= z=+4(_JkHX=8pRpZt-?tYH<4-Q756_nid*xov{JEPMu#h+R@N$BJkTZZ(%UVA$8}}T z^NJO{TC8 zF{>>}8bQWo48QWK%64tM^}z=T8N6*?>ORMbbW!3LUqsy{gAL|kHqXH-Hl+8oe0Gd8 zP0j0DZuFtQZe^DsCwL`ckNVHJycJ(tP;fIwV#|2bDESuuX;1H=q8kO>TpK054vHC8 z?Y#2E*Q>2&k^R1U^rj#Rjeh5X#ArG?V zsCuZEc%O8W7}+2b{7NKk(2#LSx;MAZZ5k1M2Hk_U9b{aV*ZK#h-zQlo;@J~o!tpaO zFAWkrm5L^%o74@(tSDA zPg>QMi^b-w#`taI5}4pAu*_u|mqSfmiilkIsNIE<{)GKf1!K+f89Nk|M^%8DMFH|O z&*9(m)EihzELGwxoGfr88cA_oaH`CLTGv6|*s>?87Pq5!s4+{5|IS}ZA0Ik*i?4_v zIz@HmFQ#o6^Yyr@Z>PCNrWeJ?W;G5yIb0o{eOVfl^~VqSd$Z;gUwxHsvfg~V)rq(I z+0bR)3Y1*jX!G;!$5S`2LgtNuf`O|QNgcdoNvYo>UK%!y4poDF3{GuHe=^UNp8XTO zhDt8%PV}f!jiJL@D?*5E#>qj^wOQI~_{A~Q%bLhBO%*%f-!{;X@!5O7%4QOK@13uC zP6pPv*+56?lQ223%OQ`Yl5v*F2Sod;3C;9epy}QLW;vo zB+iPpDqH?xQ2QwvS2K7u?RG>z?LMs{OdYDX;x7kj{3`7i<*>=Qs+?P(;o0vsU?R>E zwP}%g)KKZe=+Bzx3(%kT7}hYYEu|6BVXcR;sF>v$HN;ITZf!(0!K*}^@V#t@9%N#C zU$k7}XiYB=PobBXPAw?fS5y(Y!z3odbYW!hiD5}wpr+^?j6e=LtXZG(lkoXp)8Nw4 z!B2&VQoHjSMTp z-1sQ1iW?6k|KfSmgUZH~H@K z2&o{h-SWZgUv`&YJC}5wk8Si{m0o!FazXD8Pcy)K*%6z_Ew|sI*`dB1^2t}XGHhF0 z1m}%@*yGKnyI8N*Opv#>8fS&IKC{@k((&K^Y<5mXUt5Cud2Y1<>S;F=wpEcH^f6zR z(PA%R*z0K7w9@&-7lV0VCP^tnXESYD>Q&z>^b<^JVdnJk#>8Xkyz#zqXTryPpAd0S zJ?9eXP*pCfF-@y}6w_yt-lCTXVDD6&&l|9{K%b${hJBh}|YI z9);MwR;5?I7UHB)7ew~=`Q`|`2{8NEFL3qAKP`&IHR99CY=lUW*WxLVbj~Fa-7lb? zFc)g!rluim?B(5T`w7m~cj#^8K}sI^MHCsLX}w2!mBWBImgW(wQDQ3)P}8(9LUl|s zgrs@n1tB*DU`4K?B)QO-EIwJ<)1M+=%PvP#T~?)P#$cnI{1@E<6MEc7;Mmq&+HUit zv@v)BeGu}Z_^C|XnVv^tYQJ>uq&;^dXSNhE^Sii9h-+m8(^|a>=2|B3PKTqXgGCz! z{$Y&g?Sbj>(X$+Q-%IX9r*WrKidxC-!zsck@3^iwS@wwa9ES=jE=t9&xMw_khC8l@ z;q{K>nx{}qISVHC$%XPjdHbYR5EbqG3sEF5ofFdW1gn*8g`b7hezs&nls zV!VlqMQz-?ThL*i!3$8%B6_mF`t1z$zV_%BpMk?Qojai$v8PcYdMi~)$X8RPnkRln z7*{qfLE%dAU`nzkiBkl$*JkiLDcQ=K)KhMg;T1M5hj=N+S6!H%dFCYD53QnG$%R{+ zusy2NyiviAkTy{bcd;q2qz?WLPEkqF9qBqUXh(a6 zZvn~bP*x|cJPqx5?$vD{o4!3I)`DPk`PjY2rT;kBg(b@V0Kor1<1AXJM#o7;^Gy}I zKx`K9d9|Y~gr$2h7uk5~ye9Ck5)sWvwRfD>`DA=<0chAcsanOjcZdVMF#mSr>K0## zC|xs#oG8i}-7=K&N`sF7&Lg~GasB)L*d*C3%2w^1GR&S%Zy-BQ2wnNeDn{Wll2L(a zunGLIDwj{*wPos7eUp$8wN1(KyAsp+$BA`<-=6>eg`TC&KUtLE&DLF|5F?lGSBn*k zYPw~UgrIOr&^pzWcgQ%|+`ZY}lu0dR2?7aLpLHR>)|@>PC3+lNb)5K=Iw)_q0)$}0}ORexI6h1~LcC3q$y{X0qXTYI1vOBw zqAU=sr6Sa>OTr-2xR6?+me;UOtL!-Y2uTNzo?%HJC;;{6kCUHDZ1U5F6|6DjkvRJc zS6DXzDdEC;puTv8H2~7N&(FAovZ}@$z?4`moYo_pPt_B}RgnleB3hJeDpb4jwkem9 z*F+D(ngZ!rZZ7jbyme##xaYFtkVlVGN0e1BB!BMF9Iif!C98-td)nuNiYdKLDXQ|- ze4;bX39H(k(5P;_dM+9GejK^Da+aX_yuP`^_2|a)x-H82jAO)_9R6Y58B?)v20vJ> zI_q=X^y6K84D^sUC3dt5X9yO5vEukoq~GyUbP8XrMo)(@s}2-WM{D27X0O4H81izc z!$CyZDIe(sK5unX$v%f=jq`mnY*#jWPnNH5Ea{uQ{-RHzSIo4~u(1zruV1D4t@66n zH|I4YRk6Gja1QSmL9G=#xno4fqGw~oT?j&dL==jvSyW)cK{2%!{=a~E<>u;QXXR1j zUi0YdnuIw;)ItqV!7r=$!VLY(IkgAdfGt1|L0WtSXl;U3G|H zZr|F}7x7!->+EoRy0k9=rFM!bkHAzmGmDjskLR$UC@y;jRZM;!&fjdPR)>jj^=84| zMwq%``kYcNhwS7NXT}asYr~V5k-!coS3lB>nqaTK6h(~SR($M$UIZwrB$$EvKK&c zoDVV;7|12`RDoLTOhs>M8dk9=aZn3c7SiOKVRu$k*!5tw{<|M9%wKzPBQFbTX61E? z7bCjk)E&@8iW4#)!8oPRT@XxUo}d@2#mSP1GH=RSE<_3JQQS!nvnXG;)$DSO>Uk=c zySXccGkYRukm0>B4VmI?CHkw7^R+@3@>6E+FbWL3A%d-2Y5L}Eu>J4d{(170p*uPJ z^%H_0Epidn)|2Ys>9Ns|zLI9_h+DL|Vd!#*W+KPWBc)<}ZY2a))!y*7rJSvf9mr0F zRy+Ys9p;S<(C};(8tKHYtmw31be!w9b>-xkb5~-+uNCLSWP7ywT->EBxjf-@({KWB zlEZD8Sh~RWipMw9KC(biZkW+Eita4igkBQKhOz8n^uGMUb;qqV#@WEq%(6( z5)kO}>TKIasH6DUFU69If->C5hqvgtgyMJrm7xBVispK`c$}`-re%-iZ=~0wYEMJ7 z&X4Lha%lloO0EMHSFJdMyqAEVmN?MvgmDd_tPDPdPL?55wVbh|CJ>^}lt`rkuZbH+ zdDRF#;z>m+XC*nUw*7r__j0VtUA;8=5qH9t!1RiRnj?bsmWG4h3l-Lv{LY#87WS)P zh|q?Jb&S|}1J|nXwugiLJt4Io-+exK6q7J`953+%&wtwyh&Mx+Z;ENI1%zzltS>Pb zgfFFzD;+=Fj@^Km7S5ER>+eDQ%td4hJNLE{0B(+?BPuaf84 zw}IW&4vkvFXJK_oqQxnOH>X|808uE5E>Q3u7+3NnY%uyFYo@umMv-suZbcQ{bVe|{ zA7k~Z^obC)Q;xuzzKuciv4;>fNlFy*6#4k44Wme*Zpi^QeY@NsjKJmOTg)>iSAulH zib_x0Z9FfE=|3Uc7@AHxFQ zR;SXc-?1Es)eRqf3HMy)@Ov#I?p$Z2C3=W!abG=L`a%3ZVuew!cvarC#E{T!!Z@wG zQ-Wyq%eaaBLrvQ*{b}K^THe%GWZ96AZPOidr0%TanHyCp8{bX)<`GhZ)03l^37AQS zcjUmBhqyLWS4+)<+2+d#yqbLmA@YG!T^eNb_(tujRP6(V3j5Q-Qs^x3ZpF&t72{|N zvP{$`Yu2zvy(`O#)?ul`=#s#D&3`PA)gJYJD%qp|N6Up%esb|Frn-*}r{Y$wXu1 z=wRB(k4f+BwFFBcSeFKkd!f0^`#`}bAP3thFdajQZl;lEvMFW0mk_r(A40g=U(7f# z9)KBN0oVT@pKP$!e-B>4WC^heZ;#UAy*BM3 z-@)`?Udcyaf&cv5?vEcu@7g24ePHKZqFFqxJZ)5 zD_QaNyl)*ZAFlT6y)(U0_SkXS5%+ahcjTwxyYc6^ZiVSGCjnENw$-UDu-&X${|Ds%hmV%I zK6I-2f8c=@{eO=ZhI&n_abq_~cQtbBxmOREBt_{3$4x1>zADIzb^oT#>x^!cMbcrn zy;6F18wzdGK);gq;PZ_5+W0rdk|g?LHF=7XrqMxo_r8! z?iK#if|}Wa>z6Ncb#;0Qs}cU+f3((rL}9LD|A1L5ER$Kfs3)-H%Ra2cBU`)f**v?DEJN#RviEcON4}-DVJI1HW%`z}#fznFHjs5|k>cZY}>fC(BFx3c@W5%D)=<)562`$yY#P-^G0NLNUI0 zFEVJi=w1W#ByT)=p#5~k#w)e62C<)@Mc8Cv&b0?D2WuGlbRukDKDK1qjcC)K7X5di zu@&q5gZchCCYS|=)oHX5s)gv`5#|ECrD~g*qUx@i$rkSVgW&{k>K=S}(mU*}6+m=A zq-Pv0pVvzCyL|66n36Vq49Vg0N#k~xN%Fgug!XRih4i{`)U@JbsCid1kj-sadG8dv54^nL?O3-+yw~DgPB}pOFMH|5Qd}DR+LJK7 zsc{e@-y@y$V0En~ zioR7}WAChPny@abVR@;=eyjjW$)M08bMMTHalaqoi3b(IQYR4zjQt=mP!|z!K97lh zcSbh1k^W^=NUR$^VA%rW7Y-=2%ch-+2-1oDw}OOg1QS%e9gH#Td`K<(4_dN>&IUpp zh7yK#@%-!~6@8yzB`p1shJ?uKd?-!;0TjPSAYQa@#cm~Y%pU~PT%e0Wi-e6wTJJ*1 z8d!WqlGjX<>|spihAcKZ^1_g`5RAQmW?v92yK=JyeV?$5$EboHpdQ-)83IH%@YwjG zbR3*T_*l~G8b+fg0mxnYIp7w)`LjW5Zu_v@u*UfUb2E<40ul)8=^5(Vx{+TN!1~kT z!?Rd1{udpwd#7XBP(dKrma7-8;Jus*3~7-N32Bk+XO=B1*%uDH22x2ju!R0cHPV%H z2RgpP&JEFGeeG8yzbt6bBa7EJ9((QuH2!8RSf4L$XvqC%XAb23#a6r_9`((;3d2x? z>__7U>rlJF=o1Jav70wA2n%bQo14y_W8NWy!wgScdhi^-EYQSE{4bIxdaeqQ*ET$m z-pGGTZ?L^UdN0Z_7AWkF;P;R=oa~dEY|7a@xte4t1?($4z>Kfqi7ewOEh{qhb-B;d_f?FeoNRp^=0 z*NKa;J3~_A=;zoB*nbDiY9=4Bx4}7r(!|z^gR2xeE`0s-2dvj<{#uJ?ITigHUM;w_tHJ~ z7&;Vu)M*>YvzG{?2Car$y;HG<`>7T5k!zGkU8EDa|7u6@B(uS(o#4JgiEGvr8DJ|N z{`5hc#oX&fMYnqAcUIt8?RE0tQsb_cCr^~meT+d%hM-8{9+=#yBX=6jBP!e$QLswx z5x71A*QKqwdtx=JQ_S3^ilb`dlfXcP{J04(9SS_#J1 zXNvxamx4X;>9f+HLvLTMX&DA4?=|HW|J3b2339Byzs*AkF?G<*^J&YQA2tm_qc2X# z)g#BQP?t%zJbMZi)?u3-;or~LL;p-Z?HR;X7^7e@aU|f=HjuFs_XZti@>KRv*&o)o z%q??e$Zfp1Wqxmh_ksc29@kHleTlpCuDwdagC8`*D8x?Sg)npXSAFxa2??!GmONRw zxhY|Z%H|#Z!p)<(q%UMO{*1Hqx~uz&R=n8vOZ)hsuVNCPo|k@G$)abr)g=#HX#36b z#{bD_X#YMn&8d>lt74{=6S!zjIiV80&F&0nF8ZTrfBZu)(?VwU7A^hu*pfCc5J)G3 zAzwS>83Q|dD%YOwJ#3^rf_1u=5ttA=|omM#7z%$uncw;GvFER z=b-LqXhnifmIU>EyJ*T21++o2=fdFU8cDW2xf1Eoj7E&8ma0tPg|IT-!_*V zj6EyXu%Uv*7ZSf^D3Kx=i&eD~QW~r+B8^}0riXV5nOsylmg~6<`i|w5aZ@Pl5q5j@ zwPXTU`zq5apdl%ck&{emuHbX{-b^m2+_a;0ZO*4EY(X8sI;;MPR3>9D0cVkb-6*+? zXSs==a}1r)>w}2hJV5BbvaT}7`$DeLJMU32xdN+dcvi9RrXc1vg+!AMf#l}&Tg{>)lZDfmC!*DzHRwxx0`@uw7H$EUxA_|9!F#_JkhcT#};DJwyysKh=YAQo_<0DnMMD;l3Ir?r_$rF<9g2p#i^r ztSFfSF4sp_lXdRozBjP^X*&Oth@-mivy%`wmz@T20jN4%iVOyA*2267pl5)>#Un-NAP4_!Kv~RZ(O1@0eh#1337q>ed z=<&%}k!1%Uo=}5tc@~dRTk)45_;I>UehM@WM!QC(Q4chJ$A-mY=uM`Zz8NkG-IWt^ zjrAEk8k@`?ggNs?kTU6i$sOg&UePFOv@0H8PFfkpuZ) z>lC36y}AWe@1XKmz*~Ctq_Lw+L@x%C4>R}yDe%JrTbMRNyM2KfNMQ z4GH<$P>D0h7w7<`!m3I~E<0M9V`(;>b%>MDi4G#L=g=;b-Z!xmbV#u;?DqrBnyWic zfRm!m@xjt0Bp+38duM2Ws20N=s%%Z5J=_n|^H@|ZmxIEiq7gDwJLILiM0V2i@KeI+ ztv(10;(&vmiSIkQo{&^uUKa$WL9kBr3?@qW*Ig)#Q4yt_9X|;cK(9M&pS7(HcZPD{ z*(xFfs}0jA`lQqfRyyqks>P3bYp|4y4RSJB_cOW4ZK~-qx<@jJZ~IvT?QIMdJ_$E<*6u^(vI%j?hRwxl zcA6XPZR@kv1|6&pNC3?T%ib2&y3Iu#HhsBcaT3lym zy5_^1LVr$W7+v`3k*$C}u^4~uESacCW2SUL<&!*l_&||Zls(R3j~m;~8-}6-Q8<&) zDIBwRdU9K(ib&s#^ttB>n-DU=2b;(*&|0U+?6)z`++0gqIBTv^e!A;asTLNv!7{)U zf@egSNhWt4pDHEfx|6N6EpTQtv|icw+X*I-D4l^3-(XeI(BlwCd#^Pe19|2`2eReq ztm(q~=dI{oR{CLiB|c`KcY?PA5J+iYZ?hVjliAeTQYp374JAc751P#rNnWam6B$T# z`vMB6c(fIPrv%eanDNv@z@dbm9SU;k->W_TQw7LBKMPy(clA~7*(sO}mS;Y+?Z8Gx zlkW!WC7N_r8I@ZN>LIGj&`GbQS27ueudo`N`CK(@L85vzW213%p7Uw+&aF9R4eEPj z;EM%#vCqR$RNPNUyx?f5wWq{e%I}e`KZfhBf(^KfO7CrL+gEgf5t+o2 zUd-@)e6aBctm>g(^|zO#tnQGcVq;jJOC(lOZYoBUw4t@d(Ngg{_}VY8g6g!c!3^<4 z(EcY(5hfk-HP480-!C$2VmnZz&6U0l8>~~dY}p&mOX(G?*)j1Pd?}g&kMpPQ{652} zI|{m1p_>@2ce;NwmOJZq>-)`ES&4CqcVB$}&%gH^4i6R4vqVhPD69q^x=~84#KVW7 zqVzFT8byLIDF_1hmyfL@onC>}4wv{LKNfZxGLg7?!#d5@tu@ly2XeF8sS zga;F#dciX<=DsSThoqn99OHb>um7yP_({>je5gdFc-3Wx!+4}8tT=gwm13H&u-9P! z*$0y#psT`vYP%-ZJ>Gp!2J?6!Ahdt~z7pw>VuuMNiJLDBFSp$V*T<^+jjVTw;TZK) zCX!~)$6v>p7k}(9EjPzarYakTEJ+2B93QPhN>qKzkz|^!R*he-LB?I#}dTB*~-F{%C#4VCZY$40|bfdu7k!Bf&>F7g8nBSrVO0 zRzc1c)_dtSi8Y(QN;>g}3idOnD9;SX^?C2_>4nWNz?TI~!1gY#2Lu+@zU%dUwYCRz z_47eksW-3FG^b6u7E+M_RDc=Co;S74PVY8tu%6Me?nY4sJIc2;@4!tJRwM5V^K<5r z9~6WCzOhGdH0{;hf!qb|T@oz(Q+ z;$dBXWZp^(r>E39W@Ru`v0KB!p1nnB_f>y`^(M>Tshu;ivN?n0J>YW&g|mm{!$n2& zu%`D1uHJ)K6Pp8hEz%TwiKvi;W`ljb<5MPabGoWWUKoGiNMk(wN~9{>;-T{&xdS^4 z;u1zuztl_a^Cd8OH&17Kn^|s%mqy{{kRoQ#qlO7zH&MKR0lL3831PT+*VH_SUcE#L zEe`r@ro&mM=*RRcBoKbf)W}DEmsAe+@6zsF4e`iAW*HZO_el+-yScf|G*e>vcw@wmkpB77uNT4L2 zeiUCMEFCQpas1v2M*<1(kwGdFuyN=J zj61};oV%eDYOYmQPPqamS^2$^v8?z9**oFkHHiUGXxcjUK5OWOuxzBor5GfEYot98#Cl?Ja8uaUST);* zflC`O=DqGDT%lI^aw6@C-&KQuUAX7Wp2RS{mL9$`@uM{GLe%z699%znNC45MwcuEE zq3V^&l%Xj_?+?Z!;0OE`IHe(8s*n!$Et|f}sTKOI#_T{}#JeKDKu60yYZ?lDxsa$~ ztMP@uKwk{0i!)d-A9pXCe%Yz@ua8RtfZJUWK>Y2nW<56i;F&!YReb>a%{tK4e~*Ac zO$U}uZ*gh`K~053)9G0-4sJ-wBl@UKP1M0^Y{;8}Ca{3SFkbabK+}Jp;+6Gp1Aq=Q z3VWF27*l~sAkRK7hP&frjDdsb`Xu>p%`;h_Y>b#6IgL>LfYPhMd8M7Yd7Zev6C94Q zou}Ry125!uYfWB1#`uT9kzYBz0MW|6q6hg^BLPODW;Wepl8z?a05}0Hfo%B2IuPlC z(r4SXe*~kQ0CdZ$#)xRzJ!^a!a=!uW;o%-rW?q7Jc&MAok}!4|*35B#XqYIuX`!84 zbT`5}V1P6w=bGV)0-=;cytDPwa=(9>YFYT{?<9~AaE1< zy_rbhEd8e#g*5;W<59Y%axBs_&P>5?^s47(9un~r_l_IDpV@pqXsAvIaV z^C1S`<(!9*ozk97yBY*uj&O}8wDAwwW9Iy|Jv<0wFLMKh^*65{cw!bm5#_uep+5WndX3y=GE{tiXFi(rOw*^DK@i{vII6{aa8a?4}vdYTRJa zr8TkF1M^0Hw*<(ISA9gn%;F*d`CZ*xdZ2$x+kT95{%_v}BKX&17BuD%vSc=0IRv=( z!v<`daEXouZgmPm1;!)4FE^R9ARW@RD09zx5Ujd_4H<;JG$?`4lZ(sXIG$``YU!+angG_*$WYVF8`JvaqFo=JX zCm#gTeSz3-bt5!+H{!SBrGpgGxy&u>?^nA1Psrm$1{K%$JtJ@60vmHxFT%t0I_3h$ zEMFtBOIP_AvlQf8UbGU%1;Z-&|K0QMn!kAGFJ=M>e+&M>UTZ>GWIuEcXR$7Ug<|hI z-6TN=0hqtQTn|qD|A>LsH^kd>Z-qV8LNhT=yZ~aNr7!CQ=oTc}^oKaN8Z{k*t3sme z0-*h0B6fd^lO_7m?%C7Q1_a&ZXg+-cvP8{g>NNlv{M4HPj&wpd0rDf0hYb#0Vfp_Z zLVu3~4yk%wtxcbXqau(G_aeVT*@F<@KEa;I-_IT{pD6BuFcc=)|N92(AOEN0_$oy{ zQ$HJ*(@=7dNjC@7?H_tc2edHBSWV#ItaP#RN6dtKfl0!j##sIKx9Hd3DeGYzW5=Fg z%6%*f0G8J(nd6D;gS&g=PS*5He-MSCSGwMsOJo|@Yt4OZX7=Iz&+JpL-sk3peH_C@ zl3nrJ!NZTcyF=fYMb^qIT?}?NnMqpuaPB|Ow11`JSIh?-+Xdv?J!HQiUbwTzmlFvMROFR^{Q)t9&L=)ltpIRsof z_DOln)x@vC4OKgdsTVNaB*#m4Z=?<5DDK~}bXE`E$F0K$6-)0Z25zD~LdBcq zu=b7**(iW&k72{;?w#N{upsW&2BPKG{hU+m+mMq)kv5QkBebXbVjTK(03%$?)68tP z?h~lopNJkS&^<;r+Oc#Y)i4@?qNJM`YI4?N+3hV$Z^`!6Vcp7)&CR{pd&liG{SGQF zH4kGm4=2mwKf_*@tw$AFQ;gN-o~IW-Ug&2^N`UzjZ}jokIX_f9{?p=MYd=B`LkJRO zCEhVg=qxx4;j(6z2`E>}IckK*hFhG7(;uey?966|X%P~~ zV8L-xS5M6A*S9kmoCEiLx7e^@l>MtCyn!~A0x&xLfD+2U&HyTykzNy+Cs0Dw^S%JdX(R zp%LbwevsNQY5>mQ+E1u|ix7h*+smcT>jB z!VQ^oG%NscHs0BOj4d?G9h{HeGbAMr0okmdJ19^MZ_vIwYC6&#!WioZb`{^2{Akum zdO+=U@11D0sYTKcan-0ExxNwsu=19e0oV=3IZuK?xmsyt+Fa}a(7s#Xi$ozVxvjbW zD&ojSF$HY?C=ycyH*)|0ZP{Vx#)ljs5JSSS0ZzyHUnO0AR1;Sg2gIt?inh8`+cMj_ zDphK#t)(boV6C!#u#pNPD48x4QB+v#QcEC=N7uSyHTLuXZ9zt9F<6bMS_+~t>j#a9 zIB0;#XR0y85CO?#5@s^w;&0X3~Hb}cj!dPB-GVzN_Csa8fauWuTIv*O))E<>sCov*~4Gwda#JtTK zpw@PoSeRKAU$OzliYaNE(bbyO-C}$f6l(=$)UwhtP=ZQq5Uh1`nbKULLN$1oFIUe% z^MYH9Ix(1+0doq0H$hrBz&mlnY#jAezXf-6w!&rZ11J?|=IsmWZJIA$ff^{a7Nknk zr?gCRMqbv4DvAZFe?aEx8aIJ@9K1tVh~;Lq8cXlJ^^#BWS03m3kN zm9D~u!5UgeQW}$rUk^#>0||RT3ZstX_`W)<1k$|lzmUbT%;?1%j+b?h`Xa_DRV?1QWO-FAuIAKlQT=! z8GK@At5tHKTv~w=z;$Rjj~n=SYaTraRoagsvjR4=BYN7(8C}u{2v^NkM{N#4sxH7F zW)hzM%;CnnTSrhaxYF9wSzldjb!+DT2~jo}q~rIt7xX7M@nFoNPc=*6&9oE=5)0?( z_ot>E5Z&loTvG$xY&5u1PBZvvb#*}A+_Dy_9k27scn~3dN@Ujs|AC1(!!v7s2y0BB z8oaou(y%-b+I#N0f?K$A$A=(x-u%6-e%UL-?!!@h8H3bUIRWE; z`>2koWUg1^%@@?m6JJX%Fkj+nVeJUoV=n?6#!&?hrbtcRjbN1Kqd3A z$VjoBHEH!ut+Rld14$%!5W)U;K=Z+@Y?yC^8&f!1{W4Nl4)7?6cZf7qI6mtpc@LHr ziq_GV15)AD#90|^dilzi=n6R*)(#0Vi?4a9F%QFASSZ#IFu9uE3)}|7fXa0lr1`+J z9I!dt)12h)@N)S|eK#0H_~&SxY@~p%0)yPFAQ7DBo)-xfH1 z?SK^58AUyo)Q-=H_qY}(u9!r2Z zz-Kh)%@hZURUF>+hhKgWD7(c-g8*$&NKspiRfQ97IC>CYKH1+?uR z$)wya^$iBLQ!wxrPPaK{8OVd>{&lEm0c-SQ>c57*F4wTFelhOq44WwATKFKt3~V`k z=`yH(sa^+dDBXv}o+x3jm|uvu98=>9R%iG!QV83qVG9cBZS&s|T;}gX;-H#bUkmdT z>h>Yfau6=1*@W8~;)@^yP~+LK`5G>I)uk}24z#;TQ``CuEfu7&=!n_JK#uy&?K@-k z>VYuEg7-jhk>?8@28mb57KWE+eHCBGdU}HdP9m8%7RQz$ng%v0uYaDrtpL4sfbK=O z22R$O-maC}Z_r{r^wdO4Ri;{LKTO2F9vAZ!FrpiL5!9PXNPE>cK8$!$2P#QLQB^Sz zJOY^+XNR^E^0!H=Mrt63Q?!Sqo$yeo|2t`4CQ)$w(U1p2)#zdd)FqE5f2ciw1XTEV zE^QPxz6oOnLrA2Q`Z|Necqtz2$LU6S1Mu6T&f;H4AC_a4#;pC_>LBc7v zDZWZE=01QLH0=BS%E7@M1V?20;G5(aS7q|nBOZWNMw|b4t*A+nHQFAgTqF$#OTG2E ze(@~X2JEbE?;DH906hA+3F4)n+1-$6H%yx_8-7rEqFg8ELqKaZd8s)N8IBx& zqQ-leTyPc>>S$(kec=4&Be#H+DuFaosIE!L?iA^Hq1kYT4mO0!As#Q7q>AB;^zll= zaN!Jp`8nKBySu59%cTA-Bdd)l+Vn(##`_z%@$7bxRyV-#ldL|!^rrX2Byn2H=vbd zuCIvBxon_ng$4NwT&ki zOw7`hLCv{h_kNHUkz!4{9W78U!%GV8cKXDpD?!aCpz&h0U)f#nM|hTG z$Z>%tCn~~z=3ns>y#oEhTZit#Z#^i?84(Z3 zcMWxGX%N&r1QHsvG?E-;gQbJGXJ+&SLC^03#o5q~LZ*jjyRV z1%4X=V7xeb5_B6`6v>F+{f0})cC)b|Bq2O$+6tsW$6qMCLoRy-$zg5v>0;}y?PMXS z@oAsmbO-PgmM(Fr;RJjIj{s7qH{!aNTfAlige+mFbVHq|ePjE>&zoz6pMNE-^h0S| zKu|AFJ)twjT|oL%%KOwM_&nJ!pAUgcnxfm`2{MUU5si}X4$pSld+_As3u}YBK%aqi z+Z=b*c-8c^-e$=9++%ubw&@=SWnI98TQu{meH@C)gfY-h+WkM5Ee9~L0E1M4gJtF} zJK8zaSka;D_o7Bpw@1aS&8bGKAZ51`<1MZxy^kBbSP^>aOT3S?%j{G&syp-OIdDs$ zkQ)-V1$c_55KaS1g=E`N5tlvtDg5KsVCmiRZi^9X5z(38WZGd9W@A2MI@ANc-t>1K zU$_=7$w@{(mf#Ln?lMRPg(t|V=7-&<0iT`&5qAH?F3(QdVG`QLPXq>sIezyh5iDT( zU}eOcMWKt~j!@#|bQ9{Mt1_}^=L8^4b)*x#E7`K-`Mz3@K#4R;SRSxQJs_+hbx%~J zhF+8U8dS6zYTF3KSqp%Aexe^eIVB=ZvWZ|wuO;bCf<=Ems~~Pb@%}0c1h)of8h9yM z@HL#jwF1sufecL3t%jMKOk-_name = $name; - } - - /** - * @param mixed $model The data to pass to the column, - * could be a model or an array - * @return mixed the return value of the implementation, - * should be text in most of the cases - */ - public abstract function run($model); - - /** - * @return String The name of the column - */ - public function getName() - { - return $this->name; - } -} \ No newline at end of file diff --git a/vendor/chumper/datatable/src/Chumper/Datatable/Columns/DateColumn.php b/vendor/chumper/datatable/src/Chumper/Datatable/Columns/DateColumn.php deleted file mode 100644 index 2c650364a0..0000000000 --- a/vendor/chumper/datatable/src/Chumper/Datatable/Columns/DateColumn.php +++ /dev/null @@ -1,69 +0,0 @@ -format = $format; - $this->custom = $custom; - } - - /** - * @param mixed $model The data to pass to the column, - * could be a model or an array - * @return mixed the return value of the implementation, - * should be text in most of the cases - */ - public function run($model) - { - - if(is_string(is_array($model) ? $model[$this->name]: $model->{$this->name})) - { - return is_array($model) ? $model[$this->name]: $model->{$this->name}; - } - - switch($this->format) - { - case DateColumn::DATE: - return is_array($model) ? $model[$this->name]->toDateString(): $model->{$this->name}->toDateString(); - break; - case DateColumn::TIME: - return is_array($model) ? $model[$this->name]->toTimeString(): $model->{$this->name}->toTimeString(); - break; - case DateColumn::DATE_TIME: - return is_array($model) ? $model[$this->name]->toDateTimeString(): $model->{$this->name}->toDateTimeString(); - break; - case DateColumn::CUSTOM: - return is_array($model) ? $model[$this->name]->format($this->custom): $model->{$this->name}->format($this->custom); - break; - case DateColumn::FORMATTED_DATE: - return is_array($model) ? $model[$this->name]->toFormattedDateString(): $model->{$this->name}->toFormattedDateString(); - break; - case DateColumn::DAY_DATE: - return is_array($model) ? $model[$this->name]->toDayDateTimeString(): $model->{$this->name}->toDayDateTimeString(); - break; - - } - } -} \ No newline at end of file diff --git a/vendor/chumper/datatable/src/Chumper/Datatable/Columns/FunctionColumn.php b/vendor/chumper/datatable/src/Chumper/Datatable/Columns/FunctionColumn.php deleted file mode 100644 index 53b7b956cf..0000000000 --- a/vendor/chumper/datatable/src/Chumper/Datatable/Columns/FunctionColumn.php +++ /dev/null @@ -1,17 +0,0 @@ -callable = $callable; - } - - public function run($model) - { - return call_user_func($this->callable,$model); - } -} \ No newline at end of file diff --git a/vendor/chumper/datatable/src/Chumper/Datatable/Columns/TextColumn.php b/vendor/chumper/datatable/src/Chumper/Datatable/Columns/TextColumn.php deleted file mode 100644 index 20c9458cbe..0000000000 --- a/vendor/chumper/datatable/src/Chumper/Datatable/Columns/TextColumn.php +++ /dev/null @@ -1,17 +0,0 @@ -text = $text; - } - - public function run($model) - { - return $this->text; - } -} \ No newline at end of file diff --git a/vendor/chumper/datatable/src/Chumper/Datatable/Datatable.php b/vendor/chumper/datatable/src/Chumper/Datatable/Datatable.php deleted file mode 100644 index a3d2507bea..0000000000 --- a/vendor/chumper/datatable/src/Chumper/Datatable/Datatable.php +++ /dev/null @@ -1,57 +0,0 @@ -publishes([ - __DIR__.'/../../config/config.php' => config_path('chumper.datatable.php'), - __DIR__.'/../../views' => base_path('resources/views/vendor/chumper.datatable'), - ]); - - $this->loadViewsFrom(__DIR__ . '/../../views', 'chumper.datatable'); - - } - - /** - * Register the service provider. - * - * @return void - */ - public function register() - { - - $this->mergeConfigFrom(__DIR__.'/../../config/config.php', 'chumper.datatable'); - - $this->app->singleton('datatable', function($app) - { - return new Datatable; - }); - - } - - /** - * Get the services provided by the provider. - * - * @return array - */ - public function provides() - { - return array('datatable'); - } - -} diff --git a/vendor/chumper/datatable/src/Chumper/Datatable/Engines/BaseEngine.php b/vendor/chumper/datatable/src/Chumper/Datatable/Engines/BaseEngine.php deleted file mode 100644 index d2cfb1b62d..0000000000 --- a/vendor/chumper/datatable/src/Chumper/Datatable/Engines/BaseEngine.php +++ /dev/null @@ -1,553 +0,0 @@ - column - * 1 => name:cast:length - * ) - */ - protected $orderColumn = null; - - /** - * @var string - */ - protected $orderDirection = BaseEngine::ORDER_ASC; - - /** - * @var boolean If the return should be alias mapped - */ - protected $aliasMapping = false; - - /** - * @var bool If the search should be done with exact matching - */ - protected $exactWordSearch = false; - - - function __construct() - { - $this->columns = new Collection(); - $this->config = Config::get('chumper.datatable.engine'); - $this->setExactWordSearch( $this->config['exactWordSearch'] ); - return $this; - } - - /** - * @return $this - * @throws \Exception - */ - public function addColumn() - { - if(func_num_args() != 2 && func_num_args() != 1) - throw new Exception('Invalid number of arguments'); - - if(func_num_args() == 1) - { - //add a predefined column - $this->columns->put(func_get_arg(0)->getName(), func_get_arg(0)); - } - else if(is_callable(func_get_arg(1))) - { - $this->columns->put(func_get_arg(0), new FunctionColumn(func_get_arg(0), func_get_arg(1))); - } - else - { - $this->columns->put(func_get_arg(0), new TextColumn(func_get_arg(0),func_get_arg(1))); - } - return $this; - } - - /** - * @param $name - * @return mixed - */ - public function getColumn($name) - { - return $this->columns->get($name,null); - } - - /** - * @return array - */ - public function getOrder() - { - return array_keys($this->columns->toArray()); - } - - /** - * @return array - */ - public function getOrderingColumns() - { - return $this->orderColumns; - } - - /** - * @return array - */ - public function getSearchingColumns() - { - return $this->searchColumns; - } - - /** - * @return $this - */ - public function clearColumns() - { - $this->columns = new Collection(); - return $this; - } - - /** - * @param $cols - * @return $this - */ - public function showColumns($cols) - { - if ( ! is_array($cols)) { - $cols = func_get_args(); - } - - foreach ($cols as $property) { - //quick fix for created_at and updated_at columns - if(in_array($property, array('created_at', 'updated_at'))) - { - $this->columns->put($property, new DateColumn($property, DateColumn::DAY_DATE)); - } - else - { - $this->columns->put($property, new FunctionColumn($property, function($model) use($property){ - try{return is_array($model)?$model[$property]:$model->$property;}catch(Exception $e){return null;} - })); - } - $this->showColumns[] = $property; - } - return $this; - } - - /** - * @return \Illuminate\Http\JsonResponse - */ - public function make() - { - //TODO Handle all inputs - $this->handleInputs(); - $this->prepareSearchColumns(); - - $output = array( - "aaData" => $this->internalMake($this->columns, $this->searchColumns)->toArray(), - "sEcho" => intval($this->sEcho), - "iTotalRecords" => $this->totalCount(), - "iTotalDisplayRecords" => $this->count(), - ); - return Response::json($output); - } - - /** - * @param $cols - * @return $this - */ - public function searchColumns($cols) - { - if ( ! is_array($cols)) { - $cols = func_get_args(); - } - - $this->searchColumns = $cols; - - return $this; - } - - /** - * @param $cols - * @return $this - */ - public function orderColumns($cols) - { - if ( ! is_array($cols)) { - $cols = func_get_args(); - } - - if (count($cols) == 1 && $cols[0] == '*') - $cols = $this->showColumns; - - $this->orderColumns = $cols; - return $this; - } - - /** - * @param $function Set a function for a dynamic row class - * @return $this - */ - public function setRowClass($function) - { - $this->rowClass = $function; - return $this; - } - - /** - * @param $function Set a function for a dynamic row id - * @return $this - */ - public function setRowId($function) - { - $this->rowId = $function; - return $this; - } - - /** - * @param $function Set a function for dynamic html5 data attributes - * @return $this - */ - public function setRowData($function) - { - $this->rowData = $function; - return $this; - } - - public function setAliasMapping($value = true) - { - $this->aliasMapping = $value; - return $this; - } - - public function setExactWordSearch($value = true) - { - $this->exactWordSearch = $value; - return $this; - } - - /** - * @param $columnNames Sets up a lookup table for which columns should use exact matching -sburkett - * @return $this - */ - public function setExactMatchColumns($columnNames) - { - foreach($columnNames as $columnIndex) - $this->columnSearchExact[ $columnIndex ] = true; - - return $this; - } - - public function getRowClass() - { - return $this->rowClass; - } - - public function getRowId() - { - return $this->rowId; - } - - public function getRowData() - { - return $this->rowData; - } - - public function getAliasMapping() - { - return $this->aliasMapping; - } - //-------------protected functionS------------------- - - /** - * @param $value - */ - protected function handleiDisplayStart($value) - { - //skip - $this->skip($value); - } - - /** - * @param $value - */ - protected function handleiDisplayLength($value) - { - //limit nicht am query, sondern den ganzen - //holen und dann dynamisch in der Collection taken und skippen - $this->take($value); - } - - /** - * @param $value - */ - protected function handlesEcho($value) - { - $this->sEcho = $value; - } - - /** - * @param $value - */ - protected function handlesSearch($value) - { - //handle search on columns sSearch, bRegex - $this->search($value); - } - - - /** - * @param $value - */ - protected function handleiSortCol_0($value) - { - if(Input::get('sSortDir_0') == 'desc') - $direction = BaseEngine::ORDER_DESC; - else - $direction = BaseEngine::ORDER_ASC; - - //check if order is allowed - if(empty($this->orderColumns)) - { - $this->order(array(0 => $value, 1 => $this->getNameByIndex($value)), $direction); - return; - } - - //prepare order array - $cleanNames = array(); - foreach($this->orderColumns as $c) - { - if(strpos($c,':') !== FALSE) - { - $cleanNames[] = substr($c, 0, strpos($c,':')); - } - else - { - $cleanNames[] = $c; - } - } - - $i = 0; - foreach($this->columns as $name => $column) - { - if($i == $value && in_array($name, $cleanNames)) - { - $this->order(array(0 => $value, 1 => $this->orderColumns[array_search($name,$cleanNames)]), $direction); - return; - } - $i++; - } - } - - /** - * @param int $columnIndex - * @param string $searchValue - * - * @return void - */ - protected function handleSingleColumnSearch($columnIndex, $searchValue) - { - //dd($columnIndex, $searchValue, $this->searchColumns); - if (!isset($this->searchColumns[$columnIndex])) return; - if (empty($searchValue) && $searchValue !== '0') return; - - $columnName = $this->searchColumns[$columnIndex]; - $this->searchOnColumn($columnName, $searchValue); - } - - /** - * - */ - protected function handleInputs() - { - //Handle all inputs magically - foreach (Input::all() as $key => $input) { - - // handle single column search - if ($this->isParameterForSingleColumnSearch($key)) - { - $columnIndex = str_replace('sSearch_','',$key); - $this->handleSingleColumnSearch($columnIndex, $input); - continue; - } - - if(method_exists($this, $function = 'handle'.$key)) - $this->$function($input); - } - } - - /** - * @param $parameterName - * - * @return bool - */ - protected function isParameterForSingleColumnSearch($parameterName) - { - static $parameterNamePrefix = 'sSearch_'; - return str_contains($parameterName, $parameterNamePrefix); - } - - protected function prepareSearchColumns() - { - if(count($this->searchColumns) == 0 || empty($this->searchColumns)) - $this->searchColumns = $this->showColumns; - } - - /** - * @param $column - * @param $order - */ - protected function order($column, $order = BaseEngine::ORDER_ASC) - { - $this->orderColumn = $column; - $this->orderDirection = $order; - } - - /** - * @param $value - */ - protected function search($value) - { - $this->search = $value; - } - - /** - * @param string $columnName - * @param mixed $value - */ - protected function searchOnColumn($columnName, $value) - { - $this->fieldSearches[] = $columnName; - $this->columnSearches[] = $value; - } - - /** - * @param $value - */ - protected function skip($value) - { - $this->skip = $value; - } - - /** - * @param $value - */ - protected function take($value) - { - $this->limit = $value; - } - - public function getNameByIndex($index) - { - $i = 0; - foreach($this->columns as $name => $col) - { - if($index == $i) - { - return $name; - } - $i++; - } - } - - public function getExactWordSearch() - { - return $this->exactWordSearch; - } - - abstract protected function totalCount(); - abstract protected function count(); - abstract protected function internalMake(Collection $columns, array $searchColumns = array()); -} diff --git a/vendor/chumper/datatable/src/Chumper/Datatable/Engines/CollectionEngine.php b/vendor/chumper/datatable/src/Chumper/Datatable/Engines/CollectionEngine.php deleted file mode 100644 index 736ae36a1e..0000000000 --- a/vendor/chumper/datatable/src/Chumper/Datatable/Engines/CollectionEngine.php +++ /dev/null @@ -1,324 +0,0 @@ - SORT_NATURAL, - 'stripOrder' => false, - 'stripSearch' => false, - 'caseSensitive' => false, - ); - - /** - * @param Collection $collection - */ - function __construct(Collection $collection) - { - parent::__construct(); - $this->collection = $collection; - $this->workingCollection = $collection; - } - - /** - * @return int - */ - public function count() - { - return $this->workingCollection->count(); - } - - /** - * @return int - */ - public function totalCount() - { - return $this->collection->count(); - } - - /** - * @return array - */ - public function getArray() - { - $this->handleInputs(); - $this->compileArray($this->columns); - $this->doInternalSearch(new Collection(), array()); - $this->doInternalOrder(); - - return array_values($this->workingCollection - ->slice($this->skip,$this->limit) - ->toArray() - ); - } - - /** - * Resets all operations performed on the collection - */ - public function reset() - { - $this->workingCollection = $this->collection; - return $this; - } - - public function stripSearch() - { - $this->options['stripSearch'] = true; - return $this; - } - - public function stripOrder($callback = true) - { - $this->options['stripOrder'] = $callback; - return $this; - } - - public function setSearchStrip() - { - $this->options['stripSearch'] = true; - return $this; - } - - public function setOrderStrip($callback = true) - { - return $this->stripOrder($callback); - } - - /** - * Set the sort behaviour of the doInternalOrder() function. - * - * @param int $sort_flags For details see: http://php.net/manual/en/function.sort.php - * @return $this - */ - public function setOrderFlags($sort_flags = SORT_NATURAL) - { - $this->options['sortFlags'] = $sort_flags; - return $this; - } - - public function setCaseSensitive($value) - { - $this->options['caseSensitive'] = $value; - return $this; - } - - public function getOption($value) - { - return $this->options[$value]; - } - //--------------PRIVATE FUNCTIONS----------------- - - protected function internalMake(Collection $columns, array $searchColumns = array()) - { - $this->compileArray($columns); - $this->doInternalSearch($columns, $searchColumns); - $this->doInternalOrder(); - - return $this->workingCollection->slice($this->skip,$this->limit)->values(); - } - - /** - * Filter a collection based on the DataTables search parameters (sSearch_0 etc) - * See http://legacy.datatables.net/usage/server-side - * - * @param Collection $columns All the columns in the DataTable - * @param array $searchColumns Columns to search on - values are case-sensitive (must match definition from $columns) - */ - private function doInternalSearch(Collection $columns, array $searchColumns) - { - if((is_null($this->search) || empty($this->search)) && empty($this->fieldSearches)) - return; - - $value = $this->search; - $caseSensitive = $this->options['caseSensitive']; - - $toSearch = array(); - $searchType = self::AND_CONDITION; - // Map the searchColumns to the real columns - $ii = 0; - foreach($columns as $i => $col) - { - if(in_array($columns->get($i)->getName(), $searchColumns) || in_array($columns->get($i)->getName(), $this->fieldSearches)) - { - // map values to columns, where there is no value use the global value - if(($field = array_search($columns->get($i)->getName(), $this->fieldSearches)) !== FALSE) - { - $toSearch[$ii] = $this->columnSearches[$field]; - } - else - { - if($value) - $searchType = self::OR_CONDITION; - $toSearch[$ii] = $value; - } - } - $ii++; - } - - $self = $this; - $this->workingCollection = $this->workingCollection->filter(function($row) use ($toSearch, $caseSensitive, $self, $searchType) - { - for($i=0, $stack=array(), $nb=count($row); $i<$nb; $i++) - { - if(!array_key_exists($i, $toSearch)) - continue; - - $column = $i; - if($self->getAliasMapping()) - { - $column = $self->getNameByIndex($i); - } - - if($self->getOption('stripSearch')) - { - $search = strip_tags($row[$column]); - } - else - { - $search = $row[$column]; - } - if($caseSensitive) - { - if($self->exactWordSearch) - { - if($toSearch[$i] === $search) - $stack[$i] = true; - } - else - { - if(str_contains($search,$toSearch[$i])) - $stack[$i] = true; - } - } - else - { - if($self->getExactWordSearch()) - { - if(mb_strtolower($toSearch[$i]) === mb_strtolower($search)) - $stack[$i] = true; - } - else - { - if(str_contains(mb_strtolower($search),mb_strtolower($toSearch[$i]))) - $stack[$i] = true; - } - } - } - if($searchType == $self::AND_CONDITION) - { - $result = array_diff_key(array_filter($toSearch), $stack); - if(empty($result)) - return true; - } - else - { - if(!empty($stack)) - return true; - } - }); - } - - private function doInternalOrder() - { - if(is_null($this->orderColumn)) - return; - - $column = $this->orderColumn[0]; - $stripOrder = $this->options['stripOrder']; - $self = $this; - $this->workingCollection = $this->workingCollection->sortBy(function($row) use ($column,$stripOrder,$self) { - - if($self->getAliasMapping()) - { - $column = $self->getNameByIndex($column); - } - if($stripOrder) - { - if(is_callable($stripOrder)){ - return $stripOrder($row, $column); - }else{ - return strip_tags($row[$column]); - } - } - else - { - return $row[$column]; - } - }, $this->options['sortFlags']); - - if($this->orderDirection == BaseEngine::ORDER_DESC) - $this->workingCollection = $this->workingCollection->reverse(); - } - - private function compileArray($columns) - { - $self = $this; - $this->workingCollection = $this->collection->map(function($row) use ($columns, $self) { - $entry = array(); - - // add class and id if needed - if(!is_null($self->getRowClass()) && is_callable($self->getRowClass())) - { - $entry['DT_RowClass'] = call_user_func($self->getRowClass(),$row); - } - if(!is_null($self->getRowId()) && is_callable($self->getRowId())) - { - $entry['DT_RowId'] = call_user_func($self->getRowId(),$row); - } - if(!is_null($self->getRowData()) && is_callable($self->getRowData())) - { - $entry['DT_RowData'] = call_user_func($self->getRowData(),$row); - } - $i=0; - foreach ($columns as $col) - { - if($self->getAliasMapping()) - { - $entry[$col->getName()] = $col->run($row); - } - else - { - $entry[$i] = $col->run($row); - } - - $i++; - } - return $entry; - }); - } -} diff --git a/vendor/chumper/datatable/src/Chumper/Datatable/Engines/QueryEngine.php b/vendor/chumper/datatable/src/Chumper/Datatable/Engines/QueryEngine.php deleted file mode 100644 index 5a23fc79f4..0000000000 --- a/vendor/chumper/datatable/src/Chumper/Datatable/Engines/QueryEngine.php +++ /dev/null @@ -1,306 +0,0 @@ - 'LIKE', - 'searchWithAlias' => false, - 'orderOrder' => null, - 'counter' => 0, - 'noGroupByOnCount' => false, - ); - - function __construct($builder) - { - parent::__construct(); - if($builder instanceof Relation) - { - $this->builder = $builder->getBaseQuery(); - $this->originalBuilder = clone $builder->getBaseQuery(); - } - else - { - $this->builder = $builder; - $this->originalBuilder = clone $builder; - } - } - - public function count() - { - return $this->options['counter']; - } - - public function totalCount() - { - // Store temporary copy as we may modify it, we'd be stupid to modify - // the actual "original" copy... - $originalBuilder = $this->originalBuilder; - - if ($this->options['noGroupByOnCount']) { - $originalBuilder = $this->removeGroupBy($originalBuilder); - } - - return $originalBuilder->count(); - } - - public function getArray() - { - return $this->getCollection($this->builder)->toArray(); - } - - public function reset() - { - $this->builder = $this->originalBuilder; - return $this; - } - - - public function setSearchOperator($value = "LIKE") - { - $this->options['searchOperator'] = $value; - return $this; - } - - public function setSearchWithAlias() - { - $this->options['searchWithAlias'] = true; - return $this; - } - - public function setNoGroupByOnCount() - { - $this->options['noGroupByOnCount'] = true; - return $this; - } - - //--------PRIVATE FUNCTIONS - - protected function internalMake(Collection $columns, array $searchColumns = array()) - { - $builder = clone $this->builder; - $countBuilder = clone $this->builder; - - $builder = $this->doInternalSearch($builder, $searchColumns); - $countBuilder = $this->doInternalSearch($countBuilder, $searchColumns); - - if($this->options['searchWithAlias']) - { - $this->options['counter'] = count($countBuilder->get()); - } - else - { - // Remove the GROUP BY clause for the count - if ($this->options['noGroupByOnCount']) { - $countBuilder = $this->removeGroupBy($countBuilder); - } - $this->options['counter'] = $countBuilder->count(); - } - - $builder = $this->doInternalOrder($builder, $columns); - $collection = $this->compile($builder, $columns); - - return $collection; - } - - /** - * Remove the GROUP BY clause from a builder. - * - * @param Builder|QueryBuilder $builder - * @return Builder|QueryBuilder $builder with the groups property set to null. - */ - private function removeGroupBy($builder) - { - // Handle \Illuminate\Database\Eloquent\Builder - if ($builder instanceof Builder) { - $query = $builder->getQuery(); - $query->groups = null; - $builder->setQuery($query); - } - // Handle \Illuminate\Database\Query\Builder - else { - $builder->groups = null; - } - - return $builder; - } - - /** - * @param $builder - * @return Collection - */ - private function getCollection($builder) - { - if($this->collection == null) - { - if($this->skip > 0) - { - $builder = $builder->skip($this->skip); - } - if($this->limit > 0) - { - $builder = $builder->take($this->limit); - } - //dd($this->builder->toSql()); - $this->collection = $builder->get(); - - if(is_array($this->collection)) - $this->collection = new Collection($this->collection); - } - return $this->collection; - } - - private function doInternalSearch($builder, $columns) - { - if (!empty($this->search)) { - $this->buildSearchQuery($builder, $columns); - } - - if (!empty($this->columnSearches)) { - $this->buildSingleColumnSearches($builder); - } - - return $builder; - } - protected function buildSearchQuery($builder, $columns) - { - $like = $this->options['searchOperator']; - $search = $this->search; - $exact = $this->exactWordSearch; - $builder = $builder->where(function($query) use ($columns, $search, $like, $exact) { - foreach ($columns as $c) { - //column to search within relationships : relatedModel::column - if(strrpos($c, '::')) { - $c = explode('::', $c); - $query->orWhereHas($c[0], function($q) use($c, $like, $exact, $search){ - $q->where($c[1], $like, $exact ? $search : '%' . $search . '%'); - }); - } - //column to CAST following the pattern column:newType:[maxlength] - elseif(strrpos($c, ':')){ - $c = explode(':', $c); - if(isset($c[2])) - $c[1] .= "($c[2])"; - $query->orWhereRaw("cast($c[0] as $c[1]) ".$like." ?", array($exact ? "$search" : "%$search%")); - } - else - $query->orWhere($c, $like, $exact ? $search : '%' . $search . '%'); - } - }); - return $builder; - } - - /** - * @param $builder - * Modified by sburkett to facilitate individual exact match searching on individual columns (rather than for all columns) - */ - - private function buildSingleColumnSearches($builder) - { - foreach ($this->columnSearches as $index => $searchValue) { - if(@$this->columnSearchExact[ $this->fieldSearches[$index] ] == 1) { - $builder->where($this->fieldSearches[$index], '=', $searchValue ); - } else { - $builder->where($this->fieldSearches[$index], $this->options['searchOperator'], '%' . $searchValue . '%'); - } - } - - } - - private function compile($builder, $columns) - { - $this->resultCollection = $this->getCollection($builder); - - $self = $this; - $this->resultCollection = $this->resultCollection->map(function($row) use ($columns,$self) { - $entry = array(); - // add class and id if needed - if(!is_null($self->getRowClass()) && is_callable($self->getRowClass())) - { - $entry['DT_RowClass'] = call_user_func($self->getRowClass(),$row); - } - if(!is_null($self->getRowId()) && is_callable($self->getRowId())) - { - $entry['DT_RowId'] = call_user_func($self->getRowId(),$row); - } - if(!is_null($self->getRowData()) && is_callable($self->getRowData())) - { - $entry['DT_RowData'] = call_user_func($self->getRowData(),$row); - } - $i = 0; - foreach ($columns as $col) - { - if($self->getAliasMapping()) - { - $entry[$col->getName()] = $col->run($row); - } - else - { - $entry[$i] = $col->run($row); - } - $i++; - } - return $entry; - }); - return $this->resultCollection; - } - - private function doInternalOrder($builder, $columns) - { - //var_dump($this->orderColumn); - if(!is_null($this->orderColumn)) - { - $i = 0; - foreach($columns as $col) - { - - if($i === (int) $this->orderColumn[0]) - { - if(strrpos($this->orderColumn[1], ':')){ - $c = explode(':', $this->orderColumn[1]); - if(isset($c[2])) - $c[1] .= "($c[2])"; - $builder = $builder->orderByRaw("cast($c[0] as $c[1]) ".$this->orderDirection); - } - else - $builder = $builder->orderBy($col->getName(), $this->orderDirection); - return $builder; - } - $i++; - } - } - return $builder; - } -} diff --git a/vendor/chumper/datatable/src/Chumper/Datatable/Facades/DatatableFacade.php b/vendor/chumper/datatable/src/Chumper/Datatable/Facades/DatatableFacade.php deleted file mode 100644 index 9eaf29dad2..0000000000 --- a/vendor/chumper/datatable/src/Chumper/Datatable/Facades/DatatableFacade.php +++ /dev/null @@ -1,14 +0,0 @@ -config = Config::get('chumper.datatable.table'); - - $this->setId( $this->config['id'] ); - $this->setClass( $this->config['class'] ); - $this->setOptions( $this->config['options'] ); - $this->setCallbacks( $this->config['callbacks'] ); - - $this->noScript = $this->config['noScript']; - $this->table_view = $this->config['table_view']; - $this->script_view = $this->config['script_view']; - } - - - /** - * @return $this - */ - public function addColumn() - { - foreach (func_get_args() as $title) - { - if(is_array($title)) - { - foreach ($title as $mapping => $arrayTitle) - { - $this->columns[] = $arrayTitle; - $this->aliasColumns[] = $mapping; - if(is_string($mapping)) - { - $this->createdMapping = false; - } - } - } - else - { - $this->columns[] = $title; - $this->aliasColumns[] = count($this->aliasColumns)+1; - } - } - return $this; - } - - /** - * @return int - */ - public function countColumns() - { - return count($this->columns); - } - - /** - * @return $this - */ - public function removeOption($key) - { - if(isset($this->options[$key])) unset($this->options[$key]); - return $this; - } - - /** - * @return $this - * @throws \Exception - */ - public function setOptions() - { - if(func_num_args() == 2) - { - $this->options[func_get_arg(0)] =func_get_arg(1); - } - else if(func_num_args() == 1 && is_array(func_get_arg(0))) - { - foreach (func_get_arg(0) as $key => $option) - { - $this->options[$key] = $option; - } - } - else - throw new Exception('Invalid number of options provided for the method "setOptions"'); - return $this; - } - - /** - * @return $this - * @throws \Exception - */ - public function setOrder($order = array()) - { - $_orders = array(); - foreach ($order as $number => $sort) - { - $_orders[] = [$number, $sort]; - } - - $this->callbacks['aaSorting'] = $_orders; - return $this; - } - - /** - * @return $this - * @throws \Exception - */ - public function setCallbacks() - { - if(func_num_args() == 2) - { - $this->callbacks[func_get_arg(0)] = func_get_arg(1); - } - else if(func_num_args() == 1 && is_array(func_get_arg(0))) - { - foreach (func_get_arg(0) as $key => $value) - { - $this->callbacks[$key] = $value; - } - } - else - throw new Exception('Invalid number of callbacks provided for the method "setCallbacks"'); - - return $this; - } - - /** - * @return $this - * @throws \Exception - */ - public function setCustomValues() - { - if(func_num_args() == 2) - { - $this->customValues[func_get_arg(0)] = func_get_arg(1); - } - else if(func_num_args() == 1 && is_array(func_get_arg(0))) - { - foreach (func_get_arg(0) as $key => $value) - { - $this->customValues[$key] = $value; - } - } - else - throw new Exception('Invalid number of custom values provided for the method "setCustomValues"'); - - return $this; - } - - /** - * @param array $data - * @return $this - */ - public function setData(array $data) - { - $this->data = $data; - return $this; - } - - /** - * @param $url - * @return $this - */ - public function setUrl($url) - { - $this->options['sAjaxSource'] = $url; - $this->options['bServerSide'] = true; - return $this; - } - - /** - * @return array - */ - public function getOptions() - { - return $this->options; - } - - /** - * @return array - */ - public function getCallbacks() - { - return $this->callbacks; - } - - /** - * @return array - */ - public function getCustomValues() - { - return $this->customValues; - } - - /** - * @return array - */ - public function getData() - { - return $this->data; - } - - /** - * @param null $view - * @return mixed - */ - public function render($view = null) - { - if( ! is_null($view)) - $this->table_view = $view; - - return View::make($this->table_view, $this->getViewParameters()); - } - - /** - * returns an array with the parameters that will be passed to the view when it's rendered - * @return array - */ - public function getViewParameters() - { - if(!isset($this->options['sAjaxSource'])) - { - $this->setUrl(Request::url()); - } - - // create mapping for frontend - if(!$this->createdMapping) - { - $this->createMapping(); - } - return array( - 'options' => $this->convertData(array_merge($this->options, $this->callbacks)), - 'values' => $this->customValues, - 'data' => $this->data, - 'columns' => array_combine($this->aliasColumns,$this->columns), - 'noScript' => $this->noScript, - 'id' => $this->idName, - 'class' => $this->className, - ); - } - - /** - * Instructs the table not to echo the javascript - * - * @return $this - */ - public function noScript() - { - $this->noScript = true; - return $this; - } - - private function convertData($options) { - $is_obj = false; - $first = true; - $data = ""; - foreach ($options as $k => $o) { - if ($first == true) { - if (!is_numeric($k)) { - $is_obj = true; - } - $first = false; - } else { - $data .= ",\n"; - } - if (!is_numeric($k)) { - $data .= json_encode($k) . ":"; - } - if (is_string($o)) { - if (@preg_match("#^\s*function\s*\([^\)]*#", $o)) { - $data .= $o; - } else { - $data .= json_encode($o); - } - } else { - if (is_array($o)) { - $data .= $this->convertData($o); - } else { - $data .= json_encode($o); - } - } - } - - if ($is_obj) { - $data = "{ $data }"; - } else { - $data = "[ $data ]"; - } - - return $data; - } - - public function script($view = null) - { - if( ! is_null($view)) - $this->script_view = $view; - - // create mapping for frontend - if(!$this->createdMapping) - { - $this->createMapping(); - } - - return View::make($this->script_view,array( - 'options' => $this->convertData(array_merge($this->options, $this->callbacks)), - 'id' => $this->idName, - )); - } - - public function getId() - { - return $this->idName; - } - - public function setId($id = '') - { - $this->idName = empty($id)? str_random(8) : $id; - return $this; - } - - public function getClass() - { - return $this->className; - } - - public function setClass($class) - { - $this->className = $class; - return $this; - } - - public function setAliasMapping($value) - { - $this->createdMapping = !$value; - return $this; - } - - //--------------------PRIVATE FUNCTIONS - - private function createMapping() - { - // set options for better handling - // merge with existing options - if(!array_key_exists('aoColumns', $this->options)) - { - $this->options['aoColumns'] = array(); - } - $matching = array(); - $i = 0; - foreach($this->aliasColumns as $name) - { - if(array_key_exists($i,$this->options['aoColumns'])) - { - $this->options['aoColumns'][$i] = array_merge_recursive($this->options['aoColumns'][$i],array('mData' => $name)); - } - else - { - $this->options['aoColumns'][$i] = array('mData' => $name); - } - $i++; - } - $this->createdMapping = true; - //dd($matching); - return $matching; - } -} diff --git a/vendor/chumper/datatable/src/config/.gitkeep b/vendor/chumper/datatable/src/config/.gitkeep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/vendor/chumper/datatable/src/config/config.php b/vendor/chumper/datatable/src/config/config.php deleted file mode 100644 index 0134218023..0000000000 --- a/vendor/chumper/datatable/src/config/config.php +++ /dev/null @@ -1,146 +0,0 @@ - array( - - /* - |-------------------------------------------------------------------------- - | Table class - |-------------------------------------------------------------------------- - | - | Class(es) added to the table - | Supported: string - | - */ - - 'class' => 'table table-bordered', - - /* - |-------------------------------------------------------------------------- - | Table ID - |-------------------------------------------------------------------------- - | - | ID given to the table. Used for connecting the table and the Datatables - | jQuery plugin. If left empty a random ID will be generated. - | Supported: string - | - */ - - 'id' => '', - - /* - |-------------------------------------------------------------------------- - | DataTable options - |-------------------------------------------------------------------------- - | - | jQuery dataTable plugin options. The array will be json_encoded and - | passed through to the plugin. See https://datatables.net/usage/options - | for more information. - | Supported: array - | - */ - - 'options' => array( - - "sPaginationType" => "full_numbers", - - "bProcessing" => false - - ), - - /* - |-------------------------------------------------------------------------- - | DataTable callbacks - |-------------------------------------------------------------------------- - | - | jQuery dataTable plugin callbacks. The array will be json_encoded and - | passed through to the plugin. See https://datatables.net/usage/callbacks - | for more information. - | Supported: array - | - */ - - 'callbacks' => array(), - - /* - |-------------------------------------------------------------------------- - | Skip javascript in table template - |-------------------------------------------------------------------------- - | - | Determines if the template should echo the javascript - | Supported: boolean - | - */ - - 'noScript' => false, - - - /* - |-------------------------------------------------------------------------- - | Table view - |-------------------------------------------------------------------------- - | - | Template used to render the table - | Supported: string - | - */ - - 'table_view' => 'chumper.datatable::template', - - - /* - |-------------------------------------------------------------------------- - | Script view - |-------------------------------------------------------------------------- - | - | Template used to render the javascript - | Supported: string - | - */ - - 'script_view' => 'chumper.datatable::javascript', - ), - - - /* - |-------------------------------------------------------------------------- - | Engine specific configuration options. - |-------------------------------------------------------------------------- - | - */ - - 'engine' => array( - - /* - |-------------------------------------------------------------------------- - | Search for exact words - |-------------------------------------------------------------------------- - | - | If the search should be done with exact matching - | Supported: boolean - | - */ - - 'exactWordSearch' => false, - - ), - /* - |-------------------------------------------------------------------------- - | Allow overrides Datatable core classes - |-------------------------------------------------------------------------- - | - */ - 'classmap' => array( - 'CollectionEngine' => 'Chumper\Datatable\Engines\CollectionEngine', - 'QueryEngine' => 'Chumper\Datatable\Engines\QueryEngine', - 'Table' => 'Chumper\Datatable\Table', - ) -); diff --git a/vendor/chumper/datatable/src/views/javascript.blade.php b/vendor/chumper/datatable/src/views/javascript.blade.php deleted file mode 100644 index 8e216c848f..0000000000 --- a/vendor/chumper/datatable/src/views/javascript.blade.php +++ /dev/null @@ -1,8 +0,0 @@ - diff --git a/vendor/chumper/datatable/src/views/template.blade.php b/vendor/chumper/datatable/src/views/template.blade.php deleted file mode 100644 index d6c226407b..0000000000 --- a/vendor/chumper/datatable/src/views/template.blade.php +++ /dev/null @@ -1,27 +0,0 @@ - - - @for ($i = 0; $i < count($columns); $i++) - - @endfor - - - - @foreach($columns as $i => $c) - - @endforeach - - - - @foreach($data as $d) - - @foreach($d as $dd) - - @endforeach - - @endforeach - -
{!! $c !!}
{!! $dd !!}
- -@if (!$noScript) - @include(Config::get('chumper.datatable.table.script_view'), array('id' => $id, 'options' => $options)) -@endif diff --git a/vendor/chumper/datatable/tests/.gitkeep b/vendor/chumper/datatable/tests/.gitkeep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/vendor/chumper/datatable/tests/Columns/DateColumnTest.php b/vendor/chumper/datatable/tests/Columns/DateColumnTest.php deleted file mode 100644 index a5df9601a6..0000000000 --- a/vendor/chumper/datatable/tests/Columns/DateColumnTest.php +++ /dev/null @@ -1,56 +0,0 @@ -shouldReceive('toDateString') - ->withNoArgs()->once() - ->andReturn('fooBar'); - - $column2 = new DateColumn('foo', DateColumn::TIME, 'foo'); - $c->shouldReceive('toTimeString') - ->withNoArgs()->once() - ->andReturn('fooBar'); - - $column3 = new DateColumn('foo', DateColumn::DATE_TIME, 'foo'); - $c->shouldReceive('toDateTimeString') - ->withNoArgs()->once() - ->andReturn('fooBar'); - - $column4 = new DateColumn('foo', DateColumn::CUSTOM, 'foo'); - $c->shouldReceive('format') - ->with('foo')->once() - ->andReturn('fooBar'); - - $column5 = new DateColumn('foo', DateColumn::FORMATTED_DATE, 'foo'); - $c->shouldReceive('toFormattedDateString') - ->withNoArgs()->once() - ->andReturn('fooBar'); - - $column6 = new DateColumn('foo', DateColumn::DAY_DATE, 'foo'); - $c->shouldReceive('toDayDateTimeString') - ->withNoArgs()->once() - ->andReturn('fooBar'); - - //now test - $this->assertEquals('fooBar', $column1->run(array('foo' => $c))); - $this->assertEquals('fooBar', $column2->run(array('foo' => $c))); - $this->assertEquals('fooBar', $column3->run(array('foo' => $c))); - $this->assertEquals('fooBar', $column4->run(array('foo' => $c))); - $this->assertEquals('fooBar', $column5->run(array('foo' => $c))); - $this->assertEquals('fooBar', $column6->run(array('foo' => $c))); - } - - protected function tearDown() - { - Mockery::close(); - } -} - \ No newline at end of file diff --git a/vendor/chumper/datatable/tests/Columns/FunctionColumnTest.php b/vendor/chumper/datatable/tests/Columns/FunctionColumnTest.php deleted file mode 100644 index 68ed7562ba..0000000000 --- a/vendor/chumper/datatable/tests/Columns/FunctionColumnTest.php +++ /dev/null @@ -1,31 +0,0 @@ -assertEquals('FooBar', $column->run(array())); - } - - public function testAdvanced() - { - $column = new FunctionColumn('foo',function($model){ - return $model['text']; - }); - $this->assertEquals('FooBar', $column->run(array('text' => 'FooBar'))); - } - - public function testAdvanced2() - { - $column = new FunctionColumn('foo',function($model){ - return $model['text'].'Bar'; - }); - $this->assertEquals('FooBar', $column->run(array('text' => 'Foo'))); - } - -} diff --git a/vendor/chumper/datatable/tests/Columns/TextColumnTest.php b/vendor/chumper/datatable/tests/Columns/TextColumnTest.php deleted file mode 100644 index f6a617f46a..0000000000 --- a/vendor/chumper/datatable/tests/Columns/TextColumnTest.php +++ /dev/null @@ -1,13 +0,0 @@ -assertEquals('FooBar', $column->run(array())); - } - -} diff --git a/vendor/chumper/datatable/tests/DatatableTest.php b/vendor/chumper/datatable/tests/DatatableTest.php deleted file mode 100644 index e1af22ddd3..0000000000 --- a/vendor/chumper/datatable/tests/DatatableTest.php +++ /dev/null @@ -1,61 +0,0 @@ -zeroOrMoreTimes()->with("chumper.datatable.engine")->andReturn( - array( - 'exactWordSearch' => false, - ) - ); - Config::shouldReceive('get')->zeroOrMoreTimes()->with("chumper.datatable.classmap.QueryEngine",NULL)->andReturn('Chumper\Datatable\Engines\QueryEngine'); - Config::shouldReceive('get')->zeroOrMoreTimes()->with("chumper.datatable.classmap.CollectionEngine",NULL)->andReturn('Chumper\Datatable\Engines\CollectionEngine'); - Config::shouldReceive('get')->zeroOrMoreTimes()->with("chumper.datatable.classmap.Table",NULL)->andReturn('Chumper\Datatable\Table'); - - Config::shouldReceive('get')->zeroOrMoreTimes()->with("chumper.datatable.table")->andReturn( - array( - 'class' => 'table table-bordered', - 'id' => '', - 'options' => array( - "sPaginationType" => "full_numbers", - "bProcessing" => false - ), - 'callbacks' => array(), - 'noScript' => false, - 'table_view' => 'datatable::template', - 'script_view' => 'datatable::javascript', - ) - ); - - $this->dt = new Datatable; - $this->mock = Mockery::mock('Illuminate\Database\Query\Builder'); - } - - public function testReturnInstances() - { - $api = $this->dt->query($this->mock); - - $this->assertInstanceOf('Chumper\Datatable\Engines\QueryEngine', $api); - - $api = $this->dt->collection(new Collection()); - - $this->assertInstanceOf('Chumper\Datatable\Engines\CollectionEngine', $api); - - $table = $this->dt->table(); - - $this->assertInstanceOf('Chumper\Datatable\Table', $table); - } - -} diff --git a/vendor/chumper/datatable/tests/Engines/BaseEngineTest.php b/vendor/chumper/datatable/tests/Engines/BaseEngineTest.php deleted file mode 100644 index 5db48e8fe6..0000000000 --- a/vendor/chumper/datatable/tests/Engines/BaseEngineTest.php +++ /dev/null @@ -1,113 +0,0 @@ -zeroOrMoreTimes()->with("chumper.datatable.engine")->andReturn( - array( - 'exactWordSearch' => false, - ) - ); - - $this->collection = new Collection(); - $this->engine = new CollectionEngine($this->collection); - } - - - /** - * @expectedException Exception - */ - public function testAddColumn() - { - $this->engine->addColumn('foo', 'bar'); - - $this->assertInstanceOf( - 'Chumper\Datatable\Columns\TextColumn', - $this->engine->getColumn('foo') - ); - - $this->engine->addColumn('foo2', function($model){return $model->fooBar;}); - - $this->assertInstanceOf( - 'Chumper\Datatable\Columns\FunctionColumn', - $this->engine->getColumn('foo2') - ); - - $this->assertEquals(array(1 => 'foo2', 0 => 'foo'), $this->engine->getOrder()); - - $this->engine->addColumn(); - } - - public function testClearColumns() - { - $this->engine->addColumn('foo','Bar'); - $this->assertInstanceOf( - 'Chumper\Datatable\Columns\TextColumn', - $this->engine->getColumn('foo') - ); - - $this->engine->clearColumns(); - $this->assertEquals(array(), $this->engine->getOrder()); - } - - public function testSearchColumns() - { - $this->engine->searchColumns('id'); - - $this->assertEquals(array('id'), $this->engine->getSearchingColumns()); - - $this->engine->searchColumns('name', 'email'); - - $this->assertEquals(array('name','email'), $this->engine->getSearchingColumns()); - - $this->engine->searchColumns(array('foo', 'bar')); - - $this->assertEquals(array('foo', 'bar'), $this->engine->getSearchingColumns()); - } - - public function testOrderColumns() - { - $this->engine->orderColumns('id'); - - $this->assertEquals(array('id'), $this->engine->getOrderingColumns()); - - $this->engine->orderColumns('name', 'email'); - - $this->assertEquals(array('name','email'), $this->engine->getOrderingColumns()); - - $this->engine->orderColumns(array('foo', 'bar')); - - $this->assertEquals(array('foo', 'bar'), $this->engine->getOrderingColumns()); - } - - public function testShowColumns() - { - $this->engine->showColumns('id'); - - $this->assertEquals(array('id'), $this->engine->getOrder()); - - $this->engine->showColumns('name', 'email'); - - $this->assertEquals(array('id','name','email'), $this->engine->getOrder()); - - $this->engine->showColumns(array('foo', 'bar')); - - $this->assertEquals(array('id','name','email', 'foo', 'bar'), $this->engine->getOrder()); - } -} - \ No newline at end of file diff --git a/vendor/chumper/datatable/tests/Engines/CollectionEngineTest.php b/vendor/chumper/datatable/tests/Engines/CollectionEngineTest.php deleted file mode 100644 index c9cbaaa412..0000000000 --- a/vendor/chumper/datatable/tests/Engines/CollectionEngineTest.php +++ /dev/null @@ -1,328 +0,0 @@ -set('chumper.datatable.engine', array( - 'exactWordSearch' => false, - )); - } - - public function setUp() - { - - parent::setUp(); - - $this->collection = Mockery::mock('Illuminate\Support\Collection'); - $this->c = new CollectionEngine($this->collection); - } - - public function testOrder() - { - $should = array( - array( - 'id' => 'eoo' - ), - array( - 'id' => 'foo' - ) - ); - - Input::replace( - array( - 'iSortCol_0' => 0, - 'sSortDir_0' => 'asc', - ) - ); - - $engine = new CollectionEngine(new Collection($this->getTestArray())); - $engine->addColumn(new FunctionColumn('id', function($model){return $model['id'];})); - $engine->setAliasMapping(); - $this->assertEquals($should, $engine->getArray()); - - Input::merge( - array( - 'iSortCol_0' => 0, - 'sSortDir_0' => 'desc' - ) - ); - - $should2 = array( - array( - 'id' => 'foo' - ), - array( - 'id' => 'eoo' - ) - ); - - $this->assertEquals($should2, $engine->getArray()); - - } - - public function testSearch() - { - // Facade expection - Input::replace( - array( - 'sSearch' => 'eoo' - ) - ); - - $engine = new CollectionEngine(new Collection($this->getTestArray())); - $engine->addColumn($this->getTestColumns()); - $engine->searchColumns('id'); - $engine->setAliasMapping(); - - $should = '{"aaData":[{"id":"eoo"}],"sEcho":0,"iTotalRecords":2,"iTotalDisplayRecords":1}'; - $actual = $engine->make()->getContent(); - - $this->assertEquals($should,$actual); - //------------------TEST 2----------------- - // search in outputed data - $engine = new CollectionEngine(new Collection(array(array('foo', 'foo2', 'foo3'),array('bar', 'bar2', 'bar3')))); - $engine->addColumn(new FunctionColumn('bla', function($row){return $row[0]." - ".$row[1];})); - $engine->addColumn(new FunctionColumn('1', function($row){return $row[2];})); - $engine->addColumn(new FunctionColumn('bla3', function($row){return $row[0]." - ".$row[2];})); - $engine->searchColumns("bla",1); - $engine->setAliasMapping(); - - Input::replace( - array( - 'sSearch' => 'foo2' - ) - ); - - $should = array( - array( - 'bla' => 'foo - foo2', - '1' => 'foo3', - 'bla3' => 'foo - foo3' - ) - ); - - $response = json_decode($engine->make()->getContent()); - $this->assertEquals(json_encode($should), json_encode((array)($response->aaData))); - - //------------------TEST 3----------------- - // search in initial data - // TODO: Search in initial data columns? - - $engine = new CollectionEngine(new Collection(array(array('foo', 'foo2', 'foo3'),array('bar', 'bar2', 'bar3')))); - $engine->addColumn(new FunctionColumn('bla3', function($row){return $row[0]." - ".$row[2];})); - $engine->addColumn(new FunctionColumn('1', function($row){return $row[1];})); - $engine->searchColumns("bla3",1); - $engine->setAliasMapping(); - - Input::replace( - array( - 'sSearch' => 'foo2' - ) - ); - - $should = array( - array( - 'bla3' => 'foo - foo3', - '1' => 'foo2' - ) - ); - - $response = json_decode($engine->make()->getContent()); - $this->assertEquals(json_encode($should), json_encode($response->aaData)); - } - - public function testSkip() - { - $engine = new CollectionEngine(new Collection($this->getTestArray())); - - $engine->addColumn($this->getTestColumns()); - $engine->setAliasMapping(); - - Input::replace( - array( - 'iDisplayStart' => 1 - ) - ); - - $should = array( - array( - 'id' => 'eoo', - ) - ); - $this->assertEquals($should, $engine->getArray()); - } - - public function testTake() - { - Input::replace( - array( - 'iDisplayLength' => 1 - ) - ); - - $engine = new CollectionEngine(new Collection($this->getTestArray())); - $engine->addColumn($this->getTestColumns()); - $engine->setAliasMapping(); - $engine->make(); - - $should = array( - array( - 'id' => 'foo', - ) - ); - $this->assertEquals($should, $engine->getArray()); - } - - public function testComplex() - { - $engine = new CollectionEngine(new Collection($this->getRealArray())); - $this->addRealColumns($engine); - $engine->searchColumns('foo','bar'); - $engine->setAliasMapping(); - - Input::replace( - array( - 'sSearch' => 't' - ) - ); - - $test = json_decode($engine->make()->getContent()); - $test = $test->aaData; - - $this->assertTrue($this->arrayHasKeyValue('foo','Nils',(array) $test)); - $this->assertTrue($this->arrayHasKeyValue('foo','Taylor',(array) $test)); - - //Test2 - $engine = new CollectionEngine(new Collection($this->getRealArray())); - $this->addRealColumns($engine); - $engine->searchColumns('foo','bar'); - $engine->setAliasMapping(); - - Input::replace( - array( - 'sSearch' => 'plasch' - ) - ); - - $test = json_decode($engine->make()->getContent()); - $test = $test->aaData; - - $this->assertTrue($this->arrayHasKeyValue('foo','Nils',(array) $test)); - $this->assertFalse($this->arrayHasKeyValue('foo','Taylor',(array) $test)); - - //test3 - $engine = new CollectionEngine(new Collection($this->getRealArray())); - $this->addRealColumns($engine); - $engine->searchColumns('foo','bar'); - $engine->setAliasMapping(); - - Input::replace( - array( - 'sSearch' => 'tay' - ) - ); - - $test = json_decode($engine->make()->getContent()); - $test = $test->aaData; - - - - $this->assertFalse($this->arrayHasKeyValue('foo','Nils',(array) $test)); - $this->assertTrue($this->arrayHasKeyValue('foo','Taylor',(array) $test)); - - //test4 - $engine = new CollectionEngine(new Collection($this->getRealArray())); - $this->addRealColumns($engine); - $engine->searchColumns('foo','bar'); - $engine->setAliasMapping(); - - Input::replace( - array( - 'sSearch' => 'O' - ) - ); - - $test = json_decode($engine->make()->getContent()); - $test = $test->aaData; - - $this->assertFalse($this->arrayHasKeyValue('foo','Nils',(array) $test)); - $this->assertTrue($this->arrayHasKeyValue('foo','Taylor',(array) $test)); - - } - - public function tearDown() - { - Mockery::close(); - } - - private function getTestArray() - { - return array( - array( - 'id' => 'foo' - ), - array( - 'id' => 'eoo' - ) - ); - } - private function getRealArray() - { - return array( - array( - 'name' => 'Nils Plaschke', - 'email'=> 'github@nilsplaschke.de' - ), - array( - 'name' => 'Taylor Otwell', - 'email'=> 'taylorotwell@gmail.com' - ) - ); - } - - private function addRealColumns($engine) - { - $engine->addColumn(new FunctionColumn('foo', function($m){return $m['name'];})); - $engine->addColumn(new FunctionColumn('bar', function($m){return $m['email'];})); - } - - private function getTestColumns() - { - return new FunctionColumn('id', function($row){return $row['id'];}); - } - - private function arrayHasKeyValue($key,$value,$array) - { - $array = array_pluck($array,$key); - foreach ($array as $val) - { - if(str_contains($val, $value)) - return true; - } - return false; - - } -} \ No newline at end of file diff --git a/vendor/chumper/datatable/tests/Engines/QueryEngineTest.php b/vendor/chumper/datatable/tests/Engines/QueryEngineTest.php deleted file mode 100644 index 6798a2b2ee..0000000000 --- a/vendor/chumper/datatable/tests/Engines/QueryEngineTest.php +++ /dev/null @@ -1,251 +0,0 @@ -zeroOrMoreTimes()->with("chumper.datatable.engine")->andReturn( - array( - 'exactWordSearch' => false, - ) - ); - - $this->builder = Mockery::mock('Illuminate\Database\Query\Builder'); - - $this->c = new QueryEngine($this->builder); - } - - public function testOrder() - { - $this->builder->shouldReceive('orderBy')->with('id', BaseEngine::ORDER_ASC); - - Input::merge( - array( - 'iSortCol_0' => 0, - 'sSortDir_0' => 'asc' - ) - ); - - //-- - - $this->builder->shouldReceive('orderBy')->with('id', BaseEngine::ORDER_DESC); - - Input::merge( - array( - 'iSortCol_0' => 0, - 'sSortDir_0' => 'desc' - ) - ); - - } - - public function testSearch() - { - $this->builder->shouldReceive('where')->withAnyArgs()->andReturn($this->builder); - $this->builder->shouldReceive('get')->once()->andReturn(new Collection($this->getRealArray())); - $this->builder->shouldReceive('count')->twice()->andReturn(10); - $this->builder->shouldReceive('orderBy')->withAnyArgs()->andReturn($this->builder); - - $this->c = new QueryEngine($this->builder); - - $this->addRealColumns($this->c); - $this->c->searchColumns('foo'); - - Input::merge( - array( - 'sSearch' => 'test' - ) - ); - - $test = json_decode($this->c->make()->getContent()); - $test = $test->aaData; - } - - public function testSkip() - { - $this->builder->shouldReceive('skip')->once()->with(1)->andReturn($this->builder); - $this->builder->shouldReceive('get')->once()->andReturn(new Collection($this->getRealArray())); - $this->builder->shouldReceive('count')->twice()->andReturn(10); - $this->builder->shouldReceive('orderBy')->withAnyArgs()->andReturn($this->builder); - - $this->c = new QueryEngine($this->builder); - - $this->addRealColumns($this->c); - - Input::merge( - array( - 'iDisplayStart' => 1, - 'sSearch' => null - ) - ); - - $this->c->searchColumns('foo'); - - $test = json_decode($this->c->make()->getContent()); - $test = $test->aaData; - } - - public function testTake() - { - $this->builder->shouldReceive('take')->once()->with(1)->andReturn($this->builder); - $this->builder->shouldReceive('get')->once()->andReturn(new Collection($this->getRealArray())); - $this->builder->shouldReceive('count')->twice()->andReturn(10); - $this->builder->shouldReceive('orderBy')->withAnyArgs()->andReturn($this->builder); - - $this->c = new QueryEngine($this->builder); - - $this->addRealColumns($this->c); - - Input::merge( - array( - 'iDisplayLength' => 1, - 'sSearch' => null, - 'iDisplayStart' => null - ) - ); - - $this->c->searchColumns('foo'); - - $test = json_decode($this->c->make()->getContent()); - $test = $test->aaData; - } - - public function testComplex() - { - - - $this->builder->shouldReceive('get')->andReturn(new Collection($this->getRealArray())); - $this->builder->shouldReceive('where')->withAnyArgs()->andReturn($this->builder); - $this->builder->shouldReceive('count')->times(8)->andReturn(10); - - $engine = new QueryEngine($this->builder); - - $this->addRealColumns($engine); - $engine->searchColumns('foo','bar'); - $engine->setAliasMapping(); - - Input::replace( - array( - 'sSearch' => 't', - ) - ); - - $test = json_decode($engine->make()->getContent()); - $test = $test->aaData; - - $this->assertTrue($this->arrayHasKeyValue('foo','Nils',$test)); - $this->assertTrue($this->arrayHasKeyValue('foo','Taylor',$test)); - - //Test2 - $engine = new QueryEngine($this->builder); - - $this->addRealColumns($engine); - $engine->searchColumns('foo','bar'); - $engine->setAliasMapping(); - - Input::replace( - array( - 'sSearch' => 'plasch', - ) - ); - - $test = json_decode($engine->make()->getContent()); - $test = $test->aaData; - - $this->assertTrue($this->arrayHasKeyValue('foo','Nils',$test)); - $this->assertTrue($this->arrayHasKeyValue('foo','Taylor',$test)); - - //test3 - $engine = new QueryEngine($this->builder); - - $this->addRealColumns($engine); - $engine->searchColumns('foo','bar'); - $engine->setAliasMapping(); - - Input::replace( - array( - 'sSearch' => 'tay', - ) - ); - - $test = json_decode($engine->make()->getContent()); - $test = $test->aaData; - - $this->assertTrue($this->arrayHasKeyValue('foo','Nils',$test)); - $this->assertTrue($this->arrayHasKeyValue('foo','Taylor',$test)); - - //test4 - $engine = new QueryEngine($this->builder); - - $this->addRealColumns($engine); - $engine->searchColumns('foo','bar'); - $engine->setAliasMapping(); - - Input::replace( - array( - 'sSearch' => '0', - ) - ); - - $test = json_decode($engine->make()->getContent()); - $test = $test->aaData; - - $this->assertTrue($this->arrayHasKeyValue('foo','Nils',$test)); - $this->assertTrue($this->arrayHasKeyValue('foo','Taylor',$test)); - } - - protected function tearDown() - { - Mockery::close(); - } - - private function getRealArray() - { - return array( - array( - 'name' => 'Nils Plaschke', - 'email'=> 'github@nilsplaschke.de' - ), - array( - 'name' => 'Taylor Otwell', - 'email'=> 'taylorotwell@gmail.com' - ) - ); - } - - private function addRealColumns($engine) - { - $engine->addColumn(new FunctionColumn('foo', function($m){return $m['name'];})); - $engine->addColumn(new FunctionColumn('bar', function($m){return $m['email'];})); - } - - private function arrayHasKeyValue($key,$value,$array) - { - $array = array_pluck($array,$key); - foreach ($array as $val) - { - if(str_contains($val, $value)) - return true; - } - return false; - - } - -} diff --git a/vendor/chumper/datatable/tests/TableTest.php b/vendor/chumper/datatable/tests/TableTest.php deleted file mode 100644 index 84a0f48a73..0000000000 --- a/vendor/chumper/datatable/tests/TableTest.php +++ /dev/null @@ -1,179 +0,0 @@ -set('chumper.datatable.table', array( - 'class' => 'table table-bordered', - 'id' => '', - 'options' => array( - "sPaginationType" => "full_numbers", - "bProcessing" => false - ), - 'callbacks' => array(), - 'noScript' => false, - 'table_view' => 'datatable::template', - 'script_view' => 'datatable::javascript', - )); - } - - public function setUp() - { - parent::setUp(); - - $this->table = new Table(); - } - - /** - * @expectedException Exception - */ - public function testSetOptions() - { - $this->table->setOptions('foo','bar'); - - $this->table->setOptions(array( - 'foo2' => 'bar2', - 'foo3' => 'bar3' - )); - - $this->table->setOptions('foo', 'bar', 'baz'); - } - - /** - * @expectedException Exception - */ - public function testSetCallbacks() - { - $this->table->setCallbacks('foo', 'bar'); - $this->assertArrayHasKey('foo', $this->table->getCallbacks()); - - $this->table->setCallbacks(array( - 'foo2' => 'bar2', - 'foo3' => 'bar3' - )); - $this->assertArrayHasKey('foo2', $this->table->getCallbacks()); - $this->assertArrayHasKey('foo3', $this->table->getCallbacks()); - - $this->table->setCallbacks('foo', 'bar', 'baz'); - $this->assertTrue(False); // should throw exception before here - } - - public function testSetNamedFunctionAsCallback() - { - //set an anonymous function - $this->table->setCallbacks(['foo'=>'function(){ return foo; }']); - //set a named function - $this->table->setCallbacks(['bar'=>'myBar']); - $parameters = $this->table->getViewParameters(); - - //an anonymous function should be included as it is. - $this->assertThat($parameters['options'],$this->stringContains('"foo":function(){ return foo; }') ); - //the callback it's a function name, it shouldn't be quoted - $this->assertThat($parameters['options'],$this->stringContains('"bar":myBar') ); - } - - /** - * @expectedException Exception - */ - public function testSetCustomValues() - { - $this->table->setCustomValues('foo', 'bar'); - $this->assertArrayHasKey('foo', $this->table->getCustomValues()); - - $this->table->setCustomValues(array( - 'foo2' => 'bar2', - 'foo3' => 'bar3' - )); - $this->assertArrayHasKey('foo2', $this->table->getCustomValues()); - $this->assertArrayHasKey('foo3', $this->table->getCustomValues()); - - $this->table->setCustomValues('foo', 'bar', 'baz'); - $this->assertTrue(False); // should throw exception before here - } - - public function testAddColumn() - { - $this->table->addColumn('foo'); - - $this->assertEquals(1, $this->table->countColumns()); - - $this->table->addColumn('foo1','foo2'); - - $this->assertEquals(3, $this->table->countColumns()); - - $this->table->addColumn(array('foo3','foo4')); - - $this->assertEquals(5, $this->table->countColumns()); - } - - public function testRender() - { - - View::shouldReceive('make')->once() - ->with('datatable::template', \Mockery::any())->andReturn(true); - - $this->table->setUrl('fooBar'); - $table1 = $this->table->addColumn('foo')->render(); - $this->assertEquals(array( - 'options' => '{ "sPaginationType":"full_numbers",'.PHP_EOL - . '"bProcessing":false,'.PHP_EOL - . '"sAjaxSource":"fooBar",'.PHP_EOL - . '"bServerSide":true }', - 'values' => array(), - 'data' => array(), - 'columns' => array(1=>'foo'), - 'noScript' => false, - 'class' => $this->table->getClass(), - 'id' => $this->table->getId(), - - ), $this->table->getViewParameters()); - $this->assertTrue($table1); - } - - public function testSetData() - { - $data = array( - array( - 'foo', - 'bar' - ), - array( - 'foo2', - 'bar2' - ), - ); - - $this->table->setData($data); - $this->assertEquals($data,$this->table->getData()); - - } - - public function testSetUrl() - { - $this->table->setUrl('foo/url'); - - $this->assertArrayHasKey('bServerSide',$this->table->getOptions()); - $this->assertArrayHasKey('sAjaxSource',$this->table->getOptions()); - - $return = $this->table->getOptions(); - - $this->assertEquals('foo/url',$return['sAjaxSource']); - } - - public function tearDown() - { - Mockery::close(); - } -} \ No newline at end of file diff --git a/vendor/chumper/zipper/.gitignore b/vendor/chumper/zipper/.gitignore deleted file mode 100644 index fc9a5077c5..0000000000 --- a/vendor/chumper/zipper/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -/vendor -composer.phar -composer.lock -.DS_Store -/.idea \ No newline at end of file diff --git a/vendor/chumper/zipper/.php_cs b/vendor/chumper/zipper/.php_cs deleted file mode 100644 index ed80a6d83c..0000000000 --- a/vendor/chumper/zipper/.php_cs +++ /dev/null @@ -1,34 +0,0 @@ -setRiskyAllowed(true) - ->setRules(array( - '@Symfony' => true, - '@Symfony:risky' => true, - '@PHP56Migration' => true, - 'array_syntax' => array('syntax' => 'short'), - 'combine_consecutive_unsets' => true, - // one should use PHPUnit methods to set up expected exception instead of annotations - 'general_phpdoc_annotation_remove' => array('expectedException', 'expectedExceptionMessage', 'expectedExceptionMessageRegExp'), - 'heredoc_to_nowdoc' => false, - 'no_extra_consecutive_blank_lines' => array('break', 'continue', 'extra', 'return', 'throw', 'use', 'parenthesis_brace_block', 'square_brace_block', 'curly_brace_block'), - 'no_unreachable_default_argument_value' => true, - 'no_useless_else' => true, - 'no_useless_return' => true, - 'ordered_class_elements' => true, - 'ordered_imports' => true, - 'php_unit_strict' => true, - 'phpdoc_add_missing_param_annotation' => true, - 'phpdoc_order' => true, - 'psr4' => true, - 'strict_comparison' => true, - 'strict_param' => true, - 'no_php4_constructor' => true, - 'no_short_echo_tag' => true, - 'phpdoc_summary' => false, - )) - ->setFinder( - PhpCsFixer\Finder::create() - ->in(__DIR__) - ) -; \ No newline at end of file diff --git a/vendor/chumper/zipper/.php_cs.cache b/vendor/chumper/zipper/.php_cs.cache deleted file mode 100644 index 33a72f43ea..0000000000 --- a/vendor/chumper/zipper/.php_cs.cache +++ /dev/null @@ -1 +0,0 @@ -{"php":"7.0.15","version":"2.0.0:v2.0.0#f3baf72eb2f58bf275b372540f5b47d25aed910f","rules":{"encoding":true,"full_opening_tag":true,"blank_line_after_namespace":true,"braces":true,"class_definition":{"singleLine":true},"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_constants":true,"lowercase_keywords":true,"method_argument_space":true,"no_closing_tag":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":true,"single_import_per_statement":true,"single_line_after_imports":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"visibility_required":true,"binary_operator_spaces":{"align_double_arrow":false,"align_equals":false},"blank_line_after_opening_tag":true,"blank_line_before_return":true,"cast_spaces":true,"concat_space":{"spacing":"none"},"declare_equal_normalize":true,"function_typehint_space":true,"hash_to_slash_comment":true,"include":true,"lowercase_cast":true,"method_separation":true,"native_function_casing":true,"new_with_braces":true,"no_alias_functions":true,"no_blank_lines_after_class_opening":true,"no_blank_lines_after_phpdoc":true,"no_empty_comment":true,"no_empty_phpdoc":true,"no_empty_statement":true,"no_extra_consecutive_blank_lines":["break","continue","extra","return","throw","use","parenthesis_brace_block","square_brace_block","curly_brace_block"],"no_leading_import_slash":true,"no_leading_namespace_whitespace":true,"no_mixed_echo_print":{"use":"echo"},"no_multiline_whitespace_around_double_arrow":true,"no_short_bool_cast":true,"no_singleline_whitespace_before_semicolons":true,"no_spaces_around_offset":true,"no_trailing_comma_in_list_call":true,"no_trailing_comma_in_singleline_array":true,"no_unneeded_control_parentheses":true,"no_unreachable_default_argument_value":true,"no_unused_imports":true,"no_whitespace_before_comma_in_array":true,"no_whitespace_in_blank_line":true,"normalize_index_brace":true,"object_operator_without_whitespace":true,"php_unit_fqcn_annotation":true,"phpdoc_align":true,"phpdoc_annotation_without_dot":true,"phpdoc_indent":true,"phpdoc_inline_tag":true,"phpdoc_no_access":true,"phpdoc_no_alias_tag":true,"phpdoc_no_empty_return":true,"phpdoc_no_package":true,"phpdoc_scalar":true,"phpdoc_separation":true,"phpdoc_single_line_var_spacing":true,"phpdoc_to_comment":true,"phpdoc_trim":true,"phpdoc_types":true,"phpdoc_var_without_name":true,"pre_increment":true,"return_type_declaration":true,"self_accessor":true,"short_scalar_cast":true,"single_blank_line_before_namespace":true,"single_quote":true,"space_after_semicolon":true,"standardize_not_equals":true,"ternary_operator_spaces":true,"trailing_comma_in_multiline_array":true,"trim_array_spaces":true,"unary_operator_spaces":true,"whitespace_after_comma_in_array":true,"php_unit_construct":true,"php_unit_dedicate_assert":true,"silenced_deprecation_error":true,"pow_to_exponentiation":true,"array_syntax":{"syntax":"short"},"combine_consecutive_unsets":true,"general_phpdoc_annotation_remove":["expectedException","expectedExceptionMessage","expectedExceptionMessageRegExp"],"no_useless_else":true,"no_useless_return":true,"ordered_class_elements":true,"ordered_imports":true,"php_unit_strict":true,"phpdoc_add_missing_param_annotation":true,"phpdoc_order":true,"psr4":true,"strict_comparison":true,"strict_param":true,"no_php4_constructor":true,"no_short_echo_tag":true},"hashes":{"src\/Chumper\/Zipper\/Facades\/Zipper.php":3336360490,"src\/Chumper\/Zipper\/Repositories\/RepositoryInterface.php":146020446,"src\/Chumper\/Zipper\/Repositories\/ZipRepository.php":1787403374,"src\/Chumper\/Zipper\/Zipper.php":3154847016,"src\/Chumper\/Zipper\/ZipperServiceProvider.php":3002562041,"tests\/ArrayArchive.php":1688992765,"tests\/Repositories\/ZipRepositoryTest.php":973823218,"tests\/ZipperTest.php":2774399588}} \ No newline at end of file diff --git a/vendor/chumper/zipper/.travis.yml b/vendor/chumper/zipper/.travis.yml deleted file mode 100644 index 3dac758f7b..0000000000 --- a/vendor/chumper/zipper/.travis.yml +++ /dev/null @@ -1,32 +0,0 @@ -language: php - -sudo: false - -php: - - 5.6 - - 7.0 - - 7.1 - -env: - global: - - setup=basic - -matrix: - fast_finish: true - include: - - php: 5.6 - env: setup=lowest - - php: 5.6 - env: setup=stable - - -before_install: - - composer self-update - - composer clear-cache - -install: - - if [[ $setup = 'basic' ]]; then travis_retry composer update --no-interaction --prefer-dist --no-suggest; fi - - if [[ $setup = 'stable' ]]; then travis_retry composer update --prefer-dist --no-interaction --prefer-stable --no-suggest; fi - - if [[ $setup = 'lowest' ]]; then travis_retry composer update --prefer-dist --no-interaction --prefer-lowest --prefer-stable --no-suggest; fi - -script: vendor/bin/phpunit diff --git a/vendor/chumper/zipper/LICENSE b/vendor/chumper/zipper/LICENSE deleted file mode 100644 index 37ec93a14f..0000000000 --- a/vendor/chumper/zipper/LICENSE +++ /dev/null @@ -1,191 +0,0 @@ -Apache License -Version 2.0, January 2004 -http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - -"License" shall mean the terms and conditions for use, reproduction, and -distribution as defined by Sections 1 through 9 of this document. - -"Licensor" shall mean the copyright owner or entity authorized by the copyright -owner that is granting the License. - -"Legal Entity" shall mean the union of the acting entity and all other entities -that control, are controlled by, or are under common control with that entity. -For the purposes of this definition, "control" means (i) the power, direct or -indirect, to cause the direction or management of such entity, whether by -contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the -outstanding shares, or (iii) beneficial ownership of such entity. - -"You" (or "Your") shall mean an individual or Legal Entity exercising -permissions granted by this License. - -"Source" form shall mean the preferred form for making modifications, including -but not limited to software source code, documentation source, and configuration -files. - -"Object" form shall mean any form resulting from mechanical transformation or -translation of a Source form, including but not limited to compiled object code, -generated documentation, and conversions to other media types. - -"Work" shall mean the work of authorship, whether in Source or Object form, made -available under the License, as indicated by a copyright notice that is included -in or attached to the work (an example is provided in the Appendix below). - -"Derivative Works" shall mean any work, whether in Source or Object form, that -is based on (or derived from) the Work and for which the editorial revisions, -annotations, elaborations, or other modifications represent, as a whole, an -original work of authorship. For the purposes of this License, Derivative Works -shall not include works that remain separable from, or merely link (or bind by -name) to the interfaces of, the Work and Derivative Works thereof. - -"Contribution" shall mean any work of authorship, including the original version -of the Work and any modifications or additions to that Work or Derivative Works -thereof, that is intentionally submitted to Licensor for inclusion in the Work -by the copyright owner or by an individual or Legal Entity authorized to submit -on behalf of the copyright owner. For the purposes of this definition, -"submitted" means any form of electronic, verbal, or written communication sent -to the Licensor or its representatives, including but not limited to -communication on electronic mailing lists, source code control systems, and -issue tracking systems that are managed by, or on behalf of, the Licensor for -the purpose of discussing and improving the Work, but excluding communication -that is conspicuously marked or otherwise designated in writing by the copyright -owner as "Not a Contribution." - -"Contributor" shall mean Licensor and any individual or Legal Entity on behalf -of whom a Contribution has been received by Licensor and subsequently -incorporated within the Work. - -2. Grant of Copyright License. - -Subject to the terms and conditions of this License, each Contributor hereby -grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, -irrevocable copyright license to reproduce, prepare Derivative Works of, -publicly display, publicly perform, sublicense, and distribute the Work and such -Derivative Works in Source or Object form. - -3. Grant of Patent License. - -Subject to the terms and conditions of this License, each Contributor hereby -grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, -irrevocable (except as stated in this section) patent license to make, have -made, use, offer to sell, sell, import, and otherwise transfer the Work, where -such license applies only to those patent claims licensable by such Contributor -that are necessarily infringed by their Contribution(s) alone or by combination -of their Contribution(s) with the Work to which such Contribution(s) was -submitted. If You institute patent litigation against any entity (including a -cross-claim or counterclaim in a lawsuit) alleging that the Work or a -Contribution incorporated within the Work constitutes direct or contributory -patent infringement, then any patent licenses granted to You under this License -for that Work shall terminate as of the date such litigation is filed. - -4. Redistribution. - -You may reproduce and distribute copies of the Work or Derivative Works thereof -in any medium, with or without modifications, and in Source or Object form, -provided that You meet the following conditions: - -You must give any other recipients of the Work or Derivative Works a copy of -this License; and -You must cause any modified files to carry prominent notices stating that You -changed the files; and -You must retain, in the Source form of any Derivative Works that You distribute, -all copyright, patent, trademark, and attribution notices from the Source form -of the Work, excluding those notices that do not pertain to any part of the -Derivative Works; and -If the Work includes a "NOTICE" text file as part of its distribution, then any -Derivative Works that You distribute must include a readable copy of the -attribution notices contained within such NOTICE file, excluding those notices -that do not pertain to any part of the Derivative Works, in at least one of the -following places: within a NOTICE text file distributed as part of the -Derivative Works; within the Source form or documentation, if provided along -with the Derivative Works; or, within a display generated by the Derivative -Works, if and wherever such third-party notices normally appear. The contents of -the NOTICE file are for informational purposes only and do not modify the -License. You may add Your own attribution notices within Derivative Works that -You distribute, alongside or as an addendum to the NOTICE text from the Work, -provided that such additional attribution notices cannot be construed as -modifying the License. -You may add Your own copyright statement to Your modifications and may provide -additional or different license terms and conditions for use, reproduction, or -distribution of Your modifications, or for any such Derivative Works as a whole, -provided Your use, reproduction, and distribution of the Work otherwise complies -with the conditions stated in this License. - -5. Submission of Contributions. - -Unless You explicitly state otherwise, any Contribution intentionally submitted -for inclusion in the Work by You to the Licensor shall be under the terms and -conditions of this License, without any additional terms or conditions. -Notwithstanding the above, nothing herein shall supersede or modify the terms of -any separate license agreement you may have executed with Licensor regarding -such Contributions. - -6. Trademarks. - -This License does not grant permission to use the trade names, trademarks, -service marks, or product names of the Licensor, except as required for -reasonable and customary use in describing the origin of the Work and -reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. - -Unless required by applicable law or agreed to in writing, Licensor provides the -Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, -including, without limitation, any warranties or conditions of TITLE, -NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are -solely responsible for determining the appropriateness of using or -redistributing the Work and assume any risks associated with Your exercise of -permissions under this License. - -8. Limitation of Liability. - -In no event and under no legal theory, whether in tort (including negligence), -contract, or otherwise, unless required by applicable law (such as deliberate -and grossly negligent acts) or agreed to in writing, shall any Contributor be -liable to You for damages, including any direct, indirect, special, incidental, -or consequential damages of any character arising as a result of this License or -out of the use or inability to use the Work (including but not limited to -damages for loss of goodwill, work stoppage, computer failure or malfunction, or -any and all other commercial damages or losses), even if such Contributor has -been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. - -While redistributing the Work or Derivative Works thereof, You may choose to -offer, and charge a fee for, acceptance of support, warranty, indemnity, or -other liability obligations and/or rights consistent with this License. However, -in accepting such obligations, You may act only on Your own behalf and on Your -sole responsibility, not on behalf of any other Contributor, and only if You -agree to indemnify, defend, and hold each Contributor harmless for any liability -incurred by, or claims asserted against, such Contributor by reason of your -accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS - -APPENDIX: How to apply the Apache License to your work - -To apply the Apache License to your work, attach the following boilerplate -notice, with the fields enclosed by brackets "[]" replaced with your own -identifying information. (Don't include the brackets!) The text should be -enclosed in the appropriate comment syntax for the file format. We also -recommend that a file or class name and description of purpose be included on -the same "printed page" as the copyright notice for easier identification within -third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/vendor/chumper/zipper/README.md b/vendor/chumper/zipper/README.md deleted file mode 100644 index 383972fa1f..0000000000 --- a/vendor/chumper/zipper/README.md +++ /dev/null @@ -1,203 +0,0 @@ -# Zipper - -[![Build Status](https://travis-ci.org/Chumper/Zipper.png)](https://travis-ci.org/Chumper/Zipper) - -This is a simple Wrapper around the ZipArchive methods with some handy functions. - -## Installation - -1. Add this package to the list of required packages, inside `composer.json` - * for Laravel 5: `"chumper/zipper": "1.0.x"` - * ~~for Laravel 4: `"chumper/zipper": "0.5.x"`~~ -2. Run `composer update` - -3. Go to `app/config/app.php` - - * add to providers `'Chumper\Zipper\ZipperServiceProvider'` - * add to aliases `'Zipper' => 'Chumper\Zipper\Zipper'` - -You can now access Zipper with the `Zipper` alias. - -## Simple example -```php -$files = glob('public/files/*'); -Zipper::make('public/test.zip')->add($files)->close(); -``` -- by default the package will create the `test.zip` in the project route folder but in the example above we changed it to `project_route/public/`. - -## Another example -```php -$zipper = new \Chumper\Zipper\Zipper; - -$zipper->make('test.zip')->folder('test')->add('composer.json'); -$zipper->zip('test.zip')->folder('test')->add('composer.json','test'); - -$zipper->remove('composer.lock'); - -$zipper->folder('mySuperPackage')->add( - array( - 'vendor', - 'composer.json' - ), -); - -$zipper->getFileContent('mySuperPackage/composer.json'); - -$zipper->make('test.zip')->extractTo('',array('mySuperPackage/composer.json'),Zipper::WHITELIST); - -$zipper->close(); -``` - -Note: Please be aware that you need to call `->close()` at the end to write the zip file to disk. - -You can easily chain most functions, except `getFileContent`, `getStatus`, `close` and `extractTo` which must come at the end of the chain. - -The main reason I wrote this little package is the `extractTo` method since it allows you to be very flexible when extracting zips. So you can for example implement an update method which will just override the changed files. - - -# Functions - -## make($pathToFile) - -`Create` or `Open` a zip archive; if the file does not exists it will create a new one. -It will return the Zipper instance so you can chain easily. - - -## add($files/folder) - -You can add and array of Files, or a Folder which all the files in that folder will then be added, so from the first example we could instead do something like `$files = 'public/files/';`. - - -## addString($filename, $content) - -add a single file to the zip by specifying a name and content as strings. - - -## remove($file/s) - -removes a single file or an array of files from the zip. - - -## folder($folder) - -Specify a folder to 'add files to' or 'remove files from' from the zip, example - - Zipper::make('test.zip')->folder('test')->add('composer.json'); - Zipper::make('test.zip')->folder('test')->remove('composer.json'); - - -## listFiles($regexFilter = null) - -Lists all files within archive (if no filter pattern is provided). Use `$regexFilter` parameter to filter files. See [Pattern Syntax](http://php.net/manual/en/reference.pcre.pattern.syntax.php) for regular expression syntax - -> NB: `listFiles` ignores folder set with `folder` function - - -Example: Return all files/folders ending/not ending with '.log' pattern (case insensitive). This will return matches in sub folders and their sub folders also - -```php -$logFiles = Zipper::make('test.zip')->listFiles('/\.log$/i'); -$notLogFiles = Zipper::make('test.zip')->listFiles('/^(?!.*\.log).*$/i'); -``` - - -## home() - -Resets the folder pointer. - -## zip($fileName) - -Uses the ZipRepository for file handling. - - -## getFileContent($filePath) - -get the content of a file in the zip. This will return the content or false. - - -## getStatus() - -get the opening status of the zip as integer. - - -## close() - -closes the zip and writes all changes. - - -## extractTo($path) - -Extracts the content of the zip archive to the specified location, for example - - Zipper::make('test.zip')->folder('test')->extractTo('foo'); - -This will go into the folder `test` in the zip file and extract the content of that folder only to the folder `foo`, this is equal to using the `Zipper::WHITELIST`. - -This command is really nice to get just a part of the zip file, you can also pass a 2nd & 3rd param to specify a single or an array of files that will be - -> NB: Php ZipArchive uses internally '/' as directory separator for files/folders in zip. So Windows users should not set -> whitelist/blacklist patterns with '\' as it will not match anything - -white listed - ->**Zipper::WHITELIST** - -```php -Zipper::make('test.zip')->extractTo('public', array('vendor'), Zipper::WHITELIST); -``` - -Which will extract the `test.zip` into the `public` folder but **only** files/folders starting with `vendor` prefix inside the zip will be extracted. - -or black listed - ->**Zipper::BLACKLIST** -Which will extract the `test.zip` into the `public` folder except files/folders starting with `vendor` prefix inside the zip will not be extracted. - - -```php -Zipper::make('test.zip')->extractTo('public', array('vendor'), Zipper::BLACKLIST); -``` - ->**Zipper::EXACT_MATCH** - -```php -Zipper::make('test.zip') - ->folder('vendor') - ->extractTo('public', array('composer', 'bin/phpunit'), Zipper::WHITELIST | Zipper::EXACT_MATCH); -``` - -Which will extract the `test.zip` into the `public` folder but **only** files/folders **exact matching names**. So this will: - * extract file or folder named `composer` in folder named `vendor` inside zip to `public` resulting `public/composer` - * extract file or folder named `bin/phpunit` in `vendor/bin/phpunit` folder inside zip to `public` resulting `public/bin/phpunit` - -> **NB:** extracting files/folder from zip without setting Zipper::EXACT_MATCH -> When zip has similar structure as below and only `test.bat` is given as whitelist/blacklist argument then `extractTo` would extract all those files and folders as they all start with given string - -``` -test.zip - |- test.bat - |- test.bat.~ - |- test.bat.dir/ - |- fileInSubFolder.log -``` - -## extractMatchingRegex($path, $regex) - -Extracts the content of the zip archive matching regular expression to the specified location. See [Pattern Syntax](http://php.net/manual/en/reference.pcre.pattern.syntax.php) for regular expression syntax. - -Example: extract all files ending with `.php` from `src` folder and its sub folders. -```php -Zipper::make('test.zip')->folder->('src')->extractMatchingRegex($path, '/\.php$/i'); -``` - -Example: extract all files **except** those ending with `test.php` from `src` folder and its sub folders. -```php -Zipper::make('test.zip')->folder->('src')->extractMatchingRegex($path, '/^(?!.*test\.php).*$/i'); -``` - -# Development - -Maybe it is a good idea to add other compression functions like rar, phar or bzip2 etc... -Everything is setup for that, if you want just fork and develop further. - -If you need other functions or got errors, please leave an issue on github. diff --git a/vendor/chumper/zipper/composer.json b/vendor/chumper/zipper/composer.json deleted file mode 100644 index 66128dae3f..0000000000 --- a/vendor/chumper/zipper/composer.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "name": "chumper/zipper", - "type": "library", - "description": "This is a little neat helper for the ZipArchive methods with handy functions", - "keywords": ["laravel", "ZIP", "Archive"], - "homepage": "http://github.com/Chumper/zipper", - "license": "Apache2", - "authors": [ - { - "name": "Nils Plaschke", - "email": "github@nilsplaschke.de", - "homepage": "http://nilsplaschke.de", - "role": "Developer" - } - ], - "require": { - "php": ">=5.6.0", - "illuminate/support": "^5.0", - "illuminate/filesystem": "^5.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.7", - "mockery/mockery": "^0.9.4" - }, - "autoload": { - "psr-4": { - "Chumper\\Zipper\\": "src/Chumper/Zipper" - } - }, - "autoload-dev": { - "psr-4": { - "Chumper\\Zipper\\": "tests/" - } - }, - "config": { - "sort-packages": true - }, - "extra": { - "laravel": { - "providers": [ - "Chumper\\Zipper\\ZipperServiceProvider" - ], - "aliases": { - "Zipper": "Chumper\\Zipper\\Zipper" - } - } - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/vendor/chumper/zipper/phpunit.xml b/vendor/chumper/zipper/phpunit.xml deleted file mode 100644 index e89ac6d802..0000000000 --- a/vendor/chumper/zipper/phpunit.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - ./tests/ - - - \ No newline at end of file diff --git a/vendor/chumper/zipper/src/Chumper/Zipper/Facades/Zipper.php b/vendor/chumper/zipper/src/Chumper/Zipper/Facades/Zipper.php deleted file mode 100644 index b7e8477700..0000000000 --- a/vendor/chumper/zipper/src/Chumper/Zipper/Facades/Zipper.php +++ /dev/null @@ -1,13 +0,0 @@ -archive = $archive ? $archive : new ZipArchive(); - - $res = $this->archive->open($filePath, ($create ? ZipArchive::CREATE : null)); - if ($res !== true) { - throw new Exception("Error: Failed to open $filePath! Error: ".$this->getErrorMessage($res)); - } - } - - /** - * Add a file to the opened Archive - * - * @param $pathToFile - * @param $pathInArchive - */ - public function addFile($pathToFile, $pathInArchive) - { - $this->archive->addFile($pathToFile, $pathInArchive); - } - - /** - * Add an empty directory - * - * @param $dirName - */ - public function addEmptyDir($dirName) - { - $this->archive->addEmptyDir($dirName); - } - - /** - * Add a file to the opened Archive using its contents - * - * @param $name - * @param $content - */ - public function addFromString($name, $content) - { - $this->archive->addFromString($name, $content); - } - - /** - * Remove a file permanently from the Archive - * - * @param $pathInArchive - */ - public function removeFile($pathInArchive) - { - $this->archive->deleteName($pathInArchive); - } - - /** - * Get the content of a file - * - * @param $pathInArchive - * - * @return string - */ - public function getFileContent($pathInArchive) - { - return $this->archive->getFromName($pathInArchive); - } - - /** - * Get the stream of a file - * - * @param $pathInArchive - * - * @return mixed - */ - public function getFileStream($pathInArchive) - { - return $this->archive->getStream($pathInArchive); - } - - /** - * Will loop over every item in the archive and will execute the callback on them - * Will provide the filename for every item - * - * @param $callback - */ - public function each($callback) - { - for ($i = 0; $i < $this->archive->numFiles; ++$i) { - //skip if folder - $stats = $this->archive->statIndex($i); - if ($stats['size'] === 0 && $stats['crc'] === 0) { - continue; - } - call_user_func_array($callback, [ - 'file' => $this->archive->getNameIndex($i), - ]); - } - } - - /** - * Checks whether the file is in the archive - * - * @param $fileInArchive - * - * @return bool - */ - public function fileExists($fileInArchive) - { - return $this->archive->locateName($fileInArchive) !== false; - } - - /** - * Sets the password to be used for decompressing - * function named usePassword for clarity - * - * @param $password - * - * @return bool - */ - public function usePassword($password) - { - return $this->archive->setPassword($password); - } - - /** - * Returns the status of the archive as a string - * - * @return string - */ - public function getStatus() - { - return $this->archive->getStatusString(); - } - - /** - * Closes the archive and saves it - */ - public function close() - { - @$this->archive->close(); - } - - private function getErrorMessage($resultCode) - { - switch ($resultCode) { - case ZipArchive::ER_EXISTS: - return 'ZipArchive::ER_EXISTS - File already exists.'; - case ZipArchive::ER_INCONS: - return 'ZipArchive::ER_INCONS - Zip archive inconsistent.'; - case ZipArchive::ER_MEMORY: - return 'ZipArchive::ER_MEMORY - Malloc failure.'; - case ZipArchive::ER_NOENT: - return 'ZipArchive::ER_NOENT - No such file.'; - case ZipArchive::ER_NOZIP: - return 'ZipArchive::ER_NOZIP - Not a zip archive.'; - case ZipArchive::ER_OPEN: - return 'ZipArchive::ER_OPEN - Can\'t open file.'; - case ZipArchive::ER_READ: - return 'ZipArchive::ER_READ - Read error.'; - case ZipArchive::ER_SEEK: - return 'ZipArchive::ER_SEEK - Seek error.'; - default: - return "An unknown error [$resultCode] has occurred."; - } - } -} diff --git a/vendor/chumper/zipper/src/Chumper/Zipper/Zipper.php b/vendor/chumper/zipper/src/Chumper/Zipper/Zipper.php deleted file mode 100644 index d6777d1fbd..0000000000 --- a/vendor/chumper/zipper/src/Chumper/Zipper/Zipper.php +++ /dev/null @@ -1,622 +0,0 @@ -file = $fs ? $fs : new Filesystem(); - } - - /** - * Destructor - */ - public function __destruct() - { - if (null !== $this->repository) { - $this->repository->close(); - } - } - - /** - * Create a new zip Archive if the file does not exists - * opens a zip archive if the file exists - * - * @param $pathToFile string The file to open - * @param RepositoryInterface|string $type The type of the archive, defaults to zip, possible are zip, phar - * - * @throws \RuntimeException - * @throws \Exception - * @throws \InvalidArgumentException - * - * @return $this Zipper instance - */ - public function make($pathToFile, $type = 'zip') - { - $new = $this->createArchiveFile($pathToFile); - $this->filePath = $pathToFile; - - $objectOrName = $type; - if (is_string($type)) { - $objectOrName = 'Chumper\Zipper\Repositories\\'.ucwords($type).'Repository'; - } - - if (!is_subclass_of($objectOrName, 'Chumper\Zipper\Repositories\RepositoryInterface')) { - throw new \InvalidArgumentException("Class for '{$objectOrName}' must implement RepositoryInterface interface"); - } - - $this->repository = $type; - if (is_string($objectOrName)) { - $this->repository = new $objectOrName($pathToFile, $new); - } - - return $this; - } - - /** - * Create a new zip archive or open an existing one - * - * @param $pathToFile - * - * @throws \Exception - * - * @return $this - */ - public function zip($pathToFile) - { - $this->make($pathToFile); - - return $this; - } - - /** - * Create a new phar file or open one - * - * @param $pathToFile - * - * @throws \Exception - * - * @return $this - */ - public function phar($pathToFile) - { - $this->make($pathToFile, 'phar'); - - return $this; - } - - /** - * Create a new rar file or open one - * - * @param $pathToFile - * - * @throws \Exception - * - * @return $this - */ - public function rar($pathToFile) - { - $this->make($pathToFile, 'rar'); - - return $this; - } - - /** - * Extracts the opened zip archive to the specified location
- * you can provide an array of files and folders and define if they should be a white list - * or a black list to extract. By default this method compares file names using "string starts with" logic - * - * @param $path string The path to extract to - * @param array $files An array of files - * @param int $methodFlags The Method the files should be treated - * - * @throws \Exception - */ - public function extractTo($path, array $files = [], $methodFlags = self::BLACKLIST) - { - if (!$this->file->exists($path) && !$this->file->makeDirectory($path, 0755, true)) { - throw new \RuntimeException('Failed to create folder'); - } - - if ($methodFlags & self::EXACT_MATCH) { - $matchingMethod = function ($haystack) use ($files) { - return in_array($haystack, $files, true); - }; - } else { - $matchingMethod = function ($haystack) use ($files) { - return starts_with($haystack, $files); - }; - } - - if ($methodFlags & self::WHITELIST) { - $this->extractFilesInternal($path, $matchingMethod); - } else { - // blacklist - extract files that do not match with $matchingMethod - $this->extractFilesInternal($path, function ($filename) use ($matchingMethod) { - return !$matchingMethod($filename); - }); - } - } - - /** - * Extracts matching files/folders from the opened zip archive to the specified location. - * - * @param string $extractToPath The path to extract to - * @param string $regex regular expression used to match files. See @link http://php.net/manual/en/reference.pcre.pattern.syntax.php - * - * @throws \InvalidArgumentException - * @throws \RuntimeException - */ - public function extractMatchingRegex($extractToPath, $regex) - { - if (empty($regex)) { - throw new \InvalidArgumentException('Missing pass valid regex parameter'); - } - - $this->extractFilesInternal($extractToPath, function ($filename) use ($regex) { - $match = preg_match($regex, $filename); - if ($match === 1) { - return true; - } elseif ($match === false) { - //invalid pattern for preg_match raises E_WARNING and returns FALSE - //so if you have custom error_handler set to catch and throw E_WARNINGs you never end up here - //but if you have not - this will throw exception - throw new \RuntimeException("regular expression match on '$filename' failed with error. Please check if pattern is valid regular expression."); - } - - return false; - }); - } - - /** - * Gets the content of a single file if available - * - * @param $filePath string The full path (including all folders) of the file in the zip - * - * @throws \Exception - * - * @return mixed returns the content or throws an exception - */ - public function getFileContent($filePath) - { - if ($this->repository->fileExists($filePath) === false) { - throw new Exception(sprintf('The file "%s" cannot be found', $filePath)); - } - return $this->repository->getFileContent($filePath); - } - - /** - * Add one or multiple files to the zip. - * - * @param $pathToAdd array|string An array or string of files and folders to add - * @param null|mixed $fileName - * - * @return $this Zipper instance - */ - public function add($pathToAdd, $fileName = null) - { - if (is_array($pathToAdd)) { - foreach ($pathToAdd as $key=>$dir) { - if (!is_int($key)) { - $this->add($dir, $key); } - else { - $this->add($dir); - } - } - } elseif ($this->file->isFile($pathToAdd)) { - if ($fileName) { - $this->addFile($pathToAdd, $fileName); - } else { - $this->addFile($pathToAdd); - } - } else { - $this->addDir($pathToAdd); - } - - return $this; - } - - /** - * Add an empty directory - * - * @param $dirName - * - * @return Zipper - */ - public function addEmptyDir($dirName) - { - $this->repository->addEmptyDir($dirName); - - return $this; - } - - /** - * Add a file to the zip using its contents - * - * @param $filename string The name of the file to create - * @param $content string The file contents - * - * @return $this Zipper instance - */ - public function addString($filename, $content) - { - $this->addFromString($filename, $content); - - return $this; - } - - /** - * Gets the status of the zip. - * - * @return int The status of the internal zip file - */ - public function getStatus() - { - return $this->repository->getStatus(); - } - - /** - * Remove a file or array of files and folders from the zip archive - * - * @param $fileToRemove array|string The path/array to the files in the zip - * - * @return $this Zipper instance - */ - public function remove($fileToRemove) - { - if (is_array($fileToRemove)) { - $self = $this; - $this->repository->each(function ($file) use ($fileToRemove, $self) { - if (starts_with($file, $fileToRemove)) { - $self->getRepository()->removeFile($file); - } - }); - } else { - $this->repository->removeFile($fileToRemove); - } - - return $this; - } - - /** - * Returns the path of the current zip file if there is one. - * - * @return string The path to the file - */ - public function getFilePath() - { - return $this->filePath; - } - - /** - * Sets the password to be used for decompressing - * - * @param $password - * - * @return bool - */ - public function usePassword($password) - { - return $this->repository->usePassword($password); - } - - /** - * Closes the zip file and frees all handles - */ - public function close() - { - if (null !== $this->repository) { - $this->repository->close(); - } - $this->filePath = ''; - } - - /** - * Sets the internal folder to the given path.
- * Useful for extracting only a segment of a zip file. - * - * @param $path - * - * @return $this - */ - public function folder($path) - { - $this->currentFolder = $path; - - return $this; - } - - /** - * Resets the internal folder to the root of the zip file. - * - * @return $this - */ - public function home() - { - $this->currentFolder = ''; - - return $this; - } - - /** - * Deletes the archive file - */ - public function delete() - { - if (null !== $this->repository) { - $this->repository->close(); - } - - $this->file->delete($this->filePath); - $this->filePath = ''; - } - - /** - * Get the type of the Archive - * - * @return string - */ - public function getArchiveType() - { - return get_class($this->repository); - } - - /** - * Get the current internal folder pointer - * - * @return string - */ - public function getCurrentFolderPath() - { - return $this->currentFolder; - } - - /** - * Checks if a file is present in the archive - * - * @param $fileInArchive - * - * @return bool - */ - public function contains($fileInArchive) - { - return $this->repository->fileExists($fileInArchive); - } - - /** - * @return RepositoryInterface - */ - public function getRepository() - { - return $this->repository; - } - - /** - * @return Filesystem - */ - public function getFileHandler() - { - return $this->file; - } - - /** - * Gets the path to the internal folder - * - * @return string - */ - public function getInternalPath() - { - return empty($this->currentFolder) ? '' : $this->currentFolder.'/'; - } - - /** - * List all files that are within the archive - * - * @param string|null $regexFilter regular expression to filter returned files/folders. See @link http://php.net/manual/en/reference.pcre.pattern.syntax.php - * - * @throws \RuntimeException - * - * @return array - */ - public function listFiles($regexFilter = null) - { - $filesList = []; - if ($regexFilter) { - $filter = function ($file) use (&$filesList, $regexFilter) { - // push/pop an error handler here to to make sure no error/exception thrown if $expected is not a regex - set_error_handler(function () { - }); - $match = preg_match($regexFilter, $file); - restore_error_handler(); - - if ($match === 1) { - $filesList[] = $file; - } elseif ($match === false) { - throw new \RuntimeException("regular expression match on '$file' failed with error. Please check if pattern is valid regular expression."); - } - }; - } else { - $filter = function ($file) use (&$filesList) { - $filesList[] = $file; - }; - } - $this->repository->each($filter); - - return $filesList; - } - - private function getCurrentFolderWithTrailingSlash() - { - if (empty($this->currentFolder)) { - return ''; - } - - $lastChar = mb_substr($this->currentFolder, -1); - if ($lastChar !== '/' || $lastChar !== '\\') { - return $this->currentFolder.'/'; - } - - return $this->currentFolder; - } - - //---------------------PRIVATE FUNCTIONS------------- - - /** - * @param $pathToZip - * - * @throws \Exception - * - * @return bool - */ - private function createArchiveFile($pathToZip) - { - if (!$this->file->exists($pathToZip)) { - $dirname = dirname($pathToZip); - if (!$this->file->exists($dirname) && !$this->file->makeDirectory($dirname, 0755, true)) { - throw new \RuntimeException('Failed to create folder'); - } elseif (!$this->file->isWritable($dirname)) { - throw new Exception(sprintf('The path "%s" is not writeable', $pathToZip)); - } - - return true; - } - - return false; - } - - /** - * @param $pathToDir - */ - private function addDir($pathToDir) - { - // First go over the files in this directory and add them to the repository. - foreach ($this->file->files($pathToDir) as $file) { - $this->addFile($pathToDir.'/'.basename($file)); - } - - // Now let's visit the subdirectories and add them, too. - foreach ($this->file->directories($pathToDir) as $dir) { - $old_folder = $this->currentFolder; - $this->currentFolder = empty($this->currentFolder) ? basename($dir) : $this->currentFolder.'/'.basename($dir); - $this->addDir($pathToDir.'/'.basename($dir)); - $this->currentFolder = $old_folder; - } - } - - /** - * Add the file to the zip - * - * @param string $pathToAdd - * @param string $fileName - */ - private function addFile($pathToAdd, $fileName = null) - { - $info = pathinfo($pathToAdd); - - if (!$fileName) { - $fileName = isset($info['extension']) ? - $info['filename'].'.'.$info['extension'] : - $info['filename']; - } - - $this->repository->addFile($pathToAdd, $this->getInternalPath().$fileName); - } - - /** - * Add the file to the zip from content - * - * @param $filename - * @param $content - */ - private function addFromString($filename, $content) - { - $this->repository->addFromString($this->getInternalPath().$filename, $content); - } - - private function extractFilesInternal($path, callable $matchingMethod) - { - $self = $this; - $this->repository->each(function ($fileName) use ($path, $matchingMethod, $self) { - $currentPath = $self->getCurrentFolderWithTrailingSlash(); - if (!empty($currentPath) && !starts_with($fileName, $currentPath)) { - return; - } - - $filename = str_replace($self->getInternalPath(), '', $fileName); - if ($matchingMethod($filename)) { - $self->extractOneFileInternal($fileName, $path); - } - }); - } - - /** - * @param $fileName - * @param $path - * - * @throws \RuntimeException - */ - private function extractOneFileInternal($fileName, $path) - { - $tmpPath = str_replace($this->getInternalPath(), '', $fileName); - - // We need to create the directory first in case it doesn't exist - $dir = pathinfo($path.DIRECTORY_SEPARATOR.$tmpPath, PATHINFO_DIRNAME); - if (!$this->file->exists($dir) && !$this->file->makeDirectory($dir, 0755, true, true)) { - throw new \RuntimeException('Failed to create folders'); - } - - $toPath = $path.DIRECTORY_SEPARATOR.$tmpPath; - $fileStream = $this->getRepository()->getFileStream($fileName); - $this->getFileHandler()->put($toPath, $fileStream); - } -} diff --git a/vendor/chumper/zipper/src/Chumper/Zipper/ZipperServiceProvider.php b/vendor/chumper/zipper/src/Chumper/Zipper/ZipperServiceProvider.php deleted file mode 100644 index 9055cb6466..0000000000 --- a/vendor/chumper/zipper/src/Chumper/Zipper/ZipperServiceProvider.php +++ /dev/null @@ -1,50 +0,0 @@ -app->singleton('zipper', function ($app) { - $return = $app->make('Chumper\Zipper\Zipper'); - - return $return; - }); - - $this->app->booting(function () { - $loader = AliasLoader::getInstance(); - $loader->alias('Zipper', 'Chumper\Zipper\Facades\Zipper'); - }); - } - - /** - * Get the services provided by the provider. - * - * @return array - */ - public function provides() - { - return ['zipper']; - } -} diff --git a/vendor/chumper/zipper/tests/ArrayArchive.php b/vendor/chumper/zipper/tests/ArrayArchive.php deleted file mode 100644 index 90de0c08c5..0000000000 --- a/vendor/chumper/zipper/tests/ArrayArchive.php +++ /dev/null @@ -1,141 +0,0 @@ -entries[$pathInArchive] = $pathInArchive; - } - - /** - * Add a file to the opened Archive using its contents - * - * @param $name - * @param $content - */ - public function addFromString($name, $content) - { - $this->entries[$name] = $name; - } - - /** - * Remove a file permanently from the Archive - * - * @param $pathInArchive - */ - public function removeFile($pathInArchive) - { - unset($this->entries[$pathInArchive]); - } - - /** - * Get the content of a file - * - * @param $pathInArchive - * - * @return string - */ - public function getFileContent($pathInArchive) - { - return $this->entries[$pathInArchive]; - } - - /** - * Get the stream of a file - * - * @param $pathInArchive - * - * @return mixed - */ - public function getFileStream($pathInArchive) - { - return $this->entries[$pathInArchive]; - } - - /** - * Will loop over every item in the archive and will execute the callback on them - * Will provide the filename for every item - * - * @param $callback - */ - public function each($callback) - { - foreach ($this->entries as $entry) { - call_user_func_array($callback, [ - 'file' => $entry, - ]); - } - } - - /** - * Checks whether the file is in the archive - * - * @param $fileInArchive - * - * @return bool - */ - public function fileExists($fileInArchive) - { - return array_key_exists($fileInArchive, $this->entries); - } - - /** - * Returns the status of the archive as a string - * - * @return string - */ - public function getStatus() - { - return 'OK'; - } - - /** - * Closes the archive and saves it - */ - public function close() - { - } - - /** - * Add an empty directory - * - * @param $dirName - */ - public function addEmptyDir($dirName) - { - // CODE... - } - - /** - * Sets the password to be used for decompressing - * - * @param $password - */ - public function usePassword($password) - { - // CODE... - } -} diff --git a/vendor/chumper/zipper/tests/Repositories/ZipRepositoryTest.php b/vendor/chumper/zipper/tests/Repositories/ZipRepositoryTest.php deleted file mode 100644 index 4a8f87677b..0000000000 --- a/vendor/chumper/zipper/tests/Repositories/ZipRepositoryTest.php +++ /dev/null @@ -1,116 +0,0 @@ -mock = Mockery::mock(new ZipArchive()); - $this->zip = new ZipRepository('foo', true, $this->mock); - } - - protected function tearDown() - { - Mockery::close(); - } - - public function testMake() - { - $zip = new ZipRepository('foo.zip', true); - $this->assertFalse($zip->fileExists('foo')); - } - - public function testOpenNonExistentZipThrowsException() - { - $this->expectException(Exception::class); - $this->expectExceptionMessage('Error: Failed to open idonotexist.zip! Error: ZipArchive::ER_'); - new ZipRepository('idonotexist.zip', false); - } - - public function testOpenNonZipThrowsException() - { - $this->expectException(Exception::class); - $this->expectExceptionMessageRegExp('/Error: Failed to open (.*)ZipRepositoryTest.php! Error: ZipArchive::ER_NOZIP - Not a zip archive./'); - new ZipRepository(__DIR__.DIRECTORY_SEPARATOR.'ZipRepositoryTest.php', false); - } - - public function testAddFile() - { - $this->mock->shouldReceive('addFile')->once()->with('bar', 'bar'); - $this->mock->shouldReceive('addFile')->once()->with('bar', 'foo/bar'); - $this->mock->shouldReceive('addFile')->once()->with('foo/bar', 'bar'); - - $this->zip->addFile('bar', 'bar'); - $this->zip->addFile('bar', 'foo/bar'); - $this->zip->addFile('foo/bar', 'bar'); - } - - public function testRemoveFile() - { - $this->mock->shouldReceive('deleteName')->once()->with('bar'); - $this->mock->shouldReceive('deleteName')->once()->with('foo/bar'); - - $this->zip->removeFile('bar'); - $this->zip->removeFile('foo/bar'); - } - - public function testGetFileContent() - { - $this->mock->shouldReceive('getFromName')->once() - ->with('bar')->andReturn('foo'); - $this->mock->shouldReceive('getFromName')->once() - ->with('foo/bar')->andReturn('baz'); - - $this->assertSame('foo', $this->zip->getFileContent('bar')); - $this->assertSame('baz', $this->zip->getFileContent('foo/bar')); - } - - public function testGetFileStream() - { - $this->mock->shouldReceive('getStream')->once() - ->with('bar')->andReturn('foo'); - $this->mock->shouldReceive('getStream')->once() - ->with('foo/bar')->andReturn('baz'); - - $this->assertSame('foo', $this->zip->getFileStream('bar')); - $this->assertSame('baz', $this->zip->getFileStream('foo/bar')); - } - - public function testFileExists() - { - $this->mock->shouldReceive('locateName')->once() - ->with('bar')->andReturn(true); - $this->mock->shouldReceive('locateName')->once() - ->with('foo/bar')->andReturn(false); - - $this->assertTrue($this->zip->fileExists('bar')); - $this->assertFalse($this->zip->fileExists('foo/bar')); - } - - public function testClose() - { - $this->zip->close(); - } -} diff --git a/vendor/chumper/zipper/tests/ZipperTest.php b/vendor/chumper/zipper/tests/ZipperTest.php deleted file mode 100644 index aa5a25d5cc..0000000000 --- a/vendor/chumper/zipper/tests/ZipperTest.php +++ /dev/null @@ -1,488 +0,0 @@ -file = Mockery::mock(new Filesystem()); - $this->archive = new Zipper($this->file); - $this->archive->make('foo', new ArrayArchive('foo', true)); - } - - protected function tearDown() - { - Mockery::close(); - } - - public function testMake() - { - $this->assertSame('Chumper\\Zipper\\ArrayArchive', $this->archive->getArchiveType()); - $this->assertSame('foo', $this->archive->getFilePath()); - } - - public function testMakeThrowsExceptionWhenCouldNotCreateDirectory() - { - $path = getcwd().time(); - - $this->file->shouldReceive('makeDirectory') - ->with($path, 0755, true) - ->andReturn(false); - - $zip = new Zipper($this->file); - - $this->expectException(RuntimeException::class); - $this->expectExceptionMessage('Failed to create folder'); - - $zip->make($path.DIRECTORY_SEPARATOR.'createMe.zip'); - } - - public function testAddAndGet() - { - $this->file->shouldReceive('isFile')->with('foo.bar') - ->times(1)->andReturn(true); - $this->file->shouldReceive('isFile')->with('foo') - ->times(1)->andReturn(true); - - $this->archive->add('foo.bar'); - $this->archive->add('foo'); - - $this->assertSame('foo', $this->archive->getFileContent('foo')); - $this->assertSame('foo.bar', $this->archive->getFileContent('foo.bar')); - } - - public function testAddAndGetWithArray() - { - $this->file->shouldReceive('isFile')->with('foo.bar') - ->times(1)->andReturn(true); - $this->file->shouldReceive('isFile')->with('foo') - ->times(1)->andReturn(true); - - /**Array**/ - $this->archive->add([ - 'foo.bar', - 'foo', - ]); - - $this->assertSame('foo', $this->archive->getFileContent('foo')); - $this->assertSame('foo.bar', $this->archive->getFileContent('foo.bar')); - } - - public function testAddAndGetWithCustomFilenameArray() - { - $this->file->shouldReceive('isFile')->with('foo.bar') - ->times(1)->andReturn(true); - $this->file->shouldReceive('isFile')->with('foo') - ->times(1)->andReturn(true); - - /**Array**/ - $this->archive->add([ - 'custom.bar' => 'foo.bar', - 'custom' => 'foo', - ]); - - $this->assertSame('custom', $this->archive->getFileContent('custom')); - $this->assertSame('custom.bar', $this->archive->getFileContent('custom.bar')); - } - - public function testAddAndGetWithSubFolder() - { - /* - * Add the local folder /path/to/fooDir as folder fooDir to the repository - * and make sure the folder structure within the repository is there. - */ - $this->file->shouldReceive('isFile')->with('/path/to/fooDir') - ->once()->andReturn(false); - - $this->file->shouldReceive('files')->with('/path/to/fooDir') - ->once()->andReturn(['fileInFooDir.bar', 'fileInFooDir.foo']); - - $this->file->shouldReceive('directories')->with('/path/to/fooDir') - ->once()->andReturn(['fooSubdir']); - - $this->file->shouldReceive('files')->with('/path/to/fooDir/fooSubdir') - ->once()->andReturn(['fileInFooDir.bar']); - $this->file->shouldReceive('directories')->with('/path/to/fooDir/fooSubdir') - ->once()->andReturn([]); - - $this->archive->folder('fooDir') - ->add('/path/to/fooDir'); - - $this->assertSame('fooDir/fileInFooDir.bar', $this->archive->getFileContent('fooDir/fileInFooDir.bar')); - $this->assertSame('fooDir/fileInFooDir.foo', $this->archive->getFileContent('fooDir/fileInFooDir.foo')); - $this->assertSame('fooDir/fooSubdir/fileInFooDir.bar', $this->archive->getFileContent('fooDir/fooSubdir/fileInFooDir.bar')); - } - - public function testGetFileContent() - { - $this->expectException(Exception::class); - $this->expectExceptionMessage('The file "baz" cannot be found'); - - $this->archive->getFileContent('baz'); - } - - public function testRemove() - { - $this->file->shouldReceive('isFile')->with('foo') - ->andReturn(true); - - $this->archive->add('foo'); - - $this->assertTrue($this->archive->contains('foo')); - - $this->archive->remove('foo'); - - $this->assertFalse($this->archive->contains('foo')); - - //---- - - $this->file->shouldReceive('isFile')->with('foo') - ->andReturn(true); - $this->file->shouldReceive('isFile')->with('fooBar') - ->andReturn(true); - - $this->archive->add(['foo', 'fooBar']); - - $this->assertTrue($this->archive->contains('foo')); - $this->assertTrue($this->archive->contains('fooBar')); - - $this->archive->remove(['foo', 'fooBar']); - - $this->assertFalse($this->archive->contains('foo')); - $this->assertFalse($this->archive->contains('fooBar')); - } - - public function testExtractWhiteList() - { - $this->file - ->shouldReceive('isFile') - ->with('foo') - ->andReturn(true); - - $this->file - ->shouldReceive('isFile') - ->with('foo.log') - ->andReturn(true); - - $this->archive - ->add('foo') - ->add('foo.log'); - - $this->file - ->shouldReceive('put') - ->with(realpath(null).DIRECTORY_SEPARATOR.'foo', 'foo'); - - $this->file - ->shouldReceive('put') - ->with(realpath(null).DIRECTORY_SEPARATOR.'foo.log', 'foo.log'); - - $this->archive - ->extractTo(getcwd(), ['foo'], Zipper::WHITELIST); - } - - public function testExtractToThrowsExceptionWhenCouldNotCreateDirectory() - { - $path = getcwd().time(); - - $this->file - ->shouldReceive('isFile') - ->with('foo.log') - ->andReturn(true); - - $this->file->shouldReceive('makeDirectory') - ->with($path, 0755, true) - ->andReturn(false); - - $this->archive->add('foo.log'); - - $this->file->shouldNotReceive('put') - ->with(realpath(null).DIRECTORY_SEPARATOR.'foo.log', 'foo.log'); - - $this->expectException(RuntimeException::class); - $this->expectExceptionMessage('Failed to create folder'); - - $this->archive - ->extractTo($path, ['foo'], Zipper::WHITELIST); - } - - public function testExtractWhiteListFromSubDirectory() - { - $this->file->shouldReceive('isFile')->andReturn(true); - $this->file->shouldReceive('makeDirectory')->andReturn(true); - - $this->archive - ->folder('foo/bar') - ->add('baz') - ->add('baz.log'); - - $this->file - ->shouldReceive('put') - ->with(realpath(null).DIRECTORY_SEPARATOR.'baz', 'foo/bar/baz'); - - $this->file - ->shouldReceive('put') - ->with(realpath(null).DIRECTORY_SEPARATOR.'baz.log', 'foo/bar/baz.log'); - - $this->archive - ->extractTo(getcwd(), ['baz'], Zipper::WHITELIST); - } - - public function testExtractWhiteListWithExactMatching() - { - $this->file->shouldReceive('isFile')->andReturn(true); - $this->file->shouldReceive('makeDirectory')->andReturn(true); - - $this->archive - ->folder('foo/bar') - ->add('baz') - ->add('baz.log'); - - $this->file - ->shouldReceive('put') - ->with(realpath(null).DIRECTORY_SEPARATOR.'baz', 'foo/bar/baz'); - - $this->archive - ->extractTo(getcwd(), ['baz'], Zipper::WHITELIST | Zipper::EXACT_MATCH); - } - - public function testExtractWhiteListWithExactMatchingFromSubDirectory() - { - $this->file->shouldReceive('isFile')->andReturn(true); - $this->file->shouldReceive('exists')->andReturn(false); - $this->file->shouldReceive('makeDirectory')->andReturn(true); - - $this->archive->folder('foo/bar/subDirectory') - ->add('bazInSubDirectory') - ->add('bazInSubDirectory.log'); - - $this->archive->folder('foo/bar') - ->add('baz') - ->add('baz.log'); - - $subDirectoryPath = realpath(null).DIRECTORY_SEPARATOR.'subDirectory'; - $subDirectoryFilePath = $subDirectoryPath.'/bazInSubDirectory'; - $this->file->shouldReceive('put') - ->with($subDirectoryFilePath, 'foo/bar/subDirectory/bazInSubDirectory'); - - $this->archive - ->extractTo(getcwd(), ['subDirectory/bazInSubDirectory'], Zipper::WHITELIST | Zipper::EXACT_MATCH); - - $this->file->shouldHaveReceived('makeDirectory')->with($subDirectoryPath, 0755, true, true); - } - - public function testExtractToIgnoresBlackListFile() - { - $this->file->shouldReceive('isFile')->with('foo') - ->andReturn(true); - $this->file->shouldReceive('isFile')->with('bar') - ->andReturn(true); - $this->file->shouldReceive('makeDirectory')->andReturn(true); - - $this->archive->add('foo') - ->add('bar'); - - $this->file->shouldReceive('put')->with(realpath(null).DIRECTORY_SEPARATOR.'foo', 'foo'); - $this->file->shouldNotReceive('put')->with(realpath(null).DIRECTORY_SEPARATOR.'bar', 'bar'); - - $this->archive->extractTo(getcwd(), ['bar'], Zipper::BLACKLIST); - } - - public function testExtractBlackListFromSubDirectory() - { - $currentDir = getcwd(); - - $this->file->shouldReceive('isFile')->andReturn(true); - $this->file->shouldReceive('makeDirectory')->andReturn(true); - - $this->archive->add('rootLevelFile'); - - $this->archive->folder('foo/bar/sub') - ->add('fileInSubSubDir'); - - $this->archive->folder('foo/bar') - ->add('fileInSubDir') - ->add('fileBlackListedInSubDir'); - - $this->file->shouldReceive('put')->with($currentDir.DIRECTORY_SEPARATOR.'fileInSubDir', 'foo/bar/fileInSubDir'); - $this->file->shouldReceive('put')->with($currentDir.DIRECTORY_SEPARATOR.'sub/fileInSubSubDir', 'foo/bar/sub/fileInSubSubDir'); - - $this->file->shouldNotReceive('put')->with($currentDir.DIRECTORY_SEPARATOR.'fileBlackListedInSubDir', 'fileBlackListedInSubDir'); - $this->file->shouldNotReceive('put')->with($currentDir.DIRECTORY_SEPARATOR.'rootLevelFile', 'rootLevelFile'); - - $this->archive->extractTo($currentDir, ['fileBlackListedInSubDir'], Zipper::BLACKLIST); - } - - public function testExtractBlackListFromSubDirectoryWithExactMatching() - { - $this->file->shouldReceive('isFile')->with('baz') - ->andReturn(true); - $this->file->shouldReceive('makeDirectory')->andReturn(true); - - $this->file->shouldReceive('isFile')->with('baz.log') - ->andReturn(true); - - $this->archive->folder('foo/bar') - ->add('baz') - ->add('baz.log'); - - $this->file->shouldReceive('put')->with(realpath(null).DIRECTORY_SEPARATOR.'baz.log', 'foo/bar/baz.log'); - - $this->archive->extractTo(getcwd(), ['baz'], Zipper::BLACKLIST | Zipper::EXACT_MATCH); - } - - public function testExtractMatchingRegexFromSubFolder() - { - $this->file->shouldReceive('isFile')->with('baz')->andReturn(true); - $this->file->shouldReceive('isFile')->with('baz.log')->andReturn(true); - $this->file->shouldReceive('isFile')->with('subFolderFileToIgnore')->andReturn(true); - $this->file->shouldReceive('isFile')->with('subFolderFileToExtract.log')->andReturn(true); - $this->file->shouldReceive('isFile')->with('rootLevelMustBeIgnored.log')->andReturn(true); - - $this->file->shouldReceive('makeDirectory')->andReturn(true); - - $this->archive->add('rootLevelMustBeIgnored.log'); - - $this->archive->folder('foo/bar/subFolder') - ->add('subFolderFileToIgnore') - ->add('subFolderFileToExtract.log'); - - $this->archive->folder('foo/bar') - ->add('baz') - ->add('baz.log'); - - $this->file->shouldReceive('put')->with(realpath(null).DIRECTORY_SEPARATOR.'baz.log', 'foo/bar/baz.log'); - $this->file->shouldReceive('put')->with(realpath(null).DIRECTORY_SEPARATOR.'subFolder/subFolderFileToExtract.log', 'foo/bar/subFolder/subFolderFileToExtract.log'); - $this->file->shouldNotReceive('put')->with(realpath(null).DIRECTORY_SEPARATOR.'rootLevelMustBeIgnored.log', 'rootLevelMustBeIgnored.log'); - $this->file->shouldNotReceive('put')->with(realpath(null).DIRECTORY_SEPARATOR.'baz', 'foo/bar/baz'); - $this->file->shouldNotReceive('put')->with(realpath(null).DIRECTORY_SEPARATOR.'subFolder/subFolderFileToIgnore', 'foo/bar/subFolder/subFolderFileToIgnore'); - - $this->archive->extractMatchingRegex(getcwd(), '/\.log$/i'); - } - - public function testExtractMatchingRegexThrowsExceptionWhenRegexIsEmpty() - { - $this->expectException(InvalidArgumentException::class); - $this->expectExceptionMessage('Missing pass valid regex parameter'); - $this->archive->extractMatchingRegex(getcwd(), ''); - } - - public function testNavigationFolderAndHome() - { - $this->archive->folder('foo/bar'); - $this->assertSame('foo/bar', $this->archive->getCurrentFolderPath()); - - //---- - - $this->file->shouldReceive('isFile')->with('foo') - ->andReturn(true); - - $this->archive->add('foo'); - $this->assertSame('foo/bar/foo', $this->archive->getFileContent('foo/bar/foo')); - - //---- - - $this->file->shouldReceive('isFile')->with('bar') - ->andReturn(true); - - $this->archive->home()->add('bar'); - $this->assertSame('bar', $this->archive->getFileContent('bar')); - - //---- - - $this->file->shouldReceive('isFile')->with('baz/bar/bing') - ->andReturn(true); - - $this->archive->folder('test')->add('baz/bar/bing'); - $this->assertSame('test/bing', $this->archive->getFileContent('test/bing')); - } - - public function testListFiles() - { - // testing empty file - $this->file->shouldReceive('isFile')->with('foo.file')->andReturn(true); - $this->file->shouldReceive('isFile')->with('bar.file')->andReturn(true); - - $this->assertSame([], $this->archive->listFiles()); - - // testing not empty file - $this->archive->add('foo.file'); - $this->archive->add('bar.file'); - - $this->assertSame(['foo.file', 'bar.file'], $this->archive->listFiles()); - - // testing with a empty sub dir - $this->file->shouldReceive('isFile')->with('/path/to/subDirEmpty')->andReturn(false); - - $this->file->shouldReceive('files')->with('/path/to/subDirEmpty')->andReturn([]); - $this->file->shouldReceive('directories')->with('/path/to/subDirEmpty')->andReturn([]); - $this->archive->folder('subDirEmpty')->add('/path/to/subDirEmpty'); - - $this->assertSame(['foo.file', 'bar.file'], $this->archive->listFiles()); - - // testing with a not empty sub dir - $this->file->shouldReceive('isFile')->with('/path/to/subDir')->andReturn(false); - $this->file->shouldReceive('isFile')->with('sub.file')->andReturn(true); - - $this->file->shouldReceive('files')->with('/path/to/subDir')->andReturn(['sub.file']); - $this->file->shouldReceive('directories')->with('/path/to/subDir')->andReturn([]); - - $this->archive->folder('subDir')->add('/path/to/subDir'); - - $this->assertSame(['foo.file', 'bar.file', 'subDir/sub.file'], $this->archive->listFiles()); - } - - public function testListFilesWithRegexFilter() - { - // add 2 files to root level in zip - $this->file->shouldReceive('isFile')->with('foo.file')->andReturn(true); - $this->file->shouldReceive('isFile')->with('bar.log')->andReturn(true); - - $this->archive - ->add('foo.file') - ->add('bar.log'); - - // add sub directory with 2 files inside - $this->file->shouldReceive('isFile')->with('/path/to/subDir')->andReturn(false); - $this->file->shouldReceive('isFile')->with('sub.file')->andReturn(true); - $this->file->shouldReceive('isFile')->with('anotherSub.log')->andReturn(true); - - $this->file->shouldReceive('files')->with('/path/to/subDir')->andReturn(['sub.file', 'anotherSub.log']); - $this->file->shouldReceive('directories')->with('/path/to/subDir')->andReturn([]); - - $this->archive->folder('subDir')->add('/path/to/subDir'); - - $this->assertSame( - ['foo.file', 'subDir/sub.file'], - $this->archive->listFiles('/\.file$/i') // filter out files ending with ".file" pattern - ); - } - - public function testListFilesThrowsExceptionWithInvalidRegexFilter() - { - $this->file->shouldReceive('isFile')->with('foo.file')->andReturn(true); - $this->archive->add('foo.file'); - - $this->expectException(RuntimeException::class); - $this->expectExceptionMessage('regular expression match on \'foo.file\' failed with error. Please check if pattern is valid regular expression.'); - - $invalidPattern = 'asdasd'; - $this->archive->listFiles($invalidPattern); - } -} diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php index 0a4c9e5d4c..11924b500d 100644 --- a/vendor/composer/autoload_classmap.php +++ b/vendor/composer/autoload_classmap.php @@ -329,12 +329,6 @@ 'Arcanedev\\Support\\Traits\\Paginatable' => $vendorDir . '/arcanedev/support/src/Traits/Paginatable.php', 'Arcanedev\\Support\\Traits\\PrefixedModel' => $vendorDir . '/arcanedev/support/src/Traits/PrefixedModel.php', 'Arcanedev\\Support\\Traits\\Templatable' => $vendorDir . '/arcanedev/support/src/Traits/Templatable.php', - 'Asm89\\Stack\\Cors' => $vendorDir . '/asm89/stack-cors/src/Asm89/Stack/Cors.php', - 'Asm89\\Stack\\CorsService' => $vendorDir . '/asm89/stack-cors/src/Asm89/Stack/CorsService.php', - 'Barryvdh\\Cors\\HandleCors' => $vendorDir . '/barryvdh/laravel-cors/src/HandleCors.php', - 'Barryvdh\\Cors\\HandlePreflight' => $vendorDir . '/barryvdh/laravel-cors/src/HandlePreflight.php', - 'Barryvdh\\Cors\\LumenServiceProvider' => $vendorDir . '/barryvdh/laravel-cors/src/LumenServiceProvider.php', - 'Barryvdh\\Cors\\ServiceProvider' => $vendorDir . '/barryvdh/laravel-cors/src/ServiceProvider.php', 'Barryvdh\\DomPDF\\Facade' => $vendorDir . '/barryvdh/laravel-dompdf/src/Facade.php', 'Barryvdh\\DomPDF\\PDF' => $vendorDir . '/barryvdh/laravel-dompdf/src/PDF.php', 'Barryvdh\\DomPDF\\ServiceProvider' => $vendorDir . '/barryvdh/laravel-dompdf/src/ServiceProvider.php', @@ -419,27 +413,34 @@ 'Bugsnag\\Utils' => $vendorDir . '/bugsnag/bugsnag/src/Utils.php', 'BussinessSeeder' => $baseDir . '/database/seeds/BussinessSeeder.php', 'Carbon\\Carbon' => $vendorDir . '/nesbot/carbon/src/Carbon/Carbon.php', + 'Carbon\\CarbonImmutable' => $vendorDir . '/nesbot/carbon/src/Carbon/CarbonImmutable.php', + 'Carbon\\CarbonInterface' => $vendorDir . '/nesbot/carbon/src/Carbon/CarbonInterface.php', 'Carbon\\CarbonInterval' => $vendorDir . '/nesbot/carbon/src/Carbon/CarbonInterval.php', 'Carbon\\CarbonPeriod' => $vendorDir . '/nesbot/carbon/src/Carbon/CarbonPeriod.php', + 'Carbon\\CarbonTimeZone' => $vendorDir . '/nesbot/carbon/src/Carbon/CarbonTimeZone.php', 'Carbon\\Exceptions\\InvalidDateException' => $vendorDir . '/nesbot/carbon/src/Carbon/Exceptions/InvalidDateException.php', + 'Carbon\\Factory' => $vendorDir . '/nesbot/carbon/src/Carbon/Factory.php', + 'Carbon\\FactoryImmutable' => $vendorDir . '/nesbot/carbon/src/Carbon/FactoryImmutable.php', + 'Carbon\\Language' => $vendorDir . '/nesbot/carbon/src/Carbon/Language.php', 'Carbon\\Laravel\\ServiceProvider' => $vendorDir . '/nesbot/carbon/src/Carbon/Laravel/ServiceProvider.php', + 'Carbon\\Traits\\Boundaries' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Boundaries.php', + 'Carbon\\Traits\\Comparison' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Comparison.php', + 'Carbon\\Traits\\Converter' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Converter.php', + 'Carbon\\Traits\\Creator' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Creator.php', + 'Carbon\\Traits\\Date' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Date.php', + 'Carbon\\Traits\\Difference' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Difference.php', + 'Carbon\\Traits\\Localization' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Localization.php', + 'Carbon\\Traits\\Macro' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Macro.php', + 'Carbon\\Traits\\Modifiers' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Modifiers.php', + 'Carbon\\Traits\\Mutability' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Mutability.php', + 'Carbon\\Traits\\Options' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Options.php', + 'Carbon\\Traits\\Rounding' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Rounding.php', + 'Carbon\\Traits\\Serialization' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Serialization.php', + 'Carbon\\Traits\\Test' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Test.php', + 'Carbon\\Traits\\Timestamp' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Timestamp.php', + 'Carbon\\Traits\\Units' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Units.php', + 'Carbon\\Traits\\Week' => $vendorDir . '/nesbot/carbon/src/Carbon/Traits/Week.php', 'Carbon\\Translator' => $vendorDir . '/nesbot/carbon/src/Carbon/Translator.php', - 'Chumper\\Datatable\\Columns\\BaseColumn' => $vendorDir . '/chumper/datatable/src/Chumper/Datatable/Columns/BaseColumn.php', - 'Chumper\\Datatable\\Columns\\DateColumn' => $vendorDir . '/chumper/datatable/src/Chumper/Datatable/Columns/DateColumn.php', - 'Chumper\\Datatable\\Columns\\FunctionColumn' => $vendorDir . '/chumper/datatable/src/Chumper/Datatable/Columns/FunctionColumn.php', - 'Chumper\\Datatable\\Columns\\TextColumn' => $vendorDir . '/chumper/datatable/src/Chumper/Datatable/Columns/TextColumn.php', - 'Chumper\\Datatable\\Datatable' => $vendorDir . '/chumper/datatable/src/Chumper/Datatable/Datatable.php', - 'Chumper\\Datatable\\DatatableServiceProvider' => $vendorDir . '/chumper/datatable/src/Chumper/Datatable/DatatableServiceProvider.php', - 'Chumper\\Datatable\\Engines\\BaseEngine' => $vendorDir . '/chumper/datatable/src/Chumper/Datatable/Engines/BaseEngine.php', - 'Chumper\\Datatable\\Engines\\CollectionEngine' => $vendorDir . '/chumper/datatable/src/Chumper/Datatable/Engines/CollectionEngine.php', - 'Chumper\\Datatable\\Engines\\QueryEngine' => $vendorDir . '/chumper/datatable/src/Chumper/Datatable/Engines/QueryEngine.php', - 'Chumper\\Datatable\\Facades\\DatatableFacade' => $vendorDir . '/chumper/datatable/src/Chumper/Datatable/Facades/DatatableFacade.php', - 'Chumper\\Datatable\\Table' => $vendorDir . '/chumper/datatable/src/Chumper/Datatable/Table.php', - 'Chumper\\Zipper\\Facades\\Zipper' => $vendorDir . '/chumper/zipper/src/Chumper/Zipper/Facades/Zipper.php', - 'Chumper\\Zipper\\Repositories\\RepositoryInterface' => $vendorDir . '/chumper/zipper/src/Chumper/Zipper/Repositories/RepositoryInterface.php', - 'Chumper\\Zipper\\Repositories\\ZipRepository' => $vendorDir . '/chumper/zipper/src/Chumper/Zipper/Repositories/ZipRepository.php', - 'Chumper\\Zipper\\Zipper' => $vendorDir . '/chumper/zipper/src/Chumper/Zipper/Zipper.php', - 'Chumper\\Zipper\\ZipperServiceProvider' => $vendorDir . '/chumper/zipper/src/Chumper/Zipper/ZipperServiceProvider.php', 'Collective\\Html\\Componentable' => $vendorDir . '/laravelcollective/html/src/Componentable.php', 'Collective\\Html\\Eloquent\\FormAccessible' => $vendorDir . '/laravelcollective/html/src/Eloquent/FormAccessible.php', 'Collective\\Html\\FormBuilder' => $vendorDir . '/laravelcollective/html/src/FormBuilder.php', @@ -830,36 +831,6 @@ 'DeepCopy\\TypeFilter\\Spl\\SplDoublyLinkedListFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/SplDoublyLinkedListFilter.php', 'DeepCopy\\TypeFilter\\TypeFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/TypeFilter.php', 'DeepCopy\\TypeMatcher\\TypeMatcher' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeMatcher/TypeMatcher.php', - 'DeviceDetector\\Cache\\Cache' => $vendorDir . '/piwik/device-detector/Cache/Cache.php', - 'DeviceDetector\\Cache\\PSR16Bridge' => $vendorDir . '/piwik/device-detector/Cache/PSR16Bridge.php', - 'DeviceDetector\\Cache\\PSR6Bridge' => $vendorDir . '/piwik/device-detector/Cache/PSR6Bridge.php', - 'DeviceDetector\\Cache\\StaticCache' => $vendorDir . '/piwik/device-detector/Cache/StaticCache.php', - 'DeviceDetector\\DeviceDetector' => $vendorDir . '/piwik/device-detector/DeviceDetector.php', - 'DeviceDetector\\Parser\\Bot' => $vendorDir . '/piwik/device-detector/Parser/Bot.php', - 'DeviceDetector\\Parser\\BotParserAbstract' => $vendorDir . '/piwik/device-detector/Parser/BotParserAbstract.php', - 'DeviceDetector\\Parser\\Client\\Browser' => $vendorDir . '/piwik/device-detector/Parser/Client/Browser.php', - 'DeviceDetector\\Parser\\Client\\Browser\\Engine' => $vendorDir . '/piwik/device-detector/Parser/Client/Browser/Engine.php', - 'DeviceDetector\\Parser\\Client\\Browser\\Engine\\Version' => $vendorDir . '/piwik/device-detector/Parser/Client/Browser/Engine/Version.php', - 'DeviceDetector\\Parser\\Client\\ClientParserAbstract' => $vendorDir . '/piwik/device-detector/Parser/Client/ClientParserAbstract.php', - 'DeviceDetector\\Parser\\Client\\FeedReader' => $vendorDir . '/piwik/device-detector/Parser/Client/FeedReader.php', - 'DeviceDetector\\Parser\\Client\\Library' => $vendorDir . '/piwik/device-detector/Parser/Client/Library.php', - 'DeviceDetector\\Parser\\Client\\MediaPlayer' => $vendorDir . '/piwik/device-detector/Parser/Client/MediaPlayer.php', - 'DeviceDetector\\Parser\\Client\\MobileApp' => $vendorDir . '/piwik/device-detector/Parser/Client/MobileApp.php', - 'DeviceDetector\\Parser\\Client\\PIM' => $vendorDir . '/piwik/device-detector/Parser/Client/PIM.php', - 'DeviceDetector\\Parser\\Device\\Camera' => $vendorDir . '/piwik/device-detector/Parser/Device/Camera.php', - 'DeviceDetector\\Parser\\Device\\CarBrowser' => $vendorDir . '/piwik/device-detector/Parser/Device/CarBrowser.php', - 'DeviceDetector\\Parser\\Device\\Console' => $vendorDir . '/piwik/device-detector/Parser/Device/Console.php', - 'DeviceDetector\\Parser\\Device\\DeviceParserAbstract' => $vendorDir . '/piwik/device-detector/Parser/Device/DeviceParserAbstract.php', - 'DeviceDetector\\Parser\\Device\\HbbTv' => $vendorDir . '/piwik/device-detector/Parser/Device/HbbTv.php', - 'DeviceDetector\\Parser\\Device\\Mobile' => $vendorDir . '/piwik/device-detector/Parser/Device/Mobile.php', - 'DeviceDetector\\Parser\\Device\\PortableMediaPlayer' => $vendorDir . '/piwik/device-detector/Parser/Device/PortableMediaPlayer.php', - 'DeviceDetector\\Parser\\OperatingSystem' => $vendorDir . '/piwik/device-detector/Parser/OperatingSystem.php', - 'DeviceDetector\\Parser\\ParserAbstract' => $vendorDir . '/piwik/device-detector/Parser/ParserAbstract.php', - 'DeviceDetector\\Parser\\VendorFragment' => $vendorDir . '/piwik/device-detector/Parser/VendorFragment.php', - 'DeviceDetector\\Yaml\\Parser' => $vendorDir . '/piwik/device-detector/Yaml/Parser.php', - 'DeviceDetector\\Yaml\\Pecl' => $vendorDir . '/piwik/device-detector/Yaml/Pecl.php', - 'DeviceDetector\\Yaml\\Spyc' => $vendorDir . '/piwik/device-detector/Yaml/Spyc.php', - 'DeviceDetector\\Yaml\\Symfony' => $vendorDir . '/piwik/device-detector/Yaml/Symfony.php', 'Devio\\Pipedrive\\Builder' => $vendorDir . '/devio/pipedrive/src/Builder.php', 'Devio\\Pipedrive\\Exceptions\\ItemNotFoundException' => $vendorDir . '/devio/pipedrive/src/Exceptions/ItemNotFoundException.php', 'Devio\\Pipedrive\\Exceptions\\PipedriveException' => $vendorDir . '/devio/pipedrive/src/Exceptions/PipedriveException.php', @@ -1279,13 +1250,28 @@ 'Dompdf\\Renderer\\TableRowGroup' => $vendorDir . '/dompdf/dompdf/src/Renderer/TableRowGroup.php', 'Dompdf\\Renderer\\Text' => $vendorDir . '/dompdf/dompdf/src/Renderer/Text.php', 'Dotenv\\Dotenv' => $vendorDir . '/vlucas/phpdotenv/src/Dotenv.php', + 'Dotenv\\Environment\\AbstractVariables' => $vendorDir . '/vlucas/phpdotenv/src/Environment/AbstractVariables.php', + 'Dotenv\\Environment\\Adapter\\AdapterInterface' => $vendorDir . '/vlucas/phpdotenv/src/Environment/Adapter/AdapterInterface.php', + 'Dotenv\\Environment\\Adapter\\ApacheAdapter' => $vendorDir . '/vlucas/phpdotenv/src/Environment/Adapter/ApacheAdapter.php', + 'Dotenv\\Environment\\Adapter\\ArrayAdapter' => $vendorDir . '/vlucas/phpdotenv/src/Environment/Adapter/ArrayAdapter.php', + 'Dotenv\\Environment\\Adapter\\EnvConstAdapter' => $vendorDir . '/vlucas/phpdotenv/src/Environment/Adapter/EnvConstAdapter.php', + 'Dotenv\\Environment\\Adapter\\PutenvAdapter' => $vendorDir . '/vlucas/phpdotenv/src/Environment/Adapter/PutenvAdapter.php', + 'Dotenv\\Environment\\Adapter\\ServerConstAdapter' => $vendorDir . '/vlucas/phpdotenv/src/Environment/Adapter/ServerConstAdapter.php', + 'Dotenv\\Environment\\DotenvFactory' => $vendorDir . '/vlucas/phpdotenv/src/Environment/DotenvFactory.php', + 'Dotenv\\Environment\\DotenvVariables' => $vendorDir . '/vlucas/phpdotenv/src/Environment/DotenvVariables.php', + 'Dotenv\\Environment\\FactoryInterface' => $vendorDir . '/vlucas/phpdotenv/src/Environment/FactoryInterface.php', + 'Dotenv\\Environment\\VariablesInterface' => $vendorDir . '/vlucas/phpdotenv/src/Environment/VariablesInterface.php', 'Dotenv\\Exception\\ExceptionInterface' => $vendorDir . '/vlucas/phpdotenv/src/Exception/ExceptionInterface.php', - 'Dotenv\\Exception\\InvalidCallbackException' => $vendorDir . '/vlucas/phpdotenv/src/Exception/InvalidCallbackException.php', 'Dotenv\\Exception\\InvalidFileException' => $vendorDir . '/vlucas/phpdotenv/src/Exception/InvalidFileException.php', 'Dotenv\\Exception\\InvalidPathException' => $vendorDir . '/vlucas/phpdotenv/src/Exception/InvalidPathException.php', 'Dotenv\\Exception\\ValidationException' => $vendorDir . '/vlucas/phpdotenv/src/Exception/ValidationException.php', + 'Dotenv\\Lines' => $vendorDir . '/vlucas/phpdotenv/src/Lines.php', 'Dotenv\\Loader' => $vendorDir . '/vlucas/phpdotenv/src/Loader.php', 'Dotenv\\Parser' => $vendorDir . '/vlucas/phpdotenv/src/Parser.php', + 'Dotenv\\Regex\\Error' => $vendorDir . '/vlucas/phpdotenv/src/Regex/Error.php', + 'Dotenv\\Regex\\Regex' => $vendorDir . '/vlucas/phpdotenv/src/Regex/Regex.php', + 'Dotenv\\Regex\\Result' => $vendorDir . '/vlucas/phpdotenv/src/Regex/Result.php', + 'Dotenv\\Regex\\Success' => $vendorDir . '/vlucas/phpdotenv/src/Regex/Success.php', 'Dotenv\\Validator' => $vendorDir . '/vlucas/phpdotenv/src/Validator.php', 'Egulias\\EmailValidator\\EmailLexer' => $vendorDir . '/egulias/email-validator/EmailValidator/EmailLexer.php', 'Egulias\\EmailValidator\\EmailParser' => $vendorDir . '/egulias/email-validator/EmailValidator/EmailParser.php', @@ -2245,20 +2231,6 @@ 'Hamcrest\\Type\\IsString' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsString.php', 'Hamcrest\\Util' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Util.php', 'Hamcrest\\Xml\\HasXPath' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Xml/HasXPath.php', - 'Http\\Adapter\\Guzzle6\\Client' => $vendorDir . '/php-http/guzzle6-adapter/src/Client.php', - 'Http\\Adapter\\Guzzle6\\Promise' => $vendorDir . '/php-http/guzzle6-adapter/src/Promise.php', - 'Http\\Client\\Exception' => $vendorDir . '/php-http/httplug/src/Exception.php', - 'Http\\Client\\Exception\\HttpException' => $vendorDir . '/php-http/httplug/src/Exception/HttpException.php', - 'Http\\Client\\Exception\\NetworkException' => $vendorDir . '/php-http/httplug/src/Exception/NetworkException.php', - 'Http\\Client\\Exception\\RequestException' => $vendorDir . '/php-http/httplug/src/Exception/RequestException.php', - 'Http\\Client\\Exception\\TransferException' => $vendorDir . '/php-http/httplug/src/Exception/TransferException.php', - 'Http\\Client\\HttpAsyncClient' => $vendorDir . '/php-http/httplug/src/HttpAsyncClient.php', - 'Http\\Client\\HttpClient' => $vendorDir . '/php-http/httplug/src/HttpClient.php', - 'Http\\Client\\Promise\\HttpFulfilledPromise' => $vendorDir . '/php-http/httplug/src/Promise/HttpFulfilledPromise.php', - 'Http\\Client\\Promise\\HttpRejectedPromise' => $vendorDir . '/php-http/httplug/src/Promise/HttpRejectedPromise.php', - 'Http\\Promise\\FulfilledPromise' => $vendorDir . '/php-http/promise/src/FulfilledPromise.php', - 'Http\\Promise\\Promise' => $vendorDir . '/php-http/promise/src/Promise.php', - 'Http\\Promise\\RejectedPromise' => $vendorDir . '/php-http/promise/src/RejectedPromise.php', 'Illuminate\\Auth\\Access\\AuthorizationException' => $vendorDir . '/laravel/framework/src/Illuminate/Auth/Access/AuthorizationException.php', 'Illuminate\\Auth\\Access\\Gate' => $vendorDir . '/laravel/framework/src/Illuminate/Auth/Access/Gate.php', 'Illuminate\\Auth\\Access\\HandlesAuthorization' => $vendorDir . '/laravel/framework/src/Illuminate/Auth/Access/HandlesAuthorization.php', @@ -2278,6 +2250,7 @@ 'Illuminate\\Auth\\Events\\Lockout' => $vendorDir . '/laravel/framework/src/Illuminate/Auth/Events/Lockout.php', 'Illuminate\\Auth\\Events\\Login' => $vendorDir . '/laravel/framework/src/Illuminate/Auth/Events/Login.php', 'Illuminate\\Auth\\Events\\Logout' => $vendorDir . '/laravel/framework/src/Illuminate/Auth/Events/Logout.php', + 'Illuminate\\Auth\\Events\\OtherDeviceLogout' => $vendorDir . '/laravel/framework/src/Illuminate/Auth/Events/OtherDeviceLogout.php', 'Illuminate\\Auth\\Events\\PasswordReset' => $vendorDir . '/laravel/framework/src/Illuminate/Auth/Events/PasswordReset.php', 'Illuminate\\Auth\\Events\\Registered' => $vendorDir . '/laravel/framework/src/Illuminate/Auth/Events/Registered.php', 'Illuminate\\Auth\\Events\\Verified' => $vendorDir . '/laravel/framework/src/Illuminate/Auth/Events/Verified.php', @@ -2311,6 +2284,7 @@ 'Illuminate\\Broadcasting\\Broadcasters\\NullBroadcaster' => $vendorDir . '/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/NullBroadcaster.php', 'Illuminate\\Broadcasting\\Broadcasters\\PusherBroadcaster' => $vendorDir . '/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/PusherBroadcaster.php', 'Illuminate\\Broadcasting\\Broadcasters\\RedisBroadcaster' => $vendorDir . '/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/RedisBroadcaster.php', + 'Illuminate\\Broadcasting\\Broadcasters\\UsePusherChannelConventions' => $vendorDir . '/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/UsePusherChannelConventions.php', 'Illuminate\\Broadcasting\\Channel' => $vendorDir . '/laravel/framework/src/Illuminate/Broadcasting/Channel.php', 'Illuminate\\Broadcasting\\InteractsWithSockets' => $vendorDir . '/laravel/framework/src/Illuminate/Broadcasting/InteractsWithSockets.php', 'Illuminate\\Broadcasting\\PendingBroadcast' => $vendorDir . '/laravel/framework/src/Illuminate/Broadcasting/PendingBroadcast.php', @@ -2328,6 +2302,8 @@ 'Illuminate\\Cache\\Console\\ClearCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/Console/ClearCommand.php', 'Illuminate\\Cache\\Console\\ForgetCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/Console/ForgetCommand.php', 'Illuminate\\Cache\\DatabaseStore' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/DatabaseStore.php', + 'Illuminate\\Cache\\DynamoDbLock' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/DynamoDbLock.php', + 'Illuminate\\Cache\\DynamoDbStore' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/DynamoDbStore.php', 'Illuminate\\Cache\\Events\\CacheEvent' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/Events/CacheEvent.php', 'Illuminate\\Cache\\Events\\CacheHit' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/Events/CacheHit.php', 'Illuminate\\Cache\\Events\\CacheMissed' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/Events/CacheMissed.php', @@ -2335,6 +2311,7 @@ 'Illuminate\\Cache\\Events\\KeyWritten' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/Events/KeyWritten.php', 'Illuminate\\Cache\\FileStore' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/FileStore.php', 'Illuminate\\Cache\\Lock' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/Lock.php', + 'Illuminate\\Cache\\LuaScripts' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/LuaScripts.php', 'Illuminate\\Cache\\MemcachedConnector' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/MemcachedConnector.php', 'Illuminate\\Cache\\MemcachedLock' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/MemcachedLock.php', 'Illuminate\\Cache\\MemcachedStore' => $vendorDir . '/laravel/framework/src/Illuminate/Cache/MemcachedStore.php', @@ -2374,6 +2351,7 @@ 'Illuminate\\Container\\Container' => $vendorDir . '/laravel/framework/src/Illuminate/Container/Container.php', 'Illuminate\\Container\\ContextualBindingBuilder' => $vendorDir . '/laravel/framework/src/Illuminate/Container/ContextualBindingBuilder.php', 'Illuminate\\Container\\EntryNotFoundException' => $vendorDir . '/laravel/framework/src/Illuminate/Container/EntryNotFoundException.php', + 'Illuminate\\Container\\RewindableGenerator' => $vendorDir . '/laravel/framework/src/Illuminate/Container/RewindableGenerator.php', 'Illuminate\\Contracts\\Auth\\Access\\Authorizable' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Auth/Access/Authorizable.php', 'Illuminate\\Contracts\\Auth\\Access\\Gate' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Auth/Access/Gate.php', 'Illuminate\\Contracts\\Auth\\Authenticatable' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Auth/Authenticatable.php', @@ -2448,6 +2426,7 @@ 'Illuminate\\Contracts\\Routing\\UrlRoutable' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Routing/UrlRoutable.php', 'Illuminate\\Contracts\\Session\\Session' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Session/Session.php', 'Illuminate\\Contracts\\Support\\Arrayable' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Support/Arrayable.php', + 'Illuminate\\Contracts\\Support\\DeferrableProvider' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Support/DeferrableProvider.php', 'Illuminate\\Contracts\\Support\\Htmlable' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Support/Htmlable.php', 'Illuminate\\Contracts\\Support\\Jsonable' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Support/Jsonable.php', 'Illuminate\\Contracts\\Support\\MessageBag' => $vendorDir . '/laravel/framework/src/Illuminate/Contracts/Support/MessageBag.php', @@ -2472,6 +2451,7 @@ 'Illuminate\\Database\\Capsule\\Manager' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Capsule/Manager.php', 'Illuminate\\Database\\Concerns\\BuildsQueries' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Concerns/BuildsQueries.php', 'Illuminate\\Database\\Concerns\\ManagesTransactions' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Concerns/ManagesTransactions.php', + 'Illuminate\\Database\\ConfigurationUrlParser' => $vendorDir . '/laravel/framework/src/Illuminate/Database/ConfigurationUrlParser.php', 'Illuminate\\Database\\Connection' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Connection.php', 'Illuminate\\Database\\ConnectionInterface' => $vendorDir . '/laravel/framework/src/Illuminate/Database/ConnectionInterface.php', 'Illuminate\\Database\\ConnectionResolver' => $vendorDir . '/laravel/framework/src/Illuminate/Database/ConnectionResolver.php', @@ -2528,6 +2508,7 @@ 'Illuminate\\Database\\Eloquent\\Relations\\HasManyThrough' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Relations/HasManyThrough.php', 'Illuminate\\Database\\Eloquent\\Relations\\HasOne' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Relations/HasOne.php', 'Illuminate\\Database\\Eloquent\\Relations\\HasOneOrMany' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Relations/HasOneOrMany.php', + 'Illuminate\\Database\\Eloquent\\Relations\\HasOneThrough' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Relations/HasOneThrough.php', 'Illuminate\\Database\\Eloquent\\Relations\\MorphMany' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Relations/MorphMany.php', 'Illuminate\\Database\\Eloquent\\Relations\\MorphOne' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Relations/MorphOne.php', 'Illuminate\\Database\\Eloquent\\Relations\\MorphOneOrMany' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Eloquent/Relations/MorphOneOrMany.php', @@ -2584,6 +2565,7 @@ 'Illuminate\\Database\\Schema\\PostgresBuilder' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Schema/PostgresBuilder.php', 'Illuminate\\Database\\Schema\\SQLiteBuilder' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Schema/SQLiteBuilder.php', 'Illuminate\\Database\\Schema\\SqlServerBuilder' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Schema/SqlServerBuilder.php', + 'Illuminate\\Database\\Schema\\Types\\TinyInteger' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Schema/Types/TinyInteger.php', 'Illuminate\\Database\\Seeder' => $vendorDir . '/laravel/framework/src/Illuminate/Database/Seeder.php', 'Illuminate\\Database\\SqlServerConnection' => $vendorDir . '/laravel/framework/src/Illuminate/Database/SqlServerConnection.php', 'Illuminate\\Encryption\\Encrypter' => $vendorDir . '/laravel/framework/src/Illuminate/Encryption/Encrypter.php', @@ -2629,7 +2611,10 @@ 'Illuminate\\Foundation\\Console\\ConsoleMakeCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/ConsoleMakeCommand.php', 'Illuminate\\Foundation\\Console\\DownCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/DownCommand.php', 'Illuminate\\Foundation\\Console\\EnvironmentCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/EnvironmentCommand.php', + 'Illuminate\\Foundation\\Console\\EventCacheCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/EventCacheCommand.php', + 'Illuminate\\Foundation\\Console\\EventClearCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/EventClearCommand.php', 'Illuminate\\Foundation\\Console\\EventGenerateCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/EventGenerateCommand.php', + 'Illuminate\\Foundation\\Console\\EventListCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/EventListCommand.php', 'Illuminate\\Foundation\\Console\\EventMakeCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/EventMakeCommand.php', 'Illuminate\\Foundation\\Console\\ExceptionMakeCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/ExceptionMakeCommand.php', 'Illuminate\\Foundation\\Console\\JobMakeCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/JobMakeCommand.php', @@ -2666,6 +2651,7 @@ 'Illuminate\\Foundation\\Console\\ViewCacheCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/ViewCacheCommand.php', 'Illuminate\\Foundation\\Console\\ViewClearCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Console/ViewClearCommand.php', 'Illuminate\\Foundation\\EnvironmentDetector' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/EnvironmentDetector.php', + 'Illuminate\\Foundation\\Events\\DiscoverEvents' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Events/DiscoverEvents.php', 'Illuminate\\Foundation\\Events\\Dispatchable' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Events/Dispatchable.php', 'Illuminate\\Foundation\\Events\\LocaleUpdated' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Events/LocaleUpdated.php', 'Illuminate\\Foundation\\Exceptions\\Handler' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php', @@ -2681,6 +2667,7 @@ 'Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php', 'Illuminate\\Foundation\\Http\\Middleware\\VerifyCsrfToken' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php', 'Illuminate\\Foundation\\Inspiring' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Inspiring.php', + 'Illuminate\\Foundation\\Mix' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Mix.php', 'Illuminate\\Foundation\\PackageManifest' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/PackageManifest.php', 'Illuminate\\Foundation\\ProviderRepository' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/ProviderRepository.php', 'Illuminate\\Foundation\\Providers\\ArtisanServiceProvider' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Providers/ArtisanServiceProvider.php', @@ -2691,6 +2678,7 @@ 'Illuminate\\Foundation\\Support\\Providers\\AuthServiceProvider' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Support/Providers/AuthServiceProvider.php', 'Illuminate\\Foundation\\Support\\Providers\\EventServiceProvider' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Support/Providers/EventServiceProvider.php', 'Illuminate\\Foundation\\Support\\Providers\\RouteServiceProvider' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Support/Providers/RouteServiceProvider.php', + 'Illuminate\\Foundation\\Testing\\Assert' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Testing/Assert.php', 'Illuminate\\Foundation\\Testing\\Concerns\\InteractsWithAuthentication' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithAuthentication.php', 'Illuminate\\Foundation\\Testing\\Concerns\\InteractsWithConsole' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithConsole.php', 'Illuminate\\Foundation\\Testing\\Concerns\\InteractsWithContainer' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithContainer.php', @@ -2705,7 +2693,6 @@ 'Illuminate\\Foundation\\Testing\\Constraints\\SoftDeletedInDatabase' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Testing/Constraints/SoftDeletedInDatabase.php', 'Illuminate\\Foundation\\Testing\\DatabaseMigrations' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Testing/DatabaseMigrations.php', 'Illuminate\\Foundation\\Testing\\DatabaseTransactions' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Testing/DatabaseTransactions.php', - 'Illuminate\\Foundation\\Testing\\HttpException' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Testing/HttpException.php', 'Illuminate\\Foundation\\Testing\\PendingCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Testing/PendingCommand.php', 'Illuminate\\Foundation\\Testing\\RefreshDatabase' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Testing/RefreshDatabase.php', 'Illuminate\\Foundation\\Testing\\RefreshDatabaseState' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/Testing/RefreshDatabaseState.php', @@ -2781,8 +2768,6 @@ 'Illuminate\\Notifications\\Channels\\BroadcastChannel' => $vendorDir . '/laravel/framework/src/Illuminate/Notifications/Channels/BroadcastChannel.php', 'Illuminate\\Notifications\\Channels\\DatabaseChannel' => $vendorDir . '/laravel/framework/src/Illuminate/Notifications/Channels/DatabaseChannel.php', 'Illuminate\\Notifications\\Channels\\MailChannel' => $vendorDir . '/laravel/framework/src/Illuminate/Notifications/Channels/MailChannel.php', - 'Illuminate\\Notifications\\Channels\\NexmoSmsChannel' => $vendorDir . '/laravel/nexmo-notification-channel/src/Channels/NexmoSmsChannel.php', - 'Illuminate\\Notifications\\Channels\\SlackWebhookChannel' => $vendorDir . '/laravel/slack-notification-channel/src/Channels/SlackWebhookChannel.php', 'Illuminate\\Notifications\\Console\\NotificationTableCommand' => $vendorDir . '/laravel/framework/src/Illuminate/Notifications/Console/NotificationTableCommand.php', 'Illuminate\\Notifications\\DatabaseNotification' => $vendorDir . '/laravel/framework/src/Illuminate/Notifications/DatabaseNotification.php', 'Illuminate\\Notifications\\DatabaseNotificationCollection' => $vendorDir . '/laravel/framework/src/Illuminate/Notifications/DatabaseNotificationCollection.php', @@ -2794,19 +2779,13 @@ 'Illuminate\\Notifications\\Messages\\BroadcastMessage' => $vendorDir . '/laravel/framework/src/Illuminate/Notifications/Messages/BroadcastMessage.php', 'Illuminate\\Notifications\\Messages\\DatabaseMessage' => $vendorDir . '/laravel/framework/src/Illuminate/Notifications/Messages/DatabaseMessage.php', 'Illuminate\\Notifications\\Messages\\MailMessage' => $vendorDir . '/laravel/framework/src/Illuminate/Notifications/Messages/MailMessage.php', - 'Illuminate\\Notifications\\Messages\\NexmoMessage' => $vendorDir . '/laravel/nexmo-notification-channel/src/Messages/NexmoMessage.php', 'Illuminate\\Notifications\\Messages\\SimpleMessage' => $vendorDir . '/laravel/framework/src/Illuminate/Notifications/Messages/SimpleMessage.php', - 'Illuminate\\Notifications\\Messages\\SlackAttachment' => $vendorDir . '/laravel/slack-notification-channel/src/Messages/SlackAttachment.php', - 'Illuminate\\Notifications\\Messages\\SlackAttachmentField' => $vendorDir . '/laravel/slack-notification-channel/src/Messages/SlackAttachmentField.php', - 'Illuminate\\Notifications\\Messages\\SlackMessage' => $vendorDir . '/laravel/slack-notification-channel/src/Messages/SlackMessage.php', - 'Illuminate\\Notifications\\NexmoChannelServiceProvider' => $vendorDir . '/laravel/nexmo-notification-channel/src/NexmoChannelServiceProvider.php', 'Illuminate\\Notifications\\Notifiable' => $vendorDir . '/laravel/framework/src/Illuminate/Notifications/Notifiable.php', 'Illuminate\\Notifications\\Notification' => $vendorDir . '/laravel/framework/src/Illuminate/Notifications/Notification.php', 'Illuminate\\Notifications\\NotificationSender' => $vendorDir . '/laravel/framework/src/Illuminate/Notifications/NotificationSender.php', 'Illuminate\\Notifications\\NotificationServiceProvider' => $vendorDir . '/laravel/framework/src/Illuminate/Notifications/NotificationServiceProvider.php', 'Illuminate\\Notifications\\RoutesNotifications' => $vendorDir . '/laravel/framework/src/Illuminate/Notifications/RoutesNotifications.php', 'Illuminate\\Notifications\\SendQueuedNotifications' => $vendorDir . '/laravel/framework/src/Illuminate/Notifications/SendQueuedNotifications.php', - 'Illuminate\\Notifications\\SlackChannelServiceProvider' => $vendorDir . '/laravel/slack-notification-channel/src/SlackChannelServiceProvider.php', 'Illuminate\\Pagination\\AbstractPaginator' => $vendorDir . '/laravel/framework/src/Illuminate/Pagination/AbstractPaginator.php', 'Illuminate\\Pagination\\LengthAwarePaginator' => $vendorDir . '/laravel/framework/src/Illuminate/Pagination/LengthAwarePaginator.php', 'Illuminate\\Pagination\\PaginationServiceProvider' => $vendorDir . '/laravel/framework/src/Illuminate/Pagination/PaginationServiceProvider.php', @@ -2845,7 +2824,6 @@ 'Illuminate\\Queue\\Failed\\DatabaseFailedJobProvider' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Failed/DatabaseFailedJobProvider.php', 'Illuminate\\Queue\\Failed\\FailedJobProviderInterface' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Failed/FailedJobProviderInterface.php', 'Illuminate\\Queue\\Failed\\NullFailedJobProvider' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Failed/NullFailedJobProvider.php', - 'Illuminate\\Queue\\FailingJob' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/FailingJob.php', 'Illuminate\\Queue\\InteractsWithQueue' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/InteractsWithQueue.php', 'Illuminate\\Queue\\InvalidPayloadException' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/InvalidPayloadException.php', 'Illuminate\\Queue\\Jobs\\BeanstalkdJob' => $vendorDir . '/laravel/framework/src/Illuminate/Queue/Jobs/BeanstalkdJob.php', @@ -2919,6 +2897,7 @@ 'Illuminate\\Routing\\RouteCollection' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/RouteCollection.php', 'Illuminate\\Routing\\RouteCompiler' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/RouteCompiler.php', 'Illuminate\\Routing\\RouteDependencyResolverTrait' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/RouteDependencyResolverTrait.php', + 'Illuminate\\Routing\\RouteFileRegistrar' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/RouteFileRegistrar.php', 'Illuminate\\Routing\\RouteGroup' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/RouteGroup.php', 'Illuminate\\Routing\\RouteParameterBinder' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/RouteParameterBinder.php', 'Illuminate\\Routing\\RouteRegistrar' => $vendorDir . '/laravel/framework/src/Illuminate/Routing/RouteRegistrar.php', @@ -2948,6 +2927,7 @@ 'Illuminate\\Support\\Carbon' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Carbon.php', 'Illuminate\\Support\\Collection' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Collection.php', 'Illuminate\\Support\\Composer' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Composer.php', + 'Illuminate\\Support\\DateFactory' => $vendorDir . '/laravel/framework/src/Illuminate/Support/DateFactory.php', 'Illuminate\\Support\\Facades\\App' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Facades/App.php', 'Illuminate\\Support\\Facades\\Artisan' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Facades/Artisan.php', 'Illuminate\\Support\\Facades\\Auth' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Facades/Auth.php', @@ -2959,6 +2939,7 @@ 'Illuminate\\Support\\Facades\\Cookie' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Facades/Cookie.php', 'Illuminate\\Support\\Facades\\Crypt' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Facades/Crypt.php', 'Illuminate\\Support\\Facades\\DB' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Facades/DB.php', + 'Illuminate\\Support\\Facades\\Date' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Facades/Date.php', 'Illuminate\\Support\\Facades\\Event' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Facades/Event.php', 'Illuminate\\Support\\Facades\\Facade' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Facades/Facade.php', 'Illuminate\\Support\\Facades\\File' => $vendorDir . '/laravel/framework/src/Illuminate/Support/Facades/File.php', @@ -3041,6 +3022,7 @@ 'Illuminate\\View\\Compilers\\Concerns\\CompilesComponents' => $vendorDir . '/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesComponents.php', 'Illuminate\\View\\Compilers\\Concerns\\CompilesConditionals' => $vendorDir . '/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesConditionals.php', 'Illuminate\\View\\Compilers\\Concerns\\CompilesEchos' => $vendorDir . '/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesEchos.php', + 'Illuminate\\View\\Compilers\\Concerns\\CompilesErrors' => $vendorDir . '/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesErrors.php', 'Illuminate\\View\\Compilers\\Concerns\\CompilesHelpers' => $vendorDir . '/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesHelpers.php', 'Illuminate\\View\\Compilers\\Concerns\\CompilesIncludes' => $vendorDir . '/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesIncludes.php', 'Illuminate\\View\\Compilers\\Concerns\\CompilesInjections' => $vendorDir . '/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesInjections.php', @@ -3114,42 +3096,10 @@ 'JsonSchema\\Uri\\UriResolver' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Uri/UriResolver.php', 'JsonSchema\\Uri\\UriRetriever' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Uri/UriRetriever.php', 'JsonSchema\\Validator' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Validator.php', - 'JsonSerializable' => $vendorDir . '/nesbot/carbon/src/JsonSerializable.php', 'Laravel\\Tinker\\ClassAliasAutoloader' => $vendorDir . '/laravel/tinker/src/ClassAliasAutoloader.php', 'Laravel\\Tinker\\Console\\TinkerCommand' => $vendorDir . '/laravel/tinker/src/Console/TinkerCommand.php', 'Laravel\\Tinker\\TinkerCaster' => $vendorDir . '/laravel/tinker/src/TinkerCaster.php', 'Laravel\\Tinker\\TinkerServiceProvider' => $vendorDir . '/laravel/tinker/src/TinkerServiceProvider.php', - 'Lcobucci\\JWT\\Builder' => $vendorDir . '/lcobucci/jwt/src/Builder.php', - 'Lcobucci\\JWT\\Claim' => $vendorDir . '/lcobucci/jwt/src/Claim.php', - 'Lcobucci\\JWT\\Claim\\Basic' => $vendorDir . '/lcobucci/jwt/src/Claim/Basic.php', - 'Lcobucci\\JWT\\Claim\\EqualsTo' => $vendorDir . '/lcobucci/jwt/src/Claim/EqualsTo.php', - 'Lcobucci\\JWT\\Claim\\Factory' => $vendorDir . '/lcobucci/jwt/src/Claim/Factory.php', - 'Lcobucci\\JWT\\Claim\\GreaterOrEqualsTo' => $vendorDir . '/lcobucci/jwt/src/Claim/GreaterOrEqualsTo.php', - 'Lcobucci\\JWT\\Claim\\LesserOrEqualsTo' => $vendorDir . '/lcobucci/jwt/src/Claim/LesserOrEqualsTo.php', - 'Lcobucci\\JWT\\Claim\\Validatable' => $vendorDir . '/lcobucci/jwt/src/Claim/Validatable.php', - 'Lcobucci\\JWT\\Parser' => $vendorDir . '/lcobucci/jwt/src/Parser.php', - 'Lcobucci\\JWT\\Parsing\\Decoder' => $vendorDir . '/lcobucci/jwt/src/Parsing/Decoder.php', - 'Lcobucci\\JWT\\Parsing\\Encoder' => $vendorDir . '/lcobucci/jwt/src/Parsing/Encoder.php', - 'Lcobucci\\JWT\\Signature' => $vendorDir . '/lcobucci/jwt/src/Signature.php', - 'Lcobucci\\JWT\\Signer' => $vendorDir . '/lcobucci/jwt/src/Signer.php', - 'Lcobucci\\JWT\\Signer\\BaseSigner' => $vendorDir . '/lcobucci/jwt/src/Signer/BaseSigner.php', - 'Lcobucci\\JWT\\Signer\\Ecdsa' => $vendorDir . '/lcobucci/jwt/src/Signer/Ecdsa.php', - 'Lcobucci\\JWT\\Signer\\Ecdsa\\KeyParser' => $vendorDir . '/lcobucci/jwt/src/Signer/Ecdsa/KeyParser.php', - 'Lcobucci\\JWT\\Signer\\Ecdsa\\Sha256' => $vendorDir . '/lcobucci/jwt/src/Signer/Ecdsa/Sha256.php', - 'Lcobucci\\JWT\\Signer\\Ecdsa\\Sha384' => $vendorDir . '/lcobucci/jwt/src/Signer/Ecdsa/Sha384.php', - 'Lcobucci\\JWT\\Signer\\Ecdsa\\Sha512' => $vendorDir . '/lcobucci/jwt/src/Signer/Ecdsa/Sha512.php', - 'Lcobucci\\JWT\\Signer\\Hmac' => $vendorDir . '/lcobucci/jwt/src/Signer/Hmac.php', - 'Lcobucci\\JWT\\Signer\\Hmac\\Sha256' => $vendorDir . '/lcobucci/jwt/src/Signer/Hmac/Sha256.php', - 'Lcobucci\\JWT\\Signer\\Hmac\\Sha384' => $vendorDir . '/lcobucci/jwt/src/Signer/Hmac/Sha384.php', - 'Lcobucci\\JWT\\Signer\\Hmac\\Sha512' => $vendorDir . '/lcobucci/jwt/src/Signer/Hmac/Sha512.php', - 'Lcobucci\\JWT\\Signer\\Key' => $vendorDir . '/lcobucci/jwt/src/Signer/Key.php', - 'Lcobucci\\JWT\\Signer\\Keychain' => $vendorDir . '/lcobucci/jwt/src/Signer/Keychain.php', - 'Lcobucci\\JWT\\Signer\\Rsa' => $vendorDir . '/lcobucci/jwt/src/Signer/Rsa.php', - 'Lcobucci\\JWT\\Signer\\Rsa\\Sha256' => $vendorDir . '/lcobucci/jwt/src/Signer/Rsa/Sha256.php', - 'Lcobucci\\JWT\\Signer\\Rsa\\Sha384' => $vendorDir . '/lcobucci/jwt/src/Signer/Rsa/Sha384.php', - 'Lcobucci\\JWT\\Signer\\Rsa\\Sha512' => $vendorDir . '/lcobucci/jwt/src/Signer/Rsa/Sha512.php', - 'Lcobucci\\JWT\\Token' => $vendorDir . '/lcobucci/jwt/src/Token.php', - 'Lcobucci\\JWT\\ValidationData' => $vendorDir . '/lcobucci/jwt/src/ValidationData.php', 'League\\CommonMark\\Block\\Element\\AbstractBlock' => $vendorDir . '/league/commonmark/src/Block/Element/AbstractBlock.php', 'League\\CommonMark\\Block\\Element\\BlockQuote' => $vendorDir . '/league/commonmark/src/Block/Element/BlockQuote.php', 'League\\CommonMark\\Block\\Element\\Document' => $vendorDir . '/league/commonmark/src/Block/Element/Document.php', @@ -3207,6 +3157,7 @@ 'League\\CommonMark\\HtmlRenderer' => $vendorDir . '/league/commonmark/src/HtmlRenderer.php', 'League\\CommonMark\\InlineParserContext' => $vendorDir . '/league/commonmark/src/InlineParserContext.php', 'League\\CommonMark\\InlineParserEngine' => $vendorDir . '/league/commonmark/src/InlineParserEngine.php', + 'League\\CommonMark\\Inline\\AdjoiningTextCollapser' => $vendorDir . '/league/commonmark/src/Inline/AdjoiningTextCollapser.php', 'League\\CommonMark\\Inline\\Element\\AbstractInline' => $vendorDir . '/league/commonmark/src/Inline/Element/AbstractInline.php', 'League\\CommonMark\\Inline\\Element\\AbstractInlineContainer' => $vendorDir . '/league/commonmark/src/Inline/Element/AbstractInlineContainer.php', 'League\\CommonMark\\Inline\\Element\\AbstractStringContainer' => $vendorDir . '/league/commonmark/src/Inline/Element/AbstractStringContainer.php', @@ -3388,6 +3339,7 @@ 'Maatwebsite\\Excel\\Events\\BeforeSheet' => $vendorDir . '/maatwebsite/excel/src/Events/BeforeSheet.php', 'Maatwebsite\\Excel\\Events\\BeforeWriting' => $vendorDir . '/maatwebsite/excel/src/Events/BeforeWriting.php', 'Maatwebsite\\Excel\\Events\\Event' => $vendorDir . '/maatwebsite/excel/src/Events/Event.php', + 'Maatwebsite\\Excel\\Events\\ImportFailed' => $vendorDir . '/maatwebsite/excel/src/Events/ImportFailed.php', 'Maatwebsite\\Excel\\Excel' => $vendorDir . '/maatwebsite/excel/src/Excel.php', 'Maatwebsite\\Excel\\ExcelServiceProvider' => $vendorDir . '/maatwebsite/excel/src/ExcelServiceProvider.php', 'Maatwebsite\\Excel\\Exceptions\\ConcernConflictException' => $vendorDir . '/maatwebsite/excel/src/Exceptions/ConcernConflictException.php', @@ -3413,6 +3365,7 @@ 'Maatwebsite\\Excel\\HasEventBus' => $vendorDir . '/maatwebsite/excel/src/HasEventBus.php', 'Maatwebsite\\Excel\\HeadingRowImport' => $vendorDir . '/maatwebsite/excel/src/HeadingRowImport.php', 'Maatwebsite\\Excel\\Helpers\\ArrayHelper' => $vendorDir . '/maatwebsite/excel/src/Helpers/ArrayHelper.php', + 'Maatwebsite\\Excel\\Helpers\\CellHelper' => $vendorDir . '/maatwebsite/excel/src/Helpers/CellHelper.php', 'Maatwebsite\\Excel\\Helpers\\FileTypeDetector' => $vendorDir . '/maatwebsite/excel/src/Helpers/FileTypeDetector.php', 'Maatwebsite\\Excel\\Importer' => $vendorDir . '/maatwebsite/excel/src/Importer.php', 'Maatwebsite\\Excel\\Imports\\EndRowFinder' => $vendorDir . '/maatwebsite/excel/src/Imports/EndRowFinder.php', @@ -3420,6 +3373,7 @@ 'Maatwebsite\\Excel\\Imports\\HeadingRowFormatter' => $vendorDir . '/maatwebsite/excel/src/Imports/HeadingRowFormatter.php', 'Maatwebsite\\Excel\\Imports\\ModelImporter' => $vendorDir . '/maatwebsite/excel/src/Imports/ModelImporter.php', 'Maatwebsite\\Excel\\Imports\\ModelManager' => $vendorDir . '/maatwebsite/excel/src/Imports/ModelManager.php', + 'Maatwebsite\\Excel\\Jobs\\AfterImportJob' => $vendorDir . '/maatwebsite/excel/src/Jobs/AfterImportJob.php', 'Maatwebsite\\Excel\\Jobs\\AppendDataToSheet' => $vendorDir . '/maatwebsite/excel/src/Jobs/AppendDataToSheet.php', 'Maatwebsite\\Excel\\Jobs\\AppendQueryToSheet' => $vendorDir . '/maatwebsite/excel/src/Jobs/AppendQueryToSheet.php', 'Maatwebsite\\Excel\\Jobs\\CloseSheet' => $vendorDir . '/maatwebsite/excel/src/Jobs/CloseSheet.php', @@ -3634,130 +3588,6 @@ 'Monolog\\ResettableInterface' => $vendorDir . '/monolog/monolog/src/Monolog/ResettableInterface.php', 'Monolog\\SignalHandler' => $vendorDir . '/monolog/monolog/src/Monolog/SignalHandler.php', 'Monolog\\Utils' => $vendorDir . '/monolog/monolog/src/Monolog/Utils.php', - 'Nexmo\\Account\\Balance' => $vendorDir . '/nexmo/client/src/Account/Balance.php', - 'Nexmo\\Account\\Client' => $vendorDir . '/nexmo/client/src/Account/Client.php', - 'Nexmo\\Account\\PrefixPrice' => $vendorDir . '/nexmo/client/src/Account/PrefixPrice.php', - 'Nexmo\\Account\\Price' => $vendorDir . '/nexmo/client/src/Account/Price.php', - 'Nexmo\\Account\\Secret' => $vendorDir . '/nexmo/client/src/Account/Secret.php', - 'Nexmo\\Account\\SecretCollection' => $vendorDir . '/nexmo/client/src/Account/SecretCollection.php', - 'Nexmo\\Account\\SmsPrice' => $vendorDir . '/nexmo/client/src/Account/SmsPrice.php', - 'Nexmo\\Account\\VoicePrice' => $vendorDir . '/nexmo/client/src/Account/VoicePrice.php', - 'Nexmo\\ApiErrorHandler' => $vendorDir . '/nexmo/client/src/ApiErrorHandler.php', - 'Nexmo\\Application\\Application' => $vendorDir . '/nexmo/client/src/Application/Application.php', - 'Nexmo\\Application\\ApplicationInterface' => $vendorDir . '/nexmo/client/src/Application/ApplicationInterface.php', - 'Nexmo\\Application\\Client' => $vendorDir . '/nexmo/client/src/Application/Client.php', - 'Nexmo\\Application\\Filter' => $vendorDir . '/nexmo/client/src/Application/Filter.php', - 'Nexmo\\Application\\VoiceConfig' => $vendorDir . '/nexmo/client/src/Application/VoiceConfig.php', - 'Nexmo\\Application\\Webhook' => $vendorDir . '/nexmo/client/src/Application/Webhook.php', - 'Nexmo\\Call\\Call' => $vendorDir . '/nexmo/client/src/Call/Call.php', - 'Nexmo\\Call\\Collection' => $vendorDir . '/nexmo/client/src/Call/Collection.php', - 'Nexmo\\Call\\Dtmf' => $vendorDir . '/nexmo/client/src/Call/Dtmf.php', - 'Nexmo\\Call\\Earmuff' => $vendorDir . '/nexmo/client/src/Call/Earmuff.php', - 'Nexmo\\Call\\Endpoint' => $vendorDir . '/nexmo/client/src/Call/Endpoint.php', - 'Nexmo\\Call\\Event' => $vendorDir . '/nexmo/client/src/Call/Event.php', - 'Nexmo\\Call\\Filter' => $vendorDir . '/nexmo/client/src/Call/Filter.php', - 'Nexmo\\Call\\Hangup' => $vendorDir . '/nexmo/client/src/Call/Hangup.php', - 'Nexmo\\Call\\Mute' => $vendorDir . '/nexmo/client/src/Call/Mute.php', - 'Nexmo\\Call\\Stream' => $vendorDir . '/nexmo/client/src/Call/Stream.php', - 'Nexmo\\Call\\Talk' => $vendorDir . '/nexmo/client/src/Call/Talk.php', - 'Nexmo\\Call\\Transfer' => $vendorDir . '/nexmo/client/src/Call/Transfer.php', - 'Nexmo\\Call\\Unearmuff' => $vendorDir . '/nexmo/client/src/Call/Unearmuff.php', - 'Nexmo\\Call\\Unmute' => $vendorDir . '/nexmo/client/src/Call/Unmute.php', - 'Nexmo\\Call\\Webhook' => $vendorDir . '/nexmo/client/src/Call/Webhook.php', - 'Nexmo\\Client' => $vendorDir . '/nexmo/client/src/Client.php', - 'Nexmo\\Client\\Callback\\Callback' => $vendorDir . '/nexmo/client/src/Client/Callback/Callback.php', - 'Nexmo\\Client\\Callback\\CallbackInterface' => $vendorDir . '/nexmo/client/src/Client/Callback/CallbackInterface.php', - 'Nexmo\\Client\\ClientAwareInterface' => $vendorDir . '/nexmo/client/src/Client/ClientAwareInterface.php', - 'Nexmo\\Client\\ClientAwareTrait' => $vendorDir . '/nexmo/client/src/Client/ClientAwareTrait.php', - 'Nexmo\\Client\\Credentials\\AbstractCredentials' => $vendorDir . '/nexmo/client/src/Client/Credentials/AbstractCredentials.php', - 'Nexmo\\Client\\Credentials\\Basic' => $vendorDir . '/nexmo/client/src/Client/Credentials/Basic.php', - 'Nexmo\\Client\\Credentials\\Container' => $vendorDir . '/nexmo/client/src/Client/Credentials/Container.php', - 'Nexmo\\Client\\Credentials\\CredentialsInterface' => $vendorDir . '/nexmo/client/src/Client/Credentials/CredentialsInterface.php', - 'Nexmo\\Client\\Credentials\\Keypair' => $vendorDir . '/nexmo/client/src/Client/Credentials/Keypair.php', - 'Nexmo\\Client\\Credentials\\OAuth' => $vendorDir . '/nexmo/client/src/Client/Credentials/OAuth.php', - 'Nexmo\\Client\\Credentials\\SignatureSecret' => $vendorDir . '/nexmo/client/src/Client/Credentials/SignatureSecret.php', - 'Nexmo\\Client\\Exception\\Exception' => $vendorDir . '/nexmo/client/src/Client/Exception/Exception.php', - 'Nexmo\\Client\\Exception\\Request' => $vendorDir . '/nexmo/client/src/Client/Exception/Request.php', - 'Nexmo\\Client\\Exception\\Server' => $vendorDir . '/nexmo/client/src/Client/Exception/Server.php', - 'Nexmo\\Client\\Exception\\Transport' => $vendorDir . '/nexmo/client/src/Client/Exception/Transport.php', - 'Nexmo\\Client\\Exception\\Validation' => $vendorDir . '/nexmo/client/src/Client/Exception/Validation.php', - 'Nexmo\\Client\\Factory\\FactoryInterface' => $vendorDir . '/nexmo/client/src/Client/Factory/FactoryInterface.php', - 'Nexmo\\Client\\Factory\\MapFactory' => $vendorDir . '/nexmo/client/src/Client/Factory/MapFactory.php', - 'Nexmo\\Client\\Request\\AbstractRequest' => $vendorDir . '/nexmo/client/src/Client/Request/AbstractRequest.php', - 'Nexmo\\Client\\Request\\RequestInterface' => $vendorDir . '/nexmo/client/src/Client/Request/RequestInterface.php', - 'Nexmo\\Client\\Request\\WrapResponseInterface' => $vendorDir . '/nexmo/client/src/Client/Request/WrapResponseInterface.php', - 'Nexmo\\Client\\Response\\AbstractResponse' => $vendorDir . '/nexmo/client/src/Client/Response/AbstractResponse.php', - 'Nexmo\\Client\\Response\\Error' => $vendorDir . '/nexmo/client/src/Client/Response/Error.php', - 'Nexmo\\Client\\Response\\Response' => $vendorDir . '/nexmo/client/src/Client/Response/Response.php', - 'Nexmo\\Client\\Response\\ResponseInterface' => $vendorDir . '/nexmo/client/src/Client/Response/ResponseInterface.php', - 'Nexmo\\Client\\Signature' => $vendorDir . '/nexmo/client/src/Client/Signature.php', - 'Nexmo\\Conversations\\Collection' => $vendorDir . '/nexmo/client/src/Conversations/Collection.php', - 'Nexmo\\Conversations\\Conversation' => $vendorDir . '/nexmo/client/src/Conversations/Conversation.php', - 'Nexmo\\Conversion\\Client' => $vendorDir . '/nexmo/client/src/Conversion/Client.php', - 'Nexmo\\Entity\\ArrayAccessTrait' => $vendorDir . '/nexmo/client/src/Entity/ArrayAccessTrait.php', - 'Nexmo\\Entity\\CollectionAwareInterface' => $vendorDir . '/nexmo/client/src/Entity/CollectionAwareInterface.php', - 'Nexmo\\Entity\\CollectionAwareTrait' => $vendorDir . '/nexmo/client/src/Entity/CollectionAwareTrait.php', - 'Nexmo\\Entity\\CollectionInterface' => $vendorDir . '/nexmo/client/src/Entity/CollectionInterface.php', - 'Nexmo\\Entity\\CollectionTrait' => $vendorDir . '/nexmo/client/src/Entity/CollectionTrait.php', - 'Nexmo\\Entity\\EmptyFilter' => $vendorDir . '/nexmo/client/src/Entity/EmptyFilter.php', - 'Nexmo\\Entity\\EntityInterface' => $vendorDir . '/nexmo/client/src/Entity/EntityInterface.php', - 'Nexmo\\Entity\\FilterInterface' => $vendorDir . '/nexmo/client/src/Entity/FilterInterface.php', - 'Nexmo\\Entity\\HasEntityTrait' => $vendorDir . '/nexmo/client/src/Entity/HasEntityTrait.php', - 'Nexmo\\Entity\\JsonResponseTrait' => $vendorDir . '/nexmo/client/src/Entity/JsonResponseTrait.php', - 'Nexmo\\Entity\\JsonSerializableInterface' => $vendorDir . '/nexmo/client/src/Entity/JsonSerializableInterface.php', - 'Nexmo\\Entity\\JsonSerializableTrait' => $vendorDir . '/nexmo/client/src/Entity/JsonSerializableTrait.php', - 'Nexmo\\Entity\\JsonUnserializableInterface' => $vendorDir . '/nexmo/client/src/Entity/JsonUnserializableInterface.php', - 'Nexmo\\Entity\\NoRequestResponseTrait' => $vendorDir . '/nexmo/client/src/Entity/NoRequestResponseTrait.php', - 'Nexmo\\Entity\\Psr7Trait' => $vendorDir . '/nexmo/client/src/Entity/Psr7Trait.php', - 'Nexmo\\Entity\\RequestArrayTrait' => $vendorDir . '/nexmo/client/src/Entity/RequestArrayTrait.php', - 'Nexmo\\Insights\\Advanced' => $vendorDir . '/nexmo/client/src/Insights/Advanced.php', - 'Nexmo\\Insights\\AdvancedCnam' => $vendorDir . '/nexmo/client/src/Insights/AdvancedCnam.php', - 'Nexmo\\Insights\\Basic' => $vendorDir . '/nexmo/client/src/Insights/Basic.php', - 'Nexmo\\Insights\\Client' => $vendorDir . '/nexmo/client/src/Insights/Client.php', - 'Nexmo\\Insights\\CnamTrait' => $vendorDir . '/nexmo/client/src/Insights/CnamTrait.php', - 'Nexmo\\Insights\\Standard' => $vendorDir . '/nexmo/client/src/Insights/Standard.php', - 'Nexmo\\Insights\\StandardCnam' => $vendorDir . '/nexmo/client/src/Insights/StandardCnam.php', - 'Nexmo\\InvalidResponseException' => $vendorDir . '/nexmo/client/src/InvalidResponseException.php', - 'Nexmo\\Message\\AutoDetect' => $vendorDir . '/nexmo/client/src/Message/AutoDetect.php', - 'Nexmo\\Message\\Binary' => $vendorDir . '/nexmo/client/src/Message/Binary.php', - 'Nexmo\\Message\\Callback\\Receipt' => $vendorDir . '/nexmo/client/src/Message/Callback/Receipt.php', - 'Nexmo\\Message\\Client' => $vendorDir . '/nexmo/client/src/Message/Client.php', - 'Nexmo\\Message\\CollectionTrait' => $vendorDir . '/nexmo/client/src/Message/CollectionTrait.php', - 'Nexmo\\Message\\EncodingDetector' => $vendorDir . '/nexmo/client/src/Message/EncodingDetector.php', - 'Nexmo\\Message\\InboundMessage' => $vendorDir . '/nexmo/client/src/Message/InboundMessage.php', - 'Nexmo\\Message\\Message' => $vendorDir . '/nexmo/client/src/Message/Message.php', - 'Nexmo\\Message\\MessageInterface' => $vendorDir . '/nexmo/client/src/Message/MessageInterface.php', - 'Nexmo\\Message\\Query' => $vendorDir . '/nexmo/client/src/Message/Query.php', - 'Nexmo\\Message\\Response\\Collection' => $vendorDir . '/nexmo/client/src/Message/Response/Collection.php', - 'Nexmo\\Message\\Response\\Message' => $vendorDir . '/nexmo/client/src/Message/Response/Message.php', - 'Nexmo\\Message\\Shortcode' => $vendorDir . '/nexmo/client/src/Message/Shortcode.php', - 'Nexmo\\Message\\Shortcode\\Alert' => $vendorDir . '/nexmo/client/src/Message/Shortcode/Alert.php', - 'Nexmo\\Message\\Shortcode\\Marketing' => $vendorDir . '/nexmo/client/src/Message/Shortcode/Marketing.php', - 'Nexmo\\Message\\Shortcode\\TwoFactor' => $vendorDir . '/nexmo/client/src/Message/Shortcode/TwoFactor.php', - 'Nexmo\\Message\\Text' => $vendorDir . '/nexmo/client/src/Message/Text.php', - 'Nexmo\\Message\\Unicode' => $vendorDir . '/nexmo/client/src/Message/Unicode.php', - 'Nexmo\\Message\\Vcal' => $vendorDir . '/nexmo/client/src/Message/Vcal.php', - 'Nexmo\\Message\\Vcard' => $vendorDir . '/nexmo/client/src/Message/Vcard.php', - 'Nexmo\\Message\\Wap' => $vendorDir . '/nexmo/client/src/Message/Wap.php', - 'Nexmo\\Network' => $vendorDir . '/nexmo/client/src/Network.php', - 'Nexmo\\Network\\Number\\Callback' => $vendorDir . '/nexmo/client/src/Network/Number/Callback.php', - 'Nexmo\\Network\\Number\\Request' => $vendorDir . '/nexmo/client/src/Network/Number/Request.php', - 'Nexmo\\Network\\Number\\Response' => $vendorDir . '/nexmo/client/src/Network/Number/Response.php', - 'Nexmo\\Numbers\\Client' => $vendorDir . '/nexmo/client/src/Numbers/Client.php', - 'Nexmo\\Numbers\\Number' => $vendorDir . '/nexmo/client/src/Numbers/Number.php', - 'Nexmo\\Redact\\Client' => $vendorDir . '/nexmo/client/src/Redact/Client.php', - 'Nexmo\\Response' => $vendorDir . '/nexmo/client/src/Response.php', - 'Nexmo\\Response\\Message' => $vendorDir . '/nexmo/client/src/Response/Message.php', - 'Nexmo\\User\\Collection' => $vendorDir . '/nexmo/client/src/User/Collection.php', - 'Nexmo\\User\\User' => $vendorDir . '/nexmo/client/src/User/User.php', - 'Nexmo\\Verify\\Check' => $vendorDir . '/nexmo/client/src/Verify/Check.php', - 'Nexmo\\Verify\\Client' => $vendorDir . '/nexmo/client/src/Verify/Client.php', - 'Nexmo\\Verify\\Verification' => $vendorDir . '/nexmo/client/src/Verify/Verification.php', - 'Nexmo\\Verify\\VerificationInterface' => $vendorDir . '/nexmo/client/src/Verify/VerificationInterface.php', - 'Nexmo\\Voice\\Call\\Call' => $vendorDir . '/nexmo/client/src/Voice/Call/Call.php', - 'Nexmo\\Voice\\Call\\Inbound' => $vendorDir . '/nexmo/client/src/Voice/Call/Inbound.php', - 'Nexmo\\Voice\\Message\\Callback' => $vendorDir . '/nexmo/client/src/Voice/Message/Callback.php', - 'Nexmo\\Voice\\Message\\Message' => $vendorDir . '/nexmo/client/src/Voice/Message/Message.php', 'Normalizer' => $vendorDir . '/patchwork/utf8/src/Normalizer.php', 'Opis\\Closure\\Analyzer' => $vendorDir . '/opis/closure/src/Analyzer.php', 'Opis\\Closure\\ClosureContext' => $vendorDir . '/opis/closure/src/ClosureContext.php', @@ -4627,6 +4457,10 @@ 'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\Workbook' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/Workbook.php', 'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\Worksheet' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/Worksheet.php', 'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\WriterPart' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/WriterPart.php', + 'PhpOption\\LazyOption' => $vendorDir . '/phpoption/phpoption/src/PhpOption/LazyOption.php', + 'PhpOption\\None' => $vendorDir . '/phpoption/phpoption/src/PhpOption/None.php', + 'PhpOption\\Option' => $vendorDir . '/phpoption/phpoption/src/PhpOption/Option.php', + 'PhpOption\\Some' => $vendorDir . '/phpoption/phpoption/src/PhpOption/Some.php', 'PhpParser\\Builder' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder.php', 'PhpParser\\BuilderFactory' => $vendorDir . '/nikic/php-parser/lib/PhpParser/BuilderFactory.php', 'PhpParser\\BuilderHelpers' => $vendorDir . '/nikic/php-parser/lib/PhpParser/BuilderHelpers.php', @@ -5467,13 +5301,13 @@ 'Spatie\\Activitylog\\ActivityLogger' => $vendorDir . '/spatie/laravel-activitylog/src/ActivityLogger.php', 'Spatie\\Activitylog\\ActivitylogServiceProvider' => $vendorDir . '/spatie/laravel-activitylog/src/ActivitylogServiceProvider.php', 'Spatie\\Activitylog\\CleanActivitylogCommand' => $vendorDir . '/spatie/laravel-activitylog/src/CleanActivitylogCommand.php', + 'Spatie\\Activitylog\\Contracts\\Activity' => $vendorDir . '/spatie/laravel-activitylog/src/Contracts/Activity.php', 'Spatie\\Activitylog\\Exceptions\\CouldNotLogActivity' => $vendorDir . '/spatie/laravel-activitylog/src/Exceptions/CouldNotLogActivity.php', 'Spatie\\Activitylog\\Exceptions\\CouldNotLogChanges' => $vendorDir . '/spatie/laravel-activitylog/src/Exceptions/CouldNotLogChanges.php', 'Spatie\\Activitylog\\Exceptions\\InvalidConfiguration' => $vendorDir . '/spatie/laravel-activitylog/src/Exceptions/InvalidConfiguration.php', 'Spatie\\Activitylog\\Models\\Activity' => $vendorDir . '/spatie/laravel-activitylog/src/Models/Activity.php', 'Spatie\\Activitylog\\Traits\\CausesActivity' => $vendorDir . '/spatie/laravel-activitylog/src/Traits/CausesActivity.php', 'Spatie\\Activitylog\\Traits\\DetectsChanges' => $vendorDir . '/spatie/laravel-activitylog/src/Traits/DetectsChanges.php', - 'Spatie\\Activitylog\\Traits\\HasActivity' => $vendorDir . '/spatie/laravel-activitylog/src/Traits/HasActivity.php', 'Spatie\\Activitylog\\Traits\\LogsActivity' => $vendorDir . '/spatie/laravel-activitylog/src/Traits/LogsActivity.php', 'Spatie\\String\\Exceptions\\ErrorCreatingStringException' => $vendorDir . '/spatie/string/src/Exceptions/ErrorCreatingStringException.php', 'Spatie\\String\\Exceptions\\UnknownFunctionException' => $vendorDir . '/spatie/string/src/Exceptions/UnknownFunctionException.php', @@ -6117,6 +5951,7 @@ 'Symfony\\Contracts\\Translation\\TranslatorTrait' => $vendorDir . '/symfony/contracts/Translation/TranslatorTrait.php', 'Symfony\\Polyfill\\Ctype\\Ctype' => $vendorDir . '/symfony/polyfill-ctype/Ctype.php', 'Symfony\\Polyfill\\Iconv\\Iconv' => $vendorDir . '/symfony/polyfill-iconv/Iconv.php', + 'Symfony\\Polyfill\\Intl\\Idn\\Idn' => $vendorDir . '/symfony/polyfill-intl-idn/Idn.php', 'Symfony\\Polyfill\\Mbstring\\Mbstring' => $vendorDir . '/symfony/polyfill-mbstring/Mbstring.php', 'Symfony\\Polyfill\\Php72\\Php72' => $vendorDir . '/symfony/polyfill-php72/Php72.php', 'TaxByStatesSeeder' => $baseDir . '/database/seeds/TaxByStatesSeeder.php', @@ -6215,18 +6050,6 @@ 'Underscore\\UnderscoreTest' => $vendorDir . '/anahkiasen/underscore-php/tests/UnderscoreTest.php', 'Underscore\\UnderscoreTestCase' => $vendorDir . '/anahkiasen/underscore-php/tests/UnderscoreTestCase.php', 'UserTableSeeder' => $baseDir . '/database/seeds/DatabaseSeeder.php', - 'Voerro\\Laravel\\VisitorTracker\\Controllers\\StatisticsController' => $vendorDir . '/voerro/laravel-visitor-tracker/src/Controllers/StatisticsController.php', - 'Voerro\\Laravel\\VisitorTracker\\Facades\\VisitStats' => $vendorDir . '/voerro/laravel-visitor-tracker/src/Facades/VisitStats.php', - 'Voerro\\Laravel\\VisitorTracker\\Geoip' => $vendorDir . '/voerro/laravel-visitor-tracker/src/Geoip.php', - 'Voerro\\Laravel\\VisitorTracker\\Geoip\\Driver' => $vendorDir . '/voerro/laravel-visitor-tracker/src/Geoip/Driver.php', - 'Voerro\\Laravel\\VisitorTracker\\Geoip\\Ipstack' => $vendorDir . '/voerro/laravel-visitor-tracker/src/Geoip/Ipstack.php', - 'Voerro\\Laravel\\VisitorTracker\\Geoip\\Userinfo' => $vendorDir . '/voerro/laravel-visitor-tracker/src/Geoip/Userinfo.php', - 'Voerro\\Laravel\\VisitorTracker\\Jobs\\GetGeoipData' => $vendorDir . '/voerro/laravel-visitor-tracker/src/Jobs/GetGeoipData.php', - 'Voerro\\Laravel\\VisitorTracker\\Middleware\\RecordVisits' => $vendorDir . '/voerro/laravel-visitor-tracker/src/Middleware/RecordVisits.php', - 'Voerro\\Laravel\\VisitorTracker\\Models\\Visit' => $vendorDir . '/voerro/laravel-visitor-tracker/src/Models/Visit.php', - 'Voerro\\Laravel\\VisitorTracker\\Tracker' => $vendorDir . '/voerro/laravel-visitor-tracker/src/Tracker.php', - 'Voerro\\Laravel\\VisitorTracker\\VisitStats' => $vendorDir . '/voerro/laravel-visitor-tracker/src/VisitStats.php', - 'Voerro\\Laravel\\VisitorTracker\\VisitorTrackerServiceProvider' => $vendorDir . '/voerro/laravel-visitor-tracker/src/VisitorTrackerServiceProvider.php', 'Webmozart\\Assert\\Assert' => $vendorDir . '/webmozart/assert/src/Assert.php', 'XdgBaseDir\\Xdg' => $vendorDir . '/dnoegel/php-xdg-base-dir/src/Xdg.php', 'Yajra\\DataTables\\ApiResourceDataTable' => $vendorDir . '/yajra/laravel-datatables-oracle/src/ApiResourceDataTable.php', @@ -6307,38 +6130,6 @@ 'Yajra\\DataTables\\Utilities\\Config' => $vendorDir . '/yajra/laravel-datatables-oracle/src/Utilities/Config.php', 'Yajra\\DataTables\\Utilities\\Helper' => $vendorDir . '/yajra/laravel-datatables-oracle/src/Utilities/Helper.php', 'Yajra\\DataTables\\Utilities\\Request' => $vendorDir . '/yajra/laravel-datatables-oracle/src/Utilities/Request.php', - 'Zend\\Diactoros\\AbstractSerializer' => $vendorDir . '/zendframework/zend-diactoros/src/AbstractSerializer.php', - 'Zend\\Diactoros\\CallbackStream' => $vendorDir . '/zendframework/zend-diactoros/src/CallbackStream.php', - 'Zend\\Diactoros\\Exception\\DeprecatedMethodException' => $vendorDir . '/zendframework/zend-diactoros/src/Exception/DeprecatedMethodException.php', - 'Zend\\Diactoros\\Exception\\ExceptionInterface' => $vendorDir . '/zendframework/zend-diactoros/src/Exception/ExceptionInterface.php', - 'Zend\\Diactoros\\HeaderSecurity' => $vendorDir . '/zendframework/zend-diactoros/src/HeaderSecurity.php', - 'Zend\\Diactoros\\MessageTrait' => $vendorDir . '/zendframework/zend-diactoros/src/MessageTrait.php', - 'Zend\\Diactoros\\PhpInputStream' => $vendorDir . '/zendframework/zend-diactoros/src/PhpInputStream.php', - 'Zend\\Diactoros\\RelativeStream' => $vendorDir . '/zendframework/zend-diactoros/src/RelativeStream.php', - 'Zend\\Diactoros\\Request' => $vendorDir . '/zendframework/zend-diactoros/src/Request.php', - 'Zend\\Diactoros\\RequestTrait' => $vendorDir . '/zendframework/zend-diactoros/src/RequestTrait.php', - 'Zend\\Diactoros\\Request\\ArraySerializer' => $vendorDir . '/zendframework/zend-diactoros/src/Request/ArraySerializer.php', - 'Zend\\Diactoros\\Request\\Serializer' => $vendorDir . '/zendframework/zend-diactoros/src/Request/Serializer.php', - 'Zend\\Diactoros\\Response' => $vendorDir . '/zendframework/zend-diactoros/src/Response.php', - 'Zend\\Diactoros\\Response\\ArraySerializer' => $vendorDir . '/zendframework/zend-diactoros/src/Response/ArraySerializer.php', - 'Zend\\Diactoros\\Response\\EmitterInterface' => $vendorDir . '/zendframework/zend-diactoros/src/Response/EmitterInterface.php', - 'Zend\\Diactoros\\Response\\EmptyResponse' => $vendorDir . '/zendframework/zend-diactoros/src/Response/EmptyResponse.php', - 'Zend\\Diactoros\\Response\\HtmlResponse' => $vendorDir . '/zendframework/zend-diactoros/src/Response/HtmlResponse.php', - 'Zend\\Diactoros\\Response\\InjectContentTypeTrait' => $vendorDir . '/zendframework/zend-diactoros/src/Response/InjectContentTypeTrait.php', - 'Zend\\Diactoros\\Response\\JsonResponse' => $vendorDir . '/zendframework/zend-diactoros/src/Response/JsonResponse.php', - 'Zend\\Diactoros\\Response\\RedirectResponse' => $vendorDir . '/zendframework/zend-diactoros/src/Response/RedirectResponse.php', - 'Zend\\Diactoros\\Response\\SapiEmitter' => $vendorDir . '/zendframework/zend-diactoros/src/Response/SapiEmitter.php', - 'Zend\\Diactoros\\Response\\SapiEmitterTrait' => $vendorDir . '/zendframework/zend-diactoros/src/Response/SapiEmitterTrait.php', - 'Zend\\Diactoros\\Response\\SapiStreamEmitter' => $vendorDir . '/zendframework/zend-diactoros/src/Response/SapiStreamEmitter.php', - 'Zend\\Diactoros\\Response\\Serializer' => $vendorDir . '/zendframework/zend-diactoros/src/Response/Serializer.php', - 'Zend\\Diactoros\\Response\\TextResponse' => $vendorDir . '/zendframework/zend-diactoros/src/Response/TextResponse.php', - 'Zend\\Diactoros\\Response\\XmlResponse' => $vendorDir . '/zendframework/zend-diactoros/src/Response/XmlResponse.php', - 'Zend\\Diactoros\\Server' => $vendorDir . '/zendframework/zend-diactoros/src/Server.php', - 'Zend\\Diactoros\\ServerRequest' => $vendorDir . '/zendframework/zend-diactoros/src/ServerRequest.php', - 'Zend\\Diactoros\\ServerRequestFactory' => $vendorDir . '/zendframework/zend-diactoros/src/ServerRequestFactory.php', - 'Zend\\Diactoros\\Stream' => $vendorDir . '/zendframework/zend-diactoros/src/Stream.php', - 'Zend\\Diactoros\\UploadedFile' => $vendorDir . '/zendframework/zend-diactoros/src/UploadedFile.php', - 'Zend\\Diactoros\\Uri' => $vendorDir . '/zendframework/zend-diactoros/src/Uri.php', 'mailchimpFieldAgoraSeeder' => $baseDir . '/database/seeds/DatabaseSeeder.php', 'mailchimpSettingSeeder' => $baseDir . '/database/seeds/DatabaseSeeder.php', 'phpDocumentor\\Reflection\\DocBlock' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock.php', @@ -6419,6 +6210,8 @@ 'phpmock\\MockEnabledException' => $vendorDir . '/php-mock/php-mock/classes/MockEnabledException.php', 'phpmock\\MockRegistry' => $vendorDir . '/php-mock/php-mock/classes/MockRegistry.php', 'phpmock\\MockTest' => $vendorDir . '/php-mock/php-mock/tests/MockTest.php', + 'phpmock\\TestCaseNoTypeHintTrait' => $vendorDir . '/php-mock/php-mock/tests/TestCaseNoTypeHintTrait.php', + 'phpmock\\TestCaseTypeHintTrait' => $vendorDir . '/php-mock/php-mock/tests/TestCaseTypeHintTrait.php', 'phpmock\\environment\\MockEnvironment' => $vendorDir . '/php-mock/php-mock/classes/environment/MockEnvironment.php', 'phpmock\\environment\\MockEnvironmentTest' => $vendorDir . '/php-mock/php-mock/tests/environment/MockEnvironmentTest.php', 'phpmock\\environment\\SleepEnvironmentBuilder' => $vendorDir . '/php-mock/php-mock/classes/environment/SleepEnvironmentBuilder.php', diff --git a/vendor/composer/autoload_files.php b/vendor/composer/autoload_files.php index 38379fc585..0811b45e6d 100644 --- a/vendor/composer/autoload_files.php +++ b/vendor/composer/autoload_files.php @@ -8,15 +8,14 @@ return array( '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php', '1d1b89d124cc9cb8219922c9d5569199' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest.php', + '25072dd6e2470089de65ae7bf11d3109' => $vendorDir . '/symfony/polyfill-php72/bootstrap.php', + '667aeda72477189d0494fecd327c3641' => $vendorDir . '/symfony/var-dumper/Resources/functions/dump.php', '320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '/symfony/polyfill-ctype/bootstrap.php', + '0b47d6d4a00ca9112ba3953b49e7c9a4' => $vendorDir . '/yajra/laravel-datatables-oracle/src/helper.php', '7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php', 'c964ee0ededf28c96ebd9db5099ef910' => $vendorDir . '/guzzlehttp/promises/src/functions_include.php', 'a0edc8309cc5e1d60e3047b5df6b7052' => $vendorDir . '/guzzlehttp/psr7/src/functions_include.php', '37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php', - '25072dd6e2470089de65ae7bf11d3109' => $vendorDir . '/symfony/polyfill-php72/bootstrap.php', - '667aeda72477189d0494fecd327c3641' => $vendorDir . '/symfony/var-dumper/Resources/functions/dump.php', - '0b47d6d4a00ca9112ba3953b49e7c9a4' => $vendorDir . '/yajra/laravel-datatables-oracle/src/helper.php', - '538ca81a9a966a6716601ecf48f4eaef' => $vendorDir . '/opis/closure/functions.php', 'f18cc91337d49233e5754e93f3ed9ec3' => $vendorDir . '/laravelcollective/html/src/helpers.php', 'abede361264e2ae69ec1eee813a101af' => $vendorDir . '/markbaker/complex/classes/src/functions/abs.php', '21a5860fbef5be28db5ddfbc3cca67c4' => $vendorDir . '/markbaker/complex/classes/src/functions/acos.php', @@ -76,29 +75,24 @@ 'aa53dcba601214d17ad405b7c291b7e8' => $vendorDir . '/markbaker/matrix/classes/src/operations/multiply.php', '75c79eb1b25749b05a47976f32b0d8a2' => $vendorDir . '/markbaker/matrix/classes/src/operations/divideby.php', '6ab8ad87a734f276a6bcd5a0fe1289be' => $vendorDir . '/markbaker/matrix/classes/src/operations/divideinto.php', + '538ca81a9a966a6716601ecf48f4eaef' => $vendorDir . '/opis/closure/functions.php', + 'def43f6c87e4f8dfd0c9e1b1bab14fe8' => $vendorDir . '/symfony/polyfill-iconv/bootstrap.php', + 'f598d06aa772fa33d905e87be6398fb1' => $vendorDir . '/symfony/polyfill-intl-idn/bootstrap.php', '2c102faa651ef8ea5874edb585946bce' => $vendorDir . '/swiftmailer/swiftmailer/lib/swift_required.php', - 'cf97c57bfe0f23854afd2f3818abb7a0' => $vendorDir . '/zendframework/zend-diactoros/src/functions/create_uploaded_file.php', - '9bf37a3d0dad93e29cb4e1b1bfab04e9' => $vendorDir . '/zendframework/zend-diactoros/src/functions/marshal_headers_from_sapi.php', - 'ce70dccb4bcc2efc6e94d2ee526e6972' => $vendorDir . '/zendframework/zend-diactoros/src/functions/marshal_method_from_sapi.php', - 'f86420df471f14d568bfcb71e271b523' => $vendorDir . '/zendframework/zend-diactoros/src/functions/marshal_protocol_version_from_sapi.php', - 'b87481e008a3700344428ae089e7f9e5' => $vendorDir . '/zendframework/zend-diactoros/src/functions/marshal_uri_from_sapi.php', - '0b0974a5566a1077e4f2e111341112c1' => $vendorDir . '/zendframework/zend-diactoros/src/functions/normalize_server.php', - '1ca3bc274755662169f9629d5412a1da' => $vendorDir . '/zendframework/zend-diactoros/src/functions/normalize_uploaded_files.php', - '40360c0b9b437e69bcbb7f1349ce029e' => $vendorDir . '/zendframework/zend-diactoros/src/functions/parse_cookie_header.php', - '04c6c5c2f7095ccf6c481d3e53e1776f' => $vendorDir . '/mustangostang/spyc/Spyc.php', 'e803af0597ea9e5b518c7d090fb85601' => $vendorDir . '/arcanedev/support/constants.php', '5323a5cb5bb1bab9b2f24566beed262a' => $vendorDir . '/arcanedev/support/helpers.php', - 'f0906e6318348a765ffb6eb24e0d0938' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/helpers.php', - '58571171fd5812e6e447dce228f52f4d' => $vendorDir . '/laravel/framework/src/Illuminate/Support/helpers.php', + '17d016dc52a631c1e74d2eb8fdd57342' => $vendorDir . '/laravel/helpers/src/helpers.php', '6124b4c8570aa390c21fafd04a26c69f' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/deep_copy.php', '801c31d8ed748cfa537fa45402288c95' => $vendorDir . '/psy/psysh/src/functions.php', 'e91d0dc994644828154ae2387ede1ca8' => $vendorDir . '/spatie/string/src/string_functions.php', 'd04e9322f14ab3e66b5b68c6d1e15433' => $vendorDir . '/arcanedev/log-viewer/constants.php', '24be6d98d7c305f36699ba4e34b6df3c' => $vendorDir . '/arcanedev/log-viewer/helpers.php', '2cffec82183ee1cea088009cef9a6fc3' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier.composer.php', + 'f0906e6318348a765ffb6eb24e0d0938' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/helpers.php', + '58571171fd5812e6e447dce228f52f4d' => $vendorDir . '/laravel/framework/src/Illuminate/Support/helpers.php', + '9e7a8ca9c2c682ec2704dd873a0e3618' => $vendorDir . '/php-mock/php-mock/autoload.php', 'd7354eb4c8441fbf08eec280b61c7c73' => $vendorDir . '/rachidlaasri/laravel-installer/src/Helpers/functions.php', '72b1e3f4a2af9b30b3f137b3ec2057fc' => $vendorDir . '/spatie/laravel-activitylog/src/helpers.php', - 'def43f6c87e4f8dfd0c9e1b1bab14fe8' => $vendorDir . '/symfony/polyfill-iconv/bootstrap.php', '377d15ea71be0306a9829d9f78207a1c' => $vendorDir . '/torann/currency/src/helpers.php', '1e298922c3e2134d42dcdb03e6d5f55a' => $vendorDir . '/torann/geoip/src/helpers.php', '6d394c3a532652dafb4dd296ba6a3f0b' => $baseDir . '/app/Http/helpers.php', diff --git a/vendor/composer/autoload_namespaces.php b/vendor/composer/autoload_namespaces.php index 0ec5dca408..6d7d9801ab 100644 --- a/vendor/composer/autoload_namespaces.php +++ b/vendor/composer/autoload_namespaces.php @@ -12,11 +12,11 @@ 'Sabberworm\\CSS' => array($vendorDir . '/sabberworm/php-css-parser/lib'), 'Requests' => array($vendorDir . '/rmccue/requests/library'), 'Prophecy\\' => array($vendorDir . '/phpspec/prophecy/src'), + 'PhpOption\\' => array($vendorDir . '/phpoption/phpoption/src'), 'Parsedown' => array($vendorDir . '/erusev/parsedown'), 'PHPExcel' => array($vendorDir . '/phpoffice/phpexcel/Classes'), 'Mockery' => array($vendorDir . '/mockery/mockery/library'), 'HTMLPurifier' => array($vendorDir . '/ezyang/htmlpurifier/library'), 'Doctrine\\Common\\Lexer\\' => array($vendorDir . '/doctrine/lexer/lib'), - 'Chumper\\Datatable' => array($vendorDir . '/chumper/datatable/src'), 'Barryvdh' => array($vendorDir . '/barryvdh/reflection-docblock/src'), ); diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php index 71e49a2dd7..3e5746105b 100644 --- a/vendor/composer/autoload_psr4.php +++ b/vendor/composer/autoload_psr4.php @@ -8,11 +8,9 @@ return array( 'phpmock\\' => array($vendorDir . '/php-mock/php-mock/classes', $vendorDir . '/php-mock/php-mock/tests'), 'phpDocumentor\\Reflection\\' => array($vendorDir . '/phpdocumentor/reflection-common/src', $vendorDir . '/phpdocumentor/reflection-docblock/src', $vendorDir . '/phpdocumentor/type-resolver/src'), - 'Zend\\Diactoros\\' => array($vendorDir . '/zendframework/zend-diactoros/src'), 'Yajra\\DataTables\\' => array($vendorDir . '/yajra/laravel-datatables-buttons/src', $vendorDir . '/yajra/laravel-datatables-editor/src', $vendorDir . '/yajra/laravel-datatables-fractal/src', $vendorDir . '/yajra/laravel-datatables-html/src', $vendorDir . '/yajra/laravel-datatables-oracle/src'), 'XdgBaseDir\\' => array($vendorDir . '/dnoegel/php-xdg-base-dir/src'), 'Webmozart\\Assert\\' => array($vendorDir . '/webmozart/assert/src'), - 'Voerro\\Laravel\\VisitorTracker\\' => array($vendorDir . '/voerro/laravel-visitor-tracker/src'), 'Underscore\\' => array($vendorDir . '/anahkiasen/underscore-php/src', $vendorDir . '/anahkiasen/underscore-php/tests'), 'Torann\\GeoIP\\' => array($vendorDir . '/torann/geoip/src'), 'Torann\\Currency\\' => array($vendorDir . '/torann/currency/src'), @@ -22,6 +20,7 @@ 'Tests\\' => array($baseDir . '/tests'), 'Symfony\\Polyfill\\Php72\\' => array($vendorDir . '/symfony/polyfill-php72'), 'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'), + 'Symfony\\Polyfill\\Intl\\Idn\\' => array($vendorDir . '/symfony/polyfill-intl-idn'), 'Symfony\\Polyfill\\Iconv\\' => array($vendorDir . '/symfony/polyfill-iconv'), 'Symfony\\Polyfill\\Ctype\\' => array($vendorDir . '/symfony/polyfill-ctype'), 'Symfony\\Contracts\\' => array($vendorDir . '/symfony/contracts'), @@ -56,7 +55,6 @@ 'PhpOffice\\PhpSpreadsheet\\' => array($vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet'), 'Patchwork\\' => array($vendorDir . '/patchwork/utf8/src/Patchwork'), 'Opis\\Closure\\' => array($vendorDir . '/opis/closure/src'), - 'Nexmo\\' => array($vendorDir . '/nexmo/client/src'), 'Monolog\\' => array($vendorDir . '/monolog/monolog/src/Monolog'), 'MaxMind\\WebService\\' => array($vendorDir . '/maxmind/web-service-common/src/WebService'), 'MaxMind\\Exception\\' => array($vendorDir . '/maxmind/web-service-common/src/Exception'), @@ -67,16 +65,11 @@ 'League\\Fractal\\' => array($vendorDir . '/league/fractal/src'), 'League\\Flysystem\\' => array($vendorDir . '/league/flysystem/src'), 'League\\CommonMark\\' => array($vendorDir . '/league/commonmark/src'), - 'Lcobucci\\JWT\\' => array($vendorDir . '/lcobucci/jwt/src'), 'Laravel\\Tinker\\' => array($vendorDir . '/laravel/tinker/src'), 'JsonSchema\\' => array($vendorDir . '/justinrainbow/json-schema/src/JsonSchema'), 'JakubOnderka\\PhpConsoleHighlighter\\' => array($vendorDir . '/jakub-onderka/php-console-highlighter/src'), 'JakubOnderka\\PhpConsoleColor\\' => array($vendorDir . '/jakub-onderka/php-console-color/src'), - 'Illuminate\\Notifications\\' => array($vendorDir . '/laravel/nexmo-notification-channel/src', $vendorDir . '/laravel/slack-notification-channel/src'), 'Illuminate\\' => array($vendorDir . '/laravel/framework/src/Illuminate'), - 'Http\\Promise\\' => array($vendorDir . '/php-http/promise/src'), - 'Http\\Client\\' => array($vendorDir . '/php-http/httplug/src'), - 'Http\\Adapter\\Guzzle6\\' => array($vendorDir . '/php-http/guzzle6-adapter/src'), 'GuzzleHttp\\Psr7\\' => array($vendorDir . '/guzzlehttp/psr7/src'), 'GuzzleHttp\\Promise\\' => array($vendorDir . '/guzzlehttp/promises/src'), 'GuzzleHttp\\' => array($vendorDir . '/guzzlehttp/guzzle/src'), @@ -93,7 +86,6 @@ 'Doctrine\\Common\\Cache\\' => array($vendorDir . '/doctrine/cache/lib/Doctrine/Common/Cache'), 'Doctrine\\Common\\' => array($vendorDir . '/doctrine/event-manager/lib/Doctrine/Common'), 'Devio\\Pipedrive\\' => array($vendorDir . '/devio/pipedrive/src'), - 'DeviceDetector\\' => array($vendorDir . '/piwik/device-detector'), 'DeepCopy\\' => array($vendorDir . '/myclabs/deep-copy/src/DeepCopy'), 'Darryldecode\\' => array($vendorDir . '/darryldecode/cart/src/Darryldecode'), 'Cron\\' => array($vendorDir . '/dragonmantank/cron-expression/src/Cron'), @@ -104,17 +96,14 @@ 'Composer\\' => array($vendorDir . '/composer/composer/src/Composer'), 'Complex\\' => array($vendorDir . '/markbaker/complex/classes/src'), 'Collective\\Html\\' => array($vendorDir . '/laravelcollective/html/src'), - 'Chumper\\Zipper\\' => array($vendorDir . '/chumper/zipper/src/Chumper/Zipper'), + 'Carbon\\' => array($vendorDir . '/nesbot/carbon/src/Carbon'), 'Bugsnag\\PsrLogger\\' => array($vendorDir . '/bugsnag/bugsnag-psr-logger/src'), 'Bugsnag\\BugsnagLaravel\\' => array($vendorDir . '/bugsnag/bugsnag-laravel/src'), 'Bugsnag\\' => array($vendorDir . '/bugsnag/bugsnag/src'), 'Barryvdh\\LaravelIdeHelper\\' => array($vendorDir . '/barryvdh/laravel-ide-helper/src'), 'Barryvdh\\DomPDF\\' => array($vendorDir . '/barryvdh/laravel-dompdf/src'), - 'Barryvdh\\Cors\\' => array($vendorDir . '/barryvdh/laravel-cors/src'), - 'Asm89\\Stack\\' => array($vendorDir . '/asm89/stack-cors/src/Asm89/Stack'), 'Arcanedev\\Support\\' => array($vendorDir . '/arcanedev/support/src'), 'Arcanedev\\LogViewer\\' => array($vendorDir . '/arcanedev/log-viewer/src'), 'App\\' => array($baseDir . '/app'), 'Anhskohbo\\NoCaptcha\\' => array($vendorDir . '/anhskohbo/no-captcha/src'), - '' => array($vendorDir . '/nesbot/carbon/src'), ); diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index 8ca7e60ced..9c2add3b72 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -9,15 +9,14 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 public static $files = array ( '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php', '1d1b89d124cc9cb8219922c9d5569199' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest.php', + '25072dd6e2470089de65ae7bf11d3109' => __DIR__ . '/..' . '/symfony/polyfill-php72/bootstrap.php', + '667aeda72477189d0494fecd327c3641' => __DIR__ . '/..' . '/symfony/var-dumper/Resources/functions/dump.php', '320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php', + '0b47d6d4a00ca9112ba3953b49e7c9a4' => __DIR__ . '/..' . '/yajra/laravel-datatables-oracle/src/helper.php', '7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php', 'c964ee0ededf28c96ebd9db5099ef910' => __DIR__ . '/..' . '/guzzlehttp/promises/src/functions_include.php', 'a0edc8309cc5e1d60e3047b5df6b7052' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/functions_include.php', '37a3dc5111fe8f707ab4c132ef1dbc62' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/functions_include.php', - '25072dd6e2470089de65ae7bf11d3109' => __DIR__ . '/..' . '/symfony/polyfill-php72/bootstrap.php', - '667aeda72477189d0494fecd327c3641' => __DIR__ . '/..' . '/symfony/var-dumper/Resources/functions/dump.php', - '0b47d6d4a00ca9112ba3953b49e7c9a4' => __DIR__ . '/..' . '/yajra/laravel-datatables-oracle/src/helper.php', - '538ca81a9a966a6716601ecf48f4eaef' => __DIR__ . '/..' . '/opis/closure/functions.php', 'f18cc91337d49233e5754e93f3ed9ec3' => __DIR__ . '/..' . '/laravelcollective/html/src/helpers.php', 'abede361264e2ae69ec1eee813a101af' => __DIR__ . '/..' . '/markbaker/complex/classes/src/functions/abs.php', '21a5860fbef5be28db5ddfbc3cca67c4' => __DIR__ . '/..' . '/markbaker/complex/classes/src/functions/acos.php', @@ -77,29 +76,24 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 'aa53dcba601214d17ad405b7c291b7e8' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/operations/multiply.php', '75c79eb1b25749b05a47976f32b0d8a2' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/operations/divideby.php', '6ab8ad87a734f276a6bcd5a0fe1289be' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/operations/divideinto.php', + '538ca81a9a966a6716601ecf48f4eaef' => __DIR__ . '/..' . '/opis/closure/functions.php', + 'def43f6c87e4f8dfd0c9e1b1bab14fe8' => __DIR__ . '/..' . '/symfony/polyfill-iconv/bootstrap.php', + 'f598d06aa772fa33d905e87be6398fb1' => __DIR__ . '/..' . '/symfony/polyfill-intl-idn/bootstrap.php', '2c102faa651ef8ea5874edb585946bce' => __DIR__ . '/..' . '/swiftmailer/swiftmailer/lib/swift_required.php', - 'cf97c57bfe0f23854afd2f3818abb7a0' => __DIR__ . '/..' . '/zendframework/zend-diactoros/src/functions/create_uploaded_file.php', - '9bf37a3d0dad93e29cb4e1b1bfab04e9' => __DIR__ . '/..' . '/zendframework/zend-diactoros/src/functions/marshal_headers_from_sapi.php', - 'ce70dccb4bcc2efc6e94d2ee526e6972' => __DIR__ . '/..' . '/zendframework/zend-diactoros/src/functions/marshal_method_from_sapi.php', - 'f86420df471f14d568bfcb71e271b523' => __DIR__ . '/..' . '/zendframework/zend-diactoros/src/functions/marshal_protocol_version_from_sapi.php', - 'b87481e008a3700344428ae089e7f9e5' => __DIR__ . '/..' . '/zendframework/zend-diactoros/src/functions/marshal_uri_from_sapi.php', - '0b0974a5566a1077e4f2e111341112c1' => __DIR__ . '/..' . '/zendframework/zend-diactoros/src/functions/normalize_server.php', - '1ca3bc274755662169f9629d5412a1da' => __DIR__ . '/..' . '/zendframework/zend-diactoros/src/functions/normalize_uploaded_files.php', - '40360c0b9b437e69bcbb7f1349ce029e' => __DIR__ . '/..' . '/zendframework/zend-diactoros/src/functions/parse_cookie_header.php', - '04c6c5c2f7095ccf6c481d3e53e1776f' => __DIR__ . '/..' . '/mustangostang/spyc/Spyc.php', 'e803af0597ea9e5b518c7d090fb85601' => __DIR__ . '/..' . '/arcanedev/support/constants.php', '5323a5cb5bb1bab9b2f24566beed262a' => __DIR__ . '/..' . '/arcanedev/support/helpers.php', - 'f0906e6318348a765ffb6eb24e0d0938' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/helpers.php', - '58571171fd5812e6e447dce228f52f4d' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/helpers.php', + '17d016dc52a631c1e74d2eb8fdd57342' => __DIR__ . '/..' . '/laravel/helpers/src/helpers.php', '6124b4c8570aa390c21fafd04a26c69f' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/deep_copy.php', '801c31d8ed748cfa537fa45402288c95' => __DIR__ . '/..' . '/psy/psysh/src/functions.php', 'e91d0dc994644828154ae2387ede1ca8' => __DIR__ . '/..' . '/spatie/string/src/string_functions.php', 'd04e9322f14ab3e66b5b68c6d1e15433' => __DIR__ . '/..' . '/arcanedev/log-viewer/constants.php', '24be6d98d7c305f36699ba4e34b6df3c' => __DIR__ . '/..' . '/arcanedev/log-viewer/helpers.php', '2cffec82183ee1cea088009cef9a6fc3' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier.composer.php', + 'f0906e6318348a765ffb6eb24e0d0938' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/helpers.php', + '58571171fd5812e6e447dce228f52f4d' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/helpers.php', + '9e7a8ca9c2c682ec2704dd873a0e3618' => __DIR__ . '/..' . '/php-mock/php-mock/autoload.php', 'd7354eb4c8441fbf08eec280b61c7c73' => __DIR__ . '/..' . '/rachidlaasri/laravel-installer/src/Helpers/functions.php', '72b1e3f4a2af9b30b3f137b3ec2057fc' => __DIR__ . '/..' . '/spatie/laravel-activitylog/src/helpers.php', - 'def43f6c87e4f8dfd0c9e1b1bab14fe8' => __DIR__ . '/..' . '/symfony/polyfill-iconv/bootstrap.php', '377d15ea71be0306a9829d9f78207a1c' => __DIR__ . '/..' . '/torann/currency/src/helpers.php', '1e298922c3e2134d42dcdb03e6d5f55a' => __DIR__ . '/..' . '/torann/geoip/src/helpers.php', '6d394c3a532652dafb4dd296ba6a3f0b' => __DIR__ . '/../..' . '/app/Http/helpers.php', @@ -111,10 +105,6 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 'phpmock\\' => 8, 'phpDocumentor\\Reflection\\' => 25, ), - 'Z' => - array ( - 'Zend\\Diactoros\\' => 15, - ), 'Y' => array ( 'Yajra\\DataTables\\' => 17, @@ -127,10 +117,6 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 array ( 'Webmozart\\Assert\\' => 17, ), - 'V' => - array ( - 'Voerro\\Laravel\\VisitorTracker\\' => 30, - ), 'U' => array ( 'Underscore\\' => 11, @@ -148,6 +134,7 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 array ( 'Symfony\\Polyfill\\Php72\\' => 23, 'Symfony\\Polyfill\\Mbstring\\' => 26, + 'Symfony\\Polyfill\\Intl\\Idn\\' => 26, 'Symfony\\Polyfill\\Iconv\\' => 23, 'Symfony\\Polyfill\\Ctype\\' => 23, 'Symfony\\Contracts\\' => 18, @@ -192,10 +179,6 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 array ( 'Opis\\Closure\\' => 13, ), - 'N' => - array ( - 'Nexmo\\' => 6, - ), 'M' => array ( 'Monolog\\' => 8, @@ -211,7 +194,6 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 'League\\Fractal\\' => 15, 'League\\Flysystem\\' => 17, 'League\\CommonMark\\' => 18, - 'Lcobucci\\JWT\\' => 13, 'Laravel\\Tinker\\' => 15, ), 'J' => @@ -222,15 +204,8 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 ), 'I' => array ( - 'Illuminate\\Notifications\\' => 25, 'Illuminate\\' => 11, ), - 'H' => - array ( - 'Http\\Promise\\' => 13, - 'Http\\Client\\' => 12, - 'Http\\Adapter\\Guzzle6\\' => 21, - ), 'G' => array ( 'GuzzleHttp\\Psr7\\' => 16, @@ -258,7 +233,6 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 'Doctrine\\Common\\Cache\\' => 22, 'Doctrine\\Common\\' => 16, 'Devio\\Pipedrive\\' => 16, - 'DeviceDetector\\' => 15, 'DeepCopy\\' => 9, 'Darryldecode\\' => 13, ), @@ -272,7 +246,7 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 'Composer\\' => 9, 'Complex\\' => 8, 'Collective\\Html\\' => 16, - 'Chumper\\Zipper\\' => 15, + 'Carbon\\' => 7, ), 'B' => array ( @@ -281,11 +255,9 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 'Bugsnag\\' => 8, 'Barryvdh\\LaravelIdeHelper\\' => 26, 'Barryvdh\\DomPDF\\' => 16, - 'Barryvdh\\Cors\\' => 14, ), 'A' => array ( - 'Asm89\\Stack\\' => 12, 'Arcanedev\\Support\\' => 18, 'Arcanedev\\LogViewer\\' => 20, 'App\\' => 4, @@ -305,10 +277,6 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 1 => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src', 2 => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src', ), - 'Zend\\Diactoros\\' => - array ( - 0 => __DIR__ . '/..' . '/zendframework/zend-diactoros/src', - ), 'Yajra\\DataTables\\' => array ( 0 => __DIR__ . '/..' . '/yajra/laravel-datatables-buttons/src', @@ -325,10 +293,6 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 array ( 0 => __DIR__ . '/..' . '/webmozart/assert/src', ), - 'Voerro\\Laravel\\VisitorTracker\\' => - array ( - 0 => __DIR__ . '/..' . '/voerro/laravel-visitor-tracker/src', - ), 'Underscore\\' => array ( 0 => __DIR__ . '/..' . '/anahkiasen/underscore-php/src', @@ -366,6 +330,10 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 array ( 0 => __DIR__ . '/..' . '/symfony/polyfill-mbstring', ), + 'Symfony\\Polyfill\\Intl\\Idn\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/polyfill-intl-idn', + ), 'Symfony\\Polyfill\\Iconv\\' => array ( 0 => __DIR__ . '/..' . '/symfony/polyfill-iconv', @@ -502,10 +470,6 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 array ( 0 => __DIR__ . '/..' . '/opis/closure/src', ), - 'Nexmo\\' => - array ( - 0 => __DIR__ . '/..' . '/nexmo/client/src', - ), 'Monolog\\' => array ( 0 => __DIR__ . '/..' . '/monolog/monolog/src/Monolog', @@ -546,10 +510,6 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 array ( 0 => __DIR__ . '/..' . '/league/commonmark/src', ), - 'Lcobucci\\JWT\\' => - array ( - 0 => __DIR__ . '/..' . '/lcobucci/jwt/src', - ), 'Laravel\\Tinker\\' => array ( 0 => __DIR__ . '/..' . '/laravel/tinker/src', @@ -566,27 +526,10 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 array ( 0 => __DIR__ . '/..' . '/jakub-onderka/php-console-color/src', ), - 'Illuminate\\Notifications\\' => - array ( - 0 => __DIR__ . '/..' . '/laravel/nexmo-notification-channel/src', - 1 => __DIR__ . '/..' . '/laravel/slack-notification-channel/src', - ), 'Illuminate\\' => array ( 0 => __DIR__ . '/..' . '/laravel/framework/src/Illuminate', ), - 'Http\\Promise\\' => - array ( - 0 => __DIR__ . '/..' . '/php-http/promise/src', - ), - 'Http\\Client\\' => - array ( - 0 => __DIR__ . '/..' . '/php-http/httplug/src', - ), - 'Http\\Adapter\\Guzzle6\\' => - array ( - 0 => __DIR__ . '/..' . '/php-http/guzzle6-adapter/src', - ), 'GuzzleHttp\\Psr7\\' => array ( 0 => __DIR__ . '/..' . '/guzzlehttp/psr7/src', @@ -651,10 +594,6 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 array ( 0 => __DIR__ . '/..' . '/devio/pipedrive/src', ), - 'DeviceDetector\\' => - array ( - 0 => __DIR__ . '/..' . '/piwik/device-detector', - ), 'DeepCopy\\' => array ( 0 => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy', @@ -695,9 +634,9 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 array ( 0 => __DIR__ . '/..' . '/laravelcollective/html/src', ), - 'Chumper\\Zipper\\' => + 'Carbon\\' => array ( - 0 => __DIR__ . '/..' . '/chumper/zipper/src/Chumper/Zipper', + 0 => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon', ), 'Bugsnag\\PsrLogger\\' => array ( @@ -719,14 +658,6 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 array ( 0 => __DIR__ . '/..' . '/barryvdh/laravel-dompdf/src', ), - 'Barryvdh\\Cors\\' => - array ( - 0 => __DIR__ . '/..' . '/barryvdh/laravel-cors/src', - ), - 'Asm89\\Stack\\' => - array ( - 0 => __DIR__ . '/..' . '/asm89/stack-cors/src/Asm89/Stack', - ), 'Arcanedev\\Support\\' => array ( 0 => __DIR__ . '/..' . '/arcanedev/support/src', @@ -745,10 +676,6 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 ), ); - public static $fallbackDirsPsr4 = array ( - 0 => __DIR__ . '/..' . '/nesbot/carbon/src', - ); - public static $prefixesPsr0 = array ( 't' => array ( @@ -785,6 +712,10 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 array ( 0 => __DIR__ . '/..' . '/phpspec/prophecy/src', ), + 'PhpOption\\' => + array ( + 0 => __DIR__ . '/..' . '/phpoption/phpoption/src', + ), 'Parsedown' => array ( 0 => __DIR__ . '/..' . '/erusev/parsedown', @@ -815,13 +746,6 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 0 => __DIR__ . '/..' . '/doctrine/lexer/lib', ), ), - 'C' => - array ( - 'Chumper\\Datatable' => - array ( - 0 => __DIR__ . '/..' . '/chumper/datatable/src', - ), - ), 'B' => array ( 'Barryvdh' => @@ -1155,12 +1079,6 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 'Arcanedev\\Support\\Traits\\Paginatable' => __DIR__ . '/..' . '/arcanedev/support/src/Traits/Paginatable.php', 'Arcanedev\\Support\\Traits\\PrefixedModel' => __DIR__ . '/..' . '/arcanedev/support/src/Traits/PrefixedModel.php', 'Arcanedev\\Support\\Traits\\Templatable' => __DIR__ . '/..' . '/arcanedev/support/src/Traits/Templatable.php', - 'Asm89\\Stack\\Cors' => __DIR__ . '/..' . '/asm89/stack-cors/src/Asm89/Stack/Cors.php', - 'Asm89\\Stack\\CorsService' => __DIR__ . '/..' . '/asm89/stack-cors/src/Asm89/Stack/CorsService.php', - 'Barryvdh\\Cors\\HandleCors' => __DIR__ . '/..' . '/barryvdh/laravel-cors/src/HandleCors.php', - 'Barryvdh\\Cors\\HandlePreflight' => __DIR__ . '/..' . '/barryvdh/laravel-cors/src/HandlePreflight.php', - 'Barryvdh\\Cors\\LumenServiceProvider' => __DIR__ . '/..' . '/barryvdh/laravel-cors/src/LumenServiceProvider.php', - 'Barryvdh\\Cors\\ServiceProvider' => __DIR__ . '/..' . '/barryvdh/laravel-cors/src/ServiceProvider.php', 'Barryvdh\\DomPDF\\Facade' => __DIR__ . '/..' . '/barryvdh/laravel-dompdf/src/Facade.php', 'Barryvdh\\DomPDF\\PDF' => __DIR__ . '/..' . '/barryvdh/laravel-dompdf/src/PDF.php', 'Barryvdh\\DomPDF\\ServiceProvider' => __DIR__ . '/..' . '/barryvdh/laravel-dompdf/src/ServiceProvider.php', @@ -1245,27 +1163,34 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 'Bugsnag\\Utils' => __DIR__ . '/..' . '/bugsnag/bugsnag/src/Utils.php', 'BussinessSeeder' => __DIR__ . '/../..' . '/database/seeds/BussinessSeeder.php', 'Carbon\\Carbon' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Carbon.php', + 'Carbon\\CarbonImmutable' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/CarbonImmutable.php', + 'Carbon\\CarbonInterface' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/CarbonInterface.php', 'Carbon\\CarbonInterval' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/CarbonInterval.php', 'Carbon\\CarbonPeriod' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/CarbonPeriod.php', + 'Carbon\\CarbonTimeZone' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/CarbonTimeZone.php', 'Carbon\\Exceptions\\InvalidDateException' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Exceptions/InvalidDateException.php', + 'Carbon\\Factory' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Factory.php', + 'Carbon\\FactoryImmutable' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/FactoryImmutable.php', + 'Carbon\\Language' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Language.php', 'Carbon\\Laravel\\ServiceProvider' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Laravel/ServiceProvider.php', + 'Carbon\\Traits\\Boundaries' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Boundaries.php', + 'Carbon\\Traits\\Comparison' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Comparison.php', + 'Carbon\\Traits\\Converter' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Converter.php', + 'Carbon\\Traits\\Creator' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Creator.php', + 'Carbon\\Traits\\Date' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Date.php', + 'Carbon\\Traits\\Difference' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Difference.php', + 'Carbon\\Traits\\Localization' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Localization.php', + 'Carbon\\Traits\\Macro' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Macro.php', + 'Carbon\\Traits\\Modifiers' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Modifiers.php', + 'Carbon\\Traits\\Mutability' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Mutability.php', + 'Carbon\\Traits\\Options' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Options.php', + 'Carbon\\Traits\\Rounding' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Rounding.php', + 'Carbon\\Traits\\Serialization' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Serialization.php', + 'Carbon\\Traits\\Test' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Test.php', + 'Carbon\\Traits\\Timestamp' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Timestamp.php', + 'Carbon\\Traits\\Units' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Units.php', + 'Carbon\\Traits\\Week' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Traits/Week.php', 'Carbon\\Translator' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Translator.php', - 'Chumper\\Datatable\\Columns\\BaseColumn' => __DIR__ . '/..' . '/chumper/datatable/src/Chumper/Datatable/Columns/BaseColumn.php', - 'Chumper\\Datatable\\Columns\\DateColumn' => __DIR__ . '/..' . '/chumper/datatable/src/Chumper/Datatable/Columns/DateColumn.php', - 'Chumper\\Datatable\\Columns\\FunctionColumn' => __DIR__ . '/..' . '/chumper/datatable/src/Chumper/Datatable/Columns/FunctionColumn.php', - 'Chumper\\Datatable\\Columns\\TextColumn' => __DIR__ . '/..' . '/chumper/datatable/src/Chumper/Datatable/Columns/TextColumn.php', - 'Chumper\\Datatable\\Datatable' => __DIR__ . '/..' . '/chumper/datatable/src/Chumper/Datatable/Datatable.php', - 'Chumper\\Datatable\\DatatableServiceProvider' => __DIR__ . '/..' . '/chumper/datatable/src/Chumper/Datatable/DatatableServiceProvider.php', - 'Chumper\\Datatable\\Engines\\BaseEngine' => __DIR__ . '/..' . '/chumper/datatable/src/Chumper/Datatable/Engines/BaseEngine.php', - 'Chumper\\Datatable\\Engines\\CollectionEngine' => __DIR__ . '/..' . '/chumper/datatable/src/Chumper/Datatable/Engines/CollectionEngine.php', - 'Chumper\\Datatable\\Engines\\QueryEngine' => __DIR__ . '/..' . '/chumper/datatable/src/Chumper/Datatable/Engines/QueryEngine.php', - 'Chumper\\Datatable\\Facades\\DatatableFacade' => __DIR__ . '/..' . '/chumper/datatable/src/Chumper/Datatable/Facades/DatatableFacade.php', - 'Chumper\\Datatable\\Table' => __DIR__ . '/..' . '/chumper/datatable/src/Chumper/Datatable/Table.php', - 'Chumper\\Zipper\\Facades\\Zipper' => __DIR__ . '/..' . '/chumper/zipper/src/Chumper/Zipper/Facades/Zipper.php', - 'Chumper\\Zipper\\Repositories\\RepositoryInterface' => __DIR__ . '/..' . '/chumper/zipper/src/Chumper/Zipper/Repositories/RepositoryInterface.php', - 'Chumper\\Zipper\\Repositories\\ZipRepository' => __DIR__ . '/..' . '/chumper/zipper/src/Chumper/Zipper/Repositories/ZipRepository.php', - 'Chumper\\Zipper\\Zipper' => __DIR__ . '/..' . '/chumper/zipper/src/Chumper/Zipper/Zipper.php', - 'Chumper\\Zipper\\ZipperServiceProvider' => __DIR__ . '/..' . '/chumper/zipper/src/Chumper/Zipper/ZipperServiceProvider.php', 'Collective\\Html\\Componentable' => __DIR__ . '/..' . '/laravelcollective/html/src/Componentable.php', 'Collective\\Html\\Eloquent\\FormAccessible' => __DIR__ . '/..' . '/laravelcollective/html/src/Eloquent/FormAccessible.php', 'Collective\\Html\\FormBuilder' => __DIR__ . '/..' . '/laravelcollective/html/src/FormBuilder.php', @@ -1656,36 +1581,6 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 'DeepCopy\\TypeFilter\\Spl\\SplDoublyLinkedListFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/SplDoublyLinkedListFilter.php', 'DeepCopy\\TypeFilter\\TypeFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/TypeFilter.php', 'DeepCopy\\TypeMatcher\\TypeMatcher' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeMatcher/TypeMatcher.php', - 'DeviceDetector\\Cache\\Cache' => __DIR__ . '/..' . '/piwik/device-detector/Cache/Cache.php', - 'DeviceDetector\\Cache\\PSR16Bridge' => __DIR__ . '/..' . '/piwik/device-detector/Cache/PSR16Bridge.php', - 'DeviceDetector\\Cache\\PSR6Bridge' => __DIR__ . '/..' . '/piwik/device-detector/Cache/PSR6Bridge.php', - 'DeviceDetector\\Cache\\StaticCache' => __DIR__ . '/..' . '/piwik/device-detector/Cache/StaticCache.php', - 'DeviceDetector\\DeviceDetector' => __DIR__ . '/..' . '/piwik/device-detector/DeviceDetector.php', - 'DeviceDetector\\Parser\\Bot' => __DIR__ . '/..' . '/piwik/device-detector/Parser/Bot.php', - 'DeviceDetector\\Parser\\BotParserAbstract' => __DIR__ . '/..' . '/piwik/device-detector/Parser/BotParserAbstract.php', - 'DeviceDetector\\Parser\\Client\\Browser' => __DIR__ . '/..' . '/piwik/device-detector/Parser/Client/Browser.php', - 'DeviceDetector\\Parser\\Client\\Browser\\Engine' => __DIR__ . '/..' . '/piwik/device-detector/Parser/Client/Browser/Engine.php', - 'DeviceDetector\\Parser\\Client\\Browser\\Engine\\Version' => __DIR__ . '/..' . '/piwik/device-detector/Parser/Client/Browser/Engine/Version.php', - 'DeviceDetector\\Parser\\Client\\ClientParserAbstract' => __DIR__ . '/..' . '/piwik/device-detector/Parser/Client/ClientParserAbstract.php', - 'DeviceDetector\\Parser\\Client\\FeedReader' => __DIR__ . '/..' . '/piwik/device-detector/Parser/Client/FeedReader.php', - 'DeviceDetector\\Parser\\Client\\Library' => __DIR__ . '/..' . '/piwik/device-detector/Parser/Client/Library.php', - 'DeviceDetector\\Parser\\Client\\MediaPlayer' => __DIR__ . '/..' . '/piwik/device-detector/Parser/Client/MediaPlayer.php', - 'DeviceDetector\\Parser\\Client\\MobileApp' => __DIR__ . '/..' . '/piwik/device-detector/Parser/Client/MobileApp.php', - 'DeviceDetector\\Parser\\Client\\PIM' => __DIR__ . '/..' . '/piwik/device-detector/Parser/Client/PIM.php', - 'DeviceDetector\\Parser\\Device\\Camera' => __DIR__ . '/..' . '/piwik/device-detector/Parser/Device/Camera.php', - 'DeviceDetector\\Parser\\Device\\CarBrowser' => __DIR__ . '/..' . '/piwik/device-detector/Parser/Device/CarBrowser.php', - 'DeviceDetector\\Parser\\Device\\Console' => __DIR__ . '/..' . '/piwik/device-detector/Parser/Device/Console.php', - 'DeviceDetector\\Parser\\Device\\DeviceParserAbstract' => __DIR__ . '/..' . '/piwik/device-detector/Parser/Device/DeviceParserAbstract.php', - 'DeviceDetector\\Parser\\Device\\HbbTv' => __DIR__ . '/..' . '/piwik/device-detector/Parser/Device/HbbTv.php', - 'DeviceDetector\\Parser\\Device\\Mobile' => __DIR__ . '/..' . '/piwik/device-detector/Parser/Device/Mobile.php', - 'DeviceDetector\\Parser\\Device\\PortableMediaPlayer' => __DIR__ . '/..' . '/piwik/device-detector/Parser/Device/PortableMediaPlayer.php', - 'DeviceDetector\\Parser\\OperatingSystem' => __DIR__ . '/..' . '/piwik/device-detector/Parser/OperatingSystem.php', - 'DeviceDetector\\Parser\\ParserAbstract' => __DIR__ . '/..' . '/piwik/device-detector/Parser/ParserAbstract.php', - 'DeviceDetector\\Parser\\VendorFragment' => __DIR__ . '/..' . '/piwik/device-detector/Parser/VendorFragment.php', - 'DeviceDetector\\Yaml\\Parser' => __DIR__ . '/..' . '/piwik/device-detector/Yaml/Parser.php', - 'DeviceDetector\\Yaml\\Pecl' => __DIR__ . '/..' . '/piwik/device-detector/Yaml/Pecl.php', - 'DeviceDetector\\Yaml\\Spyc' => __DIR__ . '/..' . '/piwik/device-detector/Yaml/Spyc.php', - 'DeviceDetector\\Yaml\\Symfony' => __DIR__ . '/..' . '/piwik/device-detector/Yaml/Symfony.php', 'Devio\\Pipedrive\\Builder' => __DIR__ . '/..' . '/devio/pipedrive/src/Builder.php', 'Devio\\Pipedrive\\Exceptions\\ItemNotFoundException' => __DIR__ . '/..' . '/devio/pipedrive/src/Exceptions/ItemNotFoundException.php', 'Devio\\Pipedrive\\Exceptions\\PipedriveException' => __DIR__ . '/..' . '/devio/pipedrive/src/Exceptions/PipedriveException.php', @@ -2105,13 +2000,28 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 'Dompdf\\Renderer\\TableRowGroup' => __DIR__ . '/..' . '/dompdf/dompdf/src/Renderer/TableRowGroup.php', 'Dompdf\\Renderer\\Text' => __DIR__ . '/..' . '/dompdf/dompdf/src/Renderer/Text.php', 'Dotenv\\Dotenv' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Dotenv.php', + 'Dotenv\\Environment\\AbstractVariables' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Environment/AbstractVariables.php', + 'Dotenv\\Environment\\Adapter\\AdapterInterface' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Environment/Adapter/AdapterInterface.php', + 'Dotenv\\Environment\\Adapter\\ApacheAdapter' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Environment/Adapter/ApacheAdapter.php', + 'Dotenv\\Environment\\Adapter\\ArrayAdapter' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Environment/Adapter/ArrayAdapter.php', + 'Dotenv\\Environment\\Adapter\\EnvConstAdapter' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Environment/Adapter/EnvConstAdapter.php', + 'Dotenv\\Environment\\Adapter\\PutenvAdapter' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Environment/Adapter/PutenvAdapter.php', + 'Dotenv\\Environment\\Adapter\\ServerConstAdapter' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Environment/Adapter/ServerConstAdapter.php', + 'Dotenv\\Environment\\DotenvFactory' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Environment/DotenvFactory.php', + 'Dotenv\\Environment\\DotenvVariables' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Environment/DotenvVariables.php', + 'Dotenv\\Environment\\FactoryInterface' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Environment/FactoryInterface.php', + 'Dotenv\\Environment\\VariablesInterface' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Environment/VariablesInterface.php', 'Dotenv\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Exception/ExceptionInterface.php', - 'Dotenv\\Exception\\InvalidCallbackException' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Exception/InvalidCallbackException.php', 'Dotenv\\Exception\\InvalidFileException' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Exception/InvalidFileException.php', 'Dotenv\\Exception\\InvalidPathException' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Exception/InvalidPathException.php', 'Dotenv\\Exception\\ValidationException' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Exception/ValidationException.php', + 'Dotenv\\Lines' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Lines.php', 'Dotenv\\Loader' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Loader.php', 'Dotenv\\Parser' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Parser.php', + 'Dotenv\\Regex\\Error' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Regex/Error.php', + 'Dotenv\\Regex\\Regex' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Regex/Regex.php', + 'Dotenv\\Regex\\Result' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Regex/Result.php', + 'Dotenv\\Regex\\Success' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Regex/Success.php', 'Dotenv\\Validator' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Validator.php', 'Egulias\\EmailValidator\\EmailLexer' => __DIR__ . '/..' . '/egulias/email-validator/EmailValidator/EmailLexer.php', 'Egulias\\EmailValidator\\EmailParser' => __DIR__ . '/..' . '/egulias/email-validator/EmailValidator/EmailParser.php', @@ -3071,20 +2981,6 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 'Hamcrest\\Type\\IsString' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsString.php', 'Hamcrest\\Util' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Util.php', 'Hamcrest\\Xml\\HasXPath' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Xml/HasXPath.php', - 'Http\\Adapter\\Guzzle6\\Client' => __DIR__ . '/..' . '/php-http/guzzle6-adapter/src/Client.php', - 'Http\\Adapter\\Guzzle6\\Promise' => __DIR__ . '/..' . '/php-http/guzzle6-adapter/src/Promise.php', - 'Http\\Client\\Exception' => __DIR__ . '/..' . '/php-http/httplug/src/Exception.php', - 'Http\\Client\\Exception\\HttpException' => __DIR__ . '/..' . '/php-http/httplug/src/Exception/HttpException.php', - 'Http\\Client\\Exception\\NetworkException' => __DIR__ . '/..' . '/php-http/httplug/src/Exception/NetworkException.php', - 'Http\\Client\\Exception\\RequestException' => __DIR__ . '/..' . '/php-http/httplug/src/Exception/RequestException.php', - 'Http\\Client\\Exception\\TransferException' => __DIR__ . '/..' . '/php-http/httplug/src/Exception/TransferException.php', - 'Http\\Client\\HttpAsyncClient' => __DIR__ . '/..' . '/php-http/httplug/src/HttpAsyncClient.php', - 'Http\\Client\\HttpClient' => __DIR__ . '/..' . '/php-http/httplug/src/HttpClient.php', - 'Http\\Client\\Promise\\HttpFulfilledPromise' => __DIR__ . '/..' . '/php-http/httplug/src/Promise/HttpFulfilledPromise.php', - 'Http\\Client\\Promise\\HttpRejectedPromise' => __DIR__ . '/..' . '/php-http/httplug/src/Promise/HttpRejectedPromise.php', - 'Http\\Promise\\FulfilledPromise' => __DIR__ . '/..' . '/php-http/promise/src/FulfilledPromise.php', - 'Http\\Promise\\Promise' => __DIR__ . '/..' . '/php-http/promise/src/Promise.php', - 'Http\\Promise\\RejectedPromise' => __DIR__ . '/..' . '/php-http/promise/src/RejectedPromise.php', 'Illuminate\\Auth\\Access\\AuthorizationException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Auth/Access/AuthorizationException.php', 'Illuminate\\Auth\\Access\\Gate' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Auth/Access/Gate.php', 'Illuminate\\Auth\\Access\\HandlesAuthorization' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Auth/Access/HandlesAuthorization.php', @@ -3104,6 +3000,7 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 'Illuminate\\Auth\\Events\\Lockout' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Auth/Events/Lockout.php', 'Illuminate\\Auth\\Events\\Login' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Auth/Events/Login.php', 'Illuminate\\Auth\\Events\\Logout' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Auth/Events/Logout.php', + 'Illuminate\\Auth\\Events\\OtherDeviceLogout' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Auth/Events/OtherDeviceLogout.php', 'Illuminate\\Auth\\Events\\PasswordReset' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Auth/Events/PasswordReset.php', 'Illuminate\\Auth\\Events\\Registered' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Auth/Events/Registered.php', 'Illuminate\\Auth\\Events\\Verified' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Auth/Events/Verified.php', @@ -3137,6 +3034,7 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 'Illuminate\\Broadcasting\\Broadcasters\\NullBroadcaster' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/NullBroadcaster.php', 'Illuminate\\Broadcasting\\Broadcasters\\PusherBroadcaster' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/PusherBroadcaster.php', 'Illuminate\\Broadcasting\\Broadcasters\\RedisBroadcaster' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/RedisBroadcaster.php', + 'Illuminate\\Broadcasting\\Broadcasters\\UsePusherChannelConventions' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/UsePusherChannelConventions.php', 'Illuminate\\Broadcasting\\Channel' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Broadcasting/Channel.php', 'Illuminate\\Broadcasting\\InteractsWithSockets' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Broadcasting/InteractsWithSockets.php', 'Illuminate\\Broadcasting\\PendingBroadcast' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Broadcasting/PendingBroadcast.php', @@ -3154,6 +3052,8 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 'Illuminate\\Cache\\Console\\ClearCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/Console/ClearCommand.php', 'Illuminate\\Cache\\Console\\ForgetCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/Console/ForgetCommand.php', 'Illuminate\\Cache\\DatabaseStore' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/DatabaseStore.php', + 'Illuminate\\Cache\\DynamoDbLock' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/DynamoDbLock.php', + 'Illuminate\\Cache\\DynamoDbStore' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/DynamoDbStore.php', 'Illuminate\\Cache\\Events\\CacheEvent' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/Events/CacheEvent.php', 'Illuminate\\Cache\\Events\\CacheHit' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/Events/CacheHit.php', 'Illuminate\\Cache\\Events\\CacheMissed' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/Events/CacheMissed.php', @@ -3161,6 +3061,7 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 'Illuminate\\Cache\\Events\\KeyWritten' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/Events/KeyWritten.php', 'Illuminate\\Cache\\FileStore' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/FileStore.php', 'Illuminate\\Cache\\Lock' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/Lock.php', + 'Illuminate\\Cache\\LuaScripts' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/LuaScripts.php', 'Illuminate\\Cache\\MemcachedConnector' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/MemcachedConnector.php', 'Illuminate\\Cache\\MemcachedLock' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/MemcachedLock.php', 'Illuminate\\Cache\\MemcachedStore' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Cache/MemcachedStore.php', @@ -3200,6 +3101,7 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 'Illuminate\\Container\\Container' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Container/Container.php', 'Illuminate\\Container\\ContextualBindingBuilder' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Container/ContextualBindingBuilder.php', 'Illuminate\\Container\\EntryNotFoundException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Container/EntryNotFoundException.php', + 'Illuminate\\Container\\RewindableGenerator' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Container/RewindableGenerator.php', 'Illuminate\\Contracts\\Auth\\Access\\Authorizable' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Auth/Access/Authorizable.php', 'Illuminate\\Contracts\\Auth\\Access\\Gate' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Auth/Access/Gate.php', 'Illuminate\\Contracts\\Auth\\Authenticatable' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Auth/Authenticatable.php', @@ -3274,6 +3176,7 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 'Illuminate\\Contracts\\Routing\\UrlRoutable' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Routing/UrlRoutable.php', 'Illuminate\\Contracts\\Session\\Session' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Session/Session.php', 'Illuminate\\Contracts\\Support\\Arrayable' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Support/Arrayable.php', + 'Illuminate\\Contracts\\Support\\DeferrableProvider' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Support/DeferrableProvider.php', 'Illuminate\\Contracts\\Support\\Htmlable' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Support/Htmlable.php', 'Illuminate\\Contracts\\Support\\Jsonable' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Support/Jsonable.php', 'Illuminate\\Contracts\\Support\\MessageBag' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Contracts/Support/MessageBag.php', @@ -3298,6 +3201,7 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 'Illuminate\\Database\\Capsule\\Manager' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Capsule/Manager.php', 'Illuminate\\Database\\Concerns\\BuildsQueries' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Concerns/BuildsQueries.php', 'Illuminate\\Database\\Concerns\\ManagesTransactions' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Concerns/ManagesTransactions.php', + 'Illuminate\\Database\\ConfigurationUrlParser' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/ConfigurationUrlParser.php', 'Illuminate\\Database\\Connection' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Connection.php', 'Illuminate\\Database\\ConnectionInterface' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/ConnectionInterface.php', 'Illuminate\\Database\\ConnectionResolver' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/ConnectionResolver.php', @@ -3354,6 +3258,7 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 'Illuminate\\Database\\Eloquent\\Relations\\HasManyThrough' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Relations/HasManyThrough.php', 'Illuminate\\Database\\Eloquent\\Relations\\HasOne' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Relations/HasOne.php', 'Illuminate\\Database\\Eloquent\\Relations\\HasOneOrMany' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Relations/HasOneOrMany.php', + 'Illuminate\\Database\\Eloquent\\Relations\\HasOneThrough' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Relations/HasOneThrough.php', 'Illuminate\\Database\\Eloquent\\Relations\\MorphMany' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Relations/MorphMany.php', 'Illuminate\\Database\\Eloquent\\Relations\\MorphOne' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Relations/MorphOne.php', 'Illuminate\\Database\\Eloquent\\Relations\\MorphOneOrMany' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Eloquent/Relations/MorphOneOrMany.php', @@ -3410,6 +3315,7 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 'Illuminate\\Database\\Schema\\PostgresBuilder' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Schema/PostgresBuilder.php', 'Illuminate\\Database\\Schema\\SQLiteBuilder' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Schema/SQLiteBuilder.php', 'Illuminate\\Database\\Schema\\SqlServerBuilder' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Schema/SqlServerBuilder.php', + 'Illuminate\\Database\\Schema\\Types\\TinyInteger' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Schema/Types/TinyInteger.php', 'Illuminate\\Database\\Seeder' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/Seeder.php', 'Illuminate\\Database\\SqlServerConnection' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Database/SqlServerConnection.php', 'Illuminate\\Encryption\\Encrypter' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Encryption/Encrypter.php', @@ -3455,7 +3361,10 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 'Illuminate\\Foundation\\Console\\ConsoleMakeCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/ConsoleMakeCommand.php', 'Illuminate\\Foundation\\Console\\DownCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/DownCommand.php', 'Illuminate\\Foundation\\Console\\EnvironmentCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/EnvironmentCommand.php', + 'Illuminate\\Foundation\\Console\\EventCacheCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/EventCacheCommand.php', + 'Illuminate\\Foundation\\Console\\EventClearCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/EventClearCommand.php', 'Illuminate\\Foundation\\Console\\EventGenerateCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/EventGenerateCommand.php', + 'Illuminate\\Foundation\\Console\\EventListCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/EventListCommand.php', 'Illuminate\\Foundation\\Console\\EventMakeCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/EventMakeCommand.php', 'Illuminate\\Foundation\\Console\\ExceptionMakeCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/ExceptionMakeCommand.php', 'Illuminate\\Foundation\\Console\\JobMakeCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/JobMakeCommand.php', @@ -3492,6 +3401,7 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 'Illuminate\\Foundation\\Console\\ViewCacheCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/ViewCacheCommand.php', 'Illuminate\\Foundation\\Console\\ViewClearCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Console/ViewClearCommand.php', 'Illuminate\\Foundation\\EnvironmentDetector' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/EnvironmentDetector.php', + 'Illuminate\\Foundation\\Events\\DiscoverEvents' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Events/DiscoverEvents.php', 'Illuminate\\Foundation\\Events\\Dispatchable' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Events/Dispatchable.php', 'Illuminate\\Foundation\\Events\\LocaleUpdated' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Events/LocaleUpdated.php', 'Illuminate\\Foundation\\Exceptions\\Handler' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php', @@ -3507,6 +3417,7 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 'Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php', 'Illuminate\\Foundation\\Http\\Middleware\\VerifyCsrfToken' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php', 'Illuminate\\Foundation\\Inspiring' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Inspiring.php', + 'Illuminate\\Foundation\\Mix' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Mix.php', 'Illuminate\\Foundation\\PackageManifest' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/PackageManifest.php', 'Illuminate\\Foundation\\ProviderRepository' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/ProviderRepository.php', 'Illuminate\\Foundation\\Providers\\ArtisanServiceProvider' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Providers/ArtisanServiceProvider.php', @@ -3517,6 +3428,7 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 'Illuminate\\Foundation\\Support\\Providers\\AuthServiceProvider' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Support/Providers/AuthServiceProvider.php', 'Illuminate\\Foundation\\Support\\Providers\\EventServiceProvider' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Support/Providers/EventServiceProvider.php', 'Illuminate\\Foundation\\Support\\Providers\\RouteServiceProvider' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Support/Providers/RouteServiceProvider.php', + 'Illuminate\\Foundation\\Testing\\Assert' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Testing/Assert.php', 'Illuminate\\Foundation\\Testing\\Concerns\\InteractsWithAuthentication' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithAuthentication.php', 'Illuminate\\Foundation\\Testing\\Concerns\\InteractsWithConsole' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithConsole.php', 'Illuminate\\Foundation\\Testing\\Concerns\\InteractsWithContainer' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithContainer.php', @@ -3531,7 +3443,6 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 'Illuminate\\Foundation\\Testing\\Constraints\\SoftDeletedInDatabase' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Testing/Constraints/SoftDeletedInDatabase.php', 'Illuminate\\Foundation\\Testing\\DatabaseMigrations' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Testing/DatabaseMigrations.php', 'Illuminate\\Foundation\\Testing\\DatabaseTransactions' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Testing/DatabaseTransactions.php', - 'Illuminate\\Foundation\\Testing\\HttpException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Testing/HttpException.php', 'Illuminate\\Foundation\\Testing\\PendingCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Testing/PendingCommand.php', 'Illuminate\\Foundation\\Testing\\RefreshDatabase' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Testing/RefreshDatabase.php', 'Illuminate\\Foundation\\Testing\\RefreshDatabaseState' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/Testing/RefreshDatabaseState.php', @@ -3607,8 +3518,6 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 'Illuminate\\Notifications\\Channels\\BroadcastChannel' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Notifications/Channels/BroadcastChannel.php', 'Illuminate\\Notifications\\Channels\\DatabaseChannel' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Notifications/Channels/DatabaseChannel.php', 'Illuminate\\Notifications\\Channels\\MailChannel' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Notifications/Channels/MailChannel.php', - 'Illuminate\\Notifications\\Channels\\NexmoSmsChannel' => __DIR__ . '/..' . '/laravel/nexmo-notification-channel/src/Channels/NexmoSmsChannel.php', - 'Illuminate\\Notifications\\Channels\\SlackWebhookChannel' => __DIR__ . '/..' . '/laravel/slack-notification-channel/src/Channels/SlackWebhookChannel.php', 'Illuminate\\Notifications\\Console\\NotificationTableCommand' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Notifications/Console/NotificationTableCommand.php', 'Illuminate\\Notifications\\DatabaseNotification' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Notifications/DatabaseNotification.php', 'Illuminate\\Notifications\\DatabaseNotificationCollection' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Notifications/DatabaseNotificationCollection.php', @@ -3620,19 +3529,13 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 'Illuminate\\Notifications\\Messages\\BroadcastMessage' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Notifications/Messages/BroadcastMessage.php', 'Illuminate\\Notifications\\Messages\\DatabaseMessage' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Notifications/Messages/DatabaseMessage.php', 'Illuminate\\Notifications\\Messages\\MailMessage' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Notifications/Messages/MailMessage.php', - 'Illuminate\\Notifications\\Messages\\NexmoMessage' => __DIR__ . '/..' . '/laravel/nexmo-notification-channel/src/Messages/NexmoMessage.php', 'Illuminate\\Notifications\\Messages\\SimpleMessage' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Notifications/Messages/SimpleMessage.php', - 'Illuminate\\Notifications\\Messages\\SlackAttachment' => __DIR__ . '/..' . '/laravel/slack-notification-channel/src/Messages/SlackAttachment.php', - 'Illuminate\\Notifications\\Messages\\SlackAttachmentField' => __DIR__ . '/..' . '/laravel/slack-notification-channel/src/Messages/SlackAttachmentField.php', - 'Illuminate\\Notifications\\Messages\\SlackMessage' => __DIR__ . '/..' . '/laravel/slack-notification-channel/src/Messages/SlackMessage.php', - 'Illuminate\\Notifications\\NexmoChannelServiceProvider' => __DIR__ . '/..' . '/laravel/nexmo-notification-channel/src/NexmoChannelServiceProvider.php', 'Illuminate\\Notifications\\Notifiable' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Notifications/Notifiable.php', 'Illuminate\\Notifications\\Notification' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Notifications/Notification.php', 'Illuminate\\Notifications\\NotificationSender' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Notifications/NotificationSender.php', 'Illuminate\\Notifications\\NotificationServiceProvider' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Notifications/NotificationServiceProvider.php', 'Illuminate\\Notifications\\RoutesNotifications' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Notifications/RoutesNotifications.php', 'Illuminate\\Notifications\\SendQueuedNotifications' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Notifications/SendQueuedNotifications.php', - 'Illuminate\\Notifications\\SlackChannelServiceProvider' => __DIR__ . '/..' . '/laravel/slack-notification-channel/src/SlackChannelServiceProvider.php', 'Illuminate\\Pagination\\AbstractPaginator' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Pagination/AbstractPaginator.php', 'Illuminate\\Pagination\\LengthAwarePaginator' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Pagination/LengthAwarePaginator.php', 'Illuminate\\Pagination\\PaginationServiceProvider' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Pagination/PaginationServiceProvider.php', @@ -3671,7 +3574,6 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 'Illuminate\\Queue\\Failed\\DatabaseFailedJobProvider' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Failed/DatabaseFailedJobProvider.php', 'Illuminate\\Queue\\Failed\\FailedJobProviderInterface' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Failed/FailedJobProviderInterface.php', 'Illuminate\\Queue\\Failed\\NullFailedJobProvider' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Failed/NullFailedJobProvider.php', - 'Illuminate\\Queue\\FailingJob' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/FailingJob.php', 'Illuminate\\Queue\\InteractsWithQueue' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/InteractsWithQueue.php', 'Illuminate\\Queue\\InvalidPayloadException' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/InvalidPayloadException.php', 'Illuminate\\Queue\\Jobs\\BeanstalkdJob' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Queue/Jobs/BeanstalkdJob.php', @@ -3745,6 +3647,7 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 'Illuminate\\Routing\\RouteCollection' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/RouteCollection.php', 'Illuminate\\Routing\\RouteCompiler' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/RouteCompiler.php', 'Illuminate\\Routing\\RouteDependencyResolverTrait' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/RouteDependencyResolverTrait.php', + 'Illuminate\\Routing\\RouteFileRegistrar' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/RouteFileRegistrar.php', 'Illuminate\\Routing\\RouteGroup' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/RouteGroup.php', 'Illuminate\\Routing\\RouteParameterBinder' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/RouteParameterBinder.php', 'Illuminate\\Routing\\RouteRegistrar' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Routing/RouteRegistrar.php', @@ -3774,6 +3677,7 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 'Illuminate\\Support\\Carbon' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Carbon.php', 'Illuminate\\Support\\Collection' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Collection.php', 'Illuminate\\Support\\Composer' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Composer.php', + 'Illuminate\\Support\\DateFactory' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/DateFactory.php', 'Illuminate\\Support\\Facades\\App' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Facades/App.php', 'Illuminate\\Support\\Facades\\Artisan' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Facades/Artisan.php', 'Illuminate\\Support\\Facades\\Auth' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Facades/Auth.php', @@ -3785,6 +3689,7 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 'Illuminate\\Support\\Facades\\Cookie' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Facades/Cookie.php', 'Illuminate\\Support\\Facades\\Crypt' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Facades/Crypt.php', 'Illuminate\\Support\\Facades\\DB' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Facades/DB.php', + 'Illuminate\\Support\\Facades\\Date' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Facades/Date.php', 'Illuminate\\Support\\Facades\\Event' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Facades/Event.php', 'Illuminate\\Support\\Facades\\Facade' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Facades/Facade.php', 'Illuminate\\Support\\Facades\\File' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/Facades/File.php', @@ -3867,6 +3772,7 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 'Illuminate\\View\\Compilers\\Concerns\\CompilesComponents' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesComponents.php', 'Illuminate\\View\\Compilers\\Concerns\\CompilesConditionals' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesConditionals.php', 'Illuminate\\View\\Compilers\\Concerns\\CompilesEchos' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesEchos.php', + 'Illuminate\\View\\Compilers\\Concerns\\CompilesErrors' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesErrors.php', 'Illuminate\\View\\Compilers\\Concerns\\CompilesHelpers' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesHelpers.php', 'Illuminate\\View\\Compilers\\Concerns\\CompilesIncludes' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesIncludes.php', 'Illuminate\\View\\Compilers\\Concerns\\CompilesInjections' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesInjections.php', @@ -3940,42 +3846,10 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 'JsonSchema\\Uri\\UriResolver' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Uri/UriResolver.php', 'JsonSchema\\Uri\\UriRetriever' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Uri/UriRetriever.php', 'JsonSchema\\Validator' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Validator.php', - 'JsonSerializable' => __DIR__ . '/..' . '/nesbot/carbon/src/JsonSerializable.php', 'Laravel\\Tinker\\ClassAliasAutoloader' => __DIR__ . '/..' . '/laravel/tinker/src/ClassAliasAutoloader.php', 'Laravel\\Tinker\\Console\\TinkerCommand' => __DIR__ . '/..' . '/laravel/tinker/src/Console/TinkerCommand.php', 'Laravel\\Tinker\\TinkerCaster' => __DIR__ . '/..' . '/laravel/tinker/src/TinkerCaster.php', 'Laravel\\Tinker\\TinkerServiceProvider' => __DIR__ . '/..' . '/laravel/tinker/src/TinkerServiceProvider.php', - 'Lcobucci\\JWT\\Builder' => __DIR__ . '/..' . '/lcobucci/jwt/src/Builder.php', - 'Lcobucci\\JWT\\Claim' => __DIR__ . '/..' . '/lcobucci/jwt/src/Claim.php', - 'Lcobucci\\JWT\\Claim\\Basic' => __DIR__ . '/..' . '/lcobucci/jwt/src/Claim/Basic.php', - 'Lcobucci\\JWT\\Claim\\EqualsTo' => __DIR__ . '/..' . '/lcobucci/jwt/src/Claim/EqualsTo.php', - 'Lcobucci\\JWT\\Claim\\Factory' => __DIR__ . '/..' . '/lcobucci/jwt/src/Claim/Factory.php', - 'Lcobucci\\JWT\\Claim\\GreaterOrEqualsTo' => __DIR__ . '/..' . '/lcobucci/jwt/src/Claim/GreaterOrEqualsTo.php', - 'Lcobucci\\JWT\\Claim\\LesserOrEqualsTo' => __DIR__ . '/..' . '/lcobucci/jwt/src/Claim/LesserOrEqualsTo.php', - 'Lcobucci\\JWT\\Claim\\Validatable' => __DIR__ . '/..' . '/lcobucci/jwt/src/Claim/Validatable.php', - 'Lcobucci\\JWT\\Parser' => __DIR__ . '/..' . '/lcobucci/jwt/src/Parser.php', - 'Lcobucci\\JWT\\Parsing\\Decoder' => __DIR__ . '/..' . '/lcobucci/jwt/src/Parsing/Decoder.php', - 'Lcobucci\\JWT\\Parsing\\Encoder' => __DIR__ . '/..' . '/lcobucci/jwt/src/Parsing/Encoder.php', - 'Lcobucci\\JWT\\Signature' => __DIR__ . '/..' . '/lcobucci/jwt/src/Signature.php', - 'Lcobucci\\JWT\\Signer' => __DIR__ . '/..' . '/lcobucci/jwt/src/Signer.php', - 'Lcobucci\\JWT\\Signer\\BaseSigner' => __DIR__ . '/..' . '/lcobucci/jwt/src/Signer/BaseSigner.php', - 'Lcobucci\\JWT\\Signer\\Ecdsa' => __DIR__ . '/..' . '/lcobucci/jwt/src/Signer/Ecdsa.php', - 'Lcobucci\\JWT\\Signer\\Ecdsa\\KeyParser' => __DIR__ . '/..' . '/lcobucci/jwt/src/Signer/Ecdsa/KeyParser.php', - 'Lcobucci\\JWT\\Signer\\Ecdsa\\Sha256' => __DIR__ . '/..' . '/lcobucci/jwt/src/Signer/Ecdsa/Sha256.php', - 'Lcobucci\\JWT\\Signer\\Ecdsa\\Sha384' => __DIR__ . '/..' . '/lcobucci/jwt/src/Signer/Ecdsa/Sha384.php', - 'Lcobucci\\JWT\\Signer\\Ecdsa\\Sha512' => __DIR__ . '/..' . '/lcobucci/jwt/src/Signer/Ecdsa/Sha512.php', - 'Lcobucci\\JWT\\Signer\\Hmac' => __DIR__ . '/..' . '/lcobucci/jwt/src/Signer/Hmac.php', - 'Lcobucci\\JWT\\Signer\\Hmac\\Sha256' => __DIR__ . '/..' . '/lcobucci/jwt/src/Signer/Hmac/Sha256.php', - 'Lcobucci\\JWT\\Signer\\Hmac\\Sha384' => __DIR__ . '/..' . '/lcobucci/jwt/src/Signer/Hmac/Sha384.php', - 'Lcobucci\\JWT\\Signer\\Hmac\\Sha512' => __DIR__ . '/..' . '/lcobucci/jwt/src/Signer/Hmac/Sha512.php', - 'Lcobucci\\JWT\\Signer\\Key' => __DIR__ . '/..' . '/lcobucci/jwt/src/Signer/Key.php', - 'Lcobucci\\JWT\\Signer\\Keychain' => __DIR__ . '/..' . '/lcobucci/jwt/src/Signer/Keychain.php', - 'Lcobucci\\JWT\\Signer\\Rsa' => __DIR__ . '/..' . '/lcobucci/jwt/src/Signer/Rsa.php', - 'Lcobucci\\JWT\\Signer\\Rsa\\Sha256' => __DIR__ . '/..' . '/lcobucci/jwt/src/Signer/Rsa/Sha256.php', - 'Lcobucci\\JWT\\Signer\\Rsa\\Sha384' => __DIR__ . '/..' . '/lcobucci/jwt/src/Signer/Rsa/Sha384.php', - 'Lcobucci\\JWT\\Signer\\Rsa\\Sha512' => __DIR__ . '/..' . '/lcobucci/jwt/src/Signer/Rsa/Sha512.php', - 'Lcobucci\\JWT\\Token' => __DIR__ . '/..' . '/lcobucci/jwt/src/Token.php', - 'Lcobucci\\JWT\\ValidationData' => __DIR__ . '/..' . '/lcobucci/jwt/src/ValidationData.php', 'League\\CommonMark\\Block\\Element\\AbstractBlock' => __DIR__ . '/..' . '/league/commonmark/src/Block/Element/AbstractBlock.php', 'League\\CommonMark\\Block\\Element\\BlockQuote' => __DIR__ . '/..' . '/league/commonmark/src/Block/Element/BlockQuote.php', 'League\\CommonMark\\Block\\Element\\Document' => __DIR__ . '/..' . '/league/commonmark/src/Block/Element/Document.php', @@ -4033,6 +3907,7 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 'League\\CommonMark\\HtmlRenderer' => __DIR__ . '/..' . '/league/commonmark/src/HtmlRenderer.php', 'League\\CommonMark\\InlineParserContext' => __DIR__ . '/..' . '/league/commonmark/src/InlineParserContext.php', 'League\\CommonMark\\InlineParserEngine' => __DIR__ . '/..' . '/league/commonmark/src/InlineParserEngine.php', + 'League\\CommonMark\\Inline\\AdjoiningTextCollapser' => __DIR__ . '/..' . '/league/commonmark/src/Inline/AdjoiningTextCollapser.php', 'League\\CommonMark\\Inline\\Element\\AbstractInline' => __DIR__ . '/..' . '/league/commonmark/src/Inline/Element/AbstractInline.php', 'League\\CommonMark\\Inline\\Element\\AbstractInlineContainer' => __DIR__ . '/..' . '/league/commonmark/src/Inline/Element/AbstractInlineContainer.php', 'League\\CommonMark\\Inline\\Element\\AbstractStringContainer' => __DIR__ . '/..' . '/league/commonmark/src/Inline/Element/AbstractStringContainer.php', @@ -4214,6 +4089,7 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 'Maatwebsite\\Excel\\Events\\BeforeSheet' => __DIR__ . '/..' . '/maatwebsite/excel/src/Events/BeforeSheet.php', 'Maatwebsite\\Excel\\Events\\BeforeWriting' => __DIR__ . '/..' . '/maatwebsite/excel/src/Events/BeforeWriting.php', 'Maatwebsite\\Excel\\Events\\Event' => __DIR__ . '/..' . '/maatwebsite/excel/src/Events/Event.php', + 'Maatwebsite\\Excel\\Events\\ImportFailed' => __DIR__ . '/..' . '/maatwebsite/excel/src/Events/ImportFailed.php', 'Maatwebsite\\Excel\\Excel' => __DIR__ . '/..' . '/maatwebsite/excel/src/Excel.php', 'Maatwebsite\\Excel\\ExcelServiceProvider' => __DIR__ . '/..' . '/maatwebsite/excel/src/ExcelServiceProvider.php', 'Maatwebsite\\Excel\\Exceptions\\ConcernConflictException' => __DIR__ . '/..' . '/maatwebsite/excel/src/Exceptions/ConcernConflictException.php', @@ -4239,6 +4115,7 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 'Maatwebsite\\Excel\\HasEventBus' => __DIR__ . '/..' . '/maatwebsite/excel/src/HasEventBus.php', 'Maatwebsite\\Excel\\HeadingRowImport' => __DIR__ . '/..' . '/maatwebsite/excel/src/HeadingRowImport.php', 'Maatwebsite\\Excel\\Helpers\\ArrayHelper' => __DIR__ . '/..' . '/maatwebsite/excel/src/Helpers/ArrayHelper.php', + 'Maatwebsite\\Excel\\Helpers\\CellHelper' => __DIR__ . '/..' . '/maatwebsite/excel/src/Helpers/CellHelper.php', 'Maatwebsite\\Excel\\Helpers\\FileTypeDetector' => __DIR__ . '/..' . '/maatwebsite/excel/src/Helpers/FileTypeDetector.php', 'Maatwebsite\\Excel\\Importer' => __DIR__ . '/..' . '/maatwebsite/excel/src/Importer.php', 'Maatwebsite\\Excel\\Imports\\EndRowFinder' => __DIR__ . '/..' . '/maatwebsite/excel/src/Imports/EndRowFinder.php', @@ -4246,6 +4123,7 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 'Maatwebsite\\Excel\\Imports\\HeadingRowFormatter' => __DIR__ . '/..' . '/maatwebsite/excel/src/Imports/HeadingRowFormatter.php', 'Maatwebsite\\Excel\\Imports\\ModelImporter' => __DIR__ . '/..' . '/maatwebsite/excel/src/Imports/ModelImporter.php', 'Maatwebsite\\Excel\\Imports\\ModelManager' => __DIR__ . '/..' . '/maatwebsite/excel/src/Imports/ModelManager.php', + 'Maatwebsite\\Excel\\Jobs\\AfterImportJob' => __DIR__ . '/..' . '/maatwebsite/excel/src/Jobs/AfterImportJob.php', 'Maatwebsite\\Excel\\Jobs\\AppendDataToSheet' => __DIR__ . '/..' . '/maatwebsite/excel/src/Jobs/AppendDataToSheet.php', 'Maatwebsite\\Excel\\Jobs\\AppendQueryToSheet' => __DIR__ . '/..' . '/maatwebsite/excel/src/Jobs/AppendQueryToSheet.php', 'Maatwebsite\\Excel\\Jobs\\CloseSheet' => __DIR__ . '/..' . '/maatwebsite/excel/src/Jobs/CloseSheet.php', @@ -4460,130 +4338,6 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 'Monolog\\ResettableInterface' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/ResettableInterface.php', 'Monolog\\SignalHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/SignalHandler.php', 'Monolog\\Utils' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Utils.php', - 'Nexmo\\Account\\Balance' => __DIR__ . '/..' . '/nexmo/client/src/Account/Balance.php', - 'Nexmo\\Account\\Client' => __DIR__ . '/..' . '/nexmo/client/src/Account/Client.php', - 'Nexmo\\Account\\PrefixPrice' => __DIR__ . '/..' . '/nexmo/client/src/Account/PrefixPrice.php', - 'Nexmo\\Account\\Price' => __DIR__ . '/..' . '/nexmo/client/src/Account/Price.php', - 'Nexmo\\Account\\Secret' => __DIR__ . '/..' . '/nexmo/client/src/Account/Secret.php', - 'Nexmo\\Account\\SecretCollection' => __DIR__ . '/..' . '/nexmo/client/src/Account/SecretCollection.php', - 'Nexmo\\Account\\SmsPrice' => __DIR__ . '/..' . '/nexmo/client/src/Account/SmsPrice.php', - 'Nexmo\\Account\\VoicePrice' => __DIR__ . '/..' . '/nexmo/client/src/Account/VoicePrice.php', - 'Nexmo\\ApiErrorHandler' => __DIR__ . '/..' . '/nexmo/client/src/ApiErrorHandler.php', - 'Nexmo\\Application\\Application' => __DIR__ . '/..' . '/nexmo/client/src/Application/Application.php', - 'Nexmo\\Application\\ApplicationInterface' => __DIR__ . '/..' . '/nexmo/client/src/Application/ApplicationInterface.php', - 'Nexmo\\Application\\Client' => __DIR__ . '/..' . '/nexmo/client/src/Application/Client.php', - 'Nexmo\\Application\\Filter' => __DIR__ . '/..' . '/nexmo/client/src/Application/Filter.php', - 'Nexmo\\Application\\VoiceConfig' => __DIR__ . '/..' . '/nexmo/client/src/Application/VoiceConfig.php', - 'Nexmo\\Application\\Webhook' => __DIR__ . '/..' . '/nexmo/client/src/Application/Webhook.php', - 'Nexmo\\Call\\Call' => __DIR__ . '/..' . '/nexmo/client/src/Call/Call.php', - 'Nexmo\\Call\\Collection' => __DIR__ . '/..' . '/nexmo/client/src/Call/Collection.php', - 'Nexmo\\Call\\Dtmf' => __DIR__ . '/..' . '/nexmo/client/src/Call/Dtmf.php', - 'Nexmo\\Call\\Earmuff' => __DIR__ . '/..' . '/nexmo/client/src/Call/Earmuff.php', - 'Nexmo\\Call\\Endpoint' => __DIR__ . '/..' . '/nexmo/client/src/Call/Endpoint.php', - 'Nexmo\\Call\\Event' => __DIR__ . '/..' . '/nexmo/client/src/Call/Event.php', - 'Nexmo\\Call\\Filter' => __DIR__ . '/..' . '/nexmo/client/src/Call/Filter.php', - 'Nexmo\\Call\\Hangup' => __DIR__ . '/..' . '/nexmo/client/src/Call/Hangup.php', - 'Nexmo\\Call\\Mute' => __DIR__ . '/..' . '/nexmo/client/src/Call/Mute.php', - 'Nexmo\\Call\\Stream' => __DIR__ . '/..' . '/nexmo/client/src/Call/Stream.php', - 'Nexmo\\Call\\Talk' => __DIR__ . '/..' . '/nexmo/client/src/Call/Talk.php', - 'Nexmo\\Call\\Transfer' => __DIR__ . '/..' . '/nexmo/client/src/Call/Transfer.php', - 'Nexmo\\Call\\Unearmuff' => __DIR__ . '/..' . '/nexmo/client/src/Call/Unearmuff.php', - 'Nexmo\\Call\\Unmute' => __DIR__ . '/..' . '/nexmo/client/src/Call/Unmute.php', - 'Nexmo\\Call\\Webhook' => __DIR__ . '/..' . '/nexmo/client/src/Call/Webhook.php', - 'Nexmo\\Client' => __DIR__ . '/..' . '/nexmo/client/src/Client.php', - 'Nexmo\\Client\\Callback\\Callback' => __DIR__ . '/..' . '/nexmo/client/src/Client/Callback/Callback.php', - 'Nexmo\\Client\\Callback\\CallbackInterface' => __DIR__ . '/..' . '/nexmo/client/src/Client/Callback/CallbackInterface.php', - 'Nexmo\\Client\\ClientAwareInterface' => __DIR__ . '/..' . '/nexmo/client/src/Client/ClientAwareInterface.php', - 'Nexmo\\Client\\ClientAwareTrait' => __DIR__ . '/..' . '/nexmo/client/src/Client/ClientAwareTrait.php', - 'Nexmo\\Client\\Credentials\\AbstractCredentials' => __DIR__ . '/..' . '/nexmo/client/src/Client/Credentials/AbstractCredentials.php', - 'Nexmo\\Client\\Credentials\\Basic' => __DIR__ . '/..' . '/nexmo/client/src/Client/Credentials/Basic.php', - 'Nexmo\\Client\\Credentials\\Container' => __DIR__ . '/..' . '/nexmo/client/src/Client/Credentials/Container.php', - 'Nexmo\\Client\\Credentials\\CredentialsInterface' => __DIR__ . '/..' . '/nexmo/client/src/Client/Credentials/CredentialsInterface.php', - 'Nexmo\\Client\\Credentials\\Keypair' => __DIR__ . '/..' . '/nexmo/client/src/Client/Credentials/Keypair.php', - 'Nexmo\\Client\\Credentials\\OAuth' => __DIR__ . '/..' . '/nexmo/client/src/Client/Credentials/OAuth.php', - 'Nexmo\\Client\\Credentials\\SignatureSecret' => __DIR__ . '/..' . '/nexmo/client/src/Client/Credentials/SignatureSecret.php', - 'Nexmo\\Client\\Exception\\Exception' => __DIR__ . '/..' . '/nexmo/client/src/Client/Exception/Exception.php', - 'Nexmo\\Client\\Exception\\Request' => __DIR__ . '/..' . '/nexmo/client/src/Client/Exception/Request.php', - 'Nexmo\\Client\\Exception\\Server' => __DIR__ . '/..' . '/nexmo/client/src/Client/Exception/Server.php', - 'Nexmo\\Client\\Exception\\Transport' => __DIR__ . '/..' . '/nexmo/client/src/Client/Exception/Transport.php', - 'Nexmo\\Client\\Exception\\Validation' => __DIR__ . '/..' . '/nexmo/client/src/Client/Exception/Validation.php', - 'Nexmo\\Client\\Factory\\FactoryInterface' => __DIR__ . '/..' . '/nexmo/client/src/Client/Factory/FactoryInterface.php', - 'Nexmo\\Client\\Factory\\MapFactory' => __DIR__ . '/..' . '/nexmo/client/src/Client/Factory/MapFactory.php', - 'Nexmo\\Client\\Request\\AbstractRequest' => __DIR__ . '/..' . '/nexmo/client/src/Client/Request/AbstractRequest.php', - 'Nexmo\\Client\\Request\\RequestInterface' => __DIR__ . '/..' . '/nexmo/client/src/Client/Request/RequestInterface.php', - 'Nexmo\\Client\\Request\\WrapResponseInterface' => __DIR__ . '/..' . '/nexmo/client/src/Client/Request/WrapResponseInterface.php', - 'Nexmo\\Client\\Response\\AbstractResponse' => __DIR__ . '/..' . '/nexmo/client/src/Client/Response/AbstractResponse.php', - 'Nexmo\\Client\\Response\\Error' => __DIR__ . '/..' . '/nexmo/client/src/Client/Response/Error.php', - 'Nexmo\\Client\\Response\\Response' => __DIR__ . '/..' . '/nexmo/client/src/Client/Response/Response.php', - 'Nexmo\\Client\\Response\\ResponseInterface' => __DIR__ . '/..' . '/nexmo/client/src/Client/Response/ResponseInterface.php', - 'Nexmo\\Client\\Signature' => __DIR__ . '/..' . '/nexmo/client/src/Client/Signature.php', - 'Nexmo\\Conversations\\Collection' => __DIR__ . '/..' . '/nexmo/client/src/Conversations/Collection.php', - 'Nexmo\\Conversations\\Conversation' => __DIR__ . '/..' . '/nexmo/client/src/Conversations/Conversation.php', - 'Nexmo\\Conversion\\Client' => __DIR__ . '/..' . '/nexmo/client/src/Conversion/Client.php', - 'Nexmo\\Entity\\ArrayAccessTrait' => __DIR__ . '/..' . '/nexmo/client/src/Entity/ArrayAccessTrait.php', - 'Nexmo\\Entity\\CollectionAwareInterface' => __DIR__ . '/..' . '/nexmo/client/src/Entity/CollectionAwareInterface.php', - 'Nexmo\\Entity\\CollectionAwareTrait' => __DIR__ . '/..' . '/nexmo/client/src/Entity/CollectionAwareTrait.php', - 'Nexmo\\Entity\\CollectionInterface' => __DIR__ . '/..' . '/nexmo/client/src/Entity/CollectionInterface.php', - 'Nexmo\\Entity\\CollectionTrait' => __DIR__ . '/..' . '/nexmo/client/src/Entity/CollectionTrait.php', - 'Nexmo\\Entity\\EmptyFilter' => __DIR__ . '/..' . '/nexmo/client/src/Entity/EmptyFilter.php', - 'Nexmo\\Entity\\EntityInterface' => __DIR__ . '/..' . '/nexmo/client/src/Entity/EntityInterface.php', - 'Nexmo\\Entity\\FilterInterface' => __DIR__ . '/..' . '/nexmo/client/src/Entity/FilterInterface.php', - 'Nexmo\\Entity\\HasEntityTrait' => __DIR__ . '/..' . '/nexmo/client/src/Entity/HasEntityTrait.php', - 'Nexmo\\Entity\\JsonResponseTrait' => __DIR__ . '/..' . '/nexmo/client/src/Entity/JsonResponseTrait.php', - 'Nexmo\\Entity\\JsonSerializableInterface' => __DIR__ . '/..' . '/nexmo/client/src/Entity/JsonSerializableInterface.php', - 'Nexmo\\Entity\\JsonSerializableTrait' => __DIR__ . '/..' . '/nexmo/client/src/Entity/JsonSerializableTrait.php', - 'Nexmo\\Entity\\JsonUnserializableInterface' => __DIR__ . '/..' . '/nexmo/client/src/Entity/JsonUnserializableInterface.php', - 'Nexmo\\Entity\\NoRequestResponseTrait' => __DIR__ . '/..' . '/nexmo/client/src/Entity/NoRequestResponseTrait.php', - 'Nexmo\\Entity\\Psr7Trait' => __DIR__ . '/..' . '/nexmo/client/src/Entity/Psr7Trait.php', - 'Nexmo\\Entity\\RequestArrayTrait' => __DIR__ . '/..' . '/nexmo/client/src/Entity/RequestArrayTrait.php', - 'Nexmo\\Insights\\Advanced' => __DIR__ . '/..' . '/nexmo/client/src/Insights/Advanced.php', - 'Nexmo\\Insights\\AdvancedCnam' => __DIR__ . '/..' . '/nexmo/client/src/Insights/AdvancedCnam.php', - 'Nexmo\\Insights\\Basic' => __DIR__ . '/..' . '/nexmo/client/src/Insights/Basic.php', - 'Nexmo\\Insights\\Client' => __DIR__ . '/..' . '/nexmo/client/src/Insights/Client.php', - 'Nexmo\\Insights\\CnamTrait' => __DIR__ . '/..' . '/nexmo/client/src/Insights/CnamTrait.php', - 'Nexmo\\Insights\\Standard' => __DIR__ . '/..' . '/nexmo/client/src/Insights/Standard.php', - 'Nexmo\\Insights\\StandardCnam' => __DIR__ . '/..' . '/nexmo/client/src/Insights/StandardCnam.php', - 'Nexmo\\InvalidResponseException' => __DIR__ . '/..' . '/nexmo/client/src/InvalidResponseException.php', - 'Nexmo\\Message\\AutoDetect' => __DIR__ . '/..' . '/nexmo/client/src/Message/AutoDetect.php', - 'Nexmo\\Message\\Binary' => __DIR__ . '/..' . '/nexmo/client/src/Message/Binary.php', - 'Nexmo\\Message\\Callback\\Receipt' => __DIR__ . '/..' . '/nexmo/client/src/Message/Callback/Receipt.php', - 'Nexmo\\Message\\Client' => __DIR__ . '/..' . '/nexmo/client/src/Message/Client.php', - 'Nexmo\\Message\\CollectionTrait' => __DIR__ . '/..' . '/nexmo/client/src/Message/CollectionTrait.php', - 'Nexmo\\Message\\EncodingDetector' => __DIR__ . '/..' . '/nexmo/client/src/Message/EncodingDetector.php', - 'Nexmo\\Message\\InboundMessage' => __DIR__ . '/..' . '/nexmo/client/src/Message/InboundMessage.php', - 'Nexmo\\Message\\Message' => __DIR__ . '/..' . '/nexmo/client/src/Message/Message.php', - 'Nexmo\\Message\\MessageInterface' => __DIR__ . '/..' . '/nexmo/client/src/Message/MessageInterface.php', - 'Nexmo\\Message\\Query' => __DIR__ . '/..' . '/nexmo/client/src/Message/Query.php', - 'Nexmo\\Message\\Response\\Collection' => __DIR__ . '/..' . '/nexmo/client/src/Message/Response/Collection.php', - 'Nexmo\\Message\\Response\\Message' => __DIR__ . '/..' . '/nexmo/client/src/Message/Response/Message.php', - 'Nexmo\\Message\\Shortcode' => __DIR__ . '/..' . '/nexmo/client/src/Message/Shortcode.php', - 'Nexmo\\Message\\Shortcode\\Alert' => __DIR__ . '/..' . '/nexmo/client/src/Message/Shortcode/Alert.php', - 'Nexmo\\Message\\Shortcode\\Marketing' => __DIR__ . '/..' . '/nexmo/client/src/Message/Shortcode/Marketing.php', - 'Nexmo\\Message\\Shortcode\\TwoFactor' => __DIR__ . '/..' . '/nexmo/client/src/Message/Shortcode/TwoFactor.php', - 'Nexmo\\Message\\Text' => __DIR__ . '/..' . '/nexmo/client/src/Message/Text.php', - 'Nexmo\\Message\\Unicode' => __DIR__ . '/..' . '/nexmo/client/src/Message/Unicode.php', - 'Nexmo\\Message\\Vcal' => __DIR__ . '/..' . '/nexmo/client/src/Message/Vcal.php', - 'Nexmo\\Message\\Vcard' => __DIR__ . '/..' . '/nexmo/client/src/Message/Vcard.php', - 'Nexmo\\Message\\Wap' => __DIR__ . '/..' . '/nexmo/client/src/Message/Wap.php', - 'Nexmo\\Network' => __DIR__ . '/..' . '/nexmo/client/src/Network.php', - 'Nexmo\\Network\\Number\\Callback' => __DIR__ . '/..' . '/nexmo/client/src/Network/Number/Callback.php', - 'Nexmo\\Network\\Number\\Request' => __DIR__ . '/..' . '/nexmo/client/src/Network/Number/Request.php', - 'Nexmo\\Network\\Number\\Response' => __DIR__ . '/..' . '/nexmo/client/src/Network/Number/Response.php', - 'Nexmo\\Numbers\\Client' => __DIR__ . '/..' . '/nexmo/client/src/Numbers/Client.php', - 'Nexmo\\Numbers\\Number' => __DIR__ . '/..' . '/nexmo/client/src/Numbers/Number.php', - 'Nexmo\\Redact\\Client' => __DIR__ . '/..' . '/nexmo/client/src/Redact/Client.php', - 'Nexmo\\Response' => __DIR__ . '/..' . '/nexmo/client/src/Response.php', - 'Nexmo\\Response\\Message' => __DIR__ . '/..' . '/nexmo/client/src/Response/Message.php', - 'Nexmo\\User\\Collection' => __DIR__ . '/..' . '/nexmo/client/src/User/Collection.php', - 'Nexmo\\User\\User' => __DIR__ . '/..' . '/nexmo/client/src/User/User.php', - 'Nexmo\\Verify\\Check' => __DIR__ . '/..' . '/nexmo/client/src/Verify/Check.php', - 'Nexmo\\Verify\\Client' => __DIR__ . '/..' . '/nexmo/client/src/Verify/Client.php', - 'Nexmo\\Verify\\Verification' => __DIR__ . '/..' . '/nexmo/client/src/Verify/Verification.php', - 'Nexmo\\Verify\\VerificationInterface' => __DIR__ . '/..' . '/nexmo/client/src/Verify/VerificationInterface.php', - 'Nexmo\\Voice\\Call\\Call' => __DIR__ . '/..' . '/nexmo/client/src/Voice/Call/Call.php', - 'Nexmo\\Voice\\Call\\Inbound' => __DIR__ . '/..' . '/nexmo/client/src/Voice/Call/Inbound.php', - 'Nexmo\\Voice\\Message\\Callback' => __DIR__ . '/..' . '/nexmo/client/src/Voice/Message/Callback.php', - 'Nexmo\\Voice\\Message\\Message' => __DIR__ . '/..' . '/nexmo/client/src/Voice/Message/Message.php', 'Normalizer' => __DIR__ . '/..' . '/patchwork/utf8/src/Normalizer.php', 'Opis\\Closure\\Analyzer' => __DIR__ . '/..' . '/opis/closure/src/Analyzer.php', 'Opis\\Closure\\ClosureContext' => __DIR__ . '/..' . '/opis/closure/src/ClosureContext.php', @@ -5453,6 +5207,10 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\Workbook' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/Workbook.php', 'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\Worksheet' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/Worksheet.php', 'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\WriterPart' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/WriterPart.php', + 'PhpOption\\LazyOption' => __DIR__ . '/..' . '/phpoption/phpoption/src/PhpOption/LazyOption.php', + 'PhpOption\\None' => __DIR__ . '/..' . '/phpoption/phpoption/src/PhpOption/None.php', + 'PhpOption\\Option' => __DIR__ . '/..' . '/phpoption/phpoption/src/PhpOption/Option.php', + 'PhpOption\\Some' => __DIR__ . '/..' . '/phpoption/phpoption/src/PhpOption/Some.php', 'PhpParser\\Builder' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder.php', 'PhpParser\\BuilderFactory' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/BuilderFactory.php', 'PhpParser\\BuilderHelpers' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/BuilderHelpers.php', @@ -6293,13 +6051,13 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 'Spatie\\Activitylog\\ActivityLogger' => __DIR__ . '/..' . '/spatie/laravel-activitylog/src/ActivityLogger.php', 'Spatie\\Activitylog\\ActivitylogServiceProvider' => __DIR__ . '/..' . '/spatie/laravel-activitylog/src/ActivitylogServiceProvider.php', 'Spatie\\Activitylog\\CleanActivitylogCommand' => __DIR__ . '/..' . '/spatie/laravel-activitylog/src/CleanActivitylogCommand.php', + 'Spatie\\Activitylog\\Contracts\\Activity' => __DIR__ . '/..' . '/spatie/laravel-activitylog/src/Contracts/Activity.php', 'Spatie\\Activitylog\\Exceptions\\CouldNotLogActivity' => __DIR__ . '/..' . '/spatie/laravel-activitylog/src/Exceptions/CouldNotLogActivity.php', 'Spatie\\Activitylog\\Exceptions\\CouldNotLogChanges' => __DIR__ . '/..' . '/spatie/laravel-activitylog/src/Exceptions/CouldNotLogChanges.php', 'Spatie\\Activitylog\\Exceptions\\InvalidConfiguration' => __DIR__ . '/..' . '/spatie/laravel-activitylog/src/Exceptions/InvalidConfiguration.php', 'Spatie\\Activitylog\\Models\\Activity' => __DIR__ . '/..' . '/spatie/laravel-activitylog/src/Models/Activity.php', 'Spatie\\Activitylog\\Traits\\CausesActivity' => __DIR__ . '/..' . '/spatie/laravel-activitylog/src/Traits/CausesActivity.php', 'Spatie\\Activitylog\\Traits\\DetectsChanges' => __DIR__ . '/..' . '/spatie/laravel-activitylog/src/Traits/DetectsChanges.php', - 'Spatie\\Activitylog\\Traits\\HasActivity' => __DIR__ . '/..' . '/spatie/laravel-activitylog/src/Traits/HasActivity.php', 'Spatie\\Activitylog\\Traits\\LogsActivity' => __DIR__ . '/..' . '/spatie/laravel-activitylog/src/Traits/LogsActivity.php', 'Spatie\\String\\Exceptions\\ErrorCreatingStringException' => __DIR__ . '/..' . '/spatie/string/src/Exceptions/ErrorCreatingStringException.php', 'Spatie\\String\\Exceptions\\UnknownFunctionException' => __DIR__ . '/..' . '/spatie/string/src/Exceptions/UnknownFunctionException.php', @@ -6943,6 +6701,7 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 'Symfony\\Contracts\\Translation\\TranslatorTrait' => __DIR__ . '/..' . '/symfony/contracts/Translation/TranslatorTrait.php', 'Symfony\\Polyfill\\Ctype\\Ctype' => __DIR__ . '/..' . '/symfony/polyfill-ctype/Ctype.php', 'Symfony\\Polyfill\\Iconv\\Iconv' => __DIR__ . '/..' . '/symfony/polyfill-iconv/Iconv.php', + 'Symfony\\Polyfill\\Intl\\Idn\\Idn' => __DIR__ . '/..' . '/symfony/polyfill-intl-idn/Idn.php', 'Symfony\\Polyfill\\Mbstring\\Mbstring' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/Mbstring.php', 'Symfony\\Polyfill\\Php72\\Php72' => __DIR__ . '/..' . '/symfony/polyfill-php72/Php72.php', 'TaxByStatesSeeder' => __DIR__ . '/../..' . '/database/seeds/TaxByStatesSeeder.php', @@ -7041,18 +6800,6 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 'Underscore\\UnderscoreTest' => __DIR__ . '/..' . '/anahkiasen/underscore-php/tests/UnderscoreTest.php', 'Underscore\\UnderscoreTestCase' => __DIR__ . '/..' . '/anahkiasen/underscore-php/tests/UnderscoreTestCase.php', 'UserTableSeeder' => __DIR__ . '/../..' . '/database/seeds/DatabaseSeeder.php', - 'Voerro\\Laravel\\VisitorTracker\\Controllers\\StatisticsController' => __DIR__ . '/..' . '/voerro/laravel-visitor-tracker/src/Controllers/StatisticsController.php', - 'Voerro\\Laravel\\VisitorTracker\\Facades\\VisitStats' => __DIR__ . '/..' . '/voerro/laravel-visitor-tracker/src/Facades/VisitStats.php', - 'Voerro\\Laravel\\VisitorTracker\\Geoip' => __DIR__ . '/..' . '/voerro/laravel-visitor-tracker/src/Geoip.php', - 'Voerro\\Laravel\\VisitorTracker\\Geoip\\Driver' => __DIR__ . '/..' . '/voerro/laravel-visitor-tracker/src/Geoip/Driver.php', - 'Voerro\\Laravel\\VisitorTracker\\Geoip\\Ipstack' => __DIR__ . '/..' . '/voerro/laravel-visitor-tracker/src/Geoip/Ipstack.php', - 'Voerro\\Laravel\\VisitorTracker\\Geoip\\Userinfo' => __DIR__ . '/..' . '/voerro/laravel-visitor-tracker/src/Geoip/Userinfo.php', - 'Voerro\\Laravel\\VisitorTracker\\Jobs\\GetGeoipData' => __DIR__ . '/..' . '/voerro/laravel-visitor-tracker/src/Jobs/GetGeoipData.php', - 'Voerro\\Laravel\\VisitorTracker\\Middleware\\RecordVisits' => __DIR__ . '/..' . '/voerro/laravel-visitor-tracker/src/Middleware/RecordVisits.php', - 'Voerro\\Laravel\\VisitorTracker\\Models\\Visit' => __DIR__ . '/..' . '/voerro/laravel-visitor-tracker/src/Models/Visit.php', - 'Voerro\\Laravel\\VisitorTracker\\Tracker' => __DIR__ . '/..' . '/voerro/laravel-visitor-tracker/src/Tracker.php', - 'Voerro\\Laravel\\VisitorTracker\\VisitStats' => __DIR__ . '/..' . '/voerro/laravel-visitor-tracker/src/VisitStats.php', - 'Voerro\\Laravel\\VisitorTracker\\VisitorTrackerServiceProvider' => __DIR__ . '/..' . '/voerro/laravel-visitor-tracker/src/VisitorTrackerServiceProvider.php', 'Webmozart\\Assert\\Assert' => __DIR__ . '/..' . '/webmozart/assert/src/Assert.php', 'XdgBaseDir\\Xdg' => __DIR__ . '/..' . '/dnoegel/php-xdg-base-dir/src/Xdg.php', 'Yajra\\DataTables\\ApiResourceDataTable' => __DIR__ . '/..' . '/yajra/laravel-datatables-oracle/src/ApiResourceDataTable.php', @@ -7133,38 +6880,6 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 'Yajra\\DataTables\\Utilities\\Config' => __DIR__ . '/..' . '/yajra/laravel-datatables-oracle/src/Utilities/Config.php', 'Yajra\\DataTables\\Utilities\\Helper' => __DIR__ . '/..' . '/yajra/laravel-datatables-oracle/src/Utilities/Helper.php', 'Yajra\\DataTables\\Utilities\\Request' => __DIR__ . '/..' . '/yajra/laravel-datatables-oracle/src/Utilities/Request.php', - 'Zend\\Diactoros\\AbstractSerializer' => __DIR__ . '/..' . '/zendframework/zend-diactoros/src/AbstractSerializer.php', - 'Zend\\Diactoros\\CallbackStream' => __DIR__ . '/..' . '/zendframework/zend-diactoros/src/CallbackStream.php', - 'Zend\\Diactoros\\Exception\\DeprecatedMethodException' => __DIR__ . '/..' . '/zendframework/zend-diactoros/src/Exception/DeprecatedMethodException.php', - 'Zend\\Diactoros\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/zendframework/zend-diactoros/src/Exception/ExceptionInterface.php', - 'Zend\\Diactoros\\HeaderSecurity' => __DIR__ . '/..' . '/zendframework/zend-diactoros/src/HeaderSecurity.php', - 'Zend\\Diactoros\\MessageTrait' => __DIR__ . '/..' . '/zendframework/zend-diactoros/src/MessageTrait.php', - 'Zend\\Diactoros\\PhpInputStream' => __DIR__ . '/..' . '/zendframework/zend-diactoros/src/PhpInputStream.php', - 'Zend\\Diactoros\\RelativeStream' => __DIR__ . '/..' . '/zendframework/zend-diactoros/src/RelativeStream.php', - 'Zend\\Diactoros\\Request' => __DIR__ . '/..' . '/zendframework/zend-diactoros/src/Request.php', - 'Zend\\Diactoros\\RequestTrait' => __DIR__ . '/..' . '/zendframework/zend-diactoros/src/RequestTrait.php', - 'Zend\\Diactoros\\Request\\ArraySerializer' => __DIR__ . '/..' . '/zendframework/zend-diactoros/src/Request/ArraySerializer.php', - 'Zend\\Diactoros\\Request\\Serializer' => __DIR__ . '/..' . '/zendframework/zend-diactoros/src/Request/Serializer.php', - 'Zend\\Diactoros\\Response' => __DIR__ . '/..' . '/zendframework/zend-diactoros/src/Response.php', - 'Zend\\Diactoros\\Response\\ArraySerializer' => __DIR__ . '/..' . '/zendframework/zend-diactoros/src/Response/ArraySerializer.php', - 'Zend\\Diactoros\\Response\\EmitterInterface' => __DIR__ . '/..' . '/zendframework/zend-diactoros/src/Response/EmitterInterface.php', - 'Zend\\Diactoros\\Response\\EmptyResponse' => __DIR__ . '/..' . '/zendframework/zend-diactoros/src/Response/EmptyResponse.php', - 'Zend\\Diactoros\\Response\\HtmlResponse' => __DIR__ . '/..' . '/zendframework/zend-diactoros/src/Response/HtmlResponse.php', - 'Zend\\Diactoros\\Response\\InjectContentTypeTrait' => __DIR__ . '/..' . '/zendframework/zend-diactoros/src/Response/InjectContentTypeTrait.php', - 'Zend\\Diactoros\\Response\\JsonResponse' => __DIR__ . '/..' . '/zendframework/zend-diactoros/src/Response/JsonResponse.php', - 'Zend\\Diactoros\\Response\\RedirectResponse' => __DIR__ . '/..' . '/zendframework/zend-diactoros/src/Response/RedirectResponse.php', - 'Zend\\Diactoros\\Response\\SapiEmitter' => __DIR__ . '/..' . '/zendframework/zend-diactoros/src/Response/SapiEmitter.php', - 'Zend\\Diactoros\\Response\\SapiEmitterTrait' => __DIR__ . '/..' . '/zendframework/zend-diactoros/src/Response/SapiEmitterTrait.php', - 'Zend\\Diactoros\\Response\\SapiStreamEmitter' => __DIR__ . '/..' . '/zendframework/zend-diactoros/src/Response/SapiStreamEmitter.php', - 'Zend\\Diactoros\\Response\\Serializer' => __DIR__ . '/..' . '/zendframework/zend-diactoros/src/Response/Serializer.php', - 'Zend\\Diactoros\\Response\\TextResponse' => __DIR__ . '/..' . '/zendframework/zend-diactoros/src/Response/TextResponse.php', - 'Zend\\Diactoros\\Response\\XmlResponse' => __DIR__ . '/..' . '/zendframework/zend-diactoros/src/Response/XmlResponse.php', - 'Zend\\Diactoros\\Server' => __DIR__ . '/..' . '/zendframework/zend-diactoros/src/Server.php', - 'Zend\\Diactoros\\ServerRequest' => __DIR__ . '/..' . '/zendframework/zend-diactoros/src/ServerRequest.php', - 'Zend\\Diactoros\\ServerRequestFactory' => __DIR__ . '/..' . '/zendframework/zend-diactoros/src/ServerRequestFactory.php', - 'Zend\\Diactoros\\Stream' => __DIR__ . '/..' . '/zendframework/zend-diactoros/src/Stream.php', - 'Zend\\Diactoros\\UploadedFile' => __DIR__ . '/..' . '/zendframework/zend-diactoros/src/UploadedFile.php', - 'Zend\\Diactoros\\Uri' => __DIR__ . '/..' . '/zendframework/zend-diactoros/src/Uri.php', 'mailchimpFieldAgoraSeeder' => __DIR__ . '/../..' . '/database/seeds/DatabaseSeeder.php', 'mailchimpSettingSeeder' => __DIR__ . '/../..' . '/database/seeds/DatabaseSeeder.php', 'phpDocumentor\\Reflection\\DocBlock' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock.php', @@ -7245,6 +6960,8 @@ class ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84 'phpmock\\MockEnabledException' => __DIR__ . '/..' . '/php-mock/php-mock/classes/MockEnabledException.php', 'phpmock\\MockRegistry' => __DIR__ . '/..' . '/php-mock/php-mock/classes/MockRegistry.php', 'phpmock\\MockTest' => __DIR__ . '/..' . '/php-mock/php-mock/tests/MockTest.php', + 'phpmock\\TestCaseNoTypeHintTrait' => __DIR__ . '/..' . '/php-mock/php-mock/tests/TestCaseNoTypeHintTrait.php', + 'phpmock\\TestCaseTypeHintTrait' => __DIR__ . '/..' . '/php-mock/php-mock/tests/TestCaseTypeHintTrait.php', 'phpmock\\environment\\MockEnvironment' => __DIR__ . '/..' . '/php-mock/php-mock/classes/environment/MockEnvironment.php', 'phpmock\\environment\\MockEnvironmentTest' => __DIR__ . '/..' . '/php-mock/php-mock/tests/environment/MockEnvironmentTest.php', 'phpmock\\environment\\SleepEnvironmentBuilder' => __DIR__ . '/..' . '/php-mock/php-mock/classes/environment/SleepEnvironmentBuilder.php', @@ -7279,7 +6996,6 @@ public static function getInitializer(ClassLoader $loader) return \Closure::bind(function () use ($loader) { $loader->prefixLengthsPsr4 = ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84::$prefixLengthsPsr4; $loader->prefixDirsPsr4 = ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84::$prefixDirsPsr4; - $loader->fallbackDirsPsr4 = ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84::$fallbackDirsPsr4; $loader->prefixesPsr0 = ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84::$prefixesPsr0; $loader->classMap = ComposerStaticInitbb14d002d94c2a0afc906c0d693f6d84::$classMap; diff --git a/vendor/composer/composer/CHANGELOG.md b/vendor/composer/composer/CHANGELOG.md index 36ceddfc9b..c079b69228 100644 --- a/vendor/composer/composer/CHANGELOG.md +++ b/vendor/composer/composer/CHANGELOG.md @@ -1,3 +1,11 @@ +### [1.8.5] 2019-04-09 + + * HHVM 4.0 is no longer compatible with Composer. Please use PHP instead going forward. + * Added forward compatibility with upcoming 2.0 changes + * Fixed support for PHP 7.3-style heredoc/nowdoc syntax changes in autoload generation + * Fixed require command usage when combined with --ignore-platform-reqs + * Fixed and cleaned up various Windows junctions handling issues + ### [1.8.4] 2019-02-11 * Fixed long standing solver bug leading to odd solving issues in edge cases, see #7946 @@ -737,6 +745,7 @@ * Initial release +[1.8.5]: https://github.com/composer/composer/compare/1.8.4...1.8.5 [1.8.4]: https://github.com/composer/composer/compare/1.8.3...1.8.4 [1.8.3]: https://github.com/composer/composer/compare/1.8.2...1.8.3 [1.8.2]: https://github.com/composer/composer/compare/1.8.1...1.8.2 diff --git a/vendor/composer/composer/appveyor.yml b/vendor/composer/composer/appveyor.yml index e7c20c9e62..cb0f3d33c9 100644 --- a/vendor/composer/composer/appveyor.yml +++ b/vendor/composer/composer/appveyor.yml @@ -3,7 +3,7 @@ clone_depth: 5 environment: # This sets the PHP version (from Chocolatey) - PHPCI_CHOCO_VERSION: 7.2.9 + PHPCI_CHOCO_VERSION: 7.3.1 PHPCI_CACHE: C:\tools\phpci PHPCI_PHP: C:\tools\phpci\php PHPCI_COMPOSER: C:\tools\phpci\composer diff --git a/vendor/composer/composer/bin/composer b/vendor/composer/composer/bin/composer index 5e142662cb..3585787f2e 100644 --- a/vendor/composer/composer/bin/composer +++ b/vendor/composer/composer/bin/composer @@ -18,6 +18,11 @@ $xdebug = new XdebugHandler('Composer', '--ansi'); $xdebug->check(); unset($xdebug); +if (defined('HHVM_VERSION') && version_compare(HHVM_VERSION, '4.0', '>=')) { + echo 'HHVM 4.0 has dropped support for Composer, please use PHP instead. Aborting.'.PHP_EOL; + exit(1); +} + if (function_exists('ini_set')) { @ini_set('display_errors', 1); diff --git a/vendor/composer/composer/composer.lock b/vendor/composer/composer/composer.lock index 05df052f87..849e327524 100644 --- a/vendor/composer/composer/composer.lock +++ b/vendor/composer/composer/composer.lock @@ -64,16 +64,16 @@ }, { "name": "composer/semver", - "version": "1.4.2", + "version": "1.5.0", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "c7cb9a2095a074d131b65a8a0cd294479d785573" + "reference": "46d9139568ccb8d9e7cdd4539cab7347568a5e2e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/c7cb9a2095a074d131b65a8a0cd294479d785573", - "reference": "c7cb9a2095a074d131b65a8a0cd294479d785573", + "url": "https://api.github.com/repos/composer/semver/zipball/46d9139568ccb8d9e7cdd4539cab7347568a5e2e", + "reference": "46d9139568ccb8d9e7cdd4539cab7347568a5e2e", "shasum": "" }, "require": { @@ -122,28 +122,27 @@ "validation", "versioning" ], - "time": "2016-08-30T16:08:34+00:00" + "time": "2019-03-19T17:25:45+00:00" }, { "name": "composer/spdx-licenses", - "version": "1.5.0", + "version": "1.5.1", "source": { "type": "git", "url": "https://github.com/composer/spdx-licenses.git", - "reference": "7a9556b22bd9d4df7cad89876b00af58ef20d3a2" + "reference": "a1aa51cf3ab838b83b0867b14e56fc20fbd55b3d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/7a9556b22bd9d4df7cad89876b00af58ef20d3a2", - "reference": "7a9556b22bd9d4df7cad89876b00af58ef20d3a2", + "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/a1aa51cf3ab838b83b0867b14e56fc20fbd55b3d", + "reference": "a1aa51cf3ab838b83b0867b14e56fc20fbd55b3d", "shasum": "" }, "require": { - "php": "^5.3.2 || ^7.0" + "php": "^5.3.2 || ^7.0 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5", - "phpunit/phpunit-mock-objects": "2.3.0 || ^3.0" + "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 7" }, "type": "library", "extra": { @@ -183,7 +182,7 @@ "spdx", "validator" ], - "time": "2018-11-01T09:45:54+00:00" + "time": "2019-03-26T10:23:26+00:00" }, { "name": "composer/xdebug-handler", @@ -1360,6 +1359,7 @@ "mock", "xunit" ], + "abandoned": true, "time": "2015-10-02T06:51:40+00:00" }, { diff --git a/vendor/composer/composer/src/Composer/Autoload/ClassMapGenerator.php b/vendor/composer/composer/src/Composer/Autoload/ClassMapGenerator.php index 5d937433b0..1ecf96bfe8 100644 --- a/vendor/composer/composer/src/Composer/Autoload/ClassMapGenerator.php +++ b/vendor/composer/composer/src/Composer/Autoload/ClassMapGenerator.php @@ -162,7 +162,7 @@ private static function findClasses($path) } // strip heredocs/nowdocs - $contents = preg_replace('{<<<\s*(\'?)(\w+)\\1(?:\r\n|\n|\r)(?:.*?)(?:\r\n|\n|\r)\\2(?=\r\n|\n|\r|;)}s', 'null', $contents); + $contents = preg_replace('{<<<[ \t]*([\'"]?)(\w+)\\1(?:\r\n|\n|\r)(?:.*?)(?:\r\n|\n|\r)(?:\s*)\\2(?=\s+|[;,.)])}s', 'null', $contents); // strip strings $contents = preg_replace('{"[^"\\\\]*+(\\\\.[^"\\\\]*+)*+"|\'[^\'\\\\]*+(\\\\.[^\'\\\\]*+)*+\'}s', 'null', $contents); // strip leading non-php code if needed diff --git a/vendor/composer/composer/src/Composer/Command/ArchiveCommand.php b/vendor/composer/composer/src/Composer/Command/ArchiveCommand.php index 29858c6fc7..d0d9542cb7 100644 --- a/vendor/composer/composer/src/Composer/Command/ArchiveCommand.php +++ b/vendor/composer/composer/src/Composer/Command/ArchiveCommand.php @@ -56,6 +56,7 @@ protected function configure() php composer.phar archive [--format=zip] [--dir=/foo] [package [version]] +Read more at https://getcomposer.org/doc/03-cli.md#archive EOT ) ; diff --git a/vendor/composer/composer/src/Composer/Command/ClearCacheCommand.php b/vendor/composer/composer/src/Composer/Command/ClearCacheCommand.php index 2514f63309..ec51c56d39 100644 --- a/vendor/composer/composer/src/Composer/Command/ClearCacheCommand.php +++ b/vendor/composer/composer/src/Composer/Command/ClearCacheCommand.php @@ -32,6 +32,8 @@ protected function configure() <<clear-cache deletes all cached packages from composer's cache directory. + +Read more at https://getcomposer.org/doc/03-cli.md#clear-cache-clearcache- EOT ) ; diff --git a/vendor/composer/composer/src/Composer/Command/ConfigCommand.php b/vendor/composer/composer/src/Composer/Command/ConfigCommand.php index c2347d3062..b7e3b1f99a 100644 --- a/vendor/composer/composer/src/Composer/Command/ConfigCommand.php +++ b/vendor/composer/composer/src/Composer/Command/ConfigCommand.php @@ -125,6 +125,8 @@ protected function configure() global config.json file. %command.full_name% --editor --global + +Read more at https://getcomposer.org/doc/03-cli.md#config EOT ) ; diff --git a/vendor/composer/composer/src/Composer/Command/CreateProjectCommand.php b/vendor/composer/composer/src/Composer/Command/CreateProjectCommand.php index cca5f18711..3702c3595a 100644 --- a/vendor/composer/composer/src/Composer/Command/CreateProjectCommand.php +++ b/vendor/composer/composer/src/Composer/Command/CreateProjectCommand.php @@ -104,6 +104,7 @@ protected function configure() To install a package from another repository than the default one you can pass the '--repository=https://myrepository.org' flag. +Read more at https://getcomposer.org/doc/03-cli.md#create-project EOT ) ; diff --git a/vendor/composer/composer/src/Composer/Command/DependsCommand.php b/vendor/composer/composer/src/Composer/Command/DependsCommand.php index acbc89a705..d6adec083a 100644 --- a/vendor/composer/composer/src/Composer/Command/DependsCommand.php +++ b/vendor/composer/composer/src/Composer/Command/DependsCommand.php @@ -37,6 +37,7 @@ protected function configure() php composer.phar depends composer/composer +Read more at https://getcomposer.org/doc/03-cli.md#depends-why- EOT ) ; diff --git a/vendor/composer/composer/src/Composer/Command/DiagnoseCommand.php b/vendor/composer/composer/src/Composer/Command/DiagnoseCommand.php index 3c4c3bb321..19ed813929 100644 --- a/vendor/composer/composer/src/Composer/Command/DiagnoseCommand.php +++ b/vendor/composer/composer/src/Composer/Command/DiagnoseCommand.php @@ -55,6 +55,7 @@ protected function configure() The process exit code will be 1 in case of warnings and 2 for errors. +Read more at https://getcomposer.org/doc/03-cli.md#diagnose EOT ) ; diff --git a/vendor/composer/composer/src/Composer/Command/DumpAutoloadCommand.php b/vendor/composer/composer/src/Composer/Command/DumpAutoloadCommand.php index 55a2c5f16d..3add151662 100644 --- a/vendor/composer/composer/src/Composer/Command/DumpAutoloadCommand.php +++ b/vendor/composer/composer/src/Composer/Command/DumpAutoloadCommand.php @@ -39,6 +39,8 @@ protected function configure() ->setHelp( <<php composer.phar dump-autoload + +Read more at https://getcomposer.org/doc/03-cli.md#dump-autoload-dumpautoload- EOT ) ; diff --git a/vendor/composer/composer/src/Composer/Command/ExecCommand.php b/vendor/composer/composer/src/Composer/Command/ExecCommand.php index f07bc9d288..c9184c7078 100644 --- a/vendor/composer/composer/src/Composer/Command/ExecCommand.php +++ b/vendor/composer/composer/src/Composer/Command/ExecCommand.php @@ -36,6 +36,13 @@ protected function configure() 'Arguments to pass to the binary. Use -- to separate from composer arguments' ), )) + ->setHelp( + <<php composer.phar init +Read more at https://getcomposer.org/doc/03-cli.md#init EOT ) ; @@ -694,15 +695,22 @@ private function findBestVersionAndNameForPackage(InputInterface $input, $name, { // find the latest version allowed in this pool $versionSelector = new VersionSelector($this->getPool($input, $minimumStability)); - $package = $versionSelector->findBestCandidate($name, $requiredVersion, $phpVersion, $preferredStability); + $ignorePlatformReqs = $input->hasOption('ignore-platform-reqs') && $input->getOption('ignore-platform-reqs'); - // retry without phpVersion if platform requirements are ignored in case nothing was found - if ($input->hasOption('ignore-platform-reqs') && $input->getOption('ignore-platform-reqs')) { + // ignore phpVersion if platform requirements are ignored + if ($ignorePlatformReqs) { $phpVersion = null; - $package = $versionSelector->findBestCandidate($name, $requiredVersion, $phpVersion, $preferredStability); } + $package = $versionSelector->findBestCandidate($name, $requiredVersion, $phpVersion, $preferredStability); + if (!$package) { + // platform packages can not be found in the pool in versions other than the local platform's has + // so if platform reqs are ignored we just take the user's word for it + if ($ignorePlatformReqs && preg_match(PlatformRepository::PLATFORM_PACKAGE_REGEX, $name)) { + return array($name, $requiredVersion ?: '*'); + } + // Check whether the PHP version was the problem if ($phpVersion && $versionSelector->findBestCandidate($name, $requiredVersion, null, $preferredStability)) { throw new \InvalidArgumentException(sprintf( diff --git a/vendor/composer/composer/src/Composer/Command/InstallCommand.php b/vendor/composer/composer/src/Composer/Command/InstallCommand.php index cc590d8c9f..32fb1bdc68 100644 --- a/vendor/composer/composer/src/Composer/Command/InstallCommand.php +++ b/vendor/composer/composer/src/Composer/Command/InstallCommand.php @@ -61,6 +61,7 @@ protected function configure() php composer.phar install +Read more at https://getcomposer.org/doc/03-cli.md#install-i EOT ) ; diff --git a/vendor/composer/composer/src/Composer/Command/LicensesCommand.php b/vendor/composer/composer/src/Composer/Command/LicensesCommand.php index 9dec45e1bc..b3c30d63bc 100644 --- a/vendor/composer/composer/src/Composer/Command/LicensesCommand.php +++ b/vendor/composer/composer/src/Composer/Command/LicensesCommand.php @@ -41,6 +41,7 @@ protected function configure() The license command displays detailed information about the licenses of the installed dependencies. +Read more at https://getcomposer.org/doc/03-cli.md#licenses EOT ) ; diff --git a/vendor/composer/composer/src/Composer/Command/OutdatedCommand.php b/vendor/composer/composer/src/Composer/Command/OutdatedCommand.php index 79409c58fd..ae26a7487b 100644 --- a/vendor/composer/composer/src/Composer/Command/OutdatedCommand.php +++ b/vendor/composer/composer/src/Composer/Command/OutdatedCommand.php @@ -50,7 +50,7 @@ protected function configure() may involve work. - red (!): Dependency has a new version that is semver-compatible and you should upgrade it. - +Read more at https://getcomposer.org/doc/03-cli.md#outdated EOT ) ; diff --git a/vendor/composer/composer/src/Composer/Command/ProhibitsCommand.php b/vendor/composer/composer/src/Composer/Command/ProhibitsCommand.php index edf6729ab5..9e5575c746 100644 --- a/vendor/composer/composer/src/Composer/Command/ProhibitsCommand.php +++ b/vendor/composer/composer/src/Composer/Command/ProhibitsCommand.php @@ -37,6 +37,7 @@ protected function configure() php composer.phar prohibits composer/composer +Read more at https://getcomposer.org/doc/03-cli.md#prohibits-why-not- EOT ) ; diff --git a/vendor/composer/composer/src/Composer/Command/RemoveCommand.php b/vendor/composer/composer/src/Composer/Command/RemoveCommand.php index 27be1a0caa..e4407d4cbe 100644 --- a/vendor/composer/composer/src/Composer/Command/RemoveCommand.php +++ b/vendor/composer/composer/src/Composer/Command/RemoveCommand.php @@ -56,6 +56,7 @@ protected function configure() php composer.phar remove +Read more at https://getcomposer.org/doc/03-cli.md#remove EOT ) ; diff --git a/vendor/composer/composer/src/Composer/Command/RequireCommand.php b/vendor/composer/composer/src/Composer/Command/RequireCommand.php index b347de094f..508514eb43 100644 --- a/vendor/composer/composer/src/Composer/Command/RequireCommand.php +++ b/vendor/composer/composer/src/Composer/Command/RequireCommand.php @@ -25,6 +25,7 @@ use Composer\Plugin\PluginEvents; use Composer\Repository\CompositeRepository; use Composer\Repository\PlatformRepository; +use Composer\IO\IOInterface; /** * @author Jérémy Romey @@ -73,6 +74,7 @@ protected function configure() If you do not want to install the new dependencies immediately you can call it with --no-update +Read more at https://getcomposer.org/doc/03-cli.md#require EOT ) ; @@ -159,16 +161,27 @@ protected function execute(InputInterface $input, OutputInterface $output) if ($input->getOption('no-update')) { return 0; } - $updateDevMode = !$input->getOption('update-no-dev'); - $optimize = $input->getOption('optimize-autoloader') || $composer->getConfig()->get('optimize-autoloader'); - $authoritative = $input->getOption('classmap-authoritative') || $composer->getConfig()->get('classmap-authoritative'); - $apcu = $input->getOption('apcu-autoloader') || $composer->getConfig()->get('apcu-autoloader'); + try { + return $this->doUpdate($input, $output, $io, $requirements); + } catch (\Exception $e) { + $this->revertComposerFile(false); + throw $e; + } + } + + private function doUpdate(InputInterface $input, OutputInterface $output, IOInterface $io, array $requirements) + { // Update packages $this->resetComposer(); $composer = $this->getComposer(true, $input->getOption('no-plugins')); $composer->getDownloadManager()->setOutputProgress(!$input->getOption('no-progress')); + $updateDevMode = !$input->getOption('update-no-dev'); + $optimize = $input->getOption('optimize-autoloader') || $composer->getConfig()->get('optimize-autoloader'); + $authoritative = $input->getOption('classmap-authoritative') || $composer->getConfig()->get('classmap-authoritative'); + $apcu = $input->getOption('apcu-autoloader') || $composer->getConfig()->get('apcu-autoloader'); + $commandEvent = new CommandEvent(PluginEvents::COMMAND, 'require', $input, $output); $composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); diff --git a/vendor/composer/composer/src/Composer/Command/RunScriptCommand.php b/vendor/composer/composer/src/Composer/Command/RunScriptCommand.php index ea3b5c8927..6d39ce6da0 100644 --- a/vendor/composer/composer/src/Composer/Command/RunScriptCommand.php +++ b/vendor/composer/composer/src/Composer/Command/RunScriptCommand.php @@ -62,6 +62,8 @@ protected function configure() The run-script command runs scripts defined in composer.json: php composer.phar run-script post-update-cmd + +Read more at https://getcomposer.org/doc/03-cli.md#run-script EOT ) ; diff --git a/vendor/composer/composer/src/Composer/Command/ScriptAliasCommand.php b/vendor/composer/composer/src/Composer/Command/ScriptAliasCommand.php index 1aba0b074e..455f7420cd 100644 --- a/vendor/composer/composer/src/Composer/Command/ScriptAliasCommand.php +++ b/vendor/composer/composer/src/Composer/Command/ScriptAliasCommand.php @@ -48,6 +48,8 @@ protected function configure() The run-script command runs scripts defined in composer.json: php composer.phar run-script post-update-cmd + +Read more at https://getcomposer.org/doc/03-cli.md#run-script EOT ) ; diff --git a/vendor/composer/composer/src/Composer/Command/SearchCommand.php b/vendor/composer/composer/src/Composer/Command/SearchCommand.php index ed180e84c5..54aa4dceaa 100644 --- a/vendor/composer/composer/src/Composer/Command/SearchCommand.php +++ b/vendor/composer/composer/src/Composer/Command/SearchCommand.php @@ -49,6 +49,7 @@ protected function configure() The search command searches for packages by its name php composer.phar search symfony composer +Read more at https://getcomposer.org/doc/03-cli.md#search EOT ) ; diff --git a/vendor/composer/composer/src/Composer/Command/SelfUpdateCommand.php b/vendor/composer/composer/src/Composer/Command/SelfUpdateCommand.php index 243755963c..78b27460e4 100644 --- a/vendor/composer/composer/src/Composer/Command/SelfUpdateCommand.php +++ b/vendor/composer/composer/src/Composer/Command/SelfUpdateCommand.php @@ -60,6 +60,7 @@ protected function configure() php composer.phar self-update +Read more at https://getcomposer.org/doc/03-cli.md#self-update-selfupdate- EOT ) ; diff --git a/vendor/composer/composer/src/Composer/Command/ShowCommand.php b/vendor/composer/composer/src/Composer/Command/ShowCommand.php index cc0fe01545..e9061743fc 100644 --- a/vendor/composer/composer/src/Composer/Command/ShowCommand.php +++ b/vendor/composer/composer/src/Composer/Command/ShowCommand.php @@ -85,6 +85,7 @@ protected function configure() The show command displays detailed information about a package, or lists all packages available. +Read more at https://getcomposer.org/doc/03-cli.md#show EOT ) ; diff --git a/vendor/composer/composer/src/Composer/Command/StatusCommand.php b/vendor/composer/composer/src/Composer/Command/StatusCommand.php index 3e46b7fa07..cd153fc58c 100644 --- a/vendor/composer/composer/src/Composer/Command/StatusCommand.php +++ b/vendor/composer/composer/src/Composer/Command/StatusCommand.php @@ -52,6 +52,7 @@ protected function configure() The status command displays a list of dependencies that have been modified locally. +Read more at https://getcomposer.org/doc/03-cli.md#status EOT ) ; diff --git a/vendor/composer/composer/src/Composer/Command/SuggestsCommand.php b/vendor/composer/composer/src/Composer/Command/SuggestsCommand.php index 225725e12b..a200f8f69f 100644 --- a/vendor/composer/composer/src/Composer/Command/SuggestsCommand.php +++ b/vendor/composer/composer/src/Composer/Command/SuggestsCommand.php @@ -38,6 +38,7 @@ protected function configure() Enabling -v implies --by-package --by-suggestion, showing both lists. +Read more at https://getcomposer.org/doc/03-cli.md#suggests EOT ) ; diff --git a/vendor/composer/composer/src/Composer/Command/UpdateCommand.php b/vendor/composer/composer/src/Composer/Command/UpdateCommand.php index 34420b7473..e68c265c07 100644 --- a/vendor/composer/composer/src/Composer/Command/UpdateCommand.php +++ b/vendor/composer/composer/src/Composer/Command/UpdateCommand.php @@ -81,6 +81,7 @@ protected function configure() To select packages names interactively with auto-completion use -i. +Read more at https://getcomposer.org/doc/03-cli.md#update-u EOT ) ; diff --git a/vendor/composer/composer/src/Composer/Command/ValidateCommand.php b/vendor/composer/composer/src/Composer/Command/ValidateCommand.php index 52023e5283..5aba74adfe 100644 --- a/vendor/composer/composer/src/Composer/Command/ValidateCommand.php +++ b/vendor/composer/composer/src/Composer/Command/ValidateCommand.php @@ -55,6 +55,7 @@ protected function configure() 2 validation error(s) 3 file unreadable or missing +Read more at https://getcomposer.org/doc/03-cli.md#validate EOT ); } diff --git a/vendor/composer/composer/src/Composer/Compiler.php b/vendor/composer/composer/src/Composer/Compiler.php index 27b1f48167..2c763d053e 100644 --- a/vendor/composer/composer/src/Composer/Compiler.php +++ b/vendor/composer/composer/src/Composer/Compiler.php @@ -193,6 +193,7 @@ private function addFile($phar, $file, $strip = true) $content = str_replace('@package_version@', $this->version, $content); $content = str_replace('@package_branch_alias_version@', $this->branchAliasVersion, $content); $content = str_replace('@release_date@', $this->versionDate->format('Y-m-d H:i:s'), $content); + $content = preg_replace('{SOURCE_VERSION = \'[^\']+\';}', 'SOURCE_VERSION = \'\';', $content); } $phar->addFromString($path, $content); diff --git a/vendor/composer/composer/src/Composer/Composer.php b/vendor/composer/composer/src/Composer/Composer.php index 770c68bbd6..3be986770b 100644 --- a/vendor/composer/composer/src/Composer/Composer.php +++ b/vendor/composer/composer/src/Composer/Composer.php @@ -29,9 +29,46 @@ */ class Composer { - const VERSION = '1.8.4'; + /* + * Examples of the following constants in the various configurations they can be in + * + * releases (phar): + * const VERSION = '1.8.2'; + * const BRANCH_ALIAS_VERSION = ''; + * const RELEASE_DATE = '2019-01-29 15:00:53'; + * const SOURCE_VERSION = ''; + * + * snapshot builds (phar): + * const VERSION = 'd3873a05650e168251067d9648845c220c50e2d7'; + * const BRANCH_ALIAS_VERSION = '1.9-dev'; + * const RELEASE_DATE = '2019-02-20 07:43:56'; + * const SOURCE_VERSION = ''; + * + * source (git clone): + * const VERSION = '1.8.5'; + * const BRANCH_ALIAS_VERSION = ''; + * const RELEASE_DATE = '2019-04-09 17:46:47'; + * const SOURCE_VERSION = '1.8-dev+source'; + */ + const VERSION = '1.8.5'; const BRANCH_ALIAS_VERSION = ''; - const RELEASE_DATE = '2019-02-11 10:52:10'; + const RELEASE_DATE = '2019-04-09 17:46:47'; + const SOURCE_VERSION = '1.8-dev+source'; + + public static function getVersion() + { + // no replacement done, this must be a source checkout + if (self::VERSION === '@package_version'.'@') { + return self::SOURCE_VERSION; + } + + // we have a branch alias and version is a commit id, this must be a snapshot build + if (self::BRANCH_ALIAS_VERSION !== '' && preg_match('{^[a-f0-9]{40}$}', self::VERSION)) { + return self::BRANCH_ALIAS_VERSION.'+'.self::VERSION; + } + + return self::VERSION; + } /** * @var Package\RootPackageInterface diff --git a/vendor/composer/composer/src/Composer/Console/Application.php b/vendor/composer/composer/src/Composer/Console/Application.php index ccf83c9439..a829ac38a3 100644 --- a/vendor/composer/composer/src/Composer/Console/Application.php +++ b/vendor/composer/composer/src/Composer/Console/Application.php @@ -89,7 +89,7 @@ public function __construct() $this->io = new NullIO(); - parent::__construct('Composer', Composer::VERSION); + parent::__construct('Composer', Composer::getVersion()); } /** @@ -181,7 +181,7 @@ public function doRun(InputInterface $input, OutputInterface $output) if (!$isProxyCommand) { $io->writeError(sprintf( 'Running %s (%s) with %s on %s', - Composer::VERSION, + Composer::getVersion(), Composer::RELEASE_DATE, defined('HHVM_VERSION') ? 'HHVM '.HHVM_VERSION : 'PHP '.PHP_VERSION, function_exists('php_uname') ? php_uname('s') . ' / ' . php_uname('r') : 'Unknown OS' @@ -425,7 +425,7 @@ protected function getDefaultCommands() */ public function getLongVersion() { - if (Composer::BRANCH_ALIAS_VERSION) { + if (Composer::BRANCH_ALIAS_VERSION && Composer::BRANCH_ALIAS_VERSION !== '@package_branch_alias_version'.'@') { return sprintf( '%s version %s (%s) %s', $this->getName(), diff --git a/vendor/composer/composer/src/Composer/Downloader/PathDownloader.php b/vendor/composer/composer/src/Composer/Downloader/PathDownloader.php index e7084bd973..4c71fb4f4a 100644 --- a/vendor/composer/composer/src/Composer/Downloader/PathDownloader.php +++ b/vendor/composer/composer/src/Composer/Downloader/PathDownloader.php @@ -82,6 +82,12 @@ public function download(PackageInterface $package, $path, $output = true) $allowedStrategies = array(self::STRATEGY_MIRROR); } + // Check we can use junctions safely if we are on Windows + if (Platform::isWindows() && self::STRATEGY_SYMLINK === $currentStrategy && !$this->safeJunctions()) { + $currentStrategy = self::STRATEGY_MIRROR; + $allowedStrategies = array(self::STRATEGY_MIRROR); + } + $fileSystem = new Filesystem(); $this->filesystem->removeDirectory($path); @@ -172,4 +178,25 @@ public function getVcsReference(PackageInterface $package, $path) return $packageVersion['commit']; } } + + /** + * Returns true if junctions can be created and safely used on Windows + * + * A PHP bug makes junction detection fragile, leading to possible data loss + * when removing a package. See https://bugs.php.net/bug.php?id=77552 + * + * For safety we require a minimum version of Windows 7, so we can call the + * system rmdir which will preserve target content if given a junction. + * + * The PHP bug was fixed in 7.2.16 and 7.3.3 (requires at least Windows 7). + * + * @return bool + */ + private function safeJunctions() + { + // We need to call mklink, and rmdir on Windows 7 (version 6.1) + return function_exists('proc_open') && + (PHP_WINDOWS_VERSION_MAJOR > 6 || + (PHP_WINDOWS_VERSION_MAJOR === 6 && PHP_WINDOWS_VERSION_MINOR >= 1)); + } } diff --git a/vendor/composer/composer/src/Composer/Repository/ComposerRepository.php b/vendor/composer/composer/src/Composer/Repository/ComposerRepository.php index 8a5da2b232..38b8651035 100644 --- a/vendor/composer/composer/src/Composer/Repository/ComposerRepository.php +++ b/vendor/composer/composer/src/Composer/Repository/ComposerRepository.php @@ -20,6 +20,7 @@ use Composer\Json\JsonFile; use Composer\Cache; use Composer\Config; +use Composer\Composer; use Composer\Factory; use Composer\IO\IOInterface; use Composer\Util\RemoteFilesystem; @@ -699,12 +700,7 @@ protected function fetchFile($filename, $cacheKey = null, $sha256 = null, $store } $data = JsonFile::parseJson($json, $filename); - if (!empty($data['warning'])) { - $this->io->writeError('Warning from '.$this->url.': '.$data['warning'].''); - } - if (!empty($data['info'])) { - $this->io->writeError('Info from '.$this->url.': '.$data['info'].''); - } + RemoteFilesystem::outputWarnings($this->io, $this->url, $data); if ($cacheKey) { if ($storeLastModifiedTime) { @@ -769,12 +765,7 @@ protected function fetchFileIfLastModified($filename, $cacheKey, $lastModifiedTi } $data = JsonFile::parseJson($json, $filename); - if (!empty($data['warning'])) { - $this->io->writeError('Warning from '.$this->url.': '.$data['warning'].''); - } - if (!empty($data['info'])) { - $this->io->writeError('Info from '.$this->url.': '.$data['info'].''); - } + RemoteFilesystem::outputWarnings($this->io, $this->url, $data); $lastModifiedDate = $rfs->findHeaderValue($rfs->getLastHeaders(), 'last-modified'); if ($lastModifiedDate) { diff --git a/vendor/composer/composer/src/Composer/Repository/FilesystemRepository.php b/vendor/composer/composer/src/Composer/Repository/FilesystemRepository.php index bde55aad3c..204aa095d2 100644 --- a/vendor/composer/composer/src/Composer/Repository/FilesystemRepository.php +++ b/vendor/composer/composer/src/Composer/Repository/FilesystemRepository.php @@ -51,6 +51,11 @@ protected function initialize() try { $packages = $this->file->read(); + // forward compatibility for composer v2 installed.json + if (isset($packages['packages'])) { + $packages = $packages['packages']; + } + if (!is_array($packages)) { throw new \UnexpectedValueException('Could not parse package list from the repository'); } diff --git a/vendor/composer/composer/src/Composer/Repository/PlatformRepository.php b/vendor/composer/composer/src/Composer/Repository/PlatformRepository.php index 50cbb4649b..3126f860a0 100644 --- a/vendor/composer/composer/src/Composer/Repository/PlatformRepository.php +++ b/vendor/composer/composer/src/Composer/Repository/PlatformRepository.php @@ -166,8 +166,14 @@ protected function initialize() case 'imagick': $imagick = new \Imagick(); $imageMagickVersion = $imagick->getVersion(); - preg_match('/^ImageMagick ([\d.]+)-(\d+)/', $imageMagickVersion['versionString'], $matches); - $prettyVersion = "{$matches[1]}.{$matches[2]}"; + // 6.x: ImageMagick 6.2.9 08/24/06 Q16 http://www.imagemagick.org + // 7.x: ImageMagick 7.0.8-34 Q16 x86_64 2019-03-23 https://imagemagick.org + preg_match('/^ImageMagick ([\d.]+)(?:-(\d+))?/', $imageMagickVersion['versionString'], $matches); + if (isset($matches[2])) { + $prettyVersion = "{$matches[1]}.{$matches[2]}"; + } else { + $prettyVersion = $matches[1]; + } break; case 'libxml': diff --git a/vendor/composer/composer/src/Composer/Repository/Vcs/BitbucketDriver.php b/vendor/composer/composer/src/Composer/Repository/Vcs/BitbucketDriver.php index 24a4af4dd5..556ca5012e 100644 --- a/vendor/composer/composer/src/Composer/Repository/Vcs/BitbucketDriver.php +++ b/vendor/composer/composer/src/Composer/Repository/Vcs/BitbucketDriver.php @@ -124,50 +124,52 @@ public function getComposerInformation($identifier) $composer = $this->getBaseComposerInformation($identifier); - // specials for bitbucket - if (!isset($composer['support']['source'])) { - $label = array_search( - $identifier, - $this->getTags() - ) ?: array_search( - $identifier, - $this->getBranches() - ) ?: $identifier; - - if (array_key_exists($label, $tags = $this->getTags())) { - $hash = $tags[$label]; - } elseif (array_key_exists($label, $branches = $this->getBranches())) { - $hash = $branches[$label]; - } + if ($composer) { + // specials for bitbucket + if (!isset($composer['support']['source'])) { + $label = array_search( + $identifier, + $this->getTags() + ) ?: array_search( + $identifier, + $this->getBranches() + ) ?: $identifier; + + if (array_key_exists($label, $tags = $this->getTags())) { + $hash = $tags[$label]; + } elseif (array_key_exists($label, $branches = $this->getBranches())) { + $hash = $branches[$label]; + } - if (! isset($hash)) { - $composer['support']['source'] = sprintf( - 'https://%s/%s/%s/src', + if (! isset($hash)) { + $composer['support']['source'] = sprintf( + 'https://%s/%s/%s/src', + $this->originUrl, + $this->owner, + $this->repository + ); + } else { + $composer['support']['source'] = sprintf( + 'https://%s/%s/%s/src/%s/?at=%s', + $this->originUrl, + $this->owner, + $this->repository, + $hash, + $label + ); + } + } + if (!isset($composer['support']['issues']) && $this->hasIssues) { + $composer['support']['issues'] = sprintf( + 'https://%s/%s/%s/issues', $this->originUrl, $this->owner, $this->repository ); - } else { - $composer['support']['source'] = sprintf( - 'https://%s/%s/%s/src/%s/?at=%s', - $this->originUrl, - $this->owner, - $this->repository, - $hash, - $label - ); } - } - if (!isset($composer['support']['issues']) && $this->hasIssues) { - $composer['support']['issues'] = sprintf( - 'https://%s/%s/%s/issues', - $this->originUrl, - $this->owner, - $this->repository - ); - } - if (!isset($composer['homepage'])) { - $composer['homepage'] = empty($this->website) ? $this->homeUrl : $this->website; + if (!isset($composer['homepage'])) { + $composer['homepage'] = empty($this->website) ? $this->homeUrl : $this->website; + } } $this->infoCache[$identifier] = $composer; diff --git a/vendor/composer/composer/src/Composer/Repository/Vcs/GitHubDriver.php b/vendor/composer/composer/src/Composer/Repository/Vcs/GitHubDriver.php index d0b721af90..40a75b4dd5 100644 --- a/vendor/composer/composer/src/Composer/Repository/Vcs/GitHubDriver.php +++ b/vendor/composer/composer/src/Composer/Repository/Vcs/GitHubDriver.php @@ -152,8 +152,8 @@ public function getComposerInformation($identifier) } $composer = $this->getBaseComposerInformation($identifier); - if ($composer) { + if ($composer) { // specials for github if (!isset($composer['support']['source'])) { $label = array_search($identifier, $this->getTags()) ?: array_search($identifier, $this->getBranches()) ?: $identifier; diff --git a/vendor/composer/composer/src/Composer/Repository/VcsRepository.php b/vendor/composer/composer/src/Composer/Repository/VcsRepository.php index d6fb1bbee9..edd0dabf81 100644 --- a/vendor/composer/composer/src/Composer/Repository/VcsRepository.php +++ b/vendor/composer/composer/src/Composer/Repository/VcsRepository.php @@ -43,6 +43,7 @@ class VcsRepository extends ArrayRepository implements ConfigurableRepositoryInt private $driver; /** @var VersionCacheInterface */ private $versionCache; + private $emptyReferences = array(); public function __construct(array $repoConfig, IOInterface $io, Config $config, EventDispatcher $dispatcher = null, array $drivers = null, VersionCacheInterface $versionCache = null) { @@ -117,6 +118,11 @@ public function hadInvalidBranches() return $this->branchErrorOccurred; } + public function getEmptyReferences() + { + return $this->emptyReferences; + } + protected function initialize() { parent::initialize(); @@ -159,6 +165,10 @@ protected function initialize() if ($cachedPackage) { $this->addPackage($cachedPackage); + continue; + } elseif ($cachedPackage === false) { + $this->emptyReferences[] = $identifier; + continue; } @@ -174,6 +184,7 @@ protected function initialize() if ($verbose) { $this->io->writeError('Skipped tag '.$tag.', no composer file'); } + $this->emptyReferences[] = $identifier; continue; } @@ -212,6 +223,9 @@ protected function initialize() $this->addPackage($this->loader->load($this->preProcess($driver, $data, $identifier))); } catch (\Exception $e) { + if ($e instanceof TransportException && $e->getCode() === 404) { + $this->emptyReferences[] = $identifier; + } if ($verbose) { $this->io->writeError('Skipped tag '.$tag.', '.($e instanceof TransportException ? 'no composer file was found' : $e->getMessage()).''); } @@ -258,6 +272,10 @@ protected function initialize() if ($cachedPackage) { $this->addPackage($cachedPackage); + continue; + } elseif ($cachedPackage === false) { + $this->emptyReferences[] = $identifier; + continue; } @@ -266,6 +284,7 @@ protected function initialize() if ($verbose) { $this->io->writeError('Skipped branch '.$branch.', no composer file'); } + $this->emptyReferences[] = $identifier; continue; } @@ -284,6 +303,9 @@ protected function initialize() } $this->addPackage($package); } catch (TransportException $e) { + if ($e->getCode() === 404) { + $this->emptyReferences[] = $identifier; + } if ($verbose) { $this->io->writeError('Skipped branch '.$branch.', no composer file was found'); } @@ -352,6 +374,14 @@ private function getCachedPackageVersion($version, $identifier, $verbose) } $cachedPackage = $this->versionCache->getVersionPackage($version, $identifier); + if ($cachedPackage === false) { + if ($verbose) { + $this->io->writeError('Skipped '.$version.', no composer file (cached from ref '.$identifier.')'); + } + + return false; + } + if ($cachedPackage) { $msg = 'Found cached composer.json of ' . ($this->packageName ?: $this->url) . ' (' . $version . ')'; if ($verbose) { diff --git a/vendor/composer/composer/src/Composer/Repository/VersionCacheInterface.php b/vendor/composer/composer/src/Composer/Repository/VersionCacheInterface.php index db5934b59c..41d485c644 100644 --- a/vendor/composer/composer/src/Composer/Repository/VersionCacheInterface.php +++ b/vendor/composer/composer/src/Composer/Repository/VersionCacheInterface.php @@ -17,7 +17,7 @@ interface VersionCacheInterface /** * @param string $version * @param string $identifier - * @return array Package version data + * @return array|null|false Package version data if found, false to indicate the identifier is known but has no package, null for an unknown identifier */ public function getVersionPackage($version, $identifier); } diff --git a/vendor/composer/composer/src/Composer/Util/Filesystem.php b/vendor/composer/composer/src/Composer/Util/Filesystem.php index 2ebc434b7e..1903f1c8d9 100644 --- a/vendor/composer/composer/src/Composer/Util/Filesystem.php +++ b/vendor/composer/composer/src/Composer/Util/Filesystem.php @@ -199,9 +199,15 @@ public function ensureDirectoryExists($directory) */ public function unlink($path) { - if (!@$this->unlinkImplementation($path)) { + $unlinked = @$this->unlinkImplementation($path); + if (!$unlinked) { // retry after a bit on windows since it tends to be touchy with mass removals - if (!Platform::isWindows() || (usleep(350000) && !@$this->unlinkImplementation($path))) { + if (Platform::isWindows()) { + usleep(350000); + $unlinked = @$this->unlinkImplementation($path); + } + + if (!$unlinked) { $error = error_get_last(); $message = 'Could not delete '.$path.': ' . @$error['message']; if (Platform::isWindows()) { @@ -224,9 +230,15 @@ public function unlink($path) */ public function rmdir($path) { - if (!@rmdir($path)) { + $deleted = @rmdir($path); + if (!$deleted) { // retry after a bit on windows since it tends to be touchy with mass removals - if (!Platform::isWindows() || (usleep(350000) && !@rmdir($path))) { + if (Platform::isWindows()) { + usleep(350000); + $deleted = @rmdir($path); + } + + if (!$deleted) { $error = error_get_last(); $message = 'Could not delete '.$path.': ' . @$error['message']; if (Platform::isWindows()) { @@ -650,12 +662,17 @@ public function junction($target, $junction) * * We test if the path is a directory and not an ordinary link, then check * that the mode value returned from lstat (which gives the status of the - * link itself) is not a directory. + * link itself) is not a directory, by replicating the POSIX S_ISDIR test. * - * This relies on the fact that PHP does not set this value because there is - * no universal file type flag for a junction or a mount point. However a - * bug in PHP can cause a random value to be returned and this could result - * in a junction not being detected: https://bugs.php.net/bug.php?id=77552 + * This logic works because PHP does not set the mode value for a junction, + * since there is no universal file type flag for it. Unfortunately an + * uninitialized variable in PHP prior to 7.2.16 and 7.3.3 may cause a + * random value to be returned. See https://bugs.php.net/bug.php?id=77552 + * + * If this random value passes the S_ISDIR test, then a junction will not be + * detected and a recursive delete operation could lead to loss of data in + * the target directory. Note that Windows rmdir can handle this situation + * and will only delete the junction (from Windows 7 onwards). * * @param string $junction Path to check. * @return bool @@ -673,7 +690,7 @@ public function isJunction($junction) clearstatcache(true, $junction); $stat = lstat($junction); - // S_IFDIR is 0x4000, S_IFMT is the 0xF000 bitmask + // S_ISDIR test (S_IFDIR is 0x4000, S_IFMT is 0xF000 bitmask) return $stat ? 0x4000 !== ($stat['mode'] & 0xF000) : false; } @@ -692,9 +709,7 @@ public function removeJunction($junction) if (!$this->isJunction($junction)) { throw new IOException(sprintf('%s is not a junction and thus cannot be removed as one', $junction)); } - $cmd = sprintf('rmdir /S /Q %s', ProcessExecutor::escape($junction)); - clearstatcache(true, $junction); - return ($this->getProcess()->execute($cmd, $output) === 0); + return $this->rmdir($junction); } } diff --git a/vendor/composer/composer/src/Composer/Util/RemoteFilesystem.php b/vendor/composer/composer/src/Composer/Util/RemoteFilesystem.php index ea18a9e300..e1a93fcf94 100644 --- a/vendor/composer/composer/src/Composer/Util/RemoteFilesystem.php +++ b/vendor/composer/composer/src/Composer/Util/RemoteFilesystem.php @@ -13,6 +13,9 @@ namespace Composer\Util; use Composer\Config; +use Composer\Composer; +use Composer\Semver\Constraint\Constraint; +use Composer\Package\Version\VersionParser; use Composer\IO\IOInterface; use Composer\Downloader\TransportException; use Composer\CaBundle\CaBundle; @@ -324,15 +327,12 @@ protected function get($originUrl, $fileUrl, $additionalOptions = array(), $file if (!empty($http_response_header[0])) { $statusCode = $this->findStatusCode($http_response_header); + if ($statusCode >= 400 && $this->findHeaderValue($http_response_header, 'content-type') === 'application/json') { + self::outputWarnings($this->io, $originUrl, json_decode($result, true)); + } + if (in_array($statusCode, array(401, 403)) && $this->retryAuthFailure) { - $warning = null; - if ($this->findHeaderValue($http_response_header, 'content-type') === 'application/json') { - $data = json_decode($result, true); - if (!empty($data['warning'])) { - $warning = $data['warning']; - } - } - $this->promptAuthAndRetry($statusCode, $this->findStatusMessage($http_response_header), $warning, $http_response_header); + $this->promptAuthAndRetry($statusCode, $this->findStatusMessage($http_response_header), null, $http_response_header); } } @@ -741,10 +741,6 @@ protected function promptAuthAndRetry($httpStatus, $reason = null, $warning = nu throw new TransportException("Invalid credentials for '" . $this->fileUrl . "', aborting.", $httpStatus); } - $this->io->overwriteError(''); - if ($warning) { - $this->io->writeError(' '.$warning.''); - } $this->io->writeError(' Authentication required ('.parse_url($this->fileUrl, PHP_URL_HOST).'):'); $username = $this->io->ask(' Username: '); $password = $this->io->askAndHideAnswer(' Password: '); @@ -1090,4 +1086,24 @@ private function isPublicBitBucketDownload($urlToBitBucketFile) return count($pathParts) >= 4 && $pathParts[3] == 'downloads'; } + + public static function outputWarnings(IOInterface $io, $url, $data) + { + foreach (array('warning', 'info') as $type) { + if (empty($data[$type])) { + continue; + } + + if (!empty($data[$type . '-versions'])) { + $versionParser = new VersionParser(); + $constraint = $versionParser->parseConstraints($data[$type . '-versions']); + $composer = new Constraint('==', $versionParser->normalize(Composer::getVersion())); + if (!$constraint->matches($composer)) { + continue; + } + } + + $io->writeError('<'.$type.'>'.ucfirst($type).' from '.$url.': '.$data[$type].''); + } + } } diff --git a/vendor/composer/composer/src/Composer/Util/StreamContextFactory.php b/vendor/composer/composer/src/Composer/Util/StreamContextFactory.php index 8dfd6624a2..da3e578bdc 100644 --- a/vendor/composer/composer/src/Composer/Util/StreamContextFactory.php +++ b/vendor/composer/composer/src/Composer/Util/StreamContextFactory.php @@ -142,7 +142,7 @@ public static function getContext($url, array $defaultOptions = array(), array $ if (!isset($options['http']['header']) || false === stripos(implode('', $options['http']['header']), 'user-agent')) { $options['http']['header'][] = sprintf( 'User-Agent: Composer/%s (%s; %s; %s%s)', - Composer::VERSION === '@package_version@' ? 'source' : Composer::VERSION, + Composer::getVersion(), function_exists('php_uname') ? php_uname('s') : 'Unknown', function_exists('php_uname') ? php_uname('r') : 'Unknown', $phpVersion, diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index 35a3507288..6999dcd0ec 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -114,31 +114,31 @@ }, { "name": "arcanedev/log-viewer", - "version": "4.6.3", - "version_normalized": "4.6.3.0", + "version": "4.7.2", + "version_normalized": "4.7.2.0", "source": { "type": "git", "url": "https://github.com/ARCANEDEV/LogViewer.git", - "reference": "bc5ff72393bbadbb10aca7d5862b0cc542d8d0df" + "reference": "9ae1d23f67d5d1c7490c69636b34303457fb0af3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ARCANEDEV/LogViewer/zipball/bc5ff72393bbadbb10aca7d5862b0cc542d8d0df", - "reference": "bc5ff72393bbadbb10aca7d5862b0cc542d8d0df", + "url": "https://api.github.com/repos/ARCANEDEV/LogViewer/zipball/9ae1d23f67d5d1c7490c69636b34303457fb0af3", + "reference": "9ae1d23f67d5d1c7490c69636b34303457fb0af3", "shasum": "" }, "require": { - "arcanedev/support": "~4.4.0", + "arcanedev/support": "~4.5.0", "php": ">=7.1.3", "psr/log": "~1.0" }, "require-dev": { "mockery/mockery": "~1.0", - "orchestra/testbench": "~3.7.0", - "phpunit/phpcov": "~5.0", - "phpunit/phpunit": "~7.0" + "orchestra/testbench": "~3.8.0", + "phpunit/phpcov": "~5.0|~6.0", + "phpunit/phpunit": "~7.0|~8.0" }, - "time": "2018-12-04T09:25:29+00:00", + "time": "2019-04-13T10:01:41+00:00", "type": "library", "extra": { "laravel": { @@ -183,30 +183,30 @@ }, { "name": "arcanedev/support", - "version": "4.4.0", - "version_normalized": "4.4.0.0", + "version": "4.5.0", + "version_normalized": "4.5.0.0", "source": { "type": "git", "url": "https://github.com/ARCANEDEV/Support.git", - "reference": "9f4d9947563c6bec10ea7fa7954129e012216af9" + "reference": "2bb6e901404a12caa440520676b6507569d20715" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ARCANEDEV/Support/zipball/9f4d9947563c6bec10ea7fa7954129e012216af9", - "reference": "9f4d9947563c6bec10ea7fa7954129e012216af9", + "url": "https://api.github.com/repos/ARCANEDEV/Support/zipball/2bb6e901404a12caa440520676b6507569d20715", + "reference": "2bb6e901404a12caa440520676b6507569d20715", "shasum": "" }, "require": { - "illuminate/filesystem": "~5.7.0", - "illuminate/support": "~5.7.0", + "illuminate/filesystem": "~5.8.0", + "illuminate/support": "~5.8.0", "php": ">=7.1.3" }, "require-dev": { - "orchestra/testbench": "~3.7.0", - "phpunit/phpcov": "~5.0", - "phpunit/phpunit": "~7.0" + "orchestra/testbench": "~3.8.0", + "phpunit/phpcov": "~5.0|~6.0", + "phpunit/phpunit": "~7.0|~8.0" }, - "time": "2018-09-04T17:19:43+00:00", + "time": "2019-02-27T18:33:30+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -238,124 +238,6 @@ "support" ] }, - { - "name": "asm89/stack-cors", - "version": "1.2.0", - "version_normalized": "1.2.0.0", - "source": { - "type": "git", - "url": "https://github.com/asm89/stack-cors.git", - "reference": "c163e2b614550aedcf71165db2473d936abbced6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/c163e2b614550aedcf71165db2473d936abbced6", - "reference": "c163e2b614550aedcf71165db2473d936abbced6", - "shasum": "" - }, - "require": { - "php": ">=5.5.9", - "symfony/http-foundation": "~2.7|~3.0|~4.0", - "symfony/http-kernel": "~2.7|~3.0|~4.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.0 || ^4.8.10", - "squizlabs/php_codesniffer": "^2.3" - }, - "time": "2017-12-20T14:37:45+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Asm89\\Stack\\": "src/Asm89/Stack/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander", - "email": "iam.asm89@gmail.com" - } - ], - "description": "Cross-origin resource sharing library and stack middleware", - "homepage": "https://github.com/asm89/stack-cors", - "keywords": [ - "cors", - "stack" - ] - }, - { - "name": "barryvdh/laravel-cors", - "version": "v0.11.3", - "version_normalized": "0.11.3.0", - "source": { - "type": "git", - "url": "https://github.com/barryvdh/laravel-cors.git", - "reference": "c95ac944f2f20a17949aae6645692dfd3b402bca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-cors/zipball/c95ac944f2f20a17949aae6645692dfd3b402bca", - "reference": "c95ac944f2f20a17949aae6645692dfd3b402bca", - "shasum": "" - }, - "require": { - "asm89/stack-cors": "^1.2", - "illuminate/support": "5.5.x|5.6.x|5.7.x|5.8.x", - "php": ">=7", - "symfony/http-foundation": "^3.1|^4", - "symfony/http-kernel": "^3.1|^4" - }, - "require-dev": { - "laravel/framework": "^5.5", - "orchestra/testbench": "3.3.x|3.4.x|3.5.x|3.6.x|3.7.x", - "phpunit/phpunit": "^4.8|^5.2|^7.0", - "squizlabs/php_codesniffer": "^2.3" - }, - "time": "2019-02-26T18:08:30+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "0.11-dev" - }, - "laravel": { - "providers": [ - "Barryvdh\\Cors\\ServiceProvider" - ] - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Barryvdh\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", - "keywords": [ - "api", - "cors", - "crossdomain", - "laravel" - ] - }, { "name": "barryvdh/laravel-dompdf", "version": "v0.8.4", @@ -416,17 +298,17 @@ }, { "name": "barryvdh/laravel-ide-helper", - "version": "v2.6.0", - "version_normalized": "2.6.0.0", + "version": "v2.6.2", + "version_normalized": "2.6.2.0", "source": { "type": "git", "url": "https://github.com/barryvdh/laravel-ide-helper.git", - "reference": "754bb4d075d7fb2b23b1a416802c0e45884df495" + "reference": "39c148ad4273f5b8c49d0a363ddbc0462f1f2eec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/754bb4d075d7fb2b23b1a416802c0e45884df495", - "reference": "754bb4d075d7fb2b23b1a416802c0e45884df495", + "url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/39c148ad4273f5b8c49d0a363ddbc0462f1f2eec", + "reference": "39c148ad4273f5b8c49d0a363ddbc0462f1f2eec", "shasum": "" }, "require": { @@ -449,7 +331,7 @@ "suggest": { "doctrine/dbal": "Load information from the database about models for phpdocs (~2.3)" }, - "time": "2019-02-18T19:54:27+00:00", + "time": "2019-03-26T10:38:22+00:00", "type": "library", "extra": { "branch-alias": { @@ -724,124 +606,6 @@ "tracking" ] }, - { - "name": "chumper/datatable", - "version": "dev-develop", - "version_normalized": "dev-develop", - "source": { - "type": "git", - "url": "https://github.com/Chumper/Datatable.git", - "reference": "ba97a393454a3e9d9f3e66452a7b0da5cb02a2fd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Chumper/Datatable/zipball/ba97a393454a3e9d9f3e66452a7b0da5cb02a2fd", - "reference": "ba97a393454a3e9d9f3e66452a7b0da5cb02a2fd", - "shasum": "" - }, - "require": { - "illuminate/config": "~5.0", - "illuminate/support": "~5.0", - "illuminate/view": "~5.0", - "php": ">=5.3.0" - }, - "require-dev": { - "mockery/mockery": "dev-master", - "orchestra/testbench": "3.1.*", - "phpunit/phpunit": "3.7.*" - }, - "time": "2017-01-26T10:04:06+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-0": { - "Chumper\\Datatable": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nils Plaschke", - "email": "github@nilsplaschke.de", - "homepage": "http://nilsplaschke.de", - "role": "Developer" - } - ], - "description": "This is a laravel 4 package for the server and client side of datatablaes at http://datatables.net/", - "homepage": "http://github.com/Chumper/datatable", - "keywords": [ - "ajax", - "datatables", - "jquery", - "laravel" - ], - "abandoned": "OpenSkill/Datatable" - }, - { - "name": "chumper/zipper", - "version": "v1.0.2", - "version_normalized": "1.0.2.0", - "source": { - "type": "git", - "url": "https://github.com/Chumper/Zipper.git", - "reference": "6a1733c34d67c3952b8439afb36ad4ea5c3ceacb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Chumper/Zipper/zipball/6a1733c34d67c3952b8439afb36ad4ea5c3ceacb", - "reference": "6a1733c34d67c3952b8439afb36ad4ea5c3ceacb", - "shasum": "" - }, - "require": { - "illuminate/filesystem": "^5.0", - "illuminate/support": "^5.0", - "php": ">=5.6.0" - }, - "require-dev": { - "mockery/mockery": "^0.9.4", - "phpunit/phpunit": "^5.7" - }, - "time": "2017-07-17T08:05:10+00:00", - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Chumper\\Zipper\\ZipperServiceProvider" - ], - "aliases": { - "Zipper": "Chumper\\Zipper\\Zipper" - } - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Chumper\\Zipper\\": "src/Chumper/Zipper" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache2" - ], - "authors": [ - { - "name": "Nils Plaschke", - "email": "github@nilsplaschke.de", - "homepage": "http://nilsplaschke.de", - "role": "Developer" - } - ], - "description": "This is a little neat helper for the ZipArchive methods with handy functions", - "homepage": "http://github.com/Chumper/zipper", - "keywords": [ - "archive", - "laravel", - "zip" - ] - }, { "name": "composer/ca-bundle", "version": "1.1.4", @@ -902,17 +666,17 @@ }, { "name": "composer/composer", - "version": "1.8.4", - "version_normalized": "1.8.4.0", + "version": "1.8.5", + "version_normalized": "1.8.5.0", "source": { "type": "git", "url": "https://github.com/composer/composer.git", - "reference": "bc364c2480c17941e2135cfc568fa41794392534" + "reference": "949b116f9e7d98d8d276594fed74b580d125c0e6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/composer/zipball/bc364c2480c17941e2135cfc568fa41794392534", - "reference": "bc364c2480c17941e2135cfc568fa41794392534", + "url": "https://api.github.com/repos/composer/composer/zipball/949b116f9e7d98d8d276594fed74b580d125c0e6", + "reference": "949b116f9e7d98d8d276594fed74b580d125c0e6", "shasum": "" }, "require": { @@ -942,7 +706,7 @@ "ext-zip": "Enabling the zip extension allows you to unzip archives", "ext-zlib": "Allow gzip compression of HTTP requests" }, - "time": "2019-02-11T09:52:10+00:00", + "time": "2019-04-09T15:46:48+00:00", "bin": [ "bin/composer" ], @@ -984,17 +748,17 @@ }, { "name": "composer/semver", - "version": "1.4.2", - "version_normalized": "1.4.2.0", + "version": "1.5.0", + "version_normalized": "1.5.0.0", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "c7cb9a2095a074d131b65a8a0cd294479d785573" + "reference": "46d9139568ccb8d9e7cdd4539cab7347568a5e2e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/c7cb9a2095a074d131b65a8a0cd294479d785573", - "reference": "c7cb9a2095a074d131b65a8a0cd294479d785573", + "url": "https://api.github.com/repos/composer/semver/zipball/46d9139568ccb8d9e7cdd4539cab7347568a5e2e", + "reference": "46d9139568ccb8d9e7cdd4539cab7347568a5e2e", "shasum": "" }, "require": { @@ -1004,7 +768,7 @@ "phpunit/phpunit": "^4.5 || ^5.0.5", "phpunit/phpunit-mock-objects": "2.3.0 || ^3.0" }, - "time": "2016-08-30T16:08:34+00:00", + "time": "2019-03-19T17:25:45+00:00", "type": "library", "extra": { "branch-alias": { @@ -1048,27 +812,26 @@ }, { "name": "composer/spdx-licenses", - "version": "1.5.0", - "version_normalized": "1.5.0.0", + "version": "1.5.1", + "version_normalized": "1.5.1.0", "source": { "type": "git", "url": "https://github.com/composer/spdx-licenses.git", - "reference": "7a9556b22bd9d4df7cad89876b00af58ef20d3a2" + "reference": "a1aa51cf3ab838b83b0867b14e56fc20fbd55b3d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/7a9556b22bd9d4df7cad89876b00af58ef20d3a2", - "reference": "7a9556b22bd9d4df7cad89876b00af58ef20d3a2", + "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/a1aa51cf3ab838b83b0867b14e56fc20fbd55b3d", + "reference": "a1aa51cf3ab838b83b0867b14e56fc20fbd55b3d", "shasum": "" }, "require": { - "php": "^5.3.2 || ^7.0" + "php": "^5.3.2 || ^7.0 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5", - "phpunit/phpunit-mock-objects": "2.3.0 || ^3.0" + "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 7" }, - "time": "2018-11-01T09:45:54+00:00", + "time": "2019-03-26T10:23:26+00:00", "type": "library", "extra": { "branch-alias": { @@ -1162,18 +925,18 @@ "source": { "type": "git", "url": "https://github.com/darryldecode/laravelshoppingcart.git", - "reference": "edc43ab6be165f1f9d9f6339946885c284d7c309" + "reference": "6b172fa2852b2e85307160743f9310b76d97710b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/darryldecode/laravelshoppingcart/zipball/edc43ab6be165f1f9d9f6339946885c284d7c309", - "reference": "edc43ab6be165f1f9d9f6339946885c284d7c309", + "url": "https://api.github.com/repos/darryldecode/laravelshoppingcart/zipball/6b172fa2852b2e85307160743f9310b76d97710b", + "reference": "6b172fa2852b2e85307160743f9310b76d97710b", "shasum": "" }, "require": { - "illuminate/support": "5.0.*|5.1.*|5.2.*|5.3.*|5.4.*|5.5.*|5.6.*|5.7.*", - "illuminate/translation": "5.0.*|5.1.*|5.2.*|5.3.*|5.4.*|5.5.*|5.6.*|5.7.*", - "illuminate/validation": "5.0.*|5.1.*|5.2.*|5.3.*|5.4.*|5.5.*|5.6.*|5.7.*", + "illuminate/support": "5.0.*|5.1.*|5.2.*|5.3.*|5.4.*|5.5.*|5.6.*|5.7.*|5.8.*", + "illuminate/translation": "5.0.*|5.1.*|5.2.*|5.3.*|5.4.*|5.5.*|5.6.*|5.7.*|5.8.*", + "illuminate/validation": "5.0.*|5.1.*|5.2.*|5.3.*|5.4.*|5.5.*|5.6.*|5.7.*|5.8.*", "php": ">=5.4.0" }, "require-dev": { @@ -1181,7 +944,7 @@ "phpunit/phpunit": "^5.0", "symfony/var-dumper": "2.7.*@dev" }, - "time": "2019-02-08T15:58:52+00:00", + "time": "2019-03-03T14:08:24+00:00", "type": "library", "extra": { "laravel": { @@ -1218,28 +981,29 @@ }, { "name": "devio/pipedrive", - "version": "2.0.3", - "version_normalized": "2.0.3.0", + "version": "2.1.0", + "version_normalized": "2.1.0.0", "source": { "type": "git", "url": "https://github.com/IsraelOrtuno/pipedrive.git", - "reference": "a2b2217aebecf2c1fc6db7cbcbb0c93582bade5c" + "reference": "3f04135e21333e842b2d5100e1e7211e582f08ff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/IsraelOrtuno/pipedrive/zipball/a2b2217aebecf2c1fc6db7cbcbb0c93582bade5c", - "reference": "a2b2217aebecf2c1fc6db7cbcbb0c93582bade5c", + "url": "https://api.github.com/repos/IsraelOrtuno/pipedrive/zipball/3f04135e21333e842b2d5100e1e7211e582f08ff", + "reference": "3f04135e21333e842b2d5100e1e7211e582f08ff", "shasum": "" }, "require": { "guzzlehttp/guzzle": "~6.0|~5.0|~4.0", - "illuminate/support": "~4.0|~5.0" + "illuminate/support": "~4.0|~5.0", + "laravel/helpers": "^1.0" }, "require-dev": { "phpspec/phpspec": "^2.4", "symfony/var-dumper": "^2.7" }, - "time": "2018-11-12T20:16:22+00:00", + "time": "2019-03-08T09:57:25+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -1608,30 +1372,32 @@ }, { "name": "doctrine/instantiator", - "version": "1.1.0", - "version_normalized": "1.1.0.0", + "version": "1.2.0", + "version_normalized": "1.2.0.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda" + "reference": "a2c590166b2133a4633738648b6b064edae0814a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", - "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/a2c590166b2133a4633738648b6b064edae0814a", + "reference": "a2c590166b2133a4633738648b6b064edae0814a", "shasum": "" }, "require": { "php": "^7.1" }, "require-dev": { - "athletic/athletic": "~0.1.8", + "doctrine/coding-standard": "^6.0", "ext-pdo": "*", "ext-phar": "*", - "phpunit/phpunit": "^6.2.3", - "squizlabs/php_codesniffer": "^3.0.2" + "phpbench/phpbench": "^0.13", + "phpstan/phpstan-phpunit": "^0.11", + "phpstan/phpstan-shim": "^0.11", + "phpunit/phpunit": "^7.0" }, - "time": "2017-07-22T11:58:36+00:00", + "time": "2019-03-17T17:37:11+00:00", "type": "library", "extra": { "branch-alias": { @@ -1656,7 +1422,7 @@ } ], "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://github.com/doctrine/instantiator", + "homepage": "https://www.doctrine-project.org/projects/instantiator.html", "keywords": [ "constructor", "instantiate" @@ -1788,27 +1554,32 @@ }, { "name": "dragonmantank/cron-expression", - "version": "v2.2.0", - "version_normalized": "2.2.0.0", + "version": "v2.3.0", + "version_normalized": "2.3.0.0", "source": { "type": "git", "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "92a2c3768d50e21a1f26a53cb795ce72806266c5" + "reference": "72b6fbf76adb3cf5bc0db68559b33d41219aba27" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/92a2c3768d50e21a1f26a53cb795ce72806266c5", - "reference": "92a2c3768d50e21a1f26a53cb795ce72806266c5", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/72b6fbf76adb3cf5bc0db68559b33d41219aba27", + "reference": "72b6fbf76adb3cf5bc0db68559b33d41219aba27", "shasum": "" }, "require": { - "php": ">=7.0.0" + "php": "^7.0" }, "require-dev": { - "phpunit/phpunit": "~6.4" + "phpunit/phpunit": "^6.4|^7.0" }, - "time": "2018-06-06T03:12:17+00:00", + "time": "2019-03-31T00:38:28+00:00", "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.3-dev" + } + }, "installation-source": "dist", "autoload": { "psr-4": { @@ -1898,17 +1669,17 @@ }, { "name": "erusev/parsedown", - "version": "1.7.1", - "version_normalized": "1.7.1.0", + "version": "1.7.3", + "version_normalized": "1.7.3.0", "source": { "type": "git", "url": "https://github.com/erusev/parsedown.git", - "reference": "92e9c27ba0e74b8b028b111d1b6f956a15c01fc1" + "reference": "6d893938171a817f4e9bc9e86f2da1e370b7bcd7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/erusev/parsedown/zipball/92e9c27ba0e74b8b028b111d1b6f956a15c01fc1", - "reference": "92e9c27ba0e74b8b028b111d1b6f956a15c01fc1", + "url": "https://api.github.com/repos/erusev/parsedown/zipball/6d893938171a817f4e9bc9e86f2da1e370b7bcd7", + "reference": "6d893938171a817f4e9bc9e86f2da1e370b7bcd7", "shasum": "" }, "require": { @@ -1918,7 +1689,7 @@ "require-dev": { "phpunit/phpunit": "^4.8.35" }, - "time": "2018-03-08T01:11:30+00:00", + "time": "2019-03-17T18:48:37+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -2567,46 +2338,46 @@ }, { "name": "laravel/framework", - "version": "v5.7.28", - "version_normalized": "5.7.28.0", + "version": "v5.8.15", + "version_normalized": "5.8.15.0", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "8e69728f1c80a024588adbd24c65c4fcf9aa9192" + "reference": "8a34004aed6ff0aa4072360e3e5bd875edebc223" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/8e69728f1c80a024588adbd24c65c4fcf9aa9192", - "reference": "8e69728f1c80a024588adbd24c65c4fcf9aa9192", + "url": "https://api.github.com/repos/laravel/framework/zipball/8a34004aed6ff0aa4072360e3e5bd875edebc223", + "reference": "8a34004aed6ff0aa4072360e3e5bd875edebc223", "shasum": "" }, "require": { "doctrine/inflector": "^1.1", "dragonmantank/cron-expression": "^2.0", + "egulias/email-validator": "^2.0", "erusev/parsedown": "^1.7", + "ext-json": "*", "ext-mbstring": "*", "ext-openssl": "*", - "laravel/nexmo-notification-channel": "^1.0", - "laravel/slack-notification-channel": "^1.0", "league/flysystem": "^1.0.8", "monolog/monolog": "^1.12", - "nesbot/carbon": "^1.26.3", + "nesbot/carbon": "^1.26.3 || ^2.0", "opis/closure": "^3.1", "php": "^7.1.3", "psr/container": "^1.0", "psr/simple-cache": "^1.0", "ramsey/uuid": "^3.7", "swiftmailer/swiftmailer": "^6.0", - "symfony/console": "^4.1", - "symfony/debug": "^4.1", - "symfony/finder": "^4.1", - "symfony/http-foundation": "^4.1", - "symfony/http-kernel": "^4.1", - "symfony/process": "^4.1", - "symfony/routing": "^4.1", - "symfony/var-dumper": "^4.1", + "symfony/console": "^4.2", + "symfony/debug": "^4.2", + "symfony/finder": "^4.2", + "symfony/http-foundation": "^4.2", + "symfony/http-kernel": "^4.2", + "symfony/process": "^4.2", + "symfony/routing": "^4.2", + "symfony/var-dumper": "^4.2", "tijsverkoyen/css-to-inline-styles": "^2.2.1", - "vlucas/phpdotenv": "^2.2" + "vlucas/phpdotenv": "^3.3" }, "conflict": { "tightenco/collect": "<5.5.33" @@ -2649,12 +2420,12 @@ "league/flysystem-cached-adapter": "^1.0", "mockery/mockery": "^1.0", "moontoast/math": "^1.1", - "orchestra/testbench-core": "3.7.*", - "pda/pheanstalk": "^3.0|^4.0", - "phpunit/phpunit": "^7.5", + "orchestra/testbench-core": "3.8.*", + "pda/pheanstalk": "^4.0", + "phpunit/phpunit": "^7.5|^8.0", "predis/predis": "^1.1.1", - "symfony/css-selector": "^4.1", - "symfony/dom-crawler": "^4.1", + "symfony/css-selector": "^4.2", + "symfony/dom-crawler": "^4.2", "true/punycode": "^2.1" }, "suggest": { @@ -2672,18 +2443,19 @@ "league/flysystem-sftp": "Required to use the Flysystem SFTP driver (^1.0).", "moontoast/math": "Required to use ordered UUIDs (^1.1).", "nexmo/client": "Required to use the Nexmo transport (^1.0).", - "pda/pheanstalk": "Required to use the beanstalk queue driver (^3.0|^4.0).", + "pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).", "predis/predis": "Required to use the redis cache and queue drivers (^1.0).", "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^3.0).", - "symfony/css-selector": "Required to use some of the crawler integration testing tools (^4.1).", - "symfony/dom-crawler": "Required to use most of the crawler integration testing tools (^4.1).", - "symfony/psr-http-message-bridge": "Required to psr7 bridging features (^1.0)." + "symfony/css-selector": "Required to use some of the crawler integration testing tools (^4.2).", + "symfony/dom-crawler": "Required to use most of the crawler integration testing tools (^4.2).", + "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^1.1).", + "wildbit/swiftmailer-postmark": "Required to use Postmark mail driver (^3.0)." }, - "time": "2019-02-26T15:41:34+00:00", + "time": "2019-04-30T14:05:03+00:00", "type": "library", "extra": { "branch-alias": { - "dev-master": "5.7-dev" + "dev-master": "5.8-dev" } }, "installation-source": "dist", @@ -2714,46 +2486,39 @@ ] }, { - "name": "laravel/nexmo-notification-channel", + "name": "laravel/helpers", "version": "v1.0.1", "version_normalized": "1.0.1.0", "source": { "type": "git", - "url": "https://github.com/laravel/nexmo-notification-channel.git", - "reference": "03edd42a55b306ff980c9950899d5a2b03260d48" + "url": "https://github.com/laravel/helpers.git", + "reference": "7f47ef43aaa76335d74e604fd2fc57a0e6f5a59f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/nexmo-notification-channel/zipball/03edd42a55b306ff980c9950899d5a2b03260d48", - "reference": "03edd42a55b306ff980c9950899d5a2b03260d48", + "url": "https://api.github.com/repos/laravel/helpers/zipball/7f47ef43aaa76335d74e604fd2fc57a0e6f5a59f", + "reference": "7f47ef43aaa76335d74e604fd2fc57a0e6f5a59f", "shasum": "" }, "require": { - "nexmo/client": "^1.0", - "php": "^7.1.3" + "illuminate/support": "~5.8.0|~5.9.0", + "php": ">=7.1.3" }, "require-dev": { - "illuminate/notifications": "~5.7", - "mockery/mockery": "^1.0", "phpunit/phpunit": "^7.0" }, - "time": "2018-12-04T12:57:08+00:00", + "time": "2019-04-18T21:20:57+00:00", "type": "library", "extra": { "branch-alias": { "dev-master": "1.0-dev" - }, - "laravel": { - "providers": [ - "Illuminate\\Notifications\\NexmoChannelServiceProvider" - ] } }, "installation-source": "dist", "autoload": { - "psr-4": { - "Illuminate\\Notifications\\": "src/" - } + "files": [ + "src/helpers.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2763,72 +2528,16 @@ { "name": "Taylor Otwell", "email": "taylor@laravel.com" - } - ], - "description": "Nexmo Notification Channel for laravel.", - "keywords": [ - "laravel", - "nexmo", - "notifications" - ] - }, - { - "name": "laravel/slack-notification-channel", - "version": "v1.0.3", - "version_normalized": "1.0.3.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/slack-notification-channel.git", - "reference": "6e164293b754a95f246faf50ab2bbea3e4923cc9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/slack-notification-channel/zipball/6e164293b754a95f246faf50ab2bbea3e4923cc9", - "reference": "6e164293b754a95f246faf50ab2bbea3e4923cc9", - "shasum": "" - }, - "require": { - "guzzlehttp/guzzle": "^6.0", - "php": "^7.1.3" - }, - "require-dev": { - "illuminate/notifications": "~5.7", - "mockery/mockery": "^1.0", - "phpunit/phpunit": "^7.0" - }, - "time": "2018-12-12T13:12:06+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" }, - "laravel": { - "providers": [ - "Illuminate\\Notifications\\SlackChannelServiceProvider" - ] - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Illuminate\\Notifications\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" + "name": "Dries Vints", + "email": "dries.vints@gmail.com" } ], - "description": "Slack Notification Channel for laravel.", + "description": "Provides backwards compatibility for helpers in the latest Laravel release.", "keywords": [ - "laravel", - "notifications", - "slack" + "helpers", + "laravel" ] }, { @@ -2898,37 +2607,37 @@ }, { "name": "laravelcollective/html", - "version": "v5.7.1", - "version_normalized": "5.7.1.0", + "version": "v5.8.0", + "version_normalized": "5.8.0.0", "source": { "type": "git", "url": "https://github.com/LaravelCollective/html.git", - "reference": "777b6d390811ba249255ed5750bf17a019cd88a5" + "reference": "0e360143d3476fe4141d267a260c140569fa207b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/LaravelCollective/html/zipball/777b6d390811ba249255ed5750bf17a019cd88a5", - "reference": "777b6d390811ba249255ed5750bf17a019cd88a5", + "url": "https://api.github.com/repos/LaravelCollective/html/zipball/0e360143d3476fe4141d267a260c140569fa207b", + "reference": "0e360143d3476fe4141d267a260c140569fa207b", "shasum": "" }, "require": { - "illuminate/http": "5.7.*", - "illuminate/routing": "5.7.*", - "illuminate/session": "5.7.*", - "illuminate/support": "5.7.*", - "illuminate/view": "5.7.*", + "illuminate/http": "5.8.*", + "illuminate/routing": "5.8.*", + "illuminate/session": "5.8.*", + "illuminate/support": "5.8.*", + "illuminate/view": "5.8.*", "php": ">=7.1.3" }, "require-dev": { - "illuminate/database": "5.7.*", + "illuminate/database": "5.8.*", "mockery/mockery": "~1.0", "phpunit/phpunit": "~7.1" }, - "time": "2018-09-05T18:32:53+00:00", + "time": "2019-03-01T22:53:41+00:00", "type": "library", "extra": { "branch-alias": { - "dev-master": "5.7-dev" + "dev-master": "5.8-dev" }, "laravel": { "providers": [ @@ -2966,79 +2675,19 @@ "description": "HTML and Form Builders for the Laravel Framework", "homepage": "https://laravelcollective.com" }, - { - "name": "lcobucci/jwt", - "version": "3.2.5", - "version_normalized": "3.2.5.0", - "source": { - "type": "git", - "url": "https://github.com/lcobucci/jwt.git", - "reference": "82be04b4753f8b7693b62852b7eab30f97524f9b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/lcobucci/jwt/zipball/82be04b4753f8b7693b62852b7eab30f97524f9b", - "reference": "82be04b4753f8b7693b62852b7eab30f97524f9b", - "shasum": "" - }, - "require": { - "ext-openssl": "*", - "php": ">=5.5" - }, - "require-dev": { - "mdanter/ecc": "~0.3.1", - "mikey179/vfsstream": "~1.5", - "phpmd/phpmd": "~2.2", - "phpunit/php-invoker": "~1.1", - "phpunit/phpunit": "~4.5", - "squizlabs/php_codesniffer": "~2.3" - }, - "suggest": { - "mdanter/ecc": "Required to use Elliptic Curves based algorithms." - }, - "time": "2018-11-11T12:22:26+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Lcobucci\\JWT\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Luís Otávio Cobucci Oblonczyk", - "email": "lcobucci@gmail.com", - "role": "Developer" - } - ], - "description": "A simple library to work with JSON Web Token and JSON Web Signature", - "keywords": [ - "JWS", - "jwt" - ] - }, { "name": "league/commonmark", - "version": "0.18.1", - "version_normalized": "0.18.1.0", + "version": "0.18.5", + "version_normalized": "0.18.5.0", "source": { "type": "git", "url": "https://github.com/thephpleague/commonmark.git", - "reference": "e5029f74ba39e043ce4b3ca6c05dc719d8aafd94" + "reference": "f94e18d68260f43a7d846279cad88405854b1306" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/e5029f74ba39e043ce4b3ca6c05dc719d8aafd94", - "reference": "e5029f74ba39e043ce4b3ca6c05dc719d8aafd94", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/f94e18d68260f43a7d846279cad88405854b1306", + "reference": "f94e18d68260f43a7d846279cad88405854b1306", "shasum": "" }, "require": { @@ -3054,14 +2703,14 @@ "erusev/parsedown": "~1.0", "michelf/php-markdown": "~1.4", "mikehaertl/php-shellcommand": "^1.2", - "phpunit/phpunit": "^5.7|^6.5", + "phpunit/phpunit": "^5.7.27|^6.5.14", "scrutinizer/ocular": "^1.1", "symfony/finder": "^3.0|^4.0" }, "suggest": { "league/commonmark-extras": "Library of useful extensions including smart punctuation" }, - "time": "2018-12-30T01:55:29+00:00", + "time": "2019-03-28T13:52:31+00:00", "bin": [ "bin/commonmark" ], @@ -3099,17 +2748,17 @@ }, { "name": "league/flysystem", - "version": "1.0.50", - "version_normalized": "1.0.50.0", + "version": "1.0.51", + "version_normalized": "1.0.51.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "dab4e7624efa543a943be978008f439c333f2249" + "reference": "755ba7bf3fb9031e6581d091db84d78275874396" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/dab4e7624efa543a943be978008f439c333f2249", - "reference": "dab4e7624efa543a943be978008f439c333f2249", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/755ba7bf3fb9031e6581d091db84d78275874396", + "reference": "755ba7bf3fb9031e6581d091db84d78275874396", "shasum": "" }, "require": { @@ -3139,7 +2788,7 @@ "spatie/flysystem-dropbox": "Allows you to use Dropbox storage", "srmklive/flysystem-dropbox-v2": "Allows you to use Dropbox storage for PHP 5 applications" }, - "time": "2019-02-01T08:50:36+00:00", + "time": "2019-03-30T13:22:34+00:00", "type": "library", "extra": { "branch-alias": { @@ -3251,17 +2900,17 @@ }, { "name": "maatwebsite/excel", - "version": "3.1.8", - "version_normalized": "3.1.8.0", + "version": "3.1.12", + "version_normalized": "3.1.12.0", "source": { "type": "git", "url": "https://github.com/Maatwebsite/Laravel-Excel.git", - "reference": "a0ff818c141c34c05a27578de8c00953efc2005e" + "reference": "e1816f793c6abd33e3858ecb3b056da9a7dd5d73" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Maatwebsite/Laravel-Excel/zipball/a0ff818c141c34c05a27578de8c00953efc2005e", - "reference": "a0ff818c141c34c05a27578de8c00953efc2005e", + "url": "https://api.github.com/repos/Maatwebsite/Laravel-Excel/zipball/e1816f793c6abd33e3858ecb3b056da9a7dd5d73", + "reference": "e1816f793c6abd33e3858ecb3b056da9a7dd5d73", "shasum": "" }, "require": { @@ -3278,7 +2927,7 @@ "phpunit/phpunit": "^8.0", "predis/predis": "^1.1" }, - "time": "2019-02-26T16:00:52+00:00", + "time": "2019-04-17T17:22:54+00:00", "type": "library", "extra": { "laravel": { @@ -3741,71 +3390,19 @@ "psr-3" ] }, - { - "name": "mustangostang/spyc", - "version": "0.6.2", - "version_normalized": "0.6.2.0", - "source": { - "type": "git", - "url": "https://github.com/mustangostang/spyc.git", - "reference": "23c35ae854d835f2d7bcc3e3ad743d7e57a8c14d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mustangostang/spyc/zipball/23c35ae854d835f2d7bcc3e3ad743d7e57a8c14d", - "reference": "23c35ae854d835f2d7bcc3e3ad743d7e57a8c14d", - "shasum": "" - }, - "require": { - "php": ">=5.3.1" - }, - "require-dev": { - "phpunit/phpunit": "4.3.*@dev" - }, - "time": "2017-02-24T16:06:33+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "0.5.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "Spyc.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "mustangostang", - "email": "vlad.andersen@gmail.com" - } - ], - "description": "A simple YAML loader/dumper class for PHP", - "homepage": "https://github.com/mustangostang/spyc/", - "keywords": [ - "spyc", - "yaml", - "yml" - ] - }, { "name": "myclabs/deep-copy", - "version": "1.8.1", - "version_normalized": "1.8.1.0", + "version": "1.9.1", + "version_normalized": "1.9.1.0", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8" + "reference": "e6828efaba2c9b79f4499dae1d66ef8bfa7b2b72" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", - "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/e6828efaba2c9b79f4499dae1d66ef8bfa7b2b72", + "reference": "e6828efaba2c9b79f4499dae1d66ef8bfa7b2b72", "shasum": "" }, "require": { @@ -3819,7 +3416,7 @@ "doctrine/common": "^2.6", "phpunit/phpunit": "^7.1" }, - "time": "2018-06-11T23:09:50+00:00", + "time": "2019-04-07T13:18:21+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -3845,31 +3442,33 @@ }, { "name": "nesbot/carbon", - "version": "1.36.2", - "version_normalized": "1.36.2.0", + "version": "2.17.1", + "version_normalized": "2.17.1.0", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "cd324b98bc30290f233dd0e75e6ce49f7ab2a6c9" + "reference": "96acbc0c03782e8115156dd4dd8b736267155066" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/cd324b98bc30290f233dd0e75e6ce49f7ab2a6c9", - "reference": "cd324b98bc30290f233dd0e75e6ce49f7ab2a6c9", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/96acbc0c03782e8115156dd4dd8b736267155066", + "reference": "96acbc0c03782e8115156dd4dd8b736267155066", "shasum": "" }, "require": { - "php": ">=5.3.9", - "symfony/translation": "~2.6 || ~3.0 || ~4.0" + "ext-json": "*", + "php": "^7.1.8 || ^8.0", + "symfony/translation": "^3.4 || ^4.0" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7" - }, - "suggest": { - "friendsofphp/php-cs-fixer": "Needed for the `composer phpcs` command. Allow to automatically fix code style.", - "phpstan/phpstan": "Needed for the `composer phpstan` command. Allow to detect potential errors." + "friendsofphp/php-cs-fixer": "^2.14 || ^3.0", + "kylekatarnls/multi-tester": "^1.1", + "phpmd/phpmd": "^2.6", + "phpstan/phpstan": "^0.11", + "phpunit/phpunit": "^7.5 || ^8.0", + "squizlabs/php_codesniffer": "^3.4" }, - "time": "2018-12-28T10:07:33+00:00", + "time": "2019-04-27T18:04:27+00:00", "type": "library", "extra": { "laravel": { @@ -3881,7 +3480,7 @@ "installation-source": "dist", "autoload": { "psr-4": { - "": "src/" + "Carbon\\": "src/Carbon/" } }, "notification-url": "https://packagist.org/downloads/", @@ -3903,56 +3502,6 @@ "time" ] }, - { - "name": "nexmo/client", - "version": "1.6.2", - "version_normalized": "1.6.2.0", - "source": { - "type": "git", - "url": "https://github.com/Nexmo/nexmo-php.git", - "reference": "2f79f67f24225ea627ee14578e98c96276cdd4c5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Nexmo/nexmo-php/zipball/2f79f67f24225ea627ee14578e98c96276cdd4c5", - "reference": "2f79f67f24225ea627ee14578e98c96276cdd4c5", - "shasum": "" - }, - "require": { - "lcobucci/jwt": "^3.2", - "php": ">=5.6", - "php-http/client-implementation": "^1.0", - "php-http/guzzle6-adapter": "^1.0", - "zendframework/zend-diactoros": "^1.3" - }, - "require-dev": { - "estahn/phpunit-json-assertions": "^1.0.0", - "php-http/mock-client": "^0.3.0", - "phpunit/phpunit": "^5.7", - "squizlabs/php_codesniffer": "^3.1" - }, - "time": "2019-02-07T11:14:34+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Nexmo\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Tim Lytle", - "email": "tim@nexmo.com", - "homepage": "http://twitter.com/tjlytle", - "role": "Developer" - } - ], - "description": "PHP Client for using Nexmo's API." - }, { "name": "nikic/php-parser", "version": "v4.2.1", @@ -4008,17 +3557,17 @@ }, { "name": "opis/closure", - "version": "3.1.6", - "version_normalized": "3.1.6.0", + "version": "3.2.0", + "version_normalized": "3.2.0.0", "source": { "type": "git", "url": "https://github.com/opis/closure.git", - "reference": "ccb8e3928c5c8181c76cdd0ed9366c5bcaafd91b" + "reference": "09b4389715a7eec100176ea58286649181753508" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/opis/closure/zipball/ccb8e3928c5c8181c76cdd0ed9366c5bcaafd91b", - "reference": "ccb8e3928c5c8181c76cdd0ed9366c5bcaafd91b", + "url": "https://api.github.com/repos/opis/closure/zipball/09b4389715a7eec100176ea58286649181753508", + "reference": "09b4389715a7eec100176ea58286649181753508", "shasum": "" }, "require": { @@ -4028,11 +3577,11 @@ "jeremeamia/superclosure": "^2.0", "phpunit/phpunit": "^4.0|^5.0|^6.0|^7.0" }, - "time": "2019-02-22T10:30:00+00:00", + "time": "2019-05-05T12:50:25+00:00", "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1.x-dev" + "dev-master": "3.2.x-dev" } }, "installation-source": "dist", @@ -4377,248 +3926,76 @@ "homepage": "https://github.com/PhenX/php-font-lib" }, { - "name": "phenx/php-svg-lib", - "version": "v0.3.2", - "version_normalized": "0.3.2.0", - "source": { - "type": "git", - "url": "https://github.com/PhenX/php-svg-lib.git", - "reference": "ccc46ef6340d4b8a4a68047e68d8501ea961442c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PhenX/php-svg-lib/zipball/ccc46ef6340d4b8a4a68047e68d8501ea961442c", - "reference": "ccc46ef6340d4b8a4a68047e68d8501ea961442c", - "shasum": "" - }, - "require": { - "sabberworm/php-css-parser": "8.1.*" - }, - "require-dev": { - "phpunit/phpunit": "~5.0" - }, - "time": "2018-06-03T10:10:03+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-0": { - "Svg\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-3.0" - ], - "authors": [ - { - "name": "Fabien Ménager", - "email": "fabien.menager@gmail.com" - } - ], - "description": "A library to read, parse and export to PDF SVG files.", - "homepage": "https://github.com/PhenX/php-svg-lib" - }, - { - "name": "php-http/guzzle6-adapter", - "version": "v1.1.1", - "version_normalized": "1.1.1.0", - "source": { - "type": "git", - "url": "https://github.com/php-http/guzzle6-adapter.git", - "reference": "a56941f9dc6110409cfcddc91546ee97039277ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/guzzle6-adapter/zipball/a56941f9dc6110409cfcddc91546ee97039277ab", - "reference": "a56941f9dc6110409cfcddc91546ee97039277ab", - "shasum": "" - }, - "require": { - "guzzlehttp/guzzle": "^6.0", - "php": ">=5.5.0", - "php-http/httplug": "^1.0" - }, - "provide": { - "php-http/async-client-implementation": "1.0", - "php-http/client-implementation": "1.0" - }, - "require-dev": { - "ext-curl": "*", - "php-http/adapter-integration-tests": "^0.4" - }, - "time": "2016-05-10T06:13:32+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Http\\Adapter\\Guzzle6\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - }, - { - "name": "David de Boer", - "email": "david@ddeboer.nl" - } - ], - "description": "Guzzle 6 HTTP Adapter", - "homepage": "http://httplug.io", - "keywords": [ - "Guzzle", - "http" - ] - }, - { - "name": "php-http/httplug", - "version": "v1.1.0", - "version_normalized": "1.1.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-http/httplug.git", - "reference": "1c6381726c18579c4ca2ef1ec1498fdae8bdf018" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/httplug/zipball/1c6381726c18579c4ca2ef1ec1498fdae8bdf018", - "reference": "1c6381726c18579c4ca2ef1ec1498fdae8bdf018", - "shasum": "" - }, - "require": { - "php": ">=5.4", - "php-http/promise": "^1.0", - "psr/http-message": "^1.0" - }, - "require-dev": { - "henrikbjorn/phpspec-code-coverage": "^1.0", - "phpspec/phpspec": "^2.4" - }, - "time": "2016-08-31T08:30:17+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Http\\Client\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Eric GELOEN", - "email": "geloen.eric@gmail.com" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - } - ], - "description": "HTTPlug, the HTTP client abstraction for PHP", - "homepage": "http://httplug.io", - "keywords": [ - "client", - "http" - ] - }, - { - "name": "php-http/promise", - "version": "v1.0.0", - "version_normalized": "1.0.0.0", + "name": "phenx/php-svg-lib", + "version": "v0.3.2", + "version_normalized": "0.3.2.0", "source": { "type": "git", - "url": "https://github.com/php-http/promise.git", - "reference": "dc494cdc9d7160b9a09bd5573272195242ce7980" + "url": "https://github.com/PhenX/php-svg-lib.git", + "reference": "ccc46ef6340d4b8a4a68047e68d8501ea961442c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/promise/zipball/dc494cdc9d7160b9a09bd5573272195242ce7980", - "reference": "dc494cdc9d7160b9a09bd5573272195242ce7980", + "url": "https://api.github.com/repos/PhenX/php-svg-lib/zipball/ccc46ef6340d4b8a4a68047e68d8501ea961442c", + "reference": "ccc46ef6340d4b8a4a68047e68d8501ea961442c", "shasum": "" }, + "require": { + "sabberworm/php-css-parser": "8.1.*" + }, "require-dev": { - "henrikbjorn/phpspec-code-coverage": "^1.0", - "phpspec/phpspec": "^2.4" + "phpunit/phpunit": "~5.0" }, - "time": "2016-01-26T13:27:02+00:00", + "time": "2018-06-03T10:10:03+00:00", "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, "installation-source": "dist", "autoload": { - "psr-4": { - "Http\\Promise\\": "src/" + "psr-0": { + "Svg\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "LGPL-3.0" ], "authors": [ { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - }, - { - "name": "Joel Wurtz", - "email": "joel.wurtz@gmail.com" + "name": "Fabien Ménager", + "email": "fabien.menager@gmail.com" } ], - "description": "Promise used for asynchronous HTTP requests", - "homepage": "http://httplug.io", - "keywords": [ - "promise" - ] + "description": "A library to read, parse and export to PDF SVG files.", + "homepage": "https://github.com/PhenX/php-svg-lib" }, { "name": "php-mock/php-mock", - "version": "2.0.0", - "version_normalized": "2.0.0.0", + "version": "2.1.1", + "version_normalized": "2.1.1.0", "source": { "type": "git", "url": "https://github.com/php-mock/php-mock.git", - "reference": "22d297231118e6fd5b9db087fbe1ef866c2b95d2" + "reference": "e2eea560cb01502148ca895221f0b58806c5a4df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-mock/php-mock/zipball/22d297231118e6fd5b9db087fbe1ef866c2b95d2", - "reference": "22d297231118e6fd5b9db087fbe1ef866c2b95d2", + "url": "https://api.github.com/repos/php-mock/php-mock/zipball/e2eea560cb01502148ca895221f0b58806c5a4df", + "reference": "e2eea560cb01502148ca895221f0b58806c5a4df", "shasum": "" }, "require": { - "php": ">=5.6", + "php": "^5.6 || ^7.0", "phpunit/php-text-template": "^1" }, "replace": { "malkusch/php-mock": "*" }, "require-dev": { - "phpunit/phpunit": "^5.7" + "phpunit/phpunit": "^5.7 || ^6.5 || ^7.5 || ^8.0" }, "suggest": { "php-mock/php-mock-phpunit": "Allows integration into PHPUnit testcase with the trait PHPMock." }, - "time": "2017-02-17T20:52:52+00:00", + "time": "2019-04-05T22:15:19+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -4627,7 +4004,10 @@ "classes/", "tests/" ] - } + }, + "files": [ + "autoload.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4711,17 +4091,17 @@ }, { "name": "phpdocumentor/reflection-docblock", - "version": "4.3.0", - "version_normalized": "4.3.0.0", + "version": "4.3.1", + "version_normalized": "4.3.1.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "94fd0001232e47129dd3504189fa1c7225010d08" + "reference": "bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08", - "reference": "94fd0001232e47129dd3504189fa1c7225010d08", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c", + "reference": "bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c", "shasum": "" }, "require": { @@ -4735,7 +4115,7 @@ "mockery/mockery": "^1.0", "phpunit/phpunit": "^6.4" }, - "time": "2017-11-30T07:14:17+00:00", + "time": "2019-04-30T17:48:53+00:00", "type": "library", "extra": { "branch-alias": { @@ -4972,6 +4352,58 @@ "xlsx" ] }, + { + "name": "phpoption/phpoption", + "version": "1.5.0", + "version_normalized": "1.5.0.0", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "94e644f7d2051a5f0fcf77d81605f152eecff0ed" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/94e644f7d2051a5f0fcf77d81605f152eecff0ed", + "reference": "94e644f7d2051a5f0fcf77d81605f152eecff0ed", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "4.7.*" + }, + "time": "2015-07-25T16:39:46+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-0": { + "PhpOption\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache2" + ], + "authors": [ + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Option Type for PHP", + "keywords": [ + "language", + "option", + "php", + "type" + ] + }, { "name": "phpspec/prophecy", "version": "1.8.0", @@ -5301,17 +4733,17 @@ }, { "name": "phpunit/phpunit", - "version": "7.5.6", - "version_normalized": "7.5.6.0", + "version": "7.5.9", + "version_normalized": "7.5.9.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "09c85e14994df92e5ff1f5ec0b481bdb7d3d3df9" + "reference": "134669cf0eeac3f79bc7f0c793efbc158bffc160" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/09c85e14994df92e5ff1f5ec0b481bdb7d3d3df9", - "reference": "09c85e14994df92e5ff1f5ec0b481bdb7d3d3df9", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/134669cf0eeac3f79bc7f0c793efbc158bffc160", + "reference": "134669cf0eeac3f79bc7f0c793efbc158bffc160", "shasum": "" }, "require": { @@ -5329,7 +4761,7 @@ "phpunit/php-code-coverage": "^6.0.7", "phpunit/php-file-iterator": "^2.0.1", "phpunit/php-text-template": "^1.2.1", - "phpunit/php-timer": "^2.0", + "phpunit/php-timer": "^2.1", "sebastian/comparator": "^3.0", "sebastian/diff": "^3.0", "sebastian/environment": "^4.0", @@ -5350,7 +4782,7 @@ "ext-xdebug": "*", "phpunit/php-invoker": "^2.0" }, - "time": "2019-02-18T09:24:50+00:00", + "time": "2019-04-19T15:50:46+00:00", "bin": [ "phpunit" ], @@ -5437,33 +4869,33 @@ }, { "name": "pion/laravel-chunk-upload", - "version": "v1.2.8", - "version_normalized": "1.2.8.0", + "version": "v1.2.9", + "version_normalized": "1.2.9.0", "source": { "type": "git", "url": "https://github.com/pionl/laravel-chunk-upload.git", - "reference": "f556e3e7b94001b7fc76f9688a080b864c908cf6" + "reference": "074b2f97a5730d9c5d109232e5e4123eef04813b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pionl/laravel-chunk-upload/zipball/f556e3e7b94001b7fc76f9688a080b864c908cf6", - "reference": "f556e3e7b94001b7fc76f9688a080b864c908cf6", + "url": "https://api.github.com/repos/pionl/laravel-chunk-upload/zipball/074b2f97a5730d9c5d109232e5e4123eef04813b", + "reference": "074b2f97a5730d9c5d109232e5e4123eef04813b", "shasum": "" }, "require": { - "illuminate/console": "5.1.* || 5.2.* || 5.3.* || 5.4.* || 5.5.* || 5.6.* || 5.7.*", - "illuminate/filesystem": "5.1.* || 5.2.* || 5.3.* || 5.4.* || 5.5.* || 5.6.* || 5.7.*", - "illuminate/http": "5.1.* || 5.2.* || 5.3.* || 5.4.* || 5.5.* || 5.6.* || 5.7.*", - "illuminate/support": "5.1.* || 5.2.* || 5.3.* || 5.4.* || 5.5.* || 5.6.* || 5.7.*" + "illuminate/console": "5.1 - 5.8", + "illuminate/filesystem": "5.1 - 5.8", + "illuminate/http": "5.1 - 5.8", + "illuminate/support": "5.1 - 5.8" }, "require-dev": { "friendsofphp/php-cs-fixer": "^2.12", - "laravel/laravel": "5.1.* || 5.2.* || 5.3.* || 5.4.* || 5.5.* || 5.6.* || 5.7.*", + "laravel/laravel": "5.1 - 5.8", "mockery/mockery": "^1.1.0", "overtrue/phplint": "^1.1", - "phpunit/phpunit": "5.7 || 6.0 || 7.0" + "phpunit/phpunit": "5.7 || 6.0 || 7.0 || 7.5" }, - "time": "2018-09-11T09:26:38+00:00", + "time": "2019-03-05T12:38:40+00:00", "type": "library", "extra": { "laravel": { @@ -5490,63 +4922,6 @@ ], "description": "Service for chunked upload with several js providers" }, - { - "name": "piwik/device-detector", - "version": "3.11.5", - "version_normalized": "3.11.5.0", - "source": { - "type": "git", - "url": "https://github.com/matomo-org/device-detector.git", - "reference": "cce3213e9b42deaacd21d33c02811c59b6e54099" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/matomo-org/device-detector/zipball/cce3213e9b42deaacd21d33c02811c59b6e54099", - "reference": "cce3213e9b42deaacd21d33c02811c59b6e54099", - "shasum": "" - }, - "require": { - "mustangostang/spyc": "*", - "php": ">=5.3.2" - }, - "require-dev": { - "fabpot/php-cs-fixer": "~1.7", - "matthiasmullie/scrapbook": "@stable", - "phpunit/phpunit": "^4.8.36", - "psr/cache": "^1.0", - "psr/simple-cache": "^1.0" - }, - "suggest": { - "doctrine/cache": "Can directly be used for caching purpose", - "ext-yaml": "Necessary for using the Pecl YAML parser" - }, - "time": "2019-02-10T21:21:01+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "DeviceDetector\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-3.0-or-later" - ], - "authors": [ - { - "name": "The Matomo Team", - "email": "hello@matomo.org", - "homepage": "https://matomo.org/team/" - } - ], - "description": "The Universal Device Detection library, that parses User Agents and detects devices (desktop, tablet, mobile, tv, cars, console, etc.), clients (browsers, media players, mobile apps, feed readers, libraries, etc), operating systems, devices, brands and models.", - "homepage": "https://matomo.org", - "keywords": [ - "devicedetection", - "parser", - "useragent" - ] - }, { "name": "psr/container", "version": "1.0.0", @@ -6332,17 +5707,17 @@ }, { "name": "sebastian/environment", - "version": "4.1.0", - "version_normalized": "4.1.0.0", + "version": "4.2.2", + "version_normalized": "4.2.2.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "6fda8ce1974b62b14935adc02a9ed38252eca656" + "reference": "f2a2c8e1c97c11ace607a7a667d73d47c19fe404" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/6fda8ce1974b62b14935adc02a9ed38252eca656", - "reference": "6fda8ce1974b62b14935adc02a9ed38252eca656", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/f2a2c8e1c97c11ace607a7a667d73d47c19fe404", + "reference": "f2a2c8e1c97c11ace607a7a667d73d47c19fe404", "shasum": "" }, "require": { @@ -6354,11 +5729,11 @@ "suggest": { "ext-posix": "*" }, - "time": "2019-02-01T05:27:49+00:00", + "time": "2019-05-05T09:05:15+00:00", "type": "library", "extra": { "branch-alias": { - "dev-master": "4.1-dev" + "dev-master": "4.2-dev" } }, "installation-source": "dist", @@ -6896,31 +6271,33 @@ }, { "name": "spatie/laravel-activitylog", - "version": "2.8.4", - "version_normalized": "2.8.4.0", + "version": "3.5.0", + "version_normalized": "3.5.0.0", "source": { "type": "git", "url": "https://github.com/spatie/laravel-activitylog.git", - "reference": "28f481486706d22255879965f4f57b7562d13c3b" + "reference": "3bee85adf8e19e3bc0cafab56599a442014a9169" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-activitylog/zipball/28f481486706d22255879965f4f57b7562d13c3b", - "reference": "28f481486706d22255879965f4f57b7562d13c3b", + "url": "https://api.github.com/repos/spatie/laravel-activitylog/zipball/3bee85adf8e19e3bc0cafab56599a442014a9169", + "reference": "3bee85adf8e19e3bc0cafab56599a442014a9169", "shasum": "" }, "require": { - "illuminate/config": "~5.5.0|~5.6.0|~5.7.0", - "illuminate/database": "~5.5.0|~5.6.0|~5.7.0", - "illuminate/support": "~5.5.0|~5.6.0|~5.7.0", - "php": "^7.0", + "illuminate/config": "~5.8.0", + "illuminate/database": "~5.8.0", + "illuminate/support": "~5.8.0", + "php": "^7.2", "spatie/string": "^2.1" }, "require-dev": { - "orchestra/testbench": "~3.5.0|~3.6.0|~3.7.0", - "phpunit/phpunit": "^6.2|^7.0" + "ext-json": "*", + "orchestra/testbench": "~3.8.0", + "phpunit/phpunit": "^7.5|^8.0", + "scrutinizer/ocular": "^1.5" }, - "time": "2018-09-23T12:00:26+00:00", + "time": "2019-04-15T11:01:50+00:00", "type": "library", "extra": { "laravel": { @@ -7076,36 +6453,39 @@ }, { "name": "swiftmailer/swiftmailer", - "version": "v6.1.3", - "version_normalized": "6.1.3.0", + "version": "v6.2.1", + "version_normalized": "6.2.1.0", "source": { "type": "git", "url": "https://github.com/swiftmailer/swiftmailer.git", - "reference": "8ddcb66ac10c392d3beb54829eef8ac1438595f4" + "reference": "5397cd05b0a0f7937c47b0adcb4c60e5ab936b6a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/8ddcb66ac10c392d3beb54829eef8ac1438595f4", - "reference": "8ddcb66ac10c392d3beb54829eef8ac1438595f4", + "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/5397cd05b0a0f7937c47b0adcb4c60e5ab936b6a", + "reference": "5397cd05b0a0f7937c47b0adcb4c60e5ab936b6a", "shasum": "" }, "require": { "egulias/email-validator": "~2.0", - "php": ">=7.0.0" + "php": ">=7.0.0", + "symfony/polyfill-iconv": "^1.0", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0" }, "require-dev": { "mockery/mockery": "~0.9.1", - "symfony/phpunit-bridge": "~3.3@dev" + "symfony/phpunit-bridge": "^3.4.19|^4.1.8" }, "suggest": { "ext-intl": "Needed to support internationalized email addresses", "true/punycode": "Needed to support internationalized email addresses, if ext-intl is not installed" }, - "time": "2018-09-11T07:12:52+00:00", + "time": "2019-04-21T09:21:45+00:00", "type": "library", "extra": { "branch-alias": { - "dev-master": "6.1-dev" + "dev-master": "6.2-dev" } }, "installation-source": "dist", @@ -7137,17 +6517,17 @@ }, { "name": "symfony/console", - "version": "v4.2.3", - "version_normalized": "4.2.3.0", + "version": "v4.2.8", + "version_normalized": "4.2.8.0", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "1f0ad51dfde4da8a6070f06adc58b4e37cbb37a4" + "reference": "e2840bb38bddad7a0feaf85931e38fdcffdb2f81" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/1f0ad51dfde4da8a6070f06adc58b4e37cbb37a4", - "reference": "1f0ad51dfde4da8a6070f06adc58b4e37cbb37a4", + "url": "https://api.github.com/repos/symfony/console/zipball/e2840bb38bddad7a0feaf85931e38fdcffdb2f81", + "reference": "e2840bb38bddad7a0feaf85931e38fdcffdb2f81", "shasum": "" }, "require": { @@ -7176,7 +6556,7 @@ "symfony/lock": "", "symfony/process": "" }, - "time": "2019-01-25T14:35:16+00:00", + "time": "2019-04-08T14:23:48+00:00", "type": "library", "extra": { "branch-alias": { @@ -7281,8 +6661,8 @@ }, { "name": "symfony/css-selector", - "version": "v4.2.3", - "version_normalized": "4.2.3.0", + "version": "v4.2.8", + "version_normalized": "4.2.8.0", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", @@ -7336,17 +6716,17 @@ }, { "name": "symfony/debug", - "version": "v4.2.3", - "version_normalized": "4.2.3.0", + "version": "v4.2.8", + "version_normalized": "4.2.8.0", "source": { "type": "git", "url": "https://github.com/symfony/debug.git", - "reference": "cf9b2e33f757deb884ce474e06d2647c1c769b65" + "reference": "2d279b6bb1d582dd5740d4d3251ae8c18812ed37" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/cf9b2e33f757deb884ce474e06d2647c1c769b65", - "reference": "cf9b2e33f757deb884ce474e06d2647c1c769b65", + "url": "https://api.github.com/repos/symfony/debug/zipball/2d279b6bb1d582dd5740d4d3251ae8c18812ed37", + "reference": "2d279b6bb1d582dd5740d4d3251ae8c18812ed37", "shasum": "" }, "require": { @@ -7359,7 +6739,7 @@ "require-dev": { "symfony/http-kernel": "~3.4|~4.0" }, - "time": "2019-01-25T14:35:16+00:00", + "time": "2019-04-11T11:27:41+00:00", "type": "library", "extra": { "branch-alias": { @@ -7394,17 +6774,17 @@ }, { "name": "symfony/event-dispatcher", - "version": "v4.2.3", - "version_normalized": "4.2.3.0", + "version": "v4.2.8", + "version_normalized": "4.2.8.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "bd09ad265cd50b2b9d09d65ce6aba2d29bc81fe1" + "reference": "fbce53cd74ac509cbe74b6f227622650ab759b02" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/bd09ad265cd50b2b9d09d65ce6aba2d29bc81fe1", - "reference": "bd09ad265cd50b2b9d09d65ce6aba2d29bc81fe1", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/fbce53cd74ac509cbe74b6f227622650ab759b02", + "reference": "fbce53cd74ac509cbe74b6f227622650ab759b02", "shasum": "" }, "require": { @@ -7425,7 +6805,7 @@ "symfony/dependency-injection": "", "symfony/http-kernel": "" }, - "time": "2019-01-16T20:35:37+00:00", + "time": "2019-04-06T13:51:08+00:00", "type": "library", "extra": { "branch-alias": { @@ -7460,24 +6840,24 @@ }, { "name": "symfony/filesystem", - "version": "v4.2.3", - "version_normalized": "4.2.3.0", + "version": "v4.2.8", + "version_normalized": "4.2.8.0", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "7c16ebc2629827d4ec915a52ac809768d060a4ee" + "reference": "e16b9e471703b2c60b95f14d31c1239f68f11601" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/7c16ebc2629827d4ec915a52ac809768d060a4ee", - "reference": "7c16ebc2629827d4ec915a52ac809768d060a4ee", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/e16b9e471703b2c60b95f14d31c1239f68f11601", + "reference": "e16b9e471703b2c60b95f14d31c1239f68f11601", "shasum": "" }, "require": { "php": "^7.1.3", "symfony/polyfill-ctype": "~1.8" }, - "time": "2019-01-16T20:35:37+00:00", + "time": "2019-02-07T11:40:08+00:00", "type": "library", "extra": { "branch-alias": { @@ -7512,23 +6892,23 @@ }, { "name": "symfony/finder", - "version": "v4.2.3", - "version_normalized": "4.2.3.0", + "version": "v4.2.8", + "version_normalized": "4.2.8.0", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "ef71816cbb264988bb57fe6a73f610888b9aa70c" + "reference": "e45135658bd6c14b61850bf131c4f09a55133f69" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/ef71816cbb264988bb57fe6a73f610888b9aa70c", - "reference": "ef71816cbb264988bb57fe6a73f610888b9aa70c", + "url": "https://api.github.com/repos/symfony/finder/zipball/e45135658bd6c14b61850bf131c4f09a55133f69", + "reference": "e45135658bd6c14b61850bf131c4f09a55133f69", "shasum": "" }, "require": { "php": "^7.1.3" }, - "time": "2019-01-16T20:35:37+00:00", + "time": "2019-04-06T13:51:08+00:00", "type": "library", "extra": { "branch-alias": { @@ -7563,17 +6943,17 @@ }, { "name": "symfony/http-foundation", - "version": "v4.2.3", - "version_normalized": "4.2.3.0", + "version": "v4.2.8", + "version_normalized": "4.2.8.0", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "8d2318b73e0a1bc75baa699d00ebe2ae8b595a39" + "reference": "1ea878bd3af18f934dedb8c0de60656a9a31a718" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/8d2318b73e0a1bc75baa699d00ebe2ae8b595a39", - "reference": "8d2318b73e0a1bc75baa699d00ebe2ae8b595a39", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/1ea878bd3af18f934dedb8c0de60656a9a31a718", + "reference": "1ea878bd3af18f934dedb8c0de60656a9a31a718", "shasum": "" }, "require": { @@ -7584,7 +6964,7 @@ "predis/predis": "~1.0", "symfony/expression-language": "~3.4|~4.0" }, - "time": "2019-01-29T09:49:29+00:00", + "time": "2019-05-01T08:36:31+00:00", "type": "library", "extra": { "branch-alias": { @@ -7619,17 +6999,17 @@ }, { "name": "symfony/http-kernel", - "version": "v4.2.3", - "version_normalized": "4.2.3.0", + "version": "v4.2.8", + "version_normalized": "4.2.8.0", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "d56b1706abaa771eb6acd894c6787cb88f1dc97d" + "reference": "a7713bc522f1a1cdf0b39f809fa4542523fc3114" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/d56b1706abaa771eb6acd894c6787cb88f1dc97d", - "reference": "d56b1706abaa771eb6acd894c6787cb88f1dc97d", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/a7713bc522f1a1cdf0b39f809fa4542523fc3114", + "reference": "a7713bc522f1a1cdf0b39f809fa4542523fc3114", "shasum": "" }, "require": { @@ -7675,7 +7055,7 @@ "symfony/dependency-injection": "", "symfony/var-dumper": "" }, - "time": "2019-02-03T12:47:33+00:00", + "time": "2019-05-01T13:31:08+00:00", "type": "library", "extra": { "branch-alias": { @@ -7710,17 +7090,17 @@ }, { "name": "symfony/polyfill-ctype", - "version": "v1.10.0", - "version_normalized": "1.10.0.0", + "version": "v1.11.0", + "version_normalized": "1.11.0.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "e3d826245268269cd66f8326bd8bc066687b4a19" + "reference": "82ebae02209c21113908c229e9883c419720738a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19", - "reference": "e3d826245268269cd66f8326bd8bc066687b4a19", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/82ebae02209c21113908c229e9883c419720738a", + "reference": "82ebae02209c21113908c229e9883c419720738a", "shasum": "" }, "require": { @@ -7729,11 +7109,11 @@ "suggest": { "ext-ctype": "For best performance" }, - "time": "2018-08-06T14:22:27+00:00", + "time": "2019-02-06T07:57:58+00:00", "type": "library", "extra": { "branch-alias": { - "dev-master": "1.9-dev" + "dev-master": "1.11-dev" } }, "installation-source": "dist", @@ -7770,17 +7150,17 @@ }, { "name": "symfony/polyfill-iconv", - "version": "v1.10.0", - "version_normalized": "1.10.0.0", + "version": "v1.11.0", + "version_normalized": "1.11.0.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-iconv.git", - "reference": "97001cfc283484c9691769f51cdf25259037eba2" + "reference": "f037ea22acfaee983e271dd9c3b8bb4150bd8ad7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/97001cfc283484c9691769f51cdf25259037eba2", - "reference": "97001cfc283484c9691769f51cdf25259037eba2", + "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/f037ea22acfaee983e271dd9c3b8bb4150bd8ad7", + "reference": "f037ea22acfaee983e271dd9c3b8bb4150bd8ad7", "shasum": "" }, "require": { @@ -7789,11 +7169,11 @@ "suggest": { "ext-iconv": "For best performance" }, - "time": "2018-09-21T06:26:08+00:00", + "time": "2019-02-06T07:57:58+00:00", "type": "library", "extra": { "branch-alias": { - "dev-master": "1.9-dev" + "dev-master": "1.11-dev" } }, "installation-source": "dist", @@ -7829,19 +7209,83 @@ "shim" ] }, + { + "name": "symfony/polyfill-intl-idn", + "version": "v1.11.0", + "version_normalized": "1.11.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "c766e95bec706cdd89903b1eda8afab7d7a6b7af" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/c766e95bec706cdd89903b1eda8afab7d7a6b7af", + "reference": "c766e95bec706cdd89903b1eda8afab7d7a6b7af", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "symfony/polyfill-mbstring": "^1.3", + "symfony/polyfill-php72": "^1.9" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "time": "2019-03-04T13:44:35+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Intl\\Idn\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + }, + { + "name": "Laurent Bassin", + "email": "laurent@bassin.info" + } + ], + "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "idn", + "intl", + "polyfill", + "portable", + "shim" + ] + }, { "name": "symfony/polyfill-mbstring", - "version": "v1.10.0", - "version_normalized": "1.10.0.0", + "version": "v1.11.0", + "version_normalized": "1.11.0.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "c79c051f5b3a46be09205c73b80b346e4153e494" + "reference": "fe5e94c604826c35a32fa832f35bd036b6799609" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/c79c051f5b3a46be09205c73b80b346e4153e494", - "reference": "c79c051f5b3a46be09205c73b80b346e4153e494", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fe5e94c604826c35a32fa832f35bd036b6799609", + "reference": "fe5e94c604826c35a32fa832f35bd036b6799609", "shasum": "" }, "require": { @@ -7850,11 +7294,11 @@ "suggest": { "ext-mbstring": "For best performance" }, - "time": "2018-09-21T13:07:52+00:00", + "time": "2019-02-06T07:57:58+00:00", "type": "library", "extra": { "branch-alias": { - "dev-master": "1.9-dev" + "dev-master": "1.11-dev" } }, "installation-source": "dist", @@ -7892,27 +7336,27 @@ }, { "name": "symfony/polyfill-php72", - "version": "v1.10.0", - "version_normalized": "1.10.0.0", + "version": "v1.11.0", + "version_normalized": "1.11.0.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9050816e2ca34a8e916c3a0ae8b9c2fccf68b631" + "reference": "ab50dcf166d5f577978419edd37aa2bb8eabce0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9050816e2ca34a8e916c3a0ae8b9c2fccf68b631", - "reference": "9050816e2ca34a8e916c3a0ae8b9c2fccf68b631", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/ab50dcf166d5f577978419edd37aa2bb8eabce0c", + "reference": "ab50dcf166d5f577978419edd37aa2bb8eabce0c", "shasum": "" }, "require": { "php": ">=5.3.3" }, - "time": "2018-09-21T13:07:52+00:00", + "time": "2019-02-06T07:57:58+00:00", "type": "library", "extra": { "branch-alias": { - "dev-master": "1.9-dev" + "dev-master": "1.11-dev" } }, "installation-source": "dist", @@ -7949,23 +7393,23 @@ }, { "name": "symfony/process", - "version": "v4.2.3", - "version_normalized": "4.2.3.0", + "version": "v4.2.8", + "version_normalized": "4.2.8.0", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "6c05edb11fbeff9e2b324b4270ecb17911a8b7ad" + "reference": "8cf39fb4ccff793340c258ee7760fd40bfe745fe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/6c05edb11fbeff9e2b324b4270ecb17911a8b7ad", - "reference": "6c05edb11fbeff9e2b324b4270ecb17911a8b7ad", + "url": "https://api.github.com/repos/symfony/process/zipball/8cf39fb4ccff793340c258ee7760fd40bfe745fe", + "reference": "8cf39fb4ccff793340c258ee7760fd40bfe745fe", "shasum": "" }, "require": { "php": "^7.1.3" }, - "time": "2019-01-24T22:05:03+00:00", + "time": "2019-04-10T16:20:36+00:00", "type": "library", "extra": { "branch-alias": { @@ -8000,17 +7444,17 @@ }, { "name": "symfony/routing", - "version": "v4.2.3", - "version_normalized": "4.2.3.0", + "version": "v4.2.8", + "version_normalized": "4.2.8.0", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "7f8e44fc498972466f0841c3e48dc555f23bdf53" + "reference": "f4e43bb0dff56f0f62fa056c82d7eadcdb391bab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/7f8e44fc498972466f0841c3e48dc555f23bdf53", - "reference": "7f8e44fc498972466f0841c3e48dc555f23bdf53", + "url": "https://api.github.com/repos/symfony/routing/zipball/f4e43bb0dff56f0f62fa056c82d7eadcdb391bab", + "reference": "f4e43bb0dff56f0f62fa056c82d7eadcdb391bab", "shasum": "" }, "require": { @@ -8033,12 +7477,11 @@ "suggest": { "doctrine/annotations": "For using the annotation loader", "symfony/config": "For using the all-in-one router or any loader", - "symfony/dependency-injection": "For loading routes from a service", "symfony/expression-language": "For using expression matching", "symfony/http-foundation": "For using a Symfony Request object", "symfony/yaml": "For using the YAML loader" }, - "time": "2019-01-29T09:49:29+00:00", + "time": "2019-04-27T09:38:08+00:00", "type": "library", "extra": { "branch-alias": { @@ -8079,17 +7522,17 @@ }, { "name": "symfony/translation", - "version": "v4.2.3", - "version_normalized": "4.2.3.0", + "version": "v4.2.8", + "version_normalized": "4.2.8.0", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "23fd7aac70d99a17a8e6473a41fec8fab3331050" + "reference": "181a426dd129cb496f12d7e7555f6d0b37a7615b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/23fd7aac70d99a17a8e6473a41fec8fab3331050", - "reference": "23fd7aac70d99a17a8e6473a41fec8fab3331050", + "url": "https://api.github.com/repos/symfony/translation/zipball/181a426dd129cb496f12d7e7555f6d0b37a7615b", + "reference": "181a426dd129cb496f12d7e7555f6d0b37a7615b", "shasum": "" }, "require": { @@ -8111,7 +7554,9 @@ "symfony/console": "~3.4|~4.0", "symfony/dependency-injection": "~3.4|~4.0", "symfony/finder": "~2.8|~3.0|~4.0", + "symfony/http-kernel": "~3.4|~4.0", "symfony/intl": "~3.4|~4.0", + "symfony/var-dumper": "~3.4|~4.0", "symfony/yaml": "~3.4|~4.0" }, "suggest": { @@ -8119,7 +7564,7 @@ "symfony/config": "", "symfony/yaml": "" }, - "time": "2019-01-27T23:11:39+00:00", + "time": "2019-05-01T12:55:36+00:00", "type": "library", "extra": { "branch-alias": { @@ -8154,17 +7599,17 @@ }, { "name": "symfony/var-dumper", - "version": "v4.2.3", - "version_normalized": "4.2.3.0", + "version": "v4.2.8", + "version_normalized": "4.2.8.0", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "223bda89f9be41cf7033eeaf11bc61a280489c17" + "reference": "3c4084cb1537c0e2ad41aad622bbf55a44a5c9ce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/223bda89f9be41cf7033eeaf11bc61a280489c17", - "reference": "223bda89f9be41cf7033eeaf11bc61a280489c17", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/3c4084cb1537c0e2ad41aad622bbf55a44a5c9ce", + "reference": "3c4084cb1537c0e2ad41aad622bbf55a44a5c9ce", "shasum": "" }, "require": { @@ -8187,7 +7632,7 @@ "ext-intl": "To show region name in time zone dump", "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" }, - "time": "2019-01-30T11:44:30+00:00", + "time": "2019-05-01T12:55:36+00:00", "bin": [ "Resources/bin/var-dump-server" ], @@ -8232,17 +7677,17 @@ }, { "name": "theseer/tokenizer", - "version": "1.1.0", - "version_normalized": "1.1.0.0", + "version": "1.1.2", + "version_normalized": "1.1.2.0", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b" + "reference": "1c42705be2b6c1de5904f8afacef5895cab44bf8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/cb2f008f3f05af2893a87208fe6a6c4985483f8b", - "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/1c42705be2b6c1de5904f8afacef5895cab44bf8", + "reference": "1c42705be2b6c1de5904f8afacef5895cab44bf8", "shasum": "" }, "require": { @@ -8251,7 +7696,7 @@ "ext-xmlwriter": "*", "php": "^7.0" }, - "time": "2017-04-07T12:08:54+00:00", + "time": "2019-04-04T09:56:43+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -8586,31 +8031,32 @@ }, { "name": "vlucas/phpdotenv", - "version": "v2.6.1", - "version_normalized": "2.6.1.0", + "version": "v3.3.3", + "version_normalized": "3.3.3.0", "source": { "type": "git", "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "2a7dcf7e3e02dc5e701004e51a6f304b713107d5" + "reference": "dbcc609971dd9b55f48b8008b553d79fd372ddde" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/2a7dcf7e3e02dc5e701004e51a6f304b713107d5", - "reference": "2a7dcf7e3e02dc5e701004e51a6f304b713107d5", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/dbcc609971dd9b55f48b8008b553d79fd372ddde", + "reference": "dbcc609971dd9b55f48b8008b553d79fd372ddde", "shasum": "" }, "require": { - "php": ">=5.3.9", + "php": "^5.4 || ^7.0", + "phpoption/phpoption": "^1.5", "symfony/polyfill-ctype": "^1.9" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.0" + "phpunit/phpunit": "^4.8.35 || ^5.0 || ^6.0" }, - "time": "2019-01-29T11:11:52+00:00", + "time": "2019-03-06T09:39:45+00:00", "type": "library", "extra": { "branch-alias": { - "dev-master": "2.6-dev" + "dev-master": "3.3-dev" } }, "installation-source": "dist", @@ -8637,66 +8083,6 @@ "environment" ] }, - { - "name": "voerro/laravel-visitor-tracker", - "version": "v1.2.2", - "version_normalized": "1.2.2.0", - "source": { - "type": "git", - "url": "https://github.com/voerro/laravel-visitor-tracker.git", - "reference": "895bdddeb11fca43220be52cf964ce011a0aad3c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/voerro/laravel-visitor-tracker/zipball/895bdddeb11fca43220be52cf964ce011a0aad3c", - "reference": "895bdddeb11fca43220be52cf964ce011a0aad3c", - "shasum": "" - }, - "require": { - "guzzlehttp/guzzle": "~6.0", - "illuminate/bus": "5.5.* | 5.6.* | 5.7.*", - "illuminate/contracts": "5.5.* | 5.6.* | 5.7.*", - "illuminate/database": "5.5.* | 5.6.* | 5.7.*", - "illuminate/http": "5.5.* | 5.6.* | 5.7.*", - "illuminate/queue": "5.5.* | 5.6.* | 5.7.*", - "illuminate/support": "5.5.* | 5.6.* | 5.7.*", - "php": ">=7.0", - "piwik/device-detector": "^3.9" - }, - "require-dev": { - "orchestra/testbench": "^3.5", - "phpunit/phpunit": "^6.5 | ^7.0" - }, - "time": "2018-11-21T07:16:59+00:00", - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Voerro\\Laravel\\VisitorTracker\\VisitorTrackerServiceProvider" - ], - "aliases": { - "VisitStats": "Voerro\\Laravel\\VisitorTracker\\Facades\\VisitStats" - } - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Voerro\\Laravel\\VisitorTracker\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander Zavyalov", - "email": "alex@voerro.com" - } - ], - "description": "Visitor tracker and statistics for Laravel 5" - }, { "name": "webmozart/assert", "version": "1.4.0", @@ -8930,29 +8316,29 @@ }, { "name": "yajra/laravel-datatables-fractal", - "version": "v1.3.0", - "version_normalized": "1.3.0.0", + "version": "v1.4.0", + "version_normalized": "1.4.0.0", "source": { "type": "git", "url": "https://github.com/yajra/laravel-datatables-fractal.git", - "reference": "79d9e2c6c358b65b18ca392a1063c1a4631b4700" + "reference": "796c5f49527900032886dc02864e5aa88e5a99bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/yajra/laravel-datatables-fractal/zipball/79d9e2c6c358b65b18ca392a1063c1a4631b4700", - "reference": "79d9e2c6c358b65b18ca392a1063c1a4631b4700", + "url": "https://api.github.com/repos/yajra/laravel-datatables-fractal/zipball/796c5f49527900032886dc02864e5aa88e5a99bf", + "reference": "796c5f49527900032886dc02864e5aa88e5a99bf", "shasum": "" }, "require": { "league/fractal": "^0.17.0", "php": ">=7.0", - "yajra/laravel-datatables-oracle": "8.*" + "yajra/laravel-datatables-oracle": "8.*|9.*" }, "require-dev": { "mockery/mockery": "0.9.*", "phpunit/phpunit": "~6.0" }, - "time": "2018-11-15T01:09:11+00:00", + "time": "2019-03-05T01:33:25+00:00", "type": "library", "extra": { "branch-alias": { @@ -8990,17 +8376,17 @@ }, { "name": "yajra/laravel-datatables-html", - "version": "v4.4.0", - "version_normalized": "4.4.0.0", + "version": "v4.4.1", + "version_normalized": "4.4.1.0", "source": { "type": "git", "url": "https://github.com/yajra/laravel-datatables-html.git", - "reference": "b0fc95da58ea989732634f0d686671d9cf531c01" + "reference": "80f340f6b659bed6f0fa19bc26ce9474ab663d17" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/yajra/laravel-datatables-html/zipball/b0fc95da58ea989732634f0d686671d9cf531c01", - "reference": "b0fc95da58ea989732634f0d686671d9cf531c01", + "url": "https://api.github.com/repos/yajra/laravel-datatables-html/zipball/80f340f6b659bed6f0fa19bc26ce9474ab663d17", + "reference": "80f340f6b659bed6f0fa19bc26ce9474ab663d17", "shasum": "" }, "require": { @@ -9013,7 +8399,7 @@ "mockery/mockery": "0.9.*", "phpunit/phpunit": "~6.0" }, - "time": "2019-02-27T03:22:43+00:00", + "time": "2019-04-25T02:26:26+00:00", "type": "library", "extra": { "branch-alias": { @@ -9052,29 +8438,29 @@ }, { "name": "yajra/laravel-datatables-oracle", - "version": "v8.13.5", - "version_normalized": "8.13.5.0", + "version": "v9.1.1", + "version_normalized": "9.1.1.0", "source": { "type": "git", "url": "https://github.com/yajra/laravel-datatables.git", - "reference": "a97a173a52f2b60075f310dac39932faa377fb4f" + "reference": "1fc2ca80b867441a6717b15684f78a3670427c94" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/yajra/laravel-datatables/zipball/a97a173a52f2b60075f310dac39932faa377fb4f", - "reference": "a97a173a52f2b60075f310dac39932faa377fb4f", + "url": "https://api.github.com/repos/yajra/laravel-datatables/zipball/1fc2ca80b867441a6717b15684f78a3670427c94", + "reference": "1fc2ca80b867441a6717b15684f78a3670427c94", "shasum": "" }, "require": { - "illuminate/database": "5.4.*|5.5.*|5.6.*|5.7.*", - "illuminate/filesystem": "5.4.*|5.5.*|5.6.*|5.7.*", - "illuminate/http": "5.4.*|5.5.*|5.6.*|5.7.*", - "illuminate/support": "5.4.*|5.5.*|5.6.*|5.7.*", - "illuminate/view": "5.4.*|5.5.*|5.6.*|5.7.*", - "php": ">=7.0" + "illuminate/database": "5.8.*", + "illuminate/filesystem": "5.8.*", + "illuminate/http": "5.8.*", + "illuminate/support": "5.8.*", + "illuminate/view": "5.8.*", + "php": "^7.1.3" }, "require-dev": { - "orchestra/testbench": "~3.5" + "orchestra/testbench": "^3.8" }, "suggest": { "yajra/laravel-datatables-buttons": "Plugin for server-side exporting of dataTables.", @@ -9082,11 +8468,11 @@ "yajra/laravel-datatables-fractal": "Plugin for server-side response using Fractal.", "yajra/laravel-datatables-html": "Plugin for server-side HTML builder of dataTables." }, - "time": "2019-02-13T01:34:34+00:00", + "time": "2019-04-26T08:38:28+00:00", "type": "library", "extra": { "branch-alias": { - "dev-master": "8.0-dev" + "dev-master": "9.0-dev" }, "laravel": { "providers": [ @@ -9122,71 +8508,5 @@ "jquery", "laravel" ] - }, - { - "name": "zendframework/zend-diactoros", - "version": "1.8.6", - "version_normalized": "1.8.6.0", - "source": { - "type": "git", - "url": "https://github.com/zendframework/zend-diactoros.git", - "reference": "20da13beba0dde8fb648be3cc19765732790f46e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-diactoros/zipball/20da13beba0dde8fb648be3cc19765732790f46e", - "reference": "20da13beba0dde8fb648be3cc19765732790f46e", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0", - "psr/http-message": "^1.0" - }, - "provide": { - "psr/http-message-implementation": "1.0" - }, - "require-dev": { - "ext-dom": "*", - "ext-libxml": "*", - "php-http/psr7-integration-tests": "dev-master", - "phpunit/phpunit": "^5.7.16 || ^6.0.8 || ^7.2.7", - "zendframework/zend-coding-standard": "~1.0" - }, - "time": "2018-09-05T19:29:37+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8.x-dev", - "dev-develop": "1.9.x-dev", - "dev-release-2.0": "2.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "src/functions/create_uploaded_file.php", - "src/functions/marshal_headers_from_sapi.php", - "src/functions/marshal_method_from_sapi.php", - "src/functions/marshal_protocol_version_from_sapi.php", - "src/functions/marshal_uri_from_sapi.php", - "src/functions/normalize_server.php", - "src/functions/normalize_uploaded_files.php", - "src/functions/parse_cookie_header.php" - ], - "psr-4": { - "Zend\\Diactoros\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-2-Clause" - ], - "description": "PSR HTTP Message implementations", - "homepage": "https://github.com/zendframework/zend-diactoros", - "keywords": [ - "http", - "psr", - "psr-7" - ] } ] diff --git a/vendor/composer/semver/CHANGELOG.md b/vendor/composer/semver/CHANGELOG.md index febedc9738..e5009d7b62 100644 --- a/vendor/composer/semver/CHANGELOG.md +++ b/vendor/composer/semver/CHANGELOG.md @@ -3,6 +3,11 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). +### [1.5.0] 2019-03-19 + + * Added: some support for date versions (e.g. 201903) in `~` operator + * Fixed: support for stabilities in `~` operator was inconsistent + ### [1.4.2] 2016-08-30 * Fixed: collapsing of complex constraints lead to buggy constraints @@ -57,6 +62,7 @@ This project adheres to [Semantic Versioning](http://semver.org/). - Namespace: `Composer\Test\Package\LinkConstraint` -> `Composer\Test\Semver\Constraint` * Changed: code style using php-cs-fixer. +[1.4.2]: https://github.com/composer/semver/compare/1.4.1...1.4.2 [1.4.1]: https://github.com/composer/semver/compare/1.4.0...1.4.1 [1.4.0]: https://github.com/composer/semver/compare/1.3.0...1.4.0 [1.3.0]: https://github.com/composer/semver/compare/1.2.0...1.3.0 diff --git a/vendor/composer/semver/src/Constraint/AbstractConstraint.php b/vendor/composer/semver/src/Constraint/AbstractConstraint.php index be83f750be..7b5270fa35 100644 --- a/vendor/composer/semver/src/Constraint/AbstractConstraint.php +++ b/vendor/composer/semver/src/Constraint/AbstractConstraint.php @@ -11,7 +11,7 @@ namespace Composer\Semver\Constraint; -trigger_error('The ' . __CLASS__ . ' abstract class is deprecated, there is no replacement for it, it will be removed in the next major version.', E_USER_DEPRECATED); +trigger_error('The ' . __NAMESPACE__ . '\AbstractConstraint abstract class is deprecated, there is no replacement for it, it will be removed in the next major version.', E_USER_DEPRECATED); /** * Base constraint class. diff --git a/vendor/composer/semver/src/VersionParser.php b/vendor/composer/semver/src/VersionParser.php index 359c18c468..475e9cc0f9 100644 --- a/vendor/composer/semver/src/VersionParser.php +++ b/vendor/composer/semver/src/VersionParser.php @@ -322,11 +322,11 @@ private function parseConstraint($constraint) } // Work out which position in the version we are operating at - if (isset($matches[4]) && '' !== $matches[4]) { + if (isset($matches[4]) && '' !== $matches[4] && null !== $matches[4]) { $position = 4; - } elseif (isset($matches[3]) && '' !== $matches[3]) { + } elseif (isset($matches[3]) && '' !== $matches[3] && null !== $matches[3]) { $position = 3; - } elseif (isset($matches[2]) && '' !== $matches[2]) { + } elseif (isset($matches[2]) && '' !== $matches[2] && null !== $matches[2]) { $position = 2; } else { $position = 1; @@ -334,19 +334,11 @@ private function parseConstraint($constraint) // Calculate the stability suffix $stabilitySuffix = ''; - if (!empty($matches[5])) { - $stabilitySuffix .= '-' . $this->expandStability($matches[5]) . (!empty($matches[6]) ? $matches[6] : ''); - } - - if (!empty($matches[7])) { + if (empty($matches[5]) && empty($matches[7])) { $stabilitySuffix .= '-dev'; } - if (!$stabilitySuffix) { - $stabilitySuffix = '-dev'; - } - - $lowVersion = $this->manipulateVersionString($matches, $position, 0) . $stabilitySuffix; + $lowVersion = $this->normalize(substr($constraint . $stabilitySuffix, 1)); $lowerBound = new Constraint('>=', $lowVersion); // For upper bound, we increment the position of one more significance, @@ -368,9 +360,9 @@ private function parseConstraint($constraint) // versions 0.X >=0.1.0, and no updates for versions 0.0.X if (preg_match('{^\^' . $versionRegex . '($)}i', $constraint, $matches)) { // Work out which position in the version we are operating at - if ('0' !== $matches[1] || '' === $matches[2]) { + if ('0' !== $matches[1] || '' === $matches[2] || null === $matches[2]) { $position = 1; - } elseif ('0' !== $matches[2] || '' === $matches[3]) { + } elseif ('0' !== $matches[2] || '' === $matches[3] || null === $matches[3]) { $position = 2; } else { $position = 3; @@ -401,9 +393,9 @@ private function parseConstraint($constraint) // Any of X, x, or * may be used to "stand in" for one of the numeric values in the [major, minor, patch] tuple. // A partial version range is treated as an X-Range, so the special character is in fact optional. if (preg_match('{^v?(\d++)(?:\.(\d++))?(?:\.(\d++))?(?:\.[xX*])++$}', $constraint, $matches)) { - if (isset($matches[3]) && '' !== $matches[3]) { + if (isset($matches[3]) && '' !== $matches[3] && null !== $matches[3]) { $position = 3; - } elseif (isset($matches[2]) && '' !== $matches[2]) { + } elseif (isset($matches[2]) && '' !== $matches[2] && null !== $matches[2]) { $position = 2; } else { $position = 1; diff --git a/vendor/composer/spdx-licenses/CHANGELOG.md b/vendor/composer/spdx-licenses/CHANGELOG.md index 8c897ca521..4465f32718 100644 --- a/vendor/composer/spdx-licenses/CHANGELOG.md +++ b/vendor/composer/spdx-licenses/CHANGELOG.md @@ -7,6 +7,10 @@ This project adheres to [Semantic Versioning](http://semver.org/). * ... +## [1.5.1] 2019-03-26 + + * Changed: updated licenses list to SPDX 3.4 + ## [1.5.0] 2018-11-01 * Changed: updated licenses list (SPDX 3.3) @@ -69,7 +73,8 @@ This project adheres to [Semantic Versioning](http://semver.org/). - Classname: `Updater` -> `SpdxLicensesUpdater` * Changed: validation via regex implementation instead of lexer. -[master]: https://github.com/composer/spdx-licenses/compare/1.5.0...master +[master]: https://github.com/composer/spdx-licenses/compare/1.5.1...master +[1.5.1]: https://github.com/composer/spdx-licenses/compare/1.5.0...1.5.1 [1.5.0]: https://github.com/composer/spdx-licenses/compare/1.4.0...1.5.0 [1.4.0]: https://github.com/composer/spdx-licenses/compare/1.3.0...1.4.0 [1.3.0]: https://github.com/composer/spdx-licenses/compare/1.2.0...1.3.0 diff --git a/vendor/composer/spdx-licenses/README.md b/vendor/composer/spdx-licenses/README.md index 51bba13749..4c4da816a8 100644 --- a/vendor/composer/spdx-licenses/README.md +++ b/vendor/composer/spdx-licenses/README.md @@ -1,7 +1,7 @@ composer/spdx-licenses ====================== -SPDX licenses list and validation library. +SPDX (Software Package Data Exchange) licenses list and validation library. Originally written as part of [composer/composer](https://github.com/composer/composer), now extracted and made available as a stand-alone library. diff --git a/vendor/composer/spdx-licenses/composer.json b/vendor/composer/spdx-licenses/composer.json index 50b5763414..bda5b2b5f1 100644 --- a/vendor/composer/spdx-licenses/composer.json +++ b/vendor/composer/spdx-licenses/composer.json @@ -30,11 +30,10 @@ "issues": "https://github.com/composer/spdx-licenses/issues" }, "require": { - "php": "^5.3.2 || ^7.0" + "php": "^5.3.2 || ^7.0 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5", - "phpunit/phpunit-mock-objects": "2.3.0 || ^3.0" + "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 7" }, "autoload": { "psr-4": { diff --git a/vendor/composer/spdx-licenses/res/spdx-licenses.json b/vendor/composer/spdx-licenses/res/spdx-licenses.json index 69055999b9..7d74ba26a3 100644 --- a/vendor/composer/spdx-licenses/res/spdx-licenses.json +++ b/vendor/composer/spdx-licenses/res/spdx-licenses.json @@ -1,7 +1,7 @@ { "0BSD": [ "BSD Zero Clause License", - false, + true, false ], "AAL": [ @@ -519,6 +519,16 @@ false, false ], + "CERN-OHL-1.1": [ + "CERN Open Hardware License v1.1", + false, + false + ], + "CERN-OHL-1.2": [ + "CERN Open Hardware Licence v1.2", + false, + false + ], "ClArtistic": [ "Clarified Artistic License", false, @@ -544,6 +554,11 @@ false, false ], + "copyleft-next-0.3.0": [ + "copyleft-next 0.3.0", + false, + false + ], "copyleft-next-0.3.1": [ "copyleft-next 0.3.1", false, @@ -909,6 +924,11 @@ true, false ], + "HPND-sell-variant": [ + "Historical Permission Notice and Disclaimer - sell variant", + false, + false + ], "IBM-pibs": [ "IBM PowerPC Initialization and Boot Software", false, @@ -1704,6 +1724,11 @@ false, false ], + "TAPR-OHL-1.0": [ + "TAPR Open Hardware License v1.0", + false, + false + ], "TCL": [ "TCL/TK License", false, diff --git a/vendor/darryldecode/cart/composer.json b/vendor/darryldecode/cart/composer.json index a2ee3cc193..0582f5dae2 100644 --- a/vendor/darryldecode/cart/composer.json +++ b/vendor/darryldecode/cart/composer.json @@ -11,9 +11,9 @@ ], "require": { "php": ">=5.4.0", - "illuminate/support": "5.0.*|5.1.*|5.2.*|5.3.*|5.4.*|5.5.*|5.6.*|5.7.*", - "illuminate/validation": "5.0.*|5.1.*|5.2.*|5.3.*|5.4.*|5.5.*|5.6.*|5.7.*", - "illuminate/translation": "5.0.*|5.1.*|5.2.*|5.3.*|5.4.*|5.5.*|5.6.*|5.7.*" + "illuminate/support": "5.0.*|5.1.*|5.2.*|5.3.*|5.4.*|5.5.*|5.6.*|5.7.*|5.8.*", + "illuminate/validation": "5.0.*|5.1.*|5.2.*|5.3.*|5.4.*|5.5.*|5.6.*|5.7.*|5.8.*", + "illuminate/translation": "5.0.*|5.1.*|5.2.*|5.3.*|5.4.*|5.5.*|5.6.*|5.7.*|5.8.*" }, "require-dev": { "mockery/mockery": "^1.0", diff --git a/vendor/darryldecode/cart/src/Darryldecode/Cart/Cart.php b/vendor/darryldecode/cart/src/Darryldecode/Cart/Cart.php index 464395f138..5f5eaf30d6 100644 --- a/vendor/darryldecode/cart/src/Darryldecode/Cart/Cart.php +++ b/vendor/darryldecode/cart/src/Darryldecode/Cart/Cart.php @@ -831,6 +831,6 @@ public function setThousandsSep($thousands_sep) */ protected function fireEvent($name, $value = []) { - return $this->events->fire($this->getInstanceName() . '.' . $name, array_values([$value, $this])); + return $this->events->dispatch($this->getInstanceName() . '.' . $name, array_values([$value, $this])); } } diff --git a/vendor/darryldecode/cart/tests/CartConditionsTest.php b/vendor/darryldecode/cart/tests/CartConditionsTest.php index d2beec5b59..c4d621358d 100644 --- a/vendor/darryldecode/cart/tests/CartConditionsTest.php +++ b/vendor/darryldecode/cart/tests/CartConditionsTest.php @@ -22,7 +22,7 @@ class CartConditionTest extends PHPUnit\Framework\TestCase { public function setUp() { $events = m::mock('Illuminate\Contracts\Events\Dispatcher'); - $events->shouldReceive('fire'); + $events->shouldReceive('dispatch'); $this->cart = new Cart( new SessionMock(), diff --git a/vendor/darryldecode/cart/tests/CartTest.php b/vendor/darryldecode/cart/tests/CartTest.php index 2e14e5fc30..9046927dfb 100644 --- a/vendor/darryldecode/cart/tests/CartTest.php +++ b/vendor/darryldecode/cart/tests/CartTest.php @@ -21,7 +21,7 @@ class CartTest extends PHPUnit\Framework\TestCase { public function setUp() { $events = m::mock('Illuminate\Contracts\Events\Dispatcher'); - $events->shouldReceive('fire'); + $events->shouldReceive('dispatch'); $this->cart = new Cart( new SessionMock(), diff --git a/vendor/darryldecode/cart/tests/CartTestEvents.php b/vendor/darryldecode/cart/tests/CartTestEvents.php index c4f1c10076..41ea1d79bd 100644 --- a/vendor/darryldecode/cart/tests/CartTestEvents.php +++ b/vendor/darryldecode/cart/tests/CartTestEvents.php @@ -27,7 +27,7 @@ public function tearDown() public function test_event_cart_created() { $events = m::mock('Illuminate\Contracts\Events\Dispatcher'); - $events->shouldReceive('fire')->once()->with(self::CART_INSTANCE_NAME.'.created', m::type('array')); + $events->shouldReceive('dispatch')->once()->with(self::CART_INSTANCE_NAME.'.created', m::type('array')); $cart = new Cart( new SessionMock(), @@ -43,9 +43,9 @@ public function test_event_cart_created() public function test_event_cart_adding() { $events = m::mock('Illuminate\Events\Dispatcher'); - $events->shouldReceive('fire')->once()->with(self::CART_INSTANCE_NAME.'.created', m::type('array')); - $events->shouldReceive('fire')->once()->with(self::CART_INSTANCE_NAME.'.adding', m::type('array')); - $events->shouldReceive('fire')->once()->with(self::CART_INSTANCE_NAME.'.added', m::type('array')); + $events->shouldReceive('dispatch')->once()->with(self::CART_INSTANCE_NAME.'.created', m::type('array')); + $events->shouldReceive('dispatch')->once()->with(self::CART_INSTANCE_NAME.'.adding', m::type('array')); + $events->shouldReceive('dispatch')->once()->with(self::CART_INSTANCE_NAME.'.added', m::type('array')); $cart = new Cart( new SessionMock(), @@ -63,9 +63,9 @@ public function test_event_cart_adding() public function test_event_cart_adding_multiple_times() { $events = m::mock('Illuminate\Events\Dispatcher'); - $events->shouldReceive('fire')->once()->with(self::CART_INSTANCE_NAME.'.created', m::type('array')); - $events->shouldReceive('fire')->times(2)->with(self::CART_INSTANCE_NAME.'.adding', m::type('array')); - $events->shouldReceive('fire')->times(2)->with(self::CART_INSTANCE_NAME.'.added', m::type('array')); + $events->shouldReceive('dispatch')->once()->with(self::CART_INSTANCE_NAME.'.created', m::type('array')); + $events->shouldReceive('dispatch')->times(2)->with(self::CART_INSTANCE_NAME.'.adding', m::type('array')); + $events->shouldReceive('dispatch')->times(2)->with(self::CART_INSTANCE_NAME.'.added', m::type('array')); $cart = new Cart( new SessionMock(), @@ -84,9 +84,9 @@ public function test_event_cart_adding_multiple_times() public function test_event_cart_adding_multiple_times_scenario_two() { $events = m::mock('Illuminate\Events\Dispatcher'); - $events->shouldReceive('fire')->once()->with(self::CART_INSTANCE_NAME.'.created', m::type('array')); - $events->shouldReceive('fire')->times(3)->with(self::CART_INSTANCE_NAME.'.adding', m::type('array')); - $events->shouldReceive('fire')->times(3)->with(self::CART_INSTANCE_NAME.'.added', m::type('array')); + $events->shouldReceive('dispatch')->once()->with(self::CART_INSTANCE_NAME.'.created', m::type('array')); + $events->shouldReceive('dispatch')->times(3)->with(self::CART_INSTANCE_NAME.'.adding', m::type('array')); + $events->shouldReceive('dispatch')->times(3)->with(self::CART_INSTANCE_NAME.'.added', m::type('array')); $items = array( array( @@ -128,11 +128,11 @@ public function test_event_cart_adding_multiple_times_scenario_two() public function test_event_cart_remove_item() { $events = m::mock('Illuminate\Events\Dispatcher'); - $events->shouldReceive('fire')->once()->with(self::CART_INSTANCE_NAME.'.created', m::type('array')); - $events->shouldReceive('fire')->times(3)->with(self::CART_INSTANCE_NAME.'.adding', m::type('array')); - $events->shouldReceive('fire')->times(3)->with(self::CART_INSTANCE_NAME.'.added', m::type('array')); - $events->shouldReceive('fire')->times(1)->with(self::CART_INSTANCE_NAME.'.removing', m::type('array')); - $events->shouldReceive('fire')->times(1)->with(self::CART_INSTANCE_NAME.'.removed', m::type('array')); + $events->shouldReceive('dispatch')->once()->with(self::CART_INSTANCE_NAME.'.created', m::type('array')); + $events->shouldReceive('dispatch')->times(3)->with(self::CART_INSTANCE_NAME.'.adding', m::type('array')); + $events->shouldReceive('dispatch')->times(3)->with(self::CART_INSTANCE_NAME.'.added', m::type('array')); + $events->shouldReceive('dispatch')->times(1)->with(self::CART_INSTANCE_NAME.'.removing', m::type('array')); + $events->shouldReceive('dispatch')->times(1)->with(self::CART_INSTANCE_NAME.'.removed', m::type('array')); $items = array( array( @@ -176,11 +176,11 @@ public function test_event_cart_remove_item() public function test_event_cart_clear() { $events = m::mock('Illuminate\Events\Dispatcher'); - $events->shouldReceive('fire')->once()->with(self::CART_INSTANCE_NAME.'.created', m::type('array')); - $events->shouldReceive('fire')->times(3)->with(self::CART_INSTANCE_NAME.'.adding', m::type('array')); - $events->shouldReceive('fire')->times(3)->with(self::CART_INSTANCE_NAME.'.added', m::type('array')); - $events->shouldReceive('fire')->once()->with(self::CART_INSTANCE_NAME.'.clearing', m::type('array')); - $events->shouldReceive('fire')->once()->with(self::CART_INSTANCE_NAME.'.cleared', m::type('array')); + $events->shouldReceive('dispatch')->once()->with(self::CART_INSTANCE_NAME.'.created', m::type('array')); + $events->shouldReceive('dispatch')->times(3)->with(self::CART_INSTANCE_NAME.'.adding', m::type('array')); + $events->shouldReceive('dispatch')->times(3)->with(self::CART_INSTANCE_NAME.'.added', m::type('array')); + $events->shouldReceive('dispatch')->once()->with(self::CART_INSTANCE_NAME.'.clearing', m::type('array')); + $events->shouldReceive('dispatch')->once()->with(self::CART_INSTANCE_NAME.'.cleared', m::type('array')); $items = array( array( diff --git a/vendor/darryldecode/cart/tests/CartTestMultipleInstances.php b/vendor/darryldecode/cart/tests/CartTestMultipleInstances.php index c3051a2b4d..fac767ec8e 100644 --- a/vendor/darryldecode/cart/tests/CartTestMultipleInstances.php +++ b/vendor/darryldecode/cart/tests/CartTestMultipleInstances.php @@ -26,7 +26,7 @@ class CartTestMultipleInstances extends PHPUnit\Framework\TestCase { public function setUp() { $events = m::mock('Illuminate\Contracts\Events\Dispatcher'); - $events->shouldReceive('fire'); + $events->shouldReceive('dispatch'); $this->cart1 = new Cart( new SessionMock(), diff --git a/vendor/darryldecode/cart/tests/CartTestOtherFormat.php b/vendor/darryldecode/cart/tests/CartTestOtherFormat.php index c32cffab85..c4202ed6f8 100644 --- a/vendor/darryldecode/cart/tests/CartTestOtherFormat.php +++ b/vendor/darryldecode/cart/tests/CartTestOtherFormat.php @@ -21,7 +21,7 @@ class CartTestOtherFormat extends PHPUnit\Framework\TestCase { public function setUp() { $events = m::mock('Illuminate\Contracts\Events\Dispatcher'); - $events->shouldReceive('fire'); + $events->shouldReceive('dispatch'); $this->cart = new Cart( new SessionMock(), diff --git a/vendor/darryldecode/cart/tests/ItemTest.php b/vendor/darryldecode/cart/tests/ItemTest.php index 2effa71e6a..ccf7a60a59 100644 --- a/vendor/darryldecode/cart/tests/ItemTest.php +++ b/vendor/darryldecode/cart/tests/ItemTest.php @@ -23,7 +23,7 @@ class ItemTest extends PHPUnit\Framework\TestCase public function setUp() { $events = m::mock('Illuminate\Contracts\Events\Dispatcher'); - $events->shouldReceive('fire'); + $events->shouldReceive('dispatch'); $this->cart = new Cart( new SessionMock(), diff --git a/vendor/darryldecode/cart/tests/ItemTestOtherFormat.php b/vendor/darryldecode/cart/tests/ItemTestOtherFormat.php index cdb2f9d816..13cb3863d9 100644 --- a/vendor/darryldecode/cart/tests/ItemTestOtherFormat.php +++ b/vendor/darryldecode/cart/tests/ItemTestOtherFormat.php @@ -22,7 +22,7 @@ class ItemTestOtherFormat extends PHPUnit\Framework\TestCase public function setUp() { $events = m::mock('Illuminate\Contracts\Events\Dispatcher'); - $events->shouldReceive('fire'); + $events->shouldReceive('dispatch'); $this->cart = new Cart( new SessionMock(), diff --git a/vendor/devio/pipedrive/.travis.yml b/vendor/devio/pipedrive/.travis.yml index 1e8f9ae69c..28fa5476a4 100644 --- a/vendor/devio/pipedrive/.travis.yml +++ b/vendor/devio/pipedrive/.travis.yml @@ -1,10 +1,9 @@ language: php php: - - 5.5 - - 5.6 - - 7.0 + - 7.1.3 + - 7.2 install: travis_retry composer install --no-interaction --prefer-source -script: vendor/bin/phpspec run \ No newline at end of file +script: vendor/bin/phpspec run diff --git a/vendor/devio/pipedrive/composer.json b/vendor/devio/pipedrive/composer.json index ef76214755..b618cbd35b 100644 --- a/vendor/devio/pipedrive/composer.json +++ b/vendor/devio/pipedrive/composer.json @@ -11,7 +11,8 @@ ], "require": { "guzzlehttp/guzzle": "~6.0|~5.0|~4.0", - "illuminate/support": "~4.0|~5.0" + "illuminate/support": "~4.0|~5.0", + "laravel/helpers": "^1.0" }, "require-dev": { "phpspec/phpspec": "^2.4", diff --git a/vendor/devio/pipedrive/docs/index.md b/vendor/devio/pipedrive/docs/index.md deleted file mode 100644 index 8b13789179..0000000000 --- a/vendor/devio/pipedrive/docs/index.md +++ /dev/null @@ -1 +0,0 @@ - diff --git a/vendor/devio/pipedrive/docs/resources/organizations.md b/vendor/devio/pipedrive/docs/resources/organizations.md deleted file mode 100644 index 8b13789179..0000000000 --- a/vendor/devio/pipedrive/docs/resources/organizations.md +++ /dev/null @@ -1 +0,0 @@ - diff --git a/vendor/doctrine/instantiator/.doctrine-project.json b/vendor/doctrine/instantiator/.doctrine-project.json new file mode 100644 index 0000000000..4fe86ee83e --- /dev/null +++ b/vendor/doctrine/instantiator/.doctrine-project.json @@ -0,0 +1,26 @@ +{ + "active": true, + "name": "Instantiator", + "slug": "instantiator", + "docsSlug": "doctrine-instantiator", + "codePath": "/src", + "versions": [ + { + "name": "1.1", + "branchName": "master", + "slug": "latest", + "aliases": [ + "current", + "stable" + ], + "maintained": true, + "current": true + }, + { + "name": "1.0", + "branchName": "1.0.x", + "slug": "1.0" + } + ] +} + diff --git a/vendor/doctrine/instantiator/CONTRIBUTING.md b/vendor/doctrine/instantiator/CONTRIBUTING.md index 75b84b2aa2..c1a2c42ee0 100644 --- a/vendor/doctrine/instantiator/CONTRIBUTING.md +++ b/vendor/doctrine/instantiator/CONTRIBUTING.md @@ -1,6 +1,6 @@ # Contributing - * Coding standard for the project is [PSR-2](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md) + * Follow the [Doctrine Coding Standard](https://github.com/doctrine/coding-standard) * The project will follow strict [object calisthenics](http://www.slideshare.net/guilhermeblanco/object-calisthenics-applied-to-php) * Any contribution must provide tests for additional introduced conditions * Any un-confirmed issue needs a failing test case before being accepted diff --git a/vendor/doctrine/instantiator/README.md b/vendor/doctrine/instantiator/README.md index b66064bf55..eff5a0ca98 100644 --- a/vendor/doctrine/instantiator/README.md +++ b/vendor/doctrine/instantiator/README.md @@ -6,7 +6,6 @@ This library provides a way of avoiding usage of constructors when instantiating [![Code Coverage](https://scrutinizer-ci.com/g/doctrine/instantiator/badges/coverage.png?b=master)](https://scrutinizer-ci.com/g/doctrine/instantiator/?branch=master) [![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/doctrine/instantiator/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/doctrine/instantiator/?branch=master) [![Dependency Status](https://www.versioneye.com/package/php--doctrine--instantiator/badge.svg)](https://www.versioneye.com/package/php--doctrine--instantiator) -[![HHVM Status](http://hhvm.h4cc.de/badge/doctrine/instantiator.png)](http://hhvm.h4cc.de/package/doctrine/instantiator) [![Latest Stable Version](https://poser.pugx.org/doctrine/instantiator/v/stable.png)](https://packagist.org/packages/doctrine/instantiator) [![Latest Unstable Version](https://poser.pugx.org/doctrine/instantiator/v/unstable.png)](https://packagist.org/packages/doctrine/instantiator) diff --git a/vendor/doctrine/instantiator/composer.json b/vendor/doctrine/instantiator/composer.json index 403ee8e609..9002a91ab5 100644 --- a/vendor/doctrine/instantiator/composer.json +++ b/vendor/doctrine/instantiator/composer.json @@ -3,7 +3,7 @@ "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", "type": "library", "license": "MIT", - "homepage": "https://github.com/doctrine/instantiator", + "homepage": "https://www.doctrine-project.org/projects/instantiator.html", "keywords": [ "instantiate", "constructor" @@ -21,9 +21,11 @@ "require-dev": { "ext-phar": "*", "ext-pdo": "*", - "phpunit/phpunit": "^6.2.3", - "squizlabs/php_codesniffer": "^3.0.2", - "athletic/athletic": "~0.1.8" + "doctrine/coding-standard": "^6.0", + "phpbench/phpbench": "^0.13", + "phpstan/phpstan-phpunit": "^0.11", + "phpstan/phpstan-shim": "^0.11", + "phpunit/phpunit": "^7.0" }, "autoload": { "psr-4": { diff --git a/vendor/doctrine/instantiator/docs/en/index.rst b/vendor/doctrine/instantiator/docs/en/index.rst new file mode 100644 index 0000000000..0c85da0bc9 --- /dev/null +++ b/vendor/doctrine/instantiator/docs/en/index.rst @@ -0,0 +1,68 @@ +Introduction +============ + +This library provides a way of avoiding usage of constructors when instantiating PHP classes. + +Installation +============ + +The suggested installation method is via `composer`_: + +.. code-block:: console + + $ composer require doctrine/instantiator + +Usage +===== + +The instantiator is able to create new instances of any class without +using the constructor or any API of the class itself: + +.. code-block:: php + + instantiate(User::class); + +Contributing +============ + +- Follow the `Doctrine Coding Standard`_ +- The project will follow strict `object calisthenics`_ +- Any contribution must provide tests for additional introduced + conditions +- Any un-confirmed issue needs a failing test case before being + accepted +- Pull requests must be sent from a new hotfix/feature branch, not from + ``master``. + +Testing +======= + +The PHPUnit version to be used is the one installed as a dev- dependency +via composer: + +.. code-block:: console + + $ ./vendor/bin/phpunit + +Accepted coverage for new contributions is 80%. Any contribution not +satisfying this requirement won’t be merged. + +Credits +======= + +This library was migrated from `ocramius/instantiator`_, which has been +donated to the doctrine organization, and which is now deprecated in +favour of this package. + +.. _composer: https://getcomposer.org/ +.. _CONTRIBUTING.md: CONTRIBUTING.md +.. _ocramius/instantiator: https://github.com/Ocramius/Instantiator +.. _Doctrine Coding Standard: https://github.com/doctrine/coding-standard +.. _object calisthenics: http://www.slideshare.net/guilhermeblanco/object-calisthenics-applied-to-php diff --git a/vendor/doctrine/instantiator/docs/en/sidebar.rst b/vendor/doctrine/instantiator/docs/en/sidebar.rst new file mode 100644 index 0000000000..0c36479143 --- /dev/null +++ b/vendor/doctrine/instantiator/docs/en/sidebar.rst @@ -0,0 +1,4 @@ +.. toctree:: + :depth: 3 + + index diff --git a/vendor/doctrine/instantiator/phpbench.json b/vendor/doctrine/instantiator/phpbench.json new file mode 100644 index 0000000000..fce5dd600d --- /dev/null +++ b/vendor/doctrine/instantiator/phpbench.json @@ -0,0 +1,4 @@ +{ + "bootstrap": "vendor/autoload.php", + "path": "tests/DoctrineTest/InstantiatorPerformance" +} diff --git a/vendor/doctrine/instantiator/phpcs.xml.dist b/vendor/doctrine/instantiator/phpcs.xml.dist new file mode 100644 index 0000000000..1fcac4ab62 --- /dev/null +++ b/vendor/doctrine/instantiator/phpcs.xml.dist @@ -0,0 +1,35 @@ + + + + + + + + + + + + src + tests + + + + + + + + + + tests/DoctrineTest/InstantiatorTestAsset/AbstractClassAsset.php + + + + src/Doctrine/Instantiator/Exception/UnexpectedValueException.php + src/Doctrine/Instantiator/Exception/InvalidArgumentException.php + + + + src/Doctrine/Instantiator/Exception/ExceptionInterface.php + src/Doctrine/Instantiator/InstantiatorInterface.php + + diff --git a/vendor/doctrine/instantiator/phpstan.neon.dist b/vendor/doctrine/instantiator/phpstan.neon.dist new file mode 100644 index 0000000000..ecc38effb2 --- /dev/null +++ b/vendor/doctrine/instantiator/phpstan.neon.dist @@ -0,0 +1,19 @@ +includes: + - vendor/phpstan/phpstan-phpunit/extension.neon + - vendor/phpstan/phpstan-phpunit/rules.neon + +parameters: + level: max + paths: + - src + - tests + + ignoreErrors: + - + message: '#::__construct\(\) does not call parent constructor from#' + path: '*/tests/DoctrineTest/InstantiatorTestAsset/*.php' + + # dynamic properties confuse static analysis + - + message: '#Access to an undefined property object::\$foo\.#' + path: '*/tests/DoctrineTest/InstantiatorTest/InstantiatorTest.php' diff --git a/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/ExceptionInterface.php b/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/ExceptionInterface.php index 3065375a8c..e6a5195f21 100644 --- a/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/ExceptionInterface.php +++ b/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/ExceptionInterface.php @@ -1,29 +1,12 @@ . - */ namespace Doctrine\Instantiator\Exception; +use Throwable; + /** * Base exception marker interface for the instantiator component - * - * @author Marco Pivetta */ -interface ExceptionInterface +interface ExceptionInterface extends Throwable { } diff --git a/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/InvalidArgumentException.php b/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/InvalidArgumentException.php index cb57aa86fe..9188f0ba1f 100644 --- a/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/InvalidArgumentException.php +++ b/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/InvalidArgumentException.php @@ -1,31 +1,16 @@ . - */ namespace Doctrine\Instantiator\Exception; use InvalidArgumentException as BaseInvalidArgumentException; use ReflectionClass; +use const PHP_VERSION_ID; +use function interface_exists; +use function sprintf; +use function trait_exists; /** * Exception for invalid arguments provided to the instantiator - * - * @author Marco Pivetta */ class InvalidArgumentException extends BaseInvalidArgumentException implements ExceptionInterface { diff --git a/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/UnexpectedValueException.php b/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/UnexpectedValueException.php index 2b704b9202..d946731b8f 100644 --- a/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/UnexpectedValueException.php +++ b/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/UnexpectedValueException.php @@ -1,32 +1,14 @@ . - */ namespace Doctrine\Instantiator\Exception; use Exception; use ReflectionClass; use UnexpectedValueException as BaseUnexpectedValueException; +use function sprintf; /** * Exception for given parameters causing invalid/unexpected state on instantiation - * - * @author Marco Pivetta */ class UnexpectedValueException extends BaseUnexpectedValueException implements ExceptionInterface { diff --git a/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Instantiator.php b/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Instantiator.php index 69fe65da34..4364190e6f 100644 --- a/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Instantiator.php +++ b/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Instantiator.php @@ -1,21 +1,4 @@ . - */ namespace Doctrine\Instantiator; @@ -23,11 +6,16 @@ use Doctrine\Instantiator\Exception\UnexpectedValueException; use Exception; use ReflectionClass; +use ReflectionException; +use function class_exists; +use function restore_error_handler; +use function set_error_handler; +use function sprintf; +use function strlen; +use function unserialize; /** * {@inheritDoc} - * - * @author Marco Pivetta */ final class Instantiator implements InstantiatorInterface { @@ -36,16 +24,20 @@ final class Instantiator implements InstantiatorInterface * the method {@see \Serializable::unserialize()} when dealing with classes implementing * the {@see \Serializable} interface. */ - const SERIALIZATION_FORMAT_USE_UNSERIALIZER = 'C'; - const SERIALIZATION_FORMAT_AVOID_UNSERIALIZER = 'O'; + public const SERIALIZATION_FORMAT_USE_UNSERIALIZER = 'C'; + public const SERIALIZATION_FORMAT_AVOID_UNSERIALIZER = 'O'; /** - * @var \callable[] used to instantiate specific classes, indexed by class name + * Used to instantiate specific classes, indexed by class name. + * + * @var callable[] */ private static $cachedInstantiators = []; /** - * @var object[] of objects that can directly be cloned, indexed by class name + * Array of objects that can directly be cloned, indexed by class name. + * + * @var object[] */ private static $cachedCloneables = []; @@ -90,7 +82,7 @@ private function buildAndCacheFromFactory(string $className) * * @throws InvalidArgumentException * @throws UnexpectedValueException - * @throws \ReflectionException + * @throws ReflectionException */ private function buildFactory(string $className) : callable { @@ -109,7 +101,7 @@ private function buildFactory(string $className) : callable $this->checkIfUnSerializationIsSupported($reflectionClass, $serializedString); - return function () use ($serializedString) { + return static function () use ($serializedString) { return unserialize($serializedString); }; } @@ -117,10 +109,8 @@ private function buildFactory(string $className) : callable /** * @param string $className * - * @return ReflectionClass - * * @throws InvalidArgumentException - * @throws \ReflectionException + * @throws ReflectionException */ private function getReflectionClass($className) : ReflectionClass { @@ -138,16 +128,11 @@ private function getReflectionClass($className) : ReflectionClass } /** - * @param ReflectionClass $reflectionClass - * @param string $serializedString - * * @throws UnexpectedValueException - * - * @return void */ - private function checkIfUnSerializationIsSupported(ReflectionClass $reflectionClass, $serializedString) : void + private function checkIfUnSerializationIsSupported(ReflectionClass $reflectionClass, string $serializedString) : void { - set_error_handler(function ($code, $message, $file, $line) use ($reflectionClass, & $error) : void { + set_error_handler(static function ($code, $message, $file, $line) use ($reflectionClass, & $error) : void { $error = UnexpectedValueException::fromUncleanUnSerialization( $reflectionClass, $message, @@ -157,9 +142,11 @@ private function checkIfUnSerializationIsSupported(ReflectionClass $reflectionCl ); }); - $this->attemptInstantiationViaUnSerialization($reflectionClass, $serializedString); - - restore_error_handler(); + try { + $this->attemptInstantiationViaUnSerialization($reflectionClass, $serializedString); + } finally { + restore_error_handler(); + } if ($error) { throw $error; @@ -167,20 +154,13 @@ private function checkIfUnSerializationIsSupported(ReflectionClass $reflectionCl } /** - * @param ReflectionClass $reflectionClass - * @param string $serializedString - * * @throws UnexpectedValueException - * - * @return void */ - private function attemptInstantiationViaUnSerialization(ReflectionClass $reflectionClass, $serializedString) : void + private function attemptInstantiationViaUnSerialization(ReflectionClass $reflectionClass, string $serializedString) : void { try { unserialize($serializedString); } catch (Exception $exception) { - restore_error_handler(); - throw UnexpectedValueException::fromSerializationTriggeredException($reflectionClass, $exception); } } @@ -199,7 +179,9 @@ private function hasInternalAncestors(ReflectionClass $reflectionClass) : bool if ($reflectionClass->isInternal()) { return true; } - } while ($reflectionClass = $reflectionClass->getParentClass()); + + $reflectionClass = $reflectionClass->getParentClass(); + } while ($reflectionClass); return false; } diff --git a/vendor/doctrine/instantiator/src/Doctrine/Instantiator/InstantiatorInterface.php b/vendor/doctrine/instantiator/src/Doctrine/Instantiator/InstantiatorInterface.php index b665bea854..95299f4a99 100644 --- a/vendor/doctrine/instantiator/src/Doctrine/Instantiator/InstantiatorInterface.php +++ b/vendor/doctrine/instantiator/src/Doctrine/Instantiator/InstantiatorInterface.php @@ -1,28 +1,11 @@ . - */ namespace Doctrine\Instantiator; +use Doctrine\Instantiator\Exception\ExceptionInterface; + /** * Instantiator provides utility methods to build objects without invoking their constructors - * - * @author Marco Pivetta */ interface InstantiatorInterface { @@ -31,7 +14,7 @@ interface InstantiatorInterface * * @return object * - * @throws \Doctrine\Instantiator\Exception\ExceptionInterface + * @throws ExceptionInterface */ public function instantiate($className); } diff --git a/vendor/dragonmantank/cron-expression/CHANGELOG.md b/vendor/dragonmantank/cron-expression/CHANGELOG.md index 8cb3a084e4..e3939df5ff 100644 --- a/vendor/dragonmantank/cron-expression/CHANGELOG.md +++ b/vendor/dragonmantank/cron-expression/CHANGELOG.md @@ -1,5 +1,15 @@ # Change Log +## [2.3.0] - 2019-03-30 +### Added +- Added support for DateTimeImmutable via DateTimeInterface +- Added support for PHP 7.3 +- Started listing projects that use the library +### Changed +- Errors should now report a human readable position in the cron expression, instead of starting at 0 +### Fixed +- N/A + ## [2.2.0] - 2018-06-05 ### Added - Added support for steps larger than field ranges (#6) diff --git a/vendor/dragonmantank/cron-expression/README.md b/vendor/dragonmantank/cron-expression/README.md index 67992c7db1..8e8021b2a1 100644 --- a/vendor/dragonmantank/cron-expression/README.md +++ b/vendor/dragonmantank/cron-expression/README.md @@ -6,11 +6,11 @@ PHP Cron Expression Parser The PHP cron expression parser can parse a CRON expression, determine if it is due to run, calculate the next run date of the expression, and calculate the previous run date of the expression. You can calculate dates far into the future or past by -skipping n number of matching dates. +skipping **n** number of matching dates. The parser can handle increments of ranges (e.g. */12, 2-59/3), intervals (e.g. 0-9), -lists (e.g. 1,2,3), W to find the nearest weekday for a given day of the month, L to -find the last day of the month, L to find the last given weekday of a month, and hash +lists (e.g. 1,2,3), **W** to find the nearest weekday for a given day of the month, **L** to +find the last day of the month, **L** to find the last given weekday of a month, and hash (#) to find the nth weekday of a given month. More information about this fork can be found in the blog post [here](http://ctankersley.com/2017/10/12/cron-expression-update/). tl;dr - v2.0.0 is a major breaking change, and @dragonmantank can better take care of the project in a separate fork. @@ -71,3 +71,8 @@ Requirements - PHP 7.0+ - PHPUnit is required to run the unit tests - Composer is required to run the unit tests + +Projects that Use cron-expression +================================= +* Part of the [Laravel Framework](https://github.com/laravel/framework/) +* Available as a [Symfony Bundle - setono/cron-expression-bundle](https://github.com/Setono/CronExpressionBundle) \ No newline at end of file diff --git a/vendor/dragonmantank/cron-expression/composer.json b/vendor/dragonmantank/cron-expression/composer.json index d9997ead2c..c0b7903f96 100644 --- a/vendor/dragonmantank/cron-expression/composer.json +++ b/vendor/dragonmantank/cron-expression/composer.json @@ -17,10 +17,10 @@ } ], "require": { - "php": ">=7.0.0" + "php": "^7.0" }, "require-dev": { - "phpunit/phpunit": "~6.4" + "phpunit/phpunit": "^6.4|^7.0" }, "autoload": { "psr-4": { @@ -31,5 +31,10 @@ "psr-4": { "Tests\\": "tests/Cron/" } + }, + "extra": { + "branch-alias": { + "dev-master": "2.3-dev" + } } } diff --git a/vendor/dragonmantank/cron-expression/src/Cron/AbstractField.php b/vendor/dragonmantank/cron-expression/src/Cron/AbstractField.php index 262ab63cfe..8b1072ab2c 100644 --- a/vendor/dragonmantank/cron-expression/src/Cron/AbstractField.php +++ b/vendor/dragonmantank/cron-expression/src/Cron/AbstractField.php @@ -31,7 +31,9 @@ abstract class AbstractField implements FieldInterface */ protected $rangeEnd; - + /** + * Constructor + */ public function __construct() { $this->fullRange = range($this->rangeStart, $this->rangeEnd); @@ -204,12 +206,18 @@ public function getRangeForExpression($expression, $max) return $values; } + /** + * Convert literal + * + * @param string $value + * @return string + */ protected function convertLiterals($value) { if (count($this->literals)) { $key = array_search($value, $this->literals); if ($key !== false) { - return $key; + return (string) $key; } } diff --git a/vendor/dragonmantank/cron-expression/src/Cron/CronExpression.php b/vendor/dragonmantank/cron-expression/src/Cron/CronExpression.php index b7ba7da0f1..594b435825 100644 --- a/vendor/dragonmantank/cron-expression/src/Cron/CronExpression.php +++ b/vendor/dragonmantank/cron-expression/src/Cron/CronExpression.php @@ -4,6 +4,7 @@ use DateTime; use DateTimeImmutable; +use DateTimeInterface; use DateTimeZone; use Exception; use InvalidArgumentException; @@ -62,7 +63,7 @@ class CronExpression * `@weekly` - Run once a week, midnight on Sun - 0 0 * * 0 * `@daily` - Run once a day, midnight - 0 0 * * * * `@hourly` - Run once an hour, first minute - 0 * * * * - * @param FieldFactory $fieldFactory Field factory to use + * @param FieldFactory|null $fieldFactory Field factory to use * * @return CronExpression */ @@ -107,9 +108,9 @@ public static function isValidExpression($expression) * Parse a CRON expression * * @param string $expression CRON expression (e.g. '8 * * * *') - * @param FieldFactory $fieldFactory Factory to create cron fields + * @param FieldFactory|null $fieldFactory Factory to create cron fields */ - public function __construct($expression, FieldFactory $fieldFactory) + public function __construct($expression, FieldFactory $fieldFactory = null) { $this->fieldFactory = $fieldFactory; $this->setExpression($expression); @@ -178,16 +179,17 @@ public function setMaxIterationCount($maxIterationCount) /** * Get a next run date relative to the current date or a specific date * - * @param string|\DateTime $currentTime Relative calculation date - * @param int $nth Number of matches to skip before returning a - * matching next run date. 0, the default, will return the current - * date and time if the next run date falls on the current date and - * time. Setting this value to 1 will skip the first match and go to - * the second match. Setting this value to 2 will skip the first 2 - * matches and so on. - * @param bool $allowCurrentDate Set to TRUE to return the current date if - * it matches the cron expression. - * @param null|string $timeZone TimeZone to use instead of the system default + * @param string|\DateTimeInterface $currentTime Relative calculation date + * @param int $nth Number of matches to skip before returning a + * matching next run date. 0, the default, will return the + * current date and time if the next run date falls on the + * current date and time. Setting this value to 1 will + * skip the first match and go to the second match. + * Setting this value to 2 will skip the first 2 + * matches and so on. + * @param bool $allowCurrentDate Set to TRUE to return the current date if + * it matches the cron expression. + * @param null|string $timeZone TimeZone to use instead of the system default * * @return \DateTime * @throws \RuntimeException on too many iterations @@ -200,11 +202,11 @@ public function getNextRunDate($currentTime = 'now', $nth = 0, $allowCurrentDate /** * Get a previous run date relative to the current date or a specific date * - * @param string|\DateTime $currentTime Relative calculation date - * @param int $nth Number of matches to skip before returning - * @param bool $allowCurrentDate Set to TRUE to return the - * current date if it matches the cron expression - * @param null|string $timeZone TimeZone to use instead of the system default + * @param string|\DateTimeInterface $currentTime Relative calculation date + * @param int $nth Number of matches to skip before returning + * @param bool $allowCurrentDate Set to TRUE to return the + * current date if it matches the cron expression + * @param null|string $timeZone TimeZone to use instead of the system default * * @return \DateTime * @throws \RuntimeException on too many iterations @@ -218,14 +220,14 @@ public function getPreviousRunDate($currentTime = 'now', $nth = 0, $allowCurrent /** * Get multiple run dates starting at the current date or a specific date * - * @param int $total Set the total number of dates to calculate - * @param string|\DateTime $currentTime Relative calculation date - * @param bool $invert Set to TRUE to retrieve previous dates - * @param bool $allowCurrentDate Set to TRUE to return the - * current date if it matches the cron expression - * @param null|string $timeZone TimeZone to use instead of the system default + * @param int $total Set the total number of dates to calculate + * @param string|\DateTimeInterface $currentTime Relative calculation date + * @param bool $invert Set to TRUE to retrieve previous dates + * @param bool $allowCurrentDate Set to TRUE to return the + * current date if it matches the cron expression + * @param null|string $timeZone TimeZone to use instead of the system default * - * @return array Returns an array of run dates + * @return \DateTime[] Returns an array of run dates */ public function getMultipleRunDates($total, $currentTime = 'now', $invert = false, $allowCurrentDate = false, $timeZone = null) { @@ -276,8 +278,8 @@ public function __toString() * specific date. This method assumes that the current number of * seconds are irrelevant, and should be called once per minute. * - * @param string|\DateTime $currentTime Relative calculation date - * @param null|string $timeZone TimeZone to use instead of the system default + * @param string|\DateTimeInterface $currentTime Relative calculation date + * @param null|string $timeZone TimeZone to use instead of the system default * * @return bool Returns TRUE if the cron is due to run or FALSE if not */ @@ -309,12 +311,12 @@ public function isDue($currentTime = 'now', $timeZone = null) /** * Get the next or previous run date of the expression relative to a date * - * @param string|\DateTime $currentTime Relative calculation date - * @param int $nth Number of matches to skip before returning - * @param bool $invert Set to TRUE to go backwards in time - * @param bool $allowCurrentDate Set to TRUE to return the - * current date if it matches the cron expression - * @param string|null $timeZone TimeZone to use instead of the system default + * @param string|\DateTimeInterface $currentTime Relative calculation date + * @param int $nth Number of matches to skip before returning + * @param bool $invert Set to TRUE to go backwards in time + * @param bool $allowCurrentDate Set to TRUE to return the + * current date if it matches the cron expression + * @param string|null $timeZone TimeZone to use instead of the system default * * @return \DateTime * @throws \RuntimeException on too many iterations @@ -391,8 +393,8 @@ protected function getRunDate($currentTime = null, $nth = 0, $invert = false, $a /** * Workout what timeZone should be used. * - * @param string|\DateTime $currentTime Relative calculation date - * @param string|null $timeZone TimeZone to use instead of the system default + * @param string|\DateTimeInterface $currentTime Relative calculation date + * @param string|null $timeZone TimeZone to use instead of the system default * * @return string */ @@ -402,7 +404,7 @@ protected function determineTimeZone($currentTime, $timeZone) return $timeZone; } - if ($currentTime instanceOf Datetime) { + if ($currentTime instanceOf DateTimeInterface) { return $currentTime->getTimeZone()->getName(); } diff --git a/vendor/dragonmantank/cron-expression/src/Cron/DayOfMonthField.php b/vendor/dragonmantank/cron-expression/src/Cron/DayOfMonthField.php index abf5969007..d4552e06be 100644 --- a/vendor/dragonmantank/cron-expression/src/Cron/DayOfMonthField.php +++ b/vendor/dragonmantank/cron-expression/src/Cron/DayOfMonthField.php @@ -3,6 +3,7 @@ namespace Cron; use DateTime; +use DateTimeInterface; /** * Day of month field. Allows: * , / - ? L W @@ -24,7 +25,14 @@ */ class DayOfMonthField extends AbstractField { + /** + * @inheritDoc + */ protected $rangeStart = 1; + + /** + * @inheritDoc + */ protected $rangeEnd = 31; /** @@ -59,7 +67,10 @@ private static function getNearestWeekday($currentYear, $currentMonth, $targetDa } } - public function isSatisfiedBy(DateTime $date, $value) + /** + * @inheritDoc + */ + public function isSatisfiedBy(DateTimeInterface $date, $value) { // ? states that the field value is to be skipped if ($value == '?') { @@ -88,14 +99,17 @@ public function isSatisfiedBy(DateTime $date, $value) return $this->isSatisfied($date->format('d'), $value); } - public function increment(DateTime $date, $invert = false) + /** + * @inheritDoc + * + * @param \DateTime|\DateTimeImmutable &$date + */ + public function increment(DateTimeInterface &$date, $invert = false) { if ($invert) { - $date->modify('previous day'); - $date->setTime(23, 59); + $date = $date->modify('previous day')->setTime(23, 59); } else { - $date->modify('next day'); - $date->setTime(0, 0); + $date = $date->modify('next day')->setTime(0, 0); } return $this; diff --git a/vendor/dragonmantank/cron-expression/src/Cron/DayOfWeekField.php b/vendor/dragonmantank/cron-expression/src/Cron/DayOfWeekField.php index e1780134eb..9db9e95675 100644 --- a/vendor/dragonmantank/cron-expression/src/Cron/DayOfWeekField.php +++ b/vendor/dragonmantank/cron-expression/src/Cron/DayOfWeekField.php @@ -3,9 +3,9 @@ namespace Cron; use DateTime; +use DateTimeInterface; use InvalidArgumentException; - /** * Day of week field. Allows: * / , - ? L # * @@ -21,20 +21,41 @@ */ class DayOfWeekField extends AbstractField { + /** + * @inheritDoc + */ protected $rangeStart = 0; + + /** + * @inheritDoc + */ protected $rangeEnd = 7; + /** + * @var array Weekday range + */ protected $nthRange; + /** + * @inheritDoc + */ protected $literals = [1 => 'MON', 2 => 'TUE', 3 => 'WED', 4 => 'THU', 5 => 'FRI', 6 => 'SAT', 7 => 'SUN']; + /** + * Constructor + */ public function __construct() { $this->nthRange = range(1, 5); parent::__construct(); } - public function isSatisfiedBy(DateTime $date, $value) + /** + * @inheritDoc + * + * @param \DateTime|\DateTimeImmutable $date + */ + public function isSatisfiedBy(DateTimeInterface $date, $value) { if ($value == '?') { return true; @@ -49,9 +70,11 @@ public function isSatisfiedBy(DateTime $date, $value) // Find out if this is the last specific weekday of the month if (strpos($value, 'L')) { - $weekday = str_replace('7', '0', substr($value, 0, strpos($value, 'L'))); + $weekday = $this->convertLiterals(substr($value, 0, strpos($value, 'L'))); + $weekday = str_replace('7', '0', $weekday); + $tdate = clone $date; - $tdate->setDate($currentYear, $currentMonth, $lastDayOfMonth); + $tdate = $tdate->setDate($currentYear, $currentMonth, $lastDayOfMonth); while ($tdate->format('w') != $weekday) { $tdateClone = new DateTime(); $tdate = $tdateClone @@ -94,7 +117,7 @@ public function isSatisfiedBy(DateTime $date, $value) } $tdate = clone $date; - $tdate->setDate($currentYear, $currentMonth, 1); + $tdate = $tdate->setDate($currentYear, $currentMonth, 1); $dayCount = 0; $currentDay = 1; while ($currentDay < $lastDayOfMonth + 1) { @@ -103,7 +126,7 @@ public function isSatisfiedBy(DateTime $date, $value) break; } } - $tdate->setDate($currentYear, $currentMonth, ++$currentDay); + $tdate = $tdate->setDate($currentYear, $currentMonth, ++$currentDay); } return $date->format('j') == $currentDay; @@ -127,14 +150,17 @@ public function isSatisfiedBy(DateTime $date, $value) return $this->isSatisfied($fieldValue, $value); } - public function increment(DateTime $date, $invert = false) + /** + * @inheritDoc + * + * @param \DateTime|\DateTimeImmutable &$date + */ + public function increment(DateTimeInterface &$date, $invert = false) { if ($invert) { - $date->modify('-1 day'); - $date->setTime(23, 59, 0); + $date = $date->modify('-1 day')->setTime(23, 59, 0); } else { - $date->modify('+1 day'); - $date->setTime(0, 0, 0); + $date = $date->modify('+1 day')->setTime(0, 0, 0); } return $this; diff --git a/vendor/dragonmantank/cron-expression/src/Cron/FieldFactory.php b/vendor/dragonmantank/cron-expression/src/Cron/FieldFactory.php index fd27352d1b..545e4b837c 100644 --- a/vendor/dragonmantank/cron-expression/src/Cron/FieldFactory.php +++ b/vendor/dragonmantank/cron-expression/src/Cron/FieldFactory.php @@ -44,7 +44,7 @@ public function getField($position) break; default: throw new InvalidArgumentException( - $position . ' is not a valid position' + ($position + 1) . ' is not a valid position' ); } } diff --git a/vendor/dragonmantank/cron-expression/src/Cron/FieldInterface.php b/vendor/dragonmantank/cron-expression/src/Cron/FieldInterface.php index be37b93892..f8366eae7b 100644 --- a/vendor/dragonmantank/cron-expression/src/Cron/FieldInterface.php +++ b/vendor/dragonmantank/cron-expression/src/Cron/FieldInterface.php @@ -1,7 +1,8 @@ isSatisfied($date->format('H'), $value); } - public function increment(DateTime $date, $invert = false, $parts = null) + /** + * {@inheritDoc} + * + * @param \DateTime|\DateTimeImmutable &$date + * @param string|null $parts + */ + public function increment(DateTimeInterface &$date, $invert = false, $parts = null) { // Change timezone to UTC temporarily. This will // allow us to go back or forwards and hour even // if DST will be changed between the hours. if (is_null($parts) || $parts == '*') { $timezone = $date->getTimezone(); - $date->setTimezone(new DateTimeZone('UTC')); - if ($invert) { - $date->modify('-1 hour'); - } else { - $date->modify('+1 hour'); - } - $date->setTimezone($timezone); + $date = $date->setTimezone(new DateTimeZone('UTC')); + $date = $date->modify(($invert ? '-' : '+') . '1 hour'); + $date = $date->setTimezone($timezone); - $date->setTime($date->format('H'), $invert ? 59 : 0); + $date = $date->setTime($date->format('H'), $invert ? 59 : 0); return $this; } @@ -57,11 +73,11 @@ public function increment(DateTime $date, $invert = false, $parts = null) $hour = $hours[$position]; if ((!$invert && $date->format('H') >= $hour) || ($invert && $date->format('H') <= $hour)) { - $date->modify(($invert ? '-' : '+') . '1 day'); - $date->setTime($invert ? 23 : 0, $invert ? 59 : 0); + $date = $date->modify(($invert ? '-' : '+') . '1 day'); + $date = $date->setTime($invert ? 23 : 0, $invert ? 59 : 0); } else { - $date->setTime($hour, $invert ? 59 : 0); + $date = $date->setTime($hour, $invert ? 59 : 0); } return $this; diff --git a/vendor/dragonmantank/cron-expression/src/Cron/MinutesField.php b/vendor/dragonmantank/cron-expression/src/Cron/MinutesField.php index 59bb386f93..fecc9b6da7 100644 --- a/vendor/dragonmantank/cron-expression/src/Cron/MinutesField.php +++ b/vendor/dragonmantank/cron-expression/src/Cron/MinutesField.php @@ -2,30 +2,45 @@ namespace Cron; -use DateTime; - +use DateTimeInterface; /** * Minutes field. Allows: * , / - */ class MinutesField extends AbstractField { + /** + * @inheritDoc + */ protected $rangeStart = 0; + + /** + * @inheritDoc + */ protected $rangeEnd = 59; - public function isSatisfiedBy(DateTime $date, $value) + /** + * @inheritDoc + */ + public function isSatisfiedBy(DateTimeInterface $date, $value) { + if ($value == '?') { + return true; + } + return $this->isSatisfied($date->format('i'), $value); } - public function increment(DateTime $date, $invert = false, $parts = null) + /** + * {@inheritDoc} + * + * @param \DateTime|\DateTimeImmutable &$date + * @param string|null $parts + */ + public function increment(DateTimeInterface &$date, $invert = false, $parts = null) { if (is_null($parts)) { - if ($invert) { - $date->modify('-1 minute'); - } else { - $date->modify('+1 minute'); - } + $date = $date->modify(($invert ? '-' : '+') . '1 minute'); return $this; } @@ -48,11 +63,11 @@ public function increment(DateTime $date, $invert = false, $parts = null) } if ((!$invert && $current_minute >= $minutes[$position]) || ($invert && $current_minute <= $minutes[$position])) { - $date->modify(($invert ? '-' : '+') . '1 hour'); - $date->setTime($date->format('H'), $invert ? 59 : 0); + $date = $date->modify(($invert ? '-' : '+') . '1 hour'); + $date = $date->setTime($date->format('H'), $invert ? 59 : 0); } else { - $date->setTime($date->format('H'), $minutes[$position]); + $date = $date->setTime($date->format('H'), $minutes[$position]); } return $this; diff --git a/vendor/dragonmantank/cron-expression/src/Cron/MonthField.php b/vendor/dragonmantank/cron-expression/src/Cron/MonthField.php index 79fdf3cf58..afc9caff23 100644 --- a/vendor/dragonmantank/cron-expression/src/Cron/MonthField.php +++ b/vendor/dragonmantank/cron-expression/src/Cron/MonthField.php @@ -2,33 +2,54 @@ namespace Cron; -use DateTime; +use DateTimeInterface; /** * Month field. Allows: * , / - */ class MonthField extends AbstractField { + /** + * @inheritDoc + */ protected $rangeStart = 1; + + /** + * @inheritDoc + */ protected $rangeEnd = 12; + + /** + * @inheritDoc + */ protected $literals = [1 => 'JAN', 2 => 'FEB', 3 => 'MAR', 4 => 'APR', 5 => 'MAY', 6 => 'JUN', 7 => 'JUL', 8 => 'AUG', 9 => 'SEP', 10 => 'OCT', 11 => 'NOV', 12 => 'DEC']; - public function isSatisfiedBy(DateTime $date, $value) + /** + * @inheritDoc + */ + public function isSatisfiedBy(DateTimeInterface $date, $value) { + if ($value == '?') { + return true; + } + $value = $this->convertLiterals($value); return $this->isSatisfied($date->format('m'), $value); } - public function increment(DateTime $date, $invert = false) + /** + * @inheritDoc + * + * @param \DateTime|\DateTimeImmutable &$date + */ + public function increment(DateTimeInterface &$date, $invert = false) { if ($invert) { - $date->modify('last day of previous month'); - $date->setTime(23, 59); + $date = $date->modify('last day of previous month')->setTime(23, 59); } else { - $date->modify('first day of next month'); - $date->setTime(0, 0); + $date = $date->modify('first day of next month')->setTime(0, 0); } return $this; diff --git a/vendor/dragonmantank/cron-expression/tests/Cron/CronExpressionTest.php b/vendor/dragonmantank/cron-expression/tests/Cron/CronExpressionTest.php index 5d46644bce..9b82ae5b8d 100644 --- a/vendor/dragonmantank/cron-expression/tests/Cron/CronExpressionTest.php +++ b/vendor/dragonmantank/cron-expression/tests/Cron/CronExpressionTest.php @@ -5,6 +5,7 @@ use Cron\CronExpression; use Cron\MonthField; use DateTime; +use DateTimeImmutable; use DateTimeZone; use InvalidArgumentException; use PHPUnit\Framework\TestCase; @@ -228,6 +229,7 @@ public function testIsDueHandlesDifferentDates() $this->assertTrue($cron->isDue('now')); $this->assertTrue($cron->isDue(new DateTime('now'))); $this->assertTrue($cron->isDue(date('Y-m-d H:i'))); + $this->assertTrue($cron->isDue(new DateTimeImmutable('now'))); } /** @@ -407,6 +409,18 @@ public function testCanIterateOverNextRuns() $this->assertEquals($nextRun, new DateTime("2008-11-30 00:00:00")); } + /** + * @covers \Cron\CronExpression::getRunDate + */ + public function testGetRunDateHandlesDifferentDates() + { + $cron = CronExpression::factory('@weekly'); + $date = new DateTime("2019-03-10 00:00:00"); + $this->assertEquals($date, $cron->getNextRunDate("2019-03-03 08:00:00")); + $this->assertEquals($date, $cron->getNextRunDate(new DateTime("2019-03-03 08:00:00"))); + $this->assertEquals($date, $cron->getNextRunDate(new DateTimeImmutable("2019-03-03 08:00:00"))); + } + /** * @covers \Cron\CronExpression::getRunDate */ @@ -557,4 +571,16 @@ public function testRangesWrapAroundWithLargeSteps() $nextRunDate = $e->getNextRunDate(new DateTime('2014-05-07 00:00:00')); $this->assertSame('2015-04-01 00:00:00', $nextRunDate->format('Y-m-d H:i:s')); } + + /** + * When there is an issue with a field, we should report the human readable position + * + * @see https://github.com/dragonmantank/cron-expression/issues/29 + */ + public function testFieldPositionIsHumanAdjusted() + { + $this->expectException(InvalidArgumentException::class); + $this->expectExceptionMessage("6 is not a valid position"); + $e = CronExpression::factory('0 * * * * ? *'); + } } diff --git a/vendor/dragonmantank/cron-expression/tests/Cron/DayOfMonthFieldTest.php b/vendor/dragonmantank/cron-expression/tests/Cron/DayOfMonthFieldTest.php index 0dae4ed6a0..2191b6bffa 100644 --- a/vendor/dragonmantank/cron-expression/tests/Cron/DayOfMonthFieldTest.php +++ b/vendor/dragonmantank/cron-expression/tests/Cron/DayOfMonthFieldTest.php @@ -4,6 +4,7 @@ use Cron\DayOfMonthField; use DateTime; +use DateTimeImmutable; use PHPUnit\Framework\TestCase; /** @@ -33,6 +34,7 @@ public function testChecksIfSatisfied() { $f = new DayOfMonthField(); $this->assertTrue($f->isSatisfiedBy(new DateTime(), '?')); + $this->assertTrue($f->isSatisfiedBy(new DateTimeImmutable(), '?')); } /** @@ -50,6 +52,17 @@ public function testIncrementsDate() $this->assertSame('2011-03-14 23:59:00', $d->format('Y-m-d H:i:s')); } + /** + * @covers \Cron\DayOfMonthField::increment + */ + public function testIncrementsDateTimeImmutable() + { + $d = new DateTimeImmutable('2011-03-15 11:15:00'); + $f = new DayOfMonthField(); + $f->increment($d); + $this->assertSame('2011-03-16 00:00:00', $d->format('Y-m-d H:i:s')); + } + /** * Day of the month cannot accept a 0 value, it must be between 1 and 31 * See Github issue #120 diff --git a/vendor/dragonmantank/cron-expression/tests/Cron/DayOfWeekFieldTest.php b/vendor/dragonmantank/cron-expression/tests/Cron/DayOfWeekFieldTest.php index d27c34df8a..ef89b47f27 100644 --- a/vendor/dragonmantank/cron-expression/tests/Cron/DayOfWeekFieldTest.php +++ b/vendor/dragonmantank/cron-expression/tests/Cron/DayOfWeekFieldTest.php @@ -4,6 +4,7 @@ use Cron\DayOfWeekField; use DateTime; +use DateTimeImmutable; use PHPUnit\Framework\TestCase; /** @@ -33,6 +34,7 @@ public function testChecksIfSatisfied() { $f = new DayOfWeekField(); $this->assertTrue($f->isSatisfiedBy(new DateTime(), '?')); + $this->assertTrue($f->isSatisfiedBy(new DateTimeImmutable(), '?')); } /** @@ -50,6 +52,17 @@ public function testIncrementsDate() $this->assertSame('2011-03-14 23:59:00', $d->format('Y-m-d H:i:s')); } + /** + * @covers \Cron\DayOfWeekField::increment + */ + public function testIncrementsDateTimeImmutable() + { + $d = new DateTimeImmutable('2011-03-15 11:15:00'); + $f = new DayOfWeekField(); + $f->increment($d); + $this->assertSame('2011-03-16 00:00:00', $d->format('Y-m-d H:i:s')); + } + /** * @covers \Cron\DayOfWeekField::isSatisfiedBy * @expectedException InvalidArgumentException @@ -103,6 +116,18 @@ public function testHandlesZeroAndSevenDayOfTheWeekValues() $this->assertTrue($f->isSatisfiedBy(new DateTime('2014-04-20 00:00:00'), '7#3')); } + /** + * @covers \Cron\DayOfWeekField::isSatisfiedBy + */ + public function testHandlesLastWeekdayOfTheMonth() + { + $f = new DayOfWeekField(); + $this->assertTrue($f->isSatisfiedBy(new DateTime('2018-12-28 00:00:00'), 'FRIL')); + $this->assertTrue($f->isSatisfiedBy(new DateTime('2018-12-28 00:00:00'), '5L')); + $this->assertFalse($f->isSatisfiedBy(new DateTime('2018-12-21 00:00:00'), 'FRIL')); + $this->assertFalse($f->isSatisfiedBy(new DateTime('2018-12-21 00:00:00'), '5L')); + } + /** * @see https://github.com/mtdowling/cron-expression/issues/47 */ diff --git a/vendor/dragonmantank/cron-expression/tests/Cron/HoursFieldTest.php b/vendor/dragonmantank/cron-expression/tests/Cron/HoursFieldTest.php index e936d11a64..1849f28bea 100644 --- a/vendor/dragonmantank/cron-expression/tests/Cron/HoursFieldTest.php +++ b/vendor/dragonmantank/cron-expression/tests/Cron/HoursFieldTest.php @@ -4,6 +4,7 @@ use Cron\HoursField; use DateTime; +use DateTimeImmutable; use PHPUnit\Framework\TestCase; /** @@ -22,7 +23,17 @@ public function testValidatesField() $this->assertTrue($f->validate('01')); $this->assertTrue($f->validate('*')); $this->assertFalse($f->validate('*/3,1,1-12')); - } + } + + /** + * @covers \Cron\HoursField::isSatisfiedBy + */ + public function testChecksIfSatisfied() + { + $f = new HoursField(); + $this->assertTrue($f->isSatisfiedBy(new DateTime(), '?')); + $this->assertTrue($f->isSatisfiedBy(new DateTimeImmutable(), '?')); + } /** * @covers \Cron\HoursField::increment @@ -39,6 +50,17 @@ public function testIncrementsDate() $this->assertSame('2011-03-15 10:59:00', $d->format('Y-m-d H:i:s')); } + /** + * @covers \Cron\HoursField::increment + */ + public function testIncrementsDateTimeImmutable() + { + $d = new DateTimeImmutable('2011-03-15 11:15:00'); + $f = new HoursField(); + $f->increment($d); + $this->assertSame('2011-03-15 12:00:00', $d->format('Y-m-d H:i:s')); + } + /** * @covers \Cron\HoursField::increment */ diff --git a/vendor/dragonmantank/cron-expression/tests/Cron/MinutesFieldTest.php b/vendor/dragonmantank/cron-expression/tests/Cron/MinutesFieldTest.php index b91bffac59..41a536d684 100644 --- a/vendor/dragonmantank/cron-expression/tests/Cron/MinutesFieldTest.php +++ b/vendor/dragonmantank/cron-expression/tests/Cron/MinutesFieldTest.php @@ -4,6 +4,7 @@ use Cron\MinutesField; use DateTime; +use DateTimeImmutable; use PHPUnit\Framework\TestCase; /** @@ -22,6 +23,16 @@ public function testValidatesField() $this->assertFalse($f->validate('*/3,1,1-12')); } + /** + * @covers \Cron\MinutesField::isSatisfiedBy + */ + public function testChecksIfSatisfied() + { + $f = new MinutesField(); + $this->assertTrue($f->isSatisfiedBy(new DateTime(), '?')); + $this->assertTrue($f->isSatisfiedBy(new DateTimeImmutable(), '?')); + } + /** * @covers \Cron\MinutesField::increment */ @@ -35,6 +46,17 @@ public function testIncrementsDate() $this->assertSame('2011-03-15 11:15:00', $d->format('Y-m-d H:i:s')); } + /** + * @covers \Cron\MinutesField::increment + */ + public function testIncrementsDateTimeImmutable() + { + $d = new DateTimeImmutable('2011-03-15 11:15:00'); + $f = new MinutesField(); + $f->increment($d); + $this->assertSame('2011-03-15 11:16:00', $d->format('Y-m-d H:i:s')); + } + /** * Various bad syntaxes that are reported to work, but shouldn't. * diff --git a/vendor/dragonmantank/cron-expression/tests/Cron/MonthFieldTest.php b/vendor/dragonmantank/cron-expression/tests/Cron/MonthFieldTest.php index 83f0f164b3..f329f4c161 100644 --- a/vendor/dragonmantank/cron-expression/tests/Cron/MonthFieldTest.php +++ b/vendor/dragonmantank/cron-expression/tests/Cron/MonthFieldTest.php @@ -4,6 +4,7 @@ use Cron\MonthField; use DateTime; +use DateTimeImmutable; use PHPUnit\Framework\TestCase; /** @@ -23,6 +24,16 @@ public function testValidatesField() $this->assertFalse($f->validate('1.fix-regexp')); } + /** + * @covers \Cron\MonthField::isSatisfiedBy + */ + public function testChecksIfSatisfied() + { + $f = new MonthField(); + $this->assertTrue($f->isSatisfiedBy(new DateTime(), '?')); + $this->assertTrue($f->isSatisfiedBy(new DateTimeImmutable(), '?')); + } + /** * @covers \Cron\MonthField::increment */ @@ -38,6 +49,17 @@ public function testIncrementsDate() $this->assertSame('2011-02-28 23:59:00', $d->format('Y-m-d H:i:s')); } + /** + * @covers \Cron\MonthField::increment + */ + public function testIncrementsDateTimeImmutable() + { + $d = new DateTimeImmutable('2011-03-15 11:15:00'); + $f = new MonthField(); + $f->increment($d); + $this->assertSame('2011-04-01 00:00:00', $d->format('Y-m-d H:i:s')); + } + /** * @covers \Cron\MonthField::increment */ diff --git a/vendor/erusev/parsedown/Parsedown.php b/vendor/erusev/parsedown/Parsedown.php index 87d612ab89..a34b44f0f0 100644 --- a/vendor/erusev/parsedown/Parsedown.php +++ b/vendor/erusev/parsedown/Parsedown.php @@ -17,7 +17,7 @@ class Parsedown { # ~ - const version = '1.7.1'; + const version = '1.7.3'; # ~ @@ -429,7 +429,21 @@ protected function blockFencedCode($Line) if (isset($matches[1])) { - $class = 'language-'.$matches[1]; + /** + * https://www.w3.org/TR/2011/WD-html5-20110525/elements.html#classes + * Every HTML element may have a class attribute specified. + * The attribute, if specified, must have a value that is a set + * of space-separated tokens representing the various classes + * that the element belongs to. + * [...] + * The space characters, for the purposes of this specification, + * are U+0020 SPACE, U+0009 CHARACTER TABULATION (tab), + * U+000A LINE FEED (LF), U+000C FORM FEED (FF), and + * U+000D CARRIAGE RETURN (CR). + */ + $language = substr($matches[1], 0, strcspn($matches[1], " \t\n\f\r")); + + $class = 'language-'.$language; $Element['attributes'] = array( 'class' => $class, diff --git a/vendor/laravel/framework/composer.json b/vendor/laravel/framework/composer.json index feee84087c..645ac7b280 100644 --- a/vendor/laravel/framework/composer.json +++ b/vendor/laravel/framework/composer.json @@ -16,31 +16,31 @@ ], "require": { "php": "^7.1.3", + "ext-json": "*", "ext-mbstring": "*", "ext-openssl": "*", "doctrine/inflector": "^1.1", "dragonmantank/cron-expression": "^2.0", + "egulias/email-validator": "^2.0", "erusev/parsedown": "^1.7", - "laravel/nexmo-notification-channel": "^1.0", - "laravel/slack-notification-channel": "^1.0", "league/flysystem": "^1.0.8", "monolog/monolog": "^1.12", - "nesbot/carbon": "^1.26.3", + "nesbot/carbon": "^1.26.3 || ^2.0", "opis/closure": "^3.1", "psr/container": "^1.0", "psr/simple-cache": "^1.0", "ramsey/uuid": "^3.7", "swiftmailer/swiftmailer": "^6.0", - "symfony/console": "^4.1", - "symfony/debug": "^4.1", - "symfony/finder": "^4.1", - "symfony/http-foundation": "^4.1", - "symfony/http-kernel": "^4.1", - "symfony/process": "^4.1", - "symfony/routing": "^4.1", - "symfony/var-dumper": "^4.1", + "symfony/console": "^4.2", + "symfony/debug": "^4.2", + "symfony/finder": "^4.2", + "symfony/http-foundation": "^4.2", + "symfony/http-kernel": "^4.2", + "symfony/process": "^4.2", + "symfony/routing": "^4.2", + "symfony/var-dumper": "^4.2", "tijsverkoyen/css-to-inline-styles": "^2.2.1", - "vlucas/phpdotenv": "^2.2" + "vlucas/phpdotenv": "^3.3" }, "replace": { "illuminate/auth": "self.version", @@ -83,12 +83,12 @@ "league/flysystem-cached-adapter": "^1.0", "mockery/mockery": "^1.0", "moontoast/math": "^1.1", - "orchestra/testbench-core": "3.7.*", - "pda/pheanstalk": "^3.0|^4.0", - "phpunit/phpunit": "^7.5", + "orchestra/testbench-core": "3.8.*", + "pda/pheanstalk": "^4.0", + "phpunit/phpunit": "^7.5|^8.0", "predis/predis": "^1.1.1", - "symfony/css-selector": "^4.1", - "symfony/dom-crawler": "^4.1", + "symfony/css-selector": "^4.2", + "symfony/dom-crawler": "^4.2", "true/punycode": "^2.1" }, "autoload": { @@ -110,7 +110,7 @@ }, "extra": { "branch-alias": { - "dev-master": "5.7-dev" + "dev-master": "5.8-dev" } }, "suggest": { @@ -128,12 +128,13 @@ "league/flysystem-sftp": "Required to use the Flysystem SFTP driver (^1.0).", "moontoast/math": "Required to use ordered UUIDs (^1.1).", "nexmo/client": "Required to use the Nexmo transport (^1.0).", - "pda/pheanstalk": "Required to use the beanstalk queue driver (^3.0|^4.0).", + "pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).", "predis/predis": "Required to use the redis cache and queue drivers (^1.0).", "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^3.0).", - "symfony/css-selector": "Required to use some of the crawler integration testing tools (^4.1).", - "symfony/dom-crawler": "Required to use most of the crawler integration testing tools (^4.1).", - "symfony/psr-http-message-bridge": "Required to psr7 bridging features (^1.0)." + "symfony/css-selector": "Required to use some of the crawler integration testing tools (^4.2).", + "symfony/dom-crawler": "Required to use most of the crawler integration testing tools (^4.2).", + "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^1.1).", + "wildbit/swiftmailer-postmark": "Required to use Postmark mail driver (^3.0)." }, "config": { "sort-packages": true diff --git a/vendor/laravel/framework/readme.md b/vendor/laravel/framework/readme.md index 834277a6e4..801b194942 100644 --- a/vendor/laravel/framework/readme.md +++ b/vendor/laravel/framework/readme.md @@ -20,7 +20,7 @@ Laravel is a web application framework with expressive, elegant syntax. We belie - [Robust background job processing](https://laravel.com/docs/queues). - [Real-time event broadcasting](https://laravel.com/docs/broadcasting). -Laravel is accessible, yet powerful, providing tools needed for large, robust applications. A superb combination of simplicity, elegance, and innovation gives you a complete toolset required to build any application with which you are tasked +Laravel is accessible, yet powerful, providing tools needed for large, robust applications. A superb combination of simplicity, elegance, and innovation gives you a complete toolset required to build any application with which you are tasked. ## Learning Laravel diff --git a/vendor/laravel/framework/src/Illuminate/Auth/Access/Gate.php b/vendor/laravel/framework/src/Illuminate/Auth/Access/Gate.php index 19db507651..58d26e7298 100644 --- a/vendor/laravel/framework/src/Illuminate/Auth/Access/Gate.php +++ b/vendor/laravel/framework/src/Illuminate/Auth/Access/Gate.php @@ -57,6 +57,20 @@ class Gate implements GateContract */ protected $afterCallbacks = []; + /** + * All of the defined abilities using class@method notation. + * + * @var array + */ + protected $stringCallbacks = []; + + /** + * The callback to be used to guess policy names. + * + * @var callable|null + */ + protected $guessPolicyNamesUsingCallback; + /** * Create a new gate instance. * @@ -66,10 +80,12 @@ class Gate implements GateContract * @param array $policies * @param array $beforeCallbacks * @param array $afterCallbacks + * @param callable|null $guessPolicyNamesUsingCallback * @return void */ public function __construct(Container $container, callable $userResolver, array $abilities = [], - array $policies = [], array $beforeCallbacks = [], array $afterCallbacks = []) + array $policies = [], array $beforeCallbacks = [], array $afterCallbacks = [], + callable $guessPolicyNamesUsingCallback = null) { $this->policies = $policies; $this->container = $container; @@ -77,6 +93,7 @@ public function __construct(Container $container, callable $userResolver, array $this->userResolver = $userResolver; $this->afterCallbacks = $afterCallbacks; $this->beforeCallbacks = $beforeCallbacks; + $this->guessPolicyNamesUsingCallback = $guessPolicyNamesUsingCallback; } /** @@ -112,6 +129,8 @@ public function define($ability, $callback) if (is_callable($callback)) { $this->abilities[$ability] = $callback; } elseif (is_string($callback)) { + $this->stringCallbacks[$ability] = $callback; + $this->abilities[$ability] = $this->buildAbilityCallback($ability, $callback); } else { throw new InvalidArgumentException("Callback must be a callable or a 'Class@method' string."); @@ -276,6 +295,18 @@ public function any($abilities, $arguments = []) }); } + /** + * Determine if all of the given abilities should be denied for the current user. + * + * @param iterable|string $abilities + * @param array|mixed $arguments + * @return bool + */ + public function none($abilities, $arguments = []) + { + return ! $this->any($abilities, $arguments); + } + /** * Determine if the given ability should be granted for the current user. * @@ -431,14 +462,12 @@ protected function callAuthCallback($user, $ability, array $arguments) */ protected function callBeforeCallbacks($user, $ability, array $arguments) { - $arguments = array_merge([$user, $ability], [$arguments]); - foreach ($this->beforeCallbacks as $before) { if (! $this->canBeCalledWithUser($user, $before)) { continue; } - if (! is_null($result = $before(...$arguments))) { + if (! is_null($result = $before($user, $ability, $arguments))) { return $result; } } @@ -484,13 +513,20 @@ protected function resolveAuthCallback($user, $ability, array $arguments) return $callback; } + if (isset($this->stringCallbacks[$ability])) { + [$class, $method] = Str::parseCallback($this->stringCallbacks[$ability]); + + if ($this->canBeCalledWithUser($user, $class, $method ?: '__invoke')) { + return $this->abilities[$ability]; + } + } + if (isset($this->abilities[$ability]) && $this->canBeCalledWithUser($user, $this->abilities[$ability])) { return $this->abilities[$ability]; } return function () { - return null; }; } @@ -514,6 +550,12 @@ public function getPolicyFor($class) return $this->resolvePolicy($this->policies[$class]); } + foreach ($this->guessPolicyName($class) as $guessedPolicy) { + if (class_exists($guessedPolicy)) { + return $this->resolvePolicy($guessedPolicy); + } + } + foreach ($this->policies as $expected => $policy) { if (is_subclass_of($class, $expected)) { return $this->resolvePolicy($policy); @@ -521,6 +563,36 @@ public function getPolicyFor($class) } } + /** + * Guess the policy name for the given class. + * + * @param string $class + * @return array + */ + protected function guessPolicyName($class) + { + if ($this->guessPolicyNamesUsingCallback) { + return Arr::wrap(call_user_func($this->guessPolicyNamesUsingCallback, $class)); + } + + $classDirname = str_replace('/', '\\', dirname(str_replace('\\', '/', $class))); + + return [$classDirname.'\\Policies\\'.class_basename($class).'Policy']; + } + + /** + * Specify a callback to be used to guess policy names. + * + * @param callable $callback + * @return $this + */ + public function guessPolicyNamesUsing(callable $callback) + { + $this->guessPolicyNamesUsingCallback = $callback; + + return $this; + } + /** * Build a policy class instance of the given type. * @@ -580,7 +652,7 @@ protected function resolvePolicyCallback($user, $ability, array $arguments, $pol protected function callPolicyBefore($policy, $user, $ability, $arguments) { if (! method_exists($policy, 'before')) { - return null; + return; } if ($this->canBeCalledWithUser($user, $policy, 'before')) { @@ -607,7 +679,7 @@ protected function callPolicyMethod($policy, $method, $user, array $arguments) } if (! is_callable([$policy, $method])) { - return null; + return; } if ($this->canBeCalledWithUser($user, $policy, $method)) { @@ -640,7 +712,8 @@ public function forUser($user) return new static( $this->container, $callback, $this->abilities, - $this->policies, $this->beforeCallbacks, $this->afterCallbacks + $this->policies, $this->beforeCallbacks, $this->afterCallbacks, + $this->guessPolicyNamesUsingCallback ); } diff --git a/vendor/laravel/framework/src/Illuminate/Auth/AuthManager.php b/vendor/laravel/framework/src/Illuminate/Auth/AuthManager.php index e4e5b415ba..f57f316dda 100755 --- a/vendor/laravel/framework/src/Illuminate/Auth/AuthManager.php +++ b/vendor/laravel/framework/src/Illuminate/Auth/AuthManager.php @@ -13,7 +13,7 @@ class AuthManager implements FactoryContract /** * The application instance. * - * @var \Illuminate\Foundation\Application + * @var \Illuminate\Contracts\Foundation\Application */ protected $app; @@ -43,7 +43,7 @@ class AuthManager implements FactoryContract /** * Create a new Auth manager instance. * - * @param \Illuminate\Foundation\Application $app + * @param \Illuminate\Contracts\Foundation\Application $app * @return void */ public function __construct($app) @@ -94,7 +94,9 @@ protected function resolve($name) return $this->{$driverMethod}($name, $config); } - throw new InvalidArgumentException("Auth driver [{$config['driver']}] for guard [{$name}] is not defined."); + throw new InvalidArgumentException( + "Auth driver [{$config['driver']}] for guard [{$name}] is not defined." + ); } /** @@ -156,7 +158,8 @@ public function createTokenDriver($name, $config) $this->createUserProvider($config['provider'] ?? null), $this->app['request'], $config['input_key'] ?? 'api_token', - $config['storage_key'] ?? 'api_token' + $config['storage_key'] ?? 'api_token', + $config['hash'] ?? false ); $this->app->refresh('request', $guard, 'setRequest'); diff --git a/vendor/laravel/framework/src/Illuminate/Auth/AuthServiceProvider.php b/vendor/laravel/framework/src/Illuminate/Auth/AuthServiceProvider.php index 2820beb48a..dfc554b278 100755 --- a/vendor/laravel/framework/src/Illuminate/Auth/AuthServiceProvider.php +++ b/vendor/laravel/framework/src/Illuminate/Auth/AuthServiceProvider.php @@ -17,12 +17,10 @@ class AuthServiceProvider extends ServiceProvider public function register() { $this->registerAuthenticator(); - $this->registerUserResolver(); - $this->registerAccessGate(); - $this->registerRequestRebindHandler(); + $this->registerEventRebindHandler(); } /** @@ -75,7 +73,7 @@ protected function registerAccessGate() } /** - * Register a resolver for the authenticated user. + * Handle the re-binding of the request binding. * * @return void */ @@ -87,4 +85,22 @@ protected function registerRequestRebindHandler() }); }); } + + /** + * Handle the re-binding of the event dispatcher binding. + * + * @return void + */ + protected function registerEventRebindHandler() + { + $this->app->rebinding('events', function ($app, $dispatcher) { + if (! $app->resolved('auth')) { + return; + } + + if (method_exists($guard = $app['auth']->guard(), 'setDispatcher')) { + $guard->setDispatcher($dispatcher); + } + }); + } } diff --git a/vendor/laravel/framework/src/Illuminate/Auth/Console/AuthMakeCommand.php b/vendor/laravel/framework/src/Illuminate/Auth/Console/AuthMakeCommand.php index cfe9597747..67dbf9a0e8 100644 --- a/vendor/laravel/framework/src/Illuminate/Auth/Console/AuthMakeCommand.php +++ b/vendor/laravel/framework/src/Illuminate/Auth/Console/AuthMakeCommand.php @@ -74,11 +74,11 @@ public function handle() */ protected function createDirectories() { - if (! is_dir($directory = resource_path('views/layouts'))) { + if (! is_dir($directory = $this->getViewPath('layouts'))) { mkdir($directory, 0755, true); } - if (! is_dir($directory = resource_path('views/auth/passwords'))) { + if (! is_dir($directory = $this->getViewPath('auth/passwords'))) { mkdir($directory, 0755, true); } } @@ -91,7 +91,7 @@ protected function createDirectories() protected function exportViews() { foreach ($this->views as $key => $value) { - if (file_exists($view = resource_path('views/'.$value)) && ! $this->option('force')) { + if (file_exists($view = $this->getViewPath($value)) && ! $this->option('force')) { if (! $this->confirm("The [{$value}] view already exists. Do you want to replace it?")) { continue; } @@ -117,4 +117,16 @@ protected function compileControllerStub() file_get_contents(__DIR__.'/stubs/make/controllers/HomeController.stub') ); } + + /** + * Get full view path relative to the app's configured view path. + * + * @return string + */ + protected function getViewPath($path) + { + return implode(DIRECTORY_SEPARATOR, [ + config('view.paths')[0] ?? resource_path('views'), $path, + ]); + } } diff --git a/vendor/laravel/framework/src/Illuminate/Auth/Console/stubs/make/views/auth/login.stub b/vendor/laravel/framework/src/Illuminate/Auth/Console/stubs/make/views/auth/login.stub index 9edb920ece..c12b97e577 100644 --- a/vendor/laravel/framework/src/Illuminate/Auth/Console/stubs/make/views/auth/login.stub +++ b/vendor/laravel/framework/src/Illuminate/Auth/Console/stubs/make/views/auth/login.stub @@ -15,13 +15,13 @@
- + - @if ($errors->has('email')) + @error('email') - {{ $errors->first('email') }} + {{ $message }} - @endif + @enderror
@@ -29,13 +29,13 @@
- + - @if ($errors->has('password')) + @error('password') - {{ $errors->first('password') }} + {{ $message }} - @endif + @enderror
diff --git a/vendor/laravel/framework/src/Illuminate/Auth/Console/stubs/make/views/auth/passwords/email.stub b/vendor/laravel/framework/src/Illuminate/Auth/Console/stubs/make/views/auth/passwords/email.stub index ccbee595c0..1fea98456d 100644 --- a/vendor/laravel/framework/src/Illuminate/Auth/Console/stubs/make/views/auth/passwords/email.stub +++ b/vendor/laravel/framework/src/Illuminate/Auth/Console/stubs/make/views/auth/passwords/email.stub @@ -21,13 +21,13 @@
- + - @if ($errors->has('email')) + @error('email') - {{ $errors->first('email') }} + {{ $message }} - @endif + @enderror
diff --git a/vendor/laravel/framework/src/Illuminate/Auth/Console/stubs/make/views/auth/passwords/reset.stub b/vendor/laravel/framework/src/Illuminate/Auth/Console/stubs/make/views/auth/passwords/reset.stub index bf27f4c856..989931d3a2 100644 --- a/vendor/laravel/framework/src/Illuminate/Auth/Console/stubs/make/views/auth/passwords/reset.stub +++ b/vendor/laravel/framework/src/Illuminate/Auth/Console/stubs/make/views/auth/passwords/reset.stub @@ -17,13 +17,13 @@
- + - @if ($errors->has('email')) + @error('email') - {{ $errors->first('email') }} + {{ $message }} - @endif + @enderror
@@ -31,13 +31,13 @@
- + - @if ($errors->has('password')) + @error('password') - {{ $errors->first('password') }} + {{ $message }} - @endif + @enderror
@@ -45,7 +45,7 @@
- +
diff --git a/vendor/laravel/framework/src/Illuminate/Auth/Console/stubs/make/views/auth/register.stub b/vendor/laravel/framework/src/Illuminate/Auth/Console/stubs/make/views/auth/register.stub index ad95f2cfd9..d236a48ecb 100644 --- a/vendor/laravel/framework/src/Illuminate/Auth/Console/stubs/make/views/auth/register.stub +++ b/vendor/laravel/framework/src/Illuminate/Auth/Console/stubs/make/views/auth/register.stub @@ -15,13 +15,13 @@
- + - @if ($errors->has('name')) + @error('name') - {{ $errors->first('name') }} + {{ $message }} - @endif + @enderror
@@ -29,13 +29,13 @@
- + - @if ($errors->has('email')) + @error('email') - {{ $errors->first('email') }} + {{ $message }} - @endif + @enderror
@@ -43,13 +43,13 @@
- + - @if ($errors->has('password')) + @error('password') - {{ $errors->first('password') }} + {{ $message }} - @endif + @enderror
@@ -57,7 +57,7 @@
- +
diff --git a/vendor/laravel/framework/src/Illuminate/Auth/EloquentUserProvider.php b/vendor/laravel/framework/src/Illuminate/Auth/EloquentUserProvider.php index 23b5b792cf..e3c40e6b35 100755 --- a/vendor/laravel/framework/src/Illuminate/Auth/EloquentUserProvider.php +++ b/vendor/laravel/framework/src/Illuminate/Auth/EloquentUserProvider.php @@ -47,9 +47,9 @@ public function retrieveById($identifier) { $model = $this->createModel(); - return $model->newQuery() - ->where($model->getAuthIdentifierName(), $identifier) - ->first(); + return $this->newModelQuery($model) + ->where($model->getAuthIdentifierName(), $identifier) + ->first(); } /** @@ -63,15 +63,18 @@ public function retrieveByToken($identifier, $token) { $model = $this->createModel(); - $model = $model->where($model->getAuthIdentifierName(), $identifier)->first(); + $retrievedModel = $this->newModelQuery($model)->where( + $model->getAuthIdentifierName(), $identifier + )->first(); - if (! $model) { - return null; + if (! $retrievedModel) { + return; } - $rememberToken = $model->getRememberToken(); + $rememberToken = $retrievedModel->getRememberToken(); - return $rememberToken && hash_equals($rememberToken, $token) ? $model : null; + return $rememberToken && hash_equals($rememberToken, $token) + ? $retrievedModel : null; } /** @@ -111,7 +114,7 @@ public function retrieveByCredentials(array $credentials) // First we will add each credential element to the query as a where clause. // Then we can execute the query and, if we found a user, return it in a // Eloquent User "model" that will be utilized by the Guard instances. - $query = $this->createModel()->newQuery(); + $query = $this->newModelQuery(); foreach ($credentials as $key => $value) { if (Str::contains($key, 'password')) { @@ -142,6 +145,19 @@ public function validateCredentials(UserContract $user, array $credentials) return $this->hasher->check($plain, $user->getAuthPassword()); } + /** + * Get a new query builder for the model instance. + * + * @param \Illuminate\Database\Eloquent\Model|null $model + * @return \Illuminate\Database\Eloquent\Builder + */ + protected function newModelQuery($model = null) + { + return is_null($model) + ? $this->createModel()->newQuery() + : $model->newQuery(); + } + /** * Create a new instance of the model. * diff --git a/vendor/laravel/framework/src/Illuminate/Auth/Events/OtherDeviceLogout.php b/vendor/laravel/framework/src/Illuminate/Auth/Events/OtherDeviceLogout.php new file mode 100644 index 0000000000..ea139a7b49 --- /dev/null +++ b/vendor/laravel/framework/src/Illuminate/Auth/Events/OtherDeviceLogout.php @@ -0,0 +1,37 @@ +user = $user; + $this->guard = $guard; + } +} diff --git a/vendor/laravel/framework/src/Illuminate/Auth/Middleware/Authorize.php b/vendor/laravel/framework/src/Illuminate/Auth/Middleware/Authorize.php index d1774d7911..00d8c95497 100644 --- a/vendor/laravel/framework/src/Illuminate/Auth/Middleware/Authorize.php +++ b/vendor/laravel/framework/src/Illuminate/Auth/Middleware/Authorize.php @@ -72,7 +72,12 @@ protected function getGateArguments($request, $models) */ protected function getModel($request, $model) { - return $this->isClassName($model) ? trim($model) : $request->route($model, $model); + if ($this->isClassName($model)) { + return trim($model); + } else { + return $request->route($model, null) ?: + ((preg_match("/^['\"](.*)['\"]$/", trim($model), $matches)) ? $matches[1] : null); + } } /** diff --git a/vendor/laravel/framework/src/Illuminate/Auth/Middleware/EnsureEmailIsVerified.php b/vendor/laravel/framework/src/Illuminate/Auth/Middleware/EnsureEmailIsVerified.php index f43855d39f..7ae80b2cab 100644 --- a/vendor/laravel/framework/src/Illuminate/Auth/Middleware/EnsureEmailIsVerified.php +++ b/vendor/laravel/framework/src/Illuminate/Auth/Middleware/EnsureEmailIsVerified.php @@ -13,16 +13,17 @@ class EnsureEmailIsVerified * * @param \Illuminate\Http\Request $request * @param \Closure $next + * @param string $redirectToRoute * @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse */ - public function handle($request, Closure $next) + public function handle($request, Closure $next, $redirectToRoute = null) { if (! $request->user() || ($request->user() instanceof MustVerifyEmail && ! $request->user()->hasVerifiedEmail())) { return $request->expectsJson() ? abort(403, 'Your email address is not verified.') - : Redirect::route('verification.notice'); + : Redirect::route($redirectToRoute ?: 'verification.notice'); } return $next($request); diff --git a/vendor/laravel/framework/src/Illuminate/Auth/Notifications/ResetPassword.php b/vendor/laravel/framework/src/Illuminate/Auth/Notifications/ResetPassword.php index 7a6cdff5df..05750f4bbe 100644 --- a/vendor/laravel/framework/src/Illuminate/Auth/Notifications/ResetPassword.php +++ b/vendor/laravel/framework/src/Illuminate/Auth/Notifications/ResetPassword.php @@ -59,7 +59,7 @@ public function toMail($notifiable) return (new MailMessage) ->subject(Lang::getFromJson('Reset Password Notification')) ->line(Lang::getFromJson('You are receiving this email because we received a password reset request for your account.')) - ->action(Lang::getFromJson('Reset Password'), url(config('app.url').route('password.reset', $this->token, false))) + ->action(Lang::getFromJson('Reset Password'), url(config('app.url').route('password.reset', ['token' => $this->token], false))) ->line(Lang::getFromJson('This password reset link will expire in :count minutes.', ['count' => config('auth.passwords.users.expire')])) ->line(Lang::getFromJson('If you did not request a password reset, no further action is required.')); } diff --git a/vendor/laravel/framework/src/Illuminate/Auth/Notifications/VerifyEmail.php b/vendor/laravel/framework/src/Illuminate/Auth/Notifications/VerifyEmail.php index f8f316260e..d92a71daae 100644 --- a/vendor/laravel/framework/src/Illuminate/Auth/Notifications/VerifyEmail.php +++ b/vendor/laravel/framework/src/Illuminate/Auth/Notifications/VerifyEmail.php @@ -5,6 +5,7 @@ use Illuminate\Support\Carbon; use Illuminate\Support\Facades\URL; use Illuminate\Support\Facades\Lang; +use Illuminate\Support\Facades\Config; use Illuminate\Notifications\Notification; use Illuminate\Notifications\Messages\MailMessage; @@ -59,7 +60,9 @@ public function toMail($notifiable) protected function verificationUrl($notifiable) { return URL::temporarySignedRoute( - 'verification.verify', Carbon::now()->addMinutes(60), ['id' => $notifiable->getKey()] + 'verification.verify', + Carbon::now()->addMinutes(Config::get('auth.verification.expire', 60)), + ['id' => $notifiable->getKey()] ); } diff --git a/vendor/laravel/framework/src/Illuminate/Auth/Passwords/PasswordBroker.php b/vendor/laravel/framework/src/Illuminate/Auth/Passwords/PasswordBroker.php index 66918fca08..cefb713760 100755 --- a/vendor/laravel/framework/src/Illuminate/Auth/Passwords/PasswordBroker.php +++ b/vendor/laravel/framework/src/Illuminate/Auth/Passwords/PasswordBroker.php @@ -172,7 +172,7 @@ protected function validatePasswordWithDefaults(array $credentials) $credentials['password_confirmation'], ]; - return $password === $confirm && mb_strlen($password) >= 6; + return $password === $confirm && mb_strlen($password) >= 8; } /** diff --git a/vendor/laravel/framework/src/Illuminate/Auth/Passwords/PasswordBrokerManager.php b/vendor/laravel/framework/src/Illuminate/Auth/Passwords/PasswordBrokerManager.php index 1d943bd64f..f73db6e75f 100644 --- a/vendor/laravel/framework/src/Illuminate/Auth/Passwords/PasswordBrokerManager.php +++ b/vendor/laravel/framework/src/Illuminate/Auth/Passwords/PasswordBrokerManager.php @@ -14,7 +14,7 @@ class PasswordBrokerManager implements FactoryContract /** * The application instance. * - * @var \Illuminate\Foundation\Application + * @var \Illuminate\Contracts\Foundation\Application */ protected $app; @@ -28,7 +28,7 @@ class PasswordBrokerManager implements FactoryContract /** * Create a new PasswordBroker manager instance. * - * @param \Illuminate\Foundation\Application $app + * @param \Illuminate\Contracts\Foundation\Application $app * @return void */ public function __construct($app) @@ -46,9 +46,7 @@ public function broker($name = null) { $name = $name ?: $this->getDefaultDriver(); - return isset($this->brokers[$name]) - ? $this->brokers[$name] - : $this->brokers[$name] = $this->resolve($name); + return $this->brokers[$name] ?? ($this->brokers[$name] = $this->resolve($name)); } /** diff --git a/vendor/laravel/framework/src/Illuminate/Auth/Passwords/PasswordResetServiceProvider.php b/vendor/laravel/framework/src/Illuminate/Auth/Passwords/PasswordResetServiceProvider.php index 165ecaf9fa..8df49f5041 100755 --- a/vendor/laravel/framework/src/Illuminate/Auth/Passwords/PasswordResetServiceProvider.php +++ b/vendor/laravel/framework/src/Illuminate/Auth/Passwords/PasswordResetServiceProvider.php @@ -3,16 +3,10 @@ namespace Illuminate\Auth\Passwords; use Illuminate\Support\ServiceProvider; +use Illuminate\Contracts\Support\DeferrableProvider; -class PasswordResetServiceProvider extends ServiceProvider +class PasswordResetServiceProvider extends ServiceProvider implements DeferrableProvider { - /** - * Indicates if loading of the provider is deferred. - * - * @var bool - */ - protected $defer = true; - /** * Register the service provider. * diff --git a/vendor/laravel/framework/src/Illuminate/Auth/SessionGuard.php b/vendor/laravel/framework/src/Illuminate/Auth/SessionGuard.php index 80b690c6b8..ccc68a2ab5 100644 --- a/vendor/laravel/framework/src/Illuminate/Auth/SessionGuard.php +++ b/vendor/laravel/framework/src/Illuminate/Auth/SessionGuard.php @@ -487,7 +487,7 @@ public function logout() // listening for anytime a user signs out of this application manually. $this->clearUserDataFromStorage(); - if (! is_null($this->user)) { + if (! is_null($this->user) && ! empty($user->getRememberToken())) { $this->cycleRememberToken($user); } @@ -550,7 +550,12 @@ public function logoutOtherDevices($password, $attribute = 'password') $attribute => Hash::make($password), ]))->save(); - $this->queueRecallerCookie($this->user()); + if ($this->recaller() || + $this->getCookieJar()->hasQueued($this->getRecallerName())) { + $this->queueRecallerCookie($this->user()); + } + + $this->fireOtherDeviceLogoutEvent($this->user()); return $result; } @@ -615,6 +620,21 @@ protected function fireAuthenticatedEvent($user) } } + /** + * Fire the other device logout event if the dispatcher is set. + * + * @param \Illuminate\Contracts\Auth\Authenticatable $user + * @return void + */ + protected function fireOtherDeviceLogoutEvent($user) + { + if (isset($this->events)) { + $this->events->dispatch(new Events\OtherDeviceLogout( + $this->name, $user + )); + } + } + /** * Fire the failed authentication attempt event with the given arguments. * diff --git a/vendor/laravel/framework/src/Illuminate/Auth/TokenGuard.php b/vendor/laravel/framework/src/Illuminate/Auth/TokenGuard.php index 56ac19b163..93fa257654 100644 --- a/vendor/laravel/framework/src/Illuminate/Auth/TokenGuard.php +++ b/vendor/laravel/framework/src/Illuminate/Auth/TokenGuard.php @@ -31,6 +31,13 @@ class TokenGuard implements Guard */ protected $storageKey; + /** + * Indicates if the API token is hashed in storage. + * + * @var bool + */ + protected $hash = false; + /** * Create a new authentication guard. * @@ -38,10 +45,17 @@ class TokenGuard implements Guard * @param \Illuminate\Http\Request $request * @param string $inputKey * @param string $storageKey + * @param bool $hash * @return void */ - public function __construct(UserProvider $provider, Request $request, $inputKey = 'api_token', $storageKey = 'api_token') + public function __construct( + UserProvider $provider, + Request $request, + $inputKey = 'api_token', + $storageKey = 'api_token', + $hash = false) { + $this->hash = $hash; $this->request = $request; $this->provider = $provider; $this->inputKey = $inputKey; @@ -67,9 +81,9 @@ public function user() $token = $this->getTokenForRequest(); if (! empty($token)) { - $user = $this->provider->retrieveByCredentials( - [$this->storageKey => $token] - ); + $user = $this->provider->retrieveByCredentials([ + $this->storageKey => $this->hash ? hash('sha256', $token) : $token, + ]); } return $this->user = $user; diff --git a/vendor/laravel/framework/src/Illuminate/Auth/composer.json b/vendor/laravel/framework/src/Illuminate/Auth/composer.json index ae98c7dc3f..f9eaf684fb 100755 --- a/vendor/laravel/framework/src/Illuminate/Auth/composer.json +++ b/vendor/laravel/framework/src/Illuminate/Auth/composer.json @@ -15,10 +15,10 @@ ], "require": { "php": "^7.1.3", - "illuminate/contracts": "5.7.*", - "illuminate/http": "5.7.*", - "illuminate/queue": "5.7.*", - "illuminate/support": "5.7.*" + "illuminate/contracts": "5.8.*", + "illuminate/http": "5.8.*", + "illuminate/queue": "5.8.*", + "illuminate/support": "5.8.*" }, "autoload": { "psr-4": { @@ -27,13 +27,13 @@ }, "extra": { "branch-alias": { - "dev-master": "5.7-dev" + "dev-master": "5.8-dev" } }, "suggest": { - "illuminate/console": "Required to use the auth:clear-resets command (5.7.*).", - "illuminate/queue": "Required to fire login / logout events (5.7.*).", - "illuminate/session": "Required to use the session based guard (5.7.*)." + "illuminate/console": "Required to use the auth:clear-resets command (5.8.*).", + "illuminate/queue": "Required to fire login / logout events (5.8.*).", + "illuminate/session": "Required to use the session based guard (5.8.*)." }, "config": { "sort-packages": true diff --git a/vendor/laravel/framework/src/Illuminate/Broadcasting/BroadcastManager.php b/vendor/laravel/framework/src/Illuminate/Broadcasting/BroadcastManager.php index e5d1e1e1cf..2005eaab4f 100644 --- a/vendor/laravel/framework/src/Illuminate/Broadcasting/BroadcastManager.php +++ b/vendor/laravel/framework/src/Illuminate/Broadcasting/BroadcastManager.php @@ -21,7 +21,7 @@ class BroadcastManager implements FactoryContract /** * The application instance. * - * @var \Illuminate\Foundation\Application + * @var \Illuminate\Contracts\Foundation\Application */ protected $app; @@ -42,7 +42,7 @@ class BroadcastManager implements FactoryContract /** * Create a new manager instance. * - * @param \Illuminate\Foundation\Application $app + * @param \Illuminate\Contracts\Foundation\Application $app * @return void */ public function __construct($app) @@ -165,7 +165,7 @@ protected function get($name) } /** - * Resolve the given store. + * Resolve the given broadcaster. * * @param string $name * @return \Illuminate\Contracts\Broadcasting\Broadcaster diff --git a/vendor/laravel/framework/src/Illuminate/Broadcasting/BroadcastServiceProvider.php b/vendor/laravel/framework/src/Illuminate/Broadcasting/BroadcastServiceProvider.php index adf88a6fc0..56628ef225 100644 --- a/vendor/laravel/framework/src/Illuminate/Broadcasting/BroadcastServiceProvider.php +++ b/vendor/laravel/framework/src/Illuminate/Broadcasting/BroadcastServiceProvider.php @@ -3,18 +3,12 @@ namespace Illuminate\Broadcasting; use Illuminate\Support\ServiceProvider; +use Illuminate\Contracts\Support\DeferrableProvider; use Illuminate\Contracts\Broadcasting\Factory as BroadcastingFactory; use Illuminate\Contracts\Broadcasting\Broadcaster as BroadcasterContract; -class BroadcastServiceProvider extends ServiceProvider +class BroadcastServiceProvider extends ServiceProvider implements DeferrableProvider { - /** - * Indicates if loading of the provider is deferred. - * - * @var bool - */ - protected $defer = true; - /** * Register the service provider. * diff --git a/vendor/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/Broadcaster.php b/vendor/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/Broadcaster.php index 9a458ea92a..39b9ec1d4b 100644 --- a/vendor/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/Broadcaster.php +++ b/vendor/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/Broadcaster.php @@ -5,6 +5,7 @@ use Exception; use ReflectionClass; use ReflectionFunction; +use Illuminate\Support\Arr; use Illuminate\Support\Str; use Illuminate\Container\Container; use Illuminate\Contracts\Routing\UrlRoutable; @@ -21,6 +22,13 @@ abstract class Broadcaster implements BroadcasterContract */ protected $channels = []; + /** + * The registered channel options. + * + * @var array + */ + protected $channelOptions = []; + /** * The binding registrar instance. * @@ -33,12 +41,15 @@ abstract class Broadcaster implements BroadcasterContract * * @param string $channel * @param callable|string $callback + * @param array $options * @return $this */ - public function channel($channel, $callback) + public function channel($channel, $callback, $options = []) { $this->channels[$channel] = $callback; + $this->channelOptions[$channel] = $options; + return $this; } @@ -54,7 +65,7 @@ public function channel($channel, $callback) protected function verifyUserCanAccessChannel($request, $channel) { foreach ($this->channels as $pattern => $callback) { - if (! Str::is(preg_replace('/\{(.*?)\}/', '*', $pattern), $channel)) { + if (! $this->channelNameMatchesPattern($channel, $pattern)) { continue; } @@ -62,7 +73,7 @@ protected function verifyUserCanAccessChannel($request, $channel) $handler = $this->normalizeChannelHandlerToCallable($callback); - if ($result = $handler($request->user(), ...$parameters)) { + if ($result = $handler($this->retrieveUser($request, $channel), ...$parameters)) { return $this->validAuthenticationResponse($request, $result); } } @@ -260,4 +271,59 @@ protected function normalizeChannelHandlerToCallable($callback) ->join(...$args); }; } + + /** + * Retrieve the authenticated user using the configured guard (if any). + * + * @param \Illuminate\Http\Request $request + * @param string $channel + * @return mixed + */ + protected function retrieveUser($request, $channel) + { + $options = $this->retrieveChannelOptions($channel); + + $guards = $options['guards'] ?? null; + + if (is_null($guards)) { + return $request->user(); + } + + foreach (Arr::wrap($guards) as $guard) { + if ($user = $request->user($guard)) { + return $user; + } + } + } + + /** + * Retrieve options for a certain channel. + * + * @param string $channel + * @return array + */ + protected function retrieveChannelOptions($channel) + { + foreach ($this->channelOptions as $pattern => $options) { + if (! $this->channelNameMatchesPattern($channel, $pattern)) { + continue; + } + + return $options; + } + + return []; + } + + /** + * Check if channel name from request match a pattern from registered channels. + * + * @param string $channel + * @param string $pattern + * @return bool + */ + protected function channelNameMatchesPattern($channel, $pattern) + { + return Str::is(preg_replace('/\{(.*?)\}/', '*', $pattern), $channel); + } } diff --git a/vendor/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/PusherBroadcaster.php b/vendor/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/PusherBroadcaster.php index 3b6ca5419c..5bdc305b45 100644 --- a/vendor/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/PusherBroadcaster.php +++ b/vendor/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/PusherBroadcaster.php @@ -10,6 +10,8 @@ class PusherBroadcaster extends Broadcaster { + use UsePusherChannelConventions; + /** * The Pusher SDK instance. * @@ -38,15 +40,13 @@ public function __construct(Pusher $pusher) */ public function auth($request) { - if (Str::startsWith($request->channel_name, ['private-', 'presence-']) && - ! $request->user()) { + $channelName = $this->normalizeChannelName($request->channel_name); + + if ($this->isGuardedChannel($request->channel_name) && + ! $this->retrieveUser($request, $channelName)) { throw new AccessDeniedHttpException; } - $channelName = Str::startsWith($request->channel_name, 'private-') - ? Str::replaceFirst('private-', '', $request->channel_name) - : Str::replaceFirst('presence-', '', $request->channel_name); - return parent::verifyUserCanAccessChannel( $request, $channelName ); @@ -67,11 +67,13 @@ public function validAuthenticationResponse($request, $result) ); } + $channelName = $this->normalizeChannelName($request->channel_name); + return $this->decodePusherResponse( $request, $this->pusher->presence_auth( $request->channel_name, $request->socket_id, - $request->user()->getAuthIdentifier(), $result + $this->retrieveUser($request, $channelName)->getAuthIdentifier(), $result ) ); } diff --git a/vendor/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/RedisBroadcaster.php b/vendor/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/RedisBroadcaster.php index 2351e49e6e..b001c1d8df 100644 --- a/vendor/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/RedisBroadcaster.php +++ b/vendor/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/RedisBroadcaster.php @@ -3,12 +3,13 @@ namespace Illuminate\Broadcasting\Broadcasters; use Illuminate\Support\Arr; -use Illuminate\Support\Str; use Illuminate\Contracts\Redis\Factory as Redis; use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException; class RedisBroadcaster extends Broadcaster { + use UsePusherChannelConventions; + /** * The Redis instance. * @@ -46,15 +47,13 @@ public function __construct(Redis $redis, $connection = null) */ public function auth($request) { - if (Str::startsWith($request->channel_name, ['private-', 'presence-']) && - ! $request->user()) { + $channelName = $this->normalizeChannelName($request->channel_name); + + if ($this->isGuardedChannel($request->channel_name) && + ! $this->retrieveUser($request, $channelName)) { throw new AccessDeniedHttpException; } - $channelName = Str::startsWith($request->channel_name, 'private-') - ? Str::replaceFirst('private-', '', $request->channel_name) - : Str::replaceFirst('presence-', '', $request->channel_name); - return parent::verifyUserCanAccessChannel( $request, $channelName ); @@ -73,8 +72,10 @@ public function validAuthenticationResponse($request, $result) return json_encode($result); } + $channelName = $this->normalizeChannelName($request->channel_name); + return json_encode(['channel_data' => [ - 'user_id' => $request->user()->getAuthIdentifier(), + 'user_id' => $this->retrieveUser($request, $channelName)->getAuthIdentifier(), 'user_info' => $result, ]]); } diff --git a/vendor/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/UsePusherChannelConventions.php b/vendor/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/UsePusherChannelConventions.php new file mode 100644 index 0000000000..df43facdda --- /dev/null +++ b/vendor/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/UsePusherChannelConventions.php @@ -0,0 +1,36 @@ +isGuardedChannel($channel)) { + return Str::startsWith($channel, 'private-') + ? Str::replaceFirst('private-', '', $channel) + : Str::replaceFirst('presence-', '', $channel); + } + + return $channel; + } +} diff --git a/vendor/laravel/framework/src/Illuminate/Broadcasting/composer.json b/vendor/laravel/framework/src/Illuminate/Broadcasting/composer.json index 5e7e5a289d..bf6981f8fe 100644 --- a/vendor/laravel/framework/src/Illuminate/Broadcasting/composer.json +++ b/vendor/laravel/framework/src/Illuminate/Broadcasting/composer.json @@ -15,11 +15,12 @@ ], "require": { "php": "^7.1.3", + "ext-json": "*", "psr/log": "^1.0", - "illuminate/bus": "5.7.*", - "illuminate/contracts": "5.7.*", - "illuminate/queue": "5.7.*", - "illuminate/support": "5.7.*" + "illuminate/bus": "5.8.*", + "illuminate/contracts": "5.8.*", + "illuminate/queue": "5.8.*", + "illuminate/support": "5.8.*" }, "autoload": { "psr-4": { @@ -28,7 +29,7 @@ }, "extra": { "branch-alias": { - "dev-master": "5.7-dev" + "dev-master": "5.8-dev" } }, "suggest": { diff --git a/vendor/laravel/framework/src/Illuminate/Bus/BusServiceProvider.php b/vendor/laravel/framework/src/Illuminate/Bus/BusServiceProvider.php index ade4a77a2e..d41fe6a0b0 100644 --- a/vendor/laravel/framework/src/Illuminate/Bus/BusServiceProvider.php +++ b/vendor/laravel/framework/src/Illuminate/Bus/BusServiceProvider.php @@ -3,19 +3,13 @@ namespace Illuminate\Bus; use Illuminate\Support\ServiceProvider; +use Illuminate\Contracts\Support\DeferrableProvider; use Illuminate\Contracts\Bus\Dispatcher as DispatcherContract; use Illuminate\Contracts\Queue\Factory as QueueFactoryContract; use Illuminate\Contracts\Bus\QueueingDispatcher as QueueingDispatcherContract; -class BusServiceProvider extends ServiceProvider +class BusServiceProvider extends ServiceProvider implements DeferrableProvider { - /** - * Indicates if loading of the provider is deferred. - * - * @var bool - */ - protected $defer = true; - /** * Register the service provider. * diff --git a/vendor/laravel/framework/src/Illuminate/Bus/composer.json b/vendor/laravel/framework/src/Illuminate/Bus/composer.json index da911fda43..d266246646 100644 --- a/vendor/laravel/framework/src/Illuminate/Bus/composer.json +++ b/vendor/laravel/framework/src/Illuminate/Bus/composer.json @@ -15,9 +15,9 @@ ], "require": { "php": "^7.1.3", - "illuminate/contracts": "5.7.*", - "illuminate/pipeline": "5.7.*", - "illuminate/support": "5.7.*" + "illuminate/contracts": "5.8.*", + "illuminate/pipeline": "5.8.*", + "illuminate/support": "5.8.*" }, "autoload": { "psr-4": { @@ -26,7 +26,7 @@ }, "extra": { "branch-alias": { - "dev-master": "5.7-dev" + "dev-master": "5.8-dev" } }, "config": { diff --git a/vendor/laravel/framework/src/Illuminate/Cache/ApcStore.php b/vendor/laravel/framework/src/Illuminate/Cache/ApcStore.php index db11ea4ebf..dc5e2f08a5 100755 --- a/vendor/laravel/framework/src/Illuminate/Cache/ApcStore.php +++ b/vendor/laravel/framework/src/Illuminate/Cache/ApcStore.php @@ -2,9 +2,7 @@ namespace Illuminate\Cache; -use Illuminate\Contracts\Cache\Store; - -class ApcStore extends TaggableStore implements Store +class ApcStore extends TaggableStore { use RetrievesMultipleKeys; @@ -51,16 +49,16 @@ public function get($key) } /** - * Store an item in the cache for a given number of minutes. + * Store an item in the cache for a given number of seconds. * * @param string $key * @param mixed $value - * @param float|int $minutes - * @return void + * @param int $seconds + * @return bool */ - public function put($key, $value, $minutes) + public function put($key, $value, $seconds) { - $this->apc->put($this->prefix.$key, $value, (int) ($minutes * 60)); + return $this->apc->put($this->prefix.$key, $value, $seconds); } /** @@ -92,11 +90,11 @@ public function decrement($key, $value = 1) * * @param string $key * @param mixed $value - * @return void + * @return bool */ public function forever($key, $value) { - $this->put($key, $value, 0); + return $this->put($key, $value, 0); } /** diff --git a/vendor/laravel/framework/src/Illuminate/Cache/ArrayStore.php b/vendor/laravel/framework/src/Illuminate/Cache/ArrayStore.php index 806f97116b..cf95fe31a9 100755 --- a/vendor/laravel/framework/src/Illuminate/Cache/ArrayStore.php +++ b/vendor/laravel/framework/src/Illuminate/Cache/ArrayStore.php @@ -2,11 +2,11 @@ namespace Illuminate\Cache; -use Illuminate\Contracts\Cache\Store; +use Illuminate\Support\InteractsWithTime; -class ArrayStore extends TaggableStore implements Store +class ArrayStore extends TaggableStore { - use RetrievesMultipleKeys; + use InteractsWithTime, RetrievesMultipleKeys; /** * The array of stored values. @@ -23,20 +23,39 @@ class ArrayStore extends TaggableStore implements Store */ public function get($key) { - return $this->storage[$key] ?? null; + if (! isset($this->storage[$key])) { + return; + } + + $item = $this->storage[$key]; + + $expiresAt = $item['expiresAt'] ?? 0; + + if ($expiresAt !== 0 && $this->currentTime() > $expiresAt) { + $this->forget($key); + + return; + } + + return $item['value']; } /** - * Store an item in the cache for a given number of minutes. + * Store an item in the cache for a given number of seconds. * * @param string $key * @param mixed $value - * @param float|int $minutes - * @return void + * @param int $seconds + * @return bool */ - public function put($key, $value, $minutes) + public function put($key, $value, $seconds) { - $this->storage[$key] = $value; + $this->storage[$key] = [ + 'value' => $value, + 'expiresAt' => $this->calculateExpiration($seconds), + ]; + + return true; } /** @@ -48,10 +67,15 @@ public function put($key, $value, $minutes) */ public function increment($key, $value = 1) { - $this->storage[$key] = ! isset($this->storage[$key]) - ? $value : ((int) $this->storage[$key]) + $value; + if (! isset($this->storage[$key])) { + $this->forever($key, $value); + + return $this->storage[$key]['value']; + } + + $this->storage[$key]['value'] = ((int) $this->storage[$key]['value']) + $value; - return $this->storage[$key]; + return $this->storage[$key]['value']; } /** @@ -71,11 +95,11 @@ public function decrement($key, $value = 1) * * @param string $key * @param mixed $value - * @return void + * @return bool */ public function forever($key, $value) { - $this->put($key, $value, 0); + return $this->put($key, $value, 0); } /** @@ -112,4 +136,26 @@ public function getPrefix() { return ''; } + + /** + * Get the expiration time of the key. + * + * @param int $seconds + * @return int + */ + protected function calculateExpiration($seconds) + { + return $this->toTimestamp($seconds); + } + + /** + * Get the UNIX timestamp for the given number of seconds. + * + * @param int $seconds + * @return int + */ + protected function toTimestamp($seconds) + { + return $seconds > 0 ? $this->availableAt($seconds) : 0; + } } diff --git a/vendor/laravel/framework/src/Illuminate/Cache/CacheManager.php b/vendor/laravel/framework/src/Illuminate/Cache/CacheManager.php index 2d8f7c4aed..ecd51eeaaa 100755 --- a/vendor/laravel/framework/src/Illuminate/Cache/CacheManager.php +++ b/vendor/laravel/framework/src/Illuminate/Cache/CacheManager.php @@ -3,7 +3,9 @@ namespace Illuminate\Cache; use Closure; +use Illuminate\Support\Arr; use InvalidArgumentException; +use Aws\DynamoDb\DynamoDbClient; use Illuminate\Contracts\Cache\Store; use Illuminate\Contracts\Cache\Factory as FactoryContract; use Illuminate\Contracts\Events\Dispatcher as DispatcherContract; @@ -16,7 +18,7 @@ class CacheManager implements FactoryContract /** * The application instance. * - * @var \Illuminate\Foundation\Application + * @var \Illuminate\Contracts\Foundation\Application */ protected $app; @@ -37,7 +39,7 @@ class CacheManager implements FactoryContract /** * Create a new Cache manager instance. * - * @param \Illuminate\Foundation\Application $app + * @param \Illuminate\Contracts\Foundation\Application $app * @return void */ public function __construct($app) @@ -216,6 +218,37 @@ protected function createDatabaseDriver(array $config) ); } + /** + * Create an instance of the DynamoDB cache driver. + * + * @param array $config + * @return \Illuminate\Cache\Repository + */ + protected function createDynamodbDriver(array $config) + { + $dynamoConfig = [ + 'region' => $config['region'], + 'version' => 'latest', + ]; + + if ($config['key'] && $config['secret']) { + $dynamoConfig['credentials'] = Arr::only( + $config, ['key', 'secret', 'token'] + ); + } + + return $this->repository( + new DynamoDbStore( + new DynamoDbClient($dynamoConfig), + $config['table'], + $config['attributes']['key'] ?? 'key', + $config['attributes']['value'] ?? 'value', + $config['attributes']['expiration'] ?? 'expires_at', + $this->getPrefix($config) + ) + ); + } + /** * Create a new cache repository with the given implementation. * diff --git a/vendor/laravel/framework/src/Illuminate/Cache/CacheServiceProvider.php b/vendor/laravel/framework/src/Illuminate/Cache/CacheServiceProvider.php index 8eb5ed60ad..8b6e929d23 100755 --- a/vendor/laravel/framework/src/Illuminate/Cache/CacheServiceProvider.php +++ b/vendor/laravel/framework/src/Illuminate/Cache/CacheServiceProvider.php @@ -3,16 +3,10 @@ namespace Illuminate\Cache; use Illuminate\Support\ServiceProvider; +use Illuminate\Contracts\Support\DeferrableProvider; -class CacheServiceProvider extends ServiceProvider +class CacheServiceProvider extends ServiceProvider implements DeferrableProvider { - /** - * Indicates if loading of the provider is deferred. - * - * @var bool - */ - protected $defer = true; - /** * Register the service provider. * diff --git a/vendor/laravel/framework/src/Illuminate/Cache/DatabaseStore.php b/vendor/laravel/framework/src/Illuminate/Cache/DatabaseStore.php index 8a68c50734..a7de61bb1e 100755 --- a/vendor/laravel/framework/src/Illuminate/Cache/DatabaseStore.php +++ b/vendor/laravel/framework/src/Illuminate/Cache/DatabaseStore.php @@ -84,25 +84,27 @@ public function get($key) } /** - * Store an item in the cache for a given number of minutes. + * Store an item in the cache for a given number of seconds. * * @param string $key * @param mixed $value - * @param float|int $minutes - * @return void + * @param int $seconds + * @return bool */ - public function put($key, $value, $minutes) + public function put($key, $value, $seconds) { $key = $this->prefix.$key; $value = $this->serialize($value); - $expiration = $this->getTime() + (int) ($minutes * 60); + $expiration = $this->getTime() + $seconds; try { - $this->table()->insert(compact('key', 'value', 'expiration')); + return $this->table()->insert(compact('key', 'value', 'expiration')); } catch (Exception $e) { - $this->table()->where('key', $key)->update(compact('value', 'expiration')); + $result = $this->table()->where('key', $key)->update(compact('value', 'expiration')); + + return $result > 0; } } @@ -196,11 +198,11 @@ protected function getTime() * * @param string $key * @param mixed $value - * @return void + * @return bool */ public function forever($key, $value) { - $this->put($key, $value, 5256000); + return $this->put($key, $value, 315360000); } /** diff --git a/vendor/laravel/framework/src/Illuminate/Cache/DynamoDbLock.php b/vendor/laravel/framework/src/Illuminate/Cache/DynamoDbLock.php new file mode 100644 index 0000000000..abeabc139d --- /dev/null +++ b/vendor/laravel/framework/src/Illuminate/Cache/DynamoDbLock.php @@ -0,0 +1,73 @@ +dynamo = $dynamo; + } + + /** + * Attempt to acquire the lock. + * + * @return bool + */ + public function acquire() + { + return $this->dynamo->add( + $this->name, $this->owner, $this->seconds + ); + } + + /** + * Release the lock. + * + * @return void + */ + public function release() + { + if ($this->isOwnedByCurrentProcess()) { + $this->dynamo->forget($this->name); + } + } + + /** + * Release this lock in disregard of ownership. + * + * @return void + */ + public function forceRelease() + { + $this->dynamo->forget($this->name); + } + + /** + * Returns the owner value written into the driver for this lock. + * + * @return mixed + */ + protected function getCurrentOwner() + { + return $this->dynamo->get($this->name); + } +} diff --git a/vendor/laravel/framework/src/Illuminate/Cache/DynamoDbStore.php b/vendor/laravel/framework/src/Illuminate/Cache/DynamoDbStore.php new file mode 100644 index 0000000000..de55d2ec15 --- /dev/null +++ b/vendor/laravel/framework/src/Illuminate/Cache/DynamoDbStore.php @@ -0,0 +1,525 @@ +table = $table; + $this->dynamo = $dynamo; + $this->keyAttribute = $keyAttribute; + $this->valueAttribute = $valueAttribute; + $this->expirationAttribute = $expirationAttribute; + + $this->setPrefix($prefix); + } + + /** + * Retrieve an item from the cache by key. + * + * @param string $key + * @return mixed + */ + public function get($key) + { + $response = $this->dynamo->getItem([ + 'TableName' => $this->table, + 'ConsistentRead' => false, + 'Key' => [ + $this->keyAttribute => [ + 'S' => $this->prefix.$key, + ], + ], + ]); + + if (! isset($response['Item'])) { + return; + } + + if ($this->isExpired($response['Item'])) { + return; + } + + if (isset($response['Item'][$this->valueAttribute])) { + return $this->unserialize( + $response['Item'][$this->valueAttribute]['S'] ?? + $response['Item'][$this->valueAttribute]['N'] ?? + null + ); + } + } + + /** + * Retrieve multiple items from the cache by key. + * + * Items not found in the cache will have a null value. + * + * @param array $keys + * @return array + */ + public function many(array $keys) + { + $prefixedKeys = array_map(function ($key) { + return $this->prefix.$key; + }, $keys); + + $response = $this->dynamo->batchGetItem([ + 'RequestItems' => [ + $this->table => [ + 'ConsistentRead' => false, + 'Keys' => collect($prefixedKeys)->map(function ($key) { + return [ + $this->keyAttribute => [ + 'S' => $key, + ], + ]; + })->all(), + ], + ], + ]); + + $now = Carbon::now(); + + return array_merge(collect(array_flip($keys))->map(function () { + })->all(), collect($response['Responses'][$this->table])->mapWithKeys(function ($response) use ($now) { + if ($this->isExpired($response, $now)) { + $value = null; + } else { + $value = $this->unserialize( + $response[$this->valueAttribute]['S'] ?? + $response[$this->valueAttribute]['N'] ?? + null + ); + } + + return [Str::replaceFirst($this->prefix, '', $response[$this->keyAttribute]['S']) => $value]; + })->all()); + } + + /** + * Determine if the given item is expired. + * + * @param array $item + * @param \DateTimeInterface|null $expiration + * @return bool + */ + protected function isExpired(array $item, $expiration = null) + { + $expiration = $expiration ?: Carbon::now(); + + return isset($item[$this->expirationAttribute]) && + $expiration->getTimestamp() >= $item[$this->expirationAttribute]['N']; + } + + /** + * Store an item in the cache for a given number of seconds. + * + * @param string $key + * @param mixed $value + * @param int $seconds + * @return bool + */ + public function put($key, $value, $seconds) + { + $this->dynamo->putItem([ + 'TableName' => $this->table, + 'Item' => [ + $this->keyAttribute => [ + 'S' => $this->prefix.$key, + ], + $this->valueAttribute => [ + $this->type($value) => $this->serialize($value), + ], + $this->expirationAttribute => [ + 'N' => (string) $this->toTimestamp($seconds), + ], + ], + ]); + + return true; + } + + /** + * Store multiple items in the cache for a given number of $seconds. + * + * @param array $values + * @param int $seconds + * @return bool + */ + public function putMany(array $values, $seconds) + { + $expiration = $this->toTimestamp($seconds); + + $this->dynamo->batchWriteItem([ + 'RequestItems' => [ + $this->table => collect($values)->map(function ($value, $key) use ($expiration) { + return [ + 'PutRequest' => [ + 'Item' => [ + $this->keyAttribute => [ + 'S' => $this->prefix.$key, + ], + $this->valueAttribute => [ + $this->type($value) => $this->serialize($value), + ], + $this->expirationAttribute => [ + 'N' => (string) $expiration, + ], + ], + ], + ]; + })->values()->all(), + ], + ]); + + return true; + } + + /** + * Store an item in the cache if the key doesn't exist. + * + * @param string $key + * @param mixed $value + * @param int $seconds + * @return bool + */ + public function add($key, $value, $seconds) + { + try { + $this->dynamo->putItem([ + 'TableName' => $this->table, + 'Item' => [ + $this->keyAttribute => [ + 'S' => $this->prefix.$key, + ], + $this->valueAttribute => [ + $this->type($value) => $this->serialize($value), + ], + $this->expirationAttribute => [ + 'N' => (string) $this->toTimestamp($seconds), + ], + ], + 'ConditionExpression' => 'attribute_not_exists(#key) OR #expires_at < :now', + 'ExpressionAttributeNames' => [ + '#key' => $this->keyAttribute, + '#expires_at' => $this->expirationAttribute, + ], + 'ExpressionAttributeValues' => [ + ':now' => [ + 'N' => (string) Carbon::now()->getTimestamp(), + ], + ], + ]); + + return true; + } catch (DynamoDbException $e) { + if (Str::contains($e->getMessage(), 'ConditionalCheckFailed')) { + return false; + } + + throw $e; + } + } + + /** + * Increment the value of an item in the cache. + * + * @param string $key + * @param mixed $value + * @return int|bool + */ + public function increment($key, $value = 1) + { + try { + $response = $this->dynamo->updateItem([ + 'TableName' => $this->table, + 'Key' => [ + $this->keyAttribute => [ + 'S' => $this->prefix.$key, + ], + ], + 'ConditionExpression' => 'attribute_exists(#key) AND #expires_at > :now', + 'UpdateExpression' => 'SET #value = #value + :amount', + 'ExpressionAttributeNames' => [ + '#key' => $this->keyAttribute, + '#value' => $this->valueAttribute, + '#expires_at' => $this->expirationAttribute, + ], + 'ExpressionAttributeValues' => [ + ':now' => [ + 'N' => (string) Carbon::now()->getTimestamp(), + ], + ':amount' => [ + 'N' => (string) $value, + ], + ], + 'ReturnValues' => 'UPDATED_NEW', + ]); + + return (int) $response['Attributes'][$this->valueAttribute]['N']; + } catch (DynamoDbException $e) { + if (Str::contains($e->getMessage(), 'ConditionalCheckFailed')) { + return false; + } + + throw $e; + } + } + + /** + * Decrement the value of an item in the cache. + * + * @param string $key + * @param mixed $value + * @return int|bool + */ + public function decrement($key, $value = 1) + { + try { + $response = $this->dynamo->updateItem([ + 'TableName' => $this->table, + 'Key' => [ + $this->keyAttribute => [ + 'S' => $this->prefix.$key, + ], + ], + 'ConditionExpression' => 'attribute_exists(#key) AND #expires_at > :now', + 'UpdateExpression' => 'SET #value = #value - :amount', + 'ExpressionAttributeNames' => [ + '#key' => $this->keyAttribute, + '#value' => $this->valueAttribute, + '#expires_at' => $this->expirationAttribute, + ], + 'ExpressionAttributeValues' => [ + ':now' => [ + 'N' => (string) Carbon::now()->getTimestamp(), + ], + ':amount' => [ + 'N' => (string) $value, + ], + ], + 'ReturnValues' => 'UPDATED_NEW', + ]); + + return (int) $response['Attributes'][$this->valueAttribute]['N']; + } catch (DynamoDbException $e) { + if (Str::contains($e->getMessage(), 'ConditionalCheckFailed')) { + return false; + } + + throw $e; + } + } + + /** + * Store an item in the cache indefinitely. + * + * @param string $key + * @param mixed $value + * @return bool + */ + public function forever($key, $value) + { + return $this->put($key, $value, now()->addYears(5)); + } + + /** + * Get a lock instance. + * + * @param string $name + * @param int $seconds + * @param string|null $owner + * @return \Illuminate\Contracts\Cache\Lock + */ + public function lock($name, $seconds = 0, $owner = null) + { + return new DynamoDbLock($this, $this->prefix.$name, $seconds, $owner); + } + + /** + * Restore a lock instance using the owner identifier. + * + * @param string $name + * @param string $owner + * @return \Illuminate\Contracts\Cache\Lock + */ + public function restoreLock($name, $owner) + { + return $this->lock($name, 0, $owner); + } + + /** + * Remove an item from the cache. + * + * @param string $key + * @return bool + */ + public function forget($key) + { + $this->dynamo->deleteItem([ + 'TableName' => $this->table, + 'Key' => [ + $this->keyAttribute => [ + 'S' => $this->prefix.$key, + ], + ], + ]); + + return true; + } + + /** + * Remove all items from the cache. + * + * @return bool + */ + public function flush() + { + throw new RuntimeException('DynamoDb does not support flushing an entire table. Please create a new table.'); + } + + /** + * Get the UNIX timestamp for the given number of seconds. + * + * @param int $seconds + * @return int + */ + protected function toTimestamp($seconds) + { + return $seconds > 0 + ? $this->availableAt($seconds) + : Carbon::now()->getTimestamp(); + } + + /** + * Serialize the value. + * + * @param mixed $value + * @return mixed + */ + protected function serialize($value) + { + return is_numeric($value) ? (string) $value : serialize($value); + } + + /** + * Unserialize the value. + * + * @param mixed $value + * @return mixed + */ + protected function unserialize($value) + { + if (filter_var($value, FILTER_VALIDATE_INT) !== false) { + return (int) $value; + } + + if (is_numeric($value)) { + return (float) $value; + } + + return unserialize($value); + } + + /** + * Get the DynamoDB type for the given value. + * + * @param mixed $value + * @return string + */ + protected function type($value) + { + return is_numeric($value) ? 'N' : 'S'; + } + + /** + * Get the cache key prefix. + * + * @return string + */ + public function getPrefix() + { + return $this->prefix; + } + + /** + * Set the cache key prefix. + * + * @param string $prefix + * @return void + */ + public function setPrefix($prefix) + { + $this->prefix = ! empty($prefix) ? $prefix.':' : ''; + } +} diff --git a/vendor/laravel/framework/src/Illuminate/Cache/Events/KeyWritten.php b/vendor/laravel/framework/src/Illuminate/Cache/Events/KeyWritten.php index 82ad0893ed..6474dced83 100644 --- a/vendor/laravel/framework/src/Illuminate/Cache/Events/KeyWritten.php +++ b/vendor/laravel/framework/src/Illuminate/Cache/Events/KeyWritten.php @@ -12,26 +12,26 @@ class KeyWritten extends CacheEvent public $value; /** - * The number of minutes the key should be valid. + * The number of seconds the key should be valid. * - * @var int + * @var int|null */ - public $minutes; + public $seconds; /** * Create a new event instance. * * @param string $key * @param mixed $value - * @param int $minutes + * @param int|null $seconds * @param array $tags * @return void */ - public function __construct($key, $value, $minutes, $tags = []) + public function __construct($key, $value, $seconds = null, $tags = []) { parent::__construct($key, $tags); $this->value = $value; - $this->minutes = $minutes; + $this->seconds = $seconds; } } diff --git a/vendor/laravel/framework/src/Illuminate/Cache/FileStore.php b/vendor/laravel/framework/src/Illuminate/Cache/FileStore.php index cead4ac852..f48ebc2b19 100755 --- a/vendor/laravel/framework/src/Illuminate/Cache/FileStore.php +++ b/vendor/laravel/framework/src/Illuminate/Cache/FileStore.php @@ -50,20 +50,22 @@ public function get($key) } /** - * Store an item in the cache for a given number of minutes. + * Store an item in the cache for a given number of seconds. * * @param string $key * @param mixed $value - * @param float|int $minutes - * @return void + * @param int $seconds + * @return bool */ - public function put($key, $value, $minutes) + public function put($key, $value, $seconds) { $this->ensureCacheDirectoryExists($path = $this->path($key)); - $this->files->put( - $path, $this->expiration($minutes).serialize($value), true + $result = $this->files->put( + $path, $this->expiration($seconds).serialize($value), true ); + + return $result !== false && $result > 0; } /** @@ -112,11 +114,11 @@ public function decrement($key, $value = 1) * * @param string $key * @param mixed $value - * @return void + * @return bool */ public function forever($key, $value) { - $this->put($key, $value, 0); + return $this->put($key, $value, 0); } /** @@ -186,10 +188,10 @@ protected function getPayload($key) $data = unserialize(substr($contents, 10)); - // Next, we'll extract the number of minutes that are remaining for a cache + // Next, we'll extract the number of seconds that are remaining for a cache // so that we can properly retain the time for things like the increment // operation that may be performed on this cache on a later operation. - $time = ($expire - $this->currentTime()) / 60; + $time = $expire - $this->currentTime(); return compact('data', 'time'); } @@ -218,16 +220,16 @@ protected function path($key) } /** - * Get the expiration time based on the given minutes. + * Get the expiration time based on the given seconds. * - * @param float|int $minutes + * @param int $seconds * @return int */ - protected function expiration($minutes) + protected function expiration($seconds) { - $time = $this->availableAt((int) ($minutes * 60)); + $time = $this->availableAt($seconds); - return $minutes === 0 || $time > 9999999999 ? 9999999999 : (int) $time; + return $seconds === 0 || $time > 9999999999 ? 9999999999 : $time; } /** diff --git a/vendor/laravel/framework/src/Illuminate/Cache/Lock.php b/vendor/laravel/framework/src/Illuminate/Cache/Lock.php index f117246c08..ccbfbaf186 100644 --- a/vendor/laravel/framework/src/Illuminate/Cache/Lock.php +++ b/vendor/laravel/framework/src/Illuminate/Cache/Lock.php @@ -2,6 +2,7 @@ namespace Illuminate\Cache; +use Illuminate\Support\Str; use Illuminate\Support\InteractsWithTime; use Illuminate\Contracts\Cache\Lock as LockContract; use Illuminate\Contracts\Cache\LockTimeoutException; @@ -24,16 +25,29 @@ abstract class Lock implements LockContract */ protected $seconds; + /** + * The scope identifier of this lock. + * + * @var string + */ + protected $owner; + /** * Create a new lock instance. * * @param string $name * @param int $seconds + * @param string|null $owner * @return void */ - public function __construct($name, $seconds) + public function __construct($name, $seconds, $owner = null) { + if (is_null($owner)) { + $owner = Str::random(); + } + $this->name = $name; + $this->owner = $owner; $this->seconds = $seconds; } @@ -51,20 +65,29 @@ abstract public function acquire(); */ abstract public function release(); + /** + * Returns the owner value written into the driver for this lock. + * + * @return string + */ + abstract protected function getCurrentOwner(); + /** * Attempt to acquire the lock. * * @param callable|null $callback - * @return bool + * @return mixed */ public function get($callback = null) { $result = $this->acquire(); if ($result && is_callable($callback)) { - return tap($callback(), function () { + try { + return $callback(); + } finally { $this->release(); - }); + } } return $result; @@ -92,11 +115,33 @@ public function block($seconds, $callback = null) } if (is_callable($callback)) { - return tap($callback(), function () { + try { + return $callback(); + } finally { $this->release(); - }); + } } return true; } + + /** + * Returns the current owner of the lock. + * + * @return string + */ + public function owner() + { + return $this->owner; + } + + /** + * Determines whether this lock is allowed to release the lock in the driver. + * + * @return bool + */ + protected function isOwnedByCurrentProcess() + { + return $this->getCurrentOwner() === $this->owner; + } } diff --git a/vendor/laravel/framework/src/Illuminate/Cache/LuaScripts.php b/vendor/laravel/framework/src/Illuminate/Cache/LuaScripts.php new file mode 100644 index 0000000000..6d22fcd435 --- /dev/null +++ b/vendor/laravel/framework/src/Illuminate/Cache/LuaScripts.php @@ -0,0 +1,25 @@ +memcached = $memcached; } @@ -34,7 +35,7 @@ public function __construct($memcached, $name, $seconds) public function acquire() { return $this->memcached->add( - $this->name, 1, $this->seconds + $this->name, $this->owner, $this->seconds ); } @@ -44,7 +45,29 @@ public function acquire() * @return void */ public function release() + { + if ($this->isOwnedByCurrentProcess()) { + $this->memcached->delete($this->name); + } + } + + /** + * Releases this lock in disregard of ownership. + * + * @return void + */ + public function forceRelease() { $this->memcached->delete($this->name); } + + /** + * Returns the owner value written into the driver for this lock. + * + * @return mixed + */ + protected function getCurrentOwner() + { + return $this->memcached->get($this->name); + } } diff --git a/vendor/laravel/framework/src/Illuminate/Cache/MemcachedStore.php b/vendor/laravel/framework/src/Illuminate/Cache/MemcachedStore.php index 0d2d8c0f3d..827f60290a 100755 --- a/vendor/laravel/framework/src/Illuminate/Cache/MemcachedStore.php +++ b/vendor/laravel/framework/src/Illuminate/Cache/MemcachedStore.php @@ -4,21 +4,13 @@ use Memcached; use ReflectionMethod; -use Illuminate\Contracts\Cache\Store; use Illuminate\Support\InteractsWithTime; use Illuminate\Contracts\Cache\LockProvider; -class MemcachedStore extends TaggableStore implements LockProvider, Store +class MemcachedStore extends TaggableStore implements LockProvider { use InteractsWithTime; - /** - * The maximum value that can be specified as an expiration delta. - * - * @var int - */ - const REALTIME_MAXDELTA_IN_MINUTES = 43200; - /** * The Memcached instance. * @@ -101,28 +93,28 @@ public function many(array $keys) } /** - * Store an item in the cache for a given number of minutes. + * Store an item in the cache for a given number of seconds. * * @param string $key * @param mixed $value - * @param float|int $minutes - * @return void + * @param int $seconds + * @return bool */ - public function put($key, $value, $minutes) + public function put($key, $value, $seconds) { - $this->memcached->set( - $this->prefix.$key, $value, $this->calculateExpiration($minutes) + return $this->memcached->set( + $this->prefix.$key, $value, $this->calculateExpiration($seconds) ); } /** - * Store multiple items in the cache for a given number of minutes. + * Store multiple items in the cache for a given number of seconds. * * @param array $values - * @param float|int $minutes - * @return void + * @param int $seconds + * @return bool */ - public function putMany(array $values, $minutes) + public function putMany(array $values, $seconds) { $prefixedValues = []; @@ -130,8 +122,8 @@ public function putMany(array $values, $minutes) $prefixedValues[$this->prefix.$key] = $value; } - $this->memcached->setMulti( - $prefixedValues, $this->calculateExpiration($minutes) + return $this->memcached->setMulti( + $prefixedValues, $this->calculateExpiration($seconds) ); } @@ -140,13 +132,13 @@ public function putMany(array $values, $minutes) * * @param string $key * @param mixed $value - * @param float|int $minutes + * @param int $seconds * @return bool */ - public function add($key, $value, $minutes) + public function add($key, $value, $seconds) { return $this->memcached->add( - $this->prefix.$key, $value, $this->calculateExpiration($minutes) + $this->prefix.$key, $value, $this->calculateExpiration($seconds) ); } @@ -179,23 +171,36 @@ public function decrement($key, $value = 1) * * @param string $key * @param mixed $value - * @return void + * @return bool */ public function forever($key, $value) { - $this->put($key, $value, 0); + return $this->put($key, $value, 0); } /** * Get a lock instance. * + * @param string $name + * @param int $seconds + * @param string|null $owner + * @return \Illuminate\Contracts\Cache\Lock + */ + public function lock($name, $seconds = 0, $owner = null) + { + return new MemcachedLock($this->memcached, $this->prefix.$name, $seconds, $owner); + } + + /** + * Restore a lock instance using the owner identifier. + * * @param string $name - * @param int $seconds + * @param string $owner * @return \Illuminate\Contracts\Cache\Lock */ - public function lock($name, $seconds = 0) + public function restoreLock($name, $owner) { - return new MemcachedLock($this->memcached, $this->prefix.$name, $seconds); + return $this->lock($name, 0, $owner); } /** @@ -222,23 +227,23 @@ public function flush() /** * Get the expiration time of the key. * - * @param int $minutes + * @param int $seconds * @return int */ - protected function calculateExpiration($minutes) + protected function calculateExpiration($seconds) { - return $this->toTimestamp($minutes); + return $this->toTimestamp($seconds); } /** - * Get the UNIX timestamp for the given number of minutes. + * Get the UNIX timestamp for the given number of seconds. * - * @param int $minutes + * @param int $seconds * @return int */ - protected function toTimestamp($minutes) + protected function toTimestamp($seconds) { - return $minutes > 0 ? $this->availableAt($minutes * 60) : 0; + return $seconds > 0 ? $this->availableAt($seconds) : 0; } /** diff --git a/vendor/laravel/framework/src/Illuminate/Cache/NullStore.php b/vendor/laravel/framework/src/Illuminate/Cache/NullStore.php index 16e869c806..aa7a397575 100755 --- a/vendor/laravel/framework/src/Illuminate/Cache/NullStore.php +++ b/vendor/laravel/framework/src/Illuminate/Cache/NullStore.php @@ -2,9 +2,7 @@ namespace Illuminate\Cache; -use Illuminate\Contracts\Cache\Store; - -class NullStore extends TaggableStore implements Store +class NullStore extends TaggableStore { use RetrievesMultipleKeys; @@ -23,20 +21,19 @@ class NullStore extends TaggableStore implements Store */ public function get($key) { - // } /** - * Store an item in the cache for a given number of minutes. + * Store an item in the cache for a given number of seconds. * * @param string $key * @param mixed $value - * @param float|int $minutes - * @return void + * @param int $seconds + * @return bool */ - public function put($key, $value, $minutes) + public function put($key, $value, $seconds) { - // + return false; } /** @@ -44,11 +41,11 @@ public function put($key, $value, $minutes) * * @param string $key * @param mixed $value - * @return int + * @return int|bool */ public function increment($key, $value = 1) { - // + return false; } /** @@ -56,11 +53,11 @@ public function increment($key, $value = 1) * * @param string $key * @param mixed $value - * @return int + * @return int|bool */ public function decrement($key, $value = 1) { - // + return false; } /** @@ -68,22 +65,22 @@ public function decrement($key, $value = 1) * * @param string $key * @param mixed $value - * @return void + * @return bool */ public function forever($key, $value) { - // + return false; } /** * Remove an item from the cache. * * @param string $key - * @return void + * @return bool */ public function forget($key) { - // + return true; } /** diff --git a/vendor/laravel/framework/src/Illuminate/Cache/RateLimiter.php b/vendor/laravel/framework/src/Illuminate/Cache/RateLimiter.php index 1de6ac8169..c8b2d32dd7 100644 --- a/vendor/laravel/framework/src/Illuminate/Cache/RateLimiter.php +++ b/vendor/laravel/framework/src/Illuminate/Cache/RateLimiter.php @@ -51,21 +51,21 @@ public function tooManyAttempts($key, $maxAttempts) * Increment the counter for a given key for a given decay time. * * @param string $key - * @param float|int $decayMinutes + * @param int $decaySeconds * @return int */ - public function hit($key, $decayMinutes = 1) + public function hit($key, $decaySeconds = 60) { $this->cache->add( - $key.':timer', $this->availableAt($decayMinutes * 60), $decayMinutes + $key.':timer', $this->availableAt($decaySeconds), $decaySeconds ); - $added = $this->cache->add($key, 0, $decayMinutes); + $added = $this->cache->add($key, 0, $decaySeconds); $hits = (int) $this->cache->increment($key); if (! $added && $hits == 1) { - $this->cache->put($key, 1, $decayMinutes); + $this->cache->put($key, 1, $decaySeconds); } return $hits; diff --git a/vendor/laravel/framework/src/Illuminate/Cache/RedisLock.php b/vendor/laravel/framework/src/Illuminate/Cache/RedisLock.php index 6ce5afe594..d83d44deaa 100644 --- a/vendor/laravel/framework/src/Illuminate/Cache/RedisLock.php +++ b/vendor/laravel/framework/src/Illuminate/Cache/RedisLock.php @@ -17,11 +17,12 @@ class RedisLock extends Lock * @param \Illuminate\Redis\Connections\Connection $redis * @param string $name * @param int $seconds + * @param string|null $owner * @return void */ - public function __construct($redis, $name, $seconds) + public function __construct($redis, $name, $seconds, $owner = null) { - parent::__construct($name, $seconds); + parent::__construct($name, $seconds, $owner); $this->redis = $redis; } @@ -33,7 +34,7 @@ public function __construct($redis, $name, $seconds) */ public function acquire() { - $result = $this->redis->setnx($this->name, 1); + $result = $this->redis->setnx($this->name, $this->owner); if ($result === 1 && $this->seconds > 0) { $this->redis->expire($this->name, $this->seconds); @@ -48,7 +49,27 @@ public function acquire() * @return void */ public function release() + { + $this->redis->eval(LuaScripts::releaseLock(), 1, $this->name, $this->owner); + } + + /** + * Releases this lock in disregard of ownership. + * + * @return void + */ + public function forceRelease() { $this->redis->del($this->name); } + + /** + * Returns the owner value written into the driver for this lock. + * + * @return string + */ + protected function getCurrentOwner() + { + return $this->redis->get($this->name); + } } diff --git a/vendor/laravel/framework/src/Illuminate/Cache/RedisStore.php b/vendor/laravel/framework/src/Illuminate/Cache/RedisStore.php index b448e464cf..d3b19b09b8 100755 --- a/vendor/laravel/framework/src/Illuminate/Cache/RedisStore.php +++ b/vendor/laravel/framework/src/Illuminate/Cache/RedisStore.php @@ -2,10 +2,10 @@ namespace Illuminate\Cache; -use Illuminate\Contracts\Cache\Store; +use Illuminate\Contracts\Cache\LockProvider; use Illuminate\Contracts\Redis\Factory as Redis; -class RedisStore extends TaggableStore implements Store +class RedisStore extends TaggableStore implements LockProvider { /** * The Redis factory implementation. @@ -80,36 +80,42 @@ public function many(array $keys) } /** - * Store an item in the cache for a given number of minutes. + * Store an item in the cache for a given number of seconds. * * @param string $key * @param mixed $value - * @param float|int $minutes - * @return void + * @param int $seconds + * @return bool */ - public function put($key, $value, $minutes) + public function put($key, $value, $seconds) { - $this->connection()->setex( - $this->prefix.$key, (int) max(1, $minutes * 60), $this->serialize($value) + return (bool) $this->connection()->setex( + $this->prefix.$key, (int) max(1, $seconds), $this->serialize($value) ); } /** - * Store multiple items in the cache for a given number of minutes. + * Store multiple items in the cache for a given number of seconds. * * @param array $values - * @param float|int $minutes - * @return void + * @param int $seconds + * @return bool */ - public function putMany(array $values, $minutes) + public function putMany(array $values, $seconds) { $this->connection()->multi(); + $manyResult = null; + foreach ($values as $key => $value) { - $this->put($key, $value, $minutes); + $result = $this->put($key, $value, $seconds); + + $manyResult = is_null($manyResult) ? $result : $result && $manyResult; } $this->connection()->exec(); + + return $manyResult ?: false; } /** @@ -117,15 +123,15 @@ public function putMany(array $values, $minutes) * * @param string $key * @param mixed $value - * @param float|int $minutes + * @param int $seconds * @return bool */ - public function add($key, $value, $minutes) + public function add($key, $value, $seconds) { $lua = "return redis.call('exists',KEYS[1])<1 and redis.call('setex',KEYS[1],ARGV[2],ARGV[1])"; return (bool) $this->connection()->eval( - $lua, 1, $this->prefix.$key, $this->serialize($value), (int) max(1, $minutes * 60) + $lua, 1, $this->prefix.$key, $this->serialize($value), (int) max(1, $seconds) ); } @@ -158,23 +164,36 @@ public function decrement($key, $value = 1) * * @param string $key * @param mixed $value - * @return void + * @return bool */ public function forever($key, $value) { - $this->connection()->set($this->prefix.$key, $this->serialize($value)); + return (bool) $this->connection()->set($this->prefix.$key, $this->serialize($value)); } /** * Get a lock instance. * + * @param string $name + * @param int $seconds + * @param string|null $owner + * @return \Illuminate\Contracts\Cache\Lock + */ + public function lock($name, $seconds = 0, $owner = null) + { + return new RedisLock($this->connection(), $this->prefix.$name, $seconds, $owner); + } + + /** + * Restore a lock instance using the owner identifier. + * * @param string $name - * @param int $seconds + * @param string $owner * @return \Illuminate\Contracts\Cache\Lock */ - public function lock($name, $seconds = 0) + public function restoreLock($name, $owner) { - return new RedisLock($this->connection(), $this->prefix.$name, $seconds); + return $this->lock($name, 0, $owner); } /** diff --git a/vendor/laravel/framework/src/Illuminate/Cache/RedisTaggedCache.php b/vendor/laravel/framework/src/Illuminate/Cache/RedisTaggedCache.php index 7a28d82d29..9ef4d1095b 100644 --- a/vendor/laravel/framework/src/Illuminate/Cache/RedisTaggedCache.php +++ b/vendor/laravel/framework/src/Illuminate/Cache/RedisTaggedCache.php @@ -22,14 +22,18 @@ class RedisTaggedCache extends TaggedCache * * @param string $key * @param mixed $value - * @param \DateTime|float|int|null $minutes - * @return void + * @param \DateTimeInterface|\DateInterval|int|null $ttl + * @return bool */ - public function put($key, $value, $minutes = null) + public function put($key, $value, $ttl = null) { + if ($ttl === null) { + return $this->forever($key, $value); + } + $this->pushStandardKeys($this->tags->getNamespace(), $key); - parent::put($key, $value, $minutes); + return parent::put($key, $value, $ttl); } /** @@ -65,13 +69,13 @@ public function decrement($key, $value = 1) * * @param string $key * @param mixed $value - * @return void + * @return bool */ public function forever($key, $value) { $this->pushForeverKeys($this->tags->getNamespace(), $key); - parent::forever($key, $value); + return parent::forever($key, $value); } /** diff --git a/vendor/laravel/framework/src/Illuminate/Cache/Repository.php b/vendor/laravel/framework/src/Illuminate/Cache/Repository.php index afb0d2e598..febe3d4b23 100755 --- a/vendor/laravel/framework/src/Illuminate/Cache/Repository.php +++ b/vendor/laravel/framework/src/Illuminate/Cache/Repository.php @@ -42,11 +42,11 @@ class Repository implements CacheContract, ArrayAccess protected $events; /** - * The default number of minutes to store items. + * The default number of seconds to store items. * - * @var float|int + * @var int|null */ - protected $default = 60; + protected $default = 3600; /** * Create a new cache repository instance. @@ -193,22 +193,32 @@ public function pull($key, $default = null) * * @param string $key * @param mixed $value - * @param \DateTimeInterface|\DateInterval|float|int|null $minutes - * @return void + * @param \DateTimeInterface|\DateInterval|int|null $ttl + * @return bool */ - public function put($key, $value, $minutes = null) + public function put($key, $value, $ttl = null) { if (is_array($key)) { - $this->putMany($key, $value); + return $this->putMany($key, $value); + } + + if ($ttl === null) { + return $this->forever($key, $value); + } + + $seconds = $this->getSeconds($ttl); - return; + if ($seconds <= 0) { + return $this->delete($key); } - if (! is_null($minutes = $this->getMinutes($minutes))) { - $this->store->put($this->itemKey($key), $value, $minutes); + $result = $this->store->put($this->itemKey($key), $value, $seconds); - $this->event(new KeyWritten($key, $value, $minutes)); + if ($result) { + $this->event(new KeyWritten($key, $value, $seconds)); } + + return $result; } /** @@ -216,25 +226,56 @@ public function put($key, $value, $minutes = null) */ public function set($key, $value, $ttl = null) { - $this->put($key, $value, $ttl); + return $this->put($key, $value, $ttl); } /** - * Store multiple items in the cache for a given number of minutes. + * Store multiple items in the cache for a given number of seconds. * * @param array $values - * @param \DateTimeInterface|\DateInterval|float|int $minutes - * @return void + * @param \DateTimeInterface|\DateInterval|int|null $ttl + * @return bool */ - public function putMany(array $values, $minutes) + public function putMany(array $values, $ttl = null) { - if (! is_null($minutes = $this->getMinutes($minutes))) { - $this->store->putMany($values, $minutes); + if ($ttl === null) { + return $this->putManyForever($values); + } + + $seconds = $this->getSeconds($ttl); + if ($seconds <= 0) { + return $this->deleteMultiple(array_keys($values)); + } + + $result = $this->store->putMany($values, $seconds); + + if ($result) { foreach ($values as $key => $value) { - $this->event(new KeyWritten($key, $value, $minutes)); + $this->event(new KeyWritten($key, $value, $seconds)); + } + } + + return $result; + } + + /** + * Store multiple items in the cache indefinitely. + * + * @param array $values + * @return bool + */ + protected function putManyForever(array $values) + { + $result = true; + + foreach ($values as $key => $value) { + if (! $this->forever($key, $value)) { + $result = false; } } + + return $result; } /** @@ -242,7 +283,7 @@ public function putMany(array $values, $minutes) */ public function setMultiple($values, $ttl = null) { - $this->putMany($values, $ttl); + return $this->putMany($values, $ttl); } /** @@ -250,31 +291,33 @@ public function setMultiple($values, $ttl = null) * * @param string $key * @param mixed $value - * @param \DateTimeInterface|\DateInterval|float|int $minutes + * @param \DateTimeInterface|\DateInterval|int|null $ttl * @return bool */ - public function add($key, $value, $minutes) + public function add($key, $value, $ttl = null) { - if (is_null($minutes = $this->getMinutes($minutes))) { - return false; - } + if ($ttl !== null) { + if ($this->getSeconds($ttl) <= 0) { + return false; + } + + // If the store has an "add" method we will call the method on the store so it + // has a chance to override this logic. Some drivers better support the way + // this operation should work with a total "atomic" implementation of it. + if (method_exists($this->store, 'add')) { + $seconds = $this->getSeconds($ttl); - // If the store has an "add" method we will call the method on the store so it - // has a chance to override this logic. Some drivers better support the way - // this operation should work with a total "atomic" implementation of it. - if (method_exists($this->store, 'add')) { - return $this->store->add( - $this->itemKey($key), $value, $minutes - ); + return $this->store->add( + $this->itemKey($key), $value, $seconds + ); + } } // If the value did not exist in the cache, we will put the value in the cache // so it exists for subsequent requests. Then, we will return true so it is // easy to know if the value gets added. Otherwise, we will return false. if (is_null($this->get($key))) { - $this->put($key, $value, $minutes); - - return true; + return $this->put($key, $value, $ttl); } return false; @@ -308,36 +351,40 @@ public function decrement($key, $value = 1) * Store an item in the cache indefinitely. * * @param string $key - * @param mixed $value - * @return void + * @param mixed $value + * @return bool */ public function forever($key, $value) { - $this->store->forever($this->itemKey($key), $value); + $result = $this->store->forever($this->itemKey($key), $value); - $this->event(new KeyWritten($key, $value, 0)); + if ($result) { + $this->event(new KeyWritten($key, $value)); + } + + return $result; } /** * Get an item from the cache, or execute the given Closure and store the result. * * @param string $key - * @param \DateTimeInterface|\DateInterval|float|int $minutes + * @param \DateTimeInterface|\DateInterval|int|null $ttl * @param \Closure $callback * @return mixed */ - public function remember($key, $minutes, Closure $callback) + public function remember($key, $ttl, Closure $callback) { $value = $this->get($key); // If the item exists in the cache we will just return this immediately and if // not we will execute the given Closure and cache the result of that for a - // given number of minutes so it's available for all subsequent requests. + // given number of seconds so it's available for all subsequent requests. if (! is_null($value)) { return $value; } - $this->put($key, $value = $callback(), $minutes); + $this->put($key, $value = $callback(), $ttl); return $value; } @@ -365,9 +412,9 @@ public function rememberForever($key, Closure $callback) { $value = $this->get($key); - // If the item exists in the cache we will just return this immediately and if - // not we will execute the given Closure and cache the result of that for a - // given number of minutes so it's available for all subsequent requests. + // If the item exists in the cache we will just return this immediately + // and if not we will execute the given Closure and cache the result + // of that forever so it is available for all subsequent requests. if (! is_null($value)) { return $value; } @@ -385,8 +432,10 @@ public function rememberForever($key, Closure $callback) */ public function forget($key) { - return tap($this->store->forget($this->itemKey($key)), function () use ($key) { - $this->event(new KeyForgotten($key)); + return tap($this->store->forget($this->itemKey($key)), function ($result) use ($key) { + if ($result) { + $this->event(new KeyForgotten($key)); + } }); } @@ -403,11 +452,15 @@ public function delete($key) */ public function deleteMultiple($keys) { + $result = true; + foreach ($keys as $key) { - $this->forget($key); + if (! $this->forget($key)) { + $result = false; + } } - return true; + return $result; } /** @@ -455,7 +508,7 @@ protected function itemKey($key) /** * Get the default cache time. * - * @return float|int + * @return int */ public function getDefaultCacheTime() { @@ -463,14 +516,14 @@ public function getDefaultCacheTime() } /** - * Set the default cache time in minutes. + * Set the default cache time in seconds. * - * @param float|int $minutes + * @param int|null $seconds * @return $this */ - public function setDefaultCacheTime($minutes) + public function setDefaultCacheTime($seconds) { - $this->default = $minutes; + $this->default = $seconds; return $this; } @@ -555,20 +608,20 @@ public function offsetUnset($key) } /** - * Calculate the number of minutes with the given duration. + * Calculate the number of seconds for the given TTL. * - * @param \DateTimeInterface|\DateInterval|float|int $duration - * @return float|int|null + * @param \DateTimeInterface|\DateInterval|int $ttl + * @return int */ - protected function getMinutes($duration) + protected function getSeconds($ttl) { - $duration = $this->parseDateInterval($duration); + $duration = $this->parseDateInterval($ttl); if ($duration instanceof DateTimeInterface) { - $duration = Carbon::now()->diffInRealSeconds($duration, false) / 60; + $duration = Carbon::now()->diffInRealSeconds($duration, false); } - return (int) ($duration * 60) > 0 ? $duration : null; + return (int) $duration > 0 ? $duration : 0; } /** diff --git a/vendor/laravel/framework/src/Illuminate/Cache/RetrievesMultipleKeys.php b/vendor/laravel/framework/src/Illuminate/Cache/RetrievesMultipleKeys.php index 4d4679755f..5dd41edb5e 100644 --- a/vendor/laravel/framework/src/Illuminate/Cache/RetrievesMultipleKeys.php +++ b/vendor/laravel/framework/src/Illuminate/Cache/RetrievesMultipleKeys.php @@ -24,16 +24,22 @@ public function many(array $keys) } /** - * Store multiple items in the cache for a given number of minutes. + * Store multiple items in the cache for a given number of seconds. * * @param array $values - * @param float|int $minutes - * @return void + * @param int $seconds + * @return bool */ - public function putMany(array $values, $minutes) + public function putMany(array $values, $seconds) { + $manyResult = null; + foreach ($values as $key => $value) { - $this->put($key, $value, $minutes); + $result = $this->put($key, $value, $seconds); + + $manyResult = is_null($manyResult) ? $result : $result && $manyResult; } + + return $manyResult ?: false; } } diff --git a/vendor/laravel/framework/src/Illuminate/Cache/TaggableStore.php b/vendor/laravel/framework/src/Illuminate/Cache/TaggableStore.php index ba00fa4503..6a12b45dbf 100644 --- a/vendor/laravel/framework/src/Illuminate/Cache/TaggableStore.php +++ b/vendor/laravel/framework/src/Illuminate/Cache/TaggableStore.php @@ -2,7 +2,9 @@ namespace Illuminate\Cache; -abstract class TaggableStore +use Illuminate\Contracts\Cache\Store; + +abstract class TaggableStore implements Store { /** * Begin executing a new tags operation. diff --git a/vendor/laravel/framework/src/Illuminate/Cache/TaggedCache.php b/vendor/laravel/framework/src/Illuminate/Cache/TaggedCache.php index 28e1d99090..15d55df489 100644 --- a/vendor/laravel/framework/src/Illuminate/Cache/TaggedCache.php +++ b/vendor/laravel/framework/src/Illuminate/Cache/TaggedCache.php @@ -6,7 +6,9 @@ class TaggedCache extends Repository { - use RetrievesMultipleKeys; + use RetrievesMultipleKeys { + putMany as putManyAlias; + } /** * The tag set instance. @@ -29,6 +31,22 @@ public function __construct(Store $store, TagSet $tags) $this->tags = $tags; } + /** + * Store multiple items in the cache for a given number of seconds. + * + * @param array $values + * @param int|null $ttl + * @return bool + */ + public function putMany(array $values, $ttl = null) + { + if ($ttl === null) { + return $this->putManyForever($values); + } + + return $this->putManyAlias($values, $ttl); + } + /** * Increment the value of an item in the cache. * diff --git a/vendor/laravel/framework/src/Illuminate/Cache/composer.json b/vendor/laravel/framework/src/Illuminate/Cache/composer.json index a461242ce3..974782f0ab 100755 --- a/vendor/laravel/framework/src/Illuminate/Cache/composer.json +++ b/vendor/laravel/framework/src/Illuminate/Cache/composer.json @@ -15,8 +15,8 @@ ], "require": { "php": "^7.1.3", - "illuminate/contracts": "5.7.*", - "illuminate/support": "5.7.*" + "illuminate/contracts": "5.8.*", + "illuminate/support": "5.8.*" }, "autoload": { "psr-4": { @@ -25,13 +25,13 @@ }, "extra": { "branch-alias": { - "dev-master": "5.7-dev" + "dev-master": "5.8-dev" } }, "suggest": { - "illuminate/database": "Required to use the database cache driver (5.7.*).", - "illuminate/filesystem": "Required to use the file cache driver (5.7.*).", - "illuminate/redis": "Required to use the redis cache driver (5.7.*)." + "illuminate/database": "Required to use the database cache driver (5.8.*).", + "illuminate/filesystem": "Required to use the file cache driver (5.8.*).", + "illuminate/redis": "Required to use the redis cache driver (5.8.*)." }, "config": { "sort-packages": true diff --git a/vendor/laravel/framework/src/Illuminate/Config/composer.json b/vendor/laravel/framework/src/Illuminate/Config/composer.json index 1dbdd4be82..6611040349 100755 --- a/vendor/laravel/framework/src/Illuminate/Config/composer.json +++ b/vendor/laravel/framework/src/Illuminate/Config/composer.json @@ -15,8 +15,8 @@ ], "require": { "php": "^7.1.3", - "illuminate/contracts": "5.7.*", - "illuminate/support": "5.7.*" + "illuminate/contracts": "5.8.*", + "illuminate/support": "5.8.*" }, "autoload": { "psr-4": { @@ -25,7 +25,7 @@ }, "extra": { "branch-alias": { - "dev-master": "5.7-dev" + "dev-master": "5.8-dev" } }, "config": { diff --git a/vendor/laravel/framework/src/Illuminate/Console/Application.php b/vendor/laravel/framework/src/Illuminate/Console/Application.php index f8b9ca4202..4e6ba8539d 100755 --- a/vendor/laravel/framework/src/Illuminate/Console/Application.php +++ b/vendor/laravel/framework/src/Illuminate/Console/Application.php @@ -9,6 +9,7 @@ use Symfony\Component\Console\Input\ArgvInput; use Symfony\Component\Console\Input\ArrayInput; use Symfony\Component\Console\Input\InputOption; +use Symfony\Component\Console\Input\StringInput; use Symfony\Component\Process\PhpExecutableFinder; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\ConsoleOutput; @@ -171,25 +172,41 @@ public static function forgetBootstrappers() */ public function call($command, array $parameters = [], $outputBuffer = null) { - if (is_subclass_of($command, SymfonyCommand::class)) { - $command = $this->laravel->make($command)->getName(); - } + [$command, $input] = $this->parseCommand($command, $parameters); if (! $this->has($command)) { throw new CommandNotFoundException(sprintf('The command "%s" does not exist.', $command)); } - array_unshift($parameters, $command); + return $this->run( + $input, $this->lastOutput = $outputBuffer ?: new BufferedOutput + ); + } - $this->lastOutput = $outputBuffer ?: new BufferedOutput; + /** + * Parse the incoming Artisan command and its input. + * + * @param string $command + * @param array $parameters + * @return array + */ + protected function parseCommand($command, $parameters) + { + if (is_subclass_of($command, SymfonyCommand::class)) { + $callingClass = true; - $this->setCatchExceptions(false); + $command = $this->laravel->make($command)->getName(); + } - $result = $this->run(new ArrayInput($parameters), $this->lastOutput); + if (! isset($callingClass) && empty($parameters)) { + $command = $this->getCommandName($input = new StringInput($command)); + } else { + array_unshift($parameters, $command); - $this->setCatchExceptions(true); + $input = new ArrayInput($parameters); + } - return $result; + return [$command, $input ?? null]; } /** diff --git a/vendor/laravel/framework/src/Illuminate/Console/Scheduling/CacheEventMutex.php b/vendor/laravel/framework/src/Illuminate/Console/Scheduling/CacheEventMutex.php index 4eaaf05291..acf41edeec 100644 --- a/vendor/laravel/framework/src/Illuminate/Console/Scheduling/CacheEventMutex.php +++ b/vendor/laravel/framework/src/Illuminate/Console/Scheduling/CacheEventMutex.php @@ -40,7 +40,7 @@ public function __construct(Cache $cache) public function create(Event $event) { return $this->cache->store($this->store)->add( - $event->mutexName(), true, $event->expiresAt + $event->mutexName(), true, $event->expiresAt * 60 ); } diff --git a/vendor/laravel/framework/src/Illuminate/Console/Scheduling/CacheSchedulingMutex.php b/vendor/laravel/framework/src/Illuminate/Console/Scheduling/CacheSchedulingMutex.php index dfa20348e1..0dffb56799 100644 --- a/vendor/laravel/framework/src/Illuminate/Console/Scheduling/CacheSchedulingMutex.php +++ b/vendor/laravel/framework/src/Illuminate/Console/Scheduling/CacheSchedulingMutex.php @@ -42,7 +42,7 @@ public function __construct(Cache $cache) public function create(Event $event, DateTimeInterface $time) { return $this->cache->store($this->store)->add( - $event->mutexName().$time->format('Hi'), true, 60 + $event->mutexName().$time->format('Hi'), true, 3600 ); } diff --git a/vendor/laravel/framework/src/Illuminate/Console/Scheduling/Event.php b/vendor/laravel/framework/src/Illuminate/Console/Scheduling/Event.php index d21defd2da..1e8e8531aa 100644 --- a/vendor/laravel/framework/src/Illuminate/Console/Scheduling/Event.php +++ b/vendor/laravel/framework/src/Illuminate/Console/Scheduling/Event.php @@ -7,6 +7,7 @@ use Illuminate\Support\Arr; use Illuminate\Support\Carbon; use GuzzleHttp\Client as HttpClient; +use Illuminate\Support\Facades\Date; use Illuminate\Contracts\Mail\Mailer; use Symfony\Component\Process\Process; use Illuminate\Support\Traits\Macroable; @@ -142,17 +143,27 @@ class Event */ public $mutex; + /** + * The exit status code of the command. + * + * @var int|null + */ + public $exitCode; + /** * Create a new event instance. * * @param \Illuminate\Console\Scheduling\EventMutex $mutex * @param string $command + * @param \DateTimeZone|string $timezone * @return void */ - public function __construct(EventMutex $mutex, $command) + public function __construct(EventMutex $mutex, $command, $timezone = null) { $this->mutex = $mutex; $this->command = $command; + $this->timezone = $timezone; + $this->output = $this->getDefaultOutput(); } @@ -204,9 +215,7 @@ protected function runCommandInForeground(Container $container) { $this->callBeforeCallbacks($container); - (new Process( - $this->buildCommand(), base_path(), null, null, null - ))->run(); + $this->exitCode = Process::fromShellCommandline($this->buildCommand(), base_path(), null, null, null)->run(); $this->callAfterCallbacks($container); } @@ -221,9 +230,7 @@ protected function runCommandInBackground(Container $container) { $this->callBeforeCallbacks($container); - (new Process( - $this->buildCommand(), base_path(), null, null, null - ))->run(); + Process::fromShellCommandline($this->buildCommand(), base_path(), null, null, null)->run(); } /** @@ -388,7 +395,7 @@ public function appendOutputTo($location) */ public function emailOutputTo($addresses, $onlyIfOutputExists = false) { - $this->ensureOutputIsBeingCapturedForEmail(); + $this->ensureOutputIsBeingCaptured(); $addresses = Arr::wrap($addresses); @@ -411,15 +418,20 @@ public function emailWrittenOutputTo($addresses) } /** - * Ensure that output is being captured for email. - * - * @return void + * E-mail the results of the scheduled operation if it fails. * - * @deprecated See ensureOutputIsBeingCaptured. + * @param array|mixed $addresses + * @return $this */ - protected function ensureOutputIsBeingCapturedForEmail() + public function emailOutputOnFailure($addresses) { $this->ensureOutputIsBeingCaptured(); + + $addresses = Arr::wrap($addresses); + + return $this->onFailure(function (Mailer $mailer) use ($addresses) { + $this->emailOutput($mailer, $addresses, false); + }); } /** @@ -519,6 +531,32 @@ public function thenPingIf($value, $url) return $value ? $this->thenPing($url) : $this; } + /** + * Register a callback to ping a given URL if the operation succeeds. + * + * @param string $url + * @return $this + */ + public function pingOnSuccess($url) + { + return $this->onSuccess(function () use ($url) { + (new HttpClient)->get($url); + }); + } + + /** + * Register a callback to ping a given URL if the operation fails. + * + * @param string $url + * @return $this + */ + public function pingOnFailure($url) + { + return $this->onFailure(function () use ($url) { + (new HttpClient)->get($url); + }); + } + /** * State that the command should run in background. * @@ -667,6 +705,36 @@ public function then(Closure $callback) return $this; } + /** + * Register a callback to be called if the operation succeeds. + * + * @param \Closure $callback + * @return $this + */ + public function onSuccess(Closure $callback) + { + return $this->then(function (Container $container) use ($callback) { + if (0 === $this->exitCode) { + $container->call($callback); + } + }); + } + + /** + * Register a callback to be called if the operation fails. + * + * @param \Closure $callback + * @return $this + */ + public function onFailure(Closure $callback) + { + return $this->then(function (Container $container) use ($callback) { + if (0 !== $this->exitCode) { + $container->call($callback); + } + }); + } + /** * Set the human-friendly description of the event. * @@ -708,14 +776,14 @@ public function getSummaryForDisplay() /** * Determine the next due date for an event. * - * @param \DateTime|string $currentTime + * @param \DateTimeInterface|string $currentTime * @param int $nth * @param bool $allowCurrentDate * @return \Illuminate\Support\Carbon */ public function nextRunDate($currentTime = 'now', $nth = 0, $allowCurrentDate = false) { - return Carbon::instance(CronExpression::factory( + return Date::instance(CronExpression::factory( $this->getExpression() )->getNextRunDate($currentTime, $nth, $allowCurrentDate, $this->timezone)); } diff --git a/vendor/laravel/framework/src/Illuminate/Console/Scheduling/Schedule.php b/vendor/laravel/framework/src/Illuminate/Console/Scheduling/Schedule.php index 3855f1775c..b2de551572 100644 --- a/vendor/laravel/framework/src/Illuminate/Console/Scheduling/Schedule.php +++ b/vendor/laravel/framework/src/Illuminate/Console/Scheduling/Schedule.php @@ -31,13 +31,23 @@ class Schedule */ protected $schedulingMutex; + /** + * The timezone the date should be evaluated on. + * + * @var \DateTimeZone|string + */ + protected $timezone; + /** * Create a new schedule instance. * + * @param \DateTimeZone|string|null $timezone * @return void */ - public function __construct() + public function __construct($timezone = null) { + $this->timezone = $timezone; + $container = Container::getInstance(); $this->eventMutex = $container->bound(EventMutex::class) @@ -119,7 +129,7 @@ public function exec($command, array $parameters = []) $command .= ' '.$this->compileParameters($parameters); } - $this->events[] = $event = new Event($this->eventMutex, $command); + $this->events[] = $event = new Event($this->eventMutex, $command, $this->timezone); return $event; } diff --git a/vendor/laravel/framework/src/Illuminate/Console/Scheduling/ScheduleRunCommand.php b/vendor/laravel/framework/src/Illuminate/Console/Scheduling/ScheduleRunCommand.php index 21695438aa..1340141cc4 100644 --- a/vendor/laravel/framework/src/Illuminate/Console/Scheduling/ScheduleRunCommand.php +++ b/vendor/laravel/framework/src/Illuminate/Console/Scheduling/ScheduleRunCommand.php @@ -2,8 +2,8 @@ namespace Illuminate\Console\Scheduling; -use Illuminate\Support\Carbon; use Illuminate\Console\Command; +use Illuminate\Support\Facades\Date; class ScheduleRunCommand extends Command { @@ -52,7 +52,7 @@ public function __construct(Schedule $schedule) { $this->schedule = $schedule; - $this->startedAt = Carbon::now(); + $this->startedAt = Date::now(); parent::__construct(); } diff --git a/vendor/laravel/framework/src/Illuminate/Console/composer.json b/vendor/laravel/framework/src/Illuminate/Console/composer.json index 91ce9743a2..cd0882152d 100755 --- a/vendor/laravel/framework/src/Illuminate/Console/composer.json +++ b/vendor/laravel/framework/src/Illuminate/Console/composer.json @@ -15,9 +15,10 @@ ], "require": { "php": "^7.1.3", - "illuminate/contracts": "5.7.*", - "illuminate/support": "5.7.*", - "symfony/console": "^4.1" + "illuminate/contracts": "5.8.*", + "illuminate/support": "5.8.*", + "symfony/console": "^4.2", + "symfony/process": "^4.2" }, "autoload": { "psr-4": { @@ -26,13 +27,13 @@ }, "extra": { "branch-alias": { - "dev-master": "5.7-dev" + "dev-master": "5.8-dev" } }, "suggest": { "dragonmantank/cron-expression": "Required to use scheduling component (^2.0).", "guzzlehttp/guzzle": "Required to use the ping methods on schedules (^6.0).", - "symfony/process": "Required to use scheduling component (^4.1)." + "illuminate/filesystem": "Required to use the generator command (5.8.*)" }, "config": { "sort-packages": true diff --git a/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php b/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php index e10edd5c7d..f5d4bba39a 100644 --- a/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php +++ b/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php @@ -17,6 +17,9 @@ class BoundMethod * @param array $parameters * @param string|null $defaultMethod * @return mixed + * + * @throws \ReflectionException + * @throws \InvalidArgumentException */ public static function call($container, $callback, array $parameters = [], $defaultMethod = null) { @@ -107,6 +110,8 @@ protected static function normalizeMethod($callback) * @param callable|string $callback * @param array $parameters * @return array + * + * @throws \ReflectionException */ protected static function getMethodDependencies($container, $callback, array $parameters = []) { @@ -145,7 +150,7 @@ protected static function getCallReflector($callback) * @param \ReflectionParameter $parameter * @param array $parameters * @param array $dependencies - * @return mixed + * @return void */ protected static function addDependencyForCallParameter($container, $parameter, array &$parameters, &$dependencies) diff --git a/vendor/laravel/framework/src/Illuminate/Container/Container.php b/vendor/laravel/framework/src/Illuminate/Container/Container.php index 0f1becdfdc..a5df25d490 100755 --- a/vendor/laravel/framework/src/Illuminate/Container/Container.php +++ b/vendor/laravel/framework/src/Illuminate/Container/Container.php @@ -24,112 +24,112 @@ class Container implements ArrayAccess, ContainerContract /** * An array of the types that have been resolved. * - * @var array + * @var bool[] */ protected $resolved = []; /** * The container's bindings. * - * @var array + * @var array[] */ protected $bindings = []; /** * The container's method bindings. * - * @var array + * @var \Closure[] */ protected $methodBindings = []; /** * The container's shared instances. * - * @var array + * @var object[] */ protected $instances = []; /** * The registered type aliases. * - * @var array + * @var string[] */ protected $aliases = []; /** * The registered aliases keyed by the abstract name. * - * @var array + * @var array[] */ protected $abstractAliases = []; /** * The extension closures for services. * - * @var array + * @var array[] */ protected $extenders = []; /** * All of the registered tags. * - * @var array + * @var array[] */ protected $tags = []; /** * The stack of concretions currently being built. * - * @var array + * @var array[] */ protected $buildStack = []; /** * The parameter override stack. * - * @var array + * @var array[] */ protected $with = []; /** * The contextual binding map. * - * @var array + * @var array[] */ public $contextual = []; /** * All of the registered rebound callbacks. * - * @var array + * @var array[] */ protected $reboundCallbacks = []; /** * All of the global resolving callbacks. * - * @var array + * @var \Closure[] */ protected $globalResolvingCallbacks = []; /** * All of the global after resolving callbacks. * - * @var array + * @var \Closure[] */ protected $globalAfterResolvingCallbacks = []; /** * All of the resolving callbacks by class type. * - * @var array + * @var array[] */ protected $resolvingCallbacks = []; /** * All of the after resolving callbacks by class type. * - * @var array + * @var array[] */ protected $afterResolvingCallbacks = []; @@ -261,7 +261,9 @@ protected function getClosure($abstract, $concrete) return $container->build($concrete); } - return $container->make($concrete, $parameters); + return $container->resolve( + $concrete, $parameters, $raiseEvents = false + ); }; } @@ -455,19 +457,19 @@ public function tag($abstracts, $tags) * Resolve all of the bindings for a given tag. * * @param string $tag - * @return array + * @return iterable */ public function tagged($tag) { - $results = []; + if (! isset($this->tags[$tag])) { + return []; + } - if (isset($this->tags[$tag])) { + return new RewindableGenerator(function () use ($tag) { foreach ($this->tags[$tag] as $abstract) { - $results[] = $this->make($abstract); + yield $this->make($abstract); } - } - - return $results; + }, count($this->tags[$tag])); } /** @@ -476,9 +478,15 @@ public function tagged($tag) * @param string $abstract * @param string $alias * @return void + * + * @throws \LogicException */ public function alias($abstract, $alias) { + if ($alias === $abstract) { + throw new LogicException("[{$abstract}] is aliased to itself."); + } + $this->aliases[$alias] = $abstract; $this->abstractAliases[$abstract][] = $alias; @@ -538,11 +546,7 @@ protected function rebound($abstract) */ protected function getReboundCallbacks($abstract) { - if (isset($this->reboundCallbacks[$abstract])) { - return $this->reboundCallbacks[$abstract]; - } - - return []; + return $this->reboundCallbacks[$abstract] ?? []; } /** @@ -603,6 +607,8 @@ public function makeWith($abstract, array $parameters = []) * @param string $abstract * @param array $parameters * @return mixed + * + * @throws \Illuminate\Contracts\Container\BindingResolutionException */ public function make($abstract, array $parameters = []) { @@ -630,9 +636,12 @@ public function get($id) * * @param string $abstract * @param array $parameters + * @param bool $raiseEvents * @return mixed + * + * @throws \Illuminate\Contracts\Container\BindingResolutionException */ - protected function resolve($abstract, $parameters = []) + protected function resolve($abstract, $parameters = [], $raiseEvents = true) { $abstract = $this->getAlias($abstract); @@ -674,7 +683,9 @@ protected function resolve($abstract, $parameters = []) $this->instances[$abstract] = $object; } - $this->fireResolvingCallbacks($abstract, $object); + if ($raiseEvents) { + $this->fireResolvingCallbacks($abstract, $object); + } // Before returning, we will also set the resolved flag to "true" and pop off // the parameter overrides for this build. After those two things are done @@ -712,7 +723,7 @@ protected function getConcrete($abstract) * Get the contextual concrete binding for the given abstract. * * @param string $abstract - * @return string|null + * @return \Closure|string|null */ protected function getContextualConcrete($abstract) { @@ -738,7 +749,7 @@ protected function getContextualConcrete($abstract) * Find the concrete binding for the given abstract in the contextual binding array. * * @param string $abstract - * @return string|null + * @return \Closure|string|null */ protected function findInContextualBindings($abstract) { @@ -817,6 +828,8 @@ public function build($concrete) * * @param array $dependencies * @return array + * + * @throws \Illuminate\Contracts\Container\BindingResolutionException */ protected function resolveDependencies(array $dependencies) { @@ -1085,8 +1098,6 @@ public function getBindings() * * @param string $abstract * @return string - * - * @throws \LogicException */ public function getAlias($abstract) { @@ -1094,10 +1105,6 @@ public function getAlias($abstract) return $abstract; } - if ($this->aliases[$abstract] === $abstract) { - throw new LogicException("[{$abstract}] is aliased to itself."); - } - return $this->getAlias($this->aliases[$abstract]); } @@ -1111,11 +1118,7 @@ protected function getExtenders($abstract) { $abstract = $this->getAlias($abstract); - if (isset($this->extenders[$abstract])) { - return $this->extenders[$abstract]; - } - - return []; + return $this->extenders[$abstract] ?? []; } /** diff --git a/vendor/laravel/framework/src/Illuminate/Container/ContextualBindingBuilder.php b/vendor/laravel/framework/src/Illuminate/Container/ContextualBindingBuilder.php index 2bd4b5ad9d..ac280dba54 100644 --- a/vendor/laravel/framework/src/Illuminate/Container/ContextualBindingBuilder.php +++ b/vendor/laravel/framework/src/Illuminate/Container/ContextualBindingBuilder.php @@ -3,6 +3,7 @@ namespace Illuminate\Container; use Illuminate\Support\Arr; +use Illuminate\Contracts\Container\Container; use Illuminate\Contracts\Container\ContextualBindingBuilder as ContextualBindingBuilderContract; class ContextualBindingBuilder implements ContextualBindingBuilderContract @@ -10,14 +11,14 @@ class ContextualBindingBuilder implements ContextualBindingBuilderContract /** * The underlying container instance. * - * @var \Illuminate\Container\Container + * @var \Illuminate\Contracts\Container\Container */ protected $container; /** * The concrete instance. * - * @var string + * @var string|array */ protected $concrete; @@ -31,7 +32,7 @@ class ContextualBindingBuilder implements ContextualBindingBuilderContract /** * Create a new contextual binding builder. * - * @param \Illuminate\Container\Container $container + * @param \Illuminate\Contracts\Container\Container $container * @param string|array $concrete * @return void */ diff --git a/vendor/laravel/framework/src/Illuminate/Container/RewindableGenerator.php b/vendor/laravel/framework/src/Illuminate/Container/RewindableGenerator.php new file mode 100644 index 0000000000..675527d87e --- /dev/null +++ b/vendor/laravel/framework/src/Illuminate/Container/RewindableGenerator.php @@ -0,0 +1,60 @@ +count = $count; + $this->generator = $generator; + } + + /** + * Get an iterator from the generator. + * + * @return mixed + */ + public function getIterator() + { + return ($this->generator)(); + } + + /** + * Get the total number of tagged services. + * + * @return int + */ + public function count() + { + if (is_callable($count = $this->count)) { + $this->count = $count(); + } + + return $this->count; + } +} diff --git a/vendor/laravel/framework/src/Illuminate/Container/composer.json b/vendor/laravel/framework/src/Illuminate/Container/composer.json index 593f2fb6dc..92f0063c1d 100755 --- a/vendor/laravel/framework/src/Illuminate/Container/composer.json +++ b/vendor/laravel/framework/src/Illuminate/Container/composer.json @@ -15,8 +15,8 @@ ], "require": { "php": "^7.1.3", - "illuminate/contracts": "5.7.*", - "illuminate/support": "5.7.*", + "illuminate/contracts": "5.8.*", + "illuminate/support": "5.8.*", "psr/container": "^1.0" }, "autoload": { @@ -26,7 +26,7 @@ }, "extra": { "branch-alias": { - "dev-master": "5.7-dev" + "dev-master": "5.8-dev" } }, "config": { diff --git a/vendor/laravel/framework/src/Illuminate/Contracts/Auth/UserProvider.php b/vendor/laravel/framework/src/Illuminate/Contracts/Auth/UserProvider.php index a12aa3de5e..a2ab122718 100644 --- a/vendor/laravel/framework/src/Illuminate/Contracts/Auth/UserProvider.php +++ b/vendor/laravel/framework/src/Illuminate/Contracts/Auth/UserProvider.php @@ -15,7 +15,7 @@ public function retrieveById($identifier); /** * Retrieve a user by their unique identifier and "remember me" token. * - * @param mixed $identifier + * @param mixed $identifier * @param string $token * @return \Illuminate\Contracts\Auth\Authenticatable|null */ diff --git a/vendor/laravel/framework/src/Illuminate/Contracts/Cache/Lock.php b/vendor/laravel/framework/src/Illuminate/Contracts/Cache/Lock.php index ee7dddc187..4f98d68d93 100644 --- a/vendor/laravel/framework/src/Illuminate/Contracts/Cache/Lock.php +++ b/vendor/laravel/framework/src/Illuminate/Contracts/Cache/Lock.php @@ -8,7 +8,7 @@ interface Lock * Attempt to acquire the lock. * * @param callable|null $callback - * @return bool + * @return mixed */ public function get($callback = null); @@ -27,4 +27,18 @@ public function block($seconds, $callback = null); * @return void */ public function release(); + + /** + * Returns the current owner of the lock. + * + * @return string + */ + public function owner(); + + /** + * Releases this lock in disregard of ownership. + * + * @return void + */ + public function forceRelease(); } diff --git a/vendor/laravel/framework/src/Illuminate/Contracts/Cache/LockProvider.php b/vendor/laravel/framework/src/Illuminate/Contracts/Cache/LockProvider.php index d7e18b2c67..37d4ef68a5 100644 --- a/vendor/laravel/framework/src/Illuminate/Contracts/Cache/LockProvider.php +++ b/vendor/laravel/framework/src/Illuminate/Contracts/Cache/LockProvider.php @@ -9,7 +9,17 @@ interface LockProvider * * @param string $name * @param int $seconds + * @param string|null $owner * @return \Illuminate\Contracts\Cache\Lock */ - public function lock($name, $seconds = 0); + public function lock($name, $seconds = 0, $owner = null); + + /** + * Restore a lock instance using the owner identifier. + * + * @param string $name + * @param string $owner + * @return \Illuminate\Contracts\Cache\Lock + */ + public function restoreLock($name, $owner); } diff --git a/vendor/laravel/framework/src/Illuminate/Contracts/Cache/Repository.php b/vendor/laravel/framework/src/Illuminate/Contracts/Cache/Repository.php index 054a972295..3e73a178de 100644 --- a/vendor/laravel/framework/src/Illuminate/Contracts/Cache/Repository.php +++ b/vendor/laravel/framework/src/Illuminate/Contracts/Cache/Repository.php @@ -7,23 +7,6 @@ interface Repository extends CacheInterface { - /** - * Determine if an item exists in the cache. - * - * @param string $key - * @return bool - */ - public function has($key); - - /** - * Retrieve an item from the cache by key. - * - * @param string $key - * @param mixed $default - * @return mixed - */ - public function get($key, $default = null); - /** * Retrieve an item from the cache and delete it. * @@ -38,20 +21,20 @@ public function pull($key, $default = null); * * @param string $key * @param mixed $value - * @param \DateTimeInterface|\DateInterval|float|int $minutes - * @return void + * @param \DateTimeInterface|\DateInterval|int|null $ttl + * @return bool */ - public function put($key, $value, $minutes); + public function put($key, $value, $ttl = null); /** * Store an item in the cache if the key does not exist. * * @param string $key * @param mixed $value - * @param \DateTimeInterface|\DateInterval|float|int $minutes + * @param \DateTimeInterface|\DateInterval|int|null $ttl * @return bool */ - public function add($key, $value, $minutes); + public function add($key, $value, $ttl = null); /** * Increment the value of an item in the cache. @@ -76,7 +59,7 @@ public function decrement($key, $value = 1); * * @param string $key * @param mixed $value - * @return void + * @return bool */ public function forever($key, $value); @@ -84,11 +67,11 @@ public function forever($key, $value); * Get an item from the cache, or execute the given Closure and store the result. * * @param string $key - * @param \DateTimeInterface|\DateInterval|float|int $minutes + * @param \DateTimeInterface|\DateInterval|int|null $ttl * @param \Closure $callback * @return mixed */ - public function remember($key, $minutes, Closure $callback); + public function remember($key, $ttl, Closure $callback); /** * Get an item from the cache, or execute the given Closure and store the result forever. diff --git a/vendor/laravel/framework/src/Illuminate/Contracts/Cache/Store.php b/vendor/laravel/framework/src/Illuminate/Contracts/Cache/Store.php index 2eb6548872..133bc43e9f 100644 --- a/vendor/laravel/framework/src/Illuminate/Contracts/Cache/Store.php +++ b/vendor/laravel/framework/src/Illuminate/Contracts/Cache/Store.php @@ -23,23 +23,23 @@ public function get($key); public function many(array $keys); /** - * Store an item in the cache for a given number of minutes. + * Store an item in the cache for a given number of seconds. * * @param string $key * @param mixed $value - * @param float|int $minutes - * @return void + * @param int $seconds + * @return bool */ - public function put($key, $value, $minutes); + public function put($key, $value, $seconds); /** - * Store multiple items in the cache for a given number of minutes. + * Store multiple items in the cache for a given number of seconds. * * @param array $values - * @param float|int $minutes - * @return void + * @param int $seconds + * @return bool */ - public function putMany(array $values, $minutes); + public function putMany(array $values, $seconds); /** * Increment the value of an item in the cache. @@ -64,7 +64,7 @@ public function decrement($key, $value = 1); * * @param string $key * @param mixed $value - * @return void + * @return bool */ public function forever($key, $value); diff --git a/vendor/laravel/framework/src/Illuminate/Contracts/Console/Kernel.php b/vendor/laravel/framework/src/Illuminate/Contracts/Console/Kernel.php index 79889e6f6c..a7423af3a6 100644 --- a/vendor/laravel/framework/src/Illuminate/Contracts/Console/Kernel.php +++ b/vendor/laravel/framework/src/Illuminate/Contracts/Console/Kernel.php @@ -45,4 +45,13 @@ public function all(); * @return string */ public function output(); + + /** + * Terminate the application. + * + * @param \Symfony\Component\Console\Input\InputInterface $input + * @param int $status + * @return void + */ + public function terminate($input, $status); } diff --git a/vendor/laravel/framework/src/Illuminate/Contracts/Container/Container.php b/vendor/laravel/framework/src/Illuminate/Contracts/Container/Container.php index c2079080d1..095c2c3bf2 100644 --- a/vendor/laravel/framework/src/Illuminate/Contracts/Container/Container.php +++ b/vendor/laravel/framework/src/Illuminate/Contracts/Container/Container.php @@ -21,6 +21,8 @@ public function bound($abstract); * @param string $abstract * @param string $alias * @return void + * + * @throws \LogicException */ public function alias($abstract, $alias); @@ -37,7 +39,7 @@ public function tag($abstracts, $tags); * Resolve all of the bindings for a given tag. * * @param string $tag - * @return array + * @return iterable */ public function tagged($tag); @@ -90,6 +92,16 @@ public function extend($abstract, Closure $closure); */ public function instance($abstract, $instance); + /** + * Add a contextual binding to the container. + * + * @param string $concrete + * @param string $abstract + * @param \Closure|string $implementation + * @return void + */ + public function addContextualBinding($concrete, $abstract, $implementation); + /** * Define a contextual binding. * @@ -106,12 +118,21 @@ public function when($concrete); */ public function factory($abstract); + /** + * Flush the container of all bindings and resolved instances. + * + * @return void + */ + public function flush(); + /** * Resolve the given type from the container. * * @param string $abstract * @param array $parameters * @return mixed + * + * @throws \Illuminate\Contracts\Container\BindingResolutionException */ public function make($abstract, array $parameters = []); diff --git a/vendor/laravel/framework/src/Illuminate/Contracts/Debug/ExceptionHandler.php b/vendor/laravel/framework/src/Illuminate/Contracts/Debug/ExceptionHandler.php index e3f18a598b..975ed6c2e1 100644 --- a/vendor/laravel/framework/src/Illuminate/Contracts/Debug/ExceptionHandler.php +++ b/vendor/laravel/framework/src/Illuminate/Contracts/Debug/ExceptionHandler.php @@ -14,6 +14,14 @@ interface ExceptionHandler */ public function report(Exception $e); + /** + * Determine if the exception should be reported. + * + * @param \Exception $e + * @return bool + */ + public function shouldReport(Exception $e); + /** * Render an exception into an HTTP response. * diff --git a/vendor/laravel/framework/src/Illuminate/Contracts/Encryption/Encrypter.php b/vendor/laravel/framework/src/Illuminate/Contracts/Encryption/Encrypter.php index 25282a4dbb..58f06246f1 100644 --- a/vendor/laravel/framework/src/Illuminate/Contracts/Encryption/Encrypter.php +++ b/vendor/laravel/framework/src/Illuminate/Contracts/Encryption/Encrypter.php @@ -10,6 +10,8 @@ interface Encrypter * @param mixed $value * @param bool $serialize * @return mixed + * + * @throws \Illuminate\Contracts\Encryption\EncryptException */ public function encrypt($value, $serialize = true); @@ -19,6 +21,8 @@ public function encrypt($value, $serialize = true); * @param mixed $payload * @param bool $unserialize * @return mixed + * + * @throws \Illuminate\Contracts\Encryption\DecryptException */ public function decrypt($payload, $unserialize = true); } diff --git a/vendor/laravel/framework/src/Illuminate/Contracts/Filesystem/Filesystem.php b/vendor/laravel/framework/src/Illuminate/Contracts/Filesystem/Filesystem.php index d77274be16..399b627615 100644 --- a/vendor/laravel/framework/src/Illuminate/Contracts/Filesystem/Filesystem.php +++ b/vendor/laravel/framework/src/Illuminate/Contracts/Filesystem/Filesystem.php @@ -91,7 +91,7 @@ public function setVisibility($path, $visibility); * * @param string $path * @param string $data - * @return int + * @return bool */ public function prepend($path, $data); @@ -100,7 +100,7 @@ public function prepend($path, $data); * * @param string $path * @param string $data - * @return int + * @return bool */ public function append($path, $data); diff --git a/vendor/laravel/framework/src/Illuminate/Contracts/Foundation/Application.php b/vendor/laravel/framework/src/Illuminate/Contracts/Foundation/Application.php index d8e505a836..aa277d7feb 100644 --- a/vendor/laravel/framework/src/Illuminate/Contracts/Foundation/Application.php +++ b/vendor/laravel/framework/src/Illuminate/Contracts/Foundation/Application.php @@ -2,6 +2,7 @@ namespace Illuminate\Contracts\Foundation; +use Closure; use Illuminate\Contracts\Container\Container; interface Application extends Container @@ -21,11 +22,58 @@ public function version(); public function basePath(); /** - * Get or check the current application environment. + * Get the path to the bootstrap directory. + * + * @param string $path Optionally, a path to append to the bootstrap path + * @return string + */ + public function bootstrapPath($path = ''); + + /** + * Get the path to the application configuration files. + * + * @param string $path Optionally, a path to append to the config path + * @return string + */ + public function configPath($path = ''); + + /** + * Get the path to the database directory. + * + * @param string $path Optionally, a path to append to the database path + * @return string + */ + public function databasePath($path = ''); + + /** + * Get the path to the environment file directory. * * @return string */ - public function environment(); + public function environmentPath(); + + /** + * Get the path to the resources directory. + * + * @param string $path + * @return string + */ + public function resourcePath($path = ''); + + /** + * Get the path to the storage directory. + * + * @return string + */ + public function storagePath(); + + /** + * Get or check the current application environment. + * + * @param string|array $environments + * @return string|bool + */ + public function environment(...$environments); /** * Determine if the application is running in the console. @@ -73,6 +121,14 @@ public function register($provider, $force = false); */ public function registerDeferredProvider($provider, $service = null); + /** + * Resolve a service provider instance from the class name. + * + * @param string $provider + * @return \Illuminate\Support\ServiceProvider + */ + public function resolveProvider($provider); + /** * Boot the application's service providers. * @@ -96,6 +152,50 @@ public function booting($callback); */ public function booted($callback); + /** + * Run the given array of bootstrap classes. + * + * @param array $bootstrappers + * @return void + */ + public function bootstrapWith(array $bootstrappers); + + /** + * Determine if the application configuration is cached. + * + * @return bool + */ + public function configurationIsCached(); + + /** + * Detect the application's current environment. + * + * @param \Closure $callback + * @return string + */ + public function detectEnvironment(Closure $callback); + + /** + * Get the environment file the application is using. + * + * @return string + */ + public function environmentFile(); + + /** + * Get the fully qualified path to the environment file. + * + * @return string + */ + public function environmentFilePath(); + + /** + * Get the path to the configuration cache file. + * + * @return string + */ + public function getCachedConfigPath(); + /** * Get the path to the cached services.php file. * @@ -109,4 +209,86 @@ public function getCachedServicesPath(); * @return string */ public function getCachedPackagesPath(); + + /** + * Get the path to the routes cache file. + * + * @return string + */ + public function getCachedRoutesPath(); + + /** + * Get the current application locale. + * + * @return string + */ + public function getLocale(); + + /** + * Get the application namespace. + * + * @return string + * + * @throws \RuntimeException + */ + public function getNamespace(); + + /** + * Get the registered service provider instances if any exist. + * + * @param \Illuminate\Support\ServiceProvider|string $provider + * @return array + */ + public function getProviders($provider); + + /** + * Determine if the application has been bootstrapped before. + * + * @return bool + */ + public function hasBeenBootstrapped(); + + /** + * Load and boot all of the remaining deferred providers. + * + * @return void + */ + public function loadDeferredProviders(); + + /** + * Set the environment file to be loaded during bootstrapping. + * + * @param string $file + * @return $this + */ + public function loadEnvironmentFrom($file); + + /** + * Determine if the application routes are cached. + * + * @return bool + */ + public function routesAreCached(); + + /** + * Set the current application locale. + * + * @param string $locale + * @return void + */ + public function setLocale($locale); + + /** + * Determine if middleware has been disabled for the application. + * + * @return bool + */ + public function shouldSkipMiddleware(); + + /** + * Terminate the application. + * + * @return void + */ + public function terminate(); } diff --git a/vendor/laravel/framework/src/Illuminate/Contracts/Mail/Mailable.php b/vendor/laravel/framework/src/Illuminate/Contracts/Mail/Mailable.php index 2612070011..882b216771 100644 --- a/vendor/laravel/framework/src/Illuminate/Contracts/Mail/Mailable.php +++ b/vendor/laravel/framework/src/Illuminate/Contracts/Mail/Mailable.php @@ -25,7 +25,7 @@ public function queue(Queue $queue); /** * Deliver the queued message after the given delay. * - * @param \DateTime|int $delay + * @param \DateTimeInterface|\DateInterval|int $delay * @param \Illuminate\Contracts\Queue\Factory $queue * @return mixed */ diff --git a/vendor/laravel/framework/src/Illuminate/Contracts/Queue/Job.php b/vendor/laravel/framework/src/Illuminate/Contracts/Queue/Job.php index 9449d07cc5..ca6db810cd 100644 --- a/vendor/laravel/framework/src/Illuminate/Contracts/Queue/Job.php +++ b/vendor/laravel/framework/src/Illuminate/Contracts/Queue/Job.php @@ -35,6 +35,13 @@ public function fire(); */ public function release($delay = 0); + /** + * Determine if the job was released back into the queue. + * + * @return bool + */ + public function isReleased(); + /** * Delete the job from the queue. * @@ -64,12 +71,26 @@ public function isDeletedOrReleased(); public function attempts(); /** - * Process an exception that caused the job to fail. + * Determine if the job has been marked as a failure. + * + * @return bool + */ + public function hasFailed(); + + /** + * Mark the job as "failed". + * + * @return void + */ + public function markAsFailed(); + + /** + * Delete the job, call the "failed" method, and raise the failed job event. * - * @param \Throwable $e + * @param \Throwable|null $e * @return void */ - public function failed($e); + public function fail($e = null); /** * Get the number of times to attempt a job. diff --git a/vendor/laravel/framework/src/Illuminate/Contracts/Routing/ResponseFactory.php b/vendor/laravel/framework/src/Illuminate/Contracts/Routing/ResponseFactory.php index 9079ace159..34d90c8069 100644 --- a/vendor/laravel/framework/src/Illuminate/Contracts/Routing/ResponseFactory.php +++ b/vendor/laravel/framework/src/Illuminate/Contracts/Routing/ResponseFactory.php @@ -89,6 +89,15 @@ public function streamDownload($callback, $name = null, array $headers = [], $di */ public function download($file, $name = null, array $headers = [], $disposition = 'attachment'); + /** + * Return the raw contents of a binary file. + * + * @param \SplFileInfo|string $file + * @param array $headers + * @return \Symfony\Component\HttpFoundation\BinaryFileResponse + */ + public function file($file, array $headers = []); + /** * Create a new redirect response to the given path. * diff --git a/vendor/laravel/framework/src/Illuminate/Contracts/Routing/UrlGenerator.php b/vendor/laravel/framework/src/Illuminate/Contracts/Routing/UrlGenerator.php index 53044ccc6b..c453b6bb1e 100644 --- a/vendor/laravel/framework/src/Illuminate/Contracts/Routing/UrlGenerator.php +++ b/vendor/laravel/framework/src/Illuminate/Contracts/Routing/UrlGenerator.php @@ -11,6 +11,14 @@ interface UrlGenerator */ public function current(); + /** + * Get the URL for the previous request. + * + * @param mixed $fallback + * @return string + */ + public function previous($fallback = false); + /** * Generate an absolute URL to the given path. * diff --git a/vendor/laravel/framework/src/Illuminate/Contracts/Support/DeferrableProvider.php b/vendor/laravel/framework/src/Illuminate/Contracts/Support/DeferrableProvider.php new file mode 100644 index 0000000000..cfecf8bf7c --- /dev/null +++ b/vendor/laravel/framework/src/Illuminate/Contracts/Support/DeferrableProvider.php @@ -0,0 +1,13 @@ + 'sqlsrv', + 'mysql2' => 'mysql', // RDS + 'postgres' => 'pgsql', + 'postgresql' => 'pgsql', + 'sqlite3' => 'sqlite', + ]; + + /** + * Parse the database configuration, hydrating options using a database configuration URL if possible. + * + * @param array|string $config + * @return array + */ + public function parseConfiguration($config) + { + if (is_string($config)) { + $config = ['url' => $config]; + } + + $url = $config['url'] ?? null; + + $config = Arr::except($config, 'url'); + + if (! $url) { + return $config; + } + + $parsedUrl = $this->parseUrl($url); + + return array_merge( + $config, + $this->getPrimaryOptions($parsedUrl), + $this->getQueryOptions($parsedUrl) + ); + } + + /** + * Get the primary database connection options. + * + * @param array $url + * @return array + */ + protected function getPrimaryOptions($url) + { + return array_filter([ + 'driver' => $this->getDriver($url), + 'database' => $this->getDatabase($url), + 'host' => $url['host'] ?? null, + 'port' => $url['port'] ?? null, + 'username' => $url['user'] ?? null, + 'password' => $url['pass'] ?? null, + ], function ($value) { + return ! is_null($value); + }); + } + + /** + * Get the database driver from the URL. + * + * @param array $url + * @return string|null + */ + protected function getDriver($url) + { + $alias = $url['scheme'] ?? null; + + if (! $alias) { + return; + } + + return static::$driverAliases[$alias] ?? $alias; + } + + /** + * Get the database name from the URL. + * + * @param array $url + * @return string|null + */ + protected function getDatabase($url) + { + $path = $url['path'] ?? null; + + return $path ? substr($path, 1) : null; + } + + /** + * Get all of the additional database options from the query string. + * + * @param array $url + * @return array + */ + protected function getQueryOptions($url) + { + $queryString = $url['query'] ?? null; + + if (! $queryString) { + return []; + } + + $query = []; + + parse_str($queryString, $query); + + return $this->parseStringsToNativeTypes($query); + } + + /** + * Parse the string URL to an array of components. + * + * @param string $url + * @return array + */ + protected function parseUrl($url): array + { + $url = preg_replace('#^(sqlite3?):///#', '$1://null/', $url); + + $parsedUrl = parse_url($url); + + if ($parsedUrl === false) { + throw new InvalidArgumentException('The database configuration URL is malformed.'); + } + + return $this->parseStringsToNativeTypes( + array_map('rawurldecode', $parsedUrl) + ); + } + + /** + * Convert string casted values to their native types. + * + * @param mixed $value + * @return mixed + */ + protected function parseStringsToNativeTypes($value) + { + if (is_array($value)) { + return array_map([$this, 'parseStringsToNativeTypes'], $value); + } + + if (! is_string($value)) { + return $value; + } + + $parsedValue = json_decode($value, true); + + if (json_last_error() === JSON_ERROR_NONE) { + return $parsedValue; + } + + return $value; + } + + /** + * Get all of the current drivers aliases. + * + * @return array + */ + public static function getDriverAliases() + { + return static::$driverAliases; + } + + /** + * Add the given driver alias to the driver aliases array. + * + * @param string $alias + * @param string $driver + * @return void + */ + public static function addDriverAlias($alias, $driver) + { + static::$driverAliases[$alias] = $driver; + } +} diff --git a/vendor/laravel/framework/src/Illuminate/Database/Connection.php b/vendor/laravel/framework/src/Illuminate/Database/Connection.php index 004545c588..b6c112e578 100755 --- a/vendor/laravel/framework/src/Illuminate/Database/Connection.php +++ b/vendor/laravel/framework/src/Illuminate/Database/Connection.php @@ -1118,7 +1118,7 @@ public function unsetEventDispatcher() } /** - * Determine if the connection in a "dry run". + * Determine if the connection is in a "dry run". * * @return bool */ diff --git a/vendor/laravel/framework/src/Illuminate/Database/Console/Factories/FactoryMakeCommand.php b/vendor/laravel/framework/src/Illuminate/Database/Console/Factories/FactoryMakeCommand.php index 86341594d1..725a69ccce 100644 --- a/vendor/laravel/framework/src/Illuminate/Database/Console/Factories/FactoryMakeCommand.php +++ b/vendor/laravel/framework/src/Illuminate/Database/Console/Factories/FactoryMakeCommand.php @@ -46,12 +46,22 @@ protected function getStub() */ protected function buildClass($name) { - $model = $this->option('model') + $namespaceModel = $this->option('model') ? $this->qualifyClass($this->option('model')) - : 'Model'; + : trim($this->rootNamespace(), '\\').'\\Model'; + + $model = class_basename($namespaceModel); return str_replace( - 'DummyModel', $model, parent::buildClass($name) + [ + 'NamespacedDummyModel', + 'DummyModel', + ], + [ + $namespaceModel, + $model, + ], + parent::buildClass($name) ); } diff --git a/vendor/laravel/framework/src/Illuminate/Database/Console/Factories/stubs/factory.stub b/vendor/laravel/framework/src/Illuminate/Database/Console/Factories/stubs/factory.stub index 9e3f90b60f..909af66b64 100644 --- a/vendor/laravel/framework/src/Illuminate/Database/Console/Factories/stubs/factory.stub +++ b/vendor/laravel/framework/src/Illuminate/Database/Console/Factories/stubs/factory.stub @@ -1,5 +1,8 @@ define(DummyModel::class, function (Faker $faker) { diff --git a/vendor/laravel/framework/src/Illuminate/Database/DatabaseManager.php b/vendor/laravel/framework/src/Illuminate/Database/DatabaseManager.php index cb0f3bc9c1..05d8cf0d45 100755 --- a/vendor/laravel/framework/src/Illuminate/Database/DatabaseManager.php +++ b/vendor/laravel/framework/src/Illuminate/Database/DatabaseManager.php @@ -16,7 +16,7 @@ class DatabaseManager implements ConnectionResolverInterface /** * The application instance. * - * @var \Illuminate\Foundation\Application + * @var \Illuminate\Contracts\Foundation\Application */ protected $app; @@ -41,10 +41,17 @@ class DatabaseManager implements ConnectionResolverInterface */ protected $extensions = []; + /** + * The callback to be executed to reconnect to a database. + * + * @var callable + */ + protected $reconnector; + /** * Create a new database manager instance. * - * @param \Illuminate\Foundation\Application $app + * @param \Illuminate\Contracts\Foundation\Application $app * @param \Illuminate\Database\Connectors\ConnectionFactory $factory * @return void */ @@ -52,6 +59,10 @@ public function __construct($app, ConnectionFactory $factory) { $this->app = $app; $this->factory = $factory; + + $this->reconnector = function ($connection) { + $this->reconnect($connection->getName()); + }; } /** @@ -140,7 +151,8 @@ protected function configuration($name) throw new InvalidArgumentException("Database [{$name}] not configured."); } - return $config; + return (new ConfigurationUrlParser) + ->parseConfiguration($config); } /** @@ -164,9 +176,7 @@ protected function configure(Connection $connection, $type) // Here we'll set a reconnector callback. This reconnector can be any callable // so we will set a Closure to reconnect from this manager with the name of // the connection, which will allow us to reconnect from the connections. - $connection->setReconnector(function ($connection) { - $this->reconnect($connection->getName()); - }); + $connection->setReconnector($this->reconnector); return $connection; } @@ -315,6 +325,17 @@ public function getConnections() return $this->connections; } + /** + * Set the database reconnector callback. + * + * @param callable $reconnector + * @return void + */ + public function setReconnector(callable $reconnector) + { + $this->reconnector = $reconnector; + } + /** * Dynamically pass methods to the default connection. * diff --git a/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php b/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php index bbe5c0f310..d968e6a6df 100755 --- a/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php +++ b/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php @@ -856,14 +856,23 @@ public function decrement($column, $amount = 1, array $extra = []) */ protected function addUpdatedAtColumn(array $values) { - if (! $this->model->usesTimestamps()) { + if (! $this->model->usesTimestamps() || + is_null($this->model->getUpdatedAtColumn())) { return $values; } - return Arr::add( - $values, $this->model->getUpdatedAtColumn(), - $this->model->freshTimestampString() + $column = $this->model->getUpdatedAtColumn(); + + $values = array_merge( + [$column => $this->model->freshTimestampString()], + $values ); + + $values[$this->qualifyColumn($column)] = $values[$column]; + + unset($values[$column]); + + return $values; } /** diff --git a/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Collection.php b/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Collection.php index 29914cba1c..5da2c0b184 100755 --- a/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Collection.php +++ b/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Collection.php @@ -141,7 +141,7 @@ public function loadMissing($relations) * @param array $path * @return void */ - protected function loadMissingRelation(Collection $models, array $path) + protected function loadMissingRelation(self $models, array $path) { $relation = array_shift($path); @@ -189,19 +189,6 @@ public function loadMorph($relation, $relations) return $this; } - /** - * Add an item to the collection. - * - * @param mixed $item - * @return $this - */ - public function add($item) - { - $this->items[] = $item; - - return $this; - } - /** * Determine if a key exists in the collection. * @@ -506,6 +493,19 @@ public function pad($size, $value) return $this->toBase()->pad($size, $value); } + /** + * Get the comparison function to detect duplicates. + * + * @param bool $strict + * @return \Closure + */ + protected function duplicateComparator($strict) + { + return function ($a, $b) { + return $a->is($b); + }; + } + /** * Get the type of the entities being queued. * diff --git a/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php b/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php index 8c6dc1fcf7..c67d522f99 100644 --- a/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php +++ b/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php @@ -4,9 +4,11 @@ use LogicException; use DateTimeInterface; +use Carbon\CarbonInterface; use Illuminate\Support\Arr; use Illuminate\Support\Str; use Illuminate\Support\Carbon; +use Illuminate\Support\Facades\Date; use Illuminate\Contracts\Support\Arrayable; use Illuminate\Database\Eloquent\Relations\Relation; use Illuminate\Support\Collection as BaseCollection; @@ -763,15 +765,15 @@ protected function asDateTime($value) // If this value is already a Carbon instance, we shall just return it as is. // This prevents us having to re-instantiate a Carbon instance when we know // it already is one, which wouldn't be fulfilled by the DateTime check. - if ($value instanceof Carbon) { - return $value; + if ($value instanceof Carbon || $value instanceof CarbonInterface) { + return Date::instance($value); } // If the value is already a DateTime instance, we will just skip the rest of // these checks since they will be a waste of time, and hinder performance // when checking the field. We will just return the DateTime right away. if ($value instanceof DateTimeInterface) { - return new Carbon( + return Date::parse( $value->format('Y-m-d H:i:s.u'), $value->getTimezone() ); } @@ -780,22 +782,27 @@ protected function asDateTime($value) // and format a Carbon object from this timestamp. This allows flexibility // when defining your date fields as they might be UNIX timestamps here. if (is_numeric($value)) { - return Carbon::createFromTimestamp($value); + return Date::createFromTimestamp($value); } // If the value is in simply year, month, day format, we will instantiate the // Carbon instances from that format. Again, this provides for simple date // fields on the database, while still supporting Carbonized conversion. if ($this->isStandardDateFormat($value)) { - return Carbon::createFromFormat('Y-m-d', $value)->startOfDay(); + return Date::instance(Carbon::createFromFormat('Y-m-d', $value)->startOfDay()); + } + + $format = $this->getDateFormat(); + + // https://bugs.php.net/bug.php?id=75577 + if (version_compare(PHP_VERSION, '7.3.0-dev', '<')) { + $format = str_replace('.v', '.u', $format); } // Finally, we will just assume this date is in the format used by default on // the database connection and use that format to create the Carbon object // that is returned back out to the developers after we convert it here. - return Carbon::createFromFormat( - str_replace('.v', '.u', $this->getDateFormat()), $value - ); + return Date::createFromFormat($format, $value); } /** @@ -1142,7 +1149,7 @@ public function getChanges() * @param mixed $current * @return bool */ - protected function originalIsEquivalent($key, $current) + public function originalIsEquivalent($key, $current) { if (! array_key_exists($key, $this->original)) { return false; diff --git a/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasEvents.php b/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasEvents.php index 7f1ffd7a06..3c9d2a1d5f 100644 --- a/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasEvents.php +++ b/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasEvents.php @@ -3,6 +3,7 @@ namespace Illuminate\Database\Eloquent\Concerns; use Illuminate\Support\Arr; +use InvalidArgumentException; use Illuminate\Contracts\Events\Dispatcher; trait HasEvents @@ -30,6 +31,8 @@ trait HasEvents * * @param object|array|string $classes * @return void + * + * @throws \RuntimeException */ public static function observe($classes) { @@ -45,10 +48,12 @@ public static function observe($classes) * * @param object|string $class * @return void + * + * @throws \RuntimeException */ protected function registerObserver($class) { - $className = is_string($class) ? $class : get_class($class); + $className = $this->resolveObserverClassName($class); // When registering a model observer, we will spin through the possible events // and determine if this observer has that method. If it does, we will hook @@ -60,6 +65,27 @@ protected function registerObserver($class) } } + /** + * Resolve the observer's class name from an object or string. + * + * @param object|string $class + * @return string + * + * @throws \InvalidArgumentException + */ + private function resolveObserverClassName($class) + { + if (is_object($class)) { + return get_class($class); + } + + if (class_exists($class)) { + return $class; + } + + throw new InvalidArgumentException('Unable to find observer: '.$class); + } + /** * Get the observable event names. * @@ -70,7 +96,7 @@ public function getObservableEvents() return array_merge( [ 'retrieved', 'creating', 'created', 'updating', 'updated', - 'saving', 'saved', 'restoring', 'restored', + 'saving', 'saved', 'restoring', 'restored', 'replicating', 'deleting', 'deleted', 'forceDeleted', ], $this->observables @@ -277,6 +303,17 @@ public static function created($callback) static::registerModelEvent('created', $callback); } + /** + * Register a replicating model event with the dispatcher. + * + * @param \Closure|string $callback + * @return void + */ + public static function replicating($callback) + { + static::registerModelEvent('replicating', $callback); + } + /** * Register a deleting model event with the dispatcher. * diff --git a/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasRelationships.php b/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasRelationships.php index 1c3649fa7c..cb202f999a 100644 --- a/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasRelationships.php +++ b/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasRelationships.php @@ -16,6 +16,7 @@ use Illuminate\Database\Eloquent\Relations\MorphMany; use Illuminate\Database\Eloquent\Relations\MorphToMany; use Illuminate\Database\Eloquent\Relations\BelongsToMany; +use Illuminate\Database\Eloquent\Relations\HasOneThrough; use Illuminate\Database\Eloquent\Relations\HasManyThrough; trait HasRelationships @@ -76,6 +77,49 @@ protected function newHasOne(Builder $query, Model $parent, $foreignKey, $localK return new HasOne($query, $parent, $foreignKey, $localKey); } + /** + * Define a has-one-through relationship. + * + * @param string $related + * @param string $through + * @param string|null $firstKey + * @param string|null $secondKey + * @param string|null $localKey + * @param string|null $secondLocalKey + * @return \Illuminate\Database\Eloquent\Relations\HasOneThrough + */ + public function hasOneThrough($related, $through, $firstKey = null, $secondKey = null, $localKey = null, $secondLocalKey = null) + { + $through = new $through; + + $firstKey = $firstKey ?: $this->getForeignKey(); + + $secondKey = $secondKey ?: $through->getForeignKey(); + + return $this->newHasOneThrough( + $this->newRelatedInstance($related)->newQuery(), $this, $through, + $firstKey, $secondKey, $localKey ?: $this->getKeyName(), + $secondLocalKey ?: $through->getKeyName() + ); + } + + /** + * Instantiate a new HasOneThrough relationship. + * + * @param \Illuminate\Database\Eloquent\Builder $query + * @param \Illuminate\Database\Eloquent\Model $farParent + * @param \Illuminate\Database\Eloquent\Model $throughParent + * @param string $firstKey + * @param string $secondKey + * @param string $localKey + * @param string $secondLocalKey + * @return \Illuminate\Database\Eloquent\Relations\HasOneThrough + */ + protected function newHasOneThrough(Builder $query, Model $farParent, Model $throughParent, $firstKey, $secondKey, $localKey, $secondLocalKey) + { + return new HasOneThrough($query, $farParent, $throughParent, $firstKey, $secondKey, $localKey, $secondLocalKey); + } + /** * Define a polymorphic one-to-one relationship. * @@ -484,7 +528,13 @@ public function morphToMany($related, $name, $table = null, $foreignPivotKey = n // Now we're ready to create a new query builder for this related model and // the relationship instances for this relation. This relations will set // appropriate query constraints then entirely manages the hydrations. - $table = $table ?: Str::plural($name); + if (! $table) { + $words = preg_split('/(_)/u', $name, -1, PREG_SPLIT_DELIM_CAPTURE); + + $lastWord = array_pop($words); + + $table = implode('', $words).Str::plural($lastWord); + } return $this->newMorphToMany( $instance->newQuery(), $this, $name, $table, diff --git a/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasTimestamps.php b/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasTimestamps.php index 8e3d488edd..6c44a73d6d 100644 --- a/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasTimestamps.php +++ b/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasTimestamps.php @@ -2,7 +2,7 @@ namespace Illuminate\Database\Eloquent\Concerns; -use Illuminate\Support\Carbon; +use Illuminate\Support\Facades\Date; trait HasTimestamps { @@ -81,7 +81,7 @@ public function setUpdatedAt($value) */ public function freshTimestamp() { - return new Carbon; + return Date::now(); } /** diff --git a/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Factory.php b/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Factory.php index 82917ae383..4ca3d62fe7 100644 --- a/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Factory.php +++ b/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Factory.php @@ -310,7 +310,7 @@ public function offsetGet($offset) */ public function offsetSet($offset, $value) { - return $this->define($offset, $value); + $this->define($offset, $value); } /** diff --git a/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php b/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php index f6568e7345..79282e19e8 100755 --- a/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php +++ b/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php @@ -15,7 +15,6 @@ use Illuminate\Database\Eloquent\Relations\Pivot; use Illuminate\Contracts\Queue\QueueableCollection; use Illuminate\Support\Collection as BaseCollection; -use Illuminate\Database\Query\Builder as QueryBuilder; use Illuminate\Database\ConnectionResolverInterface as Resolver; abstract class Model implements ArrayAccess, Arrayable, Jsonable, JsonSerializable, QueueableEntity, UrlRoutable @@ -51,7 +50,7 @@ abstract class Model implements ArrayAccess, Arrayable, Jsonable, JsonSerializab protected $primaryKey = 'id'; /** - * The "type" of the auto-incrementing ID. + * The "type" of the primary key ID. * * @var string */ @@ -444,9 +443,7 @@ public static function on($connection = null) */ public static function onWriteConnection() { - $instance = new static; - - return $instance->newQuery()->useWritePdo(); + return static::query()->useWritePdo(); } /** @@ -457,7 +454,7 @@ public static function onWriteConnection() */ public static function all($columns = ['*']) { - return (new static)->newQuery()->get( + return static::query()->get( is_array($columns) ? $columns : func_get_args() ); } @@ -470,7 +467,7 @@ public static function all($columns = ['*']) */ public static function with($relations) { - return (new static)->newQuery()->with( + return static::query()->with( is_string($relations) ? func_get_args() : $relations ); } @@ -507,6 +504,21 @@ public function loadMissing($relations) return $this; } + /** + * Eager load relation counts on the model. + * + * @param array|string $relations + * @return $this + */ + public function loadCount($relations) + { + $relations = is_string($relations) ? func_get_args() : $relations; + + $this->newCollection([$this])->loadCount($relations); + + return $this; + } + /** * Increment a column's value by a given amount. * @@ -1032,11 +1044,7 @@ public function newEloquentBuilder($query) */ protected function newBaseQueryBuilder() { - $connection = $this->getConnection(); - - return new QueryBuilder( - $connection, $connection->getQueryGrammar(), $connection->getPostProcessor() - ); + return $this->getConnection()->query(); } /** @@ -1167,6 +1175,8 @@ public function replicate(array $except = null) $instance->setRawAttributes($attributes); $instance->setRelations($this->relations); + + $instance->fireModelEvent('replicating', false); }); } @@ -1277,13 +1287,7 @@ public static function unsetConnectionResolver() */ public function getTable() { - if (! isset($this->table)) { - return str_replace( - '\\', '', Str::snake(Str::plural(class_basename($this))) - ); - } - - return $this->table; + return $this->table ?? Str::snake(Str::pluralStudly(class_basename($this))); } /** diff --git a/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/BelongsTo.php b/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/BelongsTo.php index 3fbbe04047..4dd5f026c1 100755 --- a/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/BelongsTo.php +++ b/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/BelongsTo.php @@ -35,7 +35,7 @@ class BelongsTo extends Relation * * @var string */ - protected $relation; + protected $relationName; /** * The count of self joins. @@ -51,13 +51,14 @@ class BelongsTo extends Relation * @param \Illuminate\Database\Eloquent\Model $child * @param string $foreignKey * @param string $ownerKey - * @param string $relation + * @param string $relationName + * * @return void */ - public function __construct(Builder $query, Model $child, $foreignKey, $ownerKey, $relation) + public function __construct(Builder $query, Model $child, $foreignKey, $ownerKey, $relationName) { $this->ownerKey = $ownerKey; - $this->relation = $relation; + $this->relationName = $relationName; $this->foreignKey = $foreignKey; // In the underlying base relationship class, this variable is referred to as @@ -216,7 +217,9 @@ public function associate($model) $this->child->setAttribute($this->foreignKey, $ownerKey); if ($model instanceof Model) { - $this->child->setRelation($this->relation, $model); + $this->child->setRelation($this->relationName, $model); + } elseif ($this->child->isDirty($this->foreignKey)) { + $this->child->unsetRelation($this->relationName); } return $this->child; @@ -231,7 +234,7 @@ public function dissociate() { $this->child->setAttribute($this->foreignKey, null); - return $this->child->setRelation($this->relation, null); + return $this->child->setRelation($this->relationName, null); } /** @@ -249,7 +252,7 @@ public function getRelationExistenceQuery(Builder $query, Builder $parentQuery, } return $query->select($columns)->whereColumn( - $this->getQualifiedForeignKey(), '=', $query->qualifyColumn($this->ownerKey) + $this->getQualifiedForeignKeyName(), '=', $query->qualifyColumn($this->ownerKey) ); } @@ -270,7 +273,7 @@ public function getRelationExistenceQueryForSelfRelation(Builder $query, Builder $query->getModel()->setTable($hash); return $query->whereColumn( - $hash.'.'.$this->ownerKey, '=', $this->getQualifiedForeignKey() + $hash.'.'.$this->ownerKey, '=', $this->getQualifiedForeignKeyName() ); } @@ -306,12 +309,22 @@ protected function newRelatedInstanceFor(Model $parent) return $this->related->newInstance(); } + /** + * Get the child of the relationship. + * + * @return \Illuminate\Database\Eloquent\Model + */ + public function getChild() + { + return $this->child; + } + /** * Get the foreign key of the relationship. * * @return string */ - public function getForeignKey() + public function getForeignKeyName() { return $this->foreignKey; } @@ -321,7 +334,7 @@ public function getForeignKey() * * @return string */ - public function getQualifiedForeignKey() + public function getQualifiedForeignKeyName() { return $this->child->qualifyColumn($this->foreignKey); } @@ -331,7 +344,7 @@ public function getQualifiedForeignKey() * * @return string */ - public function getOwnerKey() + public function getOwnerKeyName() { return $this->ownerKey; } @@ -351,8 +364,19 @@ public function getQualifiedOwnerKeyName() * * @return string */ + public function getRelationName() + { + return $this->relationName; + } + + /** + * Get the name of the relationship. + * + * @return string + * @deprecated The getRelationName() method should be used instead. Will be removed in Laravel 5.9. + */ public function getRelation() { - return $this->relation; + return $this->relationName; } } diff --git a/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/BelongsToMany.php b/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/BelongsToMany.php index 89d547a3a3..171648185d 100755 --- a/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/BelongsToMany.php +++ b/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/BelongsToMany.php @@ -141,16 +141,41 @@ class BelongsToMany extends Relation public function __construct(Builder $query, Model $parent, $table, $foreignPivotKey, $relatedPivotKey, $parentKey, $relatedKey, $relationName = null) { - $this->table = $table; $this->parentKey = $parentKey; $this->relatedKey = $relatedKey; $this->relationName = $relationName; $this->relatedPivotKey = $relatedPivotKey; $this->foreignPivotKey = $foreignPivotKey; + $this->table = $this->resolveTableName($table); parent::__construct($query, $parent); } + /** + * Attempt to resolve the intermediate table name from the given string. + * + * @param string $table + * @return string + */ + protected function resolveTableName($table) + { + if (! Str::contains($table, '\\') || ! class_exists($table)) { + return $table; + } + + $model = new $table; + + if (! $model instanceof Model) { + return $table; + } + + if ($model instanceof Pivot) { + $this->using($table); + } + + return $model->getTable(); + } + /** * Set the base constraints on the relation query. * @@ -799,7 +824,7 @@ protected function touchingParent() */ protected function guessInverseRelation() { - return Str::camel(Str::plural(class_basename($this->getParent()))); + return Str::camel(Str::pluralStudly(class_basename($this->getParent()))); } /** diff --git a/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/Concerns/AsPivot.php b/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/Concerns/AsPivot.php index 7fe75e6d4b..a33f56bdc5 100644 --- a/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/Concerns/AsPivot.php +++ b/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/Concerns/AsPivot.php @@ -42,6 +42,8 @@ public static function fromAttributes(Model $parent, $attributes, $table, $exist { $instance = new static; + $instance->timestamps = $instance->hasTimestampAttributes($attributes); + // The pivot model is a "dynamic" model since we will set the tables dynamically // for the instance. This allows it work for any intermediate tables for the // many to many relationship that are defined by this developer's classes. @@ -57,8 +59,6 @@ public static function fromAttributes(Model $parent, $attributes, $table, $exist $instance->exists = $exists; - $instance->timestamps = $instance->hasTimestampAttributes(); - return $instance; } @@ -75,9 +75,9 @@ public static function fromRawAttributes(Model $parent, $attributes, $table, $ex { $instance = static::fromAttributes($parent, [], $table, $exists); - $instance->setRawAttributes($attributes, true); + $instance->timestamps = $instance->hasTimestampAttributes($attributes); - $instance->timestamps = $instance->hasTimestampAttributes(); + $instance->setRawAttributes($attributes, true); return $instance; } @@ -111,10 +111,18 @@ protected function setKeysForSaveQuery(Builder $query) public function delete() { if (isset($this->attributes[$this->getKeyName()])) { - return parent::delete(); + return (int) parent::delete(); } - return $this->getDeleteQuery()->delete(); + if ($this->fireModelEvent('deleting') === false) { + return 0; + } + + $this->touchOwners(); + + return tap($this->getDeleteQuery()->delete(), function () { + $this->fireModelEvent('deleted', false); + }); } /** @@ -193,13 +201,14 @@ public function setPivotKeys($foreignKey, $relatedKey) } /** - * Determine if the pivot model has timestamp attributes. + * Determine if the pivot model or given attributes has timestamp attributes. * + * @param $attributes array|null * @return bool */ - public function hasTimestampAttributes() + public function hasTimestampAttributes($attributes = null) { - return array_key_exists($this->getCreatedAtColumn(), $this->attributes); + return array_key_exists($this->getCreatedAtColumn(), $attributes ?? $this->attributes); } /** diff --git a/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/Concerns/InteractsWithPivotTable.php b/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/Concerns/InteractsWithPivotTable.php index 1984ec6906..f9fc89ebf8 100644 --- a/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/Concerns/InteractsWithPivotTable.php +++ b/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/Concerns/InteractsWithPivotTable.php @@ -184,6 +184,10 @@ protected function attachNew(array $records, array $current, $touch = true) */ public function updateExistingPivot($id, array $attributes, $touch = true) { + if ($this->using && empty($this->pivotWheres) && empty($this->pivotWhereIns)) { + return $this->updateExistingPivotUsingCustomClass($id, $attributes, $touch); + } + if (in_array($this->updatedAt(), $this->pivotColumns)) { $attributes = $this->addTimestampsToAttachment($attributes, true); } @@ -199,6 +203,28 @@ public function updateExistingPivot($id, array $attributes, $touch = true) return $updated; } + /** + * Update an existing pivot record on the table via a custom class. + * + * @param mixed $id + * @param array $attributes + * @param bool $touch + * @return int + */ + protected function updateExistingPivotUsingCustomClass($id, array $attributes, $touch) + { + $updated = $this->newPivot([ + $this->foreignPivotKey => $this->parent->{$this->parentKey}, + $this->relatedPivotKey => $this->parseId($id), + ], true)->fill($attributes)->save(); + + if ($touch) { + $this->touchIfTouching(); + } + + return (int) $updated; + } + /** * Attach a model to the parent. * @@ -209,18 +235,40 @@ public function updateExistingPivot($id, array $attributes, $touch = true) */ public function attach($id, array $attributes = [], $touch = true) { - // Here we will insert the attachment records into the pivot table. Once we have - // inserted the records, we will touch the relationships if necessary and the - // function will return. We can parse the IDs before inserting the records. - $this->newPivotStatement()->insert($this->formatAttachRecords( - $this->parseIds($id), $attributes - )); + if ($this->using) { + $this->attachUsingCustomClass($id, $attributes); + } else { + // Here we will insert the attachment records into the pivot table. Once we have + // inserted the records, we will touch the relationships if necessary and the + // function will return. We can parse the IDs before inserting the records. + $this->newPivotStatement()->insert($this->formatAttachRecords( + $this->parseIds($id), $attributes + )); + } if ($touch) { $this->touchIfTouching(); } } + /** + * Attach a model to the parent using a custom class. + * + * @param mixed $id + * @param array $attributes + * @return void + */ + protected function attachUsingCustomClass($id, array $attributes) + { + $records = $this->formatAttachRecords( + $this->parseIds($id), $attributes + ); + + foreach ($records as $record) { + $this->newPivot($record, false)->save(); + } + } + /** * Create an array of records to insert into the pivot table. * @@ -355,26 +403,30 @@ protected function hasPivotColumn($column) */ public function detach($ids = null, $touch = true) { - $query = $this->newPivotQuery(); - - // If associated IDs were passed to the method we will only delete those - // associations, otherwise all of the association ties will be broken. - // We'll return the numbers of affected rows when we do the deletes. - if (! is_null($ids)) { - $ids = $this->parseIds($ids); - - if (empty($ids)) { - return 0; + if ($this->using && ! empty($ids) && empty($this->pivotWheres) && empty($this->pivotWhereIns)) { + $results = $this->detachUsingCustomClass($ids); + } else { + $query = $this->newPivotQuery(); + + // If associated IDs were passed to the method we will only delete those + // associations, otherwise all of the association ties will be broken. + // We'll return the numbers of affected rows when we do the deletes. + if (! is_null($ids)) { + $ids = $this->parseIds($ids); + + if (empty($ids)) { + return 0; + } + + $query->whereIn($this->relatedPivotKey, (array) $ids); } - $query->whereIn($this->relatedPivotKey, (array) $ids); + // Once we have all of the conditions set on the statement, we are ready + // to run the delete on the pivot table. Then, if the touch parameter + // is true, we will go ahead and touch all related models to sync. + $results = $query->delete(); } - // Once we have all of the conditions set on the statement, we are ready - // to run the delete on the pivot table. Then, if the touch parameter - // is true, we will go ahead and touch all related models to sync. - $results = $query->delete(); - if ($touch) { $this->touchIfTouching(); } @@ -382,6 +434,26 @@ public function detach($ids = null, $touch = true) return $results; } + /** + * Detach models from the relationship using a custom class. + * + * @param mixed $ids + * @return int + */ + protected function detachUsingCustomClass($ids) + { + $results = 0; + + foreach ($this->parseIds($ids) as $id) { + $results += $this->newPivot([ + $this->foreignPivotKey => $this->parent->{$this->parentKey}, + $this->relatedPivotKey => $id, + ], true)->delete(); + } + + return $results; + } + /** * Create a new pivot model instance. * diff --git a/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/HasManyThrough.php b/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/HasManyThrough.php index 3bb2f33c30..873ea893aa 100644 --- a/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/HasManyThrough.php +++ b/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/HasManyThrough.php @@ -209,7 +209,7 @@ protected function buildDictionary(Collection $results) // relationship as this will allow us to quickly access all of the related // models without having to do nested looping which will be quite slow. foreach ($results as $result) { - $dictionary[$result->{$this->firstKey}][] = $result; + $dictionary[$result->laravel_through_key][] = $result; } return $dictionary; @@ -414,7 +414,7 @@ protected function shouldSelect(array $columns = ['*']) $columns = [$this->related->getTable().'.*']; } - return array_merge($columns, [$this->getQualifiedFirstKeyName()]); + return array_merge($columns, [$this->getQualifiedFirstKeyName().' as laravel_through_key']); } /** diff --git a/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/HasOneThrough.php b/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/HasOneThrough.php new file mode 100644 index 0000000000..86bd35d123 --- /dev/null +++ b/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/HasOneThrough.php @@ -0,0 +1,76 @@ +first() ?: $this->getDefaultFor($this->farParent); + } + + /** + * Initialize the relation on a set of models. + * + * @param array $models + * @param string $relation + * @return array + */ + public function initRelation(array $models, $relation) + { + foreach ($models as $model) { + $model->setRelation($relation, $this->getDefaultFor($model)); + } + + return $models; + } + + /** + * Match the eagerly loaded results to their parents. + * + * @param array $models + * @param \Illuminate\Database\Eloquent\Collection $results + * @param string $relation + * @return array + */ + public function match(array $models, Collection $results, $relation) + { + $dictionary = $this->buildDictionary($results); + + // Once we have the dictionary we can simply spin through the parent models to + // link them up with their children using the keyed dictionary to make the + // matching very convenient and easy work. Then we'll just return them. + foreach ($models as $model) { + if (isset($dictionary[$key = $model->getAttribute($this->localKey)])) { + $value = $dictionary[$key]; + $model->setRelation( + $relation, reset($value) + ); + } + } + + return $models; + } + + /** + * Make a new related instance for the given model. + * + * @param \Illuminate\Database\Eloquent\Model $parent + * @return \Illuminate\Database\Eloquent\Model + */ + public function newRelatedInstanceFor(Model $parent) + { + return $this->related->newInstance(); + } +} diff --git a/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/MorphTo.php b/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/MorphTo.php index 8d2dc2365a..6c08ef3e04 100644 --- a/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/MorphTo.php +++ b/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/MorphTo.php @@ -171,7 +171,7 @@ protected function matchToMorphParents($type, Collection $results) if (isset($this->dictionary[$type][$ownerKey])) { foreach ($this->dictionary[$type][$ownerKey] as $model) { - $model->setRelation($this->relation, $result); + $model->setRelation($this->relationName, $result); } } } @@ -193,7 +193,7 @@ public function associate($model) $this->morphType, $model instanceof Model ? $model->getMorphClass() : null ); - return $this->parent->setRelation($this->relation, $model); + return $this->parent->setRelation($this->relationName, $model); } /** @@ -207,7 +207,7 @@ public function dissociate() $this->parent->setAttribute($this->morphType, null); - return $this->parent->setRelation($this->relation, null); + return $this->parent->setRelation($this->relationName, null); } /** @@ -222,6 +222,17 @@ public function touch() } } + /** + * Make a new related instance for the given model. + * + * @param \Illuminate\Database\Eloquent\Model $parent + * @return \Illuminate\Database\Eloquent\Model + */ + protected function newRelatedInstanceFor(Model $parent) + { + return $parent->{$this->getRelationName()}()->getRelated()->newInstance(); + } + /** * Get the foreign key "type" name. * diff --git a/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/Pivot.php b/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/Pivot.php index 2ec8235156..a65ecdea66 100755 --- a/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/Pivot.php +++ b/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/Pivot.php @@ -9,6 +9,13 @@ class Pivot extends Model { use AsPivot; + /** + * Indicates if the IDs are auto-incrementing. + * + * @var bool + */ + public $incrementing = false; + /** * The attributes that aren't mass assignable. * diff --git a/vendor/laravel/framework/src/Illuminate/Database/Eloquent/SoftDeletes.php b/vendor/laravel/framework/src/Illuminate/Database/Eloquent/SoftDeletes.php index d8b7363068..162afff6ce 100644 --- a/vendor/laravel/framework/src/Illuminate/Database/Eloquent/SoftDeletes.php +++ b/vendor/laravel/framework/src/Illuminate/Database/Eloquent/SoftDeletes.php @@ -2,6 +2,12 @@ namespace Illuminate\Database\Eloquent; +/** + * @method static static|\Illuminate\Database\Eloquent\Builder|\Illuminate\Database\Query\Builder withTrashed() + * @method static static|\Illuminate\Database\Eloquent\Builder|\Illuminate\Database\Query\Builder onlyTrashed() + * @method static static|\Illuminate\Database\Eloquent\Builder|\Illuminate\Database\Query\Builder withoutTrashed() + * @method bool restore() + */ trait SoftDeletes { /** @@ -21,6 +27,16 @@ public static function bootSoftDeletes() static::addGlobalScope(new SoftDeletingScope); } + /** + * Initialize the soft deleting trait for an instance. + * + * @return void + */ + public function initializeSoftDeletes() + { + $this->dates[] = $this->getDeletedAtColumn(); + } + /** * Force a hard delete on a soft deleted model. * @@ -49,7 +65,7 @@ protected function performDeleteOnModel() if ($this->forceDeleting) { $this->exists = false; - return $this->newModelQuery()->where($this->getKeyName(), $this->getKey())->forceDelete(); + return $this->setKeysForSaveQuery($this->newModelQuery())->forceDelete(); } return $this->runSoftDelete(); @@ -62,7 +78,7 @@ protected function performDeleteOnModel() */ protected function runSoftDelete() { - $query = $this->newModelQuery()->where($this->getKeyName(), $this->getKey()); + $query = $this->setKeysForSaveQuery($this->newModelQuery()); $time = $this->freshTimestamp(); diff --git a/vendor/laravel/framework/src/Illuminate/Database/MigrationServiceProvider.php b/vendor/laravel/framework/src/Illuminate/Database/MigrationServiceProvider.php index a8b92ab6e4..dc4b4b7140 100755 --- a/vendor/laravel/framework/src/Illuminate/Database/MigrationServiceProvider.php +++ b/vendor/laravel/framework/src/Illuminate/Database/MigrationServiceProvider.php @@ -4,18 +4,12 @@ use Illuminate\Support\ServiceProvider; use Illuminate\Database\Migrations\Migrator; +use Illuminate\Contracts\Support\DeferrableProvider; use Illuminate\Database\Migrations\MigrationCreator; use Illuminate\Database\Migrations\DatabaseMigrationRepository; -class MigrationServiceProvider extends ServiceProvider +class MigrationServiceProvider extends ServiceProvider implements DeferrableProvider { - /** - * Indicates if loading of the provider is deferred. - * - * @var bool - */ - protected $defer = true; - /** * Register the service provider. * diff --git a/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php b/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php index 5ff37bccea..9689da90ee 100755 --- a/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php +++ b/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php @@ -580,7 +580,7 @@ public function setOutput(OutputStyle $output) } /** - * Write a note to the conosle's output. + * Write a note to the console's output. * * @param string $message * @return void diff --git a/vendor/laravel/framework/src/Illuminate/Database/Migrations/stubs/create.stub b/vendor/laravel/framework/src/Illuminate/Database/Migrations/stubs/create.stub index a98c4749cb..08e171bc55 100755 --- a/vendor/laravel/framework/src/Illuminate/Database/Migrations/stubs/create.stub +++ b/vendor/laravel/framework/src/Illuminate/Database/Migrations/stubs/create.stub @@ -14,7 +14,7 @@ class DummyClass extends Migration public function up() { Schema::create('DummyTable', function (Blueprint $table) { - $table->increments('id'); + $table->bigIncrements('id'); $table->timestamps(); }); } diff --git a/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php b/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php index 4fa3c6db36..7863bd5eea 100755 --- a/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php +++ b/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php @@ -198,8 +198,8 @@ class Builder * Create a new query builder instance. * * @param \Illuminate\Database\ConnectionInterface $connection - * @param \Illuminate\Database\Query\Grammars\Grammar $grammar - * @param \Illuminate\Database\Query\Processors\Processor $processor + * @param \Illuminate\Database\Query\Grammars\Grammar|null $grammar + * @param \Illuminate\Database\Query\Processors\Processor|null $processor * @return void */ public function __construct(ConnectionInterface $connection, @@ -637,18 +637,22 @@ public function where($column, $operator = null, $value = null, $boolean = 'and' return $this->whereNull($column, $boolean, $operator !== '='); } + $type = 'Basic'; + // If the column is making a JSON reference we'll check to see if the value // is a boolean. If it is, we'll add the raw boolean string as an actual // value to the query to ensure this is properly handled by the query. if (Str::contains($column, '->') && is_bool($value)) { $value = new Expression($value ? 'true' : 'false'); + + if (is_string($column)) { + $type = 'JsonBoolean'; + } } // Now that we are working with just a simple query we can put the elements // in our array and add the query binding to our array of bindings that // will be bound to each SQL statements when it is finally executed. - $type = 'Basic'; - $this->wheres[] = compact( 'type', 'column', 'operator', 'value', 'boolean' ); @@ -838,24 +842,17 @@ public function whereIn($column, $values, $boolean = 'and', $not = false) { $type = $not ? 'NotIn' : 'In'; - if ($values instanceof EloquentBuilder) { - $values = $values->getQuery(); - } - // If the value is a query builder instance we will assume the developer wants to // look for any values that exists within this given query. So we will add the // query accordingly so that this query is properly executed when it is run. - if ($values instanceof self) { - return $this->whereInExistingQuery( - $column, $values, $boolean, $not - ); - } + if ($values instanceof self || + $values instanceof EloquentBuilder || + $values instanceof Closure) { + [$query, $bindings] = $this->createSub($values); + + $values = [new Expression($query)]; - // If the value of the where in clause is actually a Closure, we will assume that - // the developer is using a full sub-select for this "in" statement, and will - // execute those Closures, then we can re-construct the entire sub-selects. - if ($values instanceof Closure) { - return $this->whereInSub($column, $values, $boolean, $not); + $this->addBinding($bindings, 'where'); } // Next, if the value is Arrayable we need to cast it to its raw array form so we @@ -1201,6 +1198,8 @@ public function whereDay($column, $operator, $value = null, $boolean = 'and') $value = $value->format('d'); } + $value = str_pad($value, 2, '0', STR_PAD_LEFT); + return $this->addDateBasedWhere('Day', $column, $operator, $value, $boolean); } @@ -1240,6 +1239,8 @@ public function whereMonth($column, $operator, $value = null, $boolean = 'and') $value = $value->format('m'); } + $value = str_pad($value, 2, '0', STR_PAD_LEFT); + return $this->addDateBasedWhere('Month', $column, $operator, $value, $boolean); } @@ -1794,12 +1795,20 @@ public function orHavingRaw($sql, array $bindings = []) * @param string $column * @param string $direction * @return $this + * + * @throws \InvalidArgumentException */ public function orderBy($column, $direction = 'asc') { + $direction = strtolower($direction); + + if (! in_array($direction, ['asc', 'desc'], true)) { + throw new InvalidArgumentException('Order direction must be "asc" or "desc".'); + } + $this->{$this->unions ? 'unionOrders' : 'orders'}[] = [ 'column' => $column, - 'direction' => strtolower($direction) === 'asc' ? 'asc' : 'desc', + 'direction' => $direction, ]; return $this; @@ -1933,6 +1942,26 @@ public function forPage($page, $perPage = 15) return $this->skip(($page - 1) * $perPage)->take($perPage); } + /** + * Constrain the query to the previous "page" of results before a given ID. + * + * @param int $perPage + * @param int|null $lastId + * @param string $column + * @return \Illuminate\Database\Query\Builder|static + */ + public function forPageBeforeId($perPage = 15, $lastId = 0, $column = 'id') + { + $this->orders = $this->removeExistingOrdersFor($column); + + if (! is_null($lastId)) { + $this->where($column, '<', $lastId); + } + + return $this->orderBy($column, 'desc') + ->take($perPage); + } + /** * Constrain the query to the next "page" of results after a given ID. * @@ -2074,12 +2103,12 @@ public function value($column) /** * Execute the query as a "select" statement. * - * @param array $columns + * @param array|string $columns * @return \Illuminate\Support\Collection */ public function get($columns = ['*']) { - return collect($this->onceWithColumns($columns, function () { + return collect($this->onceWithColumns(Arr::wrap($columns), function () { return $this->processor->processSelect($this, $this->runSelect()); })); } @@ -2673,6 +2702,10 @@ public function updateOrInsert(array $attributes, array $values = []) return $this->insert(array_merge($attributes, $values)); } + if (empty($values)) { + return true; + } + return (bool) $this->take(1)->update($values); } @@ -2945,6 +2978,26 @@ public function cloneWithoutBindings(array $except) }); } + /** + * Dump the current SQL and bindings. + * + * @return void + */ + public function dump() + { + dump($this->toSql(), $this->getBindings()); + } + + /** + * Die and dump the current SQL and bindings. + * + * @return void + */ + public function dd() + { + dd($this->toSql(), $this->getBindings()); + } + /** * Handle dynamic method calls into the method. * diff --git a/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/Grammar.php b/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/Grammar.php index 679ae3bba1..2bccbaa634 100755 --- a/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/Grammar.php +++ b/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/Grammar.php @@ -539,6 +539,24 @@ protected function whereRowValues(Builder $query, $where) return '('.$columns.') '.$where['operator'].' ('.$values.')'; } + /** + * Compile a "where JSON boolean" clause. + * + * @param \Illuminate\Database\Query\Builder $query + * @param array $where + * @return string + */ + protected function whereJsonBoolean(Builder $query, $where) + { + $column = $this->wrapJsonBooleanSelector($where['column']); + + $value = $this->wrapJsonBooleanValue( + $this->parameter($where['value']) + ); + + return $column.' '.$where['operator'].' '.$value; + } + /** * Compile a "where JSON contains" clause. * @@ -715,9 +733,7 @@ protected function compileOrders(Builder $query, $orders) protected function compileOrdersToArray(Builder $query, $orders) { return array_map(function ($order) { - return ! isset($order['sql']) - ? $this->wrap($order['column']).' '.$order['direction'] - : $order['sql']; + return $order['sql'] ?? $this->wrap($order['column']).' '.$order['direction']; }, $orders); } @@ -1053,6 +1069,28 @@ protected function wrapJsonSelector($value) throw new RuntimeException('This database engine does not support JSON operations.'); } + /** + * Wrap the given JSON selector for boolean values. + * + * @param string $value + * @return string + */ + protected function wrapJsonBooleanSelector($value) + { + return $this->wrapJsonSelector($value); + } + + /** + * Wrap the given JSON boolean value. + * + * @param string $value + * @return string + */ + protected function wrapJsonBooleanValue($value) + { + return $value; + } + /** * Split the given JSON selector into the field and the optional path and wrap them separately. * @@ -1065,7 +1103,7 @@ protected function wrapJsonFieldAndPath($column) $field = $this->wrap($parts[0]); - $path = count($parts) > 1 ? ', '.$this->wrapJsonPath($parts[1]) : ''; + $path = count($parts) > 1 ? ', '.$this->wrapJsonPath($parts[1], '->') : ''; return [$field, $path]; } @@ -1074,11 +1112,14 @@ protected function wrapJsonFieldAndPath($column) * Wrap the given JSON path. * * @param string $value + * @param string $delimiter * @return string */ - protected function wrapJsonPath($value) + protected function wrapJsonPath($value, $delimiter = '->') { - return '\'$."'.str_replace('->', '"."', $value).'"\''; + $value = preg_replace("/([\\\\]+)?\\'/", "\\'", $value); + + return '\'$."'.str_replace($delimiter, '"."', $value).'"\''; } /** diff --git a/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/MySqlGrammar.php b/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/MySqlGrammar.php index 50af2276f3..786af6dbac 100755 --- a/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/MySqlGrammar.php +++ b/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/MySqlGrammar.php @@ -3,7 +3,6 @@ namespace Illuminate\Database\Query\Grammars; use Illuminate\Support\Arr; -use Illuminate\Support\Str; use Illuminate\Database\Query\Builder; use Illuminate\Database\Query\JsonExpression; @@ -65,7 +64,9 @@ public function compileSelect(Builder $query) */ protected function compileJsonContains($column, $value) { - return 'json_contains('.$this->wrap($column).', '.$value.')'; + [$field, $path] = $this->wrapJsonFieldAndPath($column); + + return 'json_contains('.$field.', '.$value.$path.')'; } /** @@ -316,16 +317,21 @@ protected function wrapValue($value) */ protected function wrapJsonSelector($value) { - $delimiter = Str::contains($value, '->>') - ? '->>' - : '->'; + [$field, $path] = $this->wrapJsonFieldAndPath($value); - $path = explode($delimiter, $value); + return 'json_unquote(json_extract('.$field.$path.'))'; + } - $field = $this->wrapSegments(explode('.', array_shift($path))); + /** + * Wrap the given JSON selector for boolean values. + * + * @param string $value + * @return string + */ + protected function wrapJsonBooleanSelector($value) + { + [$field, $path] = $this->wrapJsonFieldAndPath($value); - return sprintf('%s'.$delimiter.'\'$.%s\'', $field, collect($path)->map(function ($part) { - return '"'.$part.'"'; - })->implode('.')); + return 'json_extract('.$field.$path.')'; } } diff --git a/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/PostgresGrammar.php b/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/PostgresGrammar.php index b3f8b477b9..5377c803c2 100755 --- a/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/PostgresGrammar.php +++ b/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/PostgresGrammar.php @@ -226,7 +226,7 @@ public function compileUpdate(Builder $query, $values) // Each one of the columns in the update statements needs to be wrapped in the // keyword identifiers, also a place-holder needs to be created for each of // the values in the list of bindings so we can make the sets statements. - $columns = $this->compileUpdateColumns($values); + $columns = $this->compileUpdateColumns($query, $values); $from = $this->compileUpdateFrom($query); @@ -238,20 +238,23 @@ public function compileUpdate(Builder $query, $values) /** * Compile the columns for the update statement. * + * @param \Illuminate\Database\Query\Builder $query * @param array $values * @return string */ - protected function compileUpdateColumns($values) + protected function compileUpdateColumns($query, $values) { // When gathering the columns for an update statement, we'll wrap each of the // columns and convert it to a parameter value. Then we will concatenate a // list of the columns that can be added into this update query clauses. - return collect($values)->map(function ($value, $key) { + return collect($values)->map(function ($value, $key) use ($query) { + $column = Str::after($key, $query->from.'.'); + if ($this->isJsonSelector($key)) { - return $this->compileJsonUpdateColumn($key, $value); + return $this->compileJsonUpdateColumn($column, $value); } - return $this->wrap($key).' = '.$this->parameter($value); + return $this->wrap($column).' = '.$this->parameter($value); })->implode(', '); } @@ -439,6 +442,33 @@ protected function wrapJsonSelector($value) return $field.'->>'.$attribute; } + /** + *Wrap the given JSON selector for boolean values. + * + * @param string $value + * @return string + */ + protected function wrapJsonBooleanSelector($value) + { + $selector = str_replace( + '->>', '->', + $this->wrapJsonSelector($value) + ); + + return '('.$selector.')::jsonb'; + } + + /** + * Wrap the given JSON boolean value. + * + * @param string $value + * @return string + */ + protected function wrapJsonBooleanValue($value) + { + return "'".$value."'::jsonb"; + } + /** * Wrap the attributes of the give JSON path. * diff --git a/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/SQLiteGrammar.php b/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/SQLiteGrammar.php index 43ddec9844..2d1b9e1286 100755 --- a/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/SQLiteGrammar.php +++ b/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/SQLiteGrammar.php @@ -171,38 +171,11 @@ protected function compileJsonLength($column, $operator, $value) */ public function compileInsert(Builder $query, array $values) { - // Essentially we will force every insert to be treated as a batch insert which - // simply makes creating the SQL easier for us since we can utilize the same - // basic routine regardless of an amount of records given to us to insert. $table = $this->wrapTable($query->from); - if (! is_array(reset($values))) { - $values = [$values]; - } - - // If there is only one record being inserted, we will just use the usual query - // grammar insert builder because no special syntax is needed for the single - // row inserts in SQLite. However, if there are multiples, we'll continue. - if (count($values) === 1) { - return empty(reset($values)) - ? "insert into $table default values" - : parent::compileInsert($query, reset($values)); - } - - $names = $this->columnize(array_keys(reset($values))); - - $columns = []; - - // SQLite requires us to build the multi-row insert as a listing of select with - // unions joining them together. So we'll build out this list of columns and - // then join them all together with select unions to complete the queries. - foreach (array_keys(reset($values)) as $column) { - $columns[] = '? as '.$this->wrap($column); - } - - $columns = array_fill(0, count($values), implode(', ', $columns)); - - return "insert into $table ($names) select ".implode(' union all select ', $columns); + return empty($values) + ? "insert into {$table} DEFAULT VALUES" + : parent::compileInsert($query, $values); } /** @@ -301,11 +274,7 @@ public function compileTruncate(Builder $query) */ protected function wrapJsonSelector($value) { - $parts = explode('->', $value, 2); - - $field = $this->wrap($parts[0]); - - $path = count($parts) > 1 ? ', '.$this->wrapJsonPath($parts[1]) : ''; + [$field, $path] = $this->wrapJsonFieldAndPath($value); return 'json_extract('.$field.$path.')'; } diff --git a/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/SqlServerGrammar.php b/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/SqlServerGrammar.php index ed7f1761d8..b53e0bff35 100755 --- a/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/SqlServerGrammar.php +++ b/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/SqlServerGrammar.php @@ -466,11 +466,20 @@ protected function wrapValue($value) */ protected function wrapJsonSelector($value) { - $parts = explode('->', $value, 2); + [$field, $path] = $this->wrapJsonFieldAndPath($value); - $field = $this->wrapSegments(explode('.', array_shift($parts))); + return 'json_value('.$field.$path.')'; + } - return 'json_value('.$field.', '.$this->wrapJsonPath($parts[0]).')'; + /** + * Wrap the given JSON boolean value. + * + * @param string $value + * @return string + */ + protected function wrapJsonBooleanValue($value) + { + return "'".$value."'"; } /** diff --git a/vendor/laravel/framework/src/Illuminate/Database/Query/JoinClause.php b/vendor/laravel/framework/src/Illuminate/Database/Query/JoinClause.php index 4b32df29e9..4e17842b5d 100755 --- a/vendor/laravel/framework/src/Illuminate/Database/Query/JoinClause.php +++ b/vendor/laravel/framework/src/Illuminate/Database/Query/JoinClause.php @@ -21,11 +21,32 @@ class JoinClause extends Builder public $table; /** - * The parent query builder instance. + * The connection of the parent query builder. * - * @var \Illuminate\Database\Query\Builder + * @var \Illuminate\Database\ConnectionInterface */ - private $parentQuery; + protected $parentConnection; + + /** + * The grammar of the parent query builder. + * + * @var \Illuminate\Database\Query\Grammars\Grammar + */ + protected $parentGrammar; + + /** + * The processor of the parent query builder. + * + * @var \Illuminate\Database\Query\Processors\Processor + */ + protected $parentProcessor; + + /** + * The class name of the parent query builder. + * + * @var string + */ + protected $parentClass; /** * Create a new join clause instance. @@ -39,10 +60,13 @@ public function __construct(Builder $parentQuery, $type, $table) { $this->type = $type; $this->table = $table; - $this->parentQuery = $parentQuery; + $this->parentClass = get_class($parentQuery); + $this->parentGrammar = $parentQuery->getGrammar(); + $this->parentProcessor = $parentQuery->getProcessor(); + $this->parentConnection = $parentQuery->getConnection(); parent::__construct( - $parentQuery->getConnection(), $parentQuery->getGrammar(), $parentQuery->getProcessor() + $this->parentConnection, $this->parentGrammar, $this->parentProcessor ); } @@ -56,7 +80,7 @@ public function __construct(Builder $parentQuery, $type, $table) * * will produce the following SQL: * - * on `contacts`.`user_id` = `users`.`id` and `contacts`.`info_id` = `info`.`id` + * on `contacts`.`user_id` = `users`.`id` and `contacts`.`info_id` = `info`.`id` * * @param \Closure|string $first * @param string|null $operator @@ -95,7 +119,7 @@ public function orOn($first, $operator = null, $second = null) */ public function newQuery() { - return new static($this->parentQuery, $this->type, $this->table); + return new static($this->newParentQuery(), $this->type, $this->table); } /** @@ -105,6 +129,18 @@ public function newQuery() */ protected function forSubQuery() { - return $this->parentQuery->newQuery(); + return $this->newParentQuery()->newQuery(); + } + + /** + * Create a new parent query instance. + * + * @return \Illuminate\Database\Query\Builder + */ + protected function newParentQuery() + { + $class = $this->parentClass; + + return new $class($this->parentConnection, $this->parentGrammar, $this->parentProcessor); } } diff --git a/vendor/laravel/framework/src/Illuminate/Database/README.md b/vendor/laravel/framework/src/Illuminate/Database/README.md index b3014b082e..7d59ab7d8c 100755 --- a/vendor/laravel/framework/src/Illuminate/Database/README.md +++ b/vendor/laravel/framework/src/Illuminate/Database/README.md @@ -45,7 +45,7 @@ $users = Capsule::table('users')->where('votes', '>', 100)->get(); ``` Other core methods may be accessed directly from the Capsule in the same manner as from the DB facade: ```PHP -$results = Capsule::select('select * from users where id = ?', array(1)); +$results = Capsule::select('select * from users where id = ?', [1]); ``` **Using The Schema Builder** diff --git a/vendor/laravel/framework/src/Illuminate/Database/Schema/Blueprint.php b/vendor/laravel/framework/src/Illuminate/Database/Schema/Blueprint.php index 8831715477..1a0192d08c 100755 --- a/vendor/laravel/framework/src/Illuminate/Database/Schema/Blueprint.php +++ b/vendor/laravel/framework/src/Illuminate/Database/Schema/Blueprint.php @@ -538,6 +538,17 @@ public function increments($column) return $this->unsignedInteger($column, true); } + /** + * Create a new auto-incrementing integer (4-byte) column on the table. + * + * @param string $column + * @return \Illuminate\Database\Schema\ColumnDefinition + */ + public function integerIncrements($column) + { + return $this->unsignedInteger($column, true); + } + /** * Create a new auto-incrementing tiny integer (1-byte) column on the table. * @@ -845,6 +856,18 @@ public function enum($column, array $allowed) return $this->addColumn('enum', $column, compact('allowed')); } + /** + * Create a new set column on the table. + * + * @param string $column + * @param array $allowed + * @return \Illuminate\Database\Schema\ColumnDefinition + */ + public function set($column, array $allowed) + { + return $this->addColumn('set', $column, compact('allowed')); + } + /** * Create a new json column on the table. * diff --git a/vendor/laravel/framework/src/Illuminate/Database/Schema/Builder.php b/vendor/laravel/framework/src/Illuminate/Database/Schema/Builder.php index 2e25cf0cd9..d80f375b7a 100755 --- a/vendor/laravel/framework/src/Illuminate/Database/Schema/Builder.php +++ b/vendor/laravel/framework/src/Illuminate/Database/Schema/Builder.php @@ -4,6 +4,7 @@ use Closure; use LogicException; +use Doctrine\DBAL\Types\Type; use Illuminate\Database\Connection; class Builder @@ -284,6 +285,30 @@ protected function createBlueprint($table, Closure $callback = null) return new Blueprint($table, $callback, $prefix); } + /** + * Register a custom Doctrine mapping type. + * + * @param string $class + * @param string $name + * @param string $type + * @return void + * + * @throws \Doctrine\DBAL\DBALException + */ + public function registerCustomDoctrineType($class, $name, $type) + { + if (Type::hasType($name)) { + return; + } + + Type::addType($name, $class); + + $this->connection + ->getDoctrineSchemaManager() + ->getDatabasePlatform() + ->registerDoctrineTypeMapping($type, $name); + } + /** * Get the database connection instance. * diff --git a/vendor/laravel/framework/src/Illuminate/Database/Schema/Grammars/MySqlGrammar.php b/vendor/laravel/framework/src/Illuminate/Database/Schema/Grammars/MySqlGrammar.php index b7dedf62aa..7137b3edff 100755 --- a/vendor/laravel/framework/src/Illuminate/Database/Schema/Grammars/MySqlGrammar.php +++ b/vendor/laravel/framework/src/Illuminate/Database/Schema/Grammars/MySqlGrammar.php @@ -590,6 +590,17 @@ protected function typeEnum(Fluent $column) return sprintf('enum(%s)', $this->quoteString($column->allowed)); } + /** + * Create the column definition for a set enumeration type. + * + * @param \Illuminate\Support\Fluent $column + * @return string + */ + protected function typeSet(Fluent $column) + { + return sprintf('set(%s)', $this->quoteString($column->allowed)); + } + /** * Create the column definition for a json type. * @@ -631,7 +642,9 @@ protected function typeDate(Fluent $column) */ protected function typeDateTime(Fluent $column) { - return $column->precision ? "datetime($column->precision)" : 'datetime'; + $columnType = $column->precision ? "datetime($column->precision)" : 'datetime'; + + return $column->useCurrent ? "$columnType default CURRENT_TIMESTAMP" : $columnType; } /** diff --git a/vendor/laravel/framework/src/Illuminate/Database/Schema/Grammars/PostgresGrammar.php b/vendor/laravel/framework/src/Illuminate/Database/Schema/Grammars/PostgresGrammar.php index 4fa3285b61..7233e07003 100755 --- a/vendor/laravel/framework/src/Illuminate/Database/Schema/Grammars/PostgresGrammar.php +++ b/vendor/laravel/framework/src/Illuminate/Database/Schema/Grammars/PostgresGrammar.php @@ -642,7 +642,7 @@ protected function typeDate(Fluent $column) */ protected function typeDateTime(Fluent $column) { - return "timestamp($column->precision) without time zone"; + return $this->typeTimestamp($column); } /** @@ -653,7 +653,7 @@ protected function typeDateTime(Fluent $column) */ protected function typeDateTimeTz(Fluent $column) { - return "timestamp($column->precision) with time zone"; + return $this->typeTimestampTz($column); } /** diff --git a/vendor/laravel/framework/src/Illuminate/Database/Schema/Grammars/SQLiteGrammar.php b/vendor/laravel/framework/src/Illuminate/Database/Schema/Grammars/SQLiteGrammar.php index d6ef59db42..ac825e7342 100755 --- a/vendor/laravel/framework/src/Illuminate/Database/Schema/Grammars/SQLiteGrammar.php +++ b/vendor/laravel/framework/src/Illuminate/Database/Schema/Grammars/SQLiteGrammar.php @@ -614,7 +614,7 @@ protected function typeDate(Fluent $column) */ protected function typeDateTime(Fluent $column) { - return 'datetime'; + return $this->typeTimestamp($column); } /** diff --git a/vendor/laravel/framework/src/Illuminate/Database/Schema/Grammars/SqlServerGrammar.php b/vendor/laravel/framework/src/Illuminate/Database/Schema/Grammars/SqlServerGrammar.php index dfcc52fa4e..7cc861e5b5 100755 --- a/vendor/laravel/framework/src/Illuminate/Database/Schema/Grammars/SqlServerGrammar.php +++ b/vendor/laravel/framework/src/Illuminate/Database/Schema/Grammars/SqlServerGrammar.php @@ -522,7 +522,7 @@ protected function typeDate(Fluent $column) */ protected function typeDateTime(Fluent $column) { - return $column->precision ? "datetime2($column->precision)" : 'datetime'; + return $this->typeTimestamp($column); } /** @@ -533,7 +533,7 @@ protected function typeDateTime(Fluent $column) */ protected function typeDateTimeTz(Fluent $column) { - return $column->precision ? "datetimeoffset($column->precision)" : 'datetimeoffset'; + return $this->typeTimestampTz($column); } /** @@ -581,13 +581,9 @@ protected function typeTimestamp(Fluent $column) */ protected function typeTimestampTz(Fluent $column) { - if ($column->useCurrent) { - $columnType = $column->precision ? "datetimeoffset($column->precision)" : 'datetimeoffset'; + $columnType = $column->precision ? "datetimeoffset($column->precision)" : 'datetimeoffset'; - return "$columnType default CURRENT_TIMESTAMP"; - } - - return "datetimeoffset($column->precision)"; + return $column->useCurrent ? "$columnType default CURRENT_TIMESTAMP" : $columnType; } /** @@ -828,4 +824,19 @@ public function wrapTable($table) return parent::wrapTable($table); } + + /** + * Quote the given string literal. + * + * @param string|array $value + * @return string + */ + public function quoteString($value) + { + if (is_array($value)) { + return implode(', ', array_map([$this, __FUNCTION__], $value)); + } + + return "N'$value'"; + } } diff --git a/vendor/laravel/framework/src/Illuminate/Database/Schema/MySqlBuilder.php b/vendor/laravel/framework/src/Illuminate/Database/Schema/MySqlBuilder.php index 85f3e92c25..447a23a68d 100755 --- a/vendor/laravel/framework/src/Illuminate/Database/Schema/MySqlBuilder.php +++ b/vendor/laravel/framework/src/Illuminate/Database/Schema/MySqlBuilder.php @@ -2,6 +2,8 @@ namespace Illuminate\Database\Schema; +use Illuminate\Database\Schema\Types\TinyInteger; + class MySqlBuilder extends Builder { /** @@ -111,4 +113,20 @@ protected function getAllViews() $this->grammar->compileGetAllViews() ); } + + /** + * Register the custom Doctrine mapping types for the MySQL builder. + * + * @return void + * + * @throws \Doctrine\DBAL\DBALException + */ + protected function registerCustomDoctrineTypes() + { + if ($this->connection->isDoctrineAvailable()) { + $this->registerCustomDoctrineType( + TinyInteger::class, TinyInteger::NAME, 'TINYINT' + ); + } + } } diff --git a/vendor/laravel/framework/src/Illuminate/Database/Schema/Types/TinyInteger.php b/vendor/laravel/framework/src/Illuminate/Database/Schema/Types/TinyInteger.php new file mode 100644 index 0000000000..37e9b95758 --- /dev/null +++ b/vendor/laravel/framework/src/Illuminate/Database/Schema/Types/TinyInteger.php @@ -0,0 +1,38 @@ +dispatch($event, $payload, true); } - /** - * Fire an event and call the listeners. - * - * @param string|object $event - * @param mixed $payload - * @param bool $halt - * @return array|null - */ - public function fire($event, $payload = [], $halt = false) - { - return $this->dispatch($event, $payload, $halt); - } - /** * Fire an event and call the listeners. * diff --git a/vendor/laravel/framework/src/Illuminate/Events/composer.json b/vendor/laravel/framework/src/Illuminate/Events/composer.json index cba2e0fe27..d75f2c1eae 100755 --- a/vendor/laravel/framework/src/Illuminate/Events/composer.json +++ b/vendor/laravel/framework/src/Illuminate/Events/composer.json @@ -15,9 +15,9 @@ ], "require": { "php": "^7.1.3", - "illuminate/container": "5.7.*", - "illuminate/contracts": "5.7.*", - "illuminate/support": "5.7.*" + "illuminate/container": "5.8.*", + "illuminate/contracts": "5.8.*", + "illuminate/support": "5.8.*" }, "autoload": { "psr-4": { @@ -26,7 +26,7 @@ }, "extra": { "branch-alias": { - "dev-master": "5.7-dev" + "dev-master": "5.8-dev" } }, "config": { diff --git a/vendor/laravel/framework/src/Illuminate/Filesystem/Cache.php b/vendor/laravel/framework/src/Illuminate/Filesystem/Cache.php index deb5fe5d17..46cabc35d5 100644 --- a/vendor/laravel/framework/src/Illuminate/Filesystem/Cache.php +++ b/vendor/laravel/framework/src/Illuminate/Filesystem/Cache.php @@ -22,9 +22,9 @@ class Cache extends AbstractCache protected $key; /** - * The cache expiration time in minutes. + * The cache expiration time in seconds. * - * @var int + * @var int|null */ protected $expire; @@ -38,11 +38,8 @@ class Cache extends AbstractCache public function __construct(Repository $repository, $key = 'flysystem', $expire = null) { $this->key = $key; + $this->expire = $expire; $this->repository = $repository; - - if (! is_null($expire)) { - $this->expire = (int) ceil($expire / 60); - } } /** @@ -68,10 +65,6 @@ public function save() { $contents = $this->getForStorage(); - if (! is_null($this->expire)) { - $this->repository->put($this->key, $contents, $this->expire); - } else { - $this->repository->forever($this->key, $contents); - } + $this->repository->put($this->key, $contents, $this->expire); } } diff --git a/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php b/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php index 6f801054f0..d9e3cf77e2 100644 --- a/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php +++ b/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php @@ -115,7 +115,7 @@ public function hash($path) * @param string $path * @param string $contents * @param bool $lock - * @return int + * @return int|bool */ public function put($path, $contents, $lock = false) { diff --git a/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemManager.php b/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemManager.php index 7897352c89..36f9b89e63 100644 --- a/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemManager.php +++ b/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemManager.php @@ -160,7 +160,7 @@ public function createLocalDriver(array $config) : LocalAdapter::DISALLOW_LINKS; return $this->adapt($this->createFlysystem(new LocalAdapter( - $config['root'], LOCK_EX, $links, $permissions + $config['root'], $config['lock'] ?? LOCK_EX, $links, $permissions ), $config)); } diff --git a/vendor/laravel/framework/src/Illuminate/Filesystem/composer.json b/vendor/laravel/framework/src/Illuminate/Filesystem/composer.json index 4157c814a4..2bafd57d64 100644 --- a/vendor/laravel/framework/src/Illuminate/Filesystem/composer.json +++ b/vendor/laravel/framework/src/Illuminate/Filesystem/composer.json @@ -15,9 +15,9 @@ ], "require": { "php": "^7.1.3", - "illuminate/contracts": "5.7.*", - "illuminate/support": "5.7.*", - "symfony/finder": "^4.1" + "illuminate/contracts": "5.8.*", + "illuminate/support": "5.8.*", + "symfony/finder": "^4.2" }, "autoload": { "psr-4": { @@ -26,7 +26,7 @@ }, "extra": { "branch-alias": { - "dev-master": "5.7-dev" + "dev-master": "5.8-dev" } }, "suggest": { diff --git a/vendor/laravel/framework/src/Illuminate/Foundation/Application.php b/vendor/laravel/framework/src/Illuminate/Foundation/Application.php index c225dac78e..4ecbdb0c05 100755 --- a/vendor/laravel/framework/src/Illuminate/Foundation/Application.php +++ b/vendor/laravel/framework/src/Illuminate/Foundation/Application.php @@ -29,7 +29,7 @@ class Application extends Container implements ApplicationContract, HttpKernelIn * * @var string */ - const VERSION = '5.7.28'; + const VERSION = '5.8.15'; /** * The base path for the Laravel installation. @@ -149,9 +149,7 @@ public function __construct($basePath = null) } $this->registerBaseBindings(); - $this->registerBaseServiceProviders(); - $this->registerCoreContainerAliases(); } @@ -177,6 +175,7 @@ protected function registerBaseBindings() $this->instance('app', $this); $this->instance(Container::class, $this); + $this->singleton(Mix::class); $this->instance(PackageManifest::class, new PackageManifest( new Filesystem, $this->basePath(), $this->getCachedPackagesPath() @@ -496,12 +495,13 @@ public function environmentFilePath() /** * Get or check the current application environment. * + * @param string|array $environments * @return string|bool */ - public function environment() + public function environment(...$environments) { - if (func_num_args() > 0) { - $patterns = is_array(func_get_arg(0)) ? func_get_arg(0) : func_get_args(); + if (count($environments) > 0) { + $patterns = is_array($environments[0]) ? $environments[0] : $environments; return Str::is($patterns, $this['env']); } @@ -594,9 +594,7 @@ public function register($provider, $force = false) $provider = $this->resolveProvider($provider); } - if (method_exists($provider, 'register')) { - $provider->register(); - } + $provider->register(); // If there are bindings / singletons set as properties on the provider we // will spin through them and register them with the application, which @@ -938,6 +936,26 @@ public function getCachedRoutesPath() return $_ENV['APP_ROUTES_CACHE'] ?? $this->bootstrapPath().'/cache/routes.php'; } + /** + * Determine if the application events are cached. + * + * @return bool + */ + public function eventsAreCached() + { + return $this['files']->exists($this->getCachedEventsPath()); + } + + /** + * Get the path to the events cache file. + * + * @return string + */ + public function getCachedEventsPath() + { + return $_ENV['APP_EVENTS_CACHE'] ?? $this->bootstrapPath().'/cache/events.php'; + } + /** * Determine if the application is currently down for maintenance. * @@ -970,10 +988,10 @@ public function abort($code, $message = '', array $headers = []) /** * Register a terminating callback with the application. * - * @param \Closure $callback + * @param callable|string $callback * @return $this */ - public function terminating(Closure $callback) + public function terminating($callback) { $this->terminatingCallbacks[] = $callback; @@ -1176,11 +1194,11 @@ public function getNamespace() return $this->namespace; } - $composer = json_decode(file_get_contents(base_path('composer.json')), true); + $composer = json_decode(file_get_contents($this->basePath('composer.json')), true); foreach ((array) data_get($composer, 'autoload.psr-4') as $namespace => $path) { foreach ((array) $path as $pathChoice) { - if (realpath(app_path()) == realpath(base_path().'/'.$pathChoice)) { + if (realpath($this->path()) === realpath($this->basePath($pathChoice))) { return $this->namespace = $namespace; } } diff --git a/vendor/laravel/framework/src/Illuminate/Foundation/Auth/RedirectsUsers.php b/vendor/laravel/framework/src/Illuminate/Foundation/Auth/RedirectsUsers.php index cbba3c6809..cc992290e7 100644 --- a/vendor/laravel/framework/src/Illuminate/Foundation/Auth/RedirectsUsers.php +++ b/vendor/laravel/framework/src/Illuminate/Foundation/Auth/RedirectsUsers.php @@ -15,6 +15,6 @@ public function redirectPath() return $this->redirectTo(); } - return property_exists($this, 'redirectTo') ? '/my-invoices' : '/my-invoices'; + return property_exists($this, 'redirectTo') ? $this->redirectTo : '/home'; } } diff --git a/vendor/laravel/framework/src/Illuminate/Foundation/Auth/SendsPasswordResetEmails.php b/vendor/laravel/framework/src/Illuminate/Foundation/Auth/SendsPasswordResetEmails.php index fa0b2697bf..cd10674ea5 100644 --- a/vendor/laravel/framework/src/Illuminate/Foundation/Auth/SendsPasswordResetEmails.php +++ b/vendor/laravel/framework/src/Illuminate/Foundation/Auth/SendsPasswordResetEmails.php @@ -137,6 +137,7 @@ public function sendResetLinkEmail(Request $request) { return response()->json($response); } catch (\Exception $ex) { + dd($ex); $result = [$ex->getMessage()]; $errors = ['You are not registered with this Email. Please enter correct Email Address !!']; return response()->json(compact('result','errors'), 500); diff --git a/vendor/laravel/framework/src/Illuminate/Foundation/Auth/ThrottlesLogins.php b/vendor/laravel/framework/src/Illuminate/Foundation/Auth/ThrottlesLogins.php index 1dca25cfce..aba0f1ec52 100644 --- a/vendor/laravel/framework/src/Illuminate/Foundation/Auth/ThrottlesLogins.php +++ b/vendor/laravel/framework/src/Illuminate/Foundation/Auth/ThrottlesLogins.php @@ -33,7 +33,7 @@ protected function hasTooManyLoginAttempts(Request $request) protected function incrementLoginAttempts(Request $request) { $this->limiter()->hit( - $this->throttleKey($request), $this->decayMinutes() + $this->throttleKey($request), $this->decayMinutes() * 60 ); } diff --git a/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/LoadEnvironmentVariables.php b/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/LoadEnvironmentVariables.php index 6eeb73504a..b39bbf83e8 100644 --- a/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/LoadEnvironmentVariables.php +++ b/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/LoadEnvironmentVariables.php @@ -3,10 +3,14 @@ namespace Illuminate\Foundation\Bootstrap; use Dotenv\Dotenv; +use Dotenv\Environment\DotenvFactory; use Dotenv\Exception\InvalidFileException; -use Dotenv\Exception\InvalidPathException; +use Dotenv\Environment\Adapter\PutenvAdapter; use Symfony\Component\Console\Input\ArgvInput; +use Dotenv\Environment\Adapter\EnvConstAdapter; use Illuminate\Contracts\Foundation\Application; +use Dotenv\Environment\Adapter\ServerConstAdapter; +use Symfony\Component\Console\Output\ConsoleOutput; class LoadEnvironmentVariables { @@ -25,12 +29,9 @@ public function bootstrap(Application $app) $this->checkForSpecificEnvironmentFile($app); try { - (new Dotenv($app->environmentPath(), $app->environmentFile()))->load(); - } catch (InvalidPathException $e) { - // + $this->createDotenv($app)->safeLoad(); } catch (InvalidFileException $e) { - echo 'The environment file is invalid: '.$e->getMessage(); - die(1); + $this->writeErrorAndDie($e); } } @@ -76,4 +77,35 @@ protected function setEnvironmentFilePath($app, $file) return false; } + + /** + * Create a Dotenv instance. + * + * @param \Illuminate\Contracts\Foundation\Application $app + * @return \Dotenv\Dotenv + */ + protected function createDotenv($app) + { + return Dotenv::create( + $app->environmentPath(), + $app->environmentFile(), + new DotenvFactory([new EnvConstAdapter, new ServerConstAdapter, new PutenvAdapter]) + ); + } + + /** + * Write the error information to the screen and exit. + * + * @param \Dotenv\Exception\InvalidFileException $e + * @return void + */ + protected function writeErrorAndDie(InvalidFileException $e) + { + $output = (new ConsoleOutput)->getErrorOutput(); + + $output->writeln('The environment file is invalid!'); + $output->writeln($e->getMessage()); + + die(1); + } } diff --git a/vendor/laravel/framework/src/Illuminate/Foundation/Bus/PendingDispatch.php b/vendor/laravel/framework/src/Illuminate/Foundation/Bus/PendingDispatch.php index 8ae625aae2..3c3879d4fb 100644 --- a/vendor/laravel/framework/src/Illuminate/Foundation/Bus/PendingDispatch.php +++ b/vendor/laravel/framework/src/Illuminate/Foundation/Bus/PendingDispatch.php @@ -79,7 +79,7 @@ public function allOnQueue($queue) /** * Set the desired delay for the job. * - * @param \DateTime|int|null $delay + * @param \DateTimeInterface|\DateInterval|int|null $delay * @return $this */ public function delay($delay) diff --git a/vendor/laravel/framework/src/Illuminate/Foundation/Console/ConfigCacheCommand.php b/vendor/laravel/framework/src/Illuminate/Foundation/Console/ConfigCacheCommand.php index c127f6e3cc..714921c3ce 100644 --- a/vendor/laravel/framework/src/Illuminate/Foundation/Console/ConfigCacheCommand.php +++ b/vendor/laravel/framework/src/Illuminate/Foundation/Console/ConfigCacheCommand.php @@ -83,6 +83,8 @@ protected function getFreshConfiguration() { $app = require $this->laravel->bootstrapPath().'/app.php'; + $app->useStoragePath($this->laravel->storagePath()); + $app->make(ConsoleKernelContract::class)->bootstrap(); return $app['config']->all(); diff --git a/vendor/laravel/framework/src/Illuminate/Foundation/Console/EventCacheCommand.php b/vendor/laravel/framework/src/Illuminate/Foundation/Console/EventCacheCommand.php new file mode 100644 index 0000000000..3fc076009a --- /dev/null +++ b/vendor/laravel/framework/src/Illuminate/Foundation/Console/EventCacheCommand.php @@ -0,0 +1,58 @@ +call('event:clear'); + + file_put_contents( + $this->laravel->getCachedEventsPath(), + 'getEvents(), true).';' + ); + + $this->info('Events cached successfully!'); + } + + /** + * Get all of the events and listeners configured for the application. + * + * @return array + */ + protected function getEvents() + { + $events = []; + + foreach ($this->laravel->getProviders(EventServiceProvider::class) as $provider) { + $providerEvents = array_merge($provider->discoverEvents(), $provider->listens()); + + $events = array_merge_recursive($events, $providerEvents); + } + + return $events; + } +} diff --git a/vendor/laravel/framework/src/Illuminate/Foundation/Console/EventClearCommand.php b/vendor/laravel/framework/src/Illuminate/Foundation/Console/EventClearCommand.php new file mode 100644 index 0000000000..a5fe4e67c1 --- /dev/null +++ b/vendor/laravel/framework/src/Illuminate/Foundation/Console/EventClearCommand.php @@ -0,0 +1,57 @@ +files = $files; + } + + /** + * Execute the console command. + * + * @return void + * + * @throws \RuntimeException + */ + public function handle() + { + $this->files->delete($this->laravel->getCachedEventsPath()); + + $this->info('Cached events cleared!'); + } +} diff --git a/vendor/laravel/framework/src/Illuminate/Foundation/Console/EventListCommand.php b/vendor/laravel/framework/src/Illuminate/Foundation/Console/EventListCommand.php new file mode 100644 index 0000000000..ece9f88fce --- /dev/null +++ b/vendor/laravel/framework/src/Illuminate/Foundation/Console/EventListCommand.php @@ -0,0 +1,91 @@ +getEvents(); + + if (empty($events)) { + return $this->error("Your application doesn't have any events matching the given criteria."); + } + + $this->table(['Event', 'Listeners'], $events); + } + + /** + * Get all of the events and listeners configured for the application. + * + * @return array + */ + protected function getEvents() + { + $events = []; + + foreach ($this->laravel->getProviders(EventServiceProvider::class) as $provider) { + $providerEvents = array_merge($provider->discoverEvents(), $provider->listens()); + + $events = array_merge_recursive($events, $providerEvents); + } + + if ($this->filteringByEvent()) { + $events = $this->filterEvents($events); + } + + return collect($events)->map(function ($listeners, $event) { + return ['Event' => $event, 'Listeners' => implode(PHP_EOL, $listeners)]; + })->sortBy('Event')->values()->toArray(); + } + + /** + * Filter the given events using the provided event name filter. + * + * @param array $events + * @return array + */ + protected function filterEvents(array $events) + { + if (! $eventName = $this->option('event')) { + return $events; + } + + return collect($events)->filter(function ($listeners, $event) use ($eventName) { + return Str::contains($event, $eventName); + })->toArray(); + } + + /** + * Determine whether the user is filtering by an event name. + * + * @return bool + */ + protected function filteringByEvent() + { + return ! empty($this->option('event')); + } +} diff --git a/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php b/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php index 1cdbd16f49..8b7745a49b 100644 --- a/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php +++ b/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php @@ -98,8 +98,8 @@ public function __construct(Application $app, Dispatcher $events) */ protected function defineConsoleSchedule() { - $this->app->singleton(Schedule::class, function () { - return new Schedule; + $this->app->singleton(Schedule::class, function ($app) { + return new Schedule($this->scheduleTimezone()); }); $schedule = $this->app->make(Schedule::class); @@ -160,6 +160,18 @@ protected function schedule(Schedule $schedule) // } + /** + * Get the timezone that should be used by default for scheduled events. + * + * @return \DateTimeZone|string|null + */ + protected function scheduleTimezone() + { + $config = $this->app['config']; + + return $config->get('app.schedule_timezone', $config->get('app.timezone')); + } + /** * Register the Closure based commands for the application. * @@ -212,7 +224,7 @@ protected function load($paths) $command = $namespace.str_replace( ['/', '.php'], ['\\', ''], - Str::after($command->getPathname(), app_path().DIRECTORY_SEPARATOR) + Str::after($command->getPathname(), realpath(app_path()).DIRECTORY_SEPARATOR) ); if (is_subclass_of($command, Command::class) && @@ -242,6 +254,8 @@ public function registerCommand($command) * @param array $parameters * @param \Symfony\Component\Console\Output\OutputInterface $outputBuffer * @return int + * + * @throws \Symfony\Component\Console\Exception\CommandNotFoundException */ public function call($command, array $parameters = [], $outputBuffer = null) { diff --git a/vendor/laravel/framework/src/Illuminate/Foundation/Console/ListenerMakeCommand.php b/vendor/laravel/framework/src/Illuminate/Foundation/Console/ListenerMakeCommand.php index c13bfbb92c..7fed4e6759 100644 --- a/vendor/laravel/framework/src/Illuminate/Foundation/Console/ListenerMakeCommand.php +++ b/vendor/laravel/framework/src/Illuminate/Foundation/Console/ListenerMakeCommand.php @@ -52,7 +52,7 @@ protected function buildClass($name) ); return str_replace( - 'DummyFullEvent', $event, $stub + 'DummyFullEvent', trim($event, '\\'), $stub ); } diff --git a/vendor/laravel/framework/src/Illuminate/Foundation/Console/ModelMakeCommand.php b/vendor/laravel/framework/src/Illuminate/Foundation/Console/ModelMakeCommand.php index 91a0499218..c0116999bd 100644 --- a/vendor/laravel/framework/src/Illuminate/Foundation/Console/ModelMakeCommand.php +++ b/vendor/laravel/framework/src/Illuminate/Foundation/Console/ModelMakeCommand.php @@ -82,7 +82,7 @@ protected function createFactory() */ protected function createMigration() { - $table = Str::plural(Str::snake(class_basename($this->argument('name')))); + $table = Str::snake(Str::pluralStudly(class_basename($this->argument('name')))); if ($this->option('pivot')) { $table = Str::singular($table); @@ -125,17 +125,6 @@ protected function getStub() return __DIR__.'/stubs/model.stub'; } - /** - * Get the default namespace for the class. - * - * @param string $rootNamespace - * @return string - */ - protected function getDefaultNamespace($rootNamespace) - { - return $rootNamespace; - } - /** * Get the console command options. * diff --git a/vendor/laravel/framework/src/Illuminate/Foundation/Console/PolicyMakeCommand.php b/vendor/laravel/framework/src/Illuminate/Foundation/Console/PolicyMakeCommand.php index fba1e0ccc0..1d4f07ecb3 100644 --- a/vendor/laravel/framework/src/Illuminate/Foundation/Console/PolicyMakeCommand.php +++ b/vendor/laravel/framework/src/Illuminate/Foundation/Console/PolicyMakeCommand.php @@ -104,7 +104,7 @@ protected function replaceModel($stub, $model) $stub = str_replace('DummyUser', $dummyUser, $stub); - return str_replace('DocDummyPluralModel', Str::snake(Str::plural($dummyModel), ' '), $stub); + return str_replace('DocDummyPluralModel', Str::snake(Str::pluralStudly($dummyModel), ' '), $stub); } /** diff --git a/vendor/laravel/framework/src/Illuminate/Foundation/Console/Presets/bootstrap-stubs/_variables.scss b/vendor/laravel/framework/src/Illuminate/Foundation/Console/Presets/bootstrap-stubs/_variables.scss index 6799fc4531..0407ab5773 100644 --- a/vendor/laravel/framework/src/Illuminate/Foundation/Console/Presets/bootstrap-stubs/_variables.scss +++ b/vendor/laravel/framework/src/Illuminate/Foundation/Console/Presets/bootstrap-stubs/_variables.scss @@ -1,9 +1,8 @@ - // Body $body-bg: #f8fafc; // Typography -$font-family-sans-serif: "Nunito", sans-serif; +$font-family-sans-serif: 'Nunito', sans-serif; $font-size-base: 0.9rem; $line-height-base: 1.6; @@ -11,7 +10,7 @@ $line-height-base: 1.6; $blue: #3490dc; $indigo: #6574cd; $purple: #9561e2; -$pink: #f66D9b; +$pink: #f66d9b; $red: #e3342f; $orange: #f6993f; $yellow: #ffed4a; diff --git a/vendor/laravel/framework/src/Illuminate/Foundation/Console/Presets/bootstrap-stubs/app.scss b/vendor/laravel/framework/src/Illuminate/Foundation/Console/Presets/bootstrap-stubs/app.scss index f42e7986db..3f1850e399 100644 --- a/vendor/laravel/framework/src/Illuminate/Foundation/Console/Presets/bootstrap-stubs/app.scss +++ b/vendor/laravel/framework/src/Illuminate/Foundation/Console/Presets/bootstrap-stubs/app.scss @@ -1,4 +1,3 @@ - // Fonts @import url('https://fonts.googleapis.com/css?family=Nunito'); @@ -9,6 +8,6 @@ @import '~bootstrap/scss/bootstrap'; .navbar-laravel { - background-color: #fff; - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.04); + background-color: #fff; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.04); } diff --git a/vendor/laravel/framework/src/Illuminate/Foundation/Console/Presets/none-stubs/app.js b/vendor/laravel/framework/src/Illuminate/Foundation/Console/Presets/none-stubs/app.js index e34e8a47df..31d6f636c3 100644 --- a/vendor/laravel/framework/src/Illuminate/Foundation/Console/Presets/none-stubs/app.js +++ b/vendor/laravel/framework/src/Illuminate/Foundation/Console/Presets/none-stubs/app.js @@ -1,4 +1,3 @@ - /** * First, we will load all of this project's Javascript utilities and other * dependencies. Then, we will be ready to develop a robust and powerful diff --git a/vendor/laravel/framework/src/Illuminate/Foundation/Console/Presets/none-stubs/bootstrap.js b/vendor/laravel/framework/src/Illuminate/Foundation/Console/Presets/none-stubs/bootstrap.js index 372bf25459..0c8a1b5265 100644 --- a/vendor/laravel/framework/src/Illuminate/Foundation/Console/Presets/none-stubs/bootstrap.js +++ b/vendor/laravel/framework/src/Illuminate/Foundation/Console/Presets/none-stubs/bootstrap.js @@ -1,4 +1,3 @@ - window._ = require('lodash'); /** diff --git a/vendor/laravel/framework/src/Illuminate/Foundation/Console/Presets/react-stubs/Example.js b/vendor/laravel/framework/src/Illuminate/Foundation/Console/Presets/react-stubs/Example.js index 937bb985df..eac7e85087 100644 --- a/vendor/laravel/framework/src/Illuminate/Foundation/Console/Presets/react-stubs/Example.js +++ b/vendor/laravel/framework/src/Illuminate/Foundation/Console/Presets/react-stubs/Example.js @@ -10,9 +10,7 @@ export default class Example extends Component {
Example Component
-
- I'm an example component! -
+
I'm an example component!
diff --git a/vendor/laravel/framework/src/Illuminate/Foundation/Console/Presets/react-stubs/app.js b/vendor/laravel/framework/src/Illuminate/Foundation/Console/Presets/react-stubs/app.js index 583ecced87..a5f91ab386 100644 --- a/vendor/laravel/framework/src/Illuminate/Foundation/Console/Presets/react-stubs/app.js +++ b/vendor/laravel/framework/src/Illuminate/Foundation/Console/Presets/react-stubs/app.js @@ -1,4 +1,3 @@ - /** * First we will load all of this project's JavaScript dependencies which * includes React and other helpers. It's a great starting point while diff --git a/vendor/laravel/framework/src/Illuminate/Foundation/Console/Presets/vue-stubs/app.js b/vendor/laravel/framework/src/Illuminate/Foundation/Console/Presets/vue-stubs/app.js index 32d79b4886..aa19e31aef 100644 --- a/vendor/laravel/framework/src/Illuminate/Foundation/Console/Presets/vue-stubs/app.js +++ b/vendor/laravel/framework/src/Illuminate/Foundation/Console/Presets/vue-stubs/app.js @@ -1,4 +1,3 @@ - /** * First we will load all of this project's JavaScript dependencies which * includes Vue and other libraries. It is a great starting point when @@ -29,5 +28,5 @@ Vue.component('example-component', require('./components/ExampleComponent.vue'). */ const app = new Vue({ - el: '#app' + el: '#app', }); diff --git a/vendor/laravel/framework/src/Illuminate/Foundation/Console/RouteCacheCommand.php b/vendor/laravel/framework/src/Illuminate/Foundation/Console/RouteCacheCommand.php index 3c85b877fc..9d86f16fd7 100644 --- a/vendor/laravel/framework/src/Illuminate/Foundation/Console/RouteCacheCommand.php +++ b/vendor/laravel/framework/src/Illuminate/Foundation/Console/RouteCacheCommand.php @@ -85,7 +85,7 @@ protected function getFreshApplicationRoutes() /** * Get a fresh application instance. * - * @return \Illuminate\Foundation\Application + * @return \Illuminate\Contracts\Foundation\Application */ protected function getFreshApplication() { diff --git a/vendor/laravel/framework/src/Illuminate/Foundation/Console/RouteListCommand.php b/vendor/laravel/framework/src/Illuminate/Foundation/Console/RouteListCommand.php index 12af805e61..02a416c205 100644 --- a/vendor/laravel/framework/src/Illuminate/Foundation/Console/RouteListCommand.php +++ b/vendor/laravel/framework/src/Illuminate/Foundation/Console/RouteListCommand.php @@ -26,13 +26,6 @@ class RouteListCommand extends Command */ protected $description = 'List all registered routes'; - /** - * The router instance. - * - * @var \Illuminate\Routing\Router - */ - protected $router; - /** * An array of all the registered routes. * @@ -47,6 +40,13 @@ class RouteListCommand extends Command */ protected $headers = ['Domain', 'Method', 'URI', 'Name', 'Action', 'Middleware']; + /** + * The columns to display when using the "compact" flag. + * + * @var array + */ + protected $compactColumns = ['method', 'uri', 'action']; + /** * Create a new route command instance. * @@ -57,7 +57,6 @@ public function __construct(Router $router) { parent::__construct(); - $this->router = $router; $this->routes = $router->getRoutes(); } @@ -68,11 +67,15 @@ public function __construct(Router $router) */ public function handle() { - if (count($this->routes) === 0) { + if (empty($this->routes)) { return $this->error("Your application doesn't have any routes."); } - $this->displayRoutes($this->getRoutes()); + if (empty($routes = $this->getRoutes())) { + return $this->error("Your application doesn't have any routes matching the given criteria."); + } + + $this->displayRoutes($routes); } /** @@ -84,7 +87,7 @@ protected function getRoutes() { $routes = collect($this->routes)->map(function ($route) { return $this->getRouteInformation($route); - })->all(); + })->filter()->all(); if ($sort = $this->option('sort')) { $routes = $this->sortRoutes($sort, $routes); @@ -94,7 +97,7 @@ protected function getRoutes() $routes = array_reverse($routes); } - return array_filter($routes); + return $this->pluckColumns($routes); } /** @@ -106,7 +109,7 @@ protected function getRoutes() protected function getRouteInformation(Route $route) { return $this->filterRoute([ - 'host' => $route->domain(), + 'domain' => $route->domain(), 'method' => implode('|', $route->methods()), 'uri' => $route->uri(), 'name' => $route->getName(), @@ -122,13 +125,26 @@ protected function getRouteInformation(Route $route) * @param array $routes * @return array */ - protected function sortRoutes($sort, $routes) + protected function sortRoutes($sort, array $routes) { return Arr::sort($routes, function ($route) use ($sort) { return $route[$sort]; }); } + /** + * Remove unnecessary columns from the routes. + * + * @param array $routes + * @return array + */ + protected function pluckColumns(array $routes) + { + return array_map(function ($route) { + return Arr::only($route, $this->getColumns()); + }, $routes); + } + /** * Display the route information on the console. * @@ -137,7 +153,7 @@ protected function sortRoutes($sort, $routes) */ protected function displayRoutes(array $routes) { - $this->table($this->headers, $routes); + $this->table($this->getHeaders(), $routes); } /** @@ -170,6 +186,36 @@ protected function filterRoute(array $route) return $route; } + /** + * Get the table headers for the visible columns. + * + * @return array + */ + protected function getHeaders() + { + return Arr::only($this->headers, array_keys($this->getColumns())); + } + + /** + * Get the column names to show (lowercase table headers). + * + * @return array + */ + protected function getColumns() + { + $availableColumns = array_map('strtolower', $this->headers); + + if ($this->option('compact')) { + return array_intersect($availableColumns, $this->compactColumns); + } + + if ($columns = $this->option('columns')) { + return array_intersect($availableColumns, $columns); + } + + return $availableColumns; + } + /** * Get the console command options. * @@ -178,6 +224,10 @@ protected function filterRoute(array $route) protected function getOptions() { return [ + ['columns', null, InputOption::VALUE_OPTIONAL | InputOption::VALUE_IS_ARRAY, 'Columns to include in the route table'], + + ['compact', 'c', InputOption::VALUE_NONE, 'Only show method, URI and action columns'], + ['method', null, InputOption::VALUE_OPTIONAL, 'Filter the routes by method'], ['name', null, InputOption::VALUE_OPTIONAL, 'Filter the routes by name'], @@ -186,7 +236,7 @@ protected function getOptions() ['reverse', 'r', InputOption::VALUE_NONE, 'Reverse the ordering of the routes'], - ['sort', null, InputOption::VALUE_OPTIONAL, 'The column (host, method, uri, name, action, middleware) to sort by', 'uri'], + ['sort', null, InputOption::VALUE_OPTIONAL, 'The column (domain, method, uri, name, action, middleware) to sort by', 'uri'], ]; } } diff --git a/vendor/laravel/framework/src/Illuminate/Foundation/Console/ServeCommand.php b/vendor/laravel/framework/src/Illuminate/Foundation/Console/ServeCommand.php index 376f53b23e..3040812571 100644 --- a/vendor/laravel/framework/src/Illuminate/Foundation/Console/ServeCommand.php +++ b/vendor/laravel/framework/src/Illuminate/Foundation/Console/ServeCommand.php @@ -23,6 +23,13 @@ class ServeCommand extends Command */ protected $description = 'Serve the application on the PHP development server'; + /** + * The current port offset. + * + * @var int + */ + protected $portOffset = 0; + /** * Execute the console command. * @@ -38,6 +45,12 @@ public function handle() passthru($this->serverCommand(), $status); + if ($status && $this->canTryAnotherPort()) { + $this->portOffset += 1; + + return $this->handle(); + } + return $status; } @@ -73,7 +86,17 @@ protected function host() */ protected function port() { - return $this->input->getOption('port'); + return $this->input->getOption('port') + $this->portOffset; + } + + /** + * Check if command has reached its max amount of port tries. + * + * @return bool + */ + protected function canTryAnotherPort() + { + return $this->input->getOption('tries') > $this->portOffset; } /** @@ -87,6 +110,8 @@ protected function getOptions() ['host', null, InputOption::VALUE_OPTIONAL, 'The host address to serve the application on', '127.0.0.1'], ['port', null, InputOption::VALUE_OPTIONAL, 'The port to serve the application on', 8000], + + ['tries', null, InputOption::VALUE_OPTIONAL, 'The max number of ports to attempt to serve from', 10], ]; } } diff --git a/vendor/laravel/framework/src/Illuminate/Foundation/Console/ViewCacheCommand.php b/vendor/laravel/framework/src/Illuminate/Foundation/Console/ViewCacheCommand.php index 408d959171..19e0ab596f 100644 --- a/vendor/laravel/framework/src/Illuminate/Foundation/Console/ViewCacheCommand.php +++ b/vendor/laravel/framework/src/Illuminate/Foundation/Console/ViewCacheCommand.php @@ -30,6 +30,8 @@ class ViewCacheCommand extends Command */ public function handle() { + $this->call('view:clear'); + $this->paths()->each(function ($path) { $this->compileViews($this->bladeFilesIn([$path])); }); diff --git a/vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs/exception-report.stub b/vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs/exception-report.stub index 72080e205c..8db5c4f3c2 100644 --- a/vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs/exception-report.stub +++ b/vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs/exception-report.stub @@ -11,8 +11,8 @@ class DummyClass extends Exception * * @return void */ - public function report() - { + public function report() + { // } } diff --git a/vendor/laravel/framework/src/Illuminate/Foundation/Events/DiscoverEvents.php b/vendor/laravel/framework/src/Illuminate/Foundation/Events/DiscoverEvents.php new file mode 100644 index 0000000000..c82ffc50c8 --- /dev/null +++ b/vendor/laravel/framework/src/Illuminate/Foundation/Events/DiscoverEvents.php @@ -0,0 +1,76 @@ +files()->in($listenerPath), $basePath + ))->mapToDictionary(function ($event, $listener) { + return [$event => $listener]; + })->all(); + } + + /** + * Get all of the listeners and their corresponding events. + * + * @param iterable $listeners + * @param string $basePath + * @return array + */ + protected static function getListenerEvents($listeners, $basePath) + { + $listenerEvents = []; + + foreach ($listeners as $listener) { + $listener = new ReflectionClass( + static::classFromFile($listener, $basePath) + ); + + foreach ($listener->getMethods(ReflectionMethod::IS_PUBLIC) as $method) { + if (! Str::is('handle*', $method->name) || + ! isset($method->getParameters()[0])) { + continue; + } + + $listenerEvents[$listener->name.'@'.$method->name] = + optional($method->getParameters()[0]->getClass())->name; + } + } + + return array_filter($listenerEvents); + } + + /** + * Extract the class name from the given file path. + * + * @param \SplFileInfo $file + * @param string $basePath + * @return string + */ + protected static function classFromFile(SplFileInfo $file, $basePath) + { + $class = trim(str_replace($basePath, '', $file->getRealPath()), DIRECTORY_SEPARATOR); + + return str_replace( + [DIRECTORY_SEPARATOR, 'App\\'], + ['\\', app()->getNamespace()], + ucfirst(Str::replaceLast('.php', '', $class)) + ); + } +} diff --git a/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php b/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php index bd40a3ac34..b84aee7575 100644 --- a/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php +++ b/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php @@ -99,8 +99,8 @@ public function report(Exception $e) return; } - if (method_exists($e, 'report')) { - return $e->report(); + if (is_callable($reportCallable = [$e, 'report'])) { + return $this->container->call($reportCallable); } try { @@ -151,7 +151,7 @@ protected function context() try { return array_filter([ 'userId' => Auth::id(), - 'email' => Auth::user() ? Auth::user()->email : null, + // 'email' => Auth::user() ? Auth::user()->email : null, ]); } catch (Throwable $e) { return []; @@ -249,7 +249,7 @@ protected function convertValidationExceptionToResponse(ValidationException $e, protected function invalid($request, ValidationException $exception) { return redirect($exception->redirectTo ?? url()->previous()) - ->withInput(array_except($request->input(), $this->dontFlash)) + ->withInput(Arr::except($request->input(), $this->dontFlash)) ->withErrors($exception->errors(), $exception->errorBag); } @@ -366,10 +366,10 @@ protected function renderExceptionWithSymfony(Exception $e, $debug) /** * Render the given HttpException. * - * @param \Symfony\Component\HttpKernel\Exception\HttpException $e + * @param \Symfony\Component\HttpKernel\Exception\HttpExceptionInterface $e * @return \Symfony\Component\HttpFoundation\Response */ - protected function renderHttpException(HttpException $e) + protected function renderHttpException(HttpExceptionInterface $e) { $this->registerErrorViewPaths(); diff --git a/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/views/401.blade.php b/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/views/401.blade.php index e606036808..5c586db96b 100644 --- a/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/views/401.blade.php +++ b/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/views/401.blade.php @@ -1,11 +1,5 @@ -@extends('errors::illustrated-layout') +@extends('errors::minimal') -@section('code', '401') @section('title', __('Unauthorized')) - -@section('image') -
-
-@endsection - -@section('message', __('Sorry, you are not authorized to access this page.')) +@section('code', '401') +@section('message', __('Unauthorized')) diff --git a/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/views/403.blade.php b/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/views/403.blade.php index aea05cf23e..a5506f01f2 100644 --- a/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/views/403.blade.php +++ b/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/views/403.blade.php @@ -1,11 +1,5 @@ -@extends('errors::illustrated-layout') +@extends('errors::minimal') -@section('code', '403') @section('title', __('Forbidden')) - -@section('image') -
-
-@endsection - -@section('message', __($exception->getMessage() ?: 'Sorry, you are forbidden from accessing this page.')) +@section('code', '403') +@section('message', __($exception->getMessage() ?: 'Forbidden')) diff --git a/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/views/404.blade.php b/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/views/404.blade.php index 2a00449779..7549540d8d 100644 --- a/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/views/404.blade.php +++ b/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/views/404.blade.php @@ -1,11 +1,5 @@ -@extends('errors::illustrated-layout') +@extends('errors::minimal') +@section('title', __('Not Found')) @section('code', '404') -@section('title', __('Page Not Found')) - -@section('image') -
-
-@endsection - -@section('message', __('Sorry, the page you are looking for could not be found.')) +@section('message', __('Not Found')) diff --git a/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/views/419.blade.php b/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/views/419.blade.php index 32044f2590..c09216e212 100644 --- a/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/views/419.blade.php +++ b/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/views/419.blade.php @@ -1,11 +1,5 @@ -@extends('errors::illustrated-layout') +@extends('errors::minimal') -@section('code', '419') @section('title', __('Page Expired')) - -@section('image') -
-
-@endsection - -@section('message', __('Sorry, your session has expired. Please refresh and try again.')) +@section('code', '419') +@section('message', __('Page Expired')) diff --git a/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/views/429.blade.php b/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/views/429.blade.php index 9bbbb8b030..f01b07b8ed 100644 --- a/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/views/429.blade.php +++ b/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/views/429.blade.php @@ -1,11 +1,5 @@ -@extends('errors::illustrated-layout') +@extends('errors::minimal') -@section('code', '429') @section('title', __('Too Many Requests')) - -@section('image') -
-
-@endsection - -@section('message', __('Sorry, you are making too many requests to our servers.')) +@section('code', '429') +@section('message', __('Too Many Requests')) diff --git a/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/views/500.blade.php b/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/views/500.blade.php index 9cc3aee4b6..d9e95d9b99 100644 --- a/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/views/500.blade.php +++ b/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/views/500.blade.php @@ -1,11 +1,5 @@ -@extends('errors::illustrated-layout') +@extends('errors::minimal') +@section('title', __('Server Error')) @section('code', '500') -@section('title', __('Error')) - -@section('image') -
-
-@endsection - -@section('message', __('Whoops, something went wrong on our servers.')) +@section('message', __('Server Error')) diff --git a/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/views/503.blade.php b/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/views/503.blade.php index 51936e5301..acd38100a7 100644 --- a/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/views/503.blade.php +++ b/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/views/503.blade.php @@ -1,11 +1,5 @@ -@extends('errors::illustrated-layout') +@extends('errors::minimal') -@section('code', '503') @section('title', __('Service Unavailable')) - -@section('image') -
-
-@endsection - -@section('message', __($exception->getMessage() ?: 'Sorry, we are doing some maintenance. Please check back soon.')) +@section('code', '503') +@section('message', __($exception->getMessage() ?: 'Service Unavailable')) diff --git a/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/views/minimal.blade.php b/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/views/minimal.blade.php new file mode 100644 index 0000000000..1157501dc4 --- /dev/null +++ b/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/views/minimal.blade.php @@ -0,0 +1,62 @@ + + + + + + + @yield('title') + + + + + + + + + +
+
+ @yield('code') +
+ +
+ @yield('message') +
+
+ + diff --git a/vendor/laravel/framework/src/Illuminate/Foundation/Http/Exceptions/MaintenanceModeException.php b/vendor/laravel/framework/src/Illuminate/Foundation/Http/Exceptions/MaintenanceModeException.php index 6d5a2ab71f..45c76b2201 100644 --- a/vendor/laravel/framework/src/Illuminate/Foundation/Http/Exceptions/MaintenanceModeException.php +++ b/vendor/laravel/framework/src/Illuminate/Foundation/Http/Exceptions/MaintenanceModeException.php @@ -4,6 +4,7 @@ use Exception; use Illuminate\Support\Carbon; +use Illuminate\Support\Facades\Date; use Symfony\Component\HttpKernel\Exception\ServiceUnavailableHttpException; class MaintenanceModeException extends ServiceUnavailableHttpException @@ -33,9 +34,9 @@ class MaintenanceModeException extends ServiceUnavailableHttpException * Create a new exception instance. * * @param int $time - * @param int $retryAfter - * @param string $message - * @param \Exception $previous + * @param int|null $retryAfter + * @param string|null $message + * @param \Exception|null $previous * @param int $code * @return void */ @@ -43,12 +44,12 @@ public function __construct($time, $retryAfter = null, $message = null, Exceptio { parent::__construct($retryAfter, $message, $previous, $code); - $this->wentDownAt = Carbon::createFromTimestamp($time); + $this->wentDownAt = Date::createFromTimestamp($time); if ($retryAfter) { $this->retryAfter = $retryAfter; - $this->willBeAvailableAt = Carbon::createFromTimestamp($time)->addSeconds($this->retryAfter); + $this->willBeAvailableAt = Date::instance(Carbon::createFromTimestamp($time)->addRealSeconds($this->retryAfter)); } } } diff --git a/vendor/laravel/framework/src/Illuminate/Foundation/Http/FormRequest.php b/vendor/laravel/framework/src/Illuminate/Foundation/Http/FormRequest.php index b5fcaab6ab..a67b2c3c59 100644 --- a/vendor/laravel/framework/src/Illuminate/Foundation/Http/FormRequest.php +++ b/vendor/laravel/framework/src/Illuminate/Foundation/Http/FormRequest.php @@ -72,6 +72,10 @@ class FormRequest extends Request implements ValidatesWhenResolved */ protected function getValidatorInstance() { + if ($this->validator) { + return $this->validator; + } + $factory = $this->container->make(ValidationFactory::class); if (method_exists($this, 'validator')) { diff --git a/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php b/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php index a44214a760..022dd8eec8 100644 --- a/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php +++ b/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php @@ -336,6 +336,16 @@ public function getMiddlewareGroups() return $this->middlewareGroups; } + /** + * Get the application's route middleware. + * + * @return array + */ + public function getRouteMiddleware() + { + return $this->routeMiddleware; + } + /** * Get the Laravel application instance. * diff --git a/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php b/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php index 9c30fdcccf..a61a1bd720 100644 --- a/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php +++ b/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php @@ -7,25 +7,15 @@ class TransformsRequest { - /** - * The additional attributes passed to the middleware. - * - * @var array - */ - protected $attributes = []; - /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next - * @param array ...$attributes * @return mixed */ - public function handle($request, Closure $next, ...$attributes) + public function handle($request, Closure $next) { - $this->attributes = $attributes; - $this->clean($request); return $next($request); @@ -63,12 +53,13 @@ protected function cleanParameterBag(ParameterBag $bag) * Clean the data in the given array. * * @param array $data + * @param string $keyPrefix * @return array */ - protected function cleanArray(array $data) + protected function cleanArray(array $data, $keyPrefix = '') { - return collect($data)->map(function ($value, $key) { - return $this->cleanValue($key, $value); + return collect($data)->map(function ($value, $key) use ($keyPrefix) { + return $this->cleanValue($keyPrefix.$key, $value); })->all(); } @@ -82,7 +73,7 @@ protected function cleanArray(array $data) protected function cleanValue($key, $value) { if (is_array($value)) { - return $this->cleanArray($value); + return $this->cleanArray($value, $key.'.'); } return $this->transform($key, $value); diff --git a/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php b/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php index 2c21bcfb74..beb7946e67 100644 --- a/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php +++ b/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php @@ -3,11 +3,11 @@ namespace Illuminate\Foundation\Http\Middleware; use Closure; -use Illuminate\Foundation\Application; use Illuminate\Support\InteractsWithTime; use Symfony\Component\HttpFoundation\Cookie; use Illuminate\Contracts\Encryption\Encrypter; use Illuminate\Session\TokenMismatchException; +use Illuminate\Contracts\Foundation\Application; use Illuminate\Cookie\Middleware\EncryptCookies; class VerifyCsrfToken @@ -17,7 +17,7 @@ class VerifyCsrfToken /** * The application instance. * - * @var \Illuminate\Foundation\Application + * @var \Illuminate\Contracts\Foundation\Application */ protected $app; @@ -45,7 +45,7 @@ class VerifyCsrfToken /** * Create a new middleware instance. * - * @param \Illuminate\Foundation\Application $app + * @param \Illuminate\Contracts\Foundation\Application $app * @param \Illuminate\Contracts\Encryption\Encrypter $encrypter * @return void */ @@ -79,7 +79,7 @@ public function handle($request, Closure $next) }); } - throw new TokenMismatchException; + throw new TokenMismatchException('CSRF token mismatch.'); } /** diff --git a/vendor/laravel/framework/src/Illuminate/Foundation/Mix.php b/vendor/laravel/framework/src/Illuminate/Foundation/Mix.php new file mode 100644 index 0000000000..5da16111c5 --- /dev/null +++ b/vendor/laravel/framework/src/Illuminate/Foundation/Mix.php @@ -0,0 +1,68 @@ +get('app.debug')) { + report($exception); + + return $path; + } else { + throw $exception; + } + } + + return new HtmlString($manifestDirectory.$manifest[$path]); + } +} diff --git a/vendor/laravel/framework/src/Illuminate/Foundation/Providers/ArtisanServiceProvider.php b/vendor/laravel/framework/src/Illuminate/Foundation/Providers/ArtisanServiceProvider.php index aabdfd5493..110d5e89a6 100755 --- a/vendor/laravel/framework/src/Illuminate/Foundation/Providers/ArtisanServiceProvider.php +++ b/vendor/laravel/framework/src/Illuminate/Foundation/Providers/ArtisanServiceProvider.php @@ -19,12 +19,16 @@ use Illuminate\Foundation\Console\OptimizeCommand; use Illuminate\Foundation\Console\RuleMakeCommand; use Illuminate\Foundation\Console\TestMakeCommand; +use Illuminate\Foundation\Console\EventListCommand; use Illuminate\Foundation\Console\EventMakeCommand; use Illuminate\Foundation\Console\ModelMakeCommand; use Illuminate\Foundation\Console\RouteListCommand; use Illuminate\Foundation\Console\ViewCacheCommand; use Illuminate\Foundation\Console\ViewClearCommand; use Illuminate\Session\Console\SessionTableCommand; +use Illuminate\Contracts\Support\DeferrableProvider; +use Illuminate\Foundation\Console\EventCacheCommand; +use Illuminate\Foundation\Console\EventClearCommand; use Illuminate\Foundation\Console\PolicyMakeCommand; use Illuminate\Foundation\Console\RouteCacheCommand; use Illuminate\Foundation\Console\RouteClearCommand; @@ -72,15 +76,8 @@ use Illuminate\Database\Console\Migrations\RefreshCommand as MigrateRefreshCommand; use Illuminate\Database\Console\Migrations\RollbackCommand as MigrateRollbackCommand; -class ArtisanServiceProvider extends ServiceProvider +class ArtisanServiceProvider extends ServiceProvider implements DeferrableProvider { - /** - * Indicates if loading of the provider is deferred. - * - * @var bool - */ - protected $defer = true; - /** * The commands to be registered. * @@ -95,6 +92,9 @@ class ArtisanServiceProvider extends ServiceProvider 'ConfigClear' => 'command.config.clear', 'Down' => 'command.down', 'Environment' => 'command.environment', + 'EventCache' => 'command.event.cache', + 'EventClear' => 'command.event.clear', + 'EventList' => 'command.event.list', 'KeyGenerate' => 'command.key.generate', 'Migrate' => 'command.migrate', 'MigrateFresh' => 'command.migrate.fresh', @@ -408,6 +408,42 @@ protected function registerEnvironmentCommand() }); } + /** + * Register the command. + * + * @return void + */ + protected function registerEventCacheCommand() + { + $this->app->singleton('command.event.cache', function () { + return new EventCacheCommand; + }); + } + + /** + * Register the command. + * + * @return void + */ + protected function registerEventClearCommand() + { + $this->app->singleton('command.event.clear', function ($app) { + return new EventClearCommand($app['files']); + }); + } + + /** + * Register the command. + * + * @return void + */ + protected function registerEventListCommand() + { + $this->app->singleton('command.event.list', function () { + return new EventListCommand(); + }); + } + /** * Register the command. * diff --git a/vendor/laravel/framework/src/Illuminate/Foundation/Providers/ComposerServiceProvider.php b/vendor/laravel/framework/src/Illuminate/Foundation/Providers/ComposerServiceProvider.php index 295ca960f2..6b05c256d4 100755 --- a/vendor/laravel/framework/src/Illuminate/Foundation/Providers/ComposerServiceProvider.php +++ b/vendor/laravel/framework/src/Illuminate/Foundation/Providers/ComposerServiceProvider.php @@ -4,16 +4,10 @@ use Illuminate\Support\Composer; use Illuminate\Support\ServiceProvider; +use Illuminate\Contracts\Support\DeferrableProvider; -class ComposerServiceProvider extends ServiceProvider +class ComposerServiceProvider extends ServiceProvider implements DeferrableProvider { - /** - * Indicates if loading of the provider is deferred. - * - * @var bool - */ - protected $defer = true; - /** * Register the service provider. * diff --git a/vendor/laravel/framework/src/Illuminate/Foundation/Providers/ConsoleSupportServiceProvider.php b/vendor/laravel/framework/src/Illuminate/Foundation/Providers/ConsoleSupportServiceProvider.php index 8e92d28c78..f36083818d 100644 --- a/vendor/laravel/framework/src/Illuminate/Foundation/Providers/ConsoleSupportServiceProvider.php +++ b/vendor/laravel/framework/src/Illuminate/Foundation/Providers/ConsoleSupportServiceProvider.php @@ -4,16 +4,10 @@ use Illuminate\Support\AggregateServiceProvider; use Illuminate\Database\MigrationServiceProvider; +use Illuminate\Contracts\Support\DeferrableProvider; -class ConsoleSupportServiceProvider extends AggregateServiceProvider +class ConsoleSupportServiceProvider extends AggregateServiceProvider implements DeferrableProvider { - /** - * Indicates if loading of the provider is deferred. - * - * @var bool - */ - protected $defer = true; - /** * The provider class names. * diff --git a/vendor/laravel/framework/src/Illuminate/Foundation/Support/Providers/AuthServiceProvider.php b/vendor/laravel/framework/src/Illuminate/Foundation/Support/Providers/AuthServiceProvider.php index 4fc90b7dec..ac32319cfa 100644 --- a/vendor/laravel/framework/src/Illuminate/Foundation/Support/Providers/AuthServiceProvider.php +++ b/vendor/laravel/framework/src/Illuminate/Foundation/Support/Providers/AuthServiceProvider.php @@ -26,14 +26,6 @@ public function registerPolicies() } } - /** - * {@inheritdoc} - */ - public function register() - { - // - } - /** * Get the policies defined on the provider. * diff --git a/vendor/laravel/framework/src/Illuminate/Foundation/Support/Providers/EventServiceProvider.php b/vendor/laravel/framework/src/Illuminate/Foundation/Support/Providers/EventServiceProvider.php index 307f2cefa0..60d292bf05 100644 --- a/vendor/laravel/framework/src/Illuminate/Foundation/Support/Providers/EventServiceProvider.php +++ b/vendor/laravel/framework/src/Illuminate/Foundation/Support/Providers/EventServiceProvider.php @@ -4,6 +4,7 @@ use Illuminate\Support\Facades\Event; use Illuminate\Support\ServiceProvider; +use Illuminate\Foundation\Events\DiscoverEvents; class EventServiceProvider extends ServiceProvider { @@ -28,8 +29,13 @@ class EventServiceProvider extends ServiceProvider */ public function boot() { - foreach ($this->listens() as $event => $listeners) { - foreach ($listeners as $listener) { + $events = array_merge_recursive( + $this->discoveredEvents(), + $this->listens() + ); + + foreach ($events as $event => $listeners) { + foreach (array_unique($listeners) as $listener) { Event::listen($event, $listener); } } @@ -40,20 +46,69 @@ public function boot() } /** - * {@inheritdoc} + * Get the events and handlers. + * + * @return array */ - public function register() + public function listens() { - // + return $this->listen; } /** - * Get the events and handlers. + * Get the discovered events and listeners for the application. * * @return array */ - public function listens() + protected function discoveredEvents() { - return $this->listen; + if ($this->app->eventsAreCached()) { + return require $this->app->getCachedEventsPath(); + } + + return $this->shouldDiscoverEvents() + ? $this->discoverEvents() + : []; + } + + /** + * Determine if events and listeners should be automatically discovered. + * + * @return bool + */ + public function shouldDiscoverEvents() + { + return false; + } + + /** + * Discover the events and listeners for the application. + * + * @return array + */ + public function discoverEvents() + { + return collect($this->discoverEventsWithin()) + ->reject(function ($directory) { + return ! is_dir($directory); + }) + ->reduce(function ($discovered, $directory) { + return array_merge_recursive( + $discovered, + DiscoverEvents::within($directory, base_path()) + ); + }, []); + } + + /** + * Get the listener directories that should be used to discover events. + * + * @return array + */ + protected function discoverEventsWithin() + { + return [ + $this->app->path('Listeners'), + ]; } } diff --git a/vendor/laravel/framework/src/Illuminate/Foundation/Support/Providers/RouteServiceProvider.php b/vendor/laravel/framework/src/Illuminate/Foundation/Support/Providers/RouteServiceProvider.php index 5034869461..c86ad8c6e7 100644 --- a/vendor/laravel/framework/src/Illuminate/Foundation/Support/Providers/RouteServiceProvider.php +++ b/vendor/laravel/framework/src/Illuminate/Foundation/Support/Providers/RouteServiceProvider.php @@ -30,7 +30,7 @@ public function boot() { $this->setRootControllerNamespace(); - if ($this->app->routesAreCached()) { + if ($this->routesAreCached()) { $this->loadCachedRoutes(); } else { $this->loadRoutes(); @@ -54,6 +54,16 @@ protected function setRootControllerNamespace() } } + /** + * Determine if the application routes are cached. + * + * @return bool + */ + protected function routesAreCached() + { + return $this->app->routesAreCached(); + } + /** * Load the cached routes for the application. * @@ -78,16 +88,6 @@ protected function loadRoutes() } } - /** - * Register the service provider. - * - * @return void - */ - public function register() - { - // - } - /** * Pass dynamic methods onto the router instance. * diff --git a/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Assert.php b/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Assert.php new file mode 100644 index 0000000000..0e51ba523c --- /dev/null +++ b/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Assert.php @@ -0,0 +1,42 @@ +beforeApplicationDestroyed(function () { if (count($this->expectedQuestions)) { - $this->fail('Question "'.array_first($this->expectedQuestions)[0].'" was not asked.'); + $this->fail('Question "'.Arr::first($this->expectedQuestions)[0].'" was not asked.'); } if (count($this->expectedOutput)) { - $this->fail('Output "'.array_first($this->expectedOutput).'" was not printed.'); + $this->fail('Output "'.Arr::first($this->expectedOutput).'" was not printed.'); } }); diff --git a/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithExceptionHandling.php b/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithExceptionHandling.php index efa13f3fce..ee75e34298 100644 --- a/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithExceptionHandling.php +++ b/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithExceptionHandling.php @@ -92,6 +92,17 @@ public function report(Exception $e) // } + /** + * Determine if the exception should be reported. + * + * @param \Exception $e + * @return bool + */ + public function shouldReport(Exception $e) + { + return false; + } + /** * Render the given exception. * diff --git a/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php b/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php index a530979ee4..59603af690 100644 --- a/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php +++ b/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php @@ -144,13 +144,15 @@ public function followingRedirects() } /** - * Set the referer header to simulate a previous request. + * Set the referer header and previous URL session value in order to simulate a previous request. * * @param string $url * @return $this */ public function from(string $url) { + $this->app['session']->setPreviousUrl($url); + return $this->withHeader('referer', $url); } diff --git a/vendor/laravel/framework/src/Illuminate/Foundation/Testing/HttpException.php b/vendor/laravel/framework/src/Illuminate/Foundation/Testing/HttpException.php deleted file mode 100644 index 537b9e0cd2..0000000000 --- a/vendor/laravel/framework/src/Illuminate/Foundation/Testing/HttpException.php +++ /dev/null @@ -1,10 +0,0 @@ -app) { $this->refreshApplication(); @@ -132,7 +133,7 @@ protected function setUpTraits() * * @return void */ - protected function tearDown() + protected function tearDown(): void { if ($this->app) { foreach ($this->beforeApplicationDestroyedCallbacks as $callback) { @@ -166,6 +167,10 @@ protected function tearDown() Carbon::setTestNow(); } + if (class_exists(CarbonImmutable::class)) { + CarbonImmutable::setTestNow(); + } + $this->afterApplicationCreatedCallbacks = []; $this->beforeApplicationDestroyedCallbacks = []; diff --git a/vendor/laravel/framework/src/Illuminate/Foundation/Testing/TestResponse.php b/vendor/laravel/framework/src/Illuminate/Foundation/Testing/TestResponse.php index 948294fadf..aac6feb8d9 100644 --- a/vendor/laravel/framework/src/Illuminate/Foundation/Testing/TestResponse.php +++ b/vendor/laravel/framework/src/Illuminate/Foundation/Testing/TestResponse.php @@ -9,7 +9,7 @@ use Illuminate\Contracts\View\View; use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Traits\Macroable; -use PHPUnit\Framework\Assert as PHPUnit; +use Illuminate\Foundation\Testing\Assert as PHPUnit; use Symfony\Component\HttpFoundation\StreamedResponse; use Illuminate\Foundation\Testing\Constraints\SeeInOrder; @@ -342,7 +342,7 @@ protected function getCookie($cookieName) */ public function assertSee($value) { - PHPUnit::assertContains((string) $value, $this->getContent()); + PHPUnit::assertStringContainsString((string) $value, $this->getContent()); return $this; } @@ -368,7 +368,7 @@ public function assertSeeInOrder(array $values) */ public function assertSeeText($value) { - PHPUnit::assertContains((string) $value, strip_tags($this->getContent())); + PHPUnit::assertStringContainsString((string) $value, strip_tags($this->getContent())); return $this; } @@ -394,7 +394,7 @@ public function assertSeeTextInOrder(array $values) */ public function assertDontSee($value) { - PHPUnit::assertNotContains((string) $value, $this->getContent()); + PHPUnit::assertStringNotContainsString((string) $value, $this->getContent()); return $this; } @@ -407,7 +407,7 @@ public function assertDontSee($value) */ public function assertDontSeeText($value) { - PHPUnit::assertNotContains((string) $value, strip_tags($this->getContent())); + PHPUnit::assertStringNotContainsString((string) $value, strip_tags($this->getContent())); return $this; } @@ -587,7 +587,7 @@ public function assertJsonStructure(array $structure = null, $responseData = nul foreach ($structure as $key => $value) { if (is_array($value) && $key === '*') { - PHPUnit::assertInternalType('array', $responseData); + PHPUnit::assertIsArray($responseData); foreach ($responseData as $responseDataItem) { $this->assertJsonStructure($structure['*'], $responseDataItem); @@ -737,7 +737,7 @@ public function assertViewIs($value) { $this->ensureResponseHasView(); - PHPUnit::assertEquals($value, $this->original->getName()); + PHPUnit::assertEquals($value, $this->original->name()); return $this; } @@ -760,11 +760,11 @@ public function assertViewHas($key, $value = null) if (is_null($value)) { PHPUnit::assertArrayHasKey($key, $this->original->getData()); } elseif ($value instanceof Closure) { - PHPUnit::assertTrue($value($this->original->$key)); + PHPUnit::assertTrue($value($this->original->getData()[$key])); } elseif ($value instanceof Model) { - PHPUnit::assertTrue($value->is($this->original->$key)); + PHPUnit::assertTrue($value->is($this->original->getData()[$key])); } else { - PHPUnit::assertEquals($value, $this->original->$key); + PHPUnit::assertEquals($value, $this->original->getData()[$key]); } return $this; @@ -799,7 +799,7 @@ public function viewData($key) { $this->ensureResponseHasView(); - return $this->original->$key; + return $this->original->getData()[$key]; } /** @@ -915,7 +915,7 @@ public function assertSessionDoesntHaveErrors($keys = [], $format = null, $error $keys = (array) $keys; if (empty($keys)) { - return $this->assertSessionMissing('errors'); + return $this->assertSessionHasNoErrors(); } if (is_null($this->session()->get('errors'))) { diff --git a/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php b/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php index 123df898f2..068f48a169 100644 --- a/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php +++ b/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php @@ -1,9 +1,9 @@ get('app.debug')) { - report($exception); - - return $path; - } else { - throw $exception; - } - } - - return new HtmlString($manifestDirectory.$manifest[$path]); + return app(Mix::class)(...func_get_args()); } } @@ -633,7 +589,7 @@ function mix($path, $manifestDirectory = '') */ function now($tz = null) { - return Carbon::now($tz); + return Date::now($tz); } } @@ -703,7 +659,7 @@ function redirect($to = null, $status = 302, $headers = [], $secure = null) /** * Report an exception. * - * @param \Exception $exception + * @param \Throwable $exception * @return void */ function report($exception) @@ -766,11 +722,12 @@ function rescue(callable $callback, $rescue = null) * Resolve a service from the container. * * @param string $name + * @param array $parameters * @return mixed */ - function resolve($name) + function resolve($name, array $parameters = []) { - return app($name); + return app($name, $parameters); } } @@ -896,7 +853,7 @@ function storage_path($path = '') */ function today($tz = null) { - return Carbon::today($tz); + return Date::today($tz); } } @@ -996,7 +953,7 @@ function validator(array $data = [], array $rules = [], array $messages = [], ar * Get the evaluated view contents for the given view. * * @param string $view - * @param array $data + * @param \Illuminate\Contracts\Support\Arrayable|array $data * @param array $mergeData * @return \Illuminate\View\View|\Illuminate\Contracts\View\Factory */ diff --git a/vendor/laravel/framework/src/Illuminate/Hashing/HashServiceProvider.php b/vendor/laravel/framework/src/Illuminate/Hashing/HashServiceProvider.php index 435e54b034..123b25fa8f 100755 --- a/vendor/laravel/framework/src/Illuminate/Hashing/HashServiceProvider.php +++ b/vendor/laravel/framework/src/Illuminate/Hashing/HashServiceProvider.php @@ -3,16 +3,10 @@ namespace Illuminate\Hashing; use Illuminate\Support\ServiceProvider; +use Illuminate\Contracts\Support\DeferrableProvider; -class HashServiceProvider extends ServiceProvider +class HashServiceProvider extends ServiceProvider implements DeferrableProvider { - /** - * Indicates if loading of the provider is deferred. - * - * @var bool - */ - protected $defer = true; - /** * Register the service provider. * diff --git a/vendor/laravel/framework/src/Illuminate/Hashing/composer.json b/vendor/laravel/framework/src/Illuminate/Hashing/composer.json index ed9e20e8c0..4da36baadb 100755 --- a/vendor/laravel/framework/src/Illuminate/Hashing/composer.json +++ b/vendor/laravel/framework/src/Illuminate/Hashing/composer.json @@ -15,8 +15,8 @@ ], "require": { "php": "^7.1.3", - "illuminate/contracts": "5.7.*", - "illuminate/support": "5.7.*" + "illuminate/contracts": "5.8.*", + "illuminate/support": "5.8.*" }, "autoload": { "psr-4": { @@ -25,7 +25,7 @@ }, "extra": { "branch-alias": { - "dev-master": "5.7-dev" + "dev-master": "5.8-dev" } }, "config": { diff --git a/vendor/laravel/framework/src/Illuminate/Http/Concerns/InteractsWithInput.php b/vendor/laravel/framework/src/Illuminate/Http/Concerns/InteractsWithInput.php index b1e9b830ba..61995d26f3 100644 --- a/vendor/laravel/framework/src/Illuminate/Http/Concerns/InteractsWithInput.php +++ b/vendor/laravel/framework/src/Illuminate/Http/Concerns/InteractsWithInput.php @@ -309,9 +309,7 @@ public function allFiles() { $files = $this->files->all(); - return $this->convertedFiles - ? $this->convertedFiles - : $this->convertedFiles = $this->convertUploadedFiles($files); + return $this->convertedFiles = $this->convertedFiles ?? $this->convertUploadedFiles($files); } /** diff --git a/vendor/laravel/framework/src/Illuminate/Http/FileHelpers.php b/vendor/laravel/framework/src/Illuminate/Http/FileHelpers.php index f69fc36461..11af84817a 100644 --- a/vendor/laravel/framework/src/Illuminate/Http/FileHelpers.php +++ b/vendor/laravel/framework/src/Illuminate/Http/FileHelpers.php @@ -33,16 +33,6 @@ public function extension() return $this->guessExtension(); } - /** - * Get the file's extension supplied by the client. - * - * @return string - */ - public function clientExtension() - { - return $this->guessClientExtension(); - } - /** * Get a filename for the file. * diff --git a/vendor/laravel/framework/src/Illuminate/Http/RedirectResponse.php b/vendor/laravel/framework/src/Illuminate/Http/RedirectResponse.php index 1fcfe9478d..1a7ec144ac 100755 --- a/vendor/laravel/framework/src/Illuminate/Http/RedirectResponse.php +++ b/vendor/laravel/framework/src/Illuminate/Http/RedirectResponse.php @@ -37,7 +37,7 @@ class RedirectResponse extends BaseRedirectResponse * * @param string|array $key * @param mixed $value - * @return \Illuminate\Http\RedirectResponse + * @return $this */ public function with($key, $value = null) { @@ -68,7 +68,7 @@ public function withCookies(array $cookies) /** * Flash an array of input to the session. * - * @param array $input + * @param array|null $input * @return $this */ public function withInput(array $input = null) @@ -114,7 +114,7 @@ public function onlyInput() /** * Flash an array of input to the session. * - * @return \Illuminate\Http\RedirectResponse + * @return $this */ public function exceptInput() { @@ -217,7 +217,7 @@ public function setSession(SessionStore $session) * * @param string $method * @param array $parameters - * @return $this + * @return mixed * * @throws \BadMethodCallException */ diff --git a/vendor/laravel/framework/src/Illuminate/Http/Request.php b/vendor/laravel/framework/src/Illuminate/Http/Request.php index db967abb68..611c672860 100755 --- a/vendor/laravel/framework/src/Illuminate/Http/Request.php +++ b/vendor/laravel/framework/src/Illuminate/Http/Request.php @@ -184,8 +184,10 @@ public function segments() */ public function is(...$patterns) { + $path = $this->decodedPath(); + foreach ($patterns as $pattern) { - if (Str::is($pattern, $this->decodedPath())) { + if (Str::is($pattern, $path)) { return true; } } @@ -267,7 +269,7 @@ public function secure() /** * Get the client IP address. * - * @return string + * @return string|null */ public function ip() { @@ -298,7 +300,7 @@ public function userAgent() * Merge new input into the current request's input array. * * @param array $input - * @return \Illuminate\Http\Request + * @return $this */ public function merge(array $input) { @@ -311,7 +313,7 @@ public function merge(array $input) * Replace the input for the current request. * * @param array $input - * @return \Illuminate\Http\Request + * @return $this */ public function replace(array $input) { @@ -393,6 +395,8 @@ public static function createFrom(self $from, $to = null) $from->getContent() ); + $request->headers->replace($from->headers->all()); + $request->setJson($from->json()); if ($session = $from->getSession()) { @@ -410,7 +414,7 @@ public static function createFrom(self $from, $to = null) * Create an Illuminate request from a Symfony instance. * * @param \Symfony\Component\HttpFoundation\Request $request - * @return \Illuminate\Http\Request + * @return static */ public static function createFromBase(SymfonyRequest $request) { @@ -420,16 +424,18 @@ public static function createFromBase(SymfonyRequest $request) $content = $request->content; - $request = (new static)->duplicate( + $newRequest = (new static)->duplicate( $request->query->all(), $request->request->all(), $request->attributes->all(), $request->cookies->all(), $request->files->all(), $request->server->all() ); - $request->content = $content; + $newRequest->headers->replace($request->headers->all()); - $request->request = $request->getInputSource(); + $newRequest->content = $content; - return $request; + $newRequest->request = $newRequest->getInputSource(); + + return $newRequest; } /** diff --git a/vendor/laravel/framework/src/Illuminate/Http/Resources/ConditionallyLoadsAttributes.php b/vendor/laravel/framework/src/Illuminate/Http/Resources/ConditionallyLoadsAttributes.php index 4315fad095..0f6e188991 100644 --- a/vendor/laravel/framework/src/Illuminate/Http/Resources/ConditionallyLoadsAttributes.php +++ b/vendor/laravel/framework/src/Illuminate/Http/Resources/ConditionallyLoadsAttributes.php @@ -16,8 +16,6 @@ protected function filter($data) { $index = -1; - $numericKeys = array_values($data) === $data; - foreach ($data as $key => $value) { $index++; @@ -28,7 +26,10 @@ protected function filter($data) } if (is_numeric($key) && $value instanceof MergeValue) { - return $this->mergeData($data, $index, $this->filter($value->data), $numericKeys); + return $this->mergeData( + $data, $index, $this->filter($value->data), + array_values($value->data) === $value->data + ); } if ($value instanceof self && is_null($value->resource)) { @@ -36,7 +37,7 @@ protected function filter($data) } } - return $this->removeMissingValues($data, $numericKeys); + return $this->removeMissingValues($data); } /** @@ -54,7 +55,7 @@ protected function mergeData($data, $index, $merge, $numericKeys) return $this->removeMissingValues(array_merge( array_merge(array_slice($data, 0, $index, true), $merge), $this->filter(array_values(array_slice($data, $index + 1, null, true))) - ), $numericKeys); + )); } return $this->removeMissingValues(array_slice($data, 0, $index, true) + @@ -66,22 +67,28 @@ protected function mergeData($data, $index, $merge, $numericKeys) * Remove the missing values from the filtered data. * * @param array $data - * @param bool $numericKeys * @return array */ - protected function removeMissingValues($data, $numericKeys = false) + protected function removeMissingValues($data) { + $numericKeys = true; + foreach ($data as $key => $value) { if (($value instanceof PotentiallyMissing && $value->isMissing()) || ($value instanceof self && $value->resource instanceof PotentiallyMissing && $value->isMissing())) { unset($data[$key]); + } else { + $numericKeys = $numericKeys && is_numeric($key); } } - return ! empty($data) && is_numeric(array_keys($data)[0]) - ? array_values($data) : $data; + if (property_exists($this, 'preserveKeys') && $this->preserveKeys === true) { + return $data; + } + + return $numericKeys ? array_values($data) : $data; } /** @@ -160,7 +167,7 @@ protected function whenLoaded($relationship, $value = null, $default = null) } if ($this->resource->{$relationship} === null) { - return null; + return; } return value($value); diff --git a/vendor/laravel/framework/src/Illuminate/Http/Resources/Json/JsonResource.php b/vendor/laravel/framework/src/Illuminate/Http/Resources/Json/JsonResource.php index 832607a9da..1228c9babe 100644 --- a/vendor/laravel/framework/src/Illuminate/Http/Resources/Json/JsonResource.php +++ b/vendor/laravel/framework/src/Illuminate/Http/Resources/Json/JsonResource.php @@ -75,7 +75,11 @@ public static function make(...$parameters) */ public static function collection($resource) { - return new AnonymousResourceCollection($resource, static::class); + return tap(new AnonymousResourceCollection($resource, static::class), function ($collection) { + if (property_exists(static::class, 'preserveKeys')) { + $collection->preserveKeys = (new static([]))->preserveKeys === true; + } + }); } /** diff --git a/vendor/laravel/framework/src/Illuminate/Http/UploadedFile.php b/vendor/laravel/framework/src/Illuminate/Http/UploadedFile.php index 61b7c1252f..7962209b49 100644 --- a/vendor/laravel/framework/src/Illuminate/Http/UploadedFile.php +++ b/vendor/laravel/framework/src/Illuminate/Http/UploadedFile.php @@ -103,6 +103,16 @@ public function get() return file_get_contents($this->getPathname()); } + /** + * Get the file's extension supplied by the client. + * + * @return string + */ + public function clientExtension() + { + return $this->guessClientExtension(); + } + /** * Create a new file instance from a base instance. * diff --git a/vendor/laravel/framework/src/Illuminate/Http/composer.json b/vendor/laravel/framework/src/Illuminate/Http/composer.json index 69eb15562d..ed8be0bba6 100755 --- a/vendor/laravel/framework/src/Illuminate/Http/composer.json +++ b/vendor/laravel/framework/src/Illuminate/Http/composer.json @@ -15,10 +15,11 @@ ], "require": { "php": "^7.1.3", - "illuminate/session": "5.7.*", - "illuminate/support": "5.7.*", - "symfony/http-foundation": "^4.1", - "symfony/http-kernel": "^4.1" + "ext-json": "*", + "illuminate/session": "5.8.*", + "illuminate/support": "5.8.*", + "symfony/http-foundation": "^4.2", + "symfony/http-kernel": "^4.2" }, "autoload": { "psr-4": { @@ -27,7 +28,7 @@ }, "extra": { "branch-alias": { - "dev-master": "5.7-dev" + "dev-master": "5.8-dev" } }, "config": { diff --git a/vendor/laravel/framework/src/Illuminate/Log/LogManager.php b/vendor/laravel/framework/src/Illuminate/Log/LogManager.php index a6fe765b4d..d636f869f0 100644 --- a/vendor/laravel/framework/src/Illuminate/Log/LogManager.php +++ b/vendor/laravel/framework/src/Illuminate/Log/LogManager.php @@ -24,7 +24,7 @@ class LogManager implements LoggerInterface /** * The application instance. * - * @var \Illuminate\Foundation\Application + * @var \Illuminate\Contracts\Foundation\Application */ protected $app; @@ -45,7 +45,7 @@ class LogManager implements LoggerInterface /** * Create a new Log manager instance. * - * @param \Illuminate\Foundation\Application $app + * @param \Illuminate\Contracts\Foundation\Application $app * @return void */ public function __construct($app) @@ -292,7 +292,8 @@ protected function createSyslogDriver(array $config) { return new Monolog($this->parseChannel($config), [ $this->prepareHandler(new SyslogHandler( - $this->app['config']['app.name'], $config['facility'] ?? LOG_USER, $this->level($config) + Str::snake($this->app['config']['app.name'], '-'), + $config['facility'] ?? LOG_USER, $this->level($config) ), $config), ]); } @@ -330,6 +331,7 @@ protected function createMonologDriver(array $config) } $with = array_merge( + ['level' => $this->level($config)], $config['with'] ?? [], $config['handler_with'] ?? [] ); diff --git a/vendor/laravel/framework/src/Illuminate/Log/composer.json b/vendor/laravel/framework/src/Illuminate/Log/composer.json index f0af69bd44..3e3b22184b 100755 --- a/vendor/laravel/framework/src/Illuminate/Log/composer.json +++ b/vendor/laravel/framework/src/Illuminate/Log/composer.json @@ -15,8 +15,8 @@ ], "require": { "php": "^7.1.3", - "illuminate/contracts": "5.7.*", - "illuminate/support": "5.7.*", + "illuminate/contracts": "5.8.*", + "illuminate/support": "5.8.*", "monolog/monolog": "^1.11" }, "autoload": { @@ -26,7 +26,7 @@ }, "extra": { "branch-alias": { - "dev-master": "5.7-dev" + "dev-master": "5.8-dev" } }, "config": { diff --git a/vendor/laravel/framework/src/Illuminate/Mail/MailServiceProvider.php b/vendor/laravel/framework/src/Illuminate/Mail/MailServiceProvider.php index 8345eff7e0..0f9e0feb96 100755 --- a/vendor/laravel/framework/src/Illuminate/Mail/MailServiceProvider.php +++ b/vendor/laravel/framework/src/Illuminate/Mail/MailServiceProvider.php @@ -7,16 +7,10 @@ use Illuminate\Support\Str; use Swift_DependencyContainer; use Illuminate\Support\ServiceProvider; +use Illuminate\Contracts\Support\DeferrableProvider; -class MailServiceProvider extends ServiceProvider +class MailServiceProvider extends ServiceProvider implements DeferrableProvider { - /** - * Indicates if loading of the provider is deferred. - * - * @var bool - */ - protected $defer = true; - /** * Register the service provider. * diff --git a/vendor/laravel/framework/src/Illuminate/Mail/Mailable.php b/vendor/laravel/framework/src/Illuminate/Mail/Mailable.php index 05ed8906bf..cd2047e034 100644 --- a/vendor/laravel/framework/src/Illuminate/Mail/Mailable.php +++ b/vendor/laravel/framework/src/Illuminate/Mail/Mailable.php @@ -147,10 +147,10 @@ class Mailable implements MailableContract, Renderable */ public function send(MailerContract $mailer) { - $this->withLocale($this->locale, function () use ($mailer) { + return $this->withLocale($this->locale, function () use ($mailer) { Container::getInstance()->call([$this, 'build']); - $mailer->send($this->buildView(), $this->buildViewData(), function ($message) { + return $mailer->send($this->buildView(), $this->buildViewData(), function ($message) { $this->buildFrom($message) ->buildRecipients($message) ->buildSubject($message) diff --git a/vendor/laravel/framework/src/Illuminate/Mail/Mailer.php b/vendor/laravel/framework/src/Illuminate/Mail/Mailer.php index 7455540bcf..9869b171c3 100755 --- a/vendor/laravel/framework/src/Illuminate/Mail/Mailer.php +++ b/vendor/laravel/framework/src/Illuminate/Mail/Mailer.php @@ -271,7 +271,8 @@ public function send($view, array $data = [], $callback = null) protected function sendMailable(MailableContract $mailable) { return $mailable instanceof ShouldQueue - ? $mailable->queue($this->queue) : $mailable->send($this); + ? $mailable->queue($this->queue) + : $mailable->send($this); } /** @@ -533,13 +534,13 @@ protected function forceReconnection() } /** - * Get the view factory instance. + * Get the array of failed recipients. * - * @return \Illuminate\Contracts\View\Factory + * @return array */ - public function getViewFactory() + public function failures() { - return $this->views; + return $this->failedRecipients; } /** @@ -553,13 +554,13 @@ public function getSwiftMailer() } /** - * Get the array of failed recipients. + * Get the view factory instance. * - * @return array + * @return \Illuminate\Contracts\View\Factory */ - public function failures() + public function getViewFactory() { - return $this->failedRecipients; + return $this->views; } /** diff --git a/vendor/laravel/framework/src/Illuminate/Mail/Markdown.php b/vendor/laravel/framework/src/Illuminate/Mail/Markdown.php index ab9ed3ec7d..d25c599371 100644 --- a/vendor/laravel/framework/src/Illuminate/Mail/Markdown.php +++ b/vendor/laravel/framework/src/Illuminate/Mail/Markdown.php @@ -66,7 +66,7 @@ public function render($view, array $data = [], $inliner = null) } /** - * Render the Markdown template into HTML. + * Render the Markdown template into text. * * @param string $view * @param array $data @@ -77,7 +77,7 @@ public function renderText($view, array $data = []) $this->view->flushFinderCache(); $contents = $this->view->replaceNamespace( - 'mail', $this->markdownComponentPaths() + 'mail', $this->textComponentPaths() )->make($view, $data)->render(); return new HtmlString( @@ -111,14 +111,14 @@ public function htmlComponentPaths() } /** - * Get the Markdown component paths. + * Get the text component paths. * * @return array */ - public function markdownComponentPaths() + public function textComponentPaths() { return array_map(function ($path) { - return $path.'/markdown'; + return $path.'/text'; }, $this->componentPaths()); } diff --git a/vendor/laravel/framework/src/Illuminate/Mail/PendingMail.php b/vendor/laravel/framework/src/Illuminate/Mail/PendingMail.php index 512eaafc31..017ccb9767 100644 --- a/vendor/laravel/framework/src/Illuminate/Mail/PendingMail.php +++ b/vendor/laravel/framework/src/Illuminate/Mail/PendingMail.php @@ -3,14 +3,16 @@ namespace Illuminate\Mail; use Illuminate\Contracts\Queue\ShouldQueue; +use Illuminate\Contracts\Mail\Mailer as MailerContract; use Illuminate\Contracts\Translation\HasLocalePreference; +use Illuminate\Contracts\Mail\Mailable as MailableContract; class PendingMail { /** * The mailer instance. * - * @var \Illuminate\Mail\Mailer + * @var \Illuminate\Contracts\Mail\Mailer */ protected $mailer; @@ -45,10 +47,10 @@ class PendingMail /** * Create a new mailable mailer instance. * - * @param \Illuminate\Mail\Mailer $mailer + * @param \Illuminate\Contracts\Mail\Mailer $mailer * @return void */ - public function __construct(Mailer $mailer) + public function __construct(MailerContract $mailer) { $this->mailer = $mailer; } @@ -112,10 +114,11 @@ public function bcc($users) /** * Send a new mailable message instance. * - * @param \Illuminate\Mail\Mailable $mailable + * @param \Illuminate\Contracts\Mail\Mailable $mailable + * * @return mixed */ - public function send(Mailable $mailable) + public function send(MailableContract $mailable) { if ($mailable instanceof ShouldQueue) { return $this->queue($mailable); @@ -127,10 +130,10 @@ public function send(Mailable $mailable) /** * Send a mailable message immediately. * - * @param \Illuminate\Mail\Mailable $mailable + * @param \Illuminate\Contracts\Mail\Mailable $mailable; * @return mixed */ - public function sendNow(Mailable $mailable) + public function sendNow(MailableContract $mailable) { return $this->mailer->send($this->fill($mailable)); } @@ -138,10 +141,10 @@ public function sendNow(Mailable $mailable) /** * Push the given mailable onto the queue. * - * @param \Illuminate\Mail\Mailable $mailable + * @param \Illuminate\Contracts\Mail\Mailable $mailable; * @return mixed */ - public function queue(Mailable $mailable) + public function queue(MailableContract $mailable) { $mailable = $this->fill($mailable); @@ -156,10 +159,10 @@ public function queue(Mailable $mailable) * Deliver the queued message after the given delay. * * @param \DateTimeInterface|\DateInterval|int $delay - * @param \Illuminate\Mail\Mailable $mailable + * @param \Illuminate\Contracts\Mail\Mailable $mailable; * @return mixed */ - public function later($delay, Mailable $mailable) + public function later($delay, MailableContract $mailable) { return $this->mailer->later($delay, $this->fill($mailable)); } @@ -167,10 +170,10 @@ public function later($delay, Mailable $mailable) /** * Populate the mailable with the addresses. * - * @param \Illuminate\Mail\Mailable $mailable + * @param \Illuminate\Contracts\Mail\Mailable $mailable; * @return \Illuminate\Mail\Mailable */ - protected function fill(Mailable $mailable) + protected function fill(MailableContract $mailable) { return $mailable->to($this->to) ->cc($this->cc) diff --git a/vendor/laravel/framework/src/Illuminate/Mail/SendQueuedMailable.php b/vendor/laravel/framework/src/Illuminate/Mail/SendQueuedMailable.php index e9e256d104..0c6514421d 100644 --- a/vendor/laravel/framework/src/Illuminate/Mail/SendQueuedMailable.php +++ b/vendor/laravel/framework/src/Illuminate/Mail/SendQueuedMailable.php @@ -10,7 +10,7 @@ class SendQueuedMailable /** * The mailable message instance. * - * @var \Illuminate\Mail\Mailable + * @var \Illuminate\Contracts\Mail\Mailable */ public $mailable; diff --git a/vendor/laravel/framework/src/Illuminate/Mail/Transport/LogTransport.php b/vendor/laravel/framework/src/Illuminate/Mail/Transport/LogTransport.php index 273fb782e4..fb796d57f4 100644 --- a/vendor/laravel/framework/src/Illuminate/Mail/Transport/LogTransport.php +++ b/vendor/laravel/framework/src/Illuminate/Mail/Transport/LogTransport.php @@ -56,4 +56,14 @@ protected function getMimeEntityString(Swift_Mime_SimpleMimeEntity $entity) return $string; } + + /** + * Get the logger for the LogTransport instance. + * + * @return \Psr\Log\LoggerInterface + */ + public function logger() + { + return $this->logger; + } } diff --git a/vendor/laravel/framework/src/Illuminate/Mail/Transport/SesTransport.php b/vendor/laravel/framework/src/Illuminate/Mail/Transport/SesTransport.php index 00e92bc5e1..0dc8584a4e 100644 --- a/vendor/laravel/framework/src/Illuminate/Mail/Transport/SesTransport.php +++ b/vendor/laravel/framework/src/Illuminate/Mail/Transport/SesTransport.php @@ -59,6 +59,16 @@ public function send(Swift_Mime_SimpleMessage $message, &$failedRecipients = nul return $this->numberOfRecipients($message); } + /** + * Get the Amazon SES client for the SesTransport instance. + * + * @return \Aws\Ses\SesClient + */ + public function ses() + { + return $this->ses; + } + /** * Get the transmission options being used by the transport. * diff --git a/vendor/laravel/framework/src/Illuminate/Mail/TransportManager.php b/vendor/laravel/framework/src/Illuminate/Mail/TransportManager.php index 5ccfb3e54a..b0e5f46e42 100644 --- a/vendor/laravel/framework/src/Illuminate/Mail/TransportManager.php +++ b/vendor/laravel/framework/src/Illuminate/Mail/TransportManager.php @@ -11,6 +11,7 @@ use Swift_SmtpTransport as SmtpTransport; use Illuminate\Mail\Transport\LogTransport; use Illuminate\Mail\Transport\SesTransport; +use Postmark\Transport as PostmarkTransport; use Illuminate\Mail\Transport\ArrayTransport; use Illuminate\Mail\Transport\MailgunTransport; use Illuminate\Mail\Transport\MandrillTransport; @@ -153,6 +154,18 @@ protected function createSparkPostDriver() ); } + /** + * Create an instance of the Postmark Swift Transport driver. + * + * @return \Swift_Transport + */ + protected function createPostmarkDriver() + { + return new PostmarkTransport( + $this->app['config']->get('services.postmark.token') + ); + } + /** * Create an instance of the Log Swift Transport driver. * diff --git a/vendor/laravel/framework/src/Illuminate/Mail/composer.json b/vendor/laravel/framework/src/Illuminate/Mail/composer.json index d07f51359d..c04704a12e 100755 --- a/vendor/laravel/framework/src/Illuminate/Mail/composer.json +++ b/vendor/laravel/framework/src/Illuminate/Mail/composer.json @@ -15,10 +15,11 @@ ], "require": { "php": "^7.1.3", + "ext-json": "*", "erusev/parsedown": "^1.7", - "illuminate/container": "5.7.*", - "illuminate/contracts": "5.7.*", - "illuminate/support": "5.7.*", + "illuminate/container": "5.8.*", + "illuminate/contracts": "5.8.*", + "illuminate/support": "5.8.*", "psr/log": "^1.0", "swiftmailer/swiftmailer": "^6.0", "tijsverkoyen/css-to-inline-styles": "^2.2.1" @@ -30,12 +31,13 @@ }, "extra": { "branch-alias": { - "dev-master": "5.7-dev" + "dev-master": "5.8-dev" } }, "suggest": { "aws/aws-sdk-php": "Required to use the SES mail driver (^3.0).", - "guzzlehttp/guzzle": "Required to use the Mailgun and Mandrill mail drivers (^6.0)." + "guzzlehttp/guzzle": "Required to use the Mailgun and Mandrill mail drivers (^6.0).", + "wildbit/swiftmailer-postmark": "Required to use Postmark mail driver (^3.0)." }, "config": { "sort-packages": true diff --git a/vendor/laravel/framework/src/Illuminate/Mail/resources/views/html/button.blade.php b/vendor/laravel/framework/src/Illuminate/Mail/resources/views/html/button.blade.php index 9d14d9b161..512c1d8c77 100644 --- a/vendor/laravel/framework/src/Illuminate/Mail/resources/views/html/button.blade.php +++ b/vendor/laravel/framework/src/Illuminate/Mail/resources/views/html/button.blade.php @@ -1,10 +1,10 @@ - +