diff --git a/.env.example.complete b/.env.example.complete index 829a7509b..c4c3f0b85 100644 --- a/.env.example.complete +++ b/.env.example.complete @@ -89,7 +89,7 @@ REDIS_SERVERS=127.0.0.1:6379:0 # Queue driver to use # Queue not really currently used but may be configurable in the future. # Would advise not to change this for now. -QUEUE_DRIVER=sync +QUEUE_CONNECTION=sync # Storage system to use # Can be 'local', 'local_secure' or 's3' diff --git a/.gitignore b/.gitignore index 1b53cbe7a..e5579e4a6 100644 --- a/.gitignore +++ b/.gitignore @@ -21,4 +21,5 @@ nbproject .buildpath .project .settings/ -webpack-stats.json \ No newline at end of file +webpack-stats.json +.phpunit.result.cache \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index 29727f488..10a5d1e6b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,9 +1,11 @@ -dist: trusty -sudo: false +dist: bionic language: php php: - - 7.0.20 - - 7.1.9 + - '7.2' + - '7.3' + +services: + - mysql cache: directories: @@ -21,8 +23,7 @@ before_script: - php artisan migrate --force -n --database=mysql_testing - php artisan db:seed --force -n --class=DummyContentSeeder --database=mysql_testing +script: vendor/bin/phpunit --configuration phpunit.xml + after_failure: - cat storage/logs/laravel.log - -script: - - phpunit diff --git a/app/Application.php b/app/Application.php index 8c56e9dac..97105e479 100644 --- a/app/Application.php +++ b/app/Application.php @@ -13,7 +13,12 @@ class Application extends \Illuminate\Foundation\Application */ public function configPath($path = '') { - return $this->basePath.DIRECTORY_SEPARATOR.'app'.DIRECTORY_SEPARATOR.'Config'.($path ? DIRECTORY_SEPARATOR.$path : $path); + return $this->basePath + . DIRECTORY_SEPARATOR + . 'app' + . DIRECTORY_SEPARATOR + . 'Config' + . ($path ? DIRECTORY_SEPARATOR.$path : $path); } } \ No newline at end of file diff --git a/app/Auth/Access/SocialAuthService.php b/app/Auth/Access/SocialAuthService.php index 0d46b9f88..9c8d1a81f 100644 --- a/app/Auth/Access/SocialAuthService.php +++ b/app/Auth/Access/SocialAuthService.php @@ -5,6 +5,7 @@ use BookStack\Auth\UserRepo; use BookStack\Exceptions\SocialDriverNotConfigured; use BookStack\Exceptions\SocialSignInAccountNotUsed; use BookStack\Exceptions\UserRegistrationException; +use Illuminate\Support\Str; use Laravel\Socialite\Contracts\Factory as Socialite; use Laravel\Socialite\Contracts\User as SocialUser; @@ -104,6 +105,7 @@ class SocialAuthService $socialAccount = $this->socialAccount->where('driver_id', '=', $socialId)->first(); $isLoggedIn = auth()->check(); $currentUser = user(); + $titleCaseDriver = Str::title($socialDriver); // When a user is not logged in and a matching SocialAccount exists, // Simply log the user into the application. @@ -117,26 +119,26 @@ class SocialAuthService if ($isLoggedIn && $socialAccount === null) { $this->fillSocialAccount($socialDriver, $socialUser); $currentUser->socialAccounts()->save($this->socialAccount); - session()->flash('success', trans('settings.users_social_connected', ['socialAccount' => title_case($socialDriver)])); + session()->flash('success', trans('settings.users_social_connected', ['socialAccount' => $titleCaseDriver])); return redirect($currentUser->getEditUrl()); } // When a user is logged in and the social account exists and is already linked to the current user. if ($isLoggedIn && $socialAccount !== null && $socialAccount->user->id === $currentUser->id) { - session()->flash('error', trans('errors.social_account_existing', ['socialAccount' => title_case($socialDriver)])); + session()->flash('error', trans('errors.social_account_existing', ['socialAccount' => $titleCaseDriver])); return redirect($currentUser->getEditUrl()); } // When a user is logged in, A social account exists but the users do not match. if ($isLoggedIn && $socialAccount !== null && $socialAccount->user->id != $currentUser->id) { - session()->flash('error', trans('errors.social_account_already_used_existing', ['socialAccount' => title_case($socialDriver)])); + session()->flash('error', trans('errors.social_account_already_used_existing', ['socialAccount' => $titleCaseDriver])); return redirect($currentUser->getEditUrl()); } // Otherwise let the user know this social account is not used by anyone. - $message = trans('errors.social_account_not_used', ['socialAccount' => title_case($socialDriver)]); + $message = trans('errors.social_account_not_used', ['socialAccount' => $titleCaseDriver]); if (setting('registration-enabled')) { - $message .= trans('errors.social_account_register_instructions', ['socialAccount' => title_case($socialDriver)]); + $message .= trans('errors.social_account_register_instructions', ['socialAccount' => $titleCaseDriver]); } throw new SocialSignInAccountNotUsed($message, '/login'); @@ -157,7 +159,7 @@ class SocialAuthService abort(404, trans('errors.social_driver_not_found')); } if (!$this->checkDriverConfigured($driver)) { - throw new SocialDriverNotConfigured(trans('errors.social_driver_not_configured', ['socialAccount' => title_case($socialDriver)])); + throw new SocialDriverNotConfigured(trans('errors.social_driver_not_configured', ['socialAccount' => Str::title($socialDriver)])); } return $driver; @@ -244,7 +246,7 @@ class SocialAuthService public function detachSocialAccount($socialDriver) { user()->socialAccounts()->where('driver', '=', $socialDriver)->delete(); - session()->flash('success', trans('settings.users_social_disconnected', ['socialAccount' => title_case($socialDriver)])); + session()->flash('success', trans('settings.users_social_disconnected', ['socialAccount' => Str::title($socialDriver)])); return redirect(user()->getEditUrl()); } diff --git a/app/Auth/Access/UserTokenService.php b/app/Auth/Access/UserTokenService.php index 34f3b2851..09a2f761b 100644 --- a/app/Auth/Access/UserTokenService.php +++ b/app/Auth/Access/UserTokenService.php @@ -5,6 +5,7 @@ use BookStack\Exceptions\UserTokenExpiredException; use BookStack\Exceptions\UserTokenNotFoundException; use Carbon\Carbon; use Illuminate\Database\Connection as Database; +use Illuminate\Support\Str; use stdClass; class UserTokenService @@ -73,9 +74,9 @@ class UserTokenService */ protected function generateToken() : string { - $token = str_random(24); + $token = Str::random(24); while ($this->tokenExists($token)) { - $token = str_random(25); + $token = Str::random(25); } return $token; } diff --git a/app/Auth/Permissions/PermissionsRepo.php b/app/Auth/Permissions/PermissionsRepo.php index 18d5089be..e7840ff76 100644 --- a/app/Auth/Permissions/PermissionsRepo.php +++ b/app/Auth/Permissions/PermissionsRepo.php @@ -3,6 +3,7 @@ use BookStack\Auth\Permissions; use BookStack\Auth\Role; use BookStack\Exceptions\PermissionsException; +use Illuminate\Support\Str; class PermissionsRepo { @@ -66,7 +67,7 @@ class PermissionsRepo $role->name = str_replace(' ', '-', strtolower($roleData['display_name'])); // Prevent duplicate names while ($this->role->where('name', '=', $role->name)->count() > 0) { - $role->name .= strtolower(str_random(2)); + $role->name .= strtolower(Str::random(2)); } $role->save(); diff --git a/app/Config/app.php b/app/Config/app.php index 88052e94c..b4a1076a9 100755 --- a/app/Config/app.php +++ b/app/Config/app.php @@ -57,6 +57,9 @@ return [ // Application Fallback Locale 'fallback_locale' => 'en', + // Faker Locale + 'faker_locale' => 'en_GB', + // Enable right-to-left text control. 'rtl' => false, @@ -72,10 +75,6 @@ return [ // Encryption cipher 'cipher' => 'AES-256-CBC', - // Logging configuration - // Options: single, daily, syslog, errorlog - 'log' => env('APP_LOGGING', 'single'), - // Application Services Provides 'providers' => [ @@ -137,6 +136,7 @@ return [ // Laravel 'App' => Illuminate\Support\Facades\App::class, + 'Arr' => Illuminate\Support\Arr::class, 'Artisan' => Illuminate\Support\Facades\Artisan::class, 'Auth' => Illuminate\Support\Facades\Auth::class, 'Blade' => Illuminate\Support\Facades\Blade::class, @@ -166,6 +166,7 @@ return [ 'Schema' => Illuminate\Support\Facades\Schema::class, 'Session' => Illuminate\Support\Facades\Session::class, 'Storage' => Illuminate\Support\Facades\Storage::class, + 'Str' => Illuminate\Support\Str::class, 'URL' => Illuminate\Support\Facades\URL::class, 'Validator' => Illuminate\Support\Facades\Validator::class, 'View' => Illuminate\Support\Facades\View::class, diff --git a/app/Config/auth.php b/app/Config/auth.php index 7bf1ae772..cd74c2739 100644 --- a/app/Config/auth.php +++ b/app/Config/auth.php @@ -36,6 +36,7 @@ return [ 'api' => [ 'driver' => 'token', 'provider' => 'users', + 'hash' => false, ], ], diff --git a/app/Config/broadcasting.php b/app/Config/broadcasting.php index 3d9eb78f9..7aaaa5693 100644 --- a/app/Config/broadcasting.php +++ b/app/Config/broadcasting.php @@ -24,9 +24,13 @@ return [ 'pusher' => [ 'driver' => 'pusher', - 'key' => env('PUSHER_KEY'), - 'secret' => env('PUSHER_SECRET'), + 'key' => env('PUSHER_APP_KEY'), + 'secret' => env('PUSHER_APP_SECRET'), 'app_id' => env('PUSHER_APP_ID'), + 'options' => [ + 'cluster' => env('PUSHER_APP_CLUSTER'), + 'useTLS' => true, + ], ], 'redis' => [ @@ -38,6 +42,11 @@ return [ 'driver' => 'log', ], + 'null' => [ + 'driver' => 'null', + ], + + ], ]; diff --git a/app/Config/cache.php b/app/Config/cache.php index 43f420457..6d8fa7ad7 100644 --- a/app/Config/cache.php +++ b/app/Config/cache.php @@ -62,6 +62,6 @@ return [ // Cache key prefix // Used to prevent collisions in shared cache systems. - 'prefix' => env('CACHE_PREFIX', 'bookstack'), + 'prefix' => env('CACHE_PREFIX', 'bookstack_cache'), ]; diff --git a/app/Config/database.php b/app/Config/database.php index 93a44854f..a98b46a2c 100644 --- a/app/Config/database.php +++ b/app/Config/database.php @@ -14,7 +14,7 @@ if (env('REDIS_SERVERS', false)) { $redisDefaults = ['host' => '127.0.0.1', 'port' => '6379', 'database' => '0', 'password' => null]; $redisServers = explode(',', trim(env('REDIS_SERVERS', '127.0.0.1:6379:0'), ',')); - $redisConfig = []; + $redisConfig = ['client' => 'predis']; $cluster = count($redisServers) > 1; if ($cluster) { @@ -59,14 +59,9 @@ return [ // Many of those shown here are unsupported by BookStack. 'connections' => [ - 'sqlite' => [ - 'driver' => 'sqlite', - 'database' => storage_path('database.sqlite'), - 'prefix' => '', - ], - 'mysql' => [ 'driver' => 'mysql', + 'url' => env('DATABASE_URL'), 'host' => $mysql_host, 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), @@ -76,43 +71,28 @@ return [ 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => '', + 'prefix_indexes' => true, 'strict' => false, 'engine' => null, + 'options' => extension_loaded('pdo_mysql') ? array_filter([ + PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), + ]) : [], ], 'mysql_testing' => [ 'driver' => 'mysql', + 'url' => env('TEST_DATABASE_URL'), 'host' => '127.0.0.1', 'database' => 'bookstack-test', 'username' => env('MYSQL_USER', 'bookstack-test'), 'password' => env('MYSQL_PASSWORD', 'bookstack-test'), - 'charset' => 'utf8', - 'collation' => 'utf8_unicode_ci', + 'charset' => 'utf8mb4', + 'collation' => 'utf8mb4_unicode_ci', 'prefix' => '', + 'prefix_indexes' => true, 'strict' => false, ], - 'pgsql' => [ - 'driver' => 'pgsql', - 'host' => env('DB_HOST', 'localhost'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'schema' => 'public', - ], - - 'sqlsrv' => [ - 'driver' => 'sqlsrv', - 'host' => env('DB_HOST', 'localhost'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - ], - ], // Migration Repository Table diff --git a/app/Config/hashing.php b/app/Config/hashing.php new file mode 100644 index 000000000..edcc7c1da --- /dev/null +++ b/app/Config/hashing.php @@ -0,0 +1,37 @@ + 'bcrypt', + + // Bcrypt Options + // Here you may specify the configuration options that should be used when + // passwords are hashed using the Bcrypt algorithm. This will allow you + // to control the amount of time it takes to hash the given password. + 'bcrypt' => [ + 'rounds' => env('BCRYPT_ROUNDS', 10), + ], + + // Argon Options + // Here you may specify the configuration options that should be used when + // passwords are hashed using the Argon algorithm. These will allow you + // to control the amount of time it takes to hash the given password. + 'argon' => [ + 'memory' => 1024, + 'threads' => 2, + 'time' => 2, + ], + +]; \ No newline at end of file diff --git a/app/Config/logging.php b/app/Config/logging.php new file mode 100644 index 000000000..9c3218a01 --- /dev/null +++ b/app/Config/logging.php @@ -0,0 +1,82 @@ + env('LOG_CHANNEL', 'single'), + + // Log Channels + // Here you may configure the log channels for your application. Out of + // the box, Laravel uses the Monolog PHP logging library. This gives + // you a variety of powerful log handlers / formatters to utilize. + // Available Drivers: "single", "daily", "slack", "syslog", + // "errorlog", "monolog", + // "custom", "stack" + 'channels' => [ + 'stack' => [ + 'driver' => 'stack', + 'channels' => ['daily'], + 'ignore_exceptions' => false, + ], + + 'single' => [ + 'driver' => 'single', + 'path' => storage_path('logs/laravel.log'), + 'level' => 'debug', + 'days' => 14, + ], + + 'daily' => [ + 'driver' => 'daily', + 'path' => storage_path('logs/laravel.log'), + 'level' => 'debug', + 'days' => 7, + ], + + 'slack' => [ + 'driver' => 'slack', + 'url' => env('LOG_SLACK_WEBHOOK_URL'), + 'username' => 'Laravel Log', + 'emoji' => ':boom:', + 'level' => 'critical', + ], + + 'stderr' => [ + 'driver' => 'monolog', + 'handler' => StreamHandler::class, + 'with' => [ + 'stream' => 'php://stderr', + ], + ], + + 'syslog' => [ + 'driver' => 'syslog', + 'level' => 'debug', + ], + + 'errorlog' => [ + 'driver' => 'errorlog', + 'level' => 'debug', + ], + + 'null' => [ + 'driver' => 'monolog', + 'handler' => NullHandler::class, + ], + ], + +]; \ No newline at end of file diff --git a/app/Config/mail.php b/app/Config/mail.php index 49407bd8e..dfb41e7e6 100644 --- a/app/Config/mail.php +++ b/app/Config/mail.php @@ -46,4 +46,10 @@ return [ ], ], + // Log Channel + // If you are using the "log" driver, you may specify the logging channel + // if you prefer to keep mail messages separate from other log entries + // for simpler reading. Otherwise, the default channel will be used. + 'log_channel' => env('MAIL_LOG_CHANNEL'), + ]; diff --git a/app/Config/queue.php b/app/Config/queue.php index 721eac136..46f6962c5 100644 --- a/app/Config/queue.php +++ b/app/Config/queue.php @@ -12,11 +12,12 @@ return [ // Default driver to use for the queue // Options: null, sync, redis - 'default' => env('QUEUE_DRIVER', 'sync'), + 'default' => env('QUEUE_CONNECTION', 'sync'), // Queue connection configuration 'connections' => [ + 'sync' => [ 'driver' => 'sync', ], @@ -25,38 +26,15 @@ return [ 'driver' => 'database', 'table' => 'jobs', 'queue' => 'default', - 'expire' => 60, - ], - - 'beanstalkd' => [ - 'driver' => 'beanstalkd', - 'host' => 'localhost', - 'queue' => 'default', - 'ttr' => 60, - ], - - 'sqs' => [ - 'driver' => 'sqs', - 'key' => 'your-public-key', - 'secret' => 'your-secret-key', - 'queue' => 'your-queue-url', - 'region' => 'us-east-1', - ], - - 'iron' => [ - 'driver' => 'iron', - 'host' => 'mq-aws-us-east-1.iron.io', - 'token' => 'your-token', - 'project' => 'your-project-id', - 'queue' => 'your-queue-name', - 'encrypt' => true, + 'retry_after' => 90, ], 'redis' => [ 'driver' => 'redis', 'connection' => 'default', - 'queue' => 'default', - 'expire' => 60, + 'queue' => env('REDIS_QUEUE', 'default'), + 'retry_after' => 90, + 'block_for' => null, ], ], diff --git a/app/Config/services.php b/app/Config/services.php index 97cb71ddc..2136f8116 100644 --- a/app/Config/services.php +++ b/app/Config/services.php @@ -22,23 +22,6 @@ return [ // Callback URL for social authentication methods 'callback_url' => env('APP_URL', false), - 'mailgun' => [ - 'domain' => '', - 'secret' => '', - ], - - 'ses' => [ - 'key' => '', - 'secret' => '', - 'region' => 'us-east-1', - ], - - 'stripe' => [ - 'model' => \BookStack\Auth\User::class, - 'key' => '', - 'secret' => '', - ], - 'github' => [ 'client_id' => env('GITHUB_APP_ID', false), 'client_secret' => env('GITHUB_APP_SECRET', false), diff --git a/app/Config/session.php b/app/Config/session.php index bdb5e554b..37f1627bb 100644 --- a/app/Config/session.php +++ b/app/Config/session.php @@ -35,13 +35,18 @@ return [ // Session database table, if database driver is in use 'table' => 'sessions', + // Session Cache Store + // When using the "apc" or "memcached" session drivers, you may specify a + // cache store that should be used for these sessions. This value must + // correspond with one of the application's configured cache stores. + 'store' => null, + // Session Sweeping Lottery // Some session drivers must manually sweep their storage location to get // rid of old sessions from storage. Here are the chances that it will // happen on a given request. By default, the odds are 2 out of 100. 'lottery' => [2, 100], - // Session Cookie Name // Here you may change the name of the cookie used to identify a session // instance by ID. The name specified here will get used every time a diff --git a/app/Entities/BreadcrumbsViewComposer.php b/app/Entities/BreadcrumbsViewComposer.php index 97ddbc2dc..e46d54ec2 100644 --- a/app/Entities/BreadcrumbsViewComposer.php +++ b/app/Entities/BreadcrumbsViewComposer.php @@ -23,8 +23,9 @@ class BreadcrumbsViewComposer public function compose(View $view) { $crumbs = $view->getData()['crumbs']; - if (array_first($crumbs) instanceof Book) { - $shelf = $this->entityContextManager->getContextualShelfForBook(array_first($crumbs)); + $firstCrumb = $crumbs[0] ?? null; + if ($firstCrumb instanceof Book) { + $shelf = $this->entityContextManager->getContextualShelfForBook($firstCrumb); if ($shelf) { array_unshift($crumbs, $shelf); $view->with('crumbs', $crumbs); diff --git a/app/Entities/SearchService.php b/app/Entities/SearchService.php index 9e7cfdd0c..ee9b87786 100644 --- a/app/Entities/SearchService.php +++ b/app/Entities/SearchService.php @@ -6,6 +6,7 @@ use Illuminate\Database\Eloquent\Builder as EloquentBuilder; use Illuminate\Database\Query\Builder; use Illuminate\Database\Query\JoinClause; use Illuminate\Support\Collection; +use Illuminate\Support\Str; class SearchService { @@ -210,7 +211,7 @@ class SearchService // Handle filters foreach ($terms['filters'] as $filterTerm => $filterValue) { - $functionName = camel_case('filter_' . $filterTerm); + $functionName = Str::camel('filter_' . $filterTerm); if (method_exists($this, $functionName)) { $this->$functionName($entitySelect, $entity, $filterValue); } @@ -514,7 +515,7 @@ class SearchService protected function filterSortBy(EloquentBuilder $query, Entity $model, $input) { - $functionName = camel_case('sort_by_' . $input); + $functionName = Str::camel('sort_by_' . $input); if (method_exists($this, $functionName)) { $this->$functionName($query, $model); } diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php index c411f2363..3b9738835 100644 --- a/app/Http/Controllers/Auth/RegisterController.php +++ b/app/Http/Controllers/Auth/RegisterController.php @@ -18,6 +18,8 @@ use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Illuminate\Http\Response; use Illuminate\Routing\Redirector; +use Illuminate\Support\Facades\Hash; +use Illuminate\Support\Str; use Laravel\Socialite\Contracts\User as SocialUser; use Validator; @@ -77,7 +79,7 @@ class RegisterController extends Controller return Validator::make($data, [ 'name' => 'required|min:2|max:255', 'email' => 'required|email|max:255|unique:users', - 'password' => 'required|min:6', + 'password' => 'required|min:8', ]); } @@ -129,7 +131,7 @@ class RegisterController extends Controller return User::create([ 'name' => $data['name'], 'email' => $data['email'], - 'password' => bcrypt($data['password']), + 'password' => Hash::make($data['password']), ]); } @@ -261,7 +263,7 @@ class RegisterController extends Controller $userData = [ 'name' => $socialUser->getName(), 'email' => $socialUser->getEmail(), - 'password' => str_random(30) + 'password' => Str::random(30) ]; return $this->registerUser($userData, $socialAccount, $emailVerified); } diff --git a/app/Http/Controllers/Auth/ResetPasswordController.php b/app/Http/Controllers/Auth/ResetPasswordController.php index 56f1cf026..d7005b739 100644 --- a/app/Http/Controllers/Auth/ResetPasswordController.php +++ b/app/Http/Controllers/Auth/ResetPasswordController.php @@ -4,6 +4,7 @@ namespace BookStack\Http\Controllers\Auth; use BookStack\Http\Controllers\Controller; use Illuminate\Foundation\Auth\ResetsPasswords; +use Illuminate\Http\Request; class ResetPasswordController extends Controller { @@ -36,10 +37,11 @@ class ResetPasswordController extends Controller /** * Get the response for a successful password reset. * - * @param string $response + * @param Request $request + * @param string $response * @return \Illuminate\Http\Response */ - protected function sendResetResponse($response) + protected function sendResetResponse(Request $request, $response) { $message = trans('auth.reset_password_success'); session()->flash('success', $message); diff --git a/app/Http/Controllers/Auth/UserInviteController.php b/app/Http/Controllers/Auth/UserInviteController.php index 5d9373f45..cfeb69648 100644 --- a/app/Http/Controllers/Auth/UserInviteController.php +++ b/app/Http/Controllers/Auth/UserInviteController.php @@ -62,7 +62,7 @@ class UserInviteController extends Controller public function setPassword(string $token, Request $request) { $this->validate($request, [ - 'password' => 'required|min:6' + 'password' => 'required|min:8' ]); try { diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index c9d2560ba..156256cb9 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -8,6 +8,7 @@ use BookStack\Exceptions\UserUpdateException; use BookStack\Uploads\ImageRepo; use Illuminate\Http\Request; use Illuminate\Http\Response; +use Illuminate\Support\Str; class UserController extends Controller { @@ -92,7 +93,7 @@ class UserController extends Controller $user = $this->user->fill($request->all()); if ($authMethod === 'standard') { - $user->password = bcrypt($request->get('password', str_random(32))); + $user->password = bcrypt($request->get('password', Str::random(32))); } elseif ($authMethod === 'ldap') { $user->external_auth_id = $request->get('external_auth_id'); } diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index cd894de95..004f30139 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -12,7 +12,7 @@ class Kernel extends HttpKernel * @var array */ protected $middleware = [ - \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class, + \BookStack\Http\Middleware\CheckForMaintenanceMode::class, \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, \BookStack\Http\Middleware\TrimStrings::class, \BookStack\Http\Middleware\TrustProxies::class, @@ -29,6 +29,7 @@ class Kernel extends HttpKernel \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, \Illuminate\Session\Middleware\StartSession::class, \Illuminate\View\Middleware\ShareErrorsFromSession::class, + \Illuminate\Routing\Middleware\ThrottleRequests::class, \BookStack\Http\Middleware\VerifyCsrfToken::class, \Illuminate\Routing\Middleware\SubstituteBindings::class, \BookStack\Http\Middleware\Localization::class diff --git a/app/Http/Middleware/CheckForMaintenanceMode.php b/app/Http/Middleware/CheckForMaintenanceMode.php new file mode 100644 index 000000000..4b4bacd83 --- /dev/null +++ b/app/Http/Middleware/CheckForMaintenanceMode.php @@ -0,0 +1,17 @@ + 'FORWARDED', - Request::HEADER_X_FORWARDED_FOR => 'X_FORWARDED_FOR', - Request::HEADER_X_FORWARDED_HOST => 'X_FORWARDED_HOST', - Request::HEADER_X_FORWARDED_PORT => 'X_FORWARDED_PORT', - Request::HEADER_X_FORWARDED_PROTO => 'X_FORWARDED_PROTO', - ]; + protected $headers = Request::HEADER_X_FORWARDED_ALL; /** * Handle the request, Set the correct user-configured proxy information. diff --git a/app/Http/Middleware/VerifyCsrfToken.php b/app/Http/Middleware/VerifyCsrfToken.php index 291b8326f..1a29a2b1d 100644 --- a/app/Http/Middleware/VerifyCsrfToken.php +++ b/app/Http/Middleware/VerifyCsrfToken.php @@ -6,6 +6,13 @@ use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware; class VerifyCsrfToken extends Middleware { + /** + * Indicates whether the XSRF-TOKEN cookie should be set on the response. + * + * @var bool + */ + protected $addHttpCookie = true; + /** * The URIs that should be excluded from CSRF verification. * diff --git a/app/Uploads/Attachment.php b/app/Uploads/Attachment.php index 8720d3c09..3f0b447df 100644 --- a/app/Uploads/Attachment.php +++ b/app/Uploads/Attachment.php @@ -13,7 +13,7 @@ class Attachment extends Ownable */ public function getFileName() { - if (str_contains($this->name, '.')) { + if (strpos($this->name, '.') !== false) { return $this->name; } return $this->name . '.' . $this->extension; diff --git a/app/Uploads/AttachmentService.php b/app/Uploads/AttachmentService.php index 6e875a1e7..ae4fb6e96 100644 --- a/app/Uploads/AttachmentService.php +++ b/app/Uploads/AttachmentService.php @@ -2,6 +2,7 @@ use BookStack\Exceptions\FileUploadException; use Exception; +use Illuminate\Support\Str; use Symfony\Component\HttpFoundation\File\UploadedFile; class AttachmentService extends UploadService @@ -185,9 +186,9 @@ class AttachmentService extends UploadService $storage = $this->getStorage(); $basePath = 'uploads/files/' . Date('Y-m-M') . '/'; - $uploadFileName = str_random(16) . '.' . $uploadedFile->getClientOriginalExtension(); + $uploadFileName = Str::random(16) . '.' . $uploadedFile->getClientOriginalExtension(); while ($storage->exists($basePath . $uploadFileName)) { - $uploadFileName = str_random(3) . $uploadFileName; + $uploadFileName = Str::random(3) . $uploadFileName; } $attachmentPath = $basePath . $uploadFileName; diff --git a/app/Uploads/ImageService.php b/app/Uploads/ImageService.php index 860230d00..e7668471b 100644 --- a/app/Uploads/ImageService.php +++ b/app/Uploads/ImageService.php @@ -7,6 +7,7 @@ use DB; use Exception; use Illuminate\Contracts\Cache\Repository as Cache; use Illuminate\Contracts\Filesystem\Factory as FileSystem; +use Illuminate\Support\Str; use Intervention\Image\Exception\NotSupportedException; use Intervention\Image\ImageManager; use phpDocumentor\Reflection\Types\Integer; @@ -140,12 +141,12 @@ class ImageService extends UploadService $imagePath = '/uploads/images/' . $type . '/' . Date('Y-m') . '/'; while ($storage->exists($imagePath . $imageName)) { - $imageName = str_random(3) . $imageName; + $imageName = Str::random(3) . $imageName; } $fullPath = $imagePath . $imageName; if ($secureUploads) { - $fullPath = $imagePath . str_random(16) . '-' . $imageName; + $fullPath = $imagePath . Str::random(16) . '-' . $imageName; } try { @@ -220,7 +221,7 @@ class ImageService extends UploadService $storage->put($thumbFilePath, $thumbData); $storage->setVisibility($thumbFilePath, 'public'); - $this->cache->put('images-' . $image->id . '-' . $thumbFilePath, $thumbFilePath, 60 * 72); + $this->cache->put('images-' . $image->id . '-' . $thumbFilePath, $thumbFilePath, 60 * 60 * 72); return $this->getPublicUrl($thumbFilePath); } diff --git a/app/helpers.php b/app/helpers.php index f36f2e59d..59b9104f8 100644 --- a/app/helpers.php +++ b/app/helpers.php @@ -142,7 +142,7 @@ function icon($name, $attrs = []) $attrString .= $attrName . '="' . $attr . '" '; } - $iconPath = resource_path('assets/icons/' . $name . '.svg'); + $iconPath = resource_path('icons/' . $name . '.svg'); $themeIconPath = theme_path('icons/' . $name . '.svg'); if ($themeIconPath && file_exists($themeIconPath)) { $iconPath = $themeIconPath; diff --git a/bootstrap/app.php b/bootstrap/app.php index 516980cc1..6538aa81c 100644 --- a/bootstrap/app.php +++ b/bootstrap/app.php @@ -11,8 +11,8 @@ | */ -$app = new \BookStack\Application( - realpath(__DIR__.'/../') +$app = new BookStack\Application( + dirname(__DIR__) ); /* diff --git a/composer.json b/composer.json index 61bb8509e..d9d115017 100644 --- a/composer.json +++ b/composer.json @@ -5,46 +5,46 @@ "license": "MIT", "type": "project", "require": { - "php": ">=7.0.5", - "ext-json": "*", - "ext-tidy": "*", - "ext-dom": "*", - "ext-xml": "*", - "ext-mbstring": "*", - "ext-gd": "*", + "php": "^7.2", "ext-curl": "*", - "laravel/framework": "~5.5.44", - "fideloper/proxy": "~3.3", - "intervention/image": "^2.4", - "laravel/socialite": "3.0.x-dev", - "league/flysystem-aws-s3-v3": "^1.0", - "barryvdh/laravel-dompdf": "^0.8.1", - "predis/predis": "^1.1", + "ext-dom": "*", + "ext-gd": "*", + "ext-json": "*", + "ext-mbstring": "*", + "ext-tidy": "*", + "ext-xml": "*", + "barryvdh/laravel-dompdf": "^0.8.5", + "barryvdh/laravel-snappy": "^0.4.5", + "doctrine/dbal": "^2.9", + "fideloper/proxy": "^4.0", "gathercontent/htmldiff": "^0.2.1", - "barryvdh/laravel-snappy": "^0.4.0", - "socialiteproviders/slack": "^3.0", + "intervention/image": "^2.5", + "laravel/framework": "^6.0", + "laravel/socialite": "^4.2", + "league/flysystem-aws-s3-v3": "^1.0", + "predis/predis": "^1.1", + "socialiteproviders/discord": "^2.0", + "socialiteproviders/gitlab": "^3.0", "socialiteproviders/microsoft-azure": "^3.0", "socialiteproviders/okta": "^1.0", - "socialiteproviders/gitlab": "^3.0", - "socialiteproviders/twitch": "^3.0", - "socialiteproviders/discord": "^2.0", - "doctrine/dbal": "^2.5" + "socialiteproviders/slack": "^3.0", + "socialiteproviders/twitch": "^3.0" }, "require-dev": { - "filp/whoops": "~2.0", - "fzaninotto/faker": "~1.4", - "mockery/mockery": "~1.0", - "phpunit/phpunit": "~6.0", - "symfony/css-selector": "3.1.*", - "symfony/dom-crawler": "3.1.*", - "laravel/browser-kit-testing": "^2.0", - "barryvdh/laravel-ide-helper": "^2.4.1", - "barryvdh/laravel-debugbar": "^3.1.0", - "squizlabs/php_codesniffer": "^3.2" + "facade/ignition": "^1.4", + "fzaninotto/faker": "^1.4", + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^8.0", + "nunomaduro/collision": "^3.0", + "laravel/browser-kit-testing": "^5.1", + "barryvdh/laravel-ide-helper": "^2.6.4", + "barryvdh/laravel-debugbar": "^3.2.8", + "squizlabs/php_codesniffer": "^3.4" }, "autoload": { "classmap": [ - "database" + "database/seeds", + "database/factories" ], "psr-4": { "BookStack\\": "app/" @@ -57,37 +57,45 @@ }, "scripts": { "post-root-package-install": [ - "php -r \"file_exists('.env') || copy('.env.example', '.env');\"" + "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" ], "post-create-project-cmd": [ - "php artisan key:generate" + "@php artisan key:generate --ansi" ], "pre-update-cmd": [ - "php -r \"!file_exists('bootstrap/cache/services.php') || @unlink('bootstrap/cache/services.php');\"", - "php -r \"!file_exists('bootstrap/cache/compiled.php') || @unlink('bootstrap/cache/compiled.php');\"" + "@php -r \"!file_exists('bootstrap/cache/services.php') || @unlink('bootstrap/cache/services.php');\"", + "@php -r \"!file_exists('bootstrap/cache/compiled.php') || @unlink('bootstrap/cache/compiled.php');\"" ], "pre-install-cmd": [ - "php -r \"!file_exists('bootstrap/cache/services.php') || @unlink('bootstrap/cache/services.php');\"", - "php -r \"!file_exists('bootstrap/cache/compiled.php') || @unlink('bootstrap/cache/compiled.php');\"" + "@php -r \"!file_exists('bootstrap/cache/services.php') || @unlink('bootstrap/cache/services.php');\"", + "@php -r \"!file_exists('bootstrap/cache/compiled.php') || @unlink('bootstrap/cache/compiled.php');\"" ], "post-install-cmd": [ - "php artisan cache:clear", - "php artisan view:clear" + "@php artisan cache:clear", + "@php artisan view:clear" ], "post-autoload-dump": [ "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", - "@php artisan package:discover" + "@php artisan package:discover --ansi" ], "refresh-test-database": [ - "php artisan migrate:refresh --database=mysql_testing", - "php artisan db:seed --class=DummyContentSeeder --database=mysql_testing" + "@php artisan migrate:refresh --database=mysql_testing", + "@php artisan db:seed --class=DummyContentSeeder --database=mysql_testing" ] }, "config": { "optimize-autoloader": true, "preferred-install": "dist", + "sort-packages": true, "platform": { - "php": "7.0.5" + "php": "7.2.0" } - } + }, + "extra": { + "laravel": { + "dont-discover": [] + } + }, + "minimum-stability": "dev", + "prefer-stable": true } diff --git a/composer.lock b/composer.lock index d7734ce1a..5c3cb66b1 100644 --- a/composer.lock +++ b/composer.lock @@ -4,27 +4,26 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "content-hash": "0946a07729a7a1bfef9bac185a870afd", + "content-hash": "322b6b585d85e066f97711fe8f1f7ccd", "packages": [ { "name": "aws/aws-sdk-php", - "version": "3.86.2", + "version": "3.112.0", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "50224232ac7a4e2a6fa4ebbe0281e5b7503acf76" + "reference": "1e21446c6780a3b9b5e4315bd6d4347d2c3381eb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/50224232ac7a4e2a6fa4ebbe0281e5b7503acf76", - "reference": "50224232ac7a4e2a6fa4ebbe0281e5b7503acf76", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/1e21446c6780a3b9b5e4315bd6d4347d2c3381eb", + "reference": "1e21446c6780a3b9b5e4315bd6d4347d2c3381eb", "shasum": "" }, "require": { "ext-json": "*", "ext-pcre": "*", "ext-simplexml": "*", - "ext-spl": "*", "guzzlehttp/guzzle": "^5.3.3|^6.2.1", "guzzlehttp/promises": "~1.0", "guzzlehttp/psr7": "^1.4.1", @@ -42,7 +41,8 @@ "ext-sockets": "*", "nette/neon": "^2.3", "phpunit/phpunit": "^4.8.35|^5.4.3", - "psr/cache": "^1.0" + "psr/cache": "^1.0", + "psr/simple-cache": "^1.0" }, "suggest": { "aws/aws-php-sns-message-validator": "To validate incoming SNS notifications", @@ -87,25 +87,25 @@ "s3", "sdk" ], - "time": "2019-01-18T21:10:44+00:00" + "time": "2019-09-12T18:09:53+00:00" }, { "name": "barryvdh/laravel-dompdf", - "version": "v0.8.3", + "version": "v0.8.5", "source": { "type": "git", "url": "https://github.com/barryvdh/laravel-dompdf.git", - "reference": "46781d0304277845a19c09c169bc595fd182cce4" + "reference": "7393732b2f3a3ee357974cbb0c46c9b65b84dad1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-dompdf/zipball/46781d0304277845a19c09c169bc595fd182cce4", - "reference": "46781d0304277845a19c09c169bc595fd182cce4", + "url": "https://api.github.com/repos/barryvdh/laravel-dompdf/zipball/7393732b2f3a3ee357974cbb0c46c9b65b84dad1", + "reference": "7393732b2f3a3ee357974cbb0c46c9b65b84dad1", "shasum": "" }, "require": { "dompdf/dompdf": "^0.8", - "illuminate/support": "5.5.x|5.6.x|5.7.x", + "illuminate/support": "^5.5|^6", "php": ">=7" }, "type": "library", @@ -143,25 +143,25 @@ "laravel", "pdf" ], - "time": "2018-08-31T13:25:44+00:00" + "time": "2019-08-23T14:30:33+00:00" }, { "name": "barryvdh/laravel-snappy", - "version": "v0.4.3", + "version": "v0.4.5", "source": { "type": "git", "url": "https://github.com/barryvdh/laravel-snappy.git", - "reference": "62bb5017b7004bf3e48bfed3d5c00d3dc6e60478" + "reference": "9be767fc7a082665a84945f36c70b0cbead91ce9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-snappy/zipball/62bb5017b7004bf3e48bfed3d5c00d3dc6e60478", - "reference": "62bb5017b7004bf3e48bfed3d5c00d3dc6e60478", + "url": "https://api.github.com/repos/barryvdh/laravel-snappy/zipball/9be767fc7a082665a84945f36c70b0cbead91ce9", + "reference": "9be767fc7a082665a84945f36c70b0cbead91ce9", "shasum": "" }, "require": { - "illuminate/filesystem": "5.5.x|5.6.x|5.7.x", - "illuminate/support": "5.5.x|5.6.x|5.7.x", + "illuminate/filesystem": "5.5.x|5.6.x|5.7.x|5.8.x|6.0.*", + "illuminate/support": "5.5.x|5.6.x|5.7.x|5.8.x|6.0.*", "knplabs/knp-snappy": "^1", "php": ">=7" }, @@ -195,7 +195,7 @@ "email": "barryvdh@gmail.com" } ], - "description": "Snappy PDF/Image for Laravel 4", + "description": "Snappy PDF/Image for Laravel", "keywords": [ "image", "laravel", @@ -204,7 +204,7 @@ "wkhtmltoimage", "wkhtmltopdf" ], - "time": "2018-09-06T10:14:15+00:00" + "time": "2019-08-30T16:12:23+00:00" }, { "name": "cogpowered/finediff", @@ -257,103 +257,40 @@ ], "time": "2014-05-19T10:25:02+00:00" }, - { - "name": "doctrine/annotations", - "version": "v1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/annotations.git", - "reference": "54cacc9b81758b14e3ce750f205a393d52339e97" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/54cacc9b81758b14e3ce750f205a393d52339e97", - "reference": "54cacc9b81758b14e3ce750f205a393d52339e97", - "shasum": "" - }, - "require": { - "doctrine/lexer": "1.*", - "php": "^5.6 || ^7.0" - }, - "require-dev": { - "doctrine/cache": "1.*", - "phpunit/phpunit": "^5.7" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "Docblock Annotations Parser", - "homepage": "http://www.doctrine-project.org", - "keywords": [ - "annotations", - "docblock", - "parser" - ], - "time": "2017-02-24T16:22:25+00:00" - }, { "name": "doctrine/cache", - "version": "v1.6.2", + "version": "v1.8.0", "source": { "type": "git", "url": "https://github.com/doctrine/cache.git", - "reference": "eb152c5100571c7a45470ff2a35095ab3f3b900b" + "reference": "d768d58baee9a4862ca783840eca1b9add7a7f57" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/cache/zipball/eb152c5100571c7a45470ff2a35095ab3f3b900b", - "reference": "eb152c5100571c7a45470ff2a35095ab3f3b900b", + "url": "https://api.github.com/repos/doctrine/cache/zipball/d768d58baee9a4862ca783840eca1b9add7a7f57", + "reference": "d768d58baee9a4862ca783840eca1b9add7a7f57", "shasum": "" }, "require": { - "php": "~5.5|~7.0" + "php": "~7.1" }, "conflict": { "doctrine/common": ">2.2,<2.4" }, "require-dev": { - "phpunit/phpunit": "~4.8|~5.0", - "predis/predis": "~1.0", - "satooshi/php-coveralls": "~0.6" + "alcaeus/mongo-php-adapter": "^1.1", + "doctrine/coding-standard": "^4.0", + "mongodb/mongodb": "^1.1", + "phpunit/phpunit": "^7.0", + "predis/predis": "~1.0" + }, + "suggest": { + "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.6.x-dev" + "dev-master": "1.8.x-dev" } }, "autoload": { @@ -388,43 +325,57 @@ } ], "description": "Caching library offering an object-oriented API for many cache backends", - "homepage": "http://www.doctrine-project.org", + "homepage": "https://www.doctrine-project.org", "keywords": [ "cache", "caching" ], - "time": "2017-07-22T12:49:21+00:00" + "time": "2018-08-21T18:01:43+00:00" }, { - "name": "doctrine/collections", - "version": "v1.4.0", + "name": "doctrine/dbal", + "version": "v2.9.2", "source": { "type": "git", - "url": "https://github.com/doctrine/collections.git", - "reference": "1a4fb7e902202c33cce8c55989b945612943c2ba" + "url": "https://github.com/doctrine/dbal.git", + "reference": "22800bd651c1d8d2a9719e2a3dc46d5108ebfcc9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/collections/zipball/1a4fb7e902202c33cce8c55989b945612943c2ba", - "reference": "1a4fb7e902202c33cce8c55989b945612943c2ba", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/22800bd651c1d8d2a9719e2a3dc46d5108ebfcc9", + "reference": "22800bd651c1d8d2a9719e2a3dc46d5108ebfcc9", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" + "doctrine/cache": "^1.0", + "doctrine/event-manager": "^1.0", + "ext-pdo": "*", + "php": "^7.1" }, "require-dev": { - "doctrine/coding-standard": "~0.1@dev", - "phpunit/phpunit": "^5.7" + "doctrine/coding-standard": "^5.0", + "jetbrains/phpstorm-stubs": "^2018.1.2", + "phpstan/phpstan": "^0.10.1", + "phpunit/phpunit": "^7.4", + "symfony/console": "^2.0.5|^3.0|^4.0", + "symfony/phpunit-bridge": "^3.4.5|^4.0.5" }, + "suggest": { + "symfony/console": "For helpful console commands such as SQL execution and import of files." + }, + "bin": [ + "bin/doctrine-dbal" + ], "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3.x-dev" + "dev-master": "2.9.x-dev", + "dev-develop": "3.0.x-dev" } }, "autoload": { - "psr-0": { - "Doctrine\\Common\\Collections\\": "lib/" + "psr-4": { + "Doctrine\\DBAL\\": "lib/Doctrine/DBAL" } }, "notification-url": "https://packagist.org/downloads/", @@ -447,50 +398,50 @@ { "name": "Jonathan Wage", "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" } ], - "description": "Collections Abstraction library", - "homepage": "http://www.doctrine-project.org", + "description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.", + "homepage": "https://www.doctrine-project.org/projects/dbal.html", "keywords": [ - "array", - "collections", - "iterator" + "abstraction", + "database", + "dbal", + "mysql", + "persistence", + "pgsql", + "php", + "queryobject" ], - "time": "2017-01-03T10:49:41+00:00" + "time": "2018-12-31T03:27:51+00:00" }, { - "name": "doctrine/common", - "version": "v2.7.3", + "name": "doctrine/event-manager", + "version": "v1.0.0", "source": { "type": "git", - "url": "https://github.com/doctrine/common.git", - "reference": "4acb8f89626baafede6ee5475bc5844096eba8a9" + "url": "https://github.com/doctrine/event-manager.git", + "reference": "a520bc093a0170feeb6b14e9d83f3a14452e64b3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/common/zipball/4acb8f89626baafede6ee5475bc5844096eba8a9", - "reference": "4acb8f89626baafede6ee5475bc5844096eba8a9", + "url": "https://api.github.com/repos/doctrine/event-manager/zipball/a520bc093a0170feeb6b14e9d83f3a14452e64b3", + "reference": "a520bc093a0170feeb6b14e9d83f3a14452e64b3", "shasum": "" }, "require": { - "doctrine/annotations": "1.*", - "doctrine/cache": "1.*", - "doctrine/collections": "1.*", - "doctrine/inflector": "1.*", - "doctrine/lexer": "1.*", - "php": "~5.6|~7.0" + "php": "^7.1" + }, + "conflict": { + "doctrine/common": "<2.9@dev" }, "require-dev": { - "phpunit/phpunit": "^5.4.6" + "doctrine/coding-standard": "^4.0", + "phpunit/phpunit": "^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.7.x-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { @@ -522,106 +473,37 @@ { "name": "Johannes Schmitt", "email": "schmittjoh@gmail.com" + }, + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" } ], - "description": "Common Library for Doctrine projects", - "homepage": "http://www.doctrine-project.org", + "description": "Doctrine Event Manager component", + "homepage": "https://www.doctrine-project.org/projects/event-manager.html", "keywords": [ - "annotations", - "collections", - "eventmanager", - "persistence", - "spl" + "event", + "eventdispatcher", + "eventmanager" ], - "time": "2017-07-22T08:35:12+00:00" - }, - { - "name": "doctrine/dbal", - "version": "v2.5.13", - "source": { - "type": "git", - "url": "https://github.com/doctrine/dbal.git", - "reference": "729340d8d1eec8f01bff708e12e449a3415af873" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/729340d8d1eec8f01bff708e12e449a3415af873", - "reference": "729340d8d1eec8f01bff708e12e449a3415af873", - "shasum": "" - }, - "require": { - "doctrine/common": ">=2.4,<2.8-dev", - "php": ">=5.3.2" - }, - "require-dev": { - "phpunit/phpunit": "4.*", - "symfony/console": "2.*||^3.0" - }, - "suggest": { - "symfony/console": "For helpful console commands such as SQL execution and import of files." - }, - "bin": [ - "bin/doctrine-dbal" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.5.x-dev" - } - }, - "autoload": { - "psr-0": { - "Doctrine\\DBAL\\": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - } - ], - "description": "Database Abstraction Layer", - "homepage": "http://www.doctrine-project.org", - "keywords": [ - "database", - "dbal", - "persistence", - "queryobject" - ], - "time": "2017-07-22T20:44:48+00:00" + "time": "2018-06-11T11:59:03+00:00" }, { "name": "doctrine/inflector", - "version": "v1.2.0", + "version": "v1.3.0", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "e11d84c6e018beedd929cff5220969a3c6d1d462" + "reference": "5527a48b7313d15261292c149e55e26eae771b0a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/e11d84c6e018beedd929cff5220969a3c6d1d462", - "reference": "e11d84c6e018beedd929cff5220969a3c6d1d462", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/5527a48b7313d15261292c149e55e26eae771b0a", + "reference": "5527a48b7313d15261292c149e55e26eae771b0a", "shasum": "" }, "require": { - "php": "^7.0" + "php": "^7.1" }, "require-dev": { "phpunit/phpunit": "^6.2" @@ -629,7 +511,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2.x-dev" + "dev-master": "1.3.x-dev" } }, "autoload": { @@ -671,34 +553,39 @@ "singularize", "string" ], - "time": "2017-07-22T12:18:28+00:00" + "time": "2018-01-09T20:05:19+00:00" }, { "name": "doctrine/lexer", - "version": "v1.0.1", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c" + "reference": "e17f069ede36f7534b95adec71910ed1b49c74ea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c", - "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/e17f069ede36f7534b95adec71910ed1b49c74ea", + "reference": "e17f069ede36f7534b95adec71910ed1b49c74ea", "shasum": "" }, "require": { - "php": ">=5.3.2" + "php": "^7.2" + }, + "require-dev": { + "doctrine/coding-standard": "^6.0", + "phpstan/phpstan": "^0.11.8", + "phpunit/phpunit": "^8.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.1.x-dev" } }, "autoload": { - "psr-0": { - "Doctrine\\Common\\Lexer\\": "lib/" + "psr-4": { + "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" } }, "notification-url": "https://packagist.org/downloads/", @@ -706,26 +593,29 @@ "MIT" ], "authors": [ - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, { "name": "Guilherme Blanco", "email": "guilhermeblanco@gmail.com" }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, { "name": "Johannes Schmitt", "email": "schmittjoh@gmail.com" } ], - "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.", - "homepage": "http://www.doctrine-project.org", + "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "https://www.doctrine-project.org/projects/lexer.html", "keywords": [ + "annotations", + "docblock", "lexer", - "parser" + "parser", + "php" ], - "time": "2014-09-09T13:34:57+00:00" + "time": "2019-07-30T19:33:28+00:00" }, { "name": "dompdf/dompdf", @@ -794,17 +684,71 @@ "time": "2018-12-14T02:40:31+00:00" }, { - "name": "egulias/email-validator", - "version": "2.1.7", + "name": "dragonmantank/cron-expression", + "version": "v2.3.0", "source": { "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "709f21f92707308cdf8f9bcfa1af4cb26586521e" + "url": "https://github.com/dragonmantank/cron-expression.git", + "reference": "72b6fbf76adb3cf5bc0db68559b33d41219aba27" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/709f21f92707308cdf8f9bcfa1af4cb26586521e", - "reference": "709f21f92707308cdf8f9bcfa1af4cb26586521e", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/72b6fbf76adb3cf5bc0db68559b33d41219aba27", + "reference": "72b6fbf76adb3cf5bc0db68559b33d41219aba27", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.4|^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.3-dev" + } + }, + "autoload": { + "psr-4": { + "Cron\\": "src/Cron/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Chris Tankersley", + "email": "chris@ctankersley.com", + "homepage": "https://github.com/dragonmantank" + } + ], + "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", + "keywords": [ + "cron", + "schedule" + ], + "time": "2019-03-31T00:38:28+00:00" + }, + { + "name": "egulias/email-validator", + "version": "2.1.11", + "source": { + "type": "git", + "url": "https://github.com/egulias/EmailValidator.git", + "reference": "92dd169c32f6f55ba570c309d83f5209cefb5e23" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/92dd169c32f6f55ba570c309d83f5209cefb5e23", + "reference": "92dd169c32f6f55ba570c309d83f5209cefb5e23", "shasum": "" }, "require": { @@ -814,7 +758,8 @@ "require-dev": { "dominicsayers/isemail": "dev-master", "phpunit/phpunit": "^4.8.35||^5.7||^6.0", - "satooshi/php-coveralls": "^1.0.1" + "satooshi/php-coveralls": "^1.0.1", + "symfony/phpunit-bridge": "^4.4@dev" }, "suggest": { "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" @@ -822,7 +767,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "2.1.x-dev" } }, "autoload": { @@ -848,20 +793,20 @@ "validation", "validator" ], - "time": "2018-12-04T22:38:24+00:00" + "time": "2019-08-13T17:33:27+00:00" }, { "name": "erusev/parsedown", - "version": "1.7.1", + "version": "1.7.3", "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": { @@ -894,36 +839,33 @@ "markdown", "parser" ], - "time": "2018-03-08T01:11:30+00:00" + "time": "2019-03-17T18:48:37+00:00" }, { "name": "fideloper/proxy", - "version": "3.3.4", + "version": "4.2.1", "source": { "type": "git", "url": "https://github.com/fideloper/TrustedProxy.git", - "reference": "9cdf6f118af58d89764249bbcc7bb260c132924f" + "reference": "03085e58ec7bee24773fa5a8850751a6e61a7e8a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fideloper/TrustedProxy/zipball/9cdf6f118af58d89764249bbcc7bb260c132924f", - "reference": "9cdf6f118af58d89764249bbcc7bb260c132924f", + "url": "https://api.github.com/repos/fideloper/TrustedProxy/zipball/03085e58ec7bee24773fa5a8850751a6e61a7e8a", + "reference": "03085e58ec7bee24773fa5a8850751a6e61a7e8a", "shasum": "" }, "require": { - "illuminate/contracts": "~5.0", + "illuminate/contracts": "^5.0|^6.0|^7.0", "php": ">=5.4.0" }, "require-dev": { - "illuminate/http": "~5.0", - "mockery/mockery": "~0.9.3", - "phpunit/phpunit": "^5.7" + "illuminate/http": "^5.0|^6.0|^7.0", + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^6.0" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "3.3-dev" - }, "laravel": { "providers": [ "Fideloper\\Proxy\\TrustedProxyServiceProvider" @@ -951,7 +893,7 @@ "proxy", "trusted proxy" ], - "time": "2017-06-15T17:19:42+00:00" + "time": "2019-09-03T16:45:42+00:00" }, { "name": "gathercontent/htmldiff", @@ -1120,33 +1062,37 @@ }, { "name": "guzzlehttp/psr7", - "version": "1.5.2", + "version": "1.6.1", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "9f83dded91781a01c63574e387eaa769be769115" + "reference": "239400de7a173fe9901b9ac7c06497751f00727a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/9f83dded91781a01c63574e387eaa769be769115", - "reference": "9f83dded91781a01c63574e387eaa769be769115", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/239400de7a173fe9901b9ac7c06497751f00727a", + "reference": "239400de7a173fe9901b9ac7c06497751f00727a", "shasum": "" }, "require": { "php": ">=5.4.0", "psr/http-message": "~1.0", - "ralouphie/getallheaders": "^2.0.5" + "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" }, "provide": { "psr/http-message-implementation": "1.0" }, "require-dev": { + "ext-zlib": "*", "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8" }, + "suggest": { + "zendframework/zend-httphandlerrunner": "Emit PSR-7 responses" + }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.5-dev" + "dev-master": "1.6-dev" } }, "autoload": { @@ -1183,20 +1129,20 @@ "uri", "url" ], - "time": "2018-12-04T20:46:45+00:00" + "time": "2019-07-01T23:21:34+00:00" }, { "name": "intervention/image", - "version": "2.4.2", + "version": "2.5.0", "source": { "type": "git", "url": "https://github.com/Intervention/image.git", - "reference": "e82d274f786e3d4b866a59b173f42e716f0783eb" + "reference": "39eaef720d082ecc54c64bf54541c55f10db546d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Intervention/image/zipball/e82d274f786e3d4b866a59b173f42e716f0783eb", - "reference": "e82d274f786e3d4b866a59b173f42e716f0783eb", + "url": "https://api.github.com/repos/Intervention/image/zipball/39eaef720d082ecc54c64bf54541c55f10db546d", + "reference": "39eaef720d082ecc54c64bf54541c55f10db546d", "shasum": "" }, "require": { @@ -1253,29 +1199,29 @@ "thumbnail", "watermark" ], - "time": "2018-05-29T14:19:03+00:00" + "time": "2019-06-24T14:06:31+00:00" }, { "name": "knplabs/knp-snappy", - "version": "v1.0.4", + "version": "v1.1.0", "source": { "type": "git", "url": "https://github.com/KnpLabs/snappy.git", - "reference": "144c4ecd1ccaeda936bf832b93079efc490e6850" + "reference": "ea037298d3c613454da77ecb9588cf0397d695e1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/KnpLabs/snappy/zipball/144c4ecd1ccaeda936bf832b93079efc490e6850", - "reference": "144c4ecd1ccaeda936bf832b93079efc490e6850", + "url": "https://api.github.com/repos/KnpLabs/snappy/zipball/ea037298d3c613454da77ecb9588cf0397d695e1", + "reference": "ea037298d3c613454da77ecb9588cf0397d695e1", "shasum": "" }, "require": { - "php": ">=5.6", + "php": ">=7.1", "psr/log": "^1.0", - "symfony/process": "~2.3 || ~3.0 || ~4.0" + "symfony/process": "~3.4||~4.1" }, "require-dev": { - "phpunit/phpunit": "~4.8.36" + "phpunit/phpunit": "~7.4" }, "suggest": { "h4cc/wkhtmltoimage-amd64": "Provides wkhtmltoimage-amd64 binary for Linux-compatible machines, use version `~0.12` as dependency", @@ -1287,7 +1233,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.x-dev" } }, "autoload": { @@ -1319,46 +1265,52 @@ "thumbnail", "wkhtmltopdf" ], - "time": "2018-01-22T19:40:51+00:00" + "time": "2018-12-14T14:59:37+00:00" }, { "name": "laravel/framework", - "version": "v5.5.44", + "version": "v6.0.3", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "00615aa27eb98f0ee6fb9f2160c6c60ae04abd1b" + "reference": "56789e9dec750e0fbe8e9e6ae90a01a4e6887902" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/00615aa27eb98f0ee6fb9f2160c6c60ae04abd1b", - "reference": "00615aa27eb98f0ee6fb9f2160c6c60ae04abd1b", + "url": "https://api.github.com/repos/laravel/framework/zipball/56789e9dec750e0fbe8e9e6ae90a01a4e6887902", + "reference": "56789e9dec750e0fbe8e9e6ae90a01a4e6887902", "shasum": "" }, "require": { - "doctrine/inflector": "~1.1", - "erusev/parsedown": "~1.7", + "doctrine/inflector": "^1.1", + "dragonmantank/cron-expression": "^2.0", + "egulias/email-validator": "^2.1.10", + "erusev/parsedown": "^1.7", + "ext-json": "*", "ext-mbstring": "*", "ext-openssl": "*", "league/flysystem": "^1.0.8", - "monolog/monolog": "~1.12", - "mtdowling/cron-expression": "~1.0", - "nesbot/carbon": "^1.24.1", - "php": ">=7.0", - "psr/container": "~1.0", + "monolog/monolog": "^1.12|^2.0", + "nesbot/carbon": "^2.0", + "opis/closure": "^3.1", + "php": "^7.2", + "psr/container": "^1.0", "psr/simple-cache": "^1.0", - "ramsey/uuid": "~3.0", - "swiftmailer/swiftmailer": "~6.0", - "symfony/console": "~3.3", - "symfony/debug": "~3.3", - "symfony/finder": "~3.3", - "symfony/http-foundation": "~3.3", - "symfony/http-kernel": "~3.3", - "symfony/process": "~3.3", - "symfony/routing": "~3.3", - "symfony/var-dumper": "~3.3", - "tijsverkoyen/css-to-inline-styles": "~2.2", - "vlucas/phpdotenv": "~2.2" + "ramsey/uuid": "^3.7", + "swiftmailer/swiftmailer": "^6.0", + "symfony/console": "^4.3.4", + "symfony/debug": "^4.3.4", + "symfony/finder": "^4.3.4", + "symfony/http-foundation": "^4.3.4", + "symfony/http-kernel": "^4.3.4", + "symfony/process": "^4.3.4", + "symfony/routing": "^4.3.4", + "symfony/var-dumper": "^4.3.4", + "tijsverkoyen/css-to-inline-styles": "^2.2.1", + "vlucas/phpdotenv": "^3.3" + }, + "conflict": { + "tightenco/collect": "<5.5.33" }, "replace": { "illuminate/auth": "self.version", @@ -1388,44 +1340,49 @@ "illuminate/support": "self.version", "illuminate/translation": "self.version", "illuminate/validation": "self.version", - "illuminate/view": "self.version", - "tightenco/collect": "<5.5.33" + "illuminate/view": "self.version" }, "require-dev": { - "aws/aws-sdk-php": "~3.0", - "doctrine/dbal": "~2.5", - "filp/whoops": "^2.1.4", - "mockery/mockery": "~1.0", - "orchestra/testbench-core": "3.5.*", - "pda/pheanstalk": "~3.0", - "phpunit/phpunit": "~6.0", + "aws/aws-sdk-php": "^3.0", + "doctrine/dbal": "^2.6", + "filp/whoops": "^2.4", + "guzzlehttp/guzzle": "^6.3", + "league/flysystem-cached-adapter": "^1.0", + "mockery/mockery": "^1.2.3", + "moontoast/math": "^1.1", + "orchestra/testbench-core": "^4.0", + "pda/pheanstalk": "^4.0", + "phpunit/phpunit": "^8.3", "predis/predis": "^1.1.1", - "symfony/css-selector": "~3.3", - "symfony/dom-crawler": "~3.3" + "symfony/cache": "^4.3", + "true/punycode": "^2.1" }, "suggest": { - "aws/aws-sdk-php": "Required to use the SQS queue driver and SES mail driver (~3.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (~2.5).", + "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage and SES mail driver (^3.0).", + "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.6).", + "ext-gd": "Required to use Illuminate\\Http\\Testing\\FileFactory::image().", + "ext-memcached": "Required to use the memcache cache driver.", "ext-pcntl": "Required to use all features of the queue worker.", "ext-posix": "Required to use all features of the queue worker.", - "fzaninotto/faker": "Required to use the eloquent factory builder (~1.4).", - "guzzlehttp/guzzle": "Required to use the Mailgun and Mandrill mail drivers and the ping methods on schedules (~6.0).", - "laravel/tinker": "Required to use the tinker console command (~1.0).", - "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (~1.0).", - "league/flysystem-cached-adapter": "Required to use Flysystem caching (~1.0).", - "league/flysystem-rackspace": "Required to use the Flysystem Rackspace driver (~1.0).", - "nexmo/client": "Required to use the Nexmo transport (~1.0).", - "pda/pheanstalk": "Required to use the beanstalk queue driver (~3.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 (~3.3).", - "symfony/dom-crawler": "Required to use most of the crawler integration testing tools (~3.3).", - "symfony/psr-http-message-bridge": "Required to psr7 bridging features (~1.0)." + "ext-redis": "Required to use the Redis cache and queue drivers.", + "filp/whoops": "Required for friendly error pages in development (^2.4).", + "fzaninotto/faker": "Required to use the eloquent factory builder (^1.4).", + "guzzlehttp/guzzle": "Required to use the Mailgun mail driver and the ping methods on schedules (^6.0).", + "laravel/tinker": "Required to use the tinker console command (^1.0).", + "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^1.0).", + "league/flysystem-cached-adapter": "Required to use the Flysystem cache (^1.0).", + "league/flysystem-sftp": "Required to use the Flysystem SFTP driver (^1.0).", + "moontoast/math": "Required to use ordered UUIDs (^1.1).", + "pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).", + "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^3.0).", + "symfony/cache": "Required to PSR-6 cache bridge (^4.3.4).", + "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^1.2).", + "wildbit/swiftmailer-postmark": "Required to use Postmark mail driver (^3.0)." }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.5-dev" + "dev-master": "6.x-dev" } }, "autoload": { @@ -1453,38 +1410,39 @@ "framework", "laravel" ], - "time": "2018-10-04T14:51:24+00:00" + "time": "2019-09-10T18:46:24+00:00" }, { "name": "laravel/socialite", - "version": "3.0.x-dev", + "version": "v4.2.0", "source": { "type": "git", "url": "https://github.com/laravel/socialite.git", - "reference": "79316f36641f1916a50ab14d368acdf1d97e46de" + "reference": "f509d06e1e7323997b804c5152874f8aad4508e9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/socialite/zipball/79316f36641f1916a50ab14d368acdf1d97e46de", - "reference": "79316f36641f1916a50ab14d368acdf1d97e46de", + "url": "https://api.github.com/repos/laravel/socialite/zipball/f509d06e1e7323997b804c5152874f8aad4508e9", + "reference": "f509d06e1e7323997b804c5152874f8aad4508e9", "shasum": "" }, "require": { + "ext-json": "*", "guzzlehttp/guzzle": "~6.0", - "illuminate/contracts": "~5.4", - "illuminate/http": "~5.4", - "illuminate/support": "~5.4", + "illuminate/http": "~5.7.0|~5.8.0|^6.0|^7.0", + "illuminate/support": "~5.7.0|~5.8.0|^6.0|^7.0", "league/oauth1-client": "~1.0", - "php": ">=5.6.4" + "php": "^7.1.3" }, "require-dev": { - "mockery/mockery": "~0.9", - "phpunit/phpunit": "~4.0|~5.0" + "illuminate/contracts": "~5.7.0|~5.8.0|^6.0|^7.0", + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^7.0|^8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "4.0-dev" }, "laravel": { "providers": [ @@ -1516,20 +1474,20 @@ "laravel", "oauth" ], - "time": "2018-12-21T14:06:32+00:00" + "time": "2019-09-03T15:27:17+00:00" }, { "name": "league/flysystem", - "version": "1.0.49", + "version": "1.0.55", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "a63cc83d8a931b271be45148fa39ba7156782ffd" + "reference": "33c91155537c6dc899eacdc54a13ac6303f156e6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/a63cc83d8a931b271be45148fa39ba7156782ffd", - "reference": "a63cc83d8a931b271be45148fa39ba7156782ffd", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/33c91155537c6dc899eacdc54a13ac6303f156e6", + "reference": "33c91155537c6dc899eacdc54a13ac6303f156e6", "shasum": "" }, "require": { @@ -1600,20 +1558,20 @@ "sftp", "storage" ], - "time": "2018-11-23T23:41:29+00:00" + "time": "2019-08-24T11:17:19+00:00" }, { "name": "league/flysystem-aws-s3-v3", - "version": "1.0.21", + "version": "1.0.23", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem-aws-s3-v3.git", - "reference": "43523fec10a831ea48bedb3277e3f3fa218f4e49" + "reference": "15b0cdeab7240bf8e8bffa85ae5275bbc3692bf4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/43523fec10a831ea48bedb3277e3f3fa218f4e49", - "reference": "43523fec10a831ea48bedb3277e3f3fa218f4e49", + "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/15b0cdeab7240bf8e8bffa85ae5275bbc3692bf4", + "reference": "15b0cdeab7240bf8e8bffa85ae5275bbc3692bf4", "shasum": "" }, "require": { @@ -1647,7 +1605,7 @@ } ], "description": "Flysystem adapter for the AWS S3 SDK v3.x", - "time": "2018-10-08T07:53:55+00:00" + "time": "2019-06-05T17:18:29+00:00" }, { "name": "league/oauth1-client", @@ -1714,21 +1672,21 @@ }, { "name": "monolog/monolog", - "version": "1.24.0", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266" + "reference": "68545165e19249013afd1d6f7485aecff07a2d22" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266", - "reference": "bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/68545165e19249013afd1d6f7485aecff07a2d22", + "reference": "68545165e19249013afd1d6f7485aecff07a2d22", "shasum": "" }, "require": { - "php": ">=5.3.0", - "psr/log": "~1.0" + "php": "^7.2", + "psr/log": "^1.0.1" }, "provide": { "psr/log-implementation": "1.0.0" @@ -1736,33 +1694,36 @@ "require-dev": { "aws/aws-sdk-php": "^2.4.9 || ^3.0", "doctrine/couchdb": "~1.0@dev", - "graylog2/gelf-php": "~1.0", - "jakub-onderka/php-parallel-lint": "0.9", + "elasticsearch/elasticsearch": "^6.0", + "graylog2/gelf-php": "^1.4.2", + "jakub-onderka/php-parallel-lint": "^0.9", "php-amqplib/php-amqplib": "~2.4", "php-console/php-console": "^3.1.3", - "phpunit/phpunit": "~4.5", - "phpunit/phpunit-mock-objects": "2.3.0", + "phpspec/prophecy": "^1.6.1", + "phpunit/phpunit": "^8.3", + "predis/predis": "^1.1", + "rollbar/rollbar": "^1.3", "ruflin/elastica": ">=0.90 <3.0", - "sentry/sentry": "^0.13", "swiftmailer/swiftmailer": "^5.3|^6.0" }, "suggest": { "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", - "ext-mongo": "Allow sending log messages to a MongoDB server", + "ext-mbstring": "Allow to work properly with unicode symbols", + "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", - "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", "php-console/php-console": "Allow sending log messages to Google Chrome", "rollbar/rollbar": "Allow sending log messages to Rollbar", - "ruflin/elastica": "Allow sending log messages to an Elastic Search server", - "sentry/sentry": "Allow sending log messages to a Sentry server" + "ruflin/elastica": "Allow sending log messages to an Elastic Search server" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "2.x-dev" } }, "autoload": { @@ -1788,51 +1749,7 @@ "logging", "psr-3" ], - "time": "2018-11-05T09:00:11+00:00" - }, - { - "name": "mtdowling/cron-expression", - "version": "v1.2.1", - "source": { - "type": "git", - "url": "https://github.com/mtdowling/cron-expression.git", - "reference": "9504fa9ea681b586028adaaa0877db4aecf32bad" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mtdowling/cron-expression/zipball/9504fa9ea681b586028adaaa0877db4aecf32bad", - "reference": "9504fa9ea681b586028adaaa0877db4aecf32bad", - "shasum": "" - }, - "require": { - "php": ">=5.3.2" - }, - "require-dev": { - "phpunit/phpunit": "~4.0|~5.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Cron\\": "src/Cron/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", - "keywords": [ - "cron", - "schedule" - ], - "time": "2017-01-23T04:29:33+00:00" + "time": "2019-08-30T09:56:44+00:00" }, { "name": "mtdowling/jmespath.php", @@ -1891,29 +1808,34 @@ }, { "name": "nesbot/carbon", - "version": "1.36.2", + "version": "2.24.0", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "cd324b98bc30290f233dd0e75e6ce49f7ab2a6c9" + "reference": "934459c5ac0658bc765ad1e53512c7c77adcac29" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/cd324b98bc30290f233dd0e75e6ce49f7ab2a6c9", - "reference": "cd324b98bc30290f233dd0e75e6ce49f7ab2a6c9", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/934459c5ac0658bc765ad1e53512c7c77adcac29", + "reference": "934459c5ac0658bc765ad1e53512c7c77adcac29", "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": "dev-php-7.1-compatibility", + "phpstan/phpstan": "^0.11", + "phpunit/phpunit": "^7.5 || ^8.0", + "squizlabs/php_codesniffer": "^3.4" }, + "bin": [ + "bin/carbon" + ], "type": "library", "extra": { "laravel": { @@ -1924,7 +1846,7 @@ }, "autoload": { "psr-4": { - "": "src/" + "Carbon\\": "src/Carbon/" } }, "notification-url": "https://packagist.org/downloads/", @@ -1936,16 +1858,81 @@ "name": "Brian Nesbitt", "email": "brian@nesbot.com", "homepage": "http://nesbot.com" + }, + { + "name": "kylekatarnls", + "homepage": "http://github.com/kylekatarnls" } ], - "description": "A simple API extension for DateTime.", + "description": "A API extension for DateTime that supports 281 different languages.", "homepage": "http://carbon.nesbot.com", "keywords": [ "date", "datetime", "time" ], - "time": "2018-12-28T10:07:33+00:00" + "time": "2019-08-31T16:37:55+00:00" + }, + { + "name": "opis/closure", + "version": "3.4.0", + "source": { + "type": "git", + "url": "https://github.com/opis/closure.git", + "reference": "60a97fff133b1669a5b1776aa8ab06db3f3962b7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/opis/closure/zipball/60a97fff133b1669a5b1776aa8ab06db3f3962b7", + "reference": "60a97fff133b1669a5b1776aa8ab06db3f3962b7", + "shasum": "" + }, + "require": { + "php": "^5.4 || ^7.0" + }, + "require-dev": { + "jeremeamia/superclosure": "^2.0", + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Opis\\Closure\\": "src/" + }, + "files": [ + "functions.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marius Sarca", + "email": "marius.sarca@gmail.com" + }, + { + "name": "Sorin Sarca", + "email": "sarca_sorin@hotmail.com" + } + ], + "description": "A library that can be used to serialize closures (anonymous functions) and arbitrary objects.", + "homepage": "https://opis.io/closure", + "keywords": [ + "anonymous functions", + "closure", + "function", + "serializable", + "serialization", + "serialize" + ], + "time": "2019-09-02T21:07:33+00:00" }, { "name": "paragonie/random_compat", @@ -2031,28 +2018,28 @@ }, { "name": "phenx/php-svg-lib", - "version": "v0.3.2", + "version": "v0.3.3", "source": { "type": "git", "url": "https://github.com/PhenX/php-svg-lib.git", - "reference": "ccc46ef6340d4b8a4a68047e68d8501ea961442c" + "reference": "5fa61b65e612ce1ae15f69b3d223cb14ecc60e32" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PhenX/php-svg-lib/zipball/ccc46ef6340d4b8a4a68047e68d8501ea961442c", - "reference": "ccc46ef6340d4b8a4a68047e68d8501ea961442c", + "url": "https://api.github.com/repos/PhenX/php-svg-lib/zipball/5fa61b65e612ce1ae15f69b3d223cb14ecc60e32", + "reference": "5fa61b65e612ce1ae15f69b3d223cb14ecc60e32", "shasum": "" }, "require": { - "sabberworm/php-css-parser": "8.1.*" + "sabberworm/php-css-parser": "^8.3" }, "require-dev": { - "phpunit/phpunit": "~5.0" + "phpunit/phpunit": "^5.5|^6.5" }, "type": "library", "autoload": { - "psr-0": { - "Svg\\": "src/" + "psr-4": { + "Svg\\": "src/Svg" } }, "notification-url": "https://packagist.org/downloads/", @@ -2067,7 +2054,57 @@ ], "description": "A library to read, parse and export to PDF SVG files.", "homepage": "https://github.com/PhenX/php-svg-lib", - "time": "2018-06-03T10:10:03+00:00" + "time": "2019-09-11T20:02:13+00:00" + }, + { + "name": "phpoption/phpoption", + "version": "1.5.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.*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "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" + ], + "time": "2015-07-25T16:39:46+00:00" }, { "name": "predis/predis", @@ -2315,24 +2352,24 @@ }, { "name": "ralouphie/getallheaders", - "version": "2.0.5", + "version": "3.0.3", "source": { "type": "git", "url": "https://github.com/ralouphie/getallheaders.git", - "reference": "5601c8a83fbba7ef674a7369456d12f1e0d0eafa" + "reference": "120b605dfeb996808c31b6477290a714d356e822" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/5601c8a83fbba7ef674a7369456d12f1e0d0eafa", - "reference": "5601c8a83fbba7ef674a7369456d12f1e0d0eafa", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", + "reference": "120b605dfeb996808c31b6477290a714d356e822", "shasum": "" }, "require": { - "php": ">=5.3" + "php": ">=5.6" }, "require-dev": { - "phpunit/phpunit": "~3.7.0", - "satooshi/php-coveralls": ">=1.0" + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^5 || ^6.5" }, "type": "library", "autoload": { @@ -2351,7 +2388,7 @@ } ], "description": "A polyfill for getallheaders.", - "time": "2016-02-11T07:05:27+00:00" + "time": "2019-03-08T08:55:37+00:00" }, { "name": "ramsey/uuid", @@ -2437,23 +2474,24 @@ }, { "name": "sabberworm/php-css-parser", - "version": "8.1.0", + "version": "8.3.0", "source": { "type": "git", "url": "https://github.com/sabberworm/PHP-CSS-Parser.git", - "reference": "850cbbcbe7fbb155387a151ea562897a67e242ef" + "reference": "91bcc3e3fdb7386c9a2e0e0aa09ca75cc43f121f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sabberworm/PHP-CSS-Parser/zipball/850cbbcbe7fbb155387a151ea562897a67e242ef", - "reference": "850cbbcbe7fbb155387a151ea562897a67e242ef", + "url": "https://api.github.com/repos/sabberworm/PHP-CSS-Parser/zipball/91bcc3e3fdb7386c9a2e0e0aa09ca75cc43f121f", + "reference": "91bcc3e3fdb7386c9a2e0e0aa09ca75cc43f121f", "shasum": "" }, "require": { "php": ">=5.3.2" }, "require-dev": { - "phpunit/phpunit": "*" + "codacy/coverage": "^1.4", + "phpunit/phpunit": "~4.8" }, "type": "library", "autoload": { @@ -2477,7 +2515,7 @@ "parser", "stylesheet" ], - "time": "2016-07-19T19:14:21+00:00" + "time": "2019-02-22T07:42:52+00:00" }, { "name": "socialiteproviders/discord", @@ -2555,19 +2593,20 @@ }, { "name": "socialiteproviders/manager", - "version": "v3.3.4", + "version": "v3.4.2", "source": { "type": "git", "url": "https://github.com/SocialiteProviders/Manager.git", - "reference": "58b72a667da292a1d0a0b1e6e9aeda4053617030" + "reference": "e3e8e78b9a3060801cd008941a0894a0a0c479e1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/SocialiteProviders/Manager/zipball/58b72a667da292a1d0a0b1e6e9aeda4053617030", - "reference": "58b72a667da292a1d0a0b1e6e9aeda4053617030", + "url": "https://api.github.com/repos/SocialiteProviders/Manager/zipball/e3e8e78b9a3060801cd008941a0894a0a0c479e1", + "reference": "e3e8e78b9a3060801cd008941a0894a0a0c479e1", "shasum": "" }, "require": { + "illuminate/support": "~5.4|~5.7.0|~5.8.0|^6.0", "laravel/socialite": "~3.0|~4.0", "php": "^5.6 || ^7.0" }, @@ -2600,10 +2639,14 @@ { "name": "Anton Komarev", "email": "a.komarev@cybercog.su" + }, + { + "name": "Miguel Piedrafita", + "email": "soy@miguelpiedrafita.com" } ], "description": "Easily add new or override built-in providers in Laravel Socialite.", - "time": "2019-01-16T07:58:54+00:00" + "time": "2019-09-09T03:07:52+00:00" }, { "name": "socialiteproviders/microsoft-azure", @@ -2755,25 +2798,28 @@ }, { "name": "swiftmailer/swiftmailer", - "version": "v6.1.3", + "version": "v6.2.1", "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", @@ -2782,7 +2828,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "6.1-dev" + "dev-master": "6.2-dev" } }, "autoload": { @@ -2810,49 +2856,55 @@ "mail", "mailer" ], - "time": "2018-09-11T07:12:52+00:00" + "time": "2019-04-21T09:21:45+00:00" }, { "name": "symfony/console", - "version": "v3.3.6", + "version": "v4.3.4", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "b0878233cb5c4391347e5495089c7af11b8e6201" + "reference": "de63799239b3881b8a08f8481b22348f77ed7b36" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/b0878233cb5c4391347e5495089c7af11b8e6201", - "reference": "b0878233cb5c4391347e5495089c7af11b8e6201", + "url": "https://api.github.com/repos/symfony/console/zipball/de63799239b3881b8a08f8481b22348f77ed7b36", + "reference": "de63799239b3881b8a08f8481b22348f77ed7b36", "shasum": "" }, "require": { - "php": ">=5.5.9", - "symfony/debug": "~2.8|~3.0", - "symfony/polyfill-mbstring": "~1.0" + "php": "^7.1.3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.8", + "symfony/service-contracts": "^1.1" }, "conflict": { - "symfony/dependency-injection": "<3.3" + "symfony/dependency-injection": "<3.4", + "symfony/event-dispatcher": "<4.3", + "symfony/process": "<3.3" + }, + "provide": { + "psr/log-implementation": "1.0" }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "~3.3", - "symfony/dependency-injection": "~3.3", - "symfony/event-dispatcher": "~2.8|~3.0", - "symfony/filesystem": "~2.8|~3.0", - "symfony/http-kernel": "~2.8|~3.0", - "symfony/process": "~2.8|~3.0" + "symfony/config": "~3.4|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/event-dispatcher": "^4.3", + "symfony/lock": "~3.4|~4.0", + "symfony/process": "~3.4|~4.0", + "symfony/var-dumper": "^4.3" }, "suggest": { "psr/log": "For using the console logger", "symfony/event-dispatcher": "", - "symfony/filesystem": "", + "symfony/lock": "", "symfony/process": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.3-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -2879,29 +2931,29 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2017-07-29T21:27:59+00:00" + "time": "2019-08-26T08:26:39+00:00" }, { "name": "symfony/css-selector", - "version": "v3.1.10", + "version": "v4.3.4", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "722a87478a72d95dc2a3bcf41dc9c2d13fd4cb2d" + "reference": "c6e5e2a00db768c92c3ae131532af4e1acc7bd03" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/722a87478a72d95dc2a3bcf41dc9c2d13fd4cb2d", - "reference": "722a87478a72d95dc2a3bcf41dc9c2d13fd4cb2d", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/c6e5e2a00db768c92c3ae131532af4e1acc7bd03", + "reference": "c6e5e2a00db768c92c3ae131532af4e1acc7bd03", "shasum": "" }, "require": { - "php": ">=5.5.9" + "php": "^7.1.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -2917,14 +2969,14 @@ "MIT" ], "authors": [ - { - "name": "Jean-François Simon", - "email": "jeanfrancois.simon@sensiolabs.com" - }, { "name": "Fabien Potencier", "email": "fabien@symfony.com" }, + { + "name": "Jean-François Simon", + "email": "jeanfrancois.simon@sensiolabs.com" + }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" @@ -2932,36 +2984,36 @@ ], "description": "Symfony CssSelector Component", "homepage": "https://symfony.com", - "time": "2017-01-02T20:31:54+00:00" + "time": "2019-08-20T14:07:54+00:00" }, { "name": "symfony/debug", - "version": "v3.3.6", + "version": "v4.3.4", "source": { "type": "git", "url": "https://github.com/symfony/debug.git", - "reference": "7c13ae8ce1e2adbbd574fc39de7be498e1284e13" + "reference": "afcdea44a2e399c1e4b52246ec8d54c715393ced" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/7c13ae8ce1e2adbbd574fc39de7be498e1284e13", - "reference": "7c13ae8ce1e2adbbd574fc39de7be498e1284e13", + "url": "https://api.github.com/repos/symfony/debug/zipball/afcdea44a2e399c1e4b52246ec8d54c715393ced", + "reference": "afcdea44a2e399c1e4b52246ec8d54c715393ced", "shasum": "" }, "require": { - "php": ">=5.5.9", + "php": "^7.1.3", "psr/log": "~1.0" }, "conflict": { - "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" + "symfony/http-kernel": "<3.4" }, "require-dev": { - "symfony/http-kernel": "~2.8|~3.0" + "symfony/http-kernel": "~3.4|~4.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.3-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -2988,34 +3040,41 @@ ], "description": "Symfony Debug Component", "homepage": "https://symfony.com", - "time": "2017-07-28T15:27:31+00:00" + "time": "2019-08-20T14:27:59+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v3.3.6", + "version": "v4.3.4", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "67535f1e3fd662bdc68d7ba317c93eecd973617e" + "reference": "429d0a1451d4c9c4abe1959b2986b88794b9b7d2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/67535f1e3fd662bdc68d7ba317c93eecd973617e", - "reference": "67535f1e3fd662bdc68d7ba317c93eecd973617e", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/429d0a1451d4c9c4abe1959b2986b88794b9b7d2", + "reference": "429d0a1451d4c9c4abe1959b2986b88794b9b7d2", "shasum": "" }, "require": { - "php": ">=5.5.9" + "php": "^7.1.3", + "symfony/event-dispatcher-contracts": "^1.1" }, "conflict": { - "symfony/dependency-injection": "<3.3" + "symfony/dependency-injection": "<3.4" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "1.1" }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "~2.8|~3.0", - "symfony/dependency-injection": "~3.3", - "symfony/expression-language": "~2.8|~3.0", - "symfony/stopwatch": "~2.8|~3.0" + "symfony/config": "~3.4|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/expression-language": "~3.4|~4.0", + "symfony/http-foundation": "^3.4|^4.0", + "symfony/service-contracts": "^1.1", + "symfony/stopwatch": "~3.4|~4.0" }, "suggest": { "symfony/dependency-injection": "", @@ -3024,7 +3083,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.3-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -3051,29 +3110,87 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2017-06-09T14:53:08+00:00" + "time": "2019-08-26T08:55:16+00:00" }, { - "name": "symfony/finder", - "version": "v3.3.6", + "name": "symfony/event-dispatcher-contracts", + "version": "v1.1.5", "source": { "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "baea7f66d30854ad32988c11a09d7ffd485810c4" + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "c61766f4440ca687de1084a5c00b08e167a2575c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/baea7f66d30854ad32988c11a09d7ffd485810c4", - "reference": "baea7f66d30854ad32988c11a09d7ffd485810c4", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/c61766f4440ca687de1084a5c00b08e167a2575c", + "reference": "c61766f4440ca687de1084a5c00b08e167a2575c", "shasum": "" }, "require": { - "php": ">=5.5.9" + "php": "^7.1.3" + }, + "suggest": { + "psr/event-dispatcher": "", + "symfony/event-dispatcher-implementation": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.3-dev" + "dev-master": "1.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\EventDispatcher\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to dispatching event", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "time": "2019-06-20T06:46:26+00:00" + }, + { + "name": "symfony/finder", + "version": "v4.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "86c1c929f0a4b24812e1eb109262fc3372c8e9f2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/86c1c929f0a4b24812e1eb109262fc3372c8e9f2", + "reference": "86c1c929f0a4b24812e1eb109262fc3372c8e9f2", + "shasum": "" + }, + "require": { + "php": "^7.1.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.3-dev" } }, "autoload": { @@ -3100,33 +3217,35 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2017-06-01T21:01:25+00:00" + "time": "2019-08-14T12:26:46+00:00" }, { "name": "symfony/http-foundation", - "version": "v3.3.6", + "version": "v4.3.4", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "49e8cd2d59a7aa9bfab19e46de680c76e500a031" + "reference": "d804bea118ff340a12e22a79f9c7e7eb56b35adc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/49e8cd2d59a7aa9bfab19e46de680c76e500a031", - "reference": "49e8cd2d59a7aa9bfab19e46de680c76e500a031", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/d804bea118ff340a12e22a79f9c7e7eb56b35adc", + "reference": "d804bea118ff340a12e22a79f9c7e7eb56b35adc", "shasum": "" }, "require": { - "php": ">=5.5.9", + "php": "^7.1.3", + "symfony/mime": "^4.3", "symfony/polyfill-mbstring": "~1.1" }, "require-dev": { - "symfony/expression-language": "~2.8|~3.0" + "predis/predis": "~1.0", + "symfony/expression-language": "~3.4|~4.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.3-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -3153,66 +3272,72 @@ ], "description": "Symfony HttpFoundation Component", "homepage": "https://symfony.com", - "time": "2017-07-21T11:04:46+00:00" + "time": "2019-08-26T08:55:16+00:00" }, { "name": "symfony/http-kernel", - "version": "v3.3.6", + "version": "v4.3.4", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "db10d05f1d95e4168e638db7a81c79616f568ea5" + "reference": "5e0fc71be03d52cd00c423061cfd300bd6f92a52" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/db10d05f1d95e4168e638db7a81c79616f568ea5", - "reference": "db10d05f1d95e4168e638db7a81c79616f568ea5", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/5e0fc71be03d52cd00c423061cfd300bd6f92a52", + "reference": "5e0fc71be03d52cd00c423061cfd300bd6f92a52", "shasum": "" }, "require": { - "php": ">=5.5.9", + "php": "^7.1.3", "psr/log": "~1.0", - "symfony/debug": "~2.8|~3.0", - "symfony/event-dispatcher": "~2.8|~3.0", - "symfony/http-foundation": "~3.3" + "symfony/debug": "~3.4|~4.0", + "symfony/event-dispatcher": "^4.3", + "symfony/http-foundation": "^4.1.1", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-php73": "^1.9" }, "conflict": { - "symfony/config": "<2.8", - "symfony/dependency-injection": "<3.3", - "symfony/var-dumper": "<3.3", + "symfony/browser-kit": "<4.3", + "symfony/config": "<3.4", + "symfony/dependency-injection": "<4.3", + "symfony/translation": "<4.2", + "symfony/var-dumper": "<4.1.1", "twig/twig": "<1.34|<2.4,>=2" }, + "provide": { + "psr/log-implementation": "1.0" + }, "require-dev": { "psr/cache": "~1.0", - "symfony/browser-kit": "~2.8|~3.0", - "symfony/class-loader": "~2.8|~3.0", - "symfony/config": "~2.8|~3.0", - "symfony/console": "~2.8|~3.0", - "symfony/css-selector": "~2.8|~3.0", - "symfony/dependency-injection": "~3.3", - "symfony/dom-crawler": "~2.8|~3.0", - "symfony/expression-language": "~2.8|~3.0", - "symfony/finder": "~2.8|~3.0", - "symfony/process": "~2.8|~3.0", - "symfony/routing": "~2.8|~3.0", - "symfony/stopwatch": "~2.8|~3.0", - "symfony/templating": "~2.8|~3.0", - "symfony/translation": "~2.8|~3.0", - "symfony/var-dumper": "~3.3" + "symfony/browser-kit": "^4.3", + "symfony/config": "~3.4|~4.0", + "symfony/console": "~3.4|~4.0", + "symfony/css-selector": "~3.4|~4.0", + "symfony/dependency-injection": "^4.3", + "symfony/dom-crawler": "~3.4|~4.0", + "symfony/expression-language": "~3.4|~4.0", + "symfony/finder": "~3.4|~4.0", + "symfony/process": "~3.4|~4.0", + "symfony/routing": "~3.4|~4.0", + "symfony/stopwatch": "~3.4|~4.0", + "symfony/templating": "~3.4|~4.0", + "symfony/translation": "~4.2", + "symfony/translation-contracts": "^1.1", + "symfony/var-dumper": "^4.1.1", + "twig/twig": "^1.34|^2.4" }, "suggest": { "symfony/browser-kit": "", - "symfony/class-loader": "", "symfony/config": "", "symfony/console": "", "symfony/dependency-injection": "", - "symfony/finder": "", "symfony/var-dumper": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.3-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -3239,20 +3364,79 @@ ], "description": "Symfony HttpKernel Component", "homepage": "https://symfony.com", - "time": "2017-08-01T10:25:59+00:00" + "time": "2019-08-26T16:47:42+00:00" }, { - "name": "symfony/polyfill-ctype", - "version": "v1.10.0", + "name": "symfony/mime", + "version": "v4.3.4", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "e3d826245268269cd66f8326bd8bc066687b4a19" + "url": "https://github.com/symfony/mime.git", + "reference": "987a05df1c6ac259b34008b932551353f4f408df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19", - "reference": "e3d826245268269cd66f8326bd8bc066687b4a19", + "url": "https://api.github.com/repos/symfony/mime/zipball/987a05df1c6ac259b34008b932551353f4f408df", + "reference": "987a05df1c6ac259b34008b932551353f4f408df", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0" + }, + "require-dev": { + "egulias/email-validator": "^2.1.10", + "symfony/dependency-injection": "~3.4|^4.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.3-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Mime\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A library to manipulate MIME messages", + "homepage": "https://symfony.com", + "keywords": [ + "mime", + "mime-type" + ], + "time": "2019-08-22T08:16:11+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.12.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "550ebaac289296ce228a706d0867afc34687e3f4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/550ebaac289296ce228a706d0867afc34687e3f4", + "reference": "550ebaac289296ce228a706d0867afc34687e3f4", "shasum": "" }, "require": { @@ -3264,7 +3448,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.9-dev" + "dev-master": "1.12-dev" } }, "autoload": { @@ -3280,13 +3464,13 @@ "MIT" ], "authors": [ - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - }, { "name": "Gert de Pagter", "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], "description": "Symfony polyfill for ctype functions", @@ -3297,20 +3481,141 @@ "polyfill", "portable" ], - "time": "2018-08-06T14:22:27+00:00" + "time": "2019-08-06T08:03:45+00:00" }, { - "name": "symfony/polyfill-mbstring", - "version": "v1.10.0", + "name": "symfony/polyfill-iconv", + "version": "v1.12.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "c79c051f5b3a46be09205c73b80b346e4153e494" + "url": "https://github.com/symfony/polyfill-iconv.git", + "reference": "685968b11e61a347c18bf25db32effa478be610f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/c79c051f5b3a46be09205c73b80b346e4153e494", - "reference": "c79c051f5b3a46be09205c73b80b346e4153e494", + "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/685968b11e61a347c18bf25db32effa478be610f", + "reference": "685968b11e61a347c18bf25db32effa478be610f", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-iconv": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.12-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Iconv\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Iconv extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "iconv", + "polyfill", + "portable", + "shim" + ], + "time": "2019-08-06T08:03:45+00:00" + }, + { + "name": "symfony/polyfill-intl-idn", + "version": "v1.12.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "6af626ae6fa37d396dc90a399c0ff08e5cfc45b2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/6af626ae6fa37d396dc90a399c0ff08e5cfc45b2", + "reference": "6af626ae6fa37d396dc90a399c0ff08e5cfc45b2", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "symfony/polyfill-mbstring": "^1.3", + "symfony/polyfill-php72": "^1.9" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.12-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Intl\\Idn\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Laurent Bassin", + "email": "laurent@bassin.info" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "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" + ], + "time": "2019-08-06T08:03:45+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.12.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "b42a2f66e8f1b15ccf25652c3424265923eb4f17" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/b42a2f66e8f1b15ccf25652c3424265923eb4f17", + "reference": "b42a2f66e8f1b15ccf25652c3424265923eb4f17", "shasum": "" }, "require": { @@ -3322,7 +3627,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.9-dev" + "dev-master": "1.12-dev" } }, "autoload": { @@ -3356,29 +3661,142 @@ "portable", "shim" ], - "time": "2018-09-21T13:07:52+00:00" + "time": "2019-08-06T08:03:45+00:00" }, { - "name": "symfony/process", - "version": "v3.3.6", + "name": "symfony/polyfill-php72", + "version": "v1.12.0", "source": { "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "07432804942b9f6dd7b7377faf9920af5f95d70a" + "url": "https://github.com/symfony/polyfill-php72.git", + "reference": "04ce3335667451138df4307d6a9b61565560199e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/07432804942b9f6dd7b7377faf9920af5f95d70a", - "reference": "07432804942b9f6dd7b7377faf9920af5f95d70a", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/04ce3335667451138df4307d6a9b61565560199e", + "reference": "04ce3335667451138df4307d6a9b61565560199e", "shasum": "" }, "require": { - "php": ">=5.5.9" + "php": ">=5.3.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.3-dev" + "dev-master": "1.12-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php72\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "time": "2019-08-06T08:03:45+00:00" + }, + { + "name": "symfony/polyfill-php73", + "version": "v1.12.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "2ceb49eaccb9352bff54d22570276bb75ba4a188" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/2ceb49eaccb9352bff54d22570276bb75ba4a188", + "reference": "2ceb49eaccb9352bff54d22570276bb75ba4a188", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.12-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "time": "2019-08-06T08:03:45+00:00" + }, + { + "name": "symfony/process", + "version": "v4.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "e89969c00d762349f078db1128506f7f3dcc0d4a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/e89969c00d762349f078db1128506f7f3dcc0d4a", + "reference": "e89969c00d762349f078db1128506f7f3dcc0d4a", + "shasum": "" + }, + "require": { + "php": "^7.1.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.3-dev" } }, "autoload": { @@ -3405,44 +3823,42 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2017-07-13T13:05:09+00:00" + "time": "2019-08-26T08:26:39+00:00" }, { "name": "symfony/routing", - "version": "v3.3.6", + "version": "v4.3.4", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "4aee1a917fd4859ff8b51b9fd1dfb790a5ecfa26" + "reference": "ff1049f6232dc5b6023b1ff1c6de56f82bcd264f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/4aee1a917fd4859ff8b51b9fd1dfb790a5ecfa26", - "reference": "4aee1a917fd4859ff8b51b9fd1dfb790a5ecfa26", + "url": "https://api.github.com/repos/symfony/routing/zipball/ff1049f6232dc5b6023b1ff1c6de56f82bcd264f", + "reference": "ff1049f6232dc5b6023b1ff1c6de56f82bcd264f", "shasum": "" }, "require": { - "php": ">=5.5.9" + "php": "^7.1.3" }, "conflict": { - "symfony/config": "<2.8", - "symfony/dependency-injection": "<3.3", - "symfony/yaml": "<3.3" + "symfony/config": "<4.2", + "symfony/dependency-injection": "<3.4", + "symfony/yaml": "<3.4" }, "require-dev": { - "doctrine/annotations": "~1.0", - "doctrine/common": "~2.2", + "doctrine/annotations": "~1.2", "psr/log": "~1.0", - "symfony/config": "~2.8|~3.0", - "symfony/dependency-injection": "~3.3", - "symfony/expression-language": "~2.8|~3.0", - "symfony/http-foundation": "~2.8|~3.0", - "symfony/yaml": "~3.3" + "symfony/config": "~4.2", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/expression-language": "~3.4|~4.0", + "symfony/http-foundation": "~3.4|~4.0", + "symfony/yaml": "~3.4|~4.0" }, "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" @@ -3450,7 +3866,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.3-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -3483,45 +3899,114 @@ "uri", "url" ], - "time": "2017-07-21T17:43:13+00:00" + "time": "2019-08-26T08:26:39+00:00" }, { - "name": "symfony/translation", - "version": "v3.3.6", + "name": "symfony/service-contracts", + "version": "v1.1.6", "source": { "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "35dd5fb003c90e8bd4d8cabdf94bf9c96d06fdc3" + "url": "https://github.com/symfony/service-contracts.git", + "reference": "ea7263d6b6d5f798b56a45a5b8d686725f2719a3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/35dd5fb003c90e8bd4d8cabdf94bf9c96d06fdc3", - "reference": "35dd5fb003c90e8bd4d8cabdf94bf9c96d06fdc3", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/ea7263d6b6d5f798b56a45a5b8d686725f2719a3", + "reference": "ea7263d6b6d5f798b56a45a5b8d686725f2719a3", "shasum": "" }, "require": { - "php": ">=5.5.9", - "symfony/polyfill-mbstring": "~1.0" + "php": "^7.1.3", + "psr/container": "^1.0" + }, + "suggest": { + "symfony/service-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "time": "2019-08-20T14:44:19+00:00" + }, + { + "name": "symfony/translation", + "version": "v4.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "28498169dd334095fa981827992f3a24d50fed0f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/28498169dd334095fa981827992f3a24d50fed0f", + "reference": "28498169dd334095fa981827992f3a24d50fed0f", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/translation-contracts": "^1.1.6" }, "conflict": { - "symfony/config": "<2.8", - "symfony/yaml": "<3.3" + "symfony/config": "<3.4", + "symfony/dependency-injection": "<3.4", + "symfony/yaml": "<3.4" + }, + "provide": { + "symfony/translation-implementation": "1.0" }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "~2.8|~3.0", - "symfony/intl": "^2.8.18|^3.2.5", - "symfony/yaml": "~3.3" + "symfony/config": "~3.4|~4.0", + "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/service-contracts": "^1.1.2", + "symfony/var-dumper": "~3.4|~4.0", + "symfony/yaml": "~3.4|~4.0" }, "suggest": { - "psr/log": "To use logging capability in translator", + "psr/log-implementation": "To use logging capability in translator", "symfony/config": "", "symfony/yaml": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.3-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -3548,41 +4033,106 @@ ], "description": "Symfony Translation Component", "homepage": "https://symfony.com", - "time": "2017-06-24T16:45:30+00:00" + "time": "2019-08-26T08:55:16+00:00" }, { - "name": "symfony/var-dumper", - "version": "v3.3.6", + "name": "symfony/translation-contracts", + "version": "v1.1.6", "source": { "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "b2623bccb969ad595c2090f9be498b74670d0663" + "url": "https://github.com/symfony/translation-contracts.git", + "reference": "325b17c24f3ee23cbecfa63ba809c6d89b5fa04a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/b2623bccb969ad595c2090f9be498b74670d0663", - "reference": "b2623bccb969ad595c2090f9be498b74670d0663", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/325b17c24f3ee23cbecfa63ba809c6d89b5fa04a", + "reference": "325b17c24f3ee23cbecfa63ba809c6d89b5fa04a", "shasum": "" }, "require": { - "php": ">=5.5.9", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0" - }, - "require-dev": { - "ext-iconv": "*", - "twig/twig": "~1.34|~2.4" + "php": "^7.1.3" }, "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-symfony_debug": "" + "symfony/translation-implementation": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.3-dev" + "dev-master": "1.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Translation\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to translation", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "time": "2019-08-02T12:15:04+00:00" + }, + { + "name": "symfony/var-dumper", + "version": "v4.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-dumper.git", + "reference": "641043e0f3e615990a0f29479f9c117e8a6698c6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/641043e0f3e615990a0f29479f9c117e8a6698c6", + "reference": "641043e0f3e615990a0f29479f9c117e8a6698c6", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php72": "~1.5" + }, + "conflict": { + "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", + "symfony/console": "<3.4" + }, + "require-dev": { + "ext-iconv": "*", + "symfony/console": "~3.4|~4.0", + "symfony/process": "~3.4|~4.0", + "twig/twig": "~1.34|~2.4" + }, + "suggest": { + "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", + "ext-intl": "To show region name in time zone dump", + "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" + }, + "bin": [ + "Resources/bin/var-dump-server" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.3-dev" } }, "autoload": { @@ -3616,7 +4166,7 @@ "debug", "dump" ], - "time": "2017-07-28T06:06:09+00:00" + "time": "2019-08-26T08:26:39+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", @@ -3667,28 +4217,30 @@ }, { "name": "vlucas/phpdotenv", - "version": "v2.5.2", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "cfd5dc225767ca154853752abc93aeec040fcf36" + "reference": "1bdf24f065975594f6a117f0f1f6cabf1333b156" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/cfd5dc225767ca154853752abc93aeec040fcf36", - "reference": "cfd5dc225767ca154853752abc93aeec040fcf36", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/1bdf24f065975594f6a117f0f1f6cabf1333b156", + "reference": "1bdf24f065975594f6a117f0f1f6cabf1333b156", "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 || ^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.5-dev" + "dev-master": "3.6-dev" } }, "autoload": { @@ -3701,10 +4253,15 @@ "BSD-3-Clause" ], "authors": [ + { + "name": "Graham Campbell", + "email": "graham@alt-three.com", + "homepage": "https://gjcampbell.co.uk/" + }, { "name": "Vance Lucas", "email": "vance@vancelucas.com", - "homepage": "http://www.vancelucas.com" + "homepage": "https://vancelucas.com/" } ], "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", @@ -3713,28 +4270,28 @@ "env", "environment" ], - "time": "2018-10-30T17:29:25+00:00" + "time": "2019-09-10T21:37:39+00:00" } ], "packages-dev": [ { "name": "barryvdh/laravel-debugbar", - "version": "v3.2.1", + "version": "v3.2.8", "source": { "type": "git", "url": "https://github.com/barryvdh/laravel-debugbar.git", - "reference": "9d5caf43c5f3a3aea2178942f281054805872e7c" + "reference": "18208d64897ab732f6c04a19b319fe8f1d57a9c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/9d5caf43c5f3a3aea2178942f281054805872e7c", - "reference": "9d5caf43c5f3a3aea2178942f281054805872e7c", + "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/18208d64897ab732f6c04a19b319fe8f1d57a9c0", + "reference": "18208d64897ab732f6c04a19b319fe8f1d57a9c0", "shasum": "" }, "require": { - "illuminate/routing": "5.5.x|5.6.x|5.7.x", - "illuminate/session": "5.5.x|5.6.x|5.7.x", - "illuminate/support": "5.5.x|5.6.x|5.7.x", + "illuminate/routing": "^5.5|^6", + "illuminate/session": "^5.5|^6", + "illuminate/support": "^5.5|^6", "maximebf/debugbar": "~1.15.0", "php": ">=7.0", "symfony/debug": "^3|^4", @@ -3783,46 +4340,43 @@ "profiler", "webprofiler" ], - "time": "2018-11-09T08:37:55+00:00" + "time": "2019-08-29T07:01:03+00:00" }, { "name": "barryvdh/laravel-ide-helper", - "version": "v2.5.3", + "version": "v2.6.5", "source": { "type": "git", "url": "https://github.com/barryvdh/laravel-ide-helper.git", - "reference": "3d7f1240896a075aa23b13f82dfcbe165dadeef2" + "reference": "8740a9a158d3dd5cfc706a9d4cc1bf7a518f99f3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/3d7f1240896a075aa23b13f82dfcbe165dadeef2", - "reference": "3d7f1240896a075aa23b13f82dfcbe165dadeef2", + "url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/8740a9a158d3dd5cfc706a9d4cc1bf7a518f99f3", + "reference": "8740a9a158d3dd5cfc706a9d4cc1bf7a518f99f3", "shasum": "" }, "require": { "barryvdh/reflection-docblock": "^2.0.6", "composer/composer": "^1.6", - "illuminate/console": "^5.5,<5.8", - "illuminate/filesystem": "^5.5,<5.8", - "illuminate/support": "^5.5,<5.8", + "doctrine/dbal": "~2.3", + "illuminate/console": "^5.5|^6", + "illuminate/filesystem": "^5.5|^6", + "illuminate/support": "^5.5|^6", "php": ">=7" }, "require-dev": { - "doctrine/dbal": "~2.3", - "illuminate/config": "^5.1,<5.8", - "illuminate/view": "^5.1,<5.8", + "illuminate/config": "^5.5|^6", + "illuminate/view": "^5.5|^6", "phpro/grumphp": "^0.14", "phpunit/phpunit": "4.*", "scrutinizer/ocular": "~1.1", "squizlabs/php_codesniffer": "^3" }, - "suggest": { - "doctrine/dbal": "Load information from the database about models for phpdocs (~2.3)" - }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.5-dev" + "dev-master": "2.6-dev" }, "laravel": { "providers": [ @@ -3857,7 +4411,7 @@ "phpstorm", "sublime" ], - "time": "2018-12-19T12:12:05+00:00" + "time": "2019-09-08T09:56:38+00:00" }, { "name": "barryvdh/reflection-docblock", @@ -3910,25 +4464,25 @@ }, { "name": "composer/ca-bundle", - "version": "1.1.3", + "version": "1.2.4", "source": { "type": "git", "url": "https://github.com/composer/ca-bundle.git", - "reference": "8afa52cd417f4ec417b4bfe86b68106538a87660" + "reference": "10bb96592168a0f8e8f6dcde3532d9fa50b0b527" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/8afa52cd417f4ec417b4bfe86b68106538a87660", - "reference": "8afa52cd417f4ec417b4bfe86b68106538a87660", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/10bb96592168a0f8e8f6dcde3532d9fa50b0b527", + "reference": "10bb96592168a0f8e8f6dcde3532d9fa50b0b527", "shasum": "" }, "require": { "ext-openssl": "*", "ext-pcre": "*", - "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": "^4.8.35 || ^5.7 || 6.5 - 8", "psr/log": "^1.0", "symfony/process": "^2.5 || ^3.0 || ^4.0" }, @@ -3962,20 +4516,20 @@ "ssl", "tls" ], - "time": "2018-10-18T06:09:13+00:00" + "time": "2019-08-30T08:44:50+00:00" }, { "name": "composer/composer", - "version": "1.8.0", + "version": "1.9.0", "source": { "type": "git", "url": "https://github.com/composer/composer.git", - "reference": "d8aef3af866b28786ce9b8647e52c42496436669" + "reference": "314aa57fdcfc942065996f59fb73a8b3f74f3fa5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/composer/zipball/d8aef3af866b28786ce9b8647e52c42496436669", - "reference": "d8aef3af866b28786ce9b8647e52c42496436669", + "url": "https://api.github.com/repos/composer/composer/zipball/314aa57fdcfc942065996f59fb73a8b3f74f3fa5", + "reference": "314aa57fdcfc942065996f59fb73a8b3f74f3fa5", "shasum": "" }, "require": { @@ -4011,7 +4565,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.8-dev" + "dev-master": "1.9-dev" } }, "autoload": { @@ -4035,27 +4589,27 @@ "homepage": "http://seld.be" } ], - "description": "Composer helps you declare, manage and install dependencies of PHP projects, ensuring you have the right stack everywhere.", + "description": "Composer helps you declare, manage and install dependencies of PHP projects. It ensures you have the right stack everywhere.", "homepage": "https://getcomposer.org/", "keywords": [ "autoload", "dependency", "package" ], - "time": "2018-12-03T09:31:16+00:00" + "time": "2019-08-02T18:55:33+00:00" }, { "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": { @@ -4104,28 +4658,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.2", "source": { "type": "git", "url": "https://github.com/composer/spdx-licenses.git", - "reference": "7a9556b22bd9d4df7cad89876b00af58ef20d3a2" + "reference": "7ac1e6aec371357df067f8a688c3d6974df68fa5" }, "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/7ac1e6aec371357df067f8a688c3d6974df68fa5", + "reference": "7ac1e6aec371357df067f8a688c3d6974df68fa5", "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": { @@ -4165,20 +4718,20 @@ "spdx", "validator" ], - "time": "2018-11-01T09:45:54+00:00" + "time": "2019-07-29T10:31:59+00:00" }, { "name": "composer/xdebug-handler", - "version": "1.3.1", + "version": "1.3.3", "source": { "type": "git", "url": "https://github.com/composer/xdebug-handler.git", - "reference": "dc523135366eb68f22268d069ea7749486458562" + "reference": "46867cbf8ca9fb8d60c506895449eb799db1184f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/dc523135366eb68f22268d069ea7749486458562", - "reference": "dc523135366eb68f22268d069ea7749486458562", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/46867cbf8ca9fb8d60c506895449eb799db1184f", + "reference": "46867cbf8ca9fb8d60c506895449eb799db1184f", "shasum": "" }, "require": { @@ -4209,36 +4762,38 @@ "Xdebug", "performance" ], - "time": "2018-11-29T10:59:02+00:00" + "time": "2019-05-27T17:52:04+00:00" }, { "name": "doctrine/instantiator", - "version": "1.0.5", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" + "reference": "a2c590166b2133a4633738648b6b064edae0814a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/a2c590166b2133a4633738648b6b064edae0814a", + "reference": "a2c590166b2133a4633738648b6b064edae0814a", "shasum": "" }, "require": { - "php": ">=5.3,<8.0-DEV" + "php": "^7.1" }, "require-dev": { - "athletic/athletic": "~0.1.8", + "doctrine/coding-standard": "^6.0", "ext-pdo": "*", "ext-phar": "*", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~2.0" + "phpbench/phpbench": "^0.13", + "phpstan/phpstan-phpunit": "^0.11", + "phpstan/phpstan-shim": "^0.11", + "phpunit/phpunit": "^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.2.x-dev" } }, "autoload": { @@ -4258,25 +4813,191 @@ } ], "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" ], - "time": "2015-06-14T21:17:01+00:00" + "time": "2019-03-17T17:37:11+00:00" }, { - "name": "filp/whoops", - "version": "2.3.1", + "name": "facade/flare-client-php", + "version": "1.0.4", "source": { "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "bc0fd11bc455cc20ee4b5edabc63ebbf859324c7" + "url": "https://github.com/facade/flare-client-php.git", + "reference": "7128b251b48f24ef64e5cddd7f8d40cc3a06fd3e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/bc0fd11bc455cc20ee4b5edabc63ebbf859324c7", - "reference": "bc0fd11bc455cc20ee4b5edabc63ebbf859324c7", + "url": "https://api.github.com/repos/facade/flare-client-php/zipball/7128b251b48f24ef64e5cddd7f8d40cc3a06fd3e", + "reference": "7128b251b48f24ef64e5cddd7f8d40cc3a06fd3e", + "shasum": "" + }, + "require": { + "facade/ignition-contracts": "~1.0", + "illuminate/pipeline": "~5.5|~5.6|~5.7|~5.8|^6.0", + "php": "^7.1", + "symfony/http-foundation": "~3.3|~4.1", + "symfony/var-dumper": "^3.4|^4.0" + }, + "require-dev": { + "larapack/dd": "^1.1", + "phpunit/phpunit": "^7.0", + "spatie/phpunit-snapshot-assertions": "^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "Facade\\FlareClient\\": "src" + }, + "files": [ + "src/helpers.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Send PHP errors to Flare", + "homepage": "https://github.com/facade/flare-client-php", + "keywords": [ + "exception", + "facade", + "flare", + "reporting" + ], + "time": "2019-09-11T14:19:56+00:00" + }, + { + "name": "facade/ignition", + "version": "1.6.5", + "source": { + "type": "git", + "url": "https://github.com/facade/ignition.git", + "reference": "97244f6d511332f3574acab8242c09ddcfda892b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/facade/ignition/zipball/97244f6d511332f3574acab8242c09ddcfda892b", + "reference": "97244f6d511332f3574acab8242c09ddcfda892b", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-mbstring": "*", + "facade/flare-client-php": "^1.0.4", + "facade/ignition-contracts": "^1.0", + "filp/whoops": "^2.4", + "illuminate/support": "~5.5.0 || ~5.6.0 || ~5.7.0 || ~5.8.0 || ^6.0", + "monolog/monolog": "^1.12 || ^2.0", + "php": "^7.1", + "scrivo/highlight.php": "^9.15", + "symfony/console": "^3.4 || ^4.0", + "symfony/var-dumper": "^3.4 || ^4.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.14", + "mockery/mockery": "^1.2", + "orchestra/testbench": "^3.5 || ^3.6 || ^3.7 || ^3.8 || ^4.0" + }, + "suggest": { + "laravel/telescope": "^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + }, + "laravel": { + "providers": [ + "Facade\\Ignition\\IgnitionServiceProvider" + ], + "aliases": { + "Flare": "Facade\\Ignition\\Facades\\Flare" + } + } + }, + "autoload": { + "psr-4": { + "Facade\\Ignition\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A beautiful error page for Laravel applications.", + "homepage": "https://github.com/facade/ignition", + "keywords": [ + "error", + "flare", + "laravel", + "page" + ], + "time": "2019-09-13T13:38:04+00:00" + }, + { + "name": "facade/ignition-contracts", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/facade/ignition-contracts.git", + "reference": "f445db0fb86f48e205787b2592840dd9c80ded28" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/f445db0fb86f48e205787b2592840dd9c80ded28", + "reference": "f445db0fb86f48e205787b2592840dd9c80ded28", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Facade\\IgnitionContracts\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "homepage": "https://flareapp.io", + "role": "Developer" + } + ], + "description": "Solution contracts for Ignition", + "homepage": "https://github.com/facade/ignition-contracts", + "keywords": [ + "contracts", + "flare", + "ignition" + ], + "time": "2019-08-30T14:06:08+00:00" + }, + { + "name": "filp/whoops", + "version": "2.5.0", + "source": { + "type": "git", + "url": "https://github.com/filp/whoops.git", + "reference": "cde50e6720a39fdacb240159d3eea6865d51fd96" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/filp/whoops/zipball/cde50e6720a39fdacb240159d3eea6865d51fd96", + "reference": "cde50e6720a39fdacb240159d3eea6865d51fd96", "shasum": "" }, "require": { @@ -4310,8 +5031,8 @@ "authors": [ { "name": "Filipe Dobreira", - "homepage": "https://github.com/filp", - "role": "Developer" + "role": "Developer", + "homepage": "https://github.com/filp" } ], "description": "php error handling for cool kids", @@ -4324,7 +5045,7 @@ "throwable", "whoops" ], - "time": "2018-10-23T09:00:00+00:00" + "time": "2019-08-07T09:00:00+00:00" }, { "name": "fzaninotto/faker", @@ -4424,6 +5145,94 @@ ], "time": "2016-01-20T08:20:44+00:00" }, + { + "name": "jakub-onderka/php-console-color", + "version": "v0.2", + "source": { + "type": "git", + "url": "https://github.com/JakubOnderka/PHP-Console-Color.git", + "reference": "d5deaecff52a0d61ccb613bb3804088da0307191" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Color/zipball/d5deaecff52a0d61ccb613bb3804088da0307191", + "reference": "d5deaecff52a0d61ccb613bb3804088da0307191", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "jakub-onderka/php-code-style": "1.0", + "jakub-onderka/php-parallel-lint": "1.0", + "jakub-onderka/php-var-dump-check": "0.*", + "phpunit/phpunit": "~4.3", + "squizlabs/php_codesniffer": "1.*" + }, + "type": "library", + "autoload": { + "psr-4": { + "JakubOnderka\\PhpConsoleColor\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "authors": [ + { + "name": "Jakub Onderka", + "email": "jakub.onderka@gmail.com" + } + ], + "time": "2018-09-29T17:23:10+00:00" + }, + { + "name": "jakub-onderka/php-console-highlighter", + "version": "v0.4", + "source": { + "type": "git", + "url": "https://github.com/JakubOnderka/PHP-Console-Highlighter.git", + "reference": "9f7a229a69d52506914b4bc61bfdb199d90c5547" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Highlighter/zipball/9f7a229a69d52506914b4bc61bfdb199d90c5547", + "reference": "9f7a229a69d52506914b4bc61bfdb199d90c5547", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "jakub-onderka/php-console-color": "~0.2", + "php": ">=5.4.0" + }, + "require-dev": { + "jakub-onderka/php-code-style": "~1.0", + "jakub-onderka/php-parallel-lint": "~1.0", + "jakub-onderka/php-var-dump-check": "~0.1", + "phpunit/phpunit": "~4.0", + "squizlabs/php_codesniffer": "~1.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "JakubOnderka\\PhpConsoleHighlighter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jakub Onderka", + "email": "acci@acci.cz", + "homepage": "http://www.acci.cz/" + } + ], + "description": "Highlight PHP code in terminal", + "time": "2018-09-29T18:48:56+00:00" + }, { "name": "justinrainbow/json-schema", "version": "5.2.8", @@ -4492,28 +5301,41 @@ }, { "name": "laravel/browser-kit-testing", - "version": "v2.0.1", + "version": "v5.1.3", "source": { "type": "git", "url": "https://github.com/laravel/browser-kit-testing.git", - "reference": "f0bb9f200ec35f9d876ded6eacfbc60868d311b9" + "reference": "cb0cf22cf38fe8796842adc8b9ad550ded2a1377" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/browser-kit-testing/zipball/f0bb9f200ec35f9d876ded6eacfbc60868d311b9", - "reference": "f0bb9f200ec35f9d876ded6eacfbc60868d311b9", + "url": "https://api.github.com/repos/laravel/browser-kit-testing/zipball/cb0cf22cf38fe8796842adc8b9ad550ded2a1377", + "reference": "cb0cf22cf38fe8796842adc8b9ad550ded2a1377", "shasum": "" }, "require": { - "php": ">=5.5.9", - "phpunit/phpunit": "~6.0", - "symfony/css-selector": "~3.1", - "symfony/dom-crawler": "~3.1" + "ext-dom": "*", + "ext-json": "*", + "illuminate/contracts": "~5.7.0|~5.8.0|^6.0", + "illuminate/database": "~5.7.0|~5.8.0|^6.0", + "illuminate/http": "~5.7.0|~5.8.0|^6.0", + "illuminate/support": "~5.7.0|~5.8.0|^6.0", + "mockery/mockery": "^1.0", + "php": ">=7.1.3", + "phpunit/phpunit": "^7.0|^8.0", + "symfony/console": "^4.2", + "symfony/css-selector": "^4.2", + "symfony/dom-crawler": "^4.2", + "symfony/http-foundation": "^4.2", + "symfony/http-kernel": "^4.2" + }, + "require-dev": { + "laravel/framework": "~5.7.0|~5.8.0|^6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -4531,12 +5353,12 @@ "email": "taylor@laravel.com" } ], - "description": "Provides backwards compatibility for BrowserKit testing in Laravel 5.4.", + "description": "Provides backwards compatibility for BrowserKit testing in the latest Laravel release.", "keywords": [ "laravel", "testing" ], - "time": "2017-06-21T11:44:53+00:00" + "time": "2019-07-30T14:57:44+00:00" }, { "name": "maximebf/debugbar", @@ -4601,16 +5423,16 @@ }, { "name": "mockery/mockery", - "version": "1.2.0", + "version": "1.2.3", "source": { "type": "git", "url": "https://github.com/mockery/mockery.git", - "reference": "100633629bf76d57430b86b7098cd6beb996a35a" + "reference": "4eff936d83eb809bde2c57a3cea0ee9643769031" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/100633629bf76d57430b86b7098cd6beb996a35a", - "reference": "100633629bf76d57430b86b7098cd6beb996a35a", + "url": "https://api.github.com/repos/mockery/mockery/zipball/4eff936d83eb809bde2c57a3cea0ee9643769031", + "reference": "4eff936d83eb809bde2c57a3cea0ee9643769031", "shasum": "" }, "require": { @@ -4619,7 +5441,7 @@ "php": ">=5.6.0" }, "require-dev": { - "phpunit/phpunit": "~5.7.10|~6.5|~7.0" + "phpunit/phpunit": "~5.7.10|~6.5|~7.0|~8.0" }, "type": "library", "extra": { @@ -4662,29 +5484,32 @@ "test double", "testing" ], - "time": "2018-10-02T21:52:37+00:00" + "time": "2019-08-07T15:01:07+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.7.0", + "version": "1.9.3", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e" + "reference": "007c053ae6f31bba39dfa19a7726f56e9763bbea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", - "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/007c053ae6f31bba39dfa19a7726f56e9763bbea", + "reference": "007c053ae6f31bba39dfa19a7726f56e9763bbea", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" + "php": "^7.1" + }, + "replace": { + "myclabs/deep-copy": "self.version" }, "require-dev": { "doctrine/collections": "^1.0", "doctrine/common": "^2.6", - "phpunit/phpunit": "^4.1" + "phpunit/phpunit": "^7.1" }, "type": "library", "autoload": { @@ -4707,26 +5532,90 @@ "object", "object graph" ], - "time": "2017-10-19T19:58:43+00:00" + "time": "2019-08-09T12:45:53+00:00" }, { - "name": "phar-io/manifest", - "version": "1.0.1", + "name": "nunomaduro/collision", + "version": "v3.0.1", "source": { "type": "git", - "url": "https://github.com/phar-io/manifest.git", - "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0" + "url": "https://github.com/nunomaduro/collision.git", + "reference": "af42d339fe2742295a54f6fdd42aaa6f8c4aca68" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/2df402786ab5368a0169091f61a7c1e0eb6852d0", - "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/af42d339fe2742295a54f6fdd42aaa6f8c4aca68", + "reference": "af42d339fe2742295a54f6fdd42aaa6f8c4aca68", + "shasum": "" + }, + "require": { + "filp/whoops": "^2.1.4", + "jakub-onderka/php-console-highlighter": "0.3.*|0.4.*", + "php": "^7.1", + "symfony/console": "~2.8|~3.3|~4.0" + }, + "require-dev": { + "laravel/framework": "5.8.*", + "nunomaduro/larastan": "^0.3.0", + "phpstan/phpstan": "^0.11", + "phpunit/phpunit": "~8.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "NunoMaduro\\Collision\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Cli error handling for console/command-line PHP applications.", + "keywords": [ + "artisan", + "cli", + "command-line", + "console", + "error", + "handling", + "laravel", + "laravel-zero", + "php", + "symfony" + ], + "time": "2019-03-07T21:35:13+00:00" + }, + { + "name": "phar-io/manifest", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", + "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", "shasum": "" }, "require": { "ext-dom": "*", "ext-phar": "*", - "phar-io/version": "^1.0.1", + "phar-io/version": "^2.0", "php": "^5.6 || ^7.0" }, "type": "library", @@ -4747,35 +5636,35 @@ "authors": [ { "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" + "role": "Developer", + "email": "arne@blankerts.de" }, { "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" + "role": "Developer", + "email": "sebastian@phpeople.de" }, { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" + "role": "Developer", + "email": "sebastian@phpunit.de" } ], "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", - "time": "2017-03-05T18:14:27+00:00" + "time": "2018-07-08T19:23:20+00:00" }, { "name": "phar-io/version", - "version": "1.0.1", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/phar-io/version.git", - "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df" + "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/a70c0ced4be299a63d32fa96d9281d03e94041df", - "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df", + "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6", + "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6", "shasum": "" }, "require": { @@ -4809,39 +5698,37 @@ } ], "description": "Library for handling version information and constraints", - "time": "2017-03-05T17:38:23+00:00" + "time": "2018-07-08T19:19:57+00:00" }, { "name": "phpdocumentor/reflection-common", - "version": "1.0.1", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6" + "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", - "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/63a995caa1ca9e5590304cd845c15ad6d482a62a", + "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a", "shasum": "" }, "require": { - "php": ">=5.5" + "php": ">=7.1" }, "require-dev": { - "phpunit/phpunit": "^4.6" + "phpunit/phpunit": "~6" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.x-dev" } }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src" - ] + "phpDocumentor\\Reflection\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -4863,30 +5750,30 @@ "reflection", "static analysis" ], - "time": "2017-09-11T18:02:19+00:00" + "time": "2018-08-07T13:53:10+00:00" }, { "name": "phpdocumentor/reflection-docblock", - "version": "4.3.0", + "version": "4.3.2", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "94fd0001232e47129dd3504189fa1c7225010d08" + "reference": "b83ff7cfcfee7827e1e78b637a5904fe6a96698e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08", - "reference": "94fd0001232e47129dd3504189fa1c7225010d08", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/b83ff7cfcfee7827e1e78b637a5904fe6a96698e", + "reference": "b83ff7cfcfee7827e1e78b637a5904fe6a96698e", "shasum": "" }, "require": { "php": "^7.0", - "phpdocumentor/reflection-common": "^1.0.0", - "phpdocumentor/type-resolver": "^0.4.0", + "phpdocumentor/reflection-common": "^1.0.0 || ^2.0.0", + "phpdocumentor/type-resolver": "~0.4 || ^1.0.0", "webmozart/assert": "^1.0" }, "require-dev": { - "doctrine/instantiator": "~1.0.5", + "doctrine/instantiator": "^1.0.5", "mockery/mockery": "^1.0", "phpunit/phpunit": "^6.4" }, @@ -4914,41 +5801,40 @@ } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2017-11-30T07:14:17+00:00" + "time": "2019-09-12T14:27:41+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "0.4.0", + "version": "1.0.1", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7" + "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7", - "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/2e32a6d48972b2c1976ed5d8967145b6cec4a4a9", + "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9", "shasum": "" }, "require": { - "php": "^5.5 || ^7.0", - "phpdocumentor/reflection-common": "^1.0" + "php": "^7.1", + "phpdocumentor/reflection-common": "^2.0" }, "require-dev": { - "mockery/mockery": "^0.9.4", - "phpunit/phpunit": "^5.2||^4.8.24" + "ext-tokenizer": "^7.1", + "mockery/mockery": "~1", + "phpunit/phpunit": "^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.x-dev" } }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src/" - ] + "phpDocumentor\\Reflection\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -4961,20 +5847,21 @@ "email": "me@mikevanriel.com" } ], - "time": "2017-07-14T14:27:02+00:00" + "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "time": "2019-08-22T18:11:29+00:00" }, { "name": "phpspec/prophecy", - "version": "1.8.0", + "version": "1.8.1", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06" + "reference": "1927e75f4ed19131ec9bcc3b002e07fb1173ee76" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06", - "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/1927e75f4ed19131ec9bcc3b002e07fb1173ee76", + "reference": "1927e75f4ed19131ec9bcc3b002e07fb1173ee76", "shasum": "" }, "require": { @@ -4995,8 +5882,8 @@ } }, "autoload": { - "psr-0": { - "Prophecy\\": "src/" + "psr-4": { + "Prophecy\\": "src/Prophecy" } }, "notification-url": "https://packagist.org/downloads/", @@ -5024,44 +5911,44 @@ "spy", "stub" ], - "time": "2018-08-05T17:53:17+00:00" + "time": "2019-06-13T12:50:23+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "5.3.2", + "version": "7.0.7", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "c89677919c5dd6d3b3852f230a663118762218ac" + "reference": "7743bbcfff2a907e9ee4a25be13d0f8ec5e73800" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c89677919c5dd6d3b3852f230a663118762218ac", - "reference": "c89677919c5dd6d3b3852f230a663118762218ac", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/7743bbcfff2a907e9ee4a25be13d0f8ec5e73800", + "reference": "7743bbcfff2a907e9ee4a25be13d0f8ec5e73800", "shasum": "" }, "require": { "ext-dom": "*", "ext-xmlwriter": "*", - "php": "^7.0", - "phpunit/php-file-iterator": "^1.4.2", + "php": "^7.2", + "phpunit/php-file-iterator": "^2.0.2", "phpunit/php-text-template": "^1.2.1", - "phpunit/php-token-stream": "^2.0.1", + "phpunit/php-token-stream": "^3.1.0", "sebastian/code-unit-reverse-lookup": "^1.0.1", - "sebastian/environment": "^3.0", + "sebastian/environment": "^4.2.2", "sebastian/version": "^2.0.1", - "theseer/tokenizer": "^1.1" + "theseer/tokenizer": "^1.1.3" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^8.2.2" }, "suggest": { - "ext-xdebug": "^2.5.5" + "ext-xdebug": "^2.7.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.3.x-dev" + "dev-master": "7.0-dev" } }, "autoload": { @@ -5087,29 +5974,32 @@ "testing", "xunit" ], - "time": "2018-04-06T15:36:58+00:00" + "time": "2019-07-25T05:31:54+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "1.4.5", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4" + "reference": "050bedf145a257b1ff02746c31894800e5122946" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4", - "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/050bedf145a257b1ff02746c31894800e5122946", + "reference": "050bedf145a257b1ff02746c31894800e5122946", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -5124,7 +6014,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -5134,7 +6024,7 @@ "filesystem", "iterator" ], - "time": "2017-11-27T13:52:08+00:00" + "time": "2018-09-13T20:33:42+00:00" }, { "name": "phpunit/php-text-template", @@ -5179,28 +6069,28 @@ }, { "name": "phpunit/php-timer", - "version": "1.0.9", + "version": "2.1.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" + "reference": "1038454804406b0b5f5f520358e78c1c2f71501e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/1038454804406b0b5f5f520358e78c1c2f71501e", + "reference": "1038454804406b0b5f5f520358e78c1c2f71501e", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0" + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + "phpunit/phpunit": "^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "2.1-dev" } }, "autoload": { @@ -5215,7 +6105,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -5224,33 +6114,33 @@ "keywords": [ "timer" ], - "time": "2017-02-26T11:10:40+00:00" + "time": "2019-06-07T04:22:29+00:00" }, { "name": "phpunit/php-token-stream", - "version": "2.0.2", + "version": "3.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "791198a2c6254db10131eecfe8c06670700904db" + "reference": "e899757bb3df5ff6e95089132f32cd59aac2220a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db", - "reference": "791198a2c6254db10131eecfe8c06670700904db", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/e899757bb3df5ff6e95089132f32cd59aac2220a", + "reference": "e899757bb3df5ff6e95089132f32cd59aac2220a", "shasum": "" }, "require": { "ext-tokenizer": "*", - "php": "^7.0" + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "^6.2.4" + "phpunit/phpunit": "^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "3.1-dev" } }, "autoload": { @@ -5273,57 +6163,56 @@ "keywords": [ "tokenizer" ], - "time": "2017-11-27T05:48:46+00:00" + "time": "2019-07-25T05:29:42+00:00" }, { "name": "phpunit/phpunit", - "version": "6.5.13", + "version": "8.3.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "0973426fb012359b2f18d3bd1e90ef1172839693" + "reference": "302faed7059fde575cf3403a78c730c5e3a62750" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/0973426fb012359b2f18d3bd1e90ef1172839693", - "reference": "0973426fb012359b2f18d3bd1e90ef1172839693", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/302faed7059fde575cf3403a78c730c5e3a62750", + "reference": "302faed7059fde575cf3403a78c730c5e3a62750", "shasum": "" }, "require": { + "doctrine/instantiator": "^1.2.0", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", "ext-mbstring": "*", "ext-xml": "*", - "myclabs/deep-copy": "^1.6.1", - "phar-io/manifest": "^1.0.1", - "phar-io/version": "^1.0", - "php": "^7.0", - "phpspec/prophecy": "^1.7", - "phpunit/php-code-coverage": "^5.3", - "phpunit/php-file-iterator": "^1.4.3", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.9.1", + "phar-io/manifest": "^1.0.3", + "phar-io/version": "^2.0.1", + "php": "^7.2", + "phpspec/prophecy": "^1.8.1", + "phpunit/php-code-coverage": "^7.0.7", + "phpunit/php-file-iterator": "^2.0.2", "phpunit/php-text-template": "^1.2.1", - "phpunit/php-timer": "^1.0.9", - "phpunit/phpunit-mock-objects": "^5.0.9", - "sebastian/comparator": "^2.1", - "sebastian/diff": "^2.0", - "sebastian/environment": "^3.1", - "sebastian/exporter": "^3.1", - "sebastian/global-state": "^2.0", + "phpunit/php-timer": "^2.1.2", + "sebastian/comparator": "^3.0.2", + "sebastian/diff": "^3.0.2", + "sebastian/environment": "^4.2.2", + "sebastian/exporter": "^3.1.1", + "sebastian/global-state": "^3.0.0", "sebastian/object-enumerator": "^3.0.3", - "sebastian/resource-operations": "^1.0", + "sebastian/resource-operations": "^2.0.1", + "sebastian/type": "^1.1.3", "sebastian/version": "^2.0.1" }, - "conflict": { - "phpdocumentor/reflection-docblock": "3.0.2", - "phpunit/dbunit": "<3.0" - }, "require-dev": { "ext-pdo": "*" }, "suggest": { + "ext-soap": "*", "ext-xdebug": "*", - "phpunit/php-invoker": "^1.1" + "phpunit/php-invoker": "^2.0.0" }, "bin": [ "phpunit" @@ -5331,7 +6220,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "6.5.x-dev" + "dev-master": "8.3-dev" } }, "autoload": { @@ -5357,46 +6246,42 @@ "testing", "xunit" ], - "time": "2018-09-08T15:10:43+00:00" + "time": "2019-09-14T09:12:03+00:00" }, { - "name": "phpunit/phpunit-mock-objects", - "version": "5.0.10", + "name": "scrivo/highlight.php", + "version": "v9.15.10.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f" + "url": "https://github.com/scrivo/highlight.php.git", + "reference": "9ad3adb4456dc91196327498dbbce6aa1ba1239e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/cd1cf05c553ecfec36b170070573e540b67d3f1f", - "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f", + "url": "https://api.github.com/repos/scrivo/highlight.php/zipball/9ad3adb4456dc91196327498dbbce6aa1ba1239e", + "reference": "9ad3adb4456dc91196327498dbbce6aa1ba1239e", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.0.5", - "php": "^7.0", - "phpunit/php-text-template": "^1.2.1", - "sebastian/exporter": "^3.1" - }, - "conflict": { - "phpunit/phpunit": "<6.0" + "ext-json": "*", + "ext-mbstring": "*", + "php": ">=5.4" }, "require-dev": { - "phpunit/phpunit": "^6.5.11" + "phpunit/phpunit": "^4.8|^5.7", + "symfony/finder": "^2.8" }, "suggest": { - "ext-soap": "*" + "ext-dom": "Needed to make use of the features in the utilities namespace" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0.x-dev" - } - }, "autoload": { - "classmap": [ - "src/" + "psr-0": { + "Highlight\\": "", + "HighlightUtilities\\": "" + }, + "files": [ + "HighlightUtilities/functions.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -5405,18 +6290,30 @@ ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Geert Bergman", + "role": "Project Author", + "homepage": "http://www.scrivo.org/" + }, + { + "name": "Vladimir Jimenez", + "role": "Contributor", + "homepage": "https://allejo.io" + }, + { + "name": "Martin Folkers", + "role": "Contributor", + "homepage": "https://twobrain.io" } ], - "description": "Mock Object library for PHPUnit", - "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", + "description": "Server side syntax highlighter that supports 185 languages. It's a PHP port of highlight.js", "keywords": [ - "mock", - "xunit" + "code", + "highlight", + "highlight.js", + "highlight.php", + "syntax" ], - "time": "2018-08-09T05:50:03+00:00" + "time": "2019-08-27T04:27:48+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", @@ -5465,30 +6362,30 @@ }, { "name": "sebastian/comparator", - "version": "2.1.3", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9" + "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/34369daee48eafb2651bea869b4b15d75ccc35f9", - "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/5de4fc177adf9bce8df98d8d141a7559d7ccf6da", + "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da", "shasum": "" }, "require": { - "php": "^7.0", - "sebastian/diff": "^2.0 || ^3.0", + "php": "^7.1", + "sebastian/diff": "^3.0", "sebastian/exporter": "^3.1" }, "require-dev": { - "phpunit/phpunit": "^6.4" + "phpunit/phpunit": "^7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.1.x-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -5525,32 +6422,33 @@ "compare", "equality" ], - "time": "2018-02-01T13:46:46+00:00" + "time": "2018-07-12T15:12:46+00:00" }, { "name": "sebastian/diff", - "version": "2.0.1", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd" + "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", - "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/720fcc7e9b5cf384ea68d9d930d480907a0c1a29", + "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29", "shasum": "" }, "require": { - "php": "^7.0" + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "^6.2" + "phpunit/phpunit": "^7.5 || ^8.0", + "symfony/process": "^2 || ^3.3 || ^4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -5575,34 +6473,40 @@ "description": "Diff implementation", "homepage": "https://github.com/sebastianbergmann/diff", "keywords": [ - "diff" + "diff", + "udiff", + "unidiff", + "unified diff" ], - "time": "2017-08-03T08:09:46+00:00" + "time": "2019-02-04T06:01:07+00:00" }, { "name": "sebastian/environment", - "version": "3.1.0", + "version": "4.2.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5" + "reference": "f2a2c8e1c97c11ace607a7a667d73d47c19fe404" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/cd0871b3975fb7fc44d11314fd1ee20925fce4f5", - "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/f2a2c8e1c97c11ace607a7a667d73d47c19fe404", + "reference": "f2a2c8e1c97c11ace607a7a667d73d47c19fe404", "shasum": "" }, "require": { - "php": "^7.0" + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "^6.1" + "phpunit/phpunit": "^7.5" + }, + "suggest": { + "ext-posix": "*" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1.x-dev" + "dev-master": "4.2-dev" } }, "autoload": { @@ -5627,20 +6531,20 @@ "environment", "hhvm" ], - "time": "2017-07-01T08:51:00+00:00" + "time": "2019-05-05T09:05:15+00:00" }, { "name": "sebastian/exporter", - "version": "3.1.0", + "version": "3.1.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "234199f4528de6d12aaa58b612e98f7d36adb937" + "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/234199f4528de6d12aaa58b612e98f7d36adb937", - "reference": "234199f4528de6d12aaa58b612e98f7d36adb937", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/68609e1261d215ea5b21b7987539cbfbe156ec3e", + "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e", "shasum": "" }, "require": { @@ -5667,6 +6571,10 @@ "BSD-3-Clause" ], "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, { "name": "Jeff Welch", "email": "whatthejeff@gmail.com" @@ -5675,17 +6583,13 @@ "name": "Volker Dusch", "email": "github@wallbash.com" }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, { "name": "Adam Harvey", "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" } ], "description": "Provides the functionality to export PHP variables for visualization", @@ -5694,27 +6598,30 @@ "export", "exporter" ], - "time": "2017-04-03T13:19:02+00:00" + "time": "2019-09-14T09:02:43+00:00" }, { "name": "sebastian/global-state", - "version": "2.0.0", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4" + "reference": "edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", - "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4", + "reference": "edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4", "shasum": "" }, "require": { - "php": "^7.0" + "php": "^7.2", + "sebastian/object-reflector": "^1.1.1", + "sebastian/recursion-context": "^3.0" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "ext-dom": "*", + "phpunit/phpunit": "^8.0" }, "suggest": { "ext-uopz": "*" @@ -5722,7 +6629,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -5745,7 +6652,7 @@ "keywords": [ "global state" ], - "time": "2017-04-27T15:39:26+00:00" + "time": "2019-02-01T05:30:01+00:00" }, { "name": "sebastian/object-enumerator", @@ -5894,25 +6801,25 @@ }, { "name": "sebastian/resource-operations", - "version": "1.0.0", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" + "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", - "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/4d7a795d35b889bf80a0cc04e08d77cedfa917a9", + "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9", "shasum": "" }, "require": { - "php": ">=5.6.0" + "php": "^7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -5932,7 +6839,53 @@ ], "description": "Provides a list of PHP built-in functions that operate on resources", "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "time": "2015-07-28T20:34:47+00:00" + "time": "2018-10-04T04:07:39+00:00" + }, + { + "name": "sebastian/type", + "version": "1.1.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "3aaaa15fa71d27650d62a948be022fe3b48541a3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/3aaaa15fa71d27650d62a948be022fe3b48541a3", + "reference": "3aaaa15fa71d27650d62a948be022fe3b48541a3", + "shasum": "" + }, + "require": { + "php": "^7.2" + }, + "require-dev": { + "phpunit/phpunit": "^8.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", + "time": "2019-07-02T08:10:15+00:00" }, { "name": "sebastian/version", @@ -6072,16 +7025,16 @@ }, { "name": "squizlabs/php_codesniffer", - "version": "3.4.0", + "version": "3.4.2", "source": { "type": "git", "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "379deb987e26c7cd103a7b387aea178baec96e48" + "reference": "b8a7362af1cc1aadb5bd36c3defc4dda2cf5f0a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/379deb987e26c7cd103a7b387aea178baec96e48", - "reference": "379deb987e26c7cd103a7b387aea178baec96e48", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/b8a7362af1cc1aadb5bd36c3defc4dda2cf5f0a8", + "reference": "b8a7362af1cc1aadb5bd36c3defc4dda2cf5f0a8", "shasum": "" }, "require": { @@ -6114,33 +7067,38 @@ } ], "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "http://www.squizlabs.com/php-codesniffer", + "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", "keywords": [ "phpcs", "standards" ], - "time": "2018-12-19T23:57:18+00:00" + "time": "2019-04-10T23:49:02+00:00" }, { "name": "symfony/dom-crawler", - "version": "v3.1.10", + "version": "v4.3.4", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "7eede2a901a19928494194f7d1815a77b9a473a0" + "reference": "cc686552948d627528c0e2e759186dff67c2610e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/7eede2a901a19928494194f7d1815a77b9a473a0", - "reference": "7eede2a901a19928494194f7d1815a77b9a473a0", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/cc686552948d627528c0e2e759186dff67c2610e", + "reference": "cc686552948d627528c0e2e759186dff67c2610e", "shasum": "" }, "require": { - "php": ">=5.5.9", + "php": "^7.1.3", + "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0" }, + "conflict": { + "masterminds/html5": "<2.6" + }, "require-dev": { - "symfony/css-selector": "~2.8|~3.0" + "masterminds/html5": "^2.6", + "symfony/css-selector": "~3.4|~4.0" }, "suggest": { "symfony/css-selector": "" @@ -6148,7 +7106,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -6175,29 +7133,30 @@ ], "description": "Symfony DomCrawler Component", "homepage": "https://symfony.com", - "time": "2017-01-21T17:13:55+00:00" + "time": "2019-08-26T08:26:39+00:00" }, { "name": "symfony/filesystem", - "version": "v3.3.6", + "version": "v4.3.4", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "427987eb4eed764c3b6e38d52a0f87989e010676" + "reference": "9abbb7ef96a51f4d7e69627bc6f63307994e4263" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/427987eb4eed764c3b6e38d52a0f87989e010676", - "reference": "427987eb4eed764c3b6e38d52a0f87989e010676", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/9abbb7ef96a51f4d7e69627bc6f63307994e4263", + "reference": "9abbb7ef96a51f4d7e69627bc6f63307994e4263", "shasum": "" }, "require": { - "php": ">=5.5.9" + "php": "^7.1.3", + "symfony/polyfill-ctype": "~1.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.3-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -6224,20 +7183,20 @@ ], "description": "Symfony Filesystem Component", "homepage": "https://symfony.com", - "time": "2017-07-11T07:17:58+00:00" + "time": "2019-08-20T14:07:54+00:00" }, { "name": "theseer/tokenizer", - "version": "1.1.0", + "version": "1.1.3", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b" + "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/cb2f008f3f05af2893a87208fe6a6c4985483f8b", - "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/11336f6f84e16a720dae9d8e6ed5019efa85a0f9", + "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9", "shasum": "" }, "require": { @@ -6259,25 +7218,25 @@ "authors": [ { "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" + "role": "Developer", + "email": "arne@blankerts.de" } ], "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "time": "2017-04-07T12:08:54+00:00" + "time": "2019-06-13T22:48:21+00:00" }, { "name": "webmozart/assert", - "version": "1.4.0", + "version": "1.5.0", "source": { "type": "git", "url": "https://github.com/webmozart/assert.git", - "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9" + "reference": "88e6d84706d09a236046d686bbea96f07b3a34f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/83e253c8e0be5b0257b881e1827274667c5c17a9", - "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9", + "url": "https://api.github.com/repos/webmozart/assert/zipball/88e6d84706d09a236046d686bbea96f07b3a34f4", + "reference": "88e6d84706d09a236046d686bbea96f07b3a34f4", "shasum": "" }, "require": { @@ -6285,8 +7244,7 @@ "symfony/polyfill-ctype": "^1.8" }, "require-dev": { - "phpunit/phpunit": "^4.6", - "sebastian/version": "^1.0.1" + "phpunit/phpunit": "^4.8.36 || ^7.5.13" }, "type": "library", "extra": { @@ -6315,28 +7273,26 @@ "check", "validate" ], - "time": "2018-12-25T11:19:39+00:00" + "time": "2019-08-24T08:43:50+00:00" } ], "aliases": [], - "minimum-stability": "stable", - "stability-flags": { - "laravel/socialite": 20 - }, - "prefer-stable": false, + "minimum-stability": "dev", + "stability-flags": [], + "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": ">=7.0.5", - "ext-json": "*", - "ext-tidy": "*", + "php": "^7.2", + "ext-curl": "*", "ext-dom": "*", - "ext-xml": "*", - "ext-mbstring": "*", "ext-gd": "*", - "ext-curl": "*" + "ext-json": "*", + "ext-mbstring": "*", + "ext-tidy": "*", + "ext-xml": "*" }, "platform-dev": [], "platform-overrides": { - "php": "7.0.5" + "php": "7.2.0" } } diff --git a/database/factories/ModelFactory.php b/database/factories/ModelFactory.php index de6b0b276..ddf3c295d 100644 --- a/database/factories/ModelFactory.php +++ b/database/factories/ModelFactory.php @@ -15,8 +15,8 @@ $factory->define(\BookStack\Auth\User::class, function ($faker) { return [ 'name' => $faker->name, 'email' => $faker->email, - 'password' => str_random(10), - 'remember_token' => str_random(10), + 'password' => Str::random(10), + 'remember_token' => Str::random(10), 'email_confirmed' => 1 ]; }); @@ -24,7 +24,7 @@ $factory->define(\BookStack\Auth\User::class, function ($faker) { $factory->define(\BookStack\Entities\Bookshelf::class, function ($faker) { return [ 'name' => $faker->sentence, - 'slug' => str_random(10), + 'slug' => Str::random(10), 'description' => $faker->paragraph ]; }); @@ -32,7 +32,7 @@ $factory->define(\BookStack\Entities\Bookshelf::class, function ($faker) { $factory->define(\BookStack\Entities\Book::class, function ($faker) { return [ 'name' => $faker->sentence, - 'slug' => str_random(10), + 'slug' => Str::random(10), 'description' => $faker->paragraph ]; }); @@ -40,7 +40,7 @@ $factory->define(\BookStack\Entities\Book::class, function ($faker) { $factory->define(\BookStack\Entities\Chapter::class, function ($faker) { return [ 'name' => $faker->sentence, - 'slug' => str_random(10), + 'slug' => Str::random(10), 'description' => $faker->paragraph ]; }); @@ -49,7 +49,7 @@ $factory->define(\BookStack\Entities\Page::class, function ($faker) { $html = '

' . implode('

', $faker->paragraphs(5)) . '

'; return [ 'name' => $faker->sentence, - 'slug' => str_random(10), + 'slug' => Str::random(10), 'html' => $html, 'text' => strip_tags($html), 'revision_count' => 1 diff --git a/database/seeds/DatabaseSeeder.php b/database/seeds/DatabaseSeeder.php index 988ea2100..d86cb0ddd 100644 --- a/database/seeds/DatabaseSeeder.php +++ b/database/seeds/DatabaseSeeder.php @@ -6,7 +6,7 @@ use Illuminate\Database\Eloquent\Model; class DatabaseSeeder extends Seeder { /** - * Run the database seeds. + * Seed the application's database. * * @return void */ diff --git a/database/seeds/DummyContentSeeder.php b/database/seeds/DummyContentSeeder.php index ce3cd1307..deb1aa11c 100644 --- a/database/seeds/DummyContentSeeder.php +++ b/database/seeds/DummyContentSeeder.php @@ -1,6 +1,14 @@ create(); - $editorRole = \BookStack\Auth\Role::getRole('editor'); + $editorUser = factory(User::class)->create(); + $editorRole = Role::getRole('editor'); $editorUser->attachRole($editorRole); // Create a viewer user - $viewerUser = factory(\BookStack\Auth\User::class)->create(); - $role = \BookStack\Auth\Role::getRole('viewer'); + $viewerUser = factory(User::class)->create(); + $role = Role::getRole('viewer'); $viewerUser->attachRole($role); $byData = ['created_by' => $editorUser->id, 'updated_by' => $editorUser->id]; factory(\BookStack\Entities\Book::class, 5)->create($byData) ->each(function($book) use ($editorUser, $byData) { - $chapters = factory(\BookStack\Entities\Chapter::class, 3)->create($byData) + $chapters = factory(Chapter::class, 3)->create($byData) ->each(function($chapter) use ($editorUser, $book, $byData){ - $pages = factory(\BookStack\Entities\Page::class, 3)->make(array_merge($byData, ['book_id' => $book->id])); + $pages = factory(Page::class, 3)->make(array_merge($byData, ['book_id' => $book->id])); $chapter->pages()->saveMany($pages); }); - $pages = factory(\BookStack\Entities\Page::class, 3)->make($byData); + $pages = factory(Page::class, 3)->make($byData); $book->chapters()->saveMany($chapters); $book->pages()->saveMany($pages); }); - $largeBook = factory(\BookStack\Entities\Book::class)->create(array_merge($byData, ['name' => 'Large book' . str_random(10)])); - $pages = factory(\BookStack\Entities\Page::class, 200)->make($byData); - $chapters = factory(\BookStack\Entities\Chapter::class, 50)->make($byData); + $largeBook = factory(\BookStack\Entities\Book::class)->create(array_merge($byData, ['name' => 'Large book' . Str::random(10)])); + $pages = factory(Page::class, 200)->make($byData); + $chapters = factory(Chapter::class, 50)->make($byData); $largeBook->pages()->saveMany($pages); $largeBook->chapters()->saveMany($chapters); - $shelves = factory(\BookStack\Entities\Bookshelf::class, 10)->create($byData); + $shelves = factory(Bookshelf::class, 10)->create($byData); $largeBook->shelves()->attach($shelves->pluck('id')); - app(\BookStack\Auth\Permissions\PermissionService::class)->buildJointPermissions(); - app(\BookStack\Entities\SearchService::class)->indexAllEntities(); + app(PermissionService::class)->buildJointPermissions(); + app(SearchService::class)->indexAllEntities(); } } diff --git a/database/seeds/LargeContentSeeder.php b/database/seeds/LargeContentSeeder.php index 136b6cb6a..4db10395a 100644 --- a/database/seeds/LargeContentSeeder.php +++ b/database/seeds/LargeContentSeeder.php @@ -1,6 +1,13 @@ create(); - $editorRole = \BookStack\Auth\Role::getRole('editor'); + $editorUser = factory(User::class)->create(); + $editorRole = Role::getRole('editor'); $editorUser->attachRole($editorRole); - $largeBook = factory(\BookStack\Entities\Book::class)->create(['name' => 'Large book' . str_random(10), 'created_by' => $editorUser->id, 'updated_by' => $editorUser->id]); - $pages = factory(\BookStack\Entities\Page::class, 200)->make(['created_by' => $editorUser->id, 'updated_by' => $editorUser->id]); - $chapters = factory(\BookStack\Entities\Chapter::class, 50)->make(['created_by' => $editorUser->id, 'updated_by' => $editorUser->id]); + $largeBook = factory(\BookStack\Entities\Book::class)->create(['name' => 'Large book' . Str::random(10), 'created_by' => $editorUser->id, 'updated_by' => $editorUser->id]); + $pages = factory(Page::class, 200)->make(['created_by' => $editorUser->id, 'updated_by' => $editorUser->id]); + $chapters = factory(Chapter::class, 50)->make(['created_by' => $editorUser->id, 'updated_by' => $editorUser->id]); $largeBook->pages()->saveMany($pages); $largeBook->chapters()->saveMany($chapters); - app(\BookStack\Auth\Permissions\PermissionService::class)->buildJointPermissions(); - app(\BookStack\Entities\SearchService::class)->indexAllEntities(); + app(PermissionService::class)->buildJointPermissions(); + app(SearchService::class)->indexAllEntities(); } } diff --git a/phpunit.xml b/phpunit.xml index 53722a71b..7de7233af 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -7,8 +7,7 @@ convertNoticesToExceptions="true" convertWarningsToExceptions="true" processIsolation="false" - stopOnFailure="false" - syntaxCheck="false"> + stopOnFailure="false"> ./tests/ @@ -20,32 +19,34 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/web.config b/public/web.config new file mode 100644 index 000000000..474eb6898 --- /dev/null +++ b/public/web.config @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/assets/icons/add-circle.svg b/resources/icons/add-circle.svg similarity index 100% rename from resources/assets/icons/add-circle.svg rename to resources/icons/add-circle.svg diff --git a/resources/assets/icons/add.svg b/resources/icons/add.svg similarity index 100% rename from resources/assets/icons/add.svg rename to resources/icons/add.svg diff --git a/resources/assets/icons/attach.svg b/resources/icons/attach.svg similarity index 100% rename from resources/assets/icons/attach.svg rename to resources/icons/attach.svg diff --git a/resources/assets/icons/auth/azure.svg b/resources/icons/auth/azure.svg similarity index 100% rename from resources/assets/icons/auth/azure.svg rename to resources/icons/auth/azure.svg diff --git a/resources/assets/icons/auth/discord.svg b/resources/icons/auth/discord.svg similarity index 100% rename from resources/assets/icons/auth/discord.svg rename to resources/icons/auth/discord.svg diff --git a/resources/assets/icons/auth/facebook.svg b/resources/icons/auth/facebook.svg similarity index 100% rename from resources/assets/icons/auth/facebook.svg rename to resources/icons/auth/facebook.svg diff --git a/resources/assets/icons/auth/github.svg b/resources/icons/auth/github.svg similarity index 100% rename from resources/assets/icons/auth/github.svg rename to resources/icons/auth/github.svg diff --git a/resources/assets/icons/auth/gitlab.svg b/resources/icons/auth/gitlab.svg similarity index 100% rename from resources/assets/icons/auth/gitlab.svg rename to resources/icons/auth/gitlab.svg diff --git a/resources/assets/icons/auth/google.svg b/resources/icons/auth/google.svg similarity index 100% rename from resources/assets/icons/auth/google.svg rename to resources/icons/auth/google.svg diff --git a/resources/assets/icons/auth/okta.svg b/resources/icons/auth/okta.svg similarity index 100% rename from resources/assets/icons/auth/okta.svg rename to resources/icons/auth/okta.svg diff --git a/resources/assets/icons/auth/slack.svg b/resources/icons/auth/slack.svg similarity index 100% rename from resources/assets/icons/auth/slack.svg rename to resources/icons/auth/slack.svg diff --git a/resources/assets/icons/auth/twitch.svg b/resources/icons/auth/twitch.svg similarity index 100% rename from resources/assets/icons/auth/twitch.svg rename to resources/icons/auth/twitch.svg diff --git a/resources/assets/icons/auth/twitter.svg b/resources/icons/auth/twitter.svg similarity index 100% rename from resources/assets/icons/auth/twitter.svg rename to resources/icons/auth/twitter.svg diff --git a/resources/assets/icons/back.svg b/resources/icons/back.svg similarity index 100% rename from resources/assets/icons/back.svg rename to resources/icons/back.svg diff --git a/resources/assets/icons/book.svg b/resources/icons/book.svg similarity index 100% rename from resources/assets/icons/book.svg rename to resources/icons/book.svg diff --git a/resources/assets/icons/books.svg b/resources/icons/books.svg similarity index 100% rename from resources/assets/icons/books.svg rename to resources/icons/books.svg diff --git a/resources/assets/icons/bookshelf.svg b/resources/icons/bookshelf.svg similarity index 100% rename from resources/assets/icons/bookshelf.svg rename to resources/icons/bookshelf.svg diff --git a/resources/assets/icons/cancel.svg b/resources/icons/cancel.svg similarity index 100% rename from resources/assets/icons/cancel.svg rename to resources/icons/cancel.svg diff --git a/resources/assets/icons/caret-down.svg b/resources/icons/caret-down.svg similarity index 100% rename from resources/assets/icons/caret-down.svg rename to resources/icons/caret-down.svg diff --git a/resources/assets/icons/caret-left-circle.svg b/resources/icons/caret-left-circle.svg similarity index 100% rename from resources/assets/icons/caret-left-circle.svg rename to resources/icons/caret-left-circle.svg diff --git a/resources/assets/icons/caret-right-circle.svg b/resources/icons/caret-right-circle.svg similarity index 100% rename from resources/assets/icons/caret-right-circle.svg rename to resources/icons/caret-right-circle.svg diff --git a/resources/assets/icons/caret-right.svg b/resources/icons/caret-right.svg similarity index 100% rename from resources/assets/icons/caret-right.svg rename to resources/icons/caret-right.svg diff --git a/resources/assets/icons/chapter.svg b/resources/icons/chapter.svg similarity index 100% rename from resources/assets/icons/chapter.svg rename to resources/icons/chapter.svg diff --git a/resources/assets/icons/check-circle.svg b/resources/icons/check-circle.svg similarity index 100% rename from resources/assets/icons/check-circle.svg rename to resources/icons/check-circle.svg diff --git a/resources/assets/icons/check.svg b/resources/icons/check.svg similarity index 100% rename from resources/assets/icons/check.svg rename to resources/icons/check.svg diff --git a/resources/assets/icons/chevron-down.svg b/resources/icons/chevron-down.svg similarity index 100% rename from resources/assets/icons/chevron-down.svg rename to resources/icons/chevron-down.svg diff --git a/resources/assets/icons/chevron-right.svg b/resources/icons/chevron-right.svg similarity index 100% rename from resources/assets/icons/chevron-right.svg rename to resources/icons/chevron-right.svg diff --git a/resources/assets/icons/chevron-up.svg b/resources/icons/chevron-up.svg similarity index 100% rename from resources/assets/icons/chevron-up.svg rename to resources/icons/chevron-up.svg diff --git a/resources/assets/icons/close.svg b/resources/icons/close.svg similarity index 100% rename from resources/assets/icons/close.svg rename to resources/icons/close.svg diff --git a/resources/assets/icons/comment.svg b/resources/icons/comment.svg similarity index 100% rename from resources/assets/icons/comment.svg rename to resources/icons/comment.svg diff --git a/resources/assets/icons/copy.svg b/resources/icons/copy.svg similarity index 100% rename from resources/assets/icons/copy.svg rename to resources/icons/copy.svg diff --git a/resources/assets/icons/danger.svg b/resources/icons/danger.svg similarity index 100% rename from resources/assets/icons/danger.svg rename to resources/icons/danger.svg diff --git a/resources/assets/icons/delete.svg b/resources/icons/delete.svg similarity index 100% rename from resources/assets/icons/delete.svg rename to resources/icons/delete.svg diff --git a/resources/assets/icons/drawing.svg b/resources/icons/drawing.svg similarity index 100% rename from resources/assets/icons/drawing.svg rename to resources/icons/drawing.svg diff --git a/resources/assets/icons/edit.svg b/resources/icons/edit.svg similarity index 100% rename from resources/assets/icons/edit.svg rename to resources/icons/edit.svg diff --git a/resources/assets/icons/expand-text.svg b/resources/icons/expand-text.svg similarity index 100% rename from resources/assets/icons/expand-text.svg rename to resources/icons/expand-text.svg diff --git a/resources/assets/icons/export.svg b/resources/icons/export.svg similarity index 100% rename from resources/assets/icons/export.svg rename to resources/icons/export.svg diff --git a/resources/assets/icons/file.svg b/resources/icons/file.svg similarity index 100% rename from resources/assets/icons/file.svg rename to resources/icons/file.svg diff --git a/resources/assets/icons/folder.svg b/resources/icons/folder.svg similarity index 100% rename from resources/assets/icons/folder.svg rename to resources/icons/folder.svg diff --git a/resources/assets/icons/grid.svg b/resources/icons/grid.svg similarity index 100% rename from resources/assets/icons/grid.svg rename to resources/icons/grid.svg diff --git a/resources/assets/icons/grip.svg b/resources/icons/grip.svg similarity index 100% rename from resources/assets/icons/grip.svg rename to resources/icons/grip.svg diff --git a/resources/assets/icons/history.svg b/resources/icons/history.svg similarity index 100% rename from resources/assets/icons/history.svg rename to resources/icons/history.svg diff --git a/resources/assets/icons/image.svg b/resources/icons/image.svg similarity index 100% rename from resources/assets/icons/image.svg rename to resources/icons/image.svg diff --git a/resources/assets/icons/images.svg b/resources/icons/images.svg similarity index 100% rename from resources/assets/icons/images.svg rename to resources/icons/images.svg diff --git a/resources/assets/icons/include.svg b/resources/icons/include.svg similarity index 100% rename from resources/assets/icons/include.svg rename to resources/icons/include.svg diff --git a/resources/assets/icons/info-filled.svg b/resources/icons/info-filled.svg similarity index 100% rename from resources/assets/icons/info-filled.svg rename to resources/icons/info-filled.svg diff --git a/resources/assets/icons/info.svg b/resources/icons/info.svg similarity index 100% rename from resources/assets/icons/info.svg rename to resources/icons/info.svg diff --git a/resources/assets/icons/link.svg b/resources/icons/link.svg similarity index 100% rename from resources/assets/icons/link.svg rename to resources/icons/link.svg diff --git a/resources/assets/icons/list.svg b/resources/icons/list.svg similarity index 100% rename from resources/assets/icons/list.svg rename to resources/icons/list.svg diff --git a/resources/assets/icons/lock-open.svg b/resources/icons/lock-open.svg similarity index 100% rename from resources/assets/icons/lock-open.svg rename to resources/icons/lock-open.svg diff --git a/resources/assets/icons/lock.svg b/resources/icons/lock.svg similarity index 100% rename from resources/assets/icons/lock.svg rename to resources/icons/lock.svg diff --git a/resources/assets/icons/login.svg b/resources/icons/login.svg similarity index 100% rename from resources/assets/icons/login.svg rename to resources/icons/login.svg diff --git a/resources/assets/icons/logout.svg b/resources/icons/logout.svg similarity index 100% rename from resources/assets/icons/logout.svg rename to resources/icons/logout.svg diff --git a/resources/assets/icons/more.svg b/resources/icons/more.svg similarity index 100% rename from resources/assets/icons/more.svg rename to resources/icons/more.svg diff --git a/resources/assets/icons/new-user.svg b/resources/icons/new-user.svg similarity index 100% rename from resources/assets/icons/new-user.svg rename to resources/icons/new-user.svg diff --git a/resources/assets/icons/open-book.svg b/resources/icons/open-book.svg similarity index 100% rename from resources/assets/icons/open-book.svg rename to resources/icons/open-book.svg diff --git a/resources/assets/icons/page.svg b/resources/icons/page.svg similarity index 100% rename from resources/assets/icons/page.svg rename to resources/icons/page.svg diff --git a/resources/assets/icons/permission.svg b/resources/icons/permission.svg similarity index 100% rename from resources/assets/icons/permission.svg rename to resources/icons/permission.svg diff --git a/resources/assets/icons/popular.svg b/resources/icons/popular.svg similarity index 100% rename from resources/assets/icons/popular.svg rename to resources/icons/popular.svg diff --git a/resources/assets/icons/reply.svg b/resources/icons/reply.svg similarity index 100% rename from resources/assets/icons/reply.svg rename to resources/icons/reply.svg diff --git a/resources/assets/icons/save.svg b/resources/icons/save.svg similarity index 100% rename from resources/assets/icons/save.svg rename to resources/icons/save.svg diff --git a/resources/assets/icons/search.svg b/resources/icons/search.svg similarity index 100% rename from resources/assets/icons/search.svg rename to resources/icons/search.svg diff --git a/resources/assets/icons/settings.svg b/resources/icons/settings.svg similarity index 100% rename from resources/assets/icons/settings.svg rename to resources/icons/settings.svg diff --git a/resources/assets/icons/sort-down.svg b/resources/icons/sort-down.svg similarity index 100% rename from resources/assets/icons/sort-down.svg rename to resources/icons/sort-down.svg diff --git a/resources/assets/icons/sort-up.svg b/resources/icons/sort-up.svg similarity index 100% rename from resources/assets/icons/sort-up.svg rename to resources/icons/sort-up.svg diff --git a/resources/assets/icons/sort.svg b/resources/icons/sort.svg similarity index 100% rename from resources/assets/icons/sort.svg rename to resources/icons/sort.svg diff --git a/resources/assets/icons/spanner.svg b/resources/icons/spanner.svg similarity index 100% rename from resources/assets/icons/spanner.svg rename to resources/icons/spanner.svg diff --git a/resources/assets/icons/star-circle.svg b/resources/icons/star-circle.svg similarity index 100% rename from resources/assets/icons/star-circle.svg rename to resources/icons/star-circle.svg diff --git a/resources/assets/icons/star.svg b/resources/icons/star.svg similarity index 100% rename from resources/assets/icons/star.svg rename to resources/icons/star.svg diff --git a/resources/assets/icons/swap-vertical.svg b/resources/icons/swap-vertical.svg similarity index 100% rename from resources/assets/icons/swap-vertical.svg rename to resources/icons/swap-vertical.svg diff --git a/resources/assets/icons/tag.svg b/resources/icons/tag.svg similarity index 100% rename from resources/assets/icons/tag.svg rename to resources/icons/tag.svg diff --git a/resources/assets/icons/template.svg b/resources/icons/template.svg similarity index 100% rename from resources/assets/icons/template.svg rename to resources/icons/template.svg diff --git a/resources/assets/icons/time.svg b/resources/icons/time.svg similarity index 100% rename from resources/assets/icons/time.svg rename to resources/icons/time.svg diff --git a/resources/assets/icons/user.svg b/resources/icons/user.svg similarity index 100% rename from resources/assets/icons/user.svg rename to resources/icons/user.svg diff --git a/resources/assets/icons/users-add.svg b/resources/icons/users-add.svg similarity index 100% rename from resources/assets/icons/users-add.svg rename to resources/icons/users-add.svg diff --git a/resources/assets/icons/users.svg b/resources/icons/users.svg similarity index 100% rename from resources/assets/icons/users.svg rename to resources/icons/users.svg diff --git a/resources/assets/icons/view.svg b/resources/icons/view.svg similarity index 100% rename from resources/assets/icons/view.svg rename to resources/icons/view.svg diff --git a/resources/assets/icons/warning.svg b/resources/icons/warning.svg similarity index 100% rename from resources/assets/icons/warning.svg rename to resources/icons/warning.svg diff --git a/resources/assets/js/components/back-to-top.js b/resources/js/components/back-to-top.js similarity index 100% rename from resources/assets/js/components/back-to-top.js rename to resources/js/components/back-to-top.js diff --git a/resources/assets/js/components/book-sort.js b/resources/js/components/book-sort.js similarity index 100% rename from resources/assets/js/components/book-sort.js rename to resources/js/components/book-sort.js diff --git a/resources/assets/js/components/breadcrumb-listing.js b/resources/js/components/breadcrumb-listing.js similarity index 100% rename from resources/assets/js/components/breadcrumb-listing.js rename to resources/js/components/breadcrumb-listing.js diff --git a/resources/assets/js/components/chapter-toggle.js b/resources/js/components/chapter-toggle.js similarity index 100% rename from resources/assets/js/components/chapter-toggle.js rename to resources/js/components/chapter-toggle.js diff --git a/resources/assets/js/components/collapsible.js b/resources/js/components/collapsible.js similarity index 100% rename from resources/assets/js/components/collapsible.js rename to resources/js/components/collapsible.js diff --git a/resources/assets/js/components/custom-checkbox.js b/resources/js/components/custom-checkbox.js similarity index 100% rename from resources/assets/js/components/custom-checkbox.js rename to resources/js/components/custom-checkbox.js diff --git a/resources/assets/js/components/dropdown.js b/resources/js/components/dropdown.js similarity index 100% rename from resources/assets/js/components/dropdown.js rename to resources/js/components/dropdown.js diff --git a/resources/assets/js/components/editor-toolbox.js b/resources/js/components/editor-toolbox.js similarity index 100% rename from resources/assets/js/components/editor-toolbox.js rename to resources/js/components/editor-toolbox.js diff --git a/resources/assets/js/components/entity-permissions-editor.js b/resources/js/components/entity-permissions-editor.js similarity index 100% rename from resources/assets/js/components/entity-permissions-editor.js rename to resources/js/components/entity-permissions-editor.js diff --git a/resources/assets/js/components/entity-selector-popup.js b/resources/js/components/entity-selector-popup.js similarity index 100% rename from resources/assets/js/components/entity-selector-popup.js rename to resources/js/components/entity-selector-popup.js diff --git a/resources/assets/js/components/entity-selector.js b/resources/js/components/entity-selector.js similarity index 100% rename from resources/assets/js/components/entity-selector.js rename to resources/js/components/entity-selector.js diff --git a/resources/assets/js/components/expand-toggle.js b/resources/js/components/expand-toggle.js similarity index 100% rename from resources/assets/js/components/expand-toggle.js rename to resources/js/components/expand-toggle.js diff --git a/resources/assets/js/components/header-mobile-toggle.js b/resources/js/components/header-mobile-toggle.js similarity index 100% rename from resources/assets/js/components/header-mobile-toggle.js rename to resources/js/components/header-mobile-toggle.js diff --git a/resources/assets/js/components/homepage-control.js b/resources/js/components/homepage-control.js similarity index 100% rename from resources/assets/js/components/homepage-control.js rename to resources/js/components/homepage-control.js diff --git a/resources/assets/js/components/image-picker.js b/resources/js/components/image-picker.js similarity index 100% rename from resources/assets/js/components/image-picker.js rename to resources/js/components/image-picker.js diff --git a/resources/assets/js/components/index.js b/resources/js/components/index.js similarity index 100% rename from resources/assets/js/components/index.js rename to resources/js/components/index.js diff --git a/resources/assets/js/components/list-sort-control.js b/resources/js/components/list-sort-control.js similarity index 100% rename from resources/assets/js/components/list-sort-control.js rename to resources/js/components/list-sort-control.js diff --git a/resources/assets/js/components/markdown-editor.js b/resources/js/components/markdown-editor.js similarity index 100% rename from resources/assets/js/components/markdown-editor.js rename to resources/js/components/markdown-editor.js diff --git a/resources/assets/js/components/new-user-password.js b/resources/js/components/new-user-password.js similarity index 100% rename from resources/assets/js/components/new-user-password.js rename to resources/js/components/new-user-password.js diff --git a/resources/assets/js/components/notification.js b/resources/js/components/notification.js similarity index 100% rename from resources/assets/js/components/notification.js rename to resources/js/components/notification.js diff --git a/resources/assets/js/components/overlay.js b/resources/js/components/overlay.js similarity index 100% rename from resources/assets/js/components/overlay.js rename to resources/js/components/overlay.js diff --git a/resources/assets/js/components/page-comments.js b/resources/js/components/page-comments.js similarity index 100% rename from resources/assets/js/components/page-comments.js rename to resources/js/components/page-comments.js diff --git a/resources/assets/js/components/page-display.js b/resources/js/components/page-display.js similarity index 100% rename from resources/assets/js/components/page-display.js rename to resources/js/components/page-display.js diff --git a/resources/assets/js/components/page-picker.js b/resources/js/components/page-picker.js similarity index 100% rename from resources/assets/js/components/page-picker.js rename to resources/js/components/page-picker.js diff --git a/resources/assets/js/components/permissions-table.js b/resources/js/components/permissions-table.js similarity index 100% rename from resources/assets/js/components/permissions-table.js rename to resources/js/components/permissions-table.js diff --git a/resources/assets/js/components/setting-app-color-picker.js b/resources/js/components/setting-app-color-picker.js similarity index 100% rename from resources/assets/js/components/setting-app-color-picker.js rename to resources/js/components/setting-app-color-picker.js diff --git a/resources/assets/js/components/shelf-sort.js b/resources/js/components/shelf-sort.js similarity index 100% rename from resources/assets/js/components/shelf-sort.js rename to resources/js/components/shelf-sort.js diff --git a/resources/assets/js/components/sidebar.js b/resources/js/components/sidebar.js similarity index 100% rename from resources/assets/js/components/sidebar.js rename to resources/js/components/sidebar.js diff --git a/resources/assets/js/components/template-manager.js b/resources/js/components/template-manager.js similarity index 100% rename from resources/assets/js/components/template-manager.js rename to resources/js/components/template-manager.js diff --git a/resources/assets/js/components/toggle-switch.js b/resources/js/components/toggle-switch.js similarity index 100% rename from resources/assets/js/components/toggle-switch.js rename to resources/js/components/toggle-switch.js diff --git a/resources/assets/js/components/tri-layout.js b/resources/js/components/tri-layout.js similarity index 100% rename from resources/assets/js/components/tri-layout.js rename to resources/js/components/tri-layout.js diff --git a/resources/assets/js/components/wysiwyg-editor.js b/resources/js/components/wysiwyg-editor.js similarity index 100% rename from resources/assets/js/components/wysiwyg-editor.js rename to resources/js/components/wysiwyg-editor.js diff --git a/resources/assets/js/index.js b/resources/js/index.js similarity index 100% rename from resources/assets/js/index.js rename to resources/js/index.js diff --git a/resources/assets/js/services/animations.js b/resources/js/services/animations.js similarity index 100% rename from resources/assets/js/services/animations.js rename to resources/js/services/animations.js diff --git a/resources/assets/js/services/code.js b/resources/js/services/code.js similarity index 100% rename from resources/assets/js/services/code.js rename to resources/js/services/code.js diff --git a/resources/assets/js/services/dates.js b/resources/js/services/dates.js similarity index 100% rename from resources/assets/js/services/dates.js rename to resources/js/services/dates.js diff --git a/resources/assets/js/services/dom.js b/resources/js/services/dom.js similarity index 100% rename from resources/assets/js/services/dom.js rename to resources/js/services/dom.js diff --git a/resources/assets/js/services/drawio.js b/resources/js/services/drawio.js similarity index 100% rename from resources/assets/js/services/drawio.js rename to resources/js/services/drawio.js diff --git a/resources/assets/js/services/events.js b/resources/js/services/events.js similarity index 100% rename from resources/assets/js/services/events.js rename to resources/js/services/events.js diff --git a/resources/assets/js/services/http.js b/resources/js/services/http.js similarity index 100% rename from resources/assets/js/services/http.js rename to resources/js/services/http.js diff --git a/resources/assets/js/services/translations.js b/resources/js/services/translations.js similarity index 100% rename from resources/assets/js/services/translations.js rename to resources/js/services/translations.js diff --git a/resources/assets/js/services/util.js b/resources/js/services/util.js similarity index 100% rename from resources/assets/js/services/util.js rename to resources/js/services/util.js diff --git a/resources/assets/js/vues/attachment-manager.js b/resources/js/vues/attachment-manager.js similarity index 100% rename from resources/assets/js/vues/attachment-manager.js rename to resources/js/vues/attachment-manager.js diff --git a/resources/assets/js/vues/code-editor.js b/resources/js/vues/code-editor.js similarity index 100% rename from resources/assets/js/vues/code-editor.js rename to resources/js/vues/code-editor.js diff --git a/resources/assets/js/vues/components/autosuggest.js b/resources/js/vues/components/autosuggest.js similarity index 100% rename from resources/assets/js/vues/components/autosuggest.js rename to resources/js/vues/components/autosuggest.js diff --git a/resources/assets/js/vues/components/dropzone.js b/resources/js/vues/components/dropzone.js similarity index 100% rename from resources/assets/js/vues/components/dropzone.js rename to resources/js/vues/components/dropzone.js diff --git a/resources/assets/js/vues/entity-dashboard.js b/resources/js/vues/entity-dashboard.js similarity index 100% rename from resources/assets/js/vues/entity-dashboard.js rename to resources/js/vues/entity-dashboard.js diff --git a/resources/assets/js/vues/image-manager.js b/resources/js/vues/image-manager.js similarity index 100% rename from resources/assets/js/vues/image-manager.js rename to resources/js/vues/image-manager.js diff --git a/resources/assets/js/vues/page-editor.js b/resources/js/vues/page-editor.js similarity index 100% rename from resources/assets/js/vues/page-editor.js rename to resources/js/vues/page-editor.js diff --git a/resources/assets/js/vues/search.js b/resources/js/vues/search.js similarity index 100% rename from resources/assets/js/vues/search.js rename to resources/js/vues/search.js diff --git a/resources/assets/js/vues/tag-manager.js b/resources/js/vues/tag-manager.js similarity index 100% rename from resources/assets/js/vues/tag-manager.js rename to resources/js/vues/tag-manager.js diff --git a/resources/assets/js/vues/vues.js b/resources/js/vues/vues.js similarity index 100% rename from resources/assets/js/vues/vues.js rename to resources/js/vues/vues.js diff --git a/resources/lang/ar/auth.php b/resources/lang/ar/auth.php index bad0910a2..8c822a5a7 100644 --- a/resources/lang/ar/auth.php +++ b/resources/lang/ar/auth.php @@ -27,7 +27,7 @@ return [ 'email' => 'البريد الإلكتروني', 'password' => 'كلمة المرور', 'password_confirm' => 'تأكيد كلمة المرور', - 'password_hint' => 'يجب أن تكون أكثر من 5 حروف', + 'password_hint' => 'يجب أن تكون أكثر من 7 حروف', 'forgot_password' => 'نسيت كلمة المرور؟', 'remember_me' => 'تذكرني', 'ldap_email_hint' => 'الرجاء إدخال عنوان بريد إلكتروني لاستخدامه مع الحساب.', diff --git a/resources/lang/cs/auth.php b/resources/lang/cs/auth.php index 69d6f0b97..27cb33880 100644 --- a/resources/lang/cs/auth.php +++ b/resources/lang/cs/auth.php @@ -21,7 +21,7 @@ return [ 'email' => 'Email', 'password' => 'Heslo', 'password_confirm' => 'Potvrdit heslo', - 'password_hint' => 'Musí mít víc než 5 znaků', + 'password_hint' => 'Musí mít víc než 7 znaků', 'forgot_password' => 'Zapomněli jste heslo?', 'remember_me' => 'Neodhlašovat', 'ldap_email_hint' => 'Zadejte email, který chcete přiřadit k tomuto účtu.', diff --git a/resources/lang/de/auth.php b/resources/lang/de/auth.php index 46d4070b8..b367fc63b 100644 --- a/resources/lang/de/auth.php +++ b/resources/lang/de/auth.php @@ -25,7 +25,7 @@ return [ 'email' => 'E-Mail', 'password' => 'Passwort', 'password_confirm' => 'Passwort bestätigen', - 'password_hint' => 'Mindestlänge: 5 Zeichen', + 'password_hint' => 'Mindestlänge: 7 Zeichen', 'forgot_password' => 'Passwort vergessen?', 'remember_me' => 'Angemeldet bleiben', 'ldap_email_hint' => 'Bitte geben Sie eine E-Mail-Adresse ein, um diese mit dem Account zu nutzen.', diff --git a/resources/lang/en/auth.php b/resources/lang/en/auth.php index 37346097f..6961e049b 100644 --- a/resources/lang/en/auth.php +++ b/resources/lang/en/auth.php @@ -21,7 +21,7 @@ return [ 'email' => 'Email', 'password' => 'Password', 'password_confirm' => 'Confirm Password', - 'password_hint' => 'Must be over 5 characters', + 'password_hint' => 'Must be over 7 characters', 'forgot_password' => 'Forgot Password?', 'remember_me' => 'Remember Me', 'ldap_email_hint' => 'Please enter an email to use for this account.', diff --git a/resources/lang/en/passwords.php b/resources/lang/en/passwords.php index 9f7d9e3cb..f41ca7868 100644 --- a/resources/lang/en/passwords.php +++ b/resources/lang/en/passwords.php @@ -6,7 +6,7 @@ */ return [ - 'password' => 'Passwords must be at least six characters and match the confirmation.', + 'password' => 'Passwords must be at least eight characters and match the confirmation.', 'user' => "We can't find a user with that e-mail address.", 'token' => 'This password reset token is invalid.', 'sent' => 'We have e-mailed your password reset link!', diff --git a/resources/lang/en/validation.php b/resources/lang/en/validation.php index 210980ac2..76b57a2a3 100644 --- a/resources/lang/en/validation.php +++ b/resources/lang/en/validation.php @@ -12,7 +12,7 @@ return [ 'active_url' => 'The :attribute is not a valid URL.', 'after' => 'The :attribute must be a date after :date.', 'alpha' => 'The :attribute may only contain letters.', - 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', + 'alpha_dash' => 'The :attribute may only contain letters, numbers, dashes and underscores.', 'alpha_num' => 'The :attribute may only contain letters and numbers.', 'array' => 'The :attribute must be an array.', 'before' => 'The :attribute must be a date before :date.', @@ -30,13 +30,41 @@ return [ 'digits' => 'The :attribute must be :digits digits.', 'digits_between' => 'The :attribute must be between :min and :max digits.', 'email' => 'The :attribute must be a valid email address.', + 'ends_with' => 'The :attribute must end with one of the following: :values', 'filled' => 'The :attribute field is required.', + 'gt' => [ + 'numeric' => 'The :attribute must be greater than :value.', + 'file' => 'The :attribute must be greater than :value kilobytes.', + 'string' => 'The :attribute must be greater than :value characters.', + 'array' => 'The :attribute must have more than :value items.', + ], + 'gte' => [ + 'numeric' => 'The :attribute must be greater than or equal :value.', + 'file' => 'The :attribute must be greater than or equal :value kilobytes.', + 'string' => 'The :attribute must be greater than or equal :value characters.', + 'array' => 'The :attribute must have :value items or more.', + ], 'exists' => 'The selected :attribute is invalid.', 'image' => 'The :attribute must be an image.', 'image_extension' => 'The :attribute must have a valid & supported image extension.', 'in' => 'The selected :attribute is invalid.', 'integer' => 'The :attribute must be an integer.', 'ip' => 'The :attribute must be a valid IP address.', + 'ipv4' => 'The :attribute must be a valid IPv4 address.', + 'ipv6' => 'The :attribute must be a valid IPv6 address.', + 'json' => 'The :attribute must be a valid JSON string.', + 'lt' => [ + 'numeric' => 'The :attribute must be less than :value.', + 'file' => 'The :attribute must be less than :value kilobytes.', + 'string' => 'The :attribute must be less than :value characters.', + 'array' => 'The :attribute must have less than :value items.', + ], + 'lte' => [ + 'numeric' => 'The :attribute must be less than or equal :value.', + 'file' => 'The :attribute must be less than or equal :value kilobytes.', + 'string' => 'The :attribute must be less than or equal :value characters.', + 'array' => 'The :attribute must not have more than :value items.', + ], 'max' => [ 'numeric' => 'The :attribute may not be greater than :max.', 'file' => 'The :attribute may not be greater than :max kilobytes.', @@ -52,6 +80,7 @@ return [ ], 'no_double_extension' => 'The :attribute must only have a single file extension.', 'not_in' => 'The selected :attribute is invalid.', + 'not_regex' => 'The :attribute format is invalid.', 'numeric' => 'The :attribute must be a number.', 'regex' => 'The :attribute format is invalid.', 'required' => 'The :attribute field is required.', diff --git a/resources/lang/es/auth.php b/resources/lang/es/auth.php index f693e7976..3636507fe 100644 --- a/resources/lang/es/auth.php +++ b/resources/lang/es/auth.php @@ -21,7 +21,7 @@ return [ 'email' => 'Correo electrónico', 'password' => 'Contraseña', 'password_confirm' => 'Confirmar Contraseña', - 'password_hint' => 'Debe contener más de 5 caracteres', + 'password_hint' => 'Debe contener más de 7 caracteres', 'forgot_password' => '¿Contraseña Olvidada?', 'remember_me' => 'Recordarme', 'ldap_email_hint' => 'Por favor introduzca un mail para utilizar con esta cuenta.', diff --git a/resources/lang/es_AR/auth.php b/resources/lang/es_AR/auth.php index e8a62562b..df1a33dde 100644 --- a/resources/lang/es_AR/auth.php +++ b/resources/lang/es_AR/auth.php @@ -24,7 +24,7 @@ return [ 'email' => 'Correo electrónico', 'password' => 'Contraseña', 'password_confirm' => 'Confirmar contraseña', - 'password_hint' => 'Debe contener al menos 5 caracteres', + 'password_hint' => 'Debe contener al menos 7 caracteres', 'forgot_password' => '¿Olvidó la contraseña?', 'remember_me' => 'Recordarme', 'ldap_email_hint' => 'Por favor introduzca un correo electrónico para utilizar con esta cuenta.', diff --git a/resources/lang/fr/auth.php b/resources/lang/fr/auth.php index c9ce6a4d7..89908c8c4 100644 --- a/resources/lang/fr/auth.php +++ b/resources/lang/fr/auth.php @@ -27,7 +27,7 @@ return [ 'email' => 'E-mail', 'password' => 'Mot de passe', 'password_confirm' => 'Confirmez le mot de passe', - 'password_hint' => 'Doit faire plus de 5 caractères', + 'password_hint' => 'Doit faire plus de 7 caractères', 'forgot_password' => 'Mot de passe oublié ?', 'remember_me' => 'Se souvenir de moi', 'ldap_email_hint' => "Merci d'entrer une adresse e-mail pour ce compte", diff --git a/resources/lang/hu/auth.php b/resources/lang/hu/auth.php index a1809b0de..d96509d05 100644 --- a/resources/lang/hu/auth.php +++ b/resources/lang/hu/auth.php @@ -21,7 +21,7 @@ return [ 'email' => 'Email', 'password' => 'Jelszó', 'password_confirm' => 'Jelszó megerősítése', - 'password_hint' => 'Öt karakternél hosszabbnak kell lennie', + 'password_hint' => 'Négy karakternél hosszabbnak kell lennie', 'forgot_password' => 'Elfelejtett jelszó?', 'remember_me' => 'Emlékezzen rám', 'ldap_email_hint' => 'A fiókhoz használt email cím megadása.', diff --git a/resources/lang/it/auth.php b/resources/lang/it/auth.php index 68fee41a5..59af1fe0d 100755 --- a/resources/lang/it/auth.php +++ b/resources/lang/it/auth.php @@ -27,7 +27,7 @@ return [ 'email' => 'Email', 'password' => 'Password', 'password_confirm' => 'Conferma Password', - 'password_hint' => 'Deve essere più di 5 caratteri', + 'password_hint' => 'Deve essere più di 7 caratteri', 'forgot_password' => 'Password dimenticata?', 'remember_me' => 'Ricordami', 'ldap_email_hint' => 'Inserisci un email per usare quest\'account.', diff --git a/resources/lang/ja/auth.php b/resources/lang/ja/auth.php index 4d5aee8b3..fdfac5f39 100644 --- a/resources/lang/ja/auth.php +++ b/resources/lang/ja/auth.php @@ -27,7 +27,7 @@ return [ 'email' => 'メールアドレス', 'password' => 'パスワード', 'password_confirm' => 'パスワード (確認)', - 'password_hint' => '5文字以上である必要があります', + 'password_hint' => '7文字以上である必要があります', 'forgot_password' => 'パスワードをお忘れですか?', 'remember_me' => 'ログイン情報を保存する', 'ldap_email_hint' => 'このアカウントで使用するEメールアドレスを入力してください。', diff --git a/resources/lang/kr/auth.php b/resources/lang/kr/auth.php index 671ddc654..36534f0d4 100644 --- a/resources/lang/kr/auth.php +++ b/resources/lang/kr/auth.php @@ -27,7 +27,7 @@ return [ 'email' => '이메일', 'password' => '비밀번호', 'password_confirm' => '비밀번호 (확인)', - 'password_hint' => '5자 이상이어야 합니다.', + 'password_hint' => '7자 이상이어야 합니다.', 'forgot_password' => '비밀번호를 잊으셨습니까?', 'remember_me' => '자동로그인', 'ldap_email_hint' => '이 계정에서 사용하는 이메일을 입력해 주세요.', diff --git a/resources/lang/nl/auth.php b/resources/lang/nl/auth.php index 31bd330cc..30dfdd78d 100644 --- a/resources/lang/nl/auth.php +++ b/resources/lang/nl/auth.php @@ -27,7 +27,7 @@ return [ 'email' => 'Email', 'password' => 'Wachtwoord', 'password_confirm' => 'Wachtwoord Bevestigen', - 'password_hint' => 'Minimaal 6 tekens', + 'password_hint' => 'Minimaal 8 tekens', 'forgot_password' => 'Wachtwoord vergeten?', 'remember_me' => 'Mij onthouden', 'ldap_email_hint' => 'Geef een email op waarmee je dit account wilt gebruiken.', diff --git a/resources/lang/pl/auth.php b/resources/lang/pl/auth.php index 5cec651a9..40c458c61 100644 --- a/resources/lang/pl/auth.php +++ b/resources/lang/pl/auth.php @@ -27,7 +27,7 @@ return [ 'email' => 'E-mail', 'password' => 'Hasło', 'password_confirm' => 'Potwierdzenie hasła', - 'password_hint' => 'Musi mieć więcej niż 5 znaków', + 'password_hint' => 'Musi mieć więcej niż 7 znaków', 'forgot_password' => 'Zapomniałem hasła', 'remember_me' => 'Zapamiętaj mnie', 'ldap_email_hint' => 'Wprowadź adres e-mail dla tego konta.', diff --git a/resources/lang/pt_BR/auth.php b/resources/lang/pt_BR/auth.php index 20dc690af..79f743617 100644 --- a/resources/lang/pt_BR/auth.php +++ b/resources/lang/pt_BR/auth.php @@ -21,7 +21,7 @@ return [ 'email' => 'E-mail', 'password' => 'Senha', 'password_confirm' => 'Confirmar Senha', - 'password_hint' => 'Senha deverá ser maior que 5 caracteres', + 'password_hint' => 'Senha deverá ser maior que 7 caracteres', 'forgot_password' => 'Esqueceu a senha?', 'remember_me' => 'Lembrar de mim', 'ldap_email_hint' => 'Por favor, digite um e-mail para essa conta.', diff --git a/resources/lang/ru/auth.php b/resources/lang/ru/auth.php index 8bd94513c..d9baec686 100644 --- a/resources/lang/ru/auth.php +++ b/resources/lang/ru/auth.php @@ -21,7 +21,7 @@ return [ 'email' => 'Email', 'password' => 'Пароль', 'password_confirm' => 'Подтверждение пароля', - 'password_hint' => 'Должен быть больше 5 символов', + 'password_hint' => 'Должен быть больше 7 символов', 'forgot_password' => 'Забыли пароль?', 'remember_me' => 'Запомнить меня', 'ldap_email_hint' => 'Введите email адрес для данной учетной записи.', diff --git a/resources/lang/sk/auth.php b/resources/lang/sk/auth.php index 2fa69ac3e..69004e87a 100644 --- a/resources/lang/sk/auth.php +++ b/resources/lang/sk/auth.php @@ -27,7 +27,7 @@ return [ 'email' => 'Email', 'password' => 'Heslo', 'password_confirm' => 'Potvrdiť heslo', - 'password_hint' => 'Musí mať viac ako 5 znakov', + 'password_hint' => 'Musí mať viac ako 7 znakov', 'forgot_password' => 'Zabudli ste heslo?', 'remember_me' => 'Zapamätať si ma', 'ldap_email_hint' => 'Zadajte prosím email, ktorý sa má použiť pre tento účet.', diff --git a/resources/lang/sv/auth.php b/resources/lang/sv/auth.php index 30e1a1937..4eb2be028 100644 --- a/resources/lang/sv/auth.php +++ b/resources/lang/sv/auth.php @@ -27,7 +27,7 @@ return [ 'email' => 'E-post', 'password' => 'Lösenord', 'password_confirm' => 'Bekräfta lösenord', - 'password_hint' => 'Måste vara fler än 5 tecken', + 'password_hint' => 'Måste vara fler än 7 tecken', 'forgot_password' => 'Glömt lösenord?', 'remember_me' => 'Kom ihåg mig', 'ldap_email_hint' => 'Vänligen ange en e-postadress att använda till kontot.', diff --git a/resources/lang/uk/auth.php b/resources/lang/uk/auth.php index cd73f92db..32b35a156 100644 --- a/resources/lang/uk/auth.php +++ b/resources/lang/uk/auth.php @@ -21,7 +21,7 @@ return [ 'email' => 'Email', 'password' => 'Пароль', 'password_confirm' => 'Підтвердження пароля', - 'password_hint' => 'Має бути більше 5 символів', + 'password_hint' => 'Має бути більше 7 символів', 'forgot_password' => 'Забули пароль?', 'remember_me' => 'Запам’ятати мене', 'ldap_email_hint' => 'Введіть email для цього облікового запису.', diff --git a/resources/lang/zh_CN/auth.php b/resources/lang/zh_CN/auth.php index 046f2360b..f4159826c 100644 --- a/resources/lang/zh_CN/auth.php +++ b/resources/lang/zh_CN/auth.php @@ -27,7 +27,7 @@ return [ 'email' => 'Email地址', 'password' => '密码', 'password_confirm' => '确认密码', - 'password_hint' => '必须超过5个字符', + 'password_hint' => '必须超过7个字符', 'forgot_password' => '忘记密码?', 'remember_me' => '记住我', 'ldap_email_hint' => '请输入用于此帐户的电子邮件。', diff --git a/resources/lang/zh_TW/auth.php b/resources/lang/zh_TW/auth.php index f44ac8af0..9e7fcd036 100644 --- a/resources/lang/zh_TW/auth.php +++ b/resources/lang/zh_TW/auth.php @@ -27,7 +27,7 @@ return [ 'email' => 'Email位址', 'password' => '密碼', 'password_confirm' => '確認密碼', - 'password_hint' => '必須超過5個字元', + 'password_hint' => '必須超過7個字元', 'forgot_password' => '忘記密碼?', 'remember_me' => '記住我', 'ldap_email_hint' => '請輸入用於此帳號的電子郵件。', diff --git a/resources/assets/sass/_animations.scss b/resources/sass/_animations.scss similarity index 100% rename from resources/assets/sass/_animations.scss rename to resources/sass/_animations.scss diff --git a/resources/assets/sass/_blocks.scss b/resources/sass/_blocks.scss similarity index 100% rename from resources/assets/sass/_blocks.scss rename to resources/sass/_blocks.scss diff --git a/resources/assets/sass/_buttons.scss b/resources/sass/_buttons.scss similarity index 100% rename from resources/assets/sass/_buttons.scss rename to resources/sass/_buttons.scss diff --git a/resources/assets/sass/_codemirror.scss b/resources/sass/_codemirror.scss similarity index 100% rename from resources/assets/sass/_codemirror.scss rename to resources/sass/_codemirror.scss diff --git a/resources/assets/sass/_colors.scss b/resources/sass/_colors.scss similarity index 100% rename from resources/assets/sass/_colors.scss rename to resources/sass/_colors.scss diff --git a/resources/assets/sass/_components.scss b/resources/sass/_components.scss similarity index 100% rename from resources/assets/sass/_components.scss rename to resources/sass/_components.scss diff --git a/resources/assets/sass/_forms.scss b/resources/sass/_forms.scss similarity index 100% rename from resources/assets/sass/_forms.scss rename to resources/sass/_forms.scss diff --git a/resources/assets/sass/_header.scss b/resources/sass/_header.scss similarity index 100% rename from resources/assets/sass/_header.scss rename to resources/sass/_header.scss diff --git a/resources/assets/sass/_html.scss b/resources/sass/_html.scss similarity index 100% rename from resources/assets/sass/_html.scss rename to resources/sass/_html.scss diff --git a/resources/assets/sass/_layout.scss b/resources/sass/_layout.scss similarity index 100% rename from resources/assets/sass/_layout.scss rename to resources/sass/_layout.scss diff --git a/resources/assets/sass/_lists.scss b/resources/sass/_lists.scss similarity index 100% rename from resources/assets/sass/_lists.scss rename to resources/sass/_lists.scss diff --git a/resources/assets/sass/_mixins.scss b/resources/sass/_mixins.scss similarity index 100% rename from resources/assets/sass/_mixins.scss rename to resources/sass/_mixins.scss diff --git a/resources/assets/sass/_pages.scss b/resources/sass/_pages.scss similarity index 100% rename from resources/assets/sass/_pages.scss rename to resources/sass/_pages.scss diff --git a/resources/assets/sass/_reset.scss b/resources/sass/_reset.scss similarity index 100% rename from resources/assets/sass/_reset.scss rename to resources/sass/_reset.scss diff --git a/resources/assets/sass/_spacing.scss b/resources/sass/_spacing.scss similarity index 100% rename from resources/assets/sass/_spacing.scss rename to resources/sass/_spacing.scss diff --git a/resources/assets/sass/_tables.scss b/resources/sass/_tables.scss similarity index 100% rename from resources/assets/sass/_tables.scss rename to resources/sass/_tables.scss diff --git a/resources/assets/sass/_text.scss b/resources/sass/_text.scss similarity index 100% rename from resources/assets/sass/_text.scss rename to resources/sass/_text.scss diff --git a/resources/assets/sass/_tinymce.scss b/resources/sass/_tinymce.scss similarity index 100% rename from resources/assets/sass/_tinymce.scss rename to resources/sass/_tinymce.scss diff --git a/resources/assets/sass/_variables.scss b/resources/sass/_variables.scss similarity index 100% rename from resources/assets/sass/_variables.scss rename to resources/sass/_variables.scss diff --git a/resources/assets/sass/export-styles.scss b/resources/sass/export-styles.scss similarity index 100% rename from resources/assets/sass/export-styles.scss rename to resources/sass/export-styles.scss diff --git a/resources/assets/sass/print-styles.scss b/resources/sass/print-styles.scss similarity index 100% rename from resources/assets/sass/print-styles.scss rename to resources/sass/print-styles.scss diff --git a/resources/assets/sass/styles.scss b/resources/sass/styles.scss similarity index 100% rename from resources/assets/sass/styles.scss rename to resources/sass/styles.scss diff --git a/resources/views/auth/login.blade.php b/resources/views/auth/login.blade.php index 438339e92..2f3cc1f73 100644 --- a/resources/views/auth/login.blade.php +++ b/resources/views/auth/login.blade.php @@ -7,7 +7,7 @@
 
-

{{ title_case(trans('auth.log_in')) }}

+

{{ Str::title(trans('auth.log_in')) }}

{!! csrf_field() !!} @@ -28,7 +28,7 @@
- +
diff --git a/resources/views/auth/register.blade.php b/resources/views/auth/register.blade.php index 60ceba93c..0e996a00d 100644 --- a/resources/views/auth/register.blade.php +++ b/resources/views/auth/register.blade.php @@ -6,7 +6,7 @@
 
-

{{ title_case(trans('auth.sign_up')) }}

+

{{ Str::title(trans('auth.sign_up')) }}

{!! csrf_field() !!} diff --git a/resources/views/pages/markdown-editor.blade.php b/resources/views/pages/markdown-editor.blade.php index e39f39fc2..526441138 100644 --- a/resources/views/pages/markdown-editor.blade.php +++ b/resources/views/pages/markdown-editor.blade.php @@ -19,7 +19,7 @@
+ @if($errors->has('markdown')) class="text-neg" @endif>@if(isset($model) || old('markdown')){{ old('markdown') ? old('markdown') : ($model->markdown === '' ? $model->html : $model->markdown) }}@endif
diff --git a/resources/views/pages/wysiwyg-editor.blade.php b/resources/views/pages/wysiwyg-editor.blade.php index f9a0f03cf..1a67ee76f 100644 --- a/resources/views/pages/wysiwyg-editor.blade.php +++ b/resources/views/pages/wysiwyg-editor.blade.php @@ -5,7 +5,7 @@ ]) + @if($errors->has('html')) class="text-neg" @endif>@if(isset($model) || old('html')){{ old('html') ? old('html') : $model->html }}@endif @if($errors->has('html')) diff --git a/resources/views/partials/breadcrumbs.blade.php b/resources/views/partials/breadcrumbs.blade.php index 5e11a9190..58ccd5125 100644 --- a/resources/views/partials/breadcrumbs.blade.php +++ b/resources/views/partials/breadcrumbs.blade.php @@ -2,7 +2,7 @@ {{-- Show top level books item --}} - @if (count($crumbs) > 0 && array_first($crumbs) instanceof \BookStack\Entities\Book) + @if (count($crumbs) > 0 && ($crumbs[0] ?? null) instanceof \BookStack\Entities\Book) @icon('books') {{ trans('entities.books') }} @@ -11,7 +11,7 @@ @endif {{-- Show top level shelves item --}} - @if (count($crumbs) > 0 && array_first($crumbs) instanceof \BookStack\Entities\Bookshelf) + @if (count($crumbs) > 0 && ($crumbs[0] ?? null) instanceof \BookStack\Entities\Bookshelf) @icon('bookshelf') {{ trans('entities.shelves') }} diff --git a/storage/framework/cache/.gitignore b/storage/framework/cache/.gitignore index c96a04f00..869804c2a 100755 --- a/storage/framework/cache/.gitignore +++ b/storage/framework/cache/.gitignore @@ -1,2 +1,3 @@ * +!data/ !.gitignore \ No newline at end of file diff --git a/tests/Auth/AuthTest.php b/tests/Auth/AuthTest.php index 42b44c152..eb83faded 100644 --- a/tests/Auth/AuthTest.php +++ b/tests/Auth/AuthTest.php @@ -81,7 +81,7 @@ class AuthTest extends BrowserKitTest ->press('Create Account') ->see('The name must be at least 2 characters.') ->see('The email must be a valid email address.') - ->see('The password must be at least 6 characters.') + ->see('The password must be at least 8 characters.') ->seePageIs('/register'); } diff --git a/tests/Auth/LdapTest.php b/tests/Auth/LdapTest.php index 5923ef377..fe28698df 100644 --- a/tests/Auth/LdapTest.php +++ b/tests/Auth/LdapTest.php @@ -15,7 +15,7 @@ class LdapTest extends BrowserKitTest protected $mockUser; protected $resourceId = 'resource-test'; - public function setUp() + public function setUp(): void { parent::setUp(); if (!defined('LDAP_OPT_REFERRALS')) define('LDAP_OPT_REFERRALS', 1); diff --git a/tests/Auth/SocialAuthTest.php b/tests/Auth/SocialAuthTest.php index b8ca81174..526c0e199 100644 --- a/tests/Auth/SocialAuthTest.php +++ b/tests/Auth/SocialAuthTest.php @@ -153,7 +153,7 @@ class SocialAuthTest extends TestCase config()->set('services.google.select_account', 'true'); $resp = $this->get('/login/service/google'); - $this->assertContains('prompt=select_account', $resp->headers->get('Location')); + $this->assertStringContainsString('prompt=select_account', $resp->headers->get('Location')); } } diff --git a/tests/Auth/UserInviteTest.php b/tests/Auth/UserInviteTest.php index 331262690..d200134a5 100644 --- a/tests/Auth/UserInviteTest.php +++ b/tests/Auth/UserInviteTest.php @@ -6,6 +6,7 @@ use BookStack\Auth\User; use BookStack\Notifications\UserInvite; use Carbon\Carbon; use DB; +use Illuminate\Support\Str; use Notification; class UserInviteTest extends TestCase @@ -68,11 +69,13 @@ class UserInviteTest extends TestCase $inviteService->sendInvitation($user); $token = DB::table('user_invites')->where('user_id', '=', $user->id)->first()->token; + $this->get('/register/invite/' . $token); $shortPassword = $this->followingRedirects()->post('/register/invite/' . $token, [ - 'password' => 'mypas', + 'password' => 'mypassw', ]); - $shortPassword->assertSee('The password must be at least 6 characters.'); + $shortPassword->assertSee('The password must be at least 8 characters.'); + $this->get('/register/invite/' . $token); $noPassword = $this->followingRedirects()->post('/register/invite/' . $token, [ 'password' => '', ]); @@ -85,10 +88,10 @@ class UserInviteTest extends TestCase public function test_non_existent_invite_token_redirects_to_home() { - $setPasswordPageResp = $this->get('/register/invite/' . str_random(12)); + $setPasswordPageResp = $this->get('/register/invite/' . Str::random(12)); $setPasswordPageResp->assertRedirect('/'); - $setPasswordResp = $this->post('/register/invite/' . str_random(12), ['password' => 'Password Test']); + $setPasswordResp = $this->post('/register/invite/' . Str::random(12), ['password' => 'Password Test']); $setPasswordResp->assertRedirect('/'); } diff --git a/tests/BrowserKitTest.php b/tests/BrowserKitTest.php index ab0d9d898..b81afe311 100644 --- a/tests/BrowserKitTest.php +++ b/tests/BrowserKitTest.php @@ -21,7 +21,7 @@ abstract class BrowserKitTest extends TestCase */ protected $baseUrl = 'http://localhost'; - public function tearDown() + public function tearDown() : void { \DB::disconnect(); parent::tearDown(); diff --git a/tests/Entity/BookShelfTest.php b/tests/Entity/BookShelfTest.php index 158fb5ca1..5c7673847 100644 --- a/tests/Entity/BookShelfTest.php +++ b/tests/Entity/BookShelfTest.php @@ -4,6 +4,7 @@ use BookStack\Auth\Role; use BookStack\Auth\User; use BookStack\Entities\Book; use BookStack\Entities\Bookshelf; +use Illuminate\Support\Str; class BookShelfTest extends TestCase { @@ -55,8 +56,8 @@ class BookShelfTest extends TestCase { $booksToInclude = Book::take(2)->get(); $shelfInfo = [ - 'name' => 'My test book' . str_random(4), - 'description' => 'Test book description ' . str_random(10) + 'name' => 'My test book' . Str::random(4), + 'description' => 'Test book description ' . Str::random(10) ]; $resp = $this->asEditor()->post('/shelves', array_merge($shelfInfo, [ 'books' => $booksToInclude->implode('id', ','), @@ -120,8 +121,8 @@ class BookShelfTest extends TestCase $booksToInclude = Book::take(2)->get(); $shelfInfo = [ - 'name' => 'My test book' . str_random(4), - 'description' => 'Test book description ' . str_random(10) + 'name' => 'My test book' . Str::random(4), + 'description' => 'Test book description ' . Str::random(10) ]; $resp = $this->asEditor()->put($shelf->getUrl(), array_merge($shelfInfo, [ diff --git a/tests/Entity/CommentSettingTest.php b/tests/Entity/CommentSettingTest.php index 2683f57cb..967e550a7 100644 --- a/tests/Entity/CommentSettingTest.php +++ b/tests/Entity/CommentSettingTest.php @@ -3,7 +3,7 @@ class CommentSettingTest extends BrowserKitTest { protected $page; - public function setUp() { + public function setUp(): void { parent::setUp(); $this->page = \BookStack\Entities\Page::first(); } diff --git a/tests/Entity/ExportTest.php b/tests/Entity/ExportTest.php index e3a74f64d..9a2d32028 100644 --- a/tests/Entity/ExportTest.php +++ b/tests/Entity/ExportTest.php @@ -4,6 +4,7 @@ use BookStack\Entities\Chapter; use BookStack\Entities\Page; use BookStack\Uploads\HttpFetcher; +use Illuminate\Support\Str; class ExportTest extends TestCase { @@ -79,7 +80,7 @@ class ExportTest extends TestCase public function test_book_html_export_shows_chapter_descriptions() { - $chapterDesc = 'My custom test chapter description ' . str_random(12); + $chapterDesc = 'My custom test chapter description ' . Str::random(12); $chapter = Chapter::query()->first(); $chapter->description = $chapterDesc; $chapter->save(); diff --git a/tests/Entity/MarkdownTest.php b/tests/Entity/MarkdownTest.php index c481e444f..5d3af4f6e 100644 --- a/tests/Entity/MarkdownTest.php +++ b/tests/Entity/MarkdownTest.php @@ -4,7 +4,7 @@ class MarkdownTest extends BrowserKitTest { protected $page; - public function setUp() + public function setUp(): void { parent::setUp(); $this->page = \BookStack\Entities\Page::first(); diff --git a/tests/Entity/PageContentTest.php b/tests/Entity/PageContentTest.php index e812d5bfe..a0fcb5ca8 100644 --- a/tests/Entity/PageContentTest.php +++ b/tests/Entity/PageContentTest.php @@ -50,7 +50,7 @@ class PageContentTest extends TestCase $resp->assertStatus(302); $page = Page::find($page->id); - $this->assertContains($includeTag, $page->html); + $this->assertStringContainsString($includeTag, $page->html); $this->assertEquals('', $page->text); } diff --git a/tests/Entity/PageDraftTest.php b/tests/Entity/PageDraftTest.php index f15651f39..f29231c39 100644 --- a/tests/Entity/PageDraftTest.php +++ b/tests/Entity/PageDraftTest.php @@ -8,7 +8,7 @@ class PageDraftTest extends BrowserKitTest protected $page; protected $pageRepo; - public function setUp() + public function setUp(): void { parent::setUp(); $this->page = \BookStack\Entities\Page::first(); diff --git a/tests/Entity/SortTest.php b/tests/Entity/SortTest.php index a3c20e84c..cad6d3c01 100644 --- a/tests/Entity/SortTest.php +++ b/tests/Entity/SortTest.php @@ -10,7 +10,7 @@ class SortTest extends TestCase { protected $book; - public function setUp() + public function setUp(): void { parent::setUp(); $this->book = Book::first(); diff --git a/tests/LanguageTest.php b/tests/LanguageTest.php index d9b8655ee..c8bc44451 100644 --- a/tests/LanguageTest.php +++ b/tests/LanguageTest.php @@ -8,7 +8,7 @@ class LanguageTest extends TestCase /** * LanguageTest constructor. */ - public function setUp() + public function setUp(): void { parent::setUp(); $this->langs = array_diff(scandir(resource_path('lang')), ['..', '.', 'check.php', 'format.php']); diff --git a/tests/Permissions/RestrictionsTest.php b/tests/Permissions/RestrictionsTest.php index a7f681a37..f6e07c0f1 100644 --- a/tests/Permissions/RestrictionsTest.php +++ b/tests/Permissions/RestrictionsTest.php @@ -21,7 +21,7 @@ class RestrictionsTest extends BrowserKitTest */ protected $viewer; - public function setUp() + public function setUp(): void { parent::setUp(); $this->user = $this->getEditor(); diff --git a/tests/Permissions/RolesTest.php b/tests/Permissions/RolesTest.php index a1f193643..371cffc0f 100644 --- a/tests/Permissions/RolesTest.php +++ b/tests/Permissions/RolesTest.php @@ -11,7 +11,7 @@ class RolesTest extends BrowserKitTest { protected $user; - public function setUp() + public function setUp(): void { parent::setUp(); $this->user = $this->getViewer(); diff --git a/tests/SharedTestHelpers.php b/tests/SharedTestHelpers.php index 1d87e942a..eb3f7b4bb 100644 --- a/tests/SharedTestHelpers.php +++ b/tests/SharedTestHelpers.php @@ -1,8 +1,6 @@ 'test page', 'html' => 'My new test page']) { $book = Book::first(); @@ -204,4 +205,58 @@ trait SharedTestHelpers ->andReturn($returnData); } + /** + * Run a set test with the given env variable. + * Remembers the original and resets the value after test. + * @param string $name + * @param $value + * @param callable $callback + */ + protected function runWithEnv(string $name, $value, callable $callback) + { + Env::disablePutenv(); + $originalVal = $_ENV[$name] ?? null; + + if (is_null($value)) { + unset($_ENV[$name]); + unset($_SERVER[$name]); + } else { + $_ENV[$name] = $value; + $_SERVER[$name] = $value; + } + + $this->refreshApplication(); + $callback(); + + if (is_null($originalVal)) { + unset($_SERVER[$name]); + unset($_ENV[$name]); + } else { + $_SERVER[$name] = $originalVal; + $_ENV[$name] = $originalVal; + } + } + + /** + * Check the keys and properties in the given map to include + * exist, albeit not exclusively, within the map to check. + * @param array $mapToInclude + * @param array $mapToCheck + * @param string $message + */ + protected function assertArrayMapIncludes(array $mapToInclude, array $mapToCheck, string $message = '') : void + { + $passed = true; + + foreach ($mapToInclude as $key => $value) { + if (!isset($mapToCheck[$key]) || $mapToCheck[$key] !== $mapToInclude[$key]) { + $passed = false; + } + } + + $toIncludeStr = print_r($mapToInclude, true); + $toCheckStr = print_r($mapToCheck, true); + self::assertThat($passed, self::isTrue(), "Failed asserting that given map:\n\n{$toCheckStr}\n\nincludes:\n\n{$toIncludeStr}"); + } + } \ No newline at end of file diff --git a/tests/Unit/ConfigTest.php b/tests/Unit/ConfigTest.php index 967915af9..7b9f64e6a 100644 --- a/tests/Unit/ConfigTest.php +++ b/tests/Unit/ConfigTest.php @@ -12,22 +12,19 @@ class ConfigTest extends TestCase public function test_filesystem_images_falls_back_to_storage_type_var() { - putenv('STORAGE_TYPE=local_secure'); - - $this->checkEnvConfigResult('STORAGE_IMAGE_TYPE', 's3', 'filesystems.images', 's3'); - $this->checkEnvConfigResult('STORAGE_IMAGE_TYPE', null, 'filesystems.images', 'local_secure'); - - putenv('STORAGE_TYPE=local'); + $this->runWithEnv('STORAGE_TYPE', 'local_secure', function() { + $this->checkEnvConfigResult('STORAGE_IMAGE_TYPE', 's3', 'filesystems.images', 's3'); + $this->checkEnvConfigResult('STORAGE_IMAGE_TYPE', null, 'filesystems.images', 'local_secure'); + }); } public function test_filesystem_attachments_falls_back_to_storage_type_var() { putenv('STORAGE_TYPE=local_secure'); - - $this->checkEnvConfigResult('STORAGE_ATTACHMENT_TYPE', 's3', 'filesystems.attachments', 's3'); - $this->checkEnvConfigResult('STORAGE_ATTACHMENT_TYPE', null, 'filesystems.attachments', 'local_secure'); - - putenv('STORAGE_TYPE=local'); + $this->runWithEnv('STORAGE_TYPE', 'local_secure', function() { + $this->checkEnvConfigResult('STORAGE_ATTACHMENT_TYPE', 's3', 'filesystems.attachments', 's3'); + $this->checkEnvConfigResult('STORAGE_ATTACHMENT_TYPE', null, 'filesystems.attachments', 'local_secure'); + }); } public function test_app_url_blank_if_old_default_value() @@ -49,12 +46,9 @@ class ConfigTest extends TestCase */ protected function checkEnvConfigResult(string $envName, $envVal, string $configKey, string $expectedResult) { - $originalVal = getenv($envName); - $envString = $envName . (is_null($envVal) ? '' : '=') . ($envVal ?? ''); - putenv($envString); - $this->refreshApplication(); - $this->assertEquals($expectedResult, config($configKey)); - putenv($envString = $envName . (empty($originalVal) ? '' : '=') . ($originalVal ?? '')); + $this->runWithEnv($envName, $envVal, function() use ($configKey, $expectedResult) { + $this->assertEquals($expectedResult, config($configKey)); + }); } } \ No newline at end of file diff --git a/tests/Unit/PageRepoTest.php b/tests/Unit/PageRepoTest.php index 41e7c2f78..38ffbf616 100644 --- a/tests/Unit/PageRepoTest.php +++ b/tests/Unit/PageRepoTest.php @@ -10,7 +10,7 @@ class PageRepoTest extends TestCase */ protected $pageRepo; - protected function setUp() + protected function setUp(): void { parent::setUp(); $this->pageRepo = app()->make(PageRepo::class); @@ -22,19 +22,19 @@ class PageRepoTest extends TestCase $navMap = $this->pageRepo->getPageNav($content); $this->assertCount(3, $navMap); - $this->assertArraySubset([ + $this->assertArrayMapIncludes([ 'nodeName' => 'h1', 'link' => '#testa', 'text' => 'Hello', 'level' => 1, ], $navMap[0]); - $this->assertArraySubset([ + $this->assertArrayMapIncludes([ 'nodeName' => 'h2', 'link' => '#testb', 'text' => 'There', 'level' => 2, ], $navMap[1]); - $this->assertArraySubset([ + $this->assertArrayMapIncludes([ 'nodeName' => 'h3', 'link' => '#testc', 'text' => 'Donkey', @@ -48,7 +48,7 @@ class PageRepoTest extends TestCase $navMap = $this->pageRepo->getPageNav($content); $this->assertCount(1, $navMap); - $this->assertArraySubset([ + $this->assertArrayMapIncludes([ 'nodeName' => 'h1', 'link' => '#testa', 'text' => 'Hello' @@ -61,15 +61,15 @@ class PageRepoTest extends TestCase $navMap = $this->pageRepo->getPageNav($content); $this->assertCount(3, $navMap); - $this->assertArraySubset([ + $this->assertArrayMapIncludes([ 'nodeName' => 'h4', 'level' => 1, ], $navMap[0]); - $this->assertArraySubset([ + $this->assertArrayMapIncludes([ 'nodeName' => 'h5', 'level' => 2, ], $navMap[1]); - $this->assertArraySubset([ + $this->assertArrayMapIncludes([ 'nodeName' => 'h6', 'level' => 3, ], $navMap[2]); diff --git a/tests/Unit/UrlTest.php b/tests/Unit/UrlTest.php index 1667f5f7b..c2386443c 100644 --- a/tests/Unit/UrlTest.php +++ b/tests/Unit/UrlTest.php @@ -16,18 +16,16 @@ class UrlTest extends TestCase public function test_url_helper_takes_custom_url_into_account() { - putenv('APP_URL=http://example.com/bookstack'); - $this->refreshApplication(); - $this->assertEquals('http://example.com/bookstack/books', url('/books')); - putenv('APP_URL='); + $this->runWithEnv('APP_URL', 'http://example.com/bookstack', function() { + $this->assertEquals('http://example.com/bookstack/books', url('/books')); + }); } public function test_url_helper_sets_correct_scheme_even_when_request_scheme_is_different() { - putenv('APP_URL=https://example.com/'); - $this->refreshApplication(); - $this->get('http://example.com/login')->assertSee('https://example.com/dist/styles.css'); - putenv('APP_URL='); + $this->runWithEnv('APP_URL', 'https://example.com/', function() { + $this->get('http://example.com/login')->assertSee('https://example.com/dist/styles.css'); + }); } } \ No newline at end of file diff --git a/tests/Uploads/AttachmentTest.php b/tests/Uploads/AttachmentTest.php index 35ffda821..0d51e050f 100644 --- a/tests/Uploads/AttachmentTest.php +++ b/tests/Uploads/AttachmentTest.php @@ -78,7 +78,7 @@ class AttachmentTest extends TestCase $upload->assertStatus(200); $attachment = Attachment::query()->orderBy('id', 'desc')->first(); - $this->assertNotContains($fileName, $attachment->path); + $this->assertStringNotContainsString($fileName, $attachment->path); $this->assertStringEndsWith('.txt', $attachment->path); } diff --git a/tests/Uploads/ImageTest.php b/tests/Uploads/ImageTest.php index f92653378..4d3e8a498 100644 --- a/tests/Uploads/ImageTest.php +++ b/tests/Uploads/ImageTest.php @@ -4,6 +4,7 @@ use BookStack\Entities\Repos\PageRepo; use BookStack\Uploads\Image; use BookStack\Entities\Page; use BookStack\Uploads\ImageService; +use Illuminate\Support\Str; use Tests\TestCase; class ImageTest extends TestCase @@ -43,7 +44,7 @@ class ImageTest extends TestCase $imgDetails = $this->uploadGalleryImage(); $image = Image::query()->first(); - $newName = str_random(); + $newName = Str::random(); $update = $this->put('/images/' . $image->id, ['name' => $newName]); $update->assertSuccessful(); $update->assertJson([ @@ -89,7 +90,7 @@ class ImageTest extends TestCase $searchHitRequest = $this->get("/images/gallery?page=1&uploaded_to={$pageId}&search={$namePartial}"); $searchHitRequest->assertSuccessful()->assertJson($resultJson); - $namePartial = str_random(16); + $namePartial = Str::random(16); $searchHitRequest = $this->get("/images/gallery?page=1&uploaded_to={$pageId}&search={$namePartial}"); $searchHitRequest->assertSuccessful()->assertExactJson($emptyJson); } @@ -208,7 +209,7 @@ class ImageTest extends TestCase $encodedImageContent = base64_encode(file_get_contents($expectedPath)); $export = $this->get($page->getUrl('/export/html')); - $this->assertTrue(str_contains($export->getContent(), $encodedImageContent), 'Uploaded image in export content'); + $this->assertTrue(strpos($export->getContent(), $encodedImageContent) !== false, 'Uploaded image in export content'); if (file_exists($expectedPath)) { unlink($expectedPath); diff --git a/tests/UserProfileTest.php b/tests/UserProfileTest.php index a7c7505a8..fc1a529ae 100644 --- a/tests/UserProfileTest.php +++ b/tests/UserProfileTest.php @@ -4,7 +4,7 @@ class UserProfileTest extends BrowserKitTest { protected $user; - public function setUp() + public function setUp(): void { parent::setUp(); $this->user = \BookStack\Auth\User::all()->last(); diff --git a/webpack.config.js b/webpack.config.js index 78b679a0a..e496340c4 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -7,10 +7,10 @@ const config = { target: 'web', mode: dev? 'development' : 'production', entry: { - app: './resources/assets/js/index.js', - styles: './resources/assets/sass/styles.scss', - "export-styles": './resources/assets/sass/export-styles.scss', - "print-styles": './resources/assets/sass/print-styles.scss', + app: './resources/js/index.js', + styles: './resources/sass/styles.scss', + "export-styles": './resources/sass/export-styles.scss', + "print-styles": './resources/sass/print-styles.scss', }, output: { filename: '[name].js',