From f9b07f807f4934f7296c4ef3528372d33984b015 Mon Sep 17 00:00:00 2001 From: Kovah Date: Mon, 2 May 2022 16:06:43 +0200 Subject: [PATCH 01/86] Upgrade to PHP 8 as base dependency - Upgrades the Dockerfiles and composer.json to require PHP 8. - Upgrades to Laravel 9 with all needed changes. - Move lang folder to root directory. - Upgrades third-party packages to the latest versions with all required changes. --- app/Actions/ImportHtmlBookmarks.php | 4 +- app/Http/Kernel.php | 3 +- app/Http/Middleware/TrustProxies.php | 11 +- composer.json | 27 +- composer.lock | 3258 ++++++----------- config/app.php | 82 +- config/auth.php | 18 +- config/backup.php | 22 +- config/broadcasting.php | 10 +- config/cache.php | 33 +- config/cors.php | 42 +- config/database.php | 32 +- config/enlightn.php | 151 - config/filesystems.php | 37 +- config/hashing.php | 6 +- config/logging.php | 41 +- config/mail.php | 137 +- config/queue.php | 9 +- config/sanctum.php | 67 + config/services.php | 1 + config/session.php | 18 +- {resources/lang => lang}/ca_ES/auth.php | 0 {resources/lang => lang}/ca_ES/export.php | 0 {resources/lang => lang}/ca_ES/import.php | 0 {resources/lang => lang}/ca_ES/link.php | 0 {resources/lang => lang}/ca_ES/linkace.php | 0 {resources/lang => lang}/ca_ES/list.php | 0 {resources/lang => lang}/ca_ES/note.php | 0 {resources/lang => lang}/ca_ES/pagination.php | 0 {resources/lang => lang}/ca_ES/passwords.php | 0 .../lang => lang}/ca_ES/placeholder.php | 0 {resources/lang => lang}/ca_ES/search.php | 0 {resources/lang => lang}/ca_ES/settings.php | 0 {resources/lang => lang}/ca_ES/setup.php | 0 {resources/lang => lang}/ca_ES/sharing.php | 0 {resources/lang => lang}/ca_ES/stats.php | 0 {resources/lang => lang}/ca_ES/tag.php | 0 {resources/lang => lang}/ca_ES/trash.php | 0 {resources/lang => lang}/ca_ES/user.php | 0 {resources/lang => lang}/ca_ES/validation.php | 0 {resources/lang => lang}/de_DE/auth.php | 0 {resources/lang => lang}/de_DE/export.php | 0 {resources/lang => lang}/de_DE/import.php | 0 {resources/lang => lang}/de_DE/link.php | 0 {resources/lang => lang}/de_DE/linkace.php | 0 {resources/lang => lang}/de_DE/list.php | 0 {resources/lang => lang}/de_DE/note.php | 0 {resources/lang => lang}/de_DE/pagination.php | 0 {resources/lang => lang}/de_DE/passwords.php | 0 .../lang => lang}/de_DE/placeholder.php | 0 {resources/lang => lang}/de_DE/search.php | 0 {resources/lang => lang}/de_DE/settings.php | 0 {resources/lang => lang}/de_DE/setup.php | 0 {resources/lang => lang}/de_DE/sharing.php | 0 {resources/lang => lang}/de_DE/stats.php | 0 {resources/lang => lang}/de_DE/tag.php | 0 {resources/lang => lang}/de_DE/trash.php | 0 {resources/lang => lang}/de_DE/user.php | 0 {resources/lang => lang}/de_DE/validation.php | 0 {resources/lang => lang}/en_US/auth.php | 0 {resources/lang => lang}/en_US/export.php | 0 {resources/lang => lang}/en_US/import.php | 0 {resources/lang => lang}/en_US/link.php | 0 {resources/lang => lang}/en_US/linkace.php | 0 {resources/lang => lang}/en_US/list.php | 0 {resources/lang => lang}/en_US/note.php | 0 {resources/lang => lang}/en_US/pagination.php | 0 {resources/lang => lang}/en_US/passwords.php | 0 .../lang => lang}/en_US/placeholder.php | 0 {resources/lang => lang}/en_US/search.php | 0 {resources/lang => lang}/en_US/settings.php | 0 {resources/lang => lang}/en_US/setup.php | 0 {resources/lang => lang}/en_US/sharing.php | 0 {resources/lang => lang}/en_US/stats.php | 0 {resources/lang => lang}/en_US/tag.php | 0 {resources/lang => lang}/en_US/trash.php | 0 {resources/lang => lang}/en_US/user.php | 0 {resources/lang => lang}/en_US/validation.php | 0 {resources/lang => lang}/es_ES/auth.php | 0 {resources/lang => lang}/es_ES/export.php | 0 {resources/lang => lang}/es_ES/import.php | 0 {resources/lang => lang}/es_ES/link.php | 0 {resources/lang => lang}/es_ES/linkace.php | 0 {resources/lang => lang}/es_ES/list.php | 0 {resources/lang => lang}/es_ES/note.php | 0 {resources/lang => lang}/es_ES/pagination.php | 0 {resources/lang => lang}/es_ES/passwords.php | 0 .../lang => lang}/es_ES/placeholder.php | 0 {resources/lang => lang}/es_ES/search.php | 0 {resources/lang => lang}/es_ES/settings.php | 0 {resources/lang => lang}/es_ES/setup.php | 0 {resources/lang => lang}/es_ES/sharing.php | 0 {resources/lang => lang}/es_ES/stats.php | 0 {resources/lang => lang}/es_ES/tag.php | 0 {resources/lang => lang}/es_ES/trash.php | 0 {resources/lang => lang}/es_ES/user.php | 0 {resources/lang => lang}/es_ES/validation.php | 0 {resources/lang => lang}/fr_FR/auth.php | 0 {resources/lang => lang}/fr_FR/export.php | 0 {resources/lang => lang}/fr_FR/import.php | 0 {resources/lang => lang}/fr_FR/link.php | 0 {resources/lang => lang}/fr_FR/linkace.php | 0 {resources/lang => lang}/fr_FR/list.php | 0 {resources/lang => lang}/fr_FR/note.php | 0 {resources/lang => lang}/fr_FR/pagination.php | 0 {resources/lang => lang}/fr_FR/passwords.php | 0 .../lang => lang}/fr_FR/placeholder.php | 0 {resources/lang => lang}/fr_FR/search.php | 0 {resources/lang => lang}/fr_FR/settings.php | 0 {resources/lang => lang}/fr_FR/setup.php | 0 {resources/lang => lang}/fr_FR/sharing.php | 0 {resources/lang => lang}/fr_FR/stats.php | 0 {resources/lang => lang}/fr_FR/tag.php | 0 {resources/lang => lang}/fr_FR/trash.php | 0 {resources/lang => lang}/fr_FR/user.php | 0 {resources/lang => lang}/fr_FR/validation.php | 0 {resources/lang => lang}/hu_HU/auth.php | 0 {resources/lang => lang}/hu_HU/export.php | 0 {resources/lang => lang}/hu_HU/import.php | 0 {resources/lang => lang}/hu_HU/link.php | 0 {resources/lang => lang}/hu_HU/linkace.php | 0 {resources/lang => lang}/hu_HU/list.php | 0 {resources/lang => lang}/hu_HU/note.php | 0 {resources/lang => lang}/hu_HU/pagination.php | 0 {resources/lang => lang}/hu_HU/passwords.php | 0 .../lang => lang}/hu_HU/placeholder.php | 0 {resources/lang => lang}/hu_HU/search.php | 0 {resources/lang => lang}/hu_HU/settings.php | 0 {resources/lang => lang}/hu_HU/setup.php | 0 {resources/lang => lang}/hu_HU/sharing.php | 0 {resources/lang => lang}/hu_HU/stats.php | 0 {resources/lang => lang}/hu_HU/tag.php | 0 {resources/lang => lang}/hu_HU/trash.php | 0 {resources/lang => lang}/hu_HU/user.php | 0 {resources/lang => lang}/hu_HU/validation.php | 0 {resources/lang => lang}/no_NO/auth.php | 0 {resources/lang => lang}/no_NO/export.php | 0 {resources/lang => lang}/no_NO/import.php | 0 {resources/lang => lang}/no_NO/link.php | 0 {resources/lang => lang}/no_NO/linkace.php | 0 {resources/lang => lang}/no_NO/list.php | 0 {resources/lang => lang}/no_NO/note.php | 0 {resources/lang => lang}/no_NO/pagination.php | 0 {resources/lang => lang}/no_NO/passwords.php | 0 .../lang => lang}/no_NO/placeholder.php | 0 {resources/lang => lang}/no_NO/search.php | 0 {resources/lang => lang}/no_NO/settings.php | 0 {resources/lang => lang}/no_NO/setup.php | 0 {resources/lang => lang}/no_NO/sharing.php | 0 {resources/lang => lang}/no_NO/stats.php | 0 {resources/lang => lang}/no_NO/tag.php | 0 {resources/lang => lang}/no_NO/trash.php | 0 {resources/lang => lang}/no_NO/user.php | 0 {resources/lang => lang}/no_NO/validation.php | 0 {resources/lang => lang}/zh_CN/auth.php | 0 {resources/lang => lang}/zh_CN/export.php | 0 {resources/lang => lang}/zh_CN/import.php | 0 {resources/lang => lang}/zh_CN/link.php | 0 {resources/lang => lang}/zh_CN/linkace.php | 0 {resources/lang => lang}/zh_CN/list.php | 0 {resources/lang => lang}/zh_CN/note.php | 0 {resources/lang => lang}/zh_CN/pagination.php | 0 {resources/lang => lang}/zh_CN/passwords.php | 0 .../lang => lang}/zh_CN/placeholder.php | 0 {resources/lang => lang}/zh_CN/search.php | 0 {resources/lang => lang}/zh_CN/settings.php | 0 {resources/lang => lang}/zh_CN/setup.php | 0 {resources/lang => lang}/zh_CN/sharing.php | 0 {resources/lang => lang}/zh_CN/stats.php | 0 {resources/lang => lang}/zh_CN/tag.php | 0 {resources/lang => lang}/zh_CN/trash.php | 0 {resources/lang => lang}/zh_CN/user.php | 0 {resources/lang => lang}/zh_CN/validation.php | 0 .../deprecated/release-simple.Dockerfile | 86 - .../dockerfiles/deprecated/release.Dockerfile | 83 - .../docker/dockerfiles/development.Dockerfile | 2 +- resources/docker/php/php-dev.ini | 17 +- tests/Controller/App/ImportControllerTest.php | 7 +- tests/Controller/App/data/import_example.html | 2 +- 179 files changed, 1564 insertions(+), 2642 deletions(-) delete mode 100644 config/enlightn.php create mode 100644 config/sanctum.php rename {resources/lang => lang}/ca_ES/auth.php (100%) rename {resources/lang => lang}/ca_ES/export.php (100%) rename {resources/lang => lang}/ca_ES/import.php (100%) rename {resources/lang => lang}/ca_ES/link.php (100%) rename {resources/lang => lang}/ca_ES/linkace.php (100%) rename {resources/lang => lang}/ca_ES/list.php (100%) rename {resources/lang => lang}/ca_ES/note.php (100%) rename {resources/lang => lang}/ca_ES/pagination.php (100%) rename {resources/lang => lang}/ca_ES/passwords.php (100%) rename {resources/lang => lang}/ca_ES/placeholder.php (100%) rename {resources/lang => lang}/ca_ES/search.php (100%) rename {resources/lang => lang}/ca_ES/settings.php (100%) rename {resources/lang => lang}/ca_ES/setup.php (100%) rename {resources/lang => lang}/ca_ES/sharing.php (100%) rename {resources/lang => lang}/ca_ES/stats.php (100%) rename {resources/lang => lang}/ca_ES/tag.php (100%) rename {resources/lang => lang}/ca_ES/trash.php (100%) rename {resources/lang => lang}/ca_ES/user.php (100%) rename {resources/lang => lang}/ca_ES/validation.php (100%) rename {resources/lang => lang}/de_DE/auth.php (100%) rename {resources/lang => lang}/de_DE/export.php (100%) rename {resources/lang => lang}/de_DE/import.php (100%) rename {resources/lang => lang}/de_DE/link.php (100%) rename {resources/lang => lang}/de_DE/linkace.php (100%) rename {resources/lang => lang}/de_DE/list.php (100%) rename {resources/lang => lang}/de_DE/note.php (100%) rename {resources/lang => lang}/de_DE/pagination.php (100%) rename {resources/lang => lang}/de_DE/passwords.php (100%) rename {resources/lang => lang}/de_DE/placeholder.php (100%) rename {resources/lang => lang}/de_DE/search.php (100%) rename {resources/lang => lang}/de_DE/settings.php (100%) rename {resources/lang => lang}/de_DE/setup.php (100%) rename {resources/lang => lang}/de_DE/sharing.php (100%) rename {resources/lang => lang}/de_DE/stats.php (100%) rename {resources/lang => lang}/de_DE/tag.php (100%) rename {resources/lang => lang}/de_DE/trash.php (100%) rename {resources/lang => lang}/de_DE/user.php (100%) rename {resources/lang => lang}/de_DE/validation.php (100%) rename {resources/lang => lang}/en_US/auth.php (100%) rename {resources/lang => lang}/en_US/export.php (100%) rename {resources/lang => lang}/en_US/import.php (100%) rename {resources/lang => lang}/en_US/link.php (100%) rename {resources/lang => lang}/en_US/linkace.php (100%) rename {resources/lang => lang}/en_US/list.php (100%) rename {resources/lang => lang}/en_US/note.php (100%) rename {resources/lang => lang}/en_US/pagination.php (100%) rename {resources/lang => lang}/en_US/passwords.php (100%) rename {resources/lang => lang}/en_US/placeholder.php (100%) rename {resources/lang => lang}/en_US/search.php (100%) rename {resources/lang => lang}/en_US/settings.php (100%) rename {resources/lang => lang}/en_US/setup.php (100%) rename {resources/lang => lang}/en_US/sharing.php (100%) rename {resources/lang => lang}/en_US/stats.php (100%) rename {resources/lang => lang}/en_US/tag.php (100%) rename {resources/lang => lang}/en_US/trash.php (100%) rename {resources/lang => lang}/en_US/user.php (100%) rename {resources/lang => lang}/en_US/validation.php (100%) rename {resources/lang => lang}/es_ES/auth.php (100%) rename {resources/lang => lang}/es_ES/export.php (100%) rename {resources/lang => lang}/es_ES/import.php (100%) rename {resources/lang => lang}/es_ES/link.php (100%) rename {resources/lang => lang}/es_ES/linkace.php (100%) rename {resources/lang => lang}/es_ES/list.php (100%) rename {resources/lang => lang}/es_ES/note.php (100%) rename {resources/lang => lang}/es_ES/pagination.php (100%) rename {resources/lang => lang}/es_ES/passwords.php (100%) rename {resources/lang => lang}/es_ES/placeholder.php (100%) rename {resources/lang => lang}/es_ES/search.php (100%) rename {resources/lang => lang}/es_ES/settings.php (100%) rename {resources/lang => lang}/es_ES/setup.php (100%) rename {resources/lang => lang}/es_ES/sharing.php (100%) rename {resources/lang => lang}/es_ES/stats.php (100%) rename {resources/lang => lang}/es_ES/tag.php (100%) rename {resources/lang => lang}/es_ES/trash.php (100%) rename {resources/lang => lang}/es_ES/user.php (100%) rename {resources/lang => lang}/es_ES/validation.php (100%) rename {resources/lang => lang}/fr_FR/auth.php (100%) rename {resources/lang => lang}/fr_FR/export.php (100%) rename {resources/lang => lang}/fr_FR/import.php (100%) rename {resources/lang => lang}/fr_FR/link.php (100%) rename {resources/lang => lang}/fr_FR/linkace.php (100%) rename {resources/lang => lang}/fr_FR/list.php (100%) rename {resources/lang => lang}/fr_FR/note.php (100%) rename {resources/lang => lang}/fr_FR/pagination.php (100%) rename {resources/lang => lang}/fr_FR/passwords.php (100%) rename {resources/lang => lang}/fr_FR/placeholder.php (100%) rename {resources/lang => lang}/fr_FR/search.php (100%) rename {resources/lang => lang}/fr_FR/settings.php (100%) rename {resources/lang => lang}/fr_FR/setup.php (100%) rename {resources/lang => lang}/fr_FR/sharing.php (100%) rename {resources/lang => lang}/fr_FR/stats.php (100%) rename {resources/lang => lang}/fr_FR/tag.php (100%) rename {resources/lang => lang}/fr_FR/trash.php (100%) rename {resources/lang => lang}/fr_FR/user.php (100%) rename {resources/lang => lang}/fr_FR/validation.php (100%) rename {resources/lang => lang}/hu_HU/auth.php (100%) rename {resources/lang => lang}/hu_HU/export.php (100%) rename {resources/lang => lang}/hu_HU/import.php (100%) rename {resources/lang => lang}/hu_HU/link.php (100%) rename {resources/lang => lang}/hu_HU/linkace.php (100%) rename {resources/lang => lang}/hu_HU/list.php (100%) rename {resources/lang => lang}/hu_HU/note.php (100%) rename {resources/lang => lang}/hu_HU/pagination.php (100%) rename {resources/lang => lang}/hu_HU/passwords.php (100%) rename {resources/lang => lang}/hu_HU/placeholder.php (100%) rename {resources/lang => lang}/hu_HU/search.php (100%) rename {resources/lang => lang}/hu_HU/settings.php (100%) rename {resources/lang => lang}/hu_HU/setup.php (100%) rename {resources/lang => lang}/hu_HU/sharing.php (100%) rename {resources/lang => lang}/hu_HU/stats.php (100%) rename {resources/lang => lang}/hu_HU/tag.php (100%) rename {resources/lang => lang}/hu_HU/trash.php (100%) rename {resources/lang => lang}/hu_HU/user.php (100%) rename {resources/lang => lang}/hu_HU/validation.php (100%) rename {resources/lang => lang}/no_NO/auth.php (100%) rename {resources/lang => lang}/no_NO/export.php (100%) rename {resources/lang => lang}/no_NO/import.php (100%) rename {resources/lang => lang}/no_NO/link.php (100%) rename {resources/lang => lang}/no_NO/linkace.php (100%) rename {resources/lang => lang}/no_NO/list.php (100%) rename {resources/lang => lang}/no_NO/note.php (100%) rename {resources/lang => lang}/no_NO/pagination.php (100%) rename {resources/lang => lang}/no_NO/passwords.php (100%) rename {resources/lang => lang}/no_NO/placeholder.php (100%) rename {resources/lang => lang}/no_NO/search.php (100%) rename {resources/lang => lang}/no_NO/settings.php (100%) rename {resources/lang => lang}/no_NO/setup.php (100%) rename {resources/lang => lang}/no_NO/sharing.php (100%) rename {resources/lang => lang}/no_NO/stats.php (100%) rename {resources/lang => lang}/no_NO/tag.php (100%) rename {resources/lang => lang}/no_NO/trash.php (100%) rename {resources/lang => lang}/no_NO/user.php (100%) rename {resources/lang => lang}/no_NO/validation.php (100%) rename {resources/lang => lang}/zh_CN/auth.php (100%) rename {resources/lang => lang}/zh_CN/export.php (100%) rename {resources/lang => lang}/zh_CN/import.php (100%) rename {resources/lang => lang}/zh_CN/link.php (100%) rename {resources/lang => lang}/zh_CN/linkace.php (100%) rename {resources/lang => lang}/zh_CN/list.php (100%) rename {resources/lang => lang}/zh_CN/note.php (100%) rename {resources/lang => lang}/zh_CN/pagination.php (100%) rename {resources/lang => lang}/zh_CN/passwords.php (100%) rename {resources/lang => lang}/zh_CN/placeholder.php (100%) rename {resources/lang => lang}/zh_CN/search.php (100%) rename {resources/lang => lang}/zh_CN/settings.php (100%) rename {resources/lang => lang}/zh_CN/setup.php (100%) rename {resources/lang => lang}/zh_CN/sharing.php (100%) rename {resources/lang => lang}/zh_CN/stats.php (100%) rename {resources/lang => lang}/zh_CN/tag.php (100%) rename {resources/lang => lang}/zh_CN/trash.php (100%) rename {resources/lang => lang}/zh_CN/user.php (100%) rename {resources/lang => lang}/zh_CN/validation.php (100%) delete mode 100644 resources/docker/dockerfiles/deprecated/release-simple.Dockerfile delete mode 100644 resources/docker/dockerfiles/deprecated/release.Dockerfile diff --git a/app/Actions/ImportHtmlBookmarks.php b/app/Actions/ImportHtmlBookmarks.php index ace8c970..3763e8a2 100644 --- a/app/Actions/ImportHtmlBookmarks.php +++ b/app/Actions/ImportHtmlBookmarks.php @@ -69,10 +69,8 @@ public function run(string $data, string $userId, bool $generateMeta = true): bo $newLink->save(); if (!empty($link['tags'])) { - $tags = explode(' ', $link['tags']); - $newTags = []; - foreach ($tags as $tag) { + foreach ($link['tags'] as $tag) { $newTag = Tag::firstOrCreate([ 'user_id' => $userId, 'name' => $tag, diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index 5fce16d4..f459d7b9 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -15,7 +15,7 @@ class Kernel extends HttpKernel */ protected $middleware = [ \App\Http\Middleware\TrustProxies::class, - \Fruitcake\Cors\HandleCors::class, + \Illuminate\Http\Middleware\HandleCors::class, \App\Http\Middleware\PreventRequestsDuringMaintenance::class, \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, \App\Http\Middleware\TrimStrings::class, @@ -33,7 +33,6 @@ class Kernel extends HttpKernel \App\Http\Middleware\EncryptCookies::class, \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, \Illuminate\Session\Middleware\StartSession::class, - // \Illuminate\Session\Middleware\AuthenticateSession::class, \Illuminate\View\Middleware\ShareErrorsFromSession::class, \App\Http\Middleware\VerifyCsrfToken::class, \Illuminate\Routing\Middleware\SubstituteBindings::class, diff --git a/app/Http/Middleware/TrustProxies.php b/app/Http/Middleware/TrustProxies.php index 55ba9fc5..559dd2fc 100644 --- a/app/Http/Middleware/TrustProxies.php +++ b/app/Http/Middleware/TrustProxies.php @@ -2,7 +2,7 @@ namespace App\Http\Middleware; -use Fideloper\Proxy\TrustProxies as Middleware; +use Illuminate\Http\Middleware\TrustProxies as Middleware; use Illuminate\Http\Request; class TrustProxies extends Middleware @@ -10,7 +10,7 @@ class TrustProxies extends Middleware /** * The trusted proxies for this application. * - * @var array|string|null + * @var array|string|null */ protected $proxies = '*'; @@ -19,5 +19,10 @@ class TrustProxies extends Middleware * * @var int */ - protected $headers = Request::HEADER_X_FORWARDED_FOR | Request::HEADER_X_FORWARDED_HOST | Request::HEADER_X_FORWARDED_PORT | Request::HEADER_X_FORWARDED_PROTO | Request::HEADER_X_FORWARDED_AWS_ELB; + protected $headers = + Request::HEADER_X_FORWARDED_FOR | + Request::HEADER_X_FORWARDED_HOST | + Request::HEADER_X_FORWARDED_PORT | + Request::HEADER_X_FORWARDED_PROTO | + Request::HEADER_X_FORWARDED_AWS_ELB; } diff --git a/composer.json b/composer.json index 61512600..497d01ca 100644 --- a/composer.json +++ b/composer.json @@ -4,34 +4,35 @@ "license": "GPL-3.0-or-later", "type": "project", "require": { - "php": "^7.4 | ^8.0 | ^8.1", + "php": "^8.0 | ^8.1", + "ext-pdo": "*", "composer/semver": "^1.5", - "doctrine/dbal": "^2.10.2", - "fideloper/proxy": "^4.4", - "fruitcake/laravel-cors": "^2.0", + "doctrine/dbal": "^3.3.5", "guzzlehttp/guzzle": "^7.0.1", "kovah/laravel-html-meta": "^2.0", "laracasts/flash": "^3.1", "laravel/fortify": "^1.7", - "laravel/framework": "^8.0", + "laravel/framework": "^9.0", + "laravel/sanctum": "^2.15", "league/csv": "^9.6", - "league/flysystem-aws-s3-v3": "^1.0", + "league/flysystem-aws-s3-v3": "^3.0.13", "predis/predis": "^1.1", - "rap2hpoutre/laravel-log-viewer": "^1.7", + "rap2hpoutre/laravel-log-viewer": "^2.2", "sentry/sentry-laravel": "^2.3", - "shaarli/netscape-bookmark-parser": "^2.1", - "spatie/laravel-backup": "^6.11.1", + "shaarli/netscape-bookmark-parser": "^v3.2", + "spatie/laravel-backup": "^8.1.2", + "symfony/http-client": "^6.0", + "symfony/mailgun-mailer": "^6.0", "venturecraft/revisionable": "^1.34" }, "require-dev": { "barryvdh/laravel-debugbar": "^3.2", "barryvdh/laravel-ide-helper": "^2.6", - "enlightn/enlightn": "^1.1", - "facade/ignition": "^2.3.6", + "spatie/laravel-ignition": "^1.2.2", "fakerphp/faker": "^1.12", "laravel/tinker": "^2.2.0", - "mockery/mockery": "1.3.*", - "nunomaduro/collision": "^5.0", + "mockery/mockery": "^1.3", + "nunomaduro/collision": "^6.1", "phpunit/phpunit": "^9.0", "roave/security-advisories": "dev-latest", "squizlabs/php_codesniffer": "^3.5" diff --git a/composer.lock b/composer.lock index 2ba7887e..ac18818d 100644 --- a/composer.lock +++ b/composer.lock @@ -4,64 +4,8 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "093c574025bdd39591160d4a9198efab", + "content-hash": "7d81ee0ac75e7b6e67c157836ce9b2ab", "packages": [ - { - "name": "asm89/stack-cors", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/asm89/stack-cors.git", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4|^5|^6" - }, - "require-dev": { - "phpunit/phpunit": "^7|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "psr-4": { - "Asm89\\Stack\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander", - "email": "iam.asm89@gmail.com" - } - ], - "description": "Cross-origin resource sharing library and stack middleware", - "homepage": "https://github.com/asm89/stack-cors", - "keywords": [ - "cors", - "stack" - ], - "support": { - "issues": "https://github.com/asm89/stack-cors/issues", - "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" - }, - "time": "2022-01-18T09:12:03+00:00" - }, { "name": "aws/aws-crt-php", "version": "v1.0.2", @@ -686,34 +630,37 @@ }, { "name": "doctrine/dbal", - "version": "2.13.8", + "version": "3.3.5", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "dc9b3c3c8592c935a6e590441f9abc0f9eba335b" + "reference": "719663b15983278227669c8595151586a2ff3327" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/dc9b3c3c8592c935a6e590441f9abc0f9eba335b", - "reference": "dc9b3c3c8592c935a6e590441f9abc0f9eba335b", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/719663b15983278227669c8595151586a2ff3327", + "reference": "719663b15983278227669c8595151586a2ff3327", "shasum": "" }, "require": { - "doctrine/cache": "^1.0|^2.0", + "composer-runtime-api": "^2", + "doctrine/cache": "^1.11|^2.0", "doctrine/deprecations": "^0.5.3", "doctrine/event-manager": "^1.0", - "ext-pdo": "*", - "php": "^7.1 || ^8" + "php": "^7.3 || ^8.0", + "psr/cache": "^1|^2|^3", + "psr/log": "^1|^2|^3" }, "require-dev": { "doctrine/coding-standard": "9.0.0", "jetbrains/phpstorm-stubs": "2021.1", - "phpstan/phpstan": "1.4.6", - "phpunit/phpunit": "^7.5.20|^8.5|9.5.16", + "phpstan/phpstan": "1.5.3", + "phpstan/phpstan-strict-rules": "^1.1", + "phpunit/phpunit": "9.5.16", "psalm/plugin-phpunit": "0.16.1", "squizlabs/php_codesniffer": "3.6.2", - "symfony/cache": "^4.4", - "symfony/console": "^2.0.5|^3.0|^4.0|^5.0", + "symfony/cache": "^5.2|^6.0", + "symfony/console": "^2.7|^3.0|^4.0|^5.0|^6.0", "vimeo/psalm": "4.22.0" }, "suggest": { @@ -725,7 +672,7 @@ "type": "library", "autoload": { "psr-4": { - "Doctrine\\DBAL\\": "lib/Doctrine/DBAL" + "Doctrine\\DBAL\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -768,14 +715,13 @@ "queryobject", "sasql", "sql", - "sqlanywhere", "sqlite", "sqlserver", "sqlsrv" ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/2.13.8" + "source": "https://github.com/doctrine/dbal/tree/3.3.5" }, "funding": [ { @@ -791,7 +737,7 @@ "type": "tidelift" } ], - "time": "2022-03-09T15:25:46+00:00" + "time": "2022-04-05T09:50:18+00:00" }, { "name": "doctrine/deprecations", @@ -1160,27 +1106,27 @@ }, { "name": "egulias/email-validator", - "version": "2.1.25", + "version": "3.1.2", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "0dbf5d78455d4d6a41d186da50adc1122ec066f4" + "reference": "ee0db30118f661fb166bcffbf5d82032df484697" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/0dbf5d78455d4d6a41d186da50adc1122ec066f4", - "reference": "0dbf5d78455d4d6a41d186da50adc1122ec066f4", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697", + "reference": "ee0db30118f661fb166bcffbf5d82032df484697", "shasum": "" }, "require": { - "doctrine/lexer": "^1.0.1", - "php": ">=5.5", - "symfony/polyfill-intl-idn": "^1.10" + "doctrine/lexer": "^1.2", + "php": ">=7.2", + "symfony/polyfill-intl-idn": "^1.15" }, "require-dev": { - "dominicsayers/isemail": "^3.0.7", - "phpunit/phpunit": "^4.8.36|^7.5.15", - "satooshi/php-coveralls": "^1.0.1" + "php-coveralls/php-coveralls": "^2.2", + "phpunit/phpunit": "^8.5.8|^9.3.3", + "vimeo/psalm": "^4" }, "suggest": { "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" @@ -1188,7 +1134,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.1.x-dev" + "dev-master": "3.0.x-dev" } }, "autoload": { @@ -1216,7 +1162,7 @@ ], "support": { "issues": "https://github.com/egulias/EmailValidator/issues", - "source": "https://github.com/egulias/EmailValidator/tree/2.1.25" + "source": "https://github.com/egulias/EmailValidator/tree/3.1.2" }, "funding": [ { @@ -1224,101 +1170,35 @@ "type": "github" } ], - "time": "2020-12-29T14:50:06+00:00" - }, - { - "name": "fideloper/proxy", - "version": "4.4.1", - "source": { - "type": "git", - "url": "https://github.com/fideloper/TrustedProxy.git", - "reference": "c073b2bd04d1c90e04dc1b787662b558dd65ade0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fideloper/TrustedProxy/zipball/c073b2bd04d1c90e04dc1b787662b558dd65ade0", - "reference": "c073b2bd04d1c90e04dc1b787662b558dd65ade0", - "shasum": "" - }, - "require": { - "illuminate/contracts": "^5.0|^6.0|^7.0|^8.0|^9.0", - "php": ">=5.4.0" - }, - "require-dev": { - "illuminate/http": "^5.0|^6.0|^7.0|^8.0|^9.0", - "mockery/mockery": "^1.0", - "phpunit/phpunit": "^6.0" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Fideloper\\Proxy\\TrustedProxyServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Fideloper\\Proxy\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Chris Fidao", - "email": "fideloper@gmail.com" - } - ], - "description": "Set trusted proxies for Laravel", - "keywords": [ - "load balancing", - "proxy", - "trusted proxy" - ], - "support": { - "issues": "https://github.com/fideloper/TrustedProxy/issues", - "source": "https://github.com/fideloper/TrustedProxy/tree/4.4.1" - }, - "time": "2020-10-22T13:48:01+00:00" + "time": "2021-10-11T09:18:27+00:00" }, { - "name": "fruitcake/laravel-cors", - "version": "v2.2.0", + "name": "fruitcake/php-cors", + "version": "v1.2.0", "source": { "type": "git", - "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "783a74f5e3431d7b9805be8afb60fd0a8f743534" + "url": "https://github.com/fruitcake/php-cors.git", + "reference": "58571acbaa5f9f462c9c77e911700ac66f446d4e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/783a74f5e3431d7b9805be8afb60fd0a8f743534", - "reference": "783a74f5e3431d7b9805be8afb60fd0a8f743534", + "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/58571acbaa5f9f462c9c77e911700ac66f446d4e", + "reference": "58571acbaa5f9f462c9c77e911700ac66f446d4e", "shasum": "" }, "require": { - "asm89/stack-cors": "^2.0.1", - "illuminate/contracts": "^6|^7|^8|^9", - "illuminate/support": "^6|^7|^8|^9", - "php": ">=7.2" + "php": "^7.4|^8.0", + "symfony/http-foundation": "^4.4|^5.4|^6" }, "require-dev": { - "laravel/framework": "^6|^7.24|^8", - "orchestra/testbench-dusk": "^4|^5|^6|^7", - "phpunit/phpunit": "^6|^7|^8|^9", + "phpstan/phpstan": "^1.4", + "phpunit/phpunit": "^9", "squizlabs/php_codesniffer": "^3.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.1-dev" - }, - "laravel": { - "providers": [ - "Fruitcake\\Cors\\CorsServiceProvider" - ] + "dev-main": "1.1-dev" } }, "autoload": { @@ -1336,20 +1216,20 @@ "homepage": "https://fruitcake.nl" }, { - "name": "Barry vd. Heuvel", + "name": "Barryvdh", "email": "barryvdh@gmail.com" } ], - "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", + "description": "Cross-origin resource sharing library for the Symfony HttpFoundation", + "homepage": "https://github.com/fruitcake/php-cors", "keywords": [ - "api", "cors", - "crossdomain", - "laravel" + "laravel", + "symfony" ], "support": { - "issues": "https://github.com/fruitcake/laravel-cors/issues", - "source": "https://github.com/fruitcake/laravel-cors/tree/v2.2.0" + "issues": "https://github.com/fruitcake/php-cors/issues", + "source": "https://github.com/fruitcake/php-cors/tree/v1.2.0" }, "funding": [ { @@ -1361,7 +1241,7 @@ "type": "github" } ], - "time": "2022-02-23T14:25:13+00:00" + "time": "2022-02-20T15:07:15+00:00" }, { "name": "graham-campbell/result-type", @@ -2115,56 +1995,55 @@ }, { "name": "laravel/framework", - "version": "v8.83.10", + "version": "v9.10.1", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "148ae59b7da6c3db6736374d357c5aaef9506fb7" + "reference": "93414b1c7c0a56081d96c060bb850ac192d3d323" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/148ae59b7da6c3db6736374d357c5aaef9506fb7", - "reference": "148ae59b7da6c3db6736374d357c5aaef9506fb7", + "url": "https://api.github.com/repos/laravel/framework/zipball/93414b1c7c0a56081d96c060bb850ac192d3d323", + "reference": "93414b1c7c0a56081d96c060bb850ac192d3d323", "shasum": "" }, "require": { - "doctrine/inflector": "^1.4|^2.0", - "dragonmantank/cron-expression": "^3.0.2", - "egulias/email-validator": "^2.1.10", - "ext-json": "*", + "doctrine/inflector": "^2.0", + "dragonmantank/cron-expression": "^3.1", + "egulias/email-validator": "^3.1", "ext-mbstring": "*", "ext-openssl": "*", + "fruitcake/php-cors": "^1.2", "laravel/serializable-closure": "^1.0", - "league/commonmark": "^1.3|^2.0.2", - "league/flysystem": "^1.1", + "league/commonmark": "^2.2", + "league/flysystem": "^3.0", "monolog/monolog": "^2.0", "nesbot/carbon": "^2.53.1", - "opis/closure": "^3.6", - "php": "^7.3|^8.0", - "psr/container": "^1.0", - "psr/log": "^1.0|^2.0", - "psr/simple-cache": "^1.0", + "php": "^8.0.2", + "psr/container": "^1.1.1|^2.0.1", + "psr/log": "^1.0|^2.0|^3.0", + "psr/simple-cache": "^1.0|^2.0|^3.0", "ramsey/uuid": "^4.2.2", - "swiftmailer/swiftmailer": "^6.3", - "symfony/console": "^5.4", - "symfony/error-handler": "^5.4", - "symfony/finder": "^5.4", - "symfony/http-foundation": "^5.4", - "symfony/http-kernel": "^5.4", - "symfony/mime": "^5.4", - "symfony/process": "^5.4", - "symfony/routing": "^5.4", - "symfony/var-dumper": "^5.4", + "symfony/console": "^6.0", + "symfony/error-handler": "^6.0", + "symfony/finder": "^6.0", + "symfony/http-foundation": "^6.0", + "symfony/http-kernel": "^6.0", + "symfony/mailer": "^6.0", + "symfony/mime": "^6.0", + "symfony/process": "^6.0", + "symfony/routing": "^6.0", + "symfony/var-dumper": "^6.0", "tijsverkoyen/css-to-inline-styles": "^2.2.2", "vlucas/phpdotenv": "^5.4.1", - "voku/portable-ascii": "^1.6.1" + "voku/portable-ascii": "^2.0" }, "conflict": { "tightenco/collect": "<5.5.33" }, "provide": { - "psr/container-implementation": "1.0", - "psr/simple-cache-implementation": "1.0" + "psr/container-implementation": "1.1|2.0", + "psr/simple-cache-implementation": "1.0|2.0|3.0" }, "replace": { "illuminate/auth": "self.version", @@ -2172,6 +2051,7 @@ "illuminate/bus": "self.version", "illuminate/cache": "self.version", "illuminate/collections": "self.version", + "illuminate/conditionable": "self.version", "illuminate/config": "self.version", "illuminate/console": "self.version", "illuminate/container": "self.version", @@ -2202,19 +2082,22 @@ "require-dev": { "aws/aws-sdk-php": "^3.198.1", "doctrine/dbal": "^2.13.3|^3.1.4", - "filp/whoops": "^2.14.3", - "guzzlehttp/guzzle": "^6.5.5|^7.0.1", - "league/flysystem-cached-adapter": "^1.0", + "fakerphp/faker": "^1.9.2", + "guzzlehttp/guzzle": "^7.2", + "league/flysystem-aws-s3-v3": "^3.0", + "league/flysystem-ftp": "^3.0", + "league/flysystem-sftp-v3": "^3.0", "mockery/mockery": "^1.4.4", - "orchestra/testbench-core": "^6.27", + "orchestra/testbench-core": "^7.1", "pda/pheanstalk": "^4.0", - "phpunit/phpunit": "^8.5.19|^9.5.8", + "phpstan/phpstan": "^1.4.7", + "phpunit/phpunit": "^9.5.8", "predis/predis": "^1.1.9", - "symfony/cache": "^5.4" + "symfony/cache": "^6.0" }, "suggest": { "ably/ably-php": "Required to use the Ably broadcast driver (^1.0).", - "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage and SES mail driver (^3.198.1).", + "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage, and SES mail driver (^3.198.1).", "brianium/paratest": "Required to run tests in parallel (^6.0).", "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", "ext-bcmath": "Required to use the multiple_of validation rule.", @@ -2226,27 +2109,29 @@ "ext-redis": "Required to use the Redis cache and queue drivers (^4.0|^5.0).", "fakerphp/faker": "Required to use the eloquent factory builder (^1.9.1).", "filp/whoops": "Required for friendly error pages in development (^2.14.3).", - "guzzlehttp/guzzle": "Required to use the HTTP Client, Mailgun mail driver and the ping methods on schedules (^6.5.5|^7.0.1).", + "guzzlehttp/guzzle": "Required to use the HTTP Client and the ping methods on schedules (^7.2).", "laravel/tinker": "Required to use the tinker console command (^2.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).", + "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^3.0).", + "league/flysystem-ftp": "Required to use the Flysystem FTP driver (^3.0).", + "league/flysystem-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", "mockery/mockery": "Required to use mocking (^1.4.4).", "nyholm/psr7": "Required to use PSR-7 bridging features (^1.2).", "pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).", - "phpunit/phpunit": "Required to use assertions and run tests (^8.5.19|^9.5.8).", + "phpunit/phpunit": "Required to use assertions and run tests (^9.5.8).", "predis/predis": "Required to use the predis connector (^1.1.9).", "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).", - "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^4.0|^5.0|^6.0|^7.0).", - "symfony/cache": "Required to PSR-6 cache bridge (^5.4).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^5.4).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0).", - "wildbit/swiftmailer-postmark": "Required to use Postmark mail driver (^3.0)." + "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^6.0|^7.0).", + "symfony/cache": "Required to PSR-6 cache bridge (^6.0).", + "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).", + "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).", + "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).", + "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).", + "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." }, "type": "library", "extra": { "branch-alias": { - "dev-master": "8.x-dev" + "dev-master": "9.x-dev" } }, "autoload": { @@ -2260,7 +2145,8 @@ "Illuminate\\": "src/Illuminate/", "Illuminate\\Support\\": [ "src/Illuminate/Macroable/", - "src/Illuminate/Collections/" + "src/Illuminate/Collections/", + "src/Illuminate/Conditionable/" ] } }, @@ -2284,7 +2170,72 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2022-04-27T14:07:37+00:00" + "time": "2022-04-28T13:18:25+00:00" + }, + { + "name": "laravel/sanctum", + "version": "v2.15.1", + "source": { + "type": "git", + "url": "https://github.com/laravel/sanctum.git", + "reference": "31fbe6f85aee080c4dc2f9b03dc6dd5d0ee72473" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/sanctum/zipball/31fbe6f85aee080c4dc2f9b03dc6dd5d0ee72473", + "reference": "31fbe6f85aee080c4dc2f9b03dc6dd5d0ee72473", + "shasum": "" + }, + "require": { + "ext-json": "*", + "illuminate/console": "^6.9|^7.0|^8.0|^9.0", + "illuminate/contracts": "^6.9|^7.0|^8.0|^9.0", + "illuminate/database": "^6.9|^7.0|^8.0|^9.0", + "illuminate/support": "^6.9|^7.0|^8.0|^9.0", + "php": "^7.2|^8.0" + }, + "require-dev": { + "mockery/mockery": "^1.0", + "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", + "phpunit/phpunit": "^8.0|^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + }, + "laravel": { + "providers": [ + "Laravel\\Sanctum\\SanctumServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Sanctum\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Laravel Sanctum provides a featherweight authentication system for SPAs and simple APIs.", + "keywords": [ + "auth", + "laravel", + "sanctum" + ], + "support": { + "issues": "https://github.com/laravel/sanctum/issues", + "source": "https://github.com/laravel/sanctum" + }, + "time": "2022-04-08T13:39:49+00:00" }, { "name": "laravel/serializable-closure", @@ -2619,54 +2570,48 @@ }, { "name": "league/flysystem", - "version": "1.1.9", + "version": "3.0.18", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "094defdb4a7001845300334e7c1ee2335925ef99" + "reference": "c8e137e594948240b03372e012344b07c61b9193" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/094defdb4a7001845300334e7c1ee2335925ef99", - "reference": "094defdb4a7001845300334e7c1ee2335925ef99", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/c8e137e594948240b03372e012344b07c61b9193", + "reference": "c8e137e594948240b03372e012344b07c61b9193", "shasum": "" }, "require": { - "ext-fileinfo": "*", - "league/mime-type-detection": "^1.3", - "php": "^7.2.5 || ^8.0" + "league/mime-type-detection": "^1.0.0", + "php": "^8.0.2" }, "conflict": { - "league/flysystem-sftp": "<1.0.6" + "aws/aws-sdk-php": "3.209.31 || 3.210.0", + "guzzlehttp/guzzle": "<7.0", + "guzzlehttp/ringphp": "<1.1.1", + "symfony/http-client": "<5.2" }, "require-dev": { - "phpspec/prophecy": "^1.11.1", - "phpunit/phpunit": "^8.5.8" - }, - "suggest": { - "ext-ftp": "Allows you to use FTP server storage", - "ext-openssl": "Allows you to use FTPS server storage", - "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2", - "league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3", - "league/flysystem-azure": "Allows you to use Windows Azure Blob storage", - "league/flysystem-cached-adapter": "Flysystem adapter decorator for metadata caching", - "league/flysystem-eventable-filesystem": "Allows you to use EventableFilesystem", - "league/flysystem-rackspace": "Allows you to use Rackspace Cloud Files", - "league/flysystem-sftp": "Allows you to use SFTP server storage via phpseclib", - "league/flysystem-webdav": "Allows you to use WebDAV storage", - "league/flysystem-ziparchive": "Allows you to use ZipArchive adapter", - "spatie/flysystem-dropbox": "Allows you to use Dropbox storage", - "srmklive/flysystem-dropbox-v2": "Allows you to use Dropbox storage for PHP 5 applications" + "async-aws/s3": "^1.5", + "async-aws/simple-s3": "^1.0", + "aws/aws-sdk-php": "^3.198.1", + "composer/semver": "^3.0", + "ext-fileinfo": "*", + "ext-ftp": "*", + "ext-zip": "*", + "friendsofphp/php-cs-fixer": "^3.5", + "google/cloud-storage": "^1.23", + "microsoft/azure-storage-blob": "^1.1", + "phpseclib/phpseclib": "^2.0", + "phpstan/phpstan": "^0.12.26", + "phpunit/phpunit": "^9.5.11", + "sabre/dav": "^4.3.1" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, "autoload": { "psr-4": { - "League\\Flysystem\\": "src/" + "League\\Flysystem\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -2676,73 +2621,71 @@ "authors": [ { "name": "Frank de Jonge", - "email": "info@frenky.net" + "email": "info@frankdejonge.nl" } ], - "description": "Filesystem abstraction: Many filesystems, one API.", + "description": "File storage abstraction for PHP", "keywords": [ - "Cloud Files", "WebDAV", - "abstraction", "aws", "cloud", - "copy.com", - "dropbox", - "file systems", + "file", "files", "filesystem", "filesystems", "ftp", - "rackspace", - "remote", "s3", "sftp", "storage" ], "support": { "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/1.1.9" + "source": "https://github.com/thephpleague/flysystem/tree/3.0.18" }, "funding": [ { "url": "https://offset.earth/frankdejonge", - "type": "other" + "type": "custom" + }, + { + "url": "https://github.com/frankdejonge", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/flysystem", + "type": "tidelift" } ], - "time": "2021-12-09T09:40:50+00:00" + "time": "2022-04-25T18:55:04+00:00" }, { "name": "league/flysystem-aws-s3-v3", - "version": "1.0.29", + "version": "3.0.13", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem-aws-s3-v3.git", - "reference": "4e25cc0582a36a786c31115e419c6e40498f6972" + "reference": "0074cf016e21a6d1eb99b6db70acdd23743fc371" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/4e25cc0582a36a786c31115e419c6e40498f6972", - "reference": "4e25cc0582a36a786c31115e419c6e40498f6972", + "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/0074cf016e21a6d1eb99b6db70acdd23743fc371", + "reference": "0074cf016e21a6d1eb99b6db70acdd23743fc371", "shasum": "" }, "require": { - "aws/aws-sdk-php": "^3.20.0", - "league/flysystem": "^1.0.40", - "php": ">=5.5.0" + "aws/aws-sdk-php": "^3.132.4", + "league/flysystem": "^2.0.0 || ^3.0.0", + "league/mime-type-detection": "^1.0.0", + "php": "^8.0.2" }, - "require-dev": { - "henrikbjorn/phpspec-code-coverage": "~1.0.1", - "phpspec/phpspec": "^2.0.0" + "conflict": { + "guzzlehttp/guzzle": "<7.0", + "guzzlehttp/ringphp": "<1.1.1" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, "autoload": { "psr-4": { - "League\\Flysystem\\AwsS3v3\\": "src/" + "League\\Flysystem\\AwsS3V3\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -2752,15 +2695,24 @@ "authors": [ { "name": "Frank de Jonge", - "email": "info@frenky.net" + "email": "info@frankdejonge.nl" } ], - "description": "Flysystem adapter for the AWS S3 SDK v3.x", + "description": "AWS S3 filesystem adapter for Flysystem.", + "keywords": [ + "Flysystem", + "aws", + "file", + "files", + "filesystem", + "s3", + "storage" + ], "support": { "issues": "https://github.com/thephpleague/flysystem-aws-s3-v3/issues", - "source": "https://github.com/thephpleague/flysystem-aws-s3-v3/tree/1.0.29" + "source": "https://github.com/thephpleague/flysystem-aws-s3-v3/tree/3.0.13" }, - "time": "2020-10-08T18:58:37+00:00" + "time": "2022-04-01T22:05:11+00:00" }, { "name": "league/mime-type-detection", @@ -3298,71 +3250,6 @@ ], "time": "2022-02-02T18:37:57+00:00" }, - { - "name": "opis/closure", - "version": "3.6.3", - "source": { - "type": "git", - "url": "https://github.com/opis/closure.git", - "reference": "3d81e4309d2a927abbe66df935f4bb60082805ad" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/opis/closure/zipball/3d81e4309d2a927abbe66df935f4bb60082805ad", - "reference": "3d81e4309d2a927abbe66df935f4bb60082805ad", - "shasum": "" - }, - "require": { - "php": "^5.4 || ^7.0 || ^8.0" - }, - "require-dev": { - "jeremeamia/superclosure": "^2.0", - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.6.x-dev" - } - }, - "autoload": { - "files": [ - "functions.php" - ], - "psr-4": { - "Opis\\Closure\\": "src/" - } - }, - "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" - ], - "support": { - "issues": "https://github.com/opis/closure/issues", - "source": "https://github.com/opis/closure/tree/3.6.3" - }, - "time": "2022-01-27T09:35:39+00:00" - }, { "name": "paragonie/constant_time_encoding", "version": "v2.5.0", @@ -4010,26 +3897,31 @@ "time": "2022-01-05T17:46:08+00:00" }, { - "name": "psr/container", - "version": "1.1.2", + "name": "psr/cache", + "version": "3.0.0", "source": { "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "513e0666f7216c7459170d56df27dfcefe1689ea" + "url": "https://github.com/php-fig/cache.git", + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea", - "reference": "513e0666f7216c7459170d56df27dfcefe1689ea", + "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", "shasum": "" }, "require": { - "php": ">=7.4.0" + "php": ">=8.0.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, "autoload": { "psr-4": { - "Psr\\Container\\": "src/" + "Psr\\Cache\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -4042,37 +3934,86 @@ "homepage": "https://www.php-fig.org/" } ], - "description": "Common Container Interface (PHP FIG PSR-11)", - "homepage": "https://github.com/php-fig/container", + "description": "Common interface for caching libraries", "keywords": [ - "PSR-11", - "container", - "container-interface", - "container-interop", - "psr" + "cache", + "psr", + "psr-6" ], "support": { - "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/1.1.2" + "source": "https://github.com/php-fig/cache/tree/3.0.0" }, - "time": "2021-11-05T16:50:12+00:00" + "time": "2021-02-03T23:26:27+00:00" }, { - "name": "psr/event-dispatcher", - "version": "1.0.0", + "name": "psr/container", + "version": "2.0.2", "source": { "type": "git", - "url": "https://github.com/php-fig/event-dispatcher.git", - "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + "url": "https://github.com/php-fig/container.git", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", - "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", "shasum": "" }, "require": { - "php": ">=7.2.0" + "php": ">=7.4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/2.0.2" + }, + "time": "2021-11-05T16:47:00+00:00" + }, + { + "name": "psr/event-dispatcher", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" }, "type": "library", "extra": { @@ -4319,25 +4260,25 @@ }, { "name": "psr/simple-cache", - "version": "1.0.1", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/php-fig/simple-cache.git", - "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" + "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", - "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/764e0b3939f5ca87cb904f570ef9be2d78a07865", + "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=8.0.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "3.0.x-dev" } }, "autoload": { @@ -4352,7 +4293,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interfaces for simple caching", @@ -4364,9 +4305,9 @@ "simple-cache" ], "support": { - "source": "https://github.com/php-fig/simple-cache/tree/master" + "source": "https://github.com/php-fig/simple-cache/tree/3.0.0" }, - "time": "2017-10-23T01:57:42+00:00" + "time": "2021-10-29T13:26:27+00:00" }, { "name": "ralouphie/getallheaders", @@ -4493,25 +4434,24 @@ }, { "name": "ramsey/uuid", - "version": "4.2.3", + "version": "4.3.1", "source": { "type": "git", "url": "https://github.com/ramsey/uuid.git", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" + "reference": "8505afd4fea63b81a85d3b7b53ac3cb8dc347c28" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/8505afd4fea63b81a85d3b7b53ac3cb8dc347c28", + "reference": "8505afd4fea63b81a85d3b7b53ac3cb8dc347c28", "shasum": "" }, "require": { "brick/math": "^0.8 || ^0.9", + "ext-ctype": "*", "ext-json": "*", - "php": "^7.2 || ^8.0", - "ramsey/collection": "^1.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php80": "^1.14" + "php": "^8.0", + "ramsey/collection": "^1.0" }, "replace": { "rhumsaa/uuid": "self.version" @@ -4548,9 +4488,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "4.x-dev" - }, "captainhook": { "force-install": true } @@ -4575,7 +4512,7 @@ ], "support": { "issues": "https://github.com/ramsey/uuid/issues", - "source": "https://github.com/ramsey/uuid/tree/4.2.3" + "source": "https://github.com/ramsey/uuid/tree/4.3.1" }, "funding": [ { @@ -4587,29 +4524,29 @@ "type": "tidelift" } ], - "time": "2021-09-25T23:10:38+00:00" + "time": "2022-03-27T21:42:02+00:00" }, { "name": "rap2hpoutre/laravel-log-viewer", - "version": "v1.7.0", + "version": "v2.2.0", "source": { "type": "git", "url": "https://github.com/rap2hpoutre/laravel-log-viewer.git", - "reference": "27392d29234b6ff38a456454558f4bcc40cc837a" + "reference": "52e7c703a1e83cdae450f406c7d8472332dfb34e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rap2hpoutre/laravel-log-viewer/zipball/27392d29234b6ff38a456454558f4bcc40cc837a", - "reference": "27392d29234b6ff38a456454558f4bcc40cc837a", + "url": "https://api.github.com/repos/rap2hpoutre/laravel-log-viewer/zipball/52e7c703a1e83cdae450f406c7d8472332dfb34e", + "reference": "52e7c703a1e83cdae450f406c7d8472332dfb34e", "shasum": "" }, "require": { - "illuminate/support": "4.2.*|5.*|^6.0|^7.0|^8.0", + "illuminate/support": "4.2.*|5.*|^6.0|^7.0|^8.0|^9.0", "php": ">=5.4.0" }, "require-dev": { - "orchestra/testbench": "3.7.*", - "phpunit/phpunit": "^7" + "orchestra/testbench": "3.7.*|^7.0", + "phpunit/phpunit": "^7|^9.5.10" }, "type": "laravel-package", "extra": { @@ -4648,9 +4585,9 @@ ], "support": { "issues": "https://github.com/rap2hpoutre/laravel-log-viewer/issues", - "source": "https://github.com/rap2hpoutre/laravel-log-viewer/tree/master" + "source": "https://github.com/rap2hpoutre/laravel-log-viewer/tree/v2.2.0" }, - "time": "2020-09-08T12:21:27+00:00" + "time": "2022-04-06T15:15:40+00:00" }, { "name": "sentry/sdk", @@ -4906,24 +4843,25 @@ }, { "name": "shaarli/netscape-bookmark-parser", - "version": "v2.2.0", + "version": "v3.2.0", "source": { "type": "git", "url": "https://github.com/shaarli/netscape-bookmark-parser.git", - "reference": "432a010af2bb1832d6fbc4763e6b0100b980a1df" + "reference": "5b2eb8d478f5e6938359e116880763e6b1892e62" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/shaarli/netscape-bookmark-parser/zipball/432a010af2bb1832d6fbc4763e6b0100b980a1df", - "reference": "432a010af2bb1832d6fbc4763e6b0100b980a1df", + "url": "https://api.github.com/repos/shaarli/netscape-bookmark-parser/zipball/5b2eb8d478f5e6938359e116880763e6b1892e62", + "reference": "5b2eb8d478f5e6938359e116880763e6b1892e62", "shasum": "" }, "require": { "katzgrau/klogger": "~1.0", - "php": ">=5.6" + "php": ">=7.1" }, "require-dev": { - "phpunit/phpunit": "^5.0" + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", + "squizlabs/php_codesniffer": "^3.5" }, "type": "library", "autoload": { @@ -4959,30 +4897,30 @@ ], "support": { "issues": "https://github.com/shaarli/netscape-bookmark-parser/issues", - "source": "https://github.com/shaarli/netscape-bookmark-parser/tree/v2.2.0" + "source": "https://github.com/shaarli/netscape-bookmark-parser/tree/v3.2.0" }, - "time": "2020-06-06T15:53:53+00:00" + "time": "2021-01-31T09:39:07+00:00" }, { "name": "spatie/db-dumper", - "version": "2.21.1", + "version": "3.2.0", "source": { "type": "git", "url": "https://github.com/spatie/db-dumper.git", - "reference": "05e5955fb882008a8947c5a45146d86cfafa10d1" + "reference": "17152c3fd799fb55b34f35885f8f129678faed73" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/db-dumper/zipball/05e5955fb882008a8947c5a45146d86cfafa10d1", - "reference": "05e5955fb882008a8947c5a45146d86cfafa10d1", + "url": "https://api.github.com/repos/spatie/db-dumper/zipball/17152c3fd799fb55b34f35885f8f129678faed73", + "reference": "17152c3fd799fb55b34f35885f8f129678faed73", "shasum": "" }, "require": { - "php": "^7.2|^8.0", - "symfony/process": "^4.2|^5.0" + "php": "^8.0", + "symfony/process": "^5.0|^6.0" }, "require-dev": { - "phpunit/phpunit": "^7.0|^8.0|^9.0" + "phpunit/phpunit": "^9.5" }, "type": "library", "autoload": { @@ -5013,50 +4951,59 @@ ], "support": { "issues": "https://github.com/spatie/db-dumper/issues", - "source": "https://github.com/spatie/db-dumper/tree/2.21.1" + "source": "https://github.com/spatie/db-dumper/tree/3.2.0" }, "funding": [ + { + "url": "https://spatie.be/open-source/support-us", + "type": "custom" + }, { "url": "https://github.com/spatie", "type": "github" } ], - "time": "2021-02-24T14:56:42+00:00" + "time": "2022-03-10T16:01:42+00:00" }, { "name": "spatie/laravel-backup", - "version": "6.16.5", + "version": "8.1.2", "source": { "type": "git", "url": "https://github.com/spatie/laravel-backup.git", - "reference": "332fae80b12cacb9e4161824ba195d984b28c8fb" + "reference": "f1559ed36bee30d0e2334974f1d1e02281251c88" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-backup/zipball/332fae80b12cacb9e4161824ba195d984b28c8fb", - "reference": "332fae80b12cacb9e4161824ba195d984b28c8fb", + "url": "https://api.github.com/repos/spatie/laravel-backup/zipball/f1559ed36bee30d0e2334974f1d1e02281251c88", + "reference": "f1559ed36bee30d0e2334974f1d1e02281251c88", "shasum": "" }, "require": { "ext-zip": "^1.14.0", - "illuminate/console": "^6.0|^7.0|^8.0", - "illuminate/contracts": "^6.0|^7.0|^8.0", - "illuminate/events": "^6.0|^7.0|^8.0", - "illuminate/filesystem": "^6.0|^7.0|^8.0", - "illuminate/notifications": "^6.0|^7.0|^8.0", - "illuminate/support": "^6.0|^7.0|^8.0", - "league/flysystem": "^1.0.49", - "php": "^7.3|^8.0", - "spatie/db-dumper": "^2.12", - "spatie/temporary-directory": "^1.1", - "symfony/finder": "^4.2|^5.0" - }, - "require-dev": { - "laravel/slack-notification-channel": "^2.3", - "league/flysystem-aws-s3-v3": "^1.0", - "mockery/mockery": "^1.4.2", - "orchestra/testbench": "4.*|5.*|6.*", - "phpunit/phpunit": "^8.4|^9.0" + "illuminate/console": "^9.0", + "illuminate/contracts": "^9.0", + "illuminate/events": "^9.0", + "illuminate/filesystem": "^9.0", + "illuminate/notifications": "^9.0", + "illuminate/support": "^9.0", + "league/flysystem": "^3.0", + "php": "^8.0", + "spatie/db-dumper": "^3.0", + "spatie/laravel-package-tools": "^1.6.2", + "spatie/laravel-signal-aware-command": "^1.2", + "spatie/temporary-directory": "^2.0", + "symfony/console": "^6.0", + "symfony/finder": "^6.0" + }, + "require-dev": { + "composer-runtime-api": "^2.0", + "ext-pcntl": "*", + "laravel/slack-notification-channel": "^2.4", + "league/flysystem-aws-s3-v3": "^2.0|^3.0", + "mockery/mockery": "^1.4", + "orchestra/testbench": "^7.0", + "pestphp/pest": "^1.20" }, "suggest": { "laravel/slack-notification-channel": "Required for sending notifications via Slack" @@ -5099,7 +5046,7 @@ ], "support": { "issues": "https://github.com/spatie/laravel-backup/issues", - "source": "https://github.com/spatie/laravel-backup/tree/6.16.5" + "source": "https://github.com/spatie/laravel-backup/tree/8.1.2" }, "funding": [ { @@ -5111,32 +5058,36 @@ "type": "other" } ], - "time": "2021-09-12T10:04:18+00:00" + "time": "2022-04-08T06:40:46+00:00" }, { - "name": "spatie/temporary-directory", - "version": "1.3.0", + "name": "spatie/laravel-package-tools", + "version": "1.11.3", "source": { "type": "git", - "url": "https://github.com/spatie/temporary-directory.git", - "reference": "f517729b3793bca58f847c5fd383ec16f03ffec6" + "url": "https://github.com/spatie/laravel-package-tools.git", + "reference": "baeb3df0ebb3a541394fdaf8cbe6115bf4034a59" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/temporary-directory/zipball/f517729b3793bca58f847c5fd383ec16f03ffec6", - "reference": "f517729b3793bca58f847c5fd383ec16f03ffec6", + "url": "https://api.github.com/repos/spatie/laravel-package-tools/zipball/baeb3df0ebb3a541394fdaf8cbe6115bf4034a59", + "reference": "baeb3df0ebb3a541394fdaf8cbe6115bf4034a59", "shasum": "" }, "require": { - "php": "^7.2|^8.0" + "illuminate/contracts": "^7.0|^8.0|^9.0", + "php": "^7.4|^8.0" }, "require-dev": { - "phpunit/phpunit": "^8.0|^9.0" + "mockery/mockery": "^1.4", + "orchestra/testbench": "^5.0|^6.23|^7.0", + "phpunit/phpunit": "^9.4", + "spatie/test-time": "^1.2" }, "type": "library", "autoload": { "psr-4": { - "Spatie\\TemporaryDirectory\\": "src" + "Spatie\\LaravelPackageTools\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -5145,63 +5096,71 @@ ], "authors": [ { - "name": "Alex Vanderbist", - "email": "alex@spatie.be", - "homepage": "https://spatie.be", + "name": "Freek Van der Herten", + "email": "freek@spatie.be", "role": "Developer" } ], - "description": "Easily create, use and destroy temporary directories", - "homepage": "https://github.com/spatie/temporary-directory", + "description": "Tools for creating Laravel packages", + "homepage": "https://github.com/spatie/laravel-package-tools", "keywords": [ - "php", - "spatie", - "temporary-directory" + "laravel-package-tools", + "spatie" ], "support": { - "issues": "https://github.com/spatie/temporary-directory/issues", - "source": "https://github.com/spatie/temporary-directory/tree/1.3.0" + "issues": "https://github.com/spatie/laravel-package-tools/issues", + "source": "https://github.com/spatie/laravel-package-tools/tree/1.11.3" }, - "time": "2020-11-09T15:54:21+00:00" + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2022-03-15T20:01:36+00:00" }, { - "name": "swiftmailer/swiftmailer", - "version": "v6.3.0", + "name": "spatie/laravel-signal-aware-command", + "version": "1.2.0", "source": { "type": "git", - "url": "https://github.com/swiftmailer/swiftmailer.git", - "reference": "8a5d5072dca8f48460fce2f4131fcc495eec654c" + "url": "https://github.com/spatie/laravel-signal-aware-command.git", + "reference": "d15a5b69bf715fc557b7034b4abd5a1472ae7ec8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/8a5d5072dca8f48460fce2f4131fcc495eec654c", - "reference": "8a5d5072dca8f48460fce2f4131fcc495eec654c", + "url": "https://api.github.com/repos/spatie/laravel-signal-aware-command/zipball/d15a5b69bf715fc557b7034b4abd5a1472ae7ec8", + "reference": "d15a5b69bf715fc557b7034b4abd5a1472ae7ec8", "shasum": "" }, "require": { - "egulias/email-validator": "^2.0|^3.1", - "php": ">=7.0.0", - "symfony/polyfill-iconv": "^1.0", - "symfony/polyfill-intl-idn": "^1.10", - "symfony/polyfill-mbstring": "^1.0" + "illuminate/contracts": "^8.35|^9.0", + "php": "^8.0", + "spatie/laravel-package-tools": "^1.4.3" }, "require-dev": { - "mockery/mockery": "^1.0", - "symfony/phpunit-bridge": "^4.4|^5.4" - }, - "suggest": { - "ext-intl": "Needed to support internationalized email addresses" + "brianium/paratest": "^6.2", + "ext-pcntl": "*", + "nunomaduro/collision": "^5.3|^6.0", + "orchestra/testbench": "^6.16|^7.0", + "phpunit/phpunit": "^9.5", + "spatie/laravel-ray": "^1.17" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "6.2-dev" + "laravel": { + "providers": [ + "Spatie\\SignalAwareCommand\\SignalAwareCommandServiceProvider" + ], + "aliases": { + "Signal": "Spatie\\SignalAwareCommand\\Facades\\Signal" + } } }, "autoload": { - "files": [ - "lib/swift_required.php" - ] + "psr-4": { + "Spatie\\SignalAwareCommand\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -5209,79 +5168,129 @@ ], "authors": [ { - "name": "Chris Corbyn" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "role": "Developer" } ], - "description": "Swiftmailer, free feature-rich PHP mailer", - "homepage": "https://swiftmailer.symfony.com", + "description": "Handle signals in artisan commands", + "homepage": "https://github.com/spatie/laravel-signal-aware-command", "keywords": [ - "email", - "mail", - "mailer" + "laravel", + "laravel-signal-aware-command", + "spatie" ], "support": { - "issues": "https://github.com/swiftmailer/swiftmailer/issues", - "source": "https://github.com/swiftmailer/swiftmailer/tree/v6.3.0" + "issues": "https://github.com/spatie/laravel-signal-aware-command/issues", + "source": "https://github.com/spatie/laravel-signal-aware-command/tree/1.2.0" }, "funding": [ { - "url": "https://github.com/fabpot", + "url": "https://github.com/spatie", "type": "github" + } + ], + "time": "2022-01-12T19:42:44+00:00" + }, + { + "name": "spatie/temporary-directory", + "version": "2.1.0", + "source": { + "type": "git", + "url": "https://github.com/spatie/temporary-directory.git", + "reference": "79f138f2b81adae583d04d3727a4538dd394023f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/temporary-directory/zipball/79f138f2b81adae583d04d3727a4538dd394023f", + "reference": "79f138f2b81adae583d04d3727a4538dd394023f", + "shasum": "" + }, + "require": { + "php": "^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Spatie\\TemporaryDirectory\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Alex Vanderbist", + "email": "alex@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "Easily create, use and destroy temporary directories", + "homepage": "https://github.com/spatie/temporary-directory", + "keywords": [ + "php", + "spatie", + "temporary-directory" + ], + "support": { + "issues": "https://github.com/spatie/temporary-directory/issues", + "source": "https://github.com/spatie/temporary-directory/tree/2.1.0" + }, + "funding": [ + { + "url": "https://spatie.be/open-source/support-us", + "type": "custom" }, { - "url": "https://tidelift.com/funding/github/packagist/swiftmailer/swiftmailer", - "type": "tidelift" + "url": "https://github.com/spatie", + "type": "github" } ], - "abandoned": "symfony/mailer", - "time": "2021-10-18T15:26:12+00:00" + "time": "2022-03-11T08:16:01+00:00" }, { "name": "symfony/console", - "version": "v5.4.8", + "version": "v6.0.8", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b" + "reference": "0d00aa289215353aa8746a31d101f8e60826285c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b", - "reference": "ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b", + "url": "https://api.github.com/repos/symfony/console/zipball/0d00aa289215353aa8746a31d101f8e60826285c", + "reference": "0d00aa289215353aa8746a31d101f8e60826285c", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", + "php": ">=8.0.2", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.9", - "symfony/polyfill-php80": "^1.16", "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.1|^6.0" + "symfony/string": "^5.4|^6.0" }, "conflict": { - "psr/log": ">=3", - "symfony/dependency-injection": "<4.4", - "symfony/dotenv": "<5.1", - "symfony/event-dispatcher": "<4.4", - "symfony/lock": "<4.4", - "symfony/process": "<4.4" + "symfony/dependency-injection": "<5.4", + "symfony/dotenv": "<5.4", + "symfony/event-dispatcher": "<5.4", + "symfony/lock": "<5.4", + "symfony/process": "<5.4" }, "provide": { - "psr/log-implementation": "1.0|2.0" + "psr/log-implementation": "1.0|2.0|3.0" }, "require-dev": { - "psr/log": "^1|^2", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/event-dispatcher": "^4.4|^5.0|^6.0", - "symfony/lock": "^4.4|^5.0|^6.0", - "symfony/process": "^4.4|^5.0|^6.0", - "symfony/var-dumper": "^4.4|^5.0|^6.0" + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/event-dispatcher": "^5.4|^6.0", + "symfony/lock": "^5.4|^6.0", + "symfony/process": "^5.4|^6.0", + "symfony/var-dumper": "^5.4|^6.0" }, "suggest": { "psr/log": "For using the console logger", @@ -5321,7 +5330,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.4.8" + "source": "https://github.com/symfony/console/tree/v6.0.8" }, "funding": [ { @@ -5337,25 +5346,24 @@ "type": "tidelift" } ], - "time": "2022-04-12T16:02:29+00:00" + "time": "2022-04-20T15:01:42+00:00" }, { "name": "symfony/css-selector", - "version": "v5.4.3", + "version": "v6.0.3", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "b0a190285cd95cb019237851205b8140ef6e368e" + "reference": "1955d595c12c111629cc814d3f2a2ff13580508a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/b0a190285cd95cb019237851205b8140ef6e368e", - "reference": "b0a190285cd95cb019237851205b8140ef6e368e", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/1955d595c12c111629cc814d3f2a2ff13580508a", + "reference": "1955d595c12c111629cc814d3f2a2ff13580508a", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.0.2" }, "type": "library", "autoload": { @@ -5387,7 +5395,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v5.4.3" + "source": "https://github.com/symfony/css-selector/tree/v6.0.3" }, "funding": [ { @@ -5403,29 +5411,29 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:53:40+00:00" + "time": "2022-01-02T09:55:41+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v2.5.1", + "version": "v3.0.1", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" + "reference": "26954b3d62a6c5fd0ea8a2a00c0353a14978d05c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", - "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/26954b3d62a6c5fd0ea8a2a00c0353a14978d05c", + "reference": "26954b3d62a6c5fd0ea8a2a00c0353a14978d05c", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=8.0.2" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "2.5-dev" + "dev-main": "3.0-dev" }, "thanks": { "name": "symfony/contracts", @@ -5454,7 +5462,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.1" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.0.1" }, "funding": [ { @@ -5470,31 +5478,31 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:53:40+00:00" + "time": "2022-01-02T09:55:41+00:00" }, { "name": "symfony/error-handler", - "version": "v5.4.8", + "version": "v6.0.8", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "c1fcde614dfe99d62a83b796a53b8bad358b266a" + "reference": "5e2795163acbd13b3cd46835c9f8f6c5d0a3a280" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/c1fcde614dfe99d62a83b796a53b8bad358b266a", - "reference": "c1fcde614dfe99d62a83b796a53b8bad358b266a", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/5e2795163acbd13b3cd46835c9f8f6c5d0a3a280", + "reference": "5e2795163acbd13b3cd46835c9f8f6c5d0a3a280", "shasum": "" }, "require": { - "php": ">=7.2.5", + "php": ">=8.0.2", "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^4.4|^5.0|^6.0" + "symfony/var-dumper": "^5.4|^6.0" }, "require-dev": { "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^4.4|^5.0|^6.0", - "symfony/serializer": "^4.4|^5.0|^6.0" + "symfony/http-kernel": "^5.4|^6.0", + "symfony/serializer": "^5.4|^6.0" }, "bin": [ "Resources/bin/patch-type-declarations" @@ -5525,7 +5533,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v5.4.8" + "source": "https://github.com/symfony/error-handler/tree/v6.0.8" }, "funding": [ { @@ -5541,44 +5549,42 @@ "type": "tidelift" } ], - "time": "2022-04-12T15:48:08+00:00" + "time": "2022-04-12T16:11:42+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v5.4.3", + "version": "v6.0.3", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "dec8a9f58d20df252b9cd89f1c6c1530f747685d" + "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/dec8a9f58d20df252b9cd89f1c6c1530f747685d", - "reference": "dec8a9f58d20df252b9cd89f1c6c1530f747685d", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934", + "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/event-dispatcher-contracts": "^2|^3", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.0.2", + "symfony/event-dispatcher-contracts": "^2|^3" }, "conflict": { - "symfony/dependency-injection": "<4.4" + "symfony/dependency-injection": "<5.4" }, "provide": { "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0" + "symfony/event-dispatcher-implementation": "2.0|3.0" }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/error-handler": "^4.4|^5.0|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/config": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/error-handler": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/http-foundation": "^5.4|^6.0", "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^4.4|^5.0|^6.0" + "symfony/stopwatch": "^5.4|^6.0" }, "suggest": { "symfony/dependency-injection": "", @@ -5610,7 +5616,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v5.4.3" + "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.3" }, "funding": [ { @@ -5626,24 +5632,24 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:53:40+00:00" + "time": "2022-01-02T09:55:41+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v2.5.1", + "version": "v3.0.1", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "f98b54df6ad059855739db6fcbc2d36995283fe1" + "reference": "7bc61cc2db649b4637d331240c5346dcc7708051" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/f98b54df6ad059855739db6fcbc2d36995283fe1", - "reference": "f98b54df6ad059855739db6fcbc2d36995283fe1", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/7bc61cc2db649b4637d331240c5346dcc7708051", + "reference": "7bc61cc2db649b4637d331240c5346dcc7708051", "shasum": "" }, "require": { - "php": ">=7.2.5", + "php": ">=8.0.2", "psr/event-dispatcher": "^1" }, "suggest": { @@ -5652,7 +5658,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.5-dev" + "dev-main": "3.0-dev" }, "thanks": { "name": "symfony/contracts", @@ -5689,7 +5695,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v2.5.1" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.0.1" }, "funding": [ { @@ -5705,26 +5711,24 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:53:40+00:00" + "time": "2022-01-02T09:55:41+00:00" }, { "name": "symfony/finder", - "version": "v5.4.8", + "version": "v6.0.8", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "9b630f3427f3ebe7cd346c277a1408b00249dad9" + "reference": "af7edab28d17caecd1f40a9219fc646ae751c21f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/9b630f3427f3ebe7cd346c277a1408b00249dad9", - "reference": "9b630f3427f3ebe7cd346c277a1408b00249dad9", + "url": "https://api.github.com/repos/symfony/finder/zipball/af7edab28d17caecd1f40a9219fc646ae751c21f", + "reference": "af7edab28d17caecd1f40a9219fc646ae751c21f", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.0.2" }, "type": "library", "autoload": { @@ -5752,7 +5756,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v5.4.8" + "source": "https://github.com/symfony/finder/tree/v6.0.8" }, "funding": [ { @@ -5768,36 +5772,33 @@ "type": "tidelift" } ], - "time": "2022-04-15T08:07:45+00:00" + "time": "2022-04-15T08:07:58+00:00" }, { "name": "symfony/http-client", - "version": "v5.4.8", + "version": "v6.0.8", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "0dabec4e3898d3e00451dd47b5ef839168f9bbf5" + "reference": "d347895193283e08b4c3ebf2f2974a1df3e1f670" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/0dabec4e3898d3e00451dd47b5ef839168f9bbf5", - "reference": "0dabec4e3898d3e00451dd47b5ef839168f9bbf5", + "url": "https://api.github.com/repos/symfony/http-client/zipball/d347895193283e08b4c3ebf2f2974a1df3e1f670", + "reference": "d347895193283e08b4c3ebf2f2974a1df3e1f670", "shasum": "" }, "require": { - "php": ">=7.2.5", + "php": ">=8.0.2", "psr/log": "^1|^2|^3", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-client-contracts": "^2.4", - "symfony/polyfill-php73": "^1.11", - "symfony/polyfill-php80": "^1.16", + "symfony/http-client-contracts": "^3", "symfony/service-contracts": "^1.0|^2|^3" }, "provide": { "php-http/async-client-implementation": "*", "php-http/client-implementation": "*", "psr/http-client-implementation": "1.0", - "symfony/http-client-implementation": "2.4" + "symfony/http-client-implementation": "3.0" }, "require-dev": { "amphp/amp": "^2.5", @@ -5808,10 +5809,10 @@ "nyholm/psr7": "^1.0", "php-http/httplug": "^1.0|^2.0", "psr/http-client": "^1.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/http-kernel": "^4.4.13|^5.1.5|^6.0", - "symfony/process": "^4.4|^5.0|^6.0", - "symfony/stopwatch": "^4.4|^5.0|^6.0" + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/http-kernel": "^5.4|^6.0", + "symfony/process": "^5.4|^6.0", + "symfony/stopwatch": "^5.4|^6.0" }, "type": "library", "autoload": { @@ -5839,7 +5840,7 @@ "description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-client/tree/v5.4.8" + "source": "https://github.com/symfony/http-client/tree/v6.0.8" }, "funding": [ { @@ -5855,24 +5856,24 @@ "type": "tidelift" } ], - "time": "2022-04-12T16:02:29+00:00" + "time": "2022-04-12T16:11:42+00:00" }, { "name": "symfony/http-client-contracts", - "version": "v2.5.1", + "version": "v3.0.1", "source": { "type": "git", "url": "https://github.com/symfony/http-client-contracts.git", - "reference": "1a4f708e4e87f335d1b1be6148060739152f0bd5" + "reference": "f7525778c712be78ad5b6ca31f47fdcfd404c280" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/1a4f708e4e87f335d1b1be6148060739152f0bd5", - "reference": "1a4f708e4e87f335d1b1be6148060739152f0bd5", + "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/f7525778c712be78ad5b6ca31f47fdcfd404c280", + "reference": "f7525778c712be78ad5b6ca31f47fdcfd404c280", "shasum": "" }, "require": { - "php": ">=7.2.5" + "php": ">=8.0.2" }, "suggest": { "symfony/http-client-implementation": "" @@ -5880,7 +5881,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.5-dev" + "dev-main": "3.0-dev" }, "thanks": { "name": "symfony/contracts", @@ -5917,7 +5918,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/http-client-contracts/tree/v2.5.1" + "source": "https://github.com/symfony/http-client-contracts/tree/v3.0.1" }, "funding": [ { @@ -5933,33 +5934,32 @@ "type": "tidelift" } ], - "time": "2022-03-13T20:07:29+00:00" + "time": "2022-03-13T20:10:05+00:00" }, { "name": "symfony/http-foundation", - "version": "v5.4.8", + "version": "v6.0.8", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "ff2818d1c3d49860bcae1f2cbb5eb00fcd3bf9e2" + "reference": "c9c86b02d7ef6f44f3154acc7de42831518afe7c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ff2818d1c3d49860bcae1f2cbb5eb00fcd3bf9e2", - "reference": "ff2818d1c3d49860bcae1f2cbb5eb00fcd3bf9e2", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/c9c86b02d7ef6f44f3154acc7de42831518afe7c", + "reference": "c9c86b02d7ef6f44f3154acc7de42831518afe7c", "shasum": "" }, "require": { - "php": ">=7.2.5", + "php": ">=8.0.2", "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1", - "symfony/polyfill-php80": "^1.16" + "symfony/polyfill-mbstring": "~1.1" }, "require-dev": { "predis/predis": "~1.0", - "symfony/cache": "^4.4|^5.0|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/mime": "^4.4|^5.0|^6.0" + "symfony/cache": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/mime": "^5.4|^6.0" }, "suggest": { "symfony/mime": "To use the file extension guesser" @@ -5990,7 +5990,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v5.4.8" + "source": "https://github.com/symfony/http-foundation/tree/v6.0.8" }, "funding": [ { @@ -6006,67 +6006,64 @@ "type": "tidelift" } ], - "time": "2022-04-22T08:14:12+00:00" + "time": "2022-04-22T08:18:02+00:00" }, { "name": "symfony/http-kernel", - "version": "v5.4.8", + "version": "v6.0.8", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "cf7e61106abfc19b305ca0aedc41724ced89a02a" + "reference": "7aaf1cdc9cc2ad47e926f624efcb679883a39ca7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/cf7e61106abfc19b305ca0aedc41724ced89a02a", - "reference": "cf7e61106abfc19b305ca0aedc41724ced89a02a", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/7aaf1cdc9cc2ad47e926f624efcb679883a39ca7", + "reference": "7aaf1cdc9cc2ad47e926f624efcb679883a39ca7", "shasum": "" }, "require": { - "php": ">=7.2.5", - "psr/log": "^1|^2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/error-handler": "^4.4|^5.0|^6.0", - "symfony/event-dispatcher": "^5.0|^6.0", - "symfony/http-foundation": "^5.3.7|^6.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php73": "^1.9", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.0.2", + "psr/log": "^1|^2|^3", + "symfony/error-handler": "^5.4|^6.0", + "symfony/event-dispatcher": "^5.4|^6.0", + "symfony/http-foundation": "^5.4|^6.0", + "symfony/polyfill-ctype": "^1.8" }, "conflict": { "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.0", - "symfony/config": "<5.0", - "symfony/console": "<4.4", - "symfony/dependency-injection": "<5.3", - "symfony/doctrine-bridge": "<5.0", - "symfony/form": "<5.0", - "symfony/http-client": "<5.0", - "symfony/mailer": "<5.0", - "symfony/messenger": "<5.0", - "symfony/translation": "<5.0", - "symfony/twig-bridge": "<5.0", - "symfony/validator": "<5.0", + "symfony/cache": "<5.4", + "symfony/config": "<5.4", + "symfony/console": "<5.4", + "symfony/dependency-injection": "<5.4", + "symfony/doctrine-bridge": "<5.4", + "symfony/form": "<5.4", + "symfony/http-client": "<5.4", + "symfony/mailer": "<5.4", + "symfony/messenger": "<5.4", + "symfony/translation": "<5.4", + "symfony/twig-bridge": "<5.4", + "symfony/validator": "<5.4", "twig/twig": "<2.13" }, "provide": { - "psr/log-implementation": "1.0|2.0" + "psr/log-implementation": "1.0|2.0|3.0" }, "require-dev": { "psr/cache": "^1.0|^2.0|^3.0", "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^5.0|^6.0", - "symfony/console": "^4.4|^5.0|^6.0", - "symfony/css-selector": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^5.3|^6.0", - "symfony/dom-crawler": "^4.4|^5.0|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/config": "^5.4|^6.0", + "symfony/console": "^5.4|^6.0", + "symfony/css-selector": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/dom-crawler": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/finder": "^5.4|^6.0", "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^4.4|^5.0|^6.0", - "symfony/routing": "^4.4|^5.0|^6.0", - "symfony/stopwatch": "^4.4|^5.0|^6.0", - "symfony/translation": "^4.4|^5.0|^6.0", + "symfony/process": "^5.4|^6.0", + "symfony/routing": "^5.4|^6.0", + "symfony/stopwatch": "^5.4|^6.0", + "symfony/translation": "^5.4|^6.0", "symfony/translation-contracts": "^1.1|^2|^3", "twig/twig": "^2.13|^3.0.4" }, @@ -6102,7 +6099,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v5.4.8" + "source": "https://github.com/symfony/http-kernel/tree/v6.0.8" }, "funding": [ { @@ -6118,47 +6115,42 @@ "type": "tidelift" } ], - "time": "2022-04-27T17:22:21+00:00" + "time": "2022-04-27T17:26:02+00:00" }, { - "name": "symfony/mime", - "version": "v5.4.8", + "name": "symfony/mailer", + "version": "v6.0.8", "source": { "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "af49bc163ec3272f677bde3bc44c0d766c1fd662" + "url": "https://github.com/symfony/mailer.git", + "reference": "706af6b3e99ebcbc639c9c664f5579aaa869409b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/af49bc163ec3272f677bde3bc44c0d766c1fd662", - "reference": "af49bc163ec3272f677bde3bc44c0d766c1fd662", + "url": "https://api.github.com/repos/symfony/mailer/zipball/706af6b3e99ebcbc639c9c664f5579aaa869409b", + "reference": "706af6b3e99ebcbc639c9c664f5579aaa869409b", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-intl-idn": "^1.10", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16" + "egulias/email-validator": "^2.1.10|^3", + "php": ">=8.0.2", + "psr/event-dispatcher": "^1", + "psr/log": "^1|^2|^3", + "symfony/event-dispatcher": "^5.4|^6.0", + "symfony/mime": "^5.4|^6.0", + "symfony/service-contracts": "^1.1|^2|^3" }, "conflict": { - "egulias/email-validator": "~3.0.0", - "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0", - "symfony/mailer": "<4.4" + "symfony/http-kernel": "<5.4" }, "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/property-access": "^4.4|^5.1|^6.0", - "symfony/property-info": "^4.4|^5.1|^6.0", - "symfony/serializer": "^5.2|^6.0" + "symfony/http-client-contracts": "^1.1|^2|^3", + "symfony/messenger": "^5.4|^6.0" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Mime\\": "" + "Symfony\\Component\\Mailer\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -6178,14 +6170,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Allows manipulating MIME messages", + "description": "Helps sending emails", "homepage": "https://symfony.com", - "keywords": [ - "mime", - "mime-type" - ], "support": { - "source": "https://github.com/symfony/mime/tree/v5.4.8" + "source": "https://github.com/symfony/mailer/tree/v6.0.8" }, "funding": [ { @@ -6201,32 +6189,33 @@ "type": "tidelift" } ], - "time": "2022-04-12T15:48:08+00:00" + "time": "2022-04-27T17:10:30+00:00" }, { - "name": "symfony/options-resolver", - "version": "v5.4.3", + "name": "symfony/mailgun-mailer", + "version": "v6.0.7", "source": { "type": "git", - "url": "https://github.com/symfony/options-resolver.git", - "reference": "cc1147cb11af1b43f503ac18f31aa3bec213aba8" + "url": "https://github.com/symfony/mailgun-mailer.git", + "reference": "f0d032c26683b26f4bc26864e09b1e08fa55226e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/cc1147cb11af1b43f503ac18f31aa3bec213aba8", - "reference": "cc1147cb11af1b43f503ac18f31aa3bec213aba8", + "url": "https://api.github.com/repos/symfony/mailgun-mailer/zipball/f0d032c26683b26f4bc26864e09b1e08fa55226e", + "reference": "f0d032c26683b26f4bc26864e09b1e08fa55226e", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php73": "~1.0", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.0.2", + "symfony/mailer": "^5.4|^6.0" }, - "type": "library", + "require-dev": { + "symfony/http-client": "^5.4|^6.0" + }, + "type": "symfony-mailer-bridge", "autoload": { "psr-4": { - "Symfony\\Component\\OptionsResolver\\": "" + "Symfony\\Component\\Mailer\\Bridge\\Mailgun\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -6246,15 +6235,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides an improved replacement for the array_replace PHP function", + "description": "Symfony Mailgun Mailer Bridge", "homepage": "https://symfony.com", - "keywords": [ - "config", - "configuration", - "options" - ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v5.4.3" + "source": "https://github.com/symfony/mailgun-mailer/tree/v6.0.7" }, "funding": [ { @@ -6270,48 +6254,115 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:53:40+00:00" + "time": "2022-03-24T17:11:42+00:00" }, { - "name": "symfony/polyfill-ctype", - "version": "v1.25.0", + "name": "symfony/mime", + "version": "v6.0.8", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" + "url": "https://github.com/symfony/mime.git", + "reference": "c1701e88ad0ca49fc6ad6cdf360bc0e1209fb5e1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", + "url": "https://api.github.com/repos/symfony/mime/zipball/c1701e88ad0ca49fc6ad6cdf360bc0e1209fb5e1", + "reference": "c1701e88ad0ca49fc6ad6cdf360bc0e1209fb5e1", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=8.0.2", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0" }, - "provide": { - "ext-ctype": "*" + "conflict": { + "egulias/email-validator": "~3.0.0", + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/mailer": "<5.4" }, - "suggest": { - "ext-ctype": "For best performance" + "require-dev": { + "egulias/email-validator": "^2.1.10|^3.1", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/property-access": "^5.4|^6.0", + "symfony/property-info": "^5.4|^6.0", + "symfony/serializer": "^5.4|^6.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" + "autoload": { + "psr-4": { + "Symfony\\Component\\Mime\\": "" }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "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": "Allows manipulating MIME messages", + "homepage": "https://symfony.com", + "keywords": [ + "mime", + "mime-type" + ], + "support": { + "source": "https://github.com/symfony/mime/tree/v6.0.8" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" } + ], + "time": "2022-04-12T16:11:42+00:00" + }, + { + "name": "symfony/options-resolver", + "version": "v6.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/options-resolver.git", + "reference": "51f7006670febe4cbcbae177cbffe93ff833250d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/51f7006670febe4cbcbae177cbffe93ff833250d", + "reference": "51f7006670febe4cbcbae177cbffe93ff833250d", + "shasum": "" + }, + "require": { + "php": ">=8.0.2", + "symfony/deprecation-contracts": "^2.1|^3" }, + "type": "library", "autoload": { - "files": [ - "bootstrap.php" - ], "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - } + "Symfony\\Component\\OptionsResolver\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -6319,24 +6370,23 @@ ], "authors": [ { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for ctype functions", + "description": "Provides an improved replacement for the array_replace PHP function", "homepage": "https://symfony.com", "keywords": [ - "compatibility", - "ctype", - "polyfill", - "portable" + "config", + "configuration", + "options" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.25.0" + "source": "https://github.com/symfony/options-resolver/tree/v6.0.3" }, "funding": [ { @@ -6352,30 +6402,30 @@ "type": "tidelift" } ], - "time": "2021-10-20T20:35:02+00:00" + "time": "2022-01-02T09:55:41+00:00" }, { - "name": "symfony/polyfill-iconv", + "name": "symfony/polyfill-ctype", "version": "v1.25.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-iconv.git", - "reference": "f1aed619e28cb077fc83fac8c4c0383578356e40" + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "30885182c981ab175d4d034db0f6f469898070ab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/f1aed619e28cb077fc83fac8c4c0383578356e40", - "reference": "f1aed619e28cb077fc83fac8c4c0383578356e40", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", + "reference": "30885182c981ab175d4d034db0f6f469898070ab", "shasum": "" }, "require": { "php": ">=7.1" }, "provide": { - "ext-iconv": "*" + "ext-ctype": "*" }, "suggest": { - "ext-iconv": "For best performance" + "ext-ctype": "For best performance" }, "type": "library", "extra": { @@ -6392,7 +6442,7 @@ "bootstrap.php" ], "psr-4": { - "Symfony\\Polyfill\\Iconv\\": "" + "Symfony\\Polyfill\\Ctype\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -6401,25 +6451,24 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for the Iconv extension", + "description": "Symfony polyfill for ctype functions", "homepage": "https://symfony.com", "keywords": [ "compatibility", - "iconv", + "ctype", "polyfill", - "portable", - "shim" + "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-iconv/tree/v1.25.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.25.0" }, "funding": [ { @@ -6435,7 +6484,7 @@ "type": "tidelift" } ], - "time": "2022-01-04T09:04:05+00:00" + "time": "2021-10-20T20:35:02+00:00" }, { "name": "symfony/polyfill-intl-grapheme", @@ -6848,85 +6897,6 @@ ], "time": "2021-05-27T09:17:38+00:00" }, - { - "name": "symfony/polyfill-php73", - "version": "v1.25.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/cc5db0e22b3cb4111010e48785a97f670b350ca5", - "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php73\\": "" - }, - "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" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.25.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-06-05T21:20:04+00:00" - }, { "name": "symfony/polyfill-php80", "version": "v1.25.0", @@ -7173,21 +7143,20 @@ }, { "name": "symfony/process", - "version": "v5.4.8", + "version": "v6.0.8", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "597f3fff8e3e91836bb0bd38f5718b56ddbde2f3" + "reference": "d074154ea8b1443a96391f6e39f9e547b2dd01b9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/597f3fff8e3e91836bb0bd38f5718b56ddbde2f3", - "reference": "597f3fff8e3e91836bb0bd38f5718b56ddbde2f3", + "url": "https://api.github.com/repos/symfony/process/zipball/d074154ea8b1443a96391f6e39f9e547b2dd01b9", + "reference": "d074154ea8b1443a96391f6e39f9e547b2dd01b9", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.0.2" }, "type": "library", "autoload": { @@ -7215,7 +7184,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v5.4.8" + "source": "https://github.com/symfony/process/tree/v6.0.8" }, "funding": [ { @@ -7231,7 +7200,7 @@ "type": "tidelift" } ], - "time": "2022-04-08T05:07:18+00:00" + "time": "2022-04-12T16:11:42+00:00" }, { "name": "symfony/psr-http-message-bridge", @@ -7323,37 +7292,35 @@ }, { "name": "symfony/routing", - "version": "v5.4.8", + "version": "v6.0.8", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "e07817bb6244ea33ef5ad31abc4a9288bef3f2f7" + "reference": "74c40c9fc334acc601a32fcf4274e74fb3bac11e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/e07817bb6244ea33ef5ad31abc4a9288bef3f2f7", - "reference": "e07817bb6244ea33ef5ad31abc4a9288bef3f2f7", + "url": "https://api.github.com/repos/symfony/routing/zipball/74c40c9fc334acc601a32fcf4274e74fb3bac11e", + "reference": "74c40c9fc334acc601a32fcf4274e74fb3bac11e", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.0.2" }, "conflict": { "doctrine/annotations": "<1.12", - "symfony/config": "<5.3", - "symfony/dependency-injection": "<4.4", - "symfony/yaml": "<4.4" + "symfony/config": "<5.4", + "symfony/dependency-injection": "<5.4", + "symfony/yaml": "<5.4" }, "require-dev": { "doctrine/annotations": "^1.12", "psr/log": "^1|^2|^3", - "symfony/config": "^5.3|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/http-foundation": "^4.4|^5.0|^6.0", - "symfony/yaml": "^4.4|^5.0|^6.0" + "symfony/config": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/http-foundation": "^5.4|^6.0", + "symfony/yaml": "^5.4|^6.0" }, "suggest": { "symfony/config": "For using the all-in-one router or any loader", @@ -7393,7 +7360,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v5.4.8" + "source": "https://github.com/symfony/routing/tree/v6.0.8" }, "funding": [ { @@ -7409,26 +7376,25 @@ "type": "tidelift" } ], - "time": "2022-04-18T21:45:37+00:00" + "time": "2022-04-22T08:18:02+00:00" }, { "name": "symfony/service-contracts", - "version": "v2.5.1", + "version": "v3.0.1", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c" + "reference": "e517458f278c2131ca9f262f8fbaf01410f2c65c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/24d9dc654b83e91aa59f9d167b131bc3b5bea24c", - "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/e517458f278c2131ca9f262f8fbaf01410f2c65c", + "reference": "e517458f278c2131ca9f262f8fbaf01410f2c65c", "shasum": "" }, "require": { - "php": ">=7.2.5", - "psr/container": "^1.1", - "symfony/deprecation-contracts": "^2.1|^3" + "php": ">=8.0.2", + "psr/container": "^2.0" }, "conflict": { "ext-psr": "<1.1|>=2" @@ -7439,7 +7405,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.5-dev" + "dev-main": "3.0-dev" }, "thanks": { "name": "symfony/contracts", @@ -7476,7 +7442,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v2.5.1" + "source": "https://github.com/symfony/service-contracts/tree/v3.0.1" }, "funding": [ { @@ -7492,38 +7458,37 @@ "type": "tidelift" } ], - "time": "2022-03-13T20:07:29+00:00" + "time": "2022-03-13T20:10:05+00:00" }, { "name": "symfony/string", - "version": "v5.4.8", + "version": "v6.0.8", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "3c061a76bff6d6ea427d85e12ad1bb8ed8cd43e8" + "reference": "ac0aa5c2282e0de624c175b68d13f2c8f2e2649d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/3c061a76bff6d6ea427d85e12ad1bb8ed8cd43e8", - "reference": "3c061a76bff6d6ea427d85e12ad1bb8ed8cd43e8", + "url": "https://api.github.com/repos/symfony/string/zipball/ac0aa5c2282e0de624c175b68d13f2c8f2e2649d", + "reference": "ac0aa5c2282e0de624c175b68d13f2c8f2e2649d", "shasum": "" }, "require": { - "php": ">=7.2.5", + "php": ">=8.0.2", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-intl-grapheme": "~1.0", "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "~1.15" + "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "symfony/translation-contracts": ">=3.0" + "symfony/translation-contracts": "<2.0" }, "require-dev": { - "symfony/error-handler": "^4.4|^5.0|^6.0", - "symfony/http-client": "^4.4|^5.0|^6.0", - "symfony/translation-contracts": "^1.1|^2", - "symfony/var-exporter": "^4.4|^5.0|^6.0" + "symfony/error-handler": "^5.4|^6.0", + "symfony/http-client": "^5.4|^6.0", + "symfony/translation-contracts": "^2.0|^3.0", + "symfony/var-exporter": "^5.4|^6.0" }, "type": "library", "autoload": { @@ -7562,7 +7527,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.4.8" + "source": "https://github.com/symfony/string/tree/v6.0.8" }, "funding": [ { @@ -7578,52 +7543,50 @@ "type": "tidelift" } ], - "time": "2022-04-19T10:40:37+00:00" + "time": "2022-04-22T08:18:02+00:00" }, { "name": "symfony/translation", - "version": "v5.4.8", + "version": "v6.0.8", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "f5c0f6d1f20993b2606f3a5f36b1dc8c1899170b" + "reference": "3d38cf8f8834148c4457681d539bc204de701501" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/f5c0f6d1f20993b2606f3a5f36b1dc8c1899170b", - "reference": "f5c0f6d1f20993b2606f3a5f36b1dc8c1899170b", + "url": "https://api.github.com/repos/symfony/translation/zipball/3d38cf8f8834148c4457681d539bc204de701501", + "reference": "3d38cf8f8834148c4457681d539bc204de701501", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", + "php": ">=8.0.2", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation-contracts": "^2.3" + "symfony/translation-contracts": "^2.3|^3.0" }, "conflict": { - "symfony/config": "<4.4", - "symfony/console": "<5.3", - "symfony/dependency-injection": "<5.0", - "symfony/http-kernel": "<5.0", - "symfony/twig-bundle": "<5.0", - "symfony/yaml": "<4.4" + "symfony/config": "<5.4", + "symfony/console": "<5.4", + "symfony/dependency-injection": "<5.4", + "symfony/http-kernel": "<5.4", + "symfony/twig-bundle": "<5.4", + "symfony/yaml": "<5.4" }, "provide": { - "symfony/translation-implementation": "2.3" + "symfony/translation-implementation": "2.3|3.0" }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^4.4|^5.0|^6.0", + "symfony/config": "^5.4|^6.0", "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.0|^6.0", - "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/finder": "^5.4|^6.0", "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.0|^6.0", - "symfony/intl": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^5.4|^6.0", + "symfony/intl": "^5.4|^6.0", "symfony/polyfill-intl-icu": "^1.21", "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^4.4|^5.0|^6.0" + "symfony/yaml": "^5.4|^6.0" }, "suggest": { "psr/log-implementation": "To use logging capability in translator", @@ -7659,7 +7622,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v5.4.8" + "source": "https://github.com/symfony/translation/tree/v6.0.8" }, "funding": [ { @@ -7675,24 +7638,24 @@ "type": "tidelift" } ], - "time": "2022-04-22T08:14:12+00:00" + "time": "2022-04-22T08:18:02+00:00" }, { "name": "symfony/translation-contracts", - "version": "v2.5.1", + "version": "v3.0.1", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "1211df0afa701e45a04253110e959d4af4ef0f07" + "reference": "c4183fc3ef0f0510893cbeedc7718fb5cafc9ac9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1211df0afa701e45a04253110e959d4af4ef0f07", - "reference": "1211df0afa701e45a04253110e959d4af4ef0f07", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/c4183fc3ef0f0510893cbeedc7718fb5cafc9ac9", + "reference": "c4183fc3ef0f0510893cbeedc7718fb5cafc9ac9", "shasum": "" }, "require": { - "php": ">=7.2.5" + "php": ">=8.0.2" }, "suggest": { "symfony/translation-implementation": "" @@ -7700,7 +7663,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.5-dev" + "dev-main": "3.0-dev" }, "thanks": { "name": "symfony/contracts", @@ -7737,7 +7700,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v2.5.1" + "source": "https://github.com/symfony/translation-contracts/tree/v3.0.1" }, "funding": [ { @@ -7753,36 +7716,35 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:53:40+00:00" + "time": "2022-01-02T09:55:41+00:00" }, { "name": "symfony/var-dumper", - "version": "v5.4.8", + "version": "v6.0.8", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "cdcadd343d31ad16fc5e006b0de81ea307435053" + "reference": "fa61dfb4bd3068df2492013dc65f3190e9f550c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/cdcadd343d31ad16fc5e006b0de81ea307435053", - "reference": "cdcadd343d31ad16fc5e006b0de81ea307435053", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/fa61dfb4bd3068df2492013dc65f3190e9f550c0", + "reference": "fa61dfb4bd3068df2492013dc65f3190e9f550c0", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.0.2", + "symfony/polyfill-mbstring": "~1.0" }, "conflict": { "phpunit/phpunit": "<5.4.3", - "symfony/console": "<4.4" + "symfony/console": "<5.4" }, "require-dev": { "ext-iconv": "*", - "symfony/console": "^4.4|^5.0|^6.0", - "symfony/process": "^4.4|^5.0|^6.0", - "symfony/uid": "^5.1|^6.0", + "symfony/console": "^5.4|^6.0", + "symfony/process": "^5.4|^6.0", + "symfony/uid": "^5.4|^6.0", "twig/twig": "^2.13|^3.0.4" }, "suggest": { @@ -7826,7 +7788,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v5.4.8" + "source": "https://github.com/symfony/var-dumper/tree/v6.0.8" }, "funding": [ { @@ -7842,7 +7804,7 @@ "type": "tidelift" } ], - "time": "2022-04-26T13:19:20+00:00" + "time": "2022-04-26T13:22:23+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", @@ -8043,16 +8005,16 @@ }, { "name": "voku/portable-ascii", - "version": "1.6.1", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/voku/portable-ascii.git", - "reference": "87337c91b9dfacee02452244ee14ab3c43bc485a" + "reference": "b56450eed252f6801410d810c8e1727224ae0743" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/87337c91b9dfacee02452244ee14ab3c43bc485a", - "reference": "87337c91b9dfacee02452244ee14ab3c43bc485a", + "url": "https://api.github.com/repos/voku/portable-ascii/zipball/b56450eed252f6801410d810c8e1727224ae0743", + "reference": "b56450eed252f6801410d810c8e1727224ae0743", "shasum": "" }, "require": { @@ -8089,7 +8051,7 @@ ], "support": { "issues": "https://github.com/voku/portable-ascii/issues", - "source": "https://github.com/voku/portable-ascii/tree/1.6.1" + "source": "https://github.com/voku/portable-ascii/tree/2.0.1" }, "funding": [ { @@ -8113,7 +8075,7 @@ "type": "tidelift" } ], - "time": "2022-01-24T18:55:24+00:00" + "time": "2022-03-08T17:03:00+00:00" }, { "name": "webmozart/assert", @@ -8407,39 +8369,36 @@ "time": "2018-12-13T10:34:14+00:00" }, { - "name": "composer/ca-bundle", - "version": "1.3.1", + "name": "composer/pcre", + "version": "3.0.0", "source": { "type": "git", - "url": "https://github.com/composer/ca-bundle.git", - "reference": "4c679186f2aca4ab6a0f1b0b9cf9252decb44d0b" + "url": "https://github.com/composer/pcre.git", + "reference": "e300eb6c535192decd27a85bc72a9290f0d6b3bd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/4c679186f2aca4ab6a0f1b0b9cf9252decb44d0b", - "reference": "4c679186f2aca4ab6a0f1b0b9cf9252decb44d0b", + "url": "https://api.github.com/repos/composer/pcre/zipball/e300eb6c535192decd27a85bc72a9290f0d6b3bd", + "reference": "e300eb6c535192decd27a85bc72a9290f0d6b3bd", "shasum": "" }, "require": { - "ext-openssl": "*", - "ext-pcre": "*", - "php": "^5.3.2 || ^7.0 || ^8.0" + "php": "^7.4 || ^8.0" }, "require-dev": { - "phpstan/phpstan": "^0.12.55", - "psr/log": "^1.0", - "symfony/phpunit-bridge": "^4.2 || ^5", - "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0 || ^6.0" + "phpstan/phpstan": "^1.3", + "phpstan/phpstan-strict-rules": "^1.1", + "symfony/phpunit-bridge": "^5" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.x-dev" + "dev-main": "3.x-dev" } }, "autoload": { "psr-4": { - "Composer\\CaBundle\\": "src" + "Composer\\Pcre\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -8453,18 +8412,16 @@ "homepage": "http://seld.be" } ], - "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.", + "description": "PCRE wrapping library that offers type-safe preg_* replacements.", "keywords": [ - "cabundle", - "cacert", - "certificate", - "ssl", - "tls" + "PCRE", + "preg", + "regex", + "regular expression" ], "support": { - "irc": "irc://irc.freenode.org/composer", - "issues": "https://github.com/composer/ca-bundle/issues", - "source": "https://github.com/composer/ca-bundle/tree/1.3.1" + "issues": "https://github.com/composer/pcre/issues", + "source": "https://github.com/composer/pcre/tree/3.0.0" }, "funding": [ { @@ -8480,61 +8437,39 @@ "type": "tidelift" } ], - "time": "2021-10-28T20:44:15+00:00" + "time": "2022-02-25T20:21:48+00:00" }, { - "name": "composer/composer", - "version": "1.10.26", + "name": "doctrine/instantiator", + "version": "1.4.1", "source": { "type": "git", - "url": "https://github.com/composer/composer.git", - "reference": "3e196135eacf9e519a6b00986bc6fe6aff977997" + "url": "https://github.com/doctrine/instantiator.git", + "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/composer/zipball/3e196135eacf9e519a6b00986bc6fe6aff977997", - "reference": "3e196135eacf9e519a6b00986bc6fe6aff977997", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc", + "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc", "shasum": "" }, "require": { - "composer/ca-bundle": "^1.0", - "composer/semver": "^1.0", - "composer/spdx-licenses": "^1.2", - "composer/xdebug-handler": "^1.1", - "justinrainbow/json-schema": "^5.2.10", - "php": "^5.3.2 || ^7.0 || ^8.0", - "psr/log": "^1.0", - "seld/jsonlint": "^1.4", - "seld/phar-utils": "^1.0", - "symfony/console": "^2.7 || ^3.0 || ^4.0 || ^5.0", - "symfony/filesystem": "^2.7 || ^3.0 || ^4.0 || ^5.0", - "symfony/finder": "^2.7 || ^3.0 || ^4.0 || ^5.0", - "symfony/process": "^2.7 || ^3.0 || ^4.0 || ^5.0" - }, - "conflict": { - "symfony/console": "2.8.38" + "php": "^7.1 || ^8.0" }, "require-dev": { - "phpspec/prophecy": "^1.10", - "symfony/phpunit-bridge": "^4.2" - }, - "suggest": { - "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages", - "ext-zip": "Enabling the zip extension allows you to unzip archives", - "ext-zlib": "Allow gzip compression of HTTP requests" + "doctrine/coding-standard": "^9", + "ext-pdo": "*", + "ext-phar": "*", + "phpbench/phpbench": "^0.16 || ^1", + "phpstan/phpstan": "^1.4", + "phpstan/phpstan-phpunit": "^1", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "vimeo/psalm": "^4.22" }, - "bin": [ - "bin/composer" - ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.10-dev" - } - }, "autoload": { "psr-4": { - "Composer\\": "src/Composer" + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" } }, "notification-url": "https://packagist.org/downloads/", @@ -8543,624 +8478,36 @@ ], "authors": [ { - "name": "Nils Adermann", - "email": "naderman@naderman.de", - "homepage": "http://www.naderman.de" - }, - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "https://ocramius.github.io/" } ], - "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" - ], - "support": { - "irc": "irc://irc.freenode.org/composer", - "issues": "https://github.com/composer/composer/issues", - "source": "https://github.com/composer/composer/tree/1.10.26" - }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" - } - ], - "time": "2022-04-13T14:39:56+00:00" - }, - { - "name": "composer/pcre", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/composer/pcre.git", - "reference": "e300eb6c535192decd27a85bc72a9290f0d6b3bd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/e300eb6c535192decd27a85bc72a9290f0d6b3bd", - "reference": "e300eb6c535192decd27a85bc72a9290f0d6b3bd", - "shasum": "" - }, - "require": { - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^1.3", - "phpstan/phpstan-strict-rules": "^1.1", - "symfony/phpunit-bridge": "^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Composer\\Pcre\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - } - ], - "description": "PCRE wrapping library that offers type-safe preg_* replacements.", - "keywords": [ - "PCRE", - "preg", - "regex", - "regular expression" - ], - "support": { - "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/3.0.0" - }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" - } - ], - "time": "2022-02-25T20:21:48+00:00" - }, - { - "name": "composer/spdx-licenses", - "version": "1.5.6", - "source": { - "type": "git", - "url": "https://github.com/composer/spdx-licenses.git", - "reference": "a30d487169d799745ca7280bc90fdfa693536901" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/a30d487169d799745ca7280bc90fdfa693536901", - "reference": "a30d487169d799745ca7280bc90fdfa693536901", - "shasum": "" - }, - "require": { - "php": "^5.3.2 || ^7.0 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.55", - "symfony/phpunit-bridge": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Composer\\Spdx\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nils Adermann", - "email": "naderman@naderman.de", - "homepage": "http://www.naderman.de" - }, - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - }, - { - "name": "Rob Bast", - "email": "rob.bast@gmail.com", - "homepage": "http://robbast.nl" - } - ], - "description": "SPDX licenses list and validation library.", - "keywords": [ - "license", - "spdx", - "validator" - ], - "support": { - "irc": "irc://irc.freenode.org/composer", - "issues": "https://github.com/composer/spdx-licenses/issues", - "source": "https://github.com/composer/spdx-licenses/tree/1.5.6" - }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" - } - ], - "time": "2021-11-18T10:14:14+00:00" - }, - { - "name": "composer/xdebug-handler", - "version": "1.4.6", - "source": { - "type": "git", - "url": "https://github.com/composer/xdebug-handler.git", - "reference": "f27e06cd9675801df441b3656569b328e04aa37c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/f27e06cd9675801df441b3656569b328e04aa37c", - "reference": "f27e06cd9675801df441b3656569b328e04aa37c", - "shasum": "" - }, - "require": { - "php": "^5.3.2 || ^7.0 || ^8.0", - "psr/log": "^1.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.55", - "symfony/phpunit-bridge": "^4.2 || ^5" - }, - "type": "library", - "autoload": { - "psr-4": { - "Composer\\XdebugHandler\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "John Stevenson", - "email": "john-stevenson@blueyonder.co.uk" - } - ], - "description": "Restarts a process without Xdebug.", - "keywords": [ - "Xdebug", - "performance" - ], - "support": { - "irc": "irc://irc.freenode.org/composer", - "issues": "https://github.com/composer/xdebug-handler/issues", - "source": "https://github.com/composer/xdebug-handler/tree/1.4.6" - }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" - } - ], - "time": "2021-03-25T17:01:18+00:00" - }, - { - "name": "doctrine/instantiator", - "version": "1.4.1", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc", - "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.16 || ^1", - "phpstan/phpstan": "^1.4", - "phpstan/phpstan-phpunit": "^1", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.22" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.1" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2022-03-03T08:28:38+00:00" - }, - { - "name": "enlightn/enlightn", - "version": "v1.25.0", - "source": { - "type": "git", - "url": "https://github.com/enlightn/enlightn.git", - "reference": "418ee027a7fefb72b725c8af7c3663ae01024526" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/enlightn/enlightn/zipball/418ee027a7fefb72b725c8af7c3663ae01024526", - "reference": "418ee027a7fefb72b725c8af7c3663ae01024526", - "shasum": "" - }, - "require": { - "enlightn/security-checker": "^1.1", - "ext-json": "*", - "guzzlehttp/guzzle": "^5.0|^6.0|^7.0", - "laravel/framework": "^6.0|^7.0|^8.0|^9.0", - "nikic/php-parser": "^4.0", - "nunomaduro/larastan": "^0.6.11|^0.7|^1.0.0", - "php": "^7.2|^8.0", - "phpstan/phpstan": "^0.12.59|>=1.0.0 <1.2.0", - "symfony/finder": "^4.0|^5.0|^6.0" - }, - "require-dev": { - "barryvdh/laravel-ide-helper": "^2.8", - "brianium/paratest": "^6.1", - "fideloper/proxy": "^4.4", - "friendsofphp/php-cs-fixer": "^2.18|^3.0", - "mockery/mockery": "^1.3", - "orchestra/testbench": "^4.0|^5.20|^6.15|^7.0", - "phpunit/phpunit": "^7.5|^8.0|^9.0", - "predis/predis": "*" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Enlightn\\Enlightn\\EnlightnServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Enlightn\\Enlightn\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-3.0-or-later" - ], - "authors": [ - { - "name": "Paras Malhotra", - "email": "paras@laravel-enlightn.com" - }, - { - "name": "Miguel Piedrafita", - "email": "soy@miguelpiedrafita.com" - }, - { - "name": "Lars Klopstra", - "email": "lars@flowframe.nl" - } - ], - "description": "Enlightn - Your performance & security consultant, an artisan command away.", - "homepage": "https://www.laravel-enlightn.com/", - "keywords": [ - "Audit", - "analysis tool", - "dynamic analysis", - "dynamic analyzer", - "laravel", - "package", - "performance", - "security", - "static analysis", - "static analyzer" - ], - "support": { - "docs": "https://www.laravel-enlightn.com/docs/", - "issues": "https://github.com/enlightn/enlightn/issues", - "source": "https://github.com/enlightn/enlightn/tree/v1.25.0" - }, - "time": "2022-02-22T00:30:44+00:00" - }, - { - "name": "enlightn/security-checker", - "version": "v1.10.0", - "source": { - "type": "git", - "url": "https://github.com/enlightn/security-checker.git", - "reference": "196bacc76e7a72a63d0e1220926dbb190272db97" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/enlightn/security-checker/zipball/196bacc76e7a72a63d0e1220926dbb190272db97", - "reference": "196bacc76e7a72a63d0e1220926dbb190272db97", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/guzzle": "^6.3|^7.0", - "php": ">=5.6", - "symfony/console": "^3.4|^4|^5|^6", - "symfony/finder": "^3|^4|^5|^6", - "symfony/process": "^3.4|^4|^5|^6", - "symfony/yaml": "^3.4|^4|^5|^6" - }, - "require-dev": { - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^2.18|^3.0", - "phpunit/phpunit": "^5.5|^6|^7|^8|^9" - }, - "bin": [ - "security-checker" - ], - "type": "library", - "autoload": { - "psr-4": { - "Enlightn\\SecurityChecker\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Paras Malhotra", - "email": "paras@laravel-enlightn.com" - }, - { - "name": "Miguel Piedrafita", - "email": "soy@miguelpiedrafita.com" - } - ], - "description": "A PHP dependency vulnerabilities scanner based on the Security Advisories Database.", - "keywords": [ - "package", - "php", - "scanner", - "security", - "security advisories", - "vulnerability scanner" - ], - "support": { - "issues": "https://github.com/enlightn/security-checker/issues", - "source": "https://github.com/enlightn/security-checker/tree/v1.10.0" - }, - "time": "2022-02-21T22:40:16+00:00" - }, - { - "name": "facade/flare-client-php", - "version": "1.9.1", - "source": { - "type": "git", - "url": "https://github.com/facade/flare-client-php.git", - "reference": "b2adf1512755637d0cef4f7d1b54301325ac78ed" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/flare-client-php/zipball/b2adf1512755637d0cef4f7d1b54301325ac78ed", - "reference": "b2adf1512755637d0cef4f7d1b54301325ac78ed", - "shasum": "" - }, - "require": { - "facade/ignition-contracts": "~1.0", - "illuminate/pipeline": "^5.5|^6.0|^7.0|^8.0", - "php": "^7.1|^8.0", - "symfony/http-foundation": "^3.3|^4.1|^5.0", - "symfony/mime": "^3.4|^4.0|^5.1", - "symfony/var-dumper": "^3.4|^4.0|^5.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2.14", - "phpunit/phpunit": "^7.5.16", - "spatie/phpunit-snapshot-assertions": "^2.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "files": [ - "src/helpers.php" - ], - "psr-4": { - "Facade\\FlareClient\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Send PHP errors to Flare", - "homepage": "https://github.com/facade/flare-client-php", + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://www.doctrine-project.org/projects/instantiator.html", "keywords": [ - "exception", - "facade", - "flare", - "reporting" + "constructor", + "instantiate" ], "support": { - "issues": "https://github.com/facade/flare-client-php/issues", - "source": "https://github.com/facade/flare-client-php/tree/1.9.1" + "issues": "https://github.com/doctrine/instantiator/issues", + "source": "https://github.com/doctrine/instantiator/tree/1.4.1" }, "funding": [ { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2021-09-13T12:16:46+00:00" - }, - { - "name": "facade/ignition", - "version": "2.17.5", - "source": { - "type": "git", - "url": "https://github.com/facade/ignition.git", - "reference": "1d71996f83c9a5a7807331b8986ac890352b7a0c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/ignition/zipball/1d71996f83c9a5a7807331b8986ac890352b7a0c", - "reference": "1d71996f83c9a5a7807331b8986ac890352b7a0c", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "facade/flare-client-php": "^1.9.1", - "facade/ignition-contracts": "^1.0.2", - "illuminate/support": "^7.0|^8.0", - "monolog/monolog": "^2.0", - "php": "^7.2.5|^8.0", - "symfony/console": "^5.0", - "symfony/var-dumper": "^5.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2.14", - "livewire/livewire": "^2.4", - "mockery/mockery": "^1.3", - "orchestra/testbench": "^5.0|^6.0", - "psalm/plugin-laravel": "^1.2" - }, - "suggest": { - "laravel/telescope": "^3.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" }, - "laravel": { - "providers": [ - "Facade\\Ignition\\IgnitionServiceProvider" - ], - "aliases": { - "Flare": "Facade\\Ignition\\Facades\\Flare" - } - } - }, - "autoload": { - "files": [ - "src/helpers.php" - ], - "psr-4": { - "Facade\\Ignition\\": "src" + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", + "type": "tidelift" } - }, - "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" ], - "support": { - "docs": "https://flareapp.io/docs/ignition-for-laravel/introduction", - "forum": "https://twitter.com/flareappio", - "issues": "https://github.com/facade/ignition/issues", - "source": "https://github.com/facade/ignition" - }, - "time": "2022-02-23T18:31:24+00:00" + "time": "2022-03-03T08:28:38+00:00" }, { "name": "facade/ignition-contracts", @@ -9404,76 +8751,6 @@ }, "time": "2020-07-09T08:09:16+00:00" }, - { - "name": "justinrainbow/json-schema", - "version": "5.2.12", - "source": { - "type": "git", - "url": "https://github.com/justinrainbow/json-schema.git", - "reference": "ad87d5a5ca981228e0e205c2bc7dfb8e24559b60" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/ad87d5a5ca981228e0e205c2bc7dfb8e24559b60", - "reference": "ad87d5a5ca981228e0e205c2bc7dfb8e24559b60", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "~2.2.20||~2.15.1", - "json-schema/json-schema-test-suite": "1.2.0", - "phpunit/phpunit": "^4.8.35" - }, - "bin": [ - "bin/validate-json" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "JsonSchema\\": "src/JsonSchema/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bruno Prieto Reis", - "email": "bruno.p.reis@gmail.com" - }, - { - "name": "Justin Rainbow", - "email": "justin.rainbow@gmail.com" - }, - { - "name": "Igor Wiedler", - "email": "igor@wiedler.ch" - }, - { - "name": "Robert Schönthal", - "email": "seroscho@googlemail.com" - } - ], - "description": "A library to validate a json schema.", - "homepage": "https://github.com/justinrainbow/json-schema", - "keywords": [ - "json", - "schema" - ], - "support": { - "issues": "https://github.com/justinrainbow/json-schema/issues", - "source": "https://github.com/justinrainbow/json-schema/tree/5.2.12" - }, - "time": "2022-04-13T08:02:27+00:00" - }, { "name": "laravel/tinker", "version": "v2.7.2", @@ -9610,30 +8887,33 @@ }, { "name": "mockery/mockery", - "version": "1.3.5", + "version": "1.5.0", "source": { "type": "git", "url": "https://github.com/mockery/mockery.git", - "reference": "472fa8ca4e55483d55ee1e73c963718c4393791d" + "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/472fa8ca4e55483d55ee1e73c963718c4393791d", - "reference": "472fa8ca4e55483d55ee1e73c963718c4393791d", + "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", + "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", "shasum": "" }, "require": { "hamcrest/hamcrest-php": "^2.0.1", "lib-pcre": ">=7.0", - "php": ">=5.6.0" + "php": "^7.3 || ^8.0" + }, + "conflict": { + "phpunit/phpunit": "<8.0" }, "require-dev": { - "phpunit/phpunit": "^5.7.10|^6.5|^7.5|^8.5|^9.3" + "phpunit/phpunit": "^8.5 || ^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3.x-dev" + "dev-master": "1.4.x-dev" } }, "autoload": { @@ -9673,9 +8953,9 @@ ], "support": { "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.3.5" + "source": "https://github.com/mockery/mockery/tree/1.5.0" }, - "time": "2021-09-13T15:33:03+00:00" + "time": "2022-01-20T13:18:17+00:00" }, { "name": "myclabs/deep-copy", @@ -9794,37 +9074,37 @@ }, { "name": "nunomaduro/collision", - "version": "v5.11.0", + "version": "v6.2.0", "source": { "type": "git", "url": "https://github.com/nunomaduro/collision.git", - "reference": "8b610eef8582ccdc05d8f2ab23305e2d37049461" + "reference": "c379636dc50e829edb3a8bcb944a01aa1aed8f25" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/8b610eef8582ccdc05d8f2ab23305e2d37049461", - "reference": "8b610eef8582ccdc05d8f2ab23305e2d37049461", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/c379636dc50e829edb3a8bcb944a01aa1aed8f25", + "reference": "c379636dc50e829edb3a8bcb944a01aa1aed8f25", "shasum": "" }, "require": { - "facade/ignition-contracts": "^1.0", - "filp/whoops": "^2.14.3", - "php": "^7.3 || ^8.0", - "symfony/console": "^5.0" + "facade/ignition-contracts": "^1.0.2", + "filp/whoops": "^2.14.5", + "php": "^8.0.0", + "symfony/console": "^6.0.2" }, "require-dev": { - "brianium/paratest": "^6.1", - "fideloper/proxy": "^4.4.1", - "fruitcake/laravel-cors": "^2.0.3", - "laravel/framework": "8.x-dev", - "nunomaduro/larastan": "^0.6.2", - "nunomaduro/mock-final-classes": "^1.0", - "orchestra/testbench": "^6.0", - "phpstan/phpstan": "^0.12.64", - "phpunit/phpunit": "^9.5.0" + "brianium/paratest": "^6.4.1", + "laravel/framework": "^9.7", + "nunomaduro/larastan": "^1.0.2", + "nunomaduro/mock-final-classes": "^1.1.0", + "orchestra/testbench": "^7.3.0", + "phpunit/phpunit": "^9.5.11" }, "type": "library", "extra": { + "branch-alias": { + "dev-develop": "6.x-dev" + }, "laravel": { "providers": [ "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" @@ -9877,105 +9157,7 @@ "type": "patreon" } ], - "time": "2022-01-10T16:22:52+00:00" - }, - { - "name": "nunomaduro/larastan", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/larastan.git", - "reference": "f5ce15319da184a5e461ef12c60489c15a9cf65b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/larastan/zipball/f5ce15319da184a5e461ef12c60489c15a9cf65b", - "reference": "f5ce15319da184a5e461ef12c60489c15a9cf65b", - "shasum": "" - }, - "require": { - "composer/composer": "^1.0 || ^2.0", - "ext-json": "*", - "illuminate/console": "^6.0 || ^7.0 || ^8.0 || ^9.0", - "illuminate/container": "^6.0 || ^7.0 || ^8.0 || ^9.0", - "illuminate/contracts": "^6.0 || ^7.0 || ^8.0 || ^9.0", - "illuminate/database": "^6.0 || ^7.0 || ^8.0 || ^9.0", - "illuminate/http": "^6.0 || ^7.0 || ^8.0 || ^9.0", - "illuminate/pipeline": "^6.0 || ^7.0 || ^8.0 || ^9.0", - "illuminate/support": "^6.0 || ^7.0 || ^8.0 || ^9.0", - "mockery/mockery": "^0.9 || ^1.0", - "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^1.0", - "symfony/process": "^4.3 || ^5.0 || ^6.0" - }, - "require-dev": { - "nikic/php-parser": "^4.13.0", - "orchestra/testbench": "^4.0 || ^5.0 || ^6.0 || ^7.0", - "phpunit/phpunit": "^7.3 || ^8.2 || ^9.3" - }, - "suggest": { - "orchestra/testbench": "Using Larastan for analysing a package needs Testbench" - }, - "type": "phpstan-extension", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - }, - "phpstan": { - "includes": [ - "extension.neon" - ] - } - }, - "autoload": { - "psr-4": { - "NunoMaduro\\Larastan\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nuno Maduro", - "email": "enunomaduro@gmail.com" - } - ], - "description": "Larastan - Discover bugs in your code without running it. A phpstan/phpstan wrapper for Laravel", - "keywords": [ - "PHPStan", - "code analyse", - "code analysis", - "larastan", - "laravel", - "package", - "php", - "static analysis" - ], - "support": { - "issues": "https://github.com/nunomaduro/larastan/issues", - "source": "https://github.com/nunomaduro/larastan/tree/1.0.3" - }, - "funding": [ - { - "url": "https://www.paypal.com/paypalme/enunomaduro", - "type": "custom" - }, - { - "url": "https://github.com/canvural", - "type": "github" - }, - { - "url": "https://github.com/nunomaduro", - "type": "github" - }, - { - "url": "https://www.patreon.com/nunomaduro", - "type": "patreon" - } - ], - "time": "2022-01-20T19:33:48+00:00" + "time": "2022-04-05T15:31:38+00:00" }, { "name": "phar-io/manifest", @@ -10307,77 +9489,13 @@ "fake", "mock", "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" - }, - "time": "2021-12-08T12:19:24+00:00" - }, - { - "name": "phpstan/phpstan", - "version": "1.1.2", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpstan.git", - "reference": "bcea0ae85868a89d5789c75f012c93129f842934" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/bcea0ae85868a89d5789c75f012c93129f842934", - "reference": "bcea0ae85868a89d5789c75f012c93129f842934", - "shasum": "" - }, - "require": { - "php": "^7.1|^8.0" - }, - "conflict": { - "phpstan/phpstan-shim": "*" - }, - "bin": [ - "phpstan", - "phpstan.phar" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "PHPStan - PHP Static Analysis Tool", - "support": { - "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/1.1.2" - }, - "funding": [ - { - "url": "https://github.com/ondrejmirtes", - "type": "github" - }, - { - "url": "https://github.com/phpstan", - "type": "github" - }, - { - "url": "https://www.patreon.com/phpstan", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan", - "type": "tidelift" - } + "stub" ], - "time": "2021-11-09T12:41:09+00:00" + "support": { + "issues": "https://github.com/phpspec/prophecy/issues", + "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" + }, + "time": "2021-12-08T12:19:24+00:00" }, { "name": "phpunit/php-code-coverage", @@ -12330,33 +11448,31 @@ "time": "2020-09-28T06:39:44+00:00" }, { - "name": "seld/jsonlint", - "version": "1.9.0", + "name": "spatie/backtrace", + "version": "1.2.1", "source": { "type": "git", - "url": "https://github.com/Seldaek/jsonlint.git", - "reference": "4211420d25eba80712bff236a98960ef68b866b7" + "url": "https://github.com/spatie/backtrace.git", + "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/4211420d25eba80712bff236a98960ef68b866b7", - "reference": "4211420d25eba80712bff236a98960ef68b866b7", + "url": "https://api.github.com/repos/spatie/backtrace/zipball/4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", + "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", "shasum": "" }, "require": { - "php": "^5.3 || ^7.0 || ^8.0" + "php": "^7.3|^8.0" }, "require-dev": { - "phpstan/phpstan": "^1.5", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^8.5.13" + "ext-json": "*", + "phpunit/phpunit": "^9.3", + "symfony/var-dumper": "^5.1" }, - "bin": [ - "bin/jsonlint" - ], "type": "library", "autoload": { "psr-4": { - "Seld\\JsonLint\\": "src/Seld/JsonLint/" + "Spatie\\Backtrace\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -12365,170 +11481,224 @@ ], "authors": [ { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" + "name": "Freek Van de Herten", + "email": "freek@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" } ], - "description": "JSON Linter", + "description": "A better backtrace", + "homepage": "https://github.com/spatie/backtrace", "keywords": [ - "json", - "linter", - "parser", - "validator" + "Backtrace", + "spatie" ], "support": { - "issues": "https://github.com/Seldaek/jsonlint/issues", - "source": "https://github.com/Seldaek/jsonlint/tree/1.9.0" + "issues": "https://github.com/spatie/backtrace/issues", + "source": "https://github.com/spatie/backtrace/tree/1.2.1" }, "funding": [ { - "url": "https://github.com/Seldaek", + "url": "https://github.com/sponsors/spatie", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/seld/jsonlint", - "type": "tidelift" + "url": "https://spatie.be/open-source/support-us", + "type": "other" } ], - "time": "2022-04-01T13:37:23+00:00" + "time": "2021-11-09T10:57:15+00:00" }, { - "name": "seld/phar-utils", - "version": "1.2.0", + "name": "spatie/flare-client-php", + "version": "1.1.0", "source": { "type": "git", - "url": "https://github.com/Seldaek/phar-utils.git", - "reference": "9f3452c93ff423469c0d56450431562ca423dcee" + "url": "https://github.com/spatie/flare-client-php.git", + "reference": "ceab058852a1278d9f57a7b95f1c348e4956d866" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/9f3452c93ff423469c0d56450431562ca423dcee", - "reference": "9f3452c93ff423469c0d56450431562ca423dcee", + "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/ceab058852a1278d9f57a7b95f1c348e4956d866", + "reference": "ceab058852a1278d9f57a7b95f1c348e4956d866", "shasum": "" }, "require": { - "php": ">=5.3" + "illuminate/pipeline": "^8.0|^9.0", + "php": "^8.0", + "spatie/backtrace": "^1.2", + "symfony/http-foundation": "^5.0|^6.0", + "symfony/mime": "^5.2|^6.0", + "symfony/process": "^5.2|^6.0", + "symfony/var-dumper": "^5.2|^6.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } + "require-dev": { + "dms/phpunit-arraysubset-asserts": "^0.3.0", + "pestphp/pest": "^1.20", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "spatie/phpunit-snapshot-assertions": "^4.0" }, + "type": "library", "autoload": { + "files": [ + "src/helpers.php" + ], "psr-4": { - "Seld\\PharUtils\\": "src/" + "Spatie\\FlareClient\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be" - } - ], - "description": "PHAR file format utilities, for when PHP phars you up", + "description": "Send PHP errors to Flare", + "homepage": "https://github.com/spatie/flare-client-php", "keywords": [ - "phar" + "exception", + "flare", + "reporting", + "spatie" ], "support": { - "issues": "https://github.com/Seldaek/phar-utils/issues", - "source": "https://github.com/Seldaek/phar-utils/tree/1.2.0" + "issues": "https://github.com/spatie/flare-client-php/issues", + "source": "https://github.com/spatie/flare-client-php/tree/1.1.0" }, - "time": "2021-12-10T11:20:11+00:00" + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2022-03-11T13:21:28+00:00" }, { - "name": "squizlabs/php_codesniffer", - "version": "3.6.2", + "name": "spatie/ignition", + "version": "1.2.9", "source": { "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" + "url": "https://github.com/spatie/ignition.git", + "reference": "db25202fab2d5c14613b8914a1bb374998bbf870" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", + "url": "https://api.github.com/repos/spatie/ignition/zipball/db25202fab2d5c14613b8914a1bb374998bbf870", + "reference": "db25202fab2d5c14613b8914a1bb374998bbf870", "shasum": "" }, "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" + "ext-json": "*", + "ext-mbstring": "*", + "monolog/monolog": "^2.0", + "php": "^8.0", + "spatie/flare-client-php": "^1.1", + "symfony/console": "^5.4|^6.0", + "symfony/var-dumper": "^5.4|^6.0" }, "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" + "mockery/mockery": "^1.4", + "pestphp/pest": "^1.20", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "symfony/process": "^5.4|^6.0" }, - "bin": [ - "bin/phpcs", - "bin/phpcbf" - ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" + "autoload": { + "psr-4": { + "Spatie\\Ignition\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Greg Sherwood", - "role": "lead" + "name": "Spatie", + "email": "info@spatie.be", + "role": "Developer" } ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", + "description": "A beautiful error page for PHP applications.", + "homepage": "https://flareapp.io/ignition", "keywords": [ - "phpcs", - "standards" + "error", + "flare", + "laravel", + "page" ], "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" + "docs": "https://flareapp.io/docs/ignition-for-laravel/introduction", + "forum": "https://twitter.com/flareappio", + "issues": "https://github.com/spatie/ignition/issues", + "source": "https://github.com/spatie/ignition" }, - "time": "2021-12-12T21:44:58+00:00" + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2022-04-23T20:37:21+00:00" }, { - "name": "symfony/debug", - "version": "v4.4.41", + "name": "spatie/laravel-ignition", + "version": "1.2.2", "source": { "type": "git", - "url": "https://github.com/symfony/debug.git", - "reference": "6637e62480b60817b9a6984154a533e8e64c6bd5" + "url": "https://github.com/spatie/laravel-ignition.git", + "reference": "924d1ae878874ad0bb49f63b69a9af759a34ee78" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/6637e62480b60817b9a6984154a533e8e64c6bd5", - "reference": "6637e62480b60817b9a6984154a533e8e64c6bd5", + "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/924d1ae878874ad0bb49f63b69a9af759a34ee78", + "reference": "924d1ae878874ad0bb49f63b69a9af759a34ee78", "shasum": "" }, "require": { - "php": ">=7.1.3", - "psr/log": "^1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<3.4" + "ext-curl": "*", + "ext-json": "*", + "ext-mbstring": "*", + "illuminate/support": "^8.77|^9.0", + "monolog/monolog": "^2.3", + "php": "^8.0", + "spatie/flare-client-php": "^1.0.1", + "spatie/ignition": "^1.2.4", + "symfony/console": "^5.0|^6.0", + "symfony/var-dumper": "^5.0|^6.0" }, "require-dev": { - "symfony/http-kernel": "^3.4|^4.0|^5.0" + "filp/whoops": "^2.14", + "livewire/livewire": "^2.8|dev-develop", + "mockery/mockery": "^1.4", + "nunomaduro/larastan": "^1.0", + "orchestra/testbench": "^6.23|^7.0", + "pestphp/pest": "^1.20", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "spatie/laravel-ray": "^1.27" }, "type": "library", + "extra": { + "laravel": { + "providers": [ + "Spatie\\LaravelIgnition\\IgnitionServiceProvider" + ], + "aliases": { + "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" + } + } + }, "autoload": { + "files": [ + "src/helpers.php" + ], "psr-4": { - "Symfony\\Component\\Debug\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Spatie\\LaravelIgnition\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -12536,134 +11706,117 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Spatie", + "email": "info@spatie.be", + "role": "Developer" } ], - "description": "Provides tools to ease debugging PHP code", - "homepage": "https://symfony.com", + "description": "A beautiful error page for Laravel applications.", + "homepage": "https://flareapp.io/ignition", + "keywords": [ + "error", + "flare", + "laravel", + "page" + ], "support": { - "source": "https://github.com/symfony/debug/tree/v4.4.41" + "docs": "https://flareapp.io/docs/ignition-for-laravel/introduction", + "forum": "https://twitter.com/flareappio", + "issues": "https://github.com/spatie/laravel-ignition/issues", + "source": "https://github.com/spatie/laravel-ignition" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/spatie", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2022-04-12T15:19:55+00:00" + "time": "2022-04-14T18:04:51+00:00" }, { - "name": "symfony/filesystem", - "version": "v5.4.7", + "name": "squizlabs/php_codesniffer", + "version": "3.6.2", "source": { "type": "git", - "url": "https://github.com/symfony/filesystem.git", - "reference": "3a4442138d80c9f7b600fb297534ac718b61d37f" + "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", + "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/3a4442138d80c9f7b600fb297534ac718b61d37f", - "reference": "3a4442138d80c9f7b600fb297534ac718b61d37f", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", + "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.8", - "symfony/polyfill-php80": "^1.16" + "ext-simplexml": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": ">=5.4.0" }, + "require-dev": { + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" + }, + "bin": [ + "bin/phpcs", + "bin/phpcbf" + ], "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Filesystem\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Greg Sherwood", + "role": "lead" } ], - "description": "Provides basic utilities for the filesystem", - "homepage": "https://symfony.com", + "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", + "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", + "keywords": [ + "phpcs", + "standards" + ], "support": { - "source": "https://github.com/symfony/filesystem/tree/v5.4.7" + "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", + "source": "https://github.com/squizlabs/PHP_CodeSniffer", + "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-04-01T12:33:59+00:00" + "time": "2021-12-12T21:44:58+00:00" }, { - "name": "symfony/yaml", - "version": "v5.4.3", + "name": "symfony/debug", + "version": "v4.4.41", "source": { "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "e80f87d2c9495966768310fc531b487ce64237a2" + "url": "https://github.com/symfony/debug.git", + "reference": "6637e62480b60817b9a6984154a533e8e64c6bd5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/e80f87d2c9495966768310fc531b487ce64237a2", - "reference": "e80f87d2c9495966768310fc531b487ce64237a2", + "url": "https://api.github.com/repos/symfony/debug/zipball/6637e62480b60817b9a6984154a533e8e64c6bd5", + "reference": "6637e62480b60817b9a6984154a533e8e64c6bd5", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-ctype": "^1.8" + "php": ">=7.1.3", + "psr/log": "^1|^2|^3" }, "conflict": { - "symfony/console": "<5.3" + "symfony/http-kernel": "<3.4" }, "require-dev": { - "symfony/console": "^5.3|^6.0" - }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" + "symfony/http-kernel": "^3.4|^4.0|^5.0" }, - "bin": [ - "Resources/bin/yaml-lint" - ], "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Yaml\\": "" + "Symfony\\Component\\Debug\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -12683,10 +11836,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Loads and dumps YAML files", + "description": "Provides tools to ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v5.4.3" + "source": "https://github.com/symfony/debug/tree/v4.4.41" }, "funding": [ { @@ -12702,7 +11855,7 @@ "type": "tidelift" } ], - "time": "2022-01-26T16:32:32+00:00" + "time": "2022-04-12T15:19:55+00:00" }, { "name": "theseer/tokenizer", @@ -12763,8 +11916,9 @@ "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": "^7.4 | ^8.0 | ^8.1" + "php": "^8.0 | ^8.1", + "ext-pdo": "*" }, "platform-dev": [], - "plugin-api-version": "2.2.0" + "plugin-api-version": "2.3.0" } diff --git a/config/app.php b/config/app.php index 86f8e858..e49d9fad 100644 --- a/config/app.php +++ b/config/app.php @@ -1,5 +1,7 @@ env('APP_DEBUG', false), + 'debug' => (bool)env('APP_DEBUG', false), - 'demo' => env('APP_DEMO', false), + 'demo' => (bool)env('APP_DEMO', false), /* |-------------------------------------------------------------------------- @@ -56,7 +58,7 @@ 'url' => env('APP_URL', 'http://localhost'), - 'asset_url' => env('ASSET_URL', null), + 'asset_url' => env('ASSET_URL'), /* |-------------------------------------------------------------------------- @@ -133,16 +135,7 @@ | */ - 'guest_access' => env('GUEST_ACCESS', false), - - /** - * |-------------------------------------------------------------------------- - * | Setup Completed Flag - * |-------------------------------------------------------------------------- - * @deprecated v1.10.0 Setting is no longer actively used and remains for proper migration to a database setting. - */ - - 'setup_completed' => env('SETUP_COMPLETED', false), + 'guest_access' => (bool)env('GUEST_ACCESS', false), /* |-------------------------------------------------------------------------- @@ -159,6 +152,24 @@ 'cipher' => 'AES-256-CBC', + /* + |-------------------------------------------------------------------------- + | Maintenance Mode Driver + |-------------------------------------------------------------------------- + | + | These configuration options determine the driver used to determine and + | manage Laravel's "maintenance mode" status. The "cache" driver will + | allow maintenance mode to be controlled across multiple machines. + | + | Supported drivers: "file", "cache" + | + */ + + 'maintenance' => [ + 'driver' => 'file', + // 'store' => 'redis', + ], + /* |-------------------------------------------------------------------------- | Autoloaded Service Providers @@ -225,47 +236,8 @@ | */ - 'aliases' => [ - - '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, - 'Broadcast' => Illuminate\Support\Facades\Broadcast::class, - 'Bus' => Illuminate\Support\Facades\Bus::class, - 'Cache' => Illuminate\Support\Facades\Cache::class, - 'Config' => Illuminate\Support\Facades\Config::class, - 'Cookie' => Illuminate\Support\Facades\Cookie::class, - 'Crypt' => Illuminate\Support\Facades\Crypt::class, - 'DB' => Illuminate\Support\Facades\DB::class, - 'Eloquent' => Illuminate\Database\Eloquent\Model::class, - 'Event' => Illuminate\Support\Facades\Event::class, - 'File' => Illuminate\Support\Facades\File::class, - 'Gate' => Illuminate\Support\Facades\Gate::class, - 'Hash' => Illuminate\Support\Facades\Hash::class, - 'Lang' => Illuminate\Support\Facades\Lang::class, - 'Log' => Illuminate\Support\Facades\Log::class, - 'Mail' => Illuminate\Support\Facades\Mail::class, - 'Notification' => Illuminate\Support\Facades\Notification::class, - 'Password' => Illuminate\Support\Facades\Password::class, - 'Queue' => Illuminate\Support\Facades\Queue::class, - 'Redirect' => Illuminate\Support\Facades\Redirect::class, - 'Redis' => Illuminate\Support\Facades\Redis::class, - 'Request' => Illuminate\Support\Facades\Request::class, - 'Response' => Illuminate\Support\Facades\Response::class, - 'Route' => Illuminate\Support\Facades\Route::class, - '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, - - // App aliases + 'aliases' => Facade::defaultAliases()->merge([ 'Link' => \App\Models\Link::class, - - ], + ])->toArray(), ]; diff --git a/config/auth.php b/config/auth.php index 86a0ea13..963c5ee7 100644 --- a/config/auth.php +++ b/config/auth.php @@ -31,7 +31,7 @@ | users are actually retrieved out of your database or other storage | mechanisms used by this application to persist your user's data. | - | Supported: "session", "token" + | Supported: "session" | */ @@ -86,7 +86,7 @@ | than one user table or model in the application and you want to have | separate password reset settings based on the specific user types. | - | The expire time is the number of minutes that the reset token should be + | The expire time is the number of minutes that each reset token will be | considered valid. This security feature keeps tokens short-lived so | they have less time to be guessed. You may change this as needed. | @@ -97,7 +97,21 @@ 'provider' => 'users', 'table' => 'password_resets', 'expire' => 60, + 'throttle' => 60, ], ], + /* + |-------------------------------------------------------------------------- + | Password Confirmation Timeout + |-------------------------------------------------------------------------- + | + | Here you may define the amount of seconds before a password confirmation + | times out and the user is prompted to re-enter their password via the + | confirmation screen. By default, the timeout lasts for three hours. + | + */ + + 'password_timeout' => 10800, + ]; diff --git a/config/backup.php b/config/backup.php index 06757573..2ba1b8eb 100644 --- a/config/backup.php +++ b/config/backup.php @@ -149,17 +149,17 @@ * For Slack you need to install laravel/slack-notification-channel. * * You can also use your own notification classes, just make sure the class is named after one of - * the `Spatie\Backup\Events` classes. + * the `Spatie\Backup\Notifications\Notifications` classes. */ 'notifications' => [ 'notifications' => [ - \Spatie\Backup\Notifications\Notifications\BackupHasFailed::class => ['mail'], - \Spatie\Backup\Notifications\Notifications\UnhealthyBackupWasFound::class => ['mail'], - \Spatie\Backup\Notifications\Notifications\CleanupHasFailed::class => ['mail'], - \Spatie\Backup\Notifications\Notifications\BackupWasSuccessful::class => ['mail'], - \Spatie\Backup\Notifications\Notifications\HealthyBackupWasFound::class => ['mail'], - \Spatie\Backup\Notifications\Notifications\CleanupWasSuccessful::class => ['mail'], + \Spatie\Backup\Notifications\Notifications\BackupHasFailedNotification::class => ['mail'], + \Spatie\Backup\Notifications\Notifications\UnhealthyBackupWasFoundNotification::class => ['mail'], + \Spatie\Backup\Notifications\Notifications\CleanupHasFailedNotification::class => ['mail'], + \Spatie\Backup\Notifications\Notifications\BackupWasSuccessfulNotification::class => ['mail'], + \Spatie\Backup\Notifications\Notifications\HealthyBackupWasFoundNotification::class => ['mail'], + \Spatie\Backup\Notifications\Notifications\CleanupWasSuccessfulNotification::class => ['mail'], ], /* @@ -190,6 +190,14 @@ 'icon' => null, ], + + 'discord' => [ + 'webhook_url' => '', + + 'username' => null, + + 'avatar_url' => null, + ], ], /* diff --git a/config/broadcasting.php b/config/broadcasting.php index 3bba1103..67fcbbd6 100644 --- a/config/broadcasting.php +++ b/config/broadcasting.php @@ -11,7 +11,7 @@ | framework when an event needs to be broadcast. You may set this to | any of the connections defined in the "connections" array below. | - | Supported: "pusher", "redis", "log", "null" + | Supported: "pusher", "ably", "redis", "log", "null" | */ @@ -39,6 +39,14 @@ 'cluster' => env('PUSHER_APP_CLUSTER'), 'useTLS' => true, ], + 'client_options' => [ + // Guzzle client options: https://docs.guzzlephp.org/en/stable/request-options.html + ], + ], + + 'ably' => [ + 'driver' => 'ably', + 'key' => env('ABLY_KEY'), ], 'redis' => [ diff --git a/config/cache.php b/config/cache.php index b5b09405..1bc235e5 100644 --- a/config/cache.php +++ b/config/cache.php @@ -13,8 +13,6 @@ | using this caching library. This connection is used when another is | not explicitly specified when executing a given caching function. | - | Supported: "apc", "array", "database", "file", "memcached", "redis" - | */ 'default' => env('CACHE_DRIVER', 'file'), @@ -28,6 +26,9 @@ | well as their drivers. You may even define multiple stores for the | same cache driver to group types of items stored in your caches. | + | Supported drivers: "apc", "array", "database", "file", + | "memcached", "redis", "dynamodb", "octane", "null" + | */ 'stores' => [ @@ -38,12 +39,14 @@ 'array' => [ 'driver' => 'array', + 'serialize' => false, ], 'database' => [ 'driver' => 'database', 'table' => 'cache', 'connection' => null, + 'lock_connection' => null, ], 'file' => [ @@ -59,7 +62,7 @@ env('MEMCACHED_PASSWORD'), ], 'options' => [ - // Memcached::OPT_CONNECT_TIMEOUT => 2000, + // Memcached::OPT_CONNECT_TIMEOUT => 2000, ], 'servers' => [ [ @@ -72,7 +75,17 @@ 'redis' => [ 'driver' => 'redis', - 'connection' => 'default', + 'connection' => 'cache', + 'lock_connection' => 'default', + ], + + 'dynamodb' => [ + 'driver' => 'dynamodb', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + 'table' => env('DYNAMODB_CACHE_TABLE', 'cache'), + 'endpoint' => env('DYNAMODB_ENDPOINT'), ], 'redis-socket' => [ @@ -80,6 +93,10 @@ 'connection' => 'redis-socket', ], + 'octane' => [ + 'driver' => 'octane', + ], + ], /* @@ -87,12 +104,12 @@ | Cache Key Prefix |-------------------------------------------------------------------------- | - | When utilizing a RAM based store such as APC or Memcached, there might - | be other applications utilizing the same cache. So, we'll specify a - | value to get prefixed to all our keys so we can avoid collisions. + | When utilizing the APC, database, memcached, Redis, or DynamoDB cache + | stores there might be other applications using the same cache. For + | that reason, you may prefix every cache key to avoid collisions. | */ - 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'), + 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache_'), ]; diff --git a/config/cors.php b/config/cors.php index 136a58d4..8a39e6da 100644 --- a/config/cors.php +++ b/config/cors.php @@ -4,59 +4,31 @@ /* |-------------------------------------------------------------------------- - | Laravel CORS Options + | Cross-Origin Resource Sharing (CORS) Configuration |-------------------------------------------------------------------------- | - | The allowed_methods and allowed_headers options are case-insensitive. + | Here you may configure your settings for cross-origin resource sharing + | or "CORS". This determines what cross-origin operations may execute + | in web browsers. You are free to adjust these settings as needed. | - | You don't need to provide both allowed_origins and allowed_origins_patterns. - | If one of the strings passed matches, it is considered a valid origin. - | - | If ['*'] is provided to allowed_methods, allowed_origins or allowed_headers - | all methods / origins / headers are allowed. + | To learn more: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS | */ - /* - * You can enable CORS for 1 or multiple paths. - * Example: ['api/*'] - */ - 'paths' => [ - 'api/*' - ], + 'paths' => ['api/*', 'sanctum/csrf-cookie'], - /* - * Matches the request method. `['*']` allows all methods. - */ 'allowed_methods' => ['*'], - /* - * Matches the request origin. `['*']` allows all origins. Wildcards can be used, eg `*.mydomain.com` - */ 'allowed_origins' => ['*'], - /* - * Patterns that can be used with `preg_match` to match the origin. - */ 'allowed_origins_patterns' => [], - /* - * Sets the Access-Control-Allow-Headers response header. `['*']` allows all headers. - */ 'allowed_headers' => ['*'], - /* - * Sets the Access-Control-Expose-Headers response header with these headers. - */ 'exposed_headers' => [], - /* - * Sets the Access-Control-Max-Age response header when > 0. - */ 'max_age' => 0, - /* - * Sets the Access-Control-Allow-Credentials header. - */ 'supports_credentials' => false, + ]; diff --git a/config/database.php b/config/database.php index 584562df..70b9dc02 100644 --- a/config/database.php +++ b/config/database.php @@ -74,9 +74,10 @@ 'charset' => 'utf8', 'prefix' => '', 'prefix_indexes' => true, - 'schema' => 'public', + 'search_path' => 'public', 'sslmode' => 'prefer', ], + 'sqlsrv' => [ 'driver' => 'sqlsrv', 'url' => env('DATABASE_URL'), @@ -88,6 +89,8 @@ 'charset' => 'utf8', 'prefix' => '', 'prefix_indexes' => true, + // 'encrypt' => env('DB_ENCRYPT', 'yes'), + // 'trust_server_certificate' => env('DB_TRUST_SERVER_CERTIFICATE', 'false'), ], 'testing' => [ @@ -116,32 +119,35 @@ |-------------------------------------------------------------------------- | | Redis is an open source, fast, and advanced key-value store that also - | provides a richer set of commands than a typical key-value systems + | provides a richer body of commands than a typical key-value system | such as APC or Memcached. Laravel makes it easy to dig right in. | */ 'redis' => [ - 'client' => 'predis', + 'client' => env('REDIS_CLIENT', 'phpredis'), 'options' => [ 'cluster' => env('REDIS_CLUSTER', 'redis'), - 'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_') . '_database_'), + 'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'), ], + 'default' => [ 'url' => env('REDIS_URL'), 'host' => env('REDIS_HOST', '127.0.0.1'), - 'password' => env('REDIS_PASSWORD', null), - 'port' => env('REDIS_PORT', 6379), - 'database' => env('REDIS_DB', 0), + 'username' => env('REDIS_USERNAME'), + 'password' => env('REDIS_PASSWORD'), + 'port' => env('REDIS_PORT', '6379'), + 'database' => env('REDIS_DB', '0'), ], + 'cache' => [ 'url' => env('REDIS_URL'), 'host' => env('REDIS_HOST', '127.0.0.1'), - 'password' => env('REDIS_PASSWORD', null), - 'port' => env('REDIS_PORT', 6379), - 'database' => env('REDIS_CACHE_DB', 1), + 'password' => env('REDIS_PASSWORD'), + 'port' => env('REDIS_PORT', '6379'), + 'database' => env('REDIS_CACHE_DB', '1'), ], 'redis-socket' => [ @@ -149,9 +155,9 @@ 'path' => env('REDIS_PATH'), 'url' => env('REDIS_URL'), 'host' => env('REDIS_HOST', '127.0.0.1'), - 'password' => env('REDIS_PASSWORD', null), - 'port' => env('REDIS_PORT', 6379), - 'database' => env('REDIS_DB', 0), + 'password' => env('REDIS_PASSWORD'), + 'port' => env('REDIS_PORT', '6379'), + 'database' => env('REDIS_DB', '0'), ], ], diff --git a/config/enlightn.php b/config/enlightn.php deleted file mode 100644 index 558120e7..00000000 --- a/config/enlightn.php +++ /dev/null @@ -1,151 +0,0 @@ - ['*'], - - // If you wish to skip running some analyzers, list the classes in the array below. - 'exclude_analyzers' => [ - Enlightn\Enlightn\Analyzers\Performance\QueueDriverAnalyzer::class, - Enlightn\Enlightn\Analyzers\Performance\CacheDriverAnalyzer::class, - Enlightn\Enlightn\Analyzers\Performance\UnusedGlobalMiddlewareAnalyzer::class, - Enlightn\Enlightn\Analyzers\Security\StableDependencyAnalyzer::class, - Enlightn\Enlightn\Analyzers\Security\FrontendVulnerableDependencyAnalyzer::class, - ], - - /* - |-------------------------------------------------------------------------- - | Enlightn Analyzer Paths - |-------------------------------------------------------------------------- - | - | The following array lists the "analyzer" paths that will be searched - | recursively to find analyzer classes. This option will only be used - | if the analyzers option above is set to the asterisk wildcard. The - | key is the base namespace to resolve the class name. - | - */ - 'analyzer_paths' => [ - 'Enlightn\\Enlightn\\Analyzers' => base_path('vendor/enlightn/enlightn/src/Analyzers'), - 'Enlightn\\EnlightnPro\\Analyzers' => base_path('vendor/enlightn/enlightnpro/src/Analyzers'), - ], - - /* - |-------------------------------------------------------------------------- - | Enlightn Base Path - |-------------------------------------------------------------------------- - | - | The following array lists the directories that will be scanned for - | application specific code. By default, we are scanning your app - | folder, migrations folder and the seeders folder. - | - */ - 'base_path' => [ - app_path(), - database_path('migrations'), - database_path('seeders'), - ], - - /* - |-------------------------------------------------------------------------- - | Environment Specific Analyzers - |-------------------------------------------------------------------------- - | - | There are some analyzers that are meant to be run for specific environments. - | The options below specify whether we should skip environment specific - | analyzers if the environment does not match. - | - */ - 'skip_env_specific' => env('ENLIGHTN_SKIP_ENVIRONMENT_SPECIFIC', false), - - /* - |-------------------------------------------------------------------------- - | Guest URL - |-------------------------------------------------------------------------- - | - | Specify any guest url or path (preferably your app's login url) here. This - | would be used by Enlightn to inspect your application HTTP headers. - | Example: '/login'. - | - */ - 'guest_url' => null, - - /* - |-------------------------------------------------------------------------- - | Analyzer Configurations - |-------------------------------------------------------------------------- - | - | The following configuration options pertain to individual analyzers. - | These are recommended options but feel free to customize them based - | on your application needs. - | - */ - 'license_whitelist' => [ - 'Apache-2.0', - 'Apache2', - 'BSD-2-Clause', - 'BSD-3-Clause', - 'LGPL-2.1-only', - 'LGPL-2.1', - 'LGPL-2.1-or-later', - 'LGPL-3.0', - 'LGPL-3.0-only', - 'LGPL-3.0-or-later', - 'MIT', - 'ISC', - ], - - // List your commercial packages (licensed by you) below, so that they are not - // flagged by the License Analyzer. - 'commercial_packages' => [ - 'enlightn/enlightnpro', - ], - - 'allowed_permissions' => [ - base_path() => '775', - app_path() => '775', - resource_path() => '775', - storage_path() => '775', - public_path() => '775', - config_path() => '775', - database_path() => '775', - base_path('routes') => '775', - app()->bootstrapPath() => '775', - app()->bootstrapPath('cache') => '775', - app()->bootstrapPath('app.php') => '664', - base_path('artisan') => '775', - public_path('index.php') => '664', - public_path('server.php') => '664', - ], - - 'writable_directories' => [ - storage_path(), - app()->bootstrapPath('cache'), - ], - - /* - |-------------------------------------------------------------------------- - | Credentials - |-------------------------------------------------------------------------- - | - | The following credentials are used to share your Enlightn report with - | the Enlightn Github Bot. This allows the bot to compile the report - | and add review comments on your pull requests. - | - */ - 'credentials' => [ - 'username' => env('ENLIGHTN_USERNAME'), - 'api_token' => env('ENLIGHTN_API_TOKEN'), - ], - 'github_repo' => env('ENLIGHTN_GITHUB_REPO', 'Kovah/LinkAce'), - -]; diff --git a/config/filesystems.php b/config/filesystems.php index 158ec6df..bf237a83 100644 --- a/config/filesystems.php +++ b/config/filesystems.php @@ -13,20 +13,7 @@ | */ - 'default' => env('FILESYSTEM_DRIVER', 'local'), - - /* - |-------------------------------------------------------------------------- - | Default Cloud Filesystem Disk - |-------------------------------------------------------------------------- - | - | Many applications store files both locally and in the cloud. For this - | reason, you may specify a default "cloud" driver here. This driver - | will be bound as the Cloud disk implementation in the container. - | - */ - - 'cloud' => env('FILESYSTEM_CLOUD', 's3'), + 'default' => env('FILESYSTEM_DISK', 'local'), /* |-------------------------------------------------------------------------- @@ -35,7 +22,7 @@ | | Here you may configure as many filesystem "disks" as you wish, and you | may even configure multiple disks of the same driver. Defaults have - | been setup for each driver as an example of the required options. + | been set up for each driver as an example of the required values. | | Supported Drivers: "local", "ftp", "sftp", "s3" | @@ -51,11 +38,13 @@ 'local' => [ 'driver' => 'local', 'root' => storage_path('app'), + 'throw' => false, ], 'local_backups' => [ 'driver' => 'local', 'root' => storage_path('app/backups'), + 'throw' => false, ], 'public' => [ @@ -63,6 +52,7 @@ 'root' => storage_path('app/public'), 'url' => env('APP_URL').'/storage', 'visibility' => 'public', + 'throw' => false, ], 's3' => [ @@ -73,8 +63,25 @@ 'bucket' => env('AWS_BUCKET'), 'url' => env('AWS_URL'), 'endpoint' => env('AWS_ENDPOINT'), + 'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false), + 'throw' => false, ], ], + /* + |-------------------------------------------------------------------------- + | Symbolic Links + |-------------------------------------------------------------------------- + | + | Here you may configure the symbolic links that will be created when the + | `storage:link` Artisan command is executed. The array keys should be + | the locations of the links and the values should be their targets. + | + */ + + 'links' => [ + public_path('storage') => storage_path('app/public'), + ], + ]; diff --git a/config/hashing.php b/config/hashing.php index 84257708..bcd3be4c 100644 --- a/config/hashing.php +++ b/config/hashing.php @@ -44,9 +44,9 @@ */ 'argon' => [ - 'memory' => 1024, - 'threads' => 2, - 'time' => 2, + 'memory' => 65536, + 'threads' => 1, + 'time' => 4, ], ]; diff --git a/config/logging.php b/config/logging.php index fc254c3b..26b96bea 100644 --- a/config/logging.php +++ b/config/logging.php @@ -1,5 +1,6 @@ env('LOG_CHANNEL', 'stack'), + /* + |-------------------------------------------------------------------------- + | Deprecations Log Channel + |-------------------------------------------------------------------------- + | + | This option controls the log channel that should be used to log warnings + | regarding deprecated PHP and library features. This allows you to get + | your application ready for upcoming major versions of dependencies. + | + */ + + 'deprecations' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), + /* |-------------------------------------------------------------------------- | Log Channels @@ -43,14 +57,14 @@ 'single' => [ 'driver' => 'single', 'path' => storage_path('logs/laravel.log'), - 'level' => 'debug', + 'level' => env('LOG_LEVEL', 'debug'), ], 'daily' => [ 'driver' => 'daily', 'path' => storage_path('logs/laravel.log'), - 'level' => 'debug', - 'days' => 7, + 'level' => env('LOG_LEVEL', 'debug'), + 'days' => 14, ], 'slack' => [ @@ -58,21 +72,23 @@ 'url' => env('LOG_SLACK_WEBHOOK_URL'), 'username' => 'Laravel Log', 'emoji' => ':boom:', - 'level' => 'critical', + 'level' => env('LOG_LEVEL', 'critical'), ], 'papertrail' => [ 'driver' => 'monolog', - 'level' => 'debug', - 'handler' => SyslogUdpHandler::class, + 'level' => env('LOG_LEVEL', 'debug'), + 'handler' => env('LOG_PAPERTRAIL_HANDLER', SyslogUdpHandler::class), 'handler_with' => [ 'host' => env('PAPERTRAIL_URL'), 'port' => env('PAPERTRAIL_PORT'), + 'connectionString' => 'tls://'.env('PAPERTRAIL_URL').':'.env('PAPERTRAIL_PORT'), ], ], 'stderr' => [ 'driver' => 'monolog', + 'level' => env('LOG_LEVEL', 'debug'), 'handler' => StreamHandler::class, 'formatter' => env('LOG_STDERR_FORMATTER'), 'with' => [ @@ -82,12 +98,21 @@ 'syslog' => [ 'driver' => 'syslog', - 'level' => 'debug', + 'level' => env('LOG_LEVEL', 'debug'), ], 'errorlog' => [ 'driver' => 'errorlog', - 'level' => 'debug', + 'level' => env('LOG_LEVEL', 'debug'), + ], + + 'null' => [ + 'driver' => 'monolog', + 'handler' => NullHandler::class, + ], + + 'emergency' => [ + 'path' => storage_path('logs/laravel.log'), ], ], diff --git a/config/mail.php b/config/mail.php index 6707c712..2b601224 100644 --- a/config/mail.php +++ b/config/mail.php @@ -4,45 +4,80 @@ /* |-------------------------------------------------------------------------- - | Mail Driver + | Default Mailer |-------------------------------------------------------------------------- | - | Laravel supports both SMTP and PHP's "mail" function as drivers for the - | sending of e-mail. You may specify which one you're using throughout - | your application here. By default, Laravel is setup for SMTP mail. - | - | Supported: "smtp", "sendmail", "mailgun", "ses", - | "postmark", "log", "array" + | This option controls the default mailer that is used to send any email + | messages sent by your application. Alternative mailers may be setup + | and used as needed; however, this mailer will be used by default. | */ - 'driver' => env('MAIL_DRIVER', 'smtp'), + 'default' => env('MAIL_MAILER', 'smtp'), /* |-------------------------------------------------------------------------- - | SMTP Host Address + | Mailer Configurations |-------------------------------------------------------------------------- | - | Here you may provide the host address of the SMTP server used by your - | applications. A default option is provided that is compatible with - | the Mailgun mail service which will provide reliable deliveries. + | Here you may configure all of the mailers used by your application plus + | their respective settings. Several examples have been configured for + | you and you are free to add your own as your application requires. | - */ - - 'host' => env('MAIL_HOST', 'smtp.mailgun.org'), - - /* - |-------------------------------------------------------------------------- - | SMTP Host Port - |-------------------------------------------------------------------------- + | Laravel supports a variety of mail "transport" drivers to be used while + | sending an e-mail. You will specify which one you are using for your + | mailers below. You are free to add additional mailers as required. | - | This is the SMTP port used by your application to deliver e-mails to - | users of the application. Like the host we have set this value to - | stay compatible with the Mailgun e-mail application by default. + | Supported: "smtp", "sendmail", "mailgun", "ses", + | "postmark", "log", "array", "failover" | */ - 'port' => env('MAIL_PORT', 587), + 'mailers' => [ + 'smtp' => [ + 'transport' => 'smtp', + 'host' => env('MAIL_HOST', 'smtp.mailgun.org'), + 'port' => env('MAIL_PORT', 587), + 'encryption' => env('MAIL_ENCRYPTION', 'tls'), + 'username' => env('MAIL_USERNAME'), + 'password' => env('MAIL_PASSWORD'), + 'timeout' => null, + ], + + 'ses' => [ + 'transport' => 'ses', + ], + + 'mailgun' => [ + 'transport' => 'mailgun', + ], + + 'postmark' => [ + 'transport' => 'postmark', + ], + + 'sendmail' => [ + 'transport' => 'sendmail', + 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -bs -i'), + ], + + 'log' => [ + 'transport' => 'log', + 'channel' => env('MAIL_LOG_CHANNEL'), + ], + + 'array' => [ + 'transport' => 'array', + ], + + 'failover' => [ + 'transport' => 'failover', + 'mailers' => [ + 'smtp', + 'log', + ], + ], + ], /* |-------------------------------------------------------------------------- @@ -60,47 +95,6 @@ 'name' => env('MAIL_FROM_NAME', 'LinkAce'), ], - /* - |-------------------------------------------------------------------------- - | E-Mail Encryption Protocol - |-------------------------------------------------------------------------- - | - | Here you may specify the encryption protocol that should be used when - | the application send e-mail messages. A sensible default using the - | transport layer security protocol should provide great security. - | - */ - - 'encryption' => env('MAIL_ENCRYPTION', 'tls'), - - /* - |-------------------------------------------------------------------------- - | SMTP Server Username - |-------------------------------------------------------------------------- - | - | If your SMTP server requires a username for authentication, you should - | set it here. This will get used to authenticate with your server on - | connection. You may also set the "password" value below this one. - | - */ - - 'username' => env('MAIL_USERNAME'), - - 'password' => env('MAIL_PASSWORD'), - - /* - |-------------------------------------------------------------------------- - | Sendmail System Path - |-------------------------------------------------------------------------- - | - | When using the "sendmail" driver to send e-mails, we will need to know - | the path to where Sendmail lives on this server. A default path has - | been provided here, which will work well on most of your systems. - | - */ - - 'sendmail' => '/usr/sbin/sendmail -bs', - /* |-------------------------------------------------------------------------- | Markdown Mail Settings @@ -120,17 +114,4 @@ ], ], - /* - |-------------------------------------------------------------------------- - | 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/config/queue.php b/config/queue.php index 3a30d6c6..25ea5a81 100644 --- a/config/queue.php +++ b/config/queue.php @@ -39,6 +39,7 @@ 'table' => 'jobs', 'queue' => 'default', 'retry_after' => 90, + 'after_commit' => false, ], 'beanstalkd' => [ @@ -47,6 +48,7 @@ 'queue' => 'default', 'retry_after' => 90, 'block_for' => 0, + 'after_commit' => false, ], 'sqs' => [ @@ -54,8 +56,10 @@ 'key' => env('AWS_ACCESS_KEY_ID'), 'secret' => env('AWS_SECRET_ACCESS_KEY'), 'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'), - 'queue' => env('SQS_QUEUE', 'your-queue-name'), + 'queue' => env('SQS_QUEUE', 'default'), + 'suffix' => env('SQS_SUFFIX'), 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + 'after_commit' => false, ], 'redis' => [ @@ -64,6 +68,7 @@ 'queue' => env('REDIS_QUEUE', 'default'), 'retry_after' => 90, 'block_for' => null, + 'after_commit' => false, ], ], @@ -80,7 +85,7 @@ */ 'failed' => [ - 'driver' => env('QUEUE_FAILED_DRIVER', 'database'), + 'driver' => env('QUEUE_FAILED_DRIVER', 'database-uuids'), 'database' => env('DB_CONNECTION', 'mysql'), 'table' => 'failed_jobs', ], diff --git a/config/sanctum.php b/config/sanctum.php new file mode 100644 index 00000000..529cfdc9 --- /dev/null +++ b/config/sanctum.php @@ -0,0 +1,67 @@ + explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( + '%s%s', + 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', + Sanctum::currentApplicationUrlWithPort() + ))), + + /* + |-------------------------------------------------------------------------- + | Sanctum Guards + |-------------------------------------------------------------------------- + | + | This array contains the authentication guards that will be checked when + | Sanctum is trying to authenticate a request. If none of these guards + | are able to authenticate the request, Sanctum will use the bearer + | token that's present on an incoming request for authentication. + | + */ + + 'guard' => ['web'], + + /* + |-------------------------------------------------------------------------- + | Expiration Minutes + |-------------------------------------------------------------------------- + | + | This value controls the number of minutes until an issued token will be + | considered expired. If this value is null, personal access tokens do + | not expire. This won't tweak the lifetime of first-party sessions. + | + */ + + 'expiration' => null, + + /* + |-------------------------------------------------------------------------- + | Sanctum Middleware + |-------------------------------------------------------------------------- + | + | When authenticating your first-party SPA with Sanctum you may need to + | customize some of the middleware Sanctum uses while processing the + | request. You may change the middleware listed below as required. + | + */ + + 'middleware' => [ + 'verify_csrf_token' => App\Http\Middleware\VerifyCsrfToken::class, + 'encrypt_cookies' => App\Http\Middleware\EncryptCookies::class, + ], + +]; diff --git a/config/services.php b/config/services.php index 2a1d616c..0ace530e 100644 --- a/config/services.php +++ b/config/services.php @@ -18,6 +18,7 @@ 'domain' => env('MAILGUN_DOMAIN'), 'secret' => env('MAILGUN_SECRET'), 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), + 'scheme' => 'https', ], 'postmark' => [ diff --git a/config/session.php b/config/session.php index 0029bff3..e5af15c8 100644 --- a/config/session.php +++ b/config/session.php @@ -72,7 +72,7 @@ | */ - 'connection' => env('SESSION_CONNECTION', null), + 'connection' => env('SESSION_CONNECTION'), /* |-------------------------------------------------------------------------- @@ -92,13 +92,15 @@ | Session Cache Store |-------------------------------------------------------------------------- | - | When using the "apc", "memcached", or "dynamodb" session drivers you may + | While using one of the framework's cache driven session backends you may | list a cache store that should be used for these sessions. This value | must match with one of the application's configured cache "stores". | + | Affects: "apc", "dynamodb", "memcached", "redis" + | */ - 'store' => env('SESSION_STORE', null), + 'store' => env('SESSION_STORE'), /* |-------------------------------------------------------------------------- @@ -153,7 +155,7 @@ | */ - 'domain' => env('SESSION_DOMAIN', null), + 'domain' => env('SESSION_DOMAIN'), /* |-------------------------------------------------------------------------- @@ -162,11 +164,11 @@ | | By setting this option to true, session cookies will only be sent back | to the server if the browser has a HTTPS connection. This will keep - | the cookie from being sent to you if it can not be done securely. + | the cookie from being sent to you when it can't be done securely. | */ - 'secure' => env('SESSION_SECURE_COOKIE', null), + 'secure' => env('SESSION_SECURE_COOKIE'), /* |-------------------------------------------------------------------------- @@ -188,9 +190,9 @@ | | This option determines how your cookies behave when cross-site requests | take place, and can be used to mitigate CSRF attacks. By default, we - | do not enable this as other CSRF protection services are in place. + | will set this value to "lax" since this is a secure default value. | - | Supported: "lax", "strict" + | Supported: "lax", "strict", "none", null | */ diff --git a/resources/lang/ca_ES/auth.php b/lang/ca_ES/auth.php similarity index 100% rename from resources/lang/ca_ES/auth.php rename to lang/ca_ES/auth.php diff --git a/resources/lang/ca_ES/export.php b/lang/ca_ES/export.php similarity index 100% rename from resources/lang/ca_ES/export.php rename to lang/ca_ES/export.php diff --git a/resources/lang/ca_ES/import.php b/lang/ca_ES/import.php similarity index 100% rename from resources/lang/ca_ES/import.php rename to lang/ca_ES/import.php diff --git a/resources/lang/ca_ES/link.php b/lang/ca_ES/link.php similarity index 100% rename from resources/lang/ca_ES/link.php rename to lang/ca_ES/link.php diff --git a/resources/lang/ca_ES/linkace.php b/lang/ca_ES/linkace.php similarity index 100% rename from resources/lang/ca_ES/linkace.php rename to lang/ca_ES/linkace.php diff --git a/resources/lang/ca_ES/list.php b/lang/ca_ES/list.php similarity index 100% rename from resources/lang/ca_ES/list.php rename to lang/ca_ES/list.php diff --git a/resources/lang/ca_ES/note.php b/lang/ca_ES/note.php similarity index 100% rename from resources/lang/ca_ES/note.php rename to lang/ca_ES/note.php diff --git a/resources/lang/ca_ES/pagination.php b/lang/ca_ES/pagination.php similarity index 100% rename from resources/lang/ca_ES/pagination.php rename to lang/ca_ES/pagination.php diff --git a/resources/lang/ca_ES/passwords.php b/lang/ca_ES/passwords.php similarity index 100% rename from resources/lang/ca_ES/passwords.php rename to lang/ca_ES/passwords.php diff --git a/resources/lang/ca_ES/placeholder.php b/lang/ca_ES/placeholder.php similarity index 100% rename from resources/lang/ca_ES/placeholder.php rename to lang/ca_ES/placeholder.php diff --git a/resources/lang/ca_ES/search.php b/lang/ca_ES/search.php similarity index 100% rename from resources/lang/ca_ES/search.php rename to lang/ca_ES/search.php diff --git a/resources/lang/ca_ES/settings.php b/lang/ca_ES/settings.php similarity index 100% rename from resources/lang/ca_ES/settings.php rename to lang/ca_ES/settings.php diff --git a/resources/lang/ca_ES/setup.php b/lang/ca_ES/setup.php similarity index 100% rename from resources/lang/ca_ES/setup.php rename to lang/ca_ES/setup.php diff --git a/resources/lang/ca_ES/sharing.php b/lang/ca_ES/sharing.php similarity index 100% rename from resources/lang/ca_ES/sharing.php rename to lang/ca_ES/sharing.php diff --git a/resources/lang/ca_ES/stats.php b/lang/ca_ES/stats.php similarity index 100% rename from resources/lang/ca_ES/stats.php rename to lang/ca_ES/stats.php diff --git a/resources/lang/ca_ES/tag.php b/lang/ca_ES/tag.php similarity index 100% rename from resources/lang/ca_ES/tag.php rename to lang/ca_ES/tag.php diff --git a/resources/lang/ca_ES/trash.php b/lang/ca_ES/trash.php similarity index 100% rename from resources/lang/ca_ES/trash.php rename to lang/ca_ES/trash.php diff --git a/resources/lang/ca_ES/user.php b/lang/ca_ES/user.php similarity index 100% rename from resources/lang/ca_ES/user.php rename to lang/ca_ES/user.php diff --git a/resources/lang/ca_ES/validation.php b/lang/ca_ES/validation.php similarity index 100% rename from resources/lang/ca_ES/validation.php rename to lang/ca_ES/validation.php diff --git a/resources/lang/de_DE/auth.php b/lang/de_DE/auth.php similarity index 100% rename from resources/lang/de_DE/auth.php rename to lang/de_DE/auth.php diff --git a/resources/lang/de_DE/export.php b/lang/de_DE/export.php similarity index 100% rename from resources/lang/de_DE/export.php rename to lang/de_DE/export.php diff --git a/resources/lang/de_DE/import.php b/lang/de_DE/import.php similarity index 100% rename from resources/lang/de_DE/import.php rename to lang/de_DE/import.php diff --git a/resources/lang/de_DE/link.php b/lang/de_DE/link.php similarity index 100% rename from resources/lang/de_DE/link.php rename to lang/de_DE/link.php diff --git a/resources/lang/de_DE/linkace.php b/lang/de_DE/linkace.php similarity index 100% rename from resources/lang/de_DE/linkace.php rename to lang/de_DE/linkace.php diff --git a/resources/lang/de_DE/list.php b/lang/de_DE/list.php similarity index 100% rename from resources/lang/de_DE/list.php rename to lang/de_DE/list.php diff --git a/resources/lang/de_DE/note.php b/lang/de_DE/note.php similarity index 100% rename from resources/lang/de_DE/note.php rename to lang/de_DE/note.php diff --git a/resources/lang/de_DE/pagination.php b/lang/de_DE/pagination.php similarity index 100% rename from resources/lang/de_DE/pagination.php rename to lang/de_DE/pagination.php diff --git a/resources/lang/de_DE/passwords.php b/lang/de_DE/passwords.php similarity index 100% rename from resources/lang/de_DE/passwords.php rename to lang/de_DE/passwords.php diff --git a/resources/lang/de_DE/placeholder.php b/lang/de_DE/placeholder.php similarity index 100% rename from resources/lang/de_DE/placeholder.php rename to lang/de_DE/placeholder.php diff --git a/resources/lang/de_DE/search.php b/lang/de_DE/search.php similarity index 100% rename from resources/lang/de_DE/search.php rename to lang/de_DE/search.php diff --git a/resources/lang/de_DE/settings.php b/lang/de_DE/settings.php similarity index 100% rename from resources/lang/de_DE/settings.php rename to lang/de_DE/settings.php diff --git a/resources/lang/de_DE/setup.php b/lang/de_DE/setup.php similarity index 100% rename from resources/lang/de_DE/setup.php rename to lang/de_DE/setup.php diff --git a/resources/lang/de_DE/sharing.php b/lang/de_DE/sharing.php similarity index 100% rename from resources/lang/de_DE/sharing.php rename to lang/de_DE/sharing.php diff --git a/resources/lang/de_DE/stats.php b/lang/de_DE/stats.php similarity index 100% rename from resources/lang/de_DE/stats.php rename to lang/de_DE/stats.php diff --git a/resources/lang/de_DE/tag.php b/lang/de_DE/tag.php similarity index 100% rename from resources/lang/de_DE/tag.php rename to lang/de_DE/tag.php diff --git a/resources/lang/de_DE/trash.php b/lang/de_DE/trash.php similarity index 100% rename from resources/lang/de_DE/trash.php rename to lang/de_DE/trash.php diff --git a/resources/lang/de_DE/user.php b/lang/de_DE/user.php similarity index 100% rename from resources/lang/de_DE/user.php rename to lang/de_DE/user.php diff --git a/resources/lang/de_DE/validation.php b/lang/de_DE/validation.php similarity index 100% rename from resources/lang/de_DE/validation.php rename to lang/de_DE/validation.php diff --git a/resources/lang/en_US/auth.php b/lang/en_US/auth.php similarity index 100% rename from resources/lang/en_US/auth.php rename to lang/en_US/auth.php diff --git a/resources/lang/en_US/export.php b/lang/en_US/export.php similarity index 100% rename from resources/lang/en_US/export.php rename to lang/en_US/export.php diff --git a/resources/lang/en_US/import.php b/lang/en_US/import.php similarity index 100% rename from resources/lang/en_US/import.php rename to lang/en_US/import.php diff --git a/resources/lang/en_US/link.php b/lang/en_US/link.php similarity index 100% rename from resources/lang/en_US/link.php rename to lang/en_US/link.php diff --git a/resources/lang/en_US/linkace.php b/lang/en_US/linkace.php similarity index 100% rename from resources/lang/en_US/linkace.php rename to lang/en_US/linkace.php diff --git a/resources/lang/en_US/list.php b/lang/en_US/list.php similarity index 100% rename from resources/lang/en_US/list.php rename to lang/en_US/list.php diff --git a/resources/lang/en_US/note.php b/lang/en_US/note.php similarity index 100% rename from resources/lang/en_US/note.php rename to lang/en_US/note.php diff --git a/resources/lang/en_US/pagination.php b/lang/en_US/pagination.php similarity index 100% rename from resources/lang/en_US/pagination.php rename to lang/en_US/pagination.php diff --git a/resources/lang/en_US/passwords.php b/lang/en_US/passwords.php similarity index 100% rename from resources/lang/en_US/passwords.php rename to lang/en_US/passwords.php diff --git a/resources/lang/en_US/placeholder.php b/lang/en_US/placeholder.php similarity index 100% rename from resources/lang/en_US/placeholder.php rename to lang/en_US/placeholder.php diff --git a/resources/lang/en_US/search.php b/lang/en_US/search.php similarity index 100% rename from resources/lang/en_US/search.php rename to lang/en_US/search.php diff --git a/resources/lang/en_US/settings.php b/lang/en_US/settings.php similarity index 100% rename from resources/lang/en_US/settings.php rename to lang/en_US/settings.php diff --git a/resources/lang/en_US/setup.php b/lang/en_US/setup.php similarity index 100% rename from resources/lang/en_US/setup.php rename to lang/en_US/setup.php diff --git a/resources/lang/en_US/sharing.php b/lang/en_US/sharing.php similarity index 100% rename from resources/lang/en_US/sharing.php rename to lang/en_US/sharing.php diff --git a/resources/lang/en_US/stats.php b/lang/en_US/stats.php similarity index 100% rename from resources/lang/en_US/stats.php rename to lang/en_US/stats.php diff --git a/resources/lang/en_US/tag.php b/lang/en_US/tag.php similarity index 100% rename from resources/lang/en_US/tag.php rename to lang/en_US/tag.php diff --git a/resources/lang/en_US/trash.php b/lang/en_US/trash.php similarity index 100% rename from resources/lang/en_US/trash.php rename to lang/en_US/trash.php diff --git a/resources/lang/en_US/user.php b/lang/en_US/user.php similarity index 100% rename from resources/lang/en_US/user.php rename to lang/en_US/user.php diff --git a/resources/lang/en_US/validation.php b/lang/en_US/validation.php similarity index 100% rename from resources/lang/en_US/validation.php rename to lang/en_US/validation.php diff --git a/resources/lang/es_ES/auth.php b/lang/es_ES/auth.php similarity index 100% rename from resources/lang/es_ES/auth.php rename to lang/es_ES/auth.php diff --git a/resources/lang/es_ES/export.php b/lang/es_ES/export.php similarity index 100% rename from resources/lang/es_ES/export.php rename to lang/es_ES/export.php diff --git a/resources/lang/es_ES/import.php b/lang/es_ES/import.php similarity index 100% rename from resources/lang/es_ES/import.php rename to lang/es_ES/import.php diff --git a/resources/lang/es_ES/link.php b/lang/es_ES/link.php similarity index 100% rename from resources/lang/es_ES/link.php rename to lang/es_ES/link.php diff --git a/resources/lang/es_ES/linkace.php b/lang/es_ES/linkace.php similarity index 100% rename from resources/lang/es_ES/linkace.php rename to lang/es_ES/linkace.php diff --git a/resources/lang/es_ES/list.php b/lang/es_ES/list.php similarity index 100% rename from resources/lang/es_ES/list.php rename to lang/es_ES/list.php diff --git a/resources/lang/es_ES/note.php b/lang/es_ES/note.php similarity index 100% rename from resources/lang/es_ES/note.php rename to lang/es_ES/note.php diff --git a/resources/lang/es_ES/pagination.php b/lang/es_ES/pagination.php similarity index 100% rename from resources/lang/es_ES/pagination.php rename to lang/es_ES/pagination.php diff --git a/resources/lang/es_ES/passwords.php b/lang/es_ES/passwords.php similarity index 100% rename from resources/lang/es_ES/passwords.php rename to lang/es_ES/passwords.php diff --git a/resources/lang/es_ES/placeholder.php b/lang/es_ES/placeholder.php similarity index 100% rename from resources/lang/es_ES/placeholder.php rename to lang/es_ES/placeholder.php diff --git a/resources/lang/es_ES/search.php b/lang/es_ES/search.php similarity index 100% rename from resources/lang/es_ES/search.php rename to lang/es_ES/search.php diff --git a/resources/lang/es_ES/settings.php b/lang/es_ES/settings.php similarity index 100% rename from resources/lang/es_ES/settings.php rename to lang/es_ES/settings.php diff --git a/resources/lang/es_ES/setup.php b/lang/es_ES/setup.php similarity index 100% rename from resources/lang/es_ES/setup.php rename to lang/es_ES/setup.php diff --git a/resources/lang/es_ES/sharing.php b/lang/es_ES/sharing.php similarity index 100% rename from resources/lang/es_ES/sharing.php rename to lang/es_ES/sharing.php diff --git a/resources/lang/es_ES/stats.php b/lang/es_ES/stats.php similarity index 100% rename from resources/lang/es_ES/stats.php rename to lang/es_ES/stats.php diff --git a/resources/lang/es_ES/tag.php b/lang/es_ES/tag.php similarity index 100% rename from resources/lang/es_ES/tag.php rename to lang/es_ES/tag.php diff --git a/resources/lang/es_ES/trash.php b/lang/es_ES/trash.php similarity index 100% rename from resources/lang/es_ES/trash.php rename to lang/es_ES/trash.php diff --git a/resources/lang/es_ES/user.php b/lang/es_ES/user.php similarity index 100% rename from resources/lang/es_ES/user.php rename to lang/es_ES/user.php diff --git a/resources/lang/es_ES/validation.php b/lang/es_ES/validation.php similarity index 100% rename from resources/lang/es_ES/validation.php rename to lang/es_ES/validation.php diff --git a/resources/lang/fr_FR/auth.php b/lang/fr_FR/auth.php similarity index 100% rename from resources/lang/fr_FR/auth.php rename to lang/fr_FR/auth.php diff --git a/resources/lang/fr_FR/export.php b/lang/fr_FR/export.php similarity index 100% rename from resources/lang/fr_FR/export.php rename to lang/fr_FR/export.php diff --git a/resources/lang/fr_FR/import.php b/lang/fr_FR/import.php similarity index 100% rename from resources/lang/fr_FR/import.php rename to lang/fr_FR/import.php diff --git a/resources/lang/fr_FR/link.php b/lang/fr_FR/link.php similarity index 100% rename from resources/lang/fr_FR/link.php rename to lang/fr_FR/link.php diff --git a/resources/lang/fr_FR/linkace.php b/lang/fr_FR/linkace.php similarity index 100% rename from resources/lang/fr_FR/linkace.php rename to lang/fr_FR/linkace.php diff --git a/resources/lang/fr_FR/list.php b/lang/fr_FR/list.php similarity index 100% rename from resources/lang/fr_FR/list.php rename to lang/fr_FR/list.php diff --git a/resources/lang/fr_FR/note.php b/lang/fr_FR/note.php similarity index 100% rename from resources/lang/fr_FR/note.php rename to lang/fr_FR/note.php diff --git a/resources/lang/fr_FR/pagination.php b/lang/fr_FR/pagination.php similarity index 100% rename from resources/lang/fr_FR/pagination.php rename to lang/fr_FR/pagination.php diff --git a/resources/lang/fr_FR/passwords.php b/lang/fr_FR/passwords.php similarity index 100% rename from resources/lang/fr_FR/passwords.php rename to lang/fr_FR/passwords.php diff --git a/resources/lang/fr_FR/placeholder.php b/lang/fr_FR/placeholder.php similarity index 100% rename from resources/lang/fr_FR/placeholder.php rename to lang/fr_FR/placeholder.php diff --git a/resources/lang/fr_FR/search.php b/lang/fr_FR/search.php similarity index 100% rename from resources/lang/fr_FR/search.php rename to lang/fr_FR/search.php diff --git a/resources/lang/fr_FR/settings.php b/lang/fr_FR/settings.php similarity index 100% rename from resources/lang/fr_FR/settings.php rename to lang/fr_FR/settings.php diff --git a/resources/lang/fr_FR/setup.php b/lang/fr_FR/setup.php similarity index 100% rename from resources/lang/fr_FR/setup.php rename to lang/fr_FR/setup.php diff --git a/resources/lang/fr_FR/sharing.php b/lang/fr_FR/sharing.php similarity index 100% rename from resources/lang/fr_FR/sharing.php rename to lang/fr_FR/sharing.php diff --git a/resources/lang/fr_FR/stats.php b/lang/fr_FR/stats.php similarity index 100% rename from resources/lang/fr_FR/stats.php rename to lang/fr_FR/stats.php diff --git a/resources/lang/fr_FR/tag.php b/lang/fr_FR/tag.php similarity index 100% rename from resources/lang/fr_FR/tag.php rename to lang/fr_FR/tag.php diff --git a/resources/lang/fr_FR/trash.php b/lang/fr_FR/trash.php similarity index 100% rename from resources/lang/fr_FR/trash.php rename to lang/fr_FR/trash.php diff --git a/resources/lang/fr_FR/user.php b/lang/fr_FR/user.php similarity index 100% rename from resources/lang/fr_FR/user.php rename to lang/fr_FR/user.php diff --git a/resources/lang/fr_FR/validation.php b/lang/fr_FR/validation.php similarity index 100% rename from resources/lang/fr_FR/validation.php rename to lang/fr_FR/validation.php diff --git a/resources/lang/hu_HU/auth.php b/lang/hu_HU/auth.php similarity index 100% rename from resources/lang/hu_HU/auth.php rename to lang/hu_HU/auth.php diff --git a/resources/lang/hu_HU/export.php b/lang/hu_HU/export.php similarity index 100% rename from resources/lang/hu_HU/export.php rename to lang/hu_HU/export.php diff --git a/resources/lang/hu_HU/import.php b/lang/hu_HU/import.php similarity index 100% rename from resources/lang/hu_HU/import.php rename to lang/hu_HU/import.php diff --git a/resources/lang/hu_HU/link.php b/lang/hu_HU/link.php similarity index 100% rename from resources/lang/hu_HU/link.php rename to lang/hu_HU/link.php diff --git a/resources/lang/hu_HU/linkace.php b/lang/hu_HU/linkace.php similarity index 100% rename from resources/lang/hu_HU/linkace.php rename to lang/hu_HU/linkace.php diff --git a/resources/lang/hu_HU/list.php b/lang/hu_HU/list.php similarity index 100% rename from resources/lang/hu_HU/list.php rename to lang/hu_HU/list.php diff --git a/resources/lang/hu_HU/note.php b/lang/hu_HU/note.php similarity index 100% rename from resources/lang/hu_HU/note.php rename to lang/hu_HU/note.php diff --git a/resources/lang/hu_HU/pagination.php b/lang/hu_HU/pagination.php similarity index 100% rename from resources/lang/hu_HU/pagination.php rename to lang/hu_HU/pagination.php diff --git a/resources/lang/hu_HU/passwords.php b/lang/hu_HU/passwords.php similarity index 100% rename from resources/lang/hu_HU/passwords.php rename to lang/hu_HU/passwords.php diff --git a/resources/lang/hu_HU/placeholder.php b/lang/hu_HU/placeholder.php similarity index 100% rename from resources/lang/hu_HU/placeholder.php rename to lang/hu_HU/placeholder.php diff --git a/resources/lang/hu_HU/search.php b/lang/hu_HU/search.php similarity index 100% rename from resources/lang/hu_HU/search.php rename to lang/hu_HU/search.php diff --git a/resources/lang/hu_HU/settings.php b/lang/hu_HU/settings.php similarity index 100% rename from resources/lang/hu_HU/settings.php rename to lang/hu_HU/settings.php diff --git a/resources/lang/hu_HU/setup.php b/lang/hu_HU/setup.php similarity index 100% rename from resources/lang/hu_HU/setup.php rename to lang/hu_HU/setup.php diff --git a/resources/lang/hu_HU/sharing.php b/lang/hu_HU/sharing.php similarity index 100% rename from resources/lang/hu_HU/sharing.php rename to lang/hu_HU/sharing.php diff --git a/resources/lang/hu_HU/stats.php b/lang/hu_HU/stats.php similarity index 100% rename from resources/lang/hu_HU/stats.php rename to lang/hu_HU/stats.php diff --git a/resources/lang/hu_HU/tag.php b/lang/hu_HU/tag.php similarity index 100% rename from resources/lang/hu_HU/tag.php rename to lang/hu_HU/tag.php diff --git a/resources/lang/hu_HU/trash.php b/lang/hu_HU/trash.php similarity index 100% rename from resources/lang/hu_HU/trash.php rename to lang/hu_HU/trash.php diff --git a/resources/lang/hu_HU/user.php b/lang/hu_HU/user.php similarity index 100% rename from resources/lang/hu_HU/user.php rename to lang/hu_HU/user.php diff --git a/resources/lang/hu_HU/validation.php b/lang/hu_HU/validation.php similarity index 100% rename from resources/lang/hu_HU/validation.php rename to lang/hu_HU/validation.php diff --git a/resources/lang/no_NO/auth.php b/lang/no_NO/auth.php similarity index 100% rename from resources/lang/no_NO/auth.php rename to lang/no_NO/auth.php diff --git a/resources/lang/no_NO/export.php b/lang/no_NO/export.php similarity index 100% rename from resources/lang/no_NO/export.php rename to lang/no_NO/export.php diff --git a/resources/lang/no_NO/import.php b/lang/no_NO/import.php similarity index 100% rename from resources/lang/no_NO/import.php rename to lang/no_NO/import.php diff --git a/resources/lang/no_NO/link.php b/lang/no_NO/link.php similarity index 100% rename from resources/lang/no_NO/link.php rename to lang/no_NO/link.php diff --git a/resources/lang/no_NO/linkace.php b/lang/no_NO/linkace.php similarity index 100% rename from resources/lang/no_NO/linkace.php rename to lang/no_NO/linkace.php diff --git a/resources/lang/no_NO/list.php b/lang/no_NO/list.php similarity index 100% rename from resources/lang/no_NO/list.php rename to lang/no_NO/list.php diff --git a/resources/lang/no_NO/note.php b/lang/no_NO/note.php similarity index 100% rename from resources/lang/no_NO/note.php rename to lang/no_NO/note.php diff --git a/resources/lang/no_NO/pagination.php b/lang/no_NO/pagination.php similarity index 100% rename from resources/lang/no_NO/pagination.php rename to lang/no_NO/pagination.php diff --git a/resources/lang/no_NO/passwords.php b/lang/no_NO/passwords.php similarity index 100% rename from resources/lang/no_NO/passwords.php rename to lang/no_NO/passwords.php diff --git a/resources/lang/no_NO/placeholder.php b/lang/no_NO/placeholder.php similarity index 100% rename from resources/lang/no_NO/placeholder.php rename to lang/no_NO/placeholder.php diff --git a/resources/lang/no_NO/search.php b/lang/no_NO/search.php similarity index 100% rename from resources/lang/no_NO/search.php rename to lang/no_NO/search.php diff --git a/resources/lang/no_NO/settings.php b/lang/no_NO/settings.php similarity index 100% rename from resources/lang/no_NO/settings.php rename to lang/no_NO/settings.php diff --git a/resources/lang/no_NO/setup.php b/lang/no_NO/setup.php similarity index 100% rename from resources/lang/no_NO/setup.php rename to lang/no_NO/setup.php diff --git a/resources/lang/no_NO/sharing.php b/lang/no_NO/sharing.php similarity index 100% rename from resources/lang/no_NO/sharing.php rename to lang/no_NO/sharing.php diff --git a/resources/lang/no_NO/stats.php b/lang/no_NO/stats.php similarity index 100% rename from resources/lang/no_NO/stats.php rename to lang/no_NO/stats.php diff --git a/resources/lang/no_NO/tag.php b/lang/no_NO/tag.php similarity index 100% rename from resources/lang/no_NO/tag.php rename to lang/no_NO/tag.php diff --git a/resources/lang/no_NO/trash.php b/lang/no_NO/trash.php similarity index 100% rename from resources/lang/no_NO/trash.php rename to lang/no_NO/trash.php diff --git a/resources/lang/no_NO/user.php b/lang/no_NO/user.php similarity index 100% rename from resources/lang/no_NO/user.php rename to lang/no_NO/user.php diff --git a/resources/lang/no_NO/validation.php b/lang/no_NO/validation.php similarity index 100% rename from resources/lang/no_NO/validation.php rename to lang/no_NO/validation.php diff --git a/resources/lang/zh_CN/auth.php b/lang/zh_CN/auth.php similarity index 100% rename from resources/lang/zh_CN/auth.php rename to lang/zh_CN/auth.php diff --git a/resources/lang/zh_CN/export.php b/lang/zh_CN/export.php similarity index 100% rename from resources/lang/zh_CN/export.php rename to lang/zh_CN/export.php diff --git a/resources/lang/zh_CN/import.php b/lang/zh_CN/import.php similarity index 100% rename from resources/lang/zh_CN/import.php rename to lang/zh_CN/import.php diff --git a/resources/lang/zh_CN/link.php b/lang/zh_CN/link.php similarity index 100% rename from resources/lang/zh_CN/link.php rename to lang/zh_CN/link.php diff --git a/resources/lang/zh_CN/linkace.php b/lang/zh_CN/linkace.php similarity index 100% rename from resources/lang/zh_CN/linkace.php rename to lang/zh_CN/linkace.php diff --git a/resources/lang/zh_CN/list.php b/lang/zh_CN/list.php similarity index 100% rename from resources/lang/zh_CN/list.php rename to lang/zh_CN/list.php diff --git a/resources/lang/zh_CN/note.php b/lang/zh_CN/note.php similarity index 100% rename from resources/lang/zh_CN/note.php rename to lang/zh_CN/note.php diff --git a/resources/lang/zh_CN/pagination.php b/lang/zh_CN/pagination.php similarity index 100% rename from resources/lang/zh_CN/pagination.php rename to lang/zh_CN/pagination.php diff --git a/resources/lang/zh_CN/passwords.php b/lang/zh_CN/passwords.php similarity index 100% rename from resources/lang/zh_CN/passwords.php rename to lang/zh_CN/passwords.php diff --git a/resources/lang/zh_CN/placeholder.php b/lang/zh_CN/placeholder.php similarity index 100% rename from resources/lang/zh_CN/placeholder.php rename to lang/zh_CN/placeholder.php diff --git a/resources/lang/zh_CN/search.php b/lang/zh_CN/search.php similarity index 100% rename from resources/lang/zh_CN/search.php rename to lang/zh_CN/search.php diff --git a/resources/lang/zh_CN/settings.php b/lang/zh_CN/settings.php similarity index 100% rename from resources/lang/zh_CN/settings.php rename to lang/zh_CN/settings.php diff --git a/resources/lang/zh_CN/setup.php b/lang/zh_CN/setup.php similarity index 100% rename from resources/lang/zh_CN/setup.php rename to lang/zh_CN/setup.php diff --git a/resources/lang/zh_CN/sharing.php b/lang/zh_CN/sharing.php similarity index 100% rename from resources/lang/zh_CN/sharing.php rename to lang/zh_CN/sharing.php diff --git a/resources/lang/zh_CN/stats.php b/lang/zh_CN/stats.php similarity index 100% rename from resources/lang/zh_CN/stats.php rename to lang/zh_CN/stats.php diff --git a/resources/lang/zh_CN/tag.php b/lang/zh_CN/tag.php similarity index 100% rename from resources/lang/zh_CN/tag.php rename to lang/zh_CN/tag.php diff --git a/resources/lang/zh_CN/trash.php b/lang/zh_CN/trash.php similarity index 100% rename from resources/lang/zh_CN/trash.php rename to lang/zh_CN/trash.php diff --git a/resources/lang/zh_CN/user.php b/lang/zh_CN/user.php similarity index 100% rename from resources/lang/zh_CN/user.php rename to lang/zh_CN/user.php diff --git a/resources/lang/zh_CN/validation.php b/lang/zh_CN/validation.php similarity index 100% rename from resources/lang/zh_CN/validation.php rename to lang/zh_CN/validation.php diff --git a/resources/docker/dockerfiles/deprecated/release-simple.Dockerfile b/resources/docker/dockerfiles/deprecated/release-simple.Dockerfile deleted file mode 100644 index c361b123..00000000 --- a/resources/docker/dockerfiles/deprecated/release-simple.Dockerfile +++ /dev/null @@ -1,86 +0,0 @@ -# DOCKERFILE RELEASE - -# ================================ -# PHP Dependency Setup -FROM composer AS builder -WORKDIR /app - -# Make needed parts of the app available in the container -COPY ./app /app/app -COPY ./bootstrap /app/bootstrap -COPY ./config /app/config -COPY ./database /app/database -COPY ./resources /app -COPY ./routes /app/routes -COPY ./tests /app/tests - -COPY ./artisan /app -COPY ./composer.json /app -COPY ./composer.lock /app -COPY ./README.md /app -COPY ./.env.example /app/.env - -# Install dependencies using Composer -RUN composer install -n --prefer-dist --no-dev - -# ================================ -# Compile all assets -FROM node:14.15.4 AS npm_builder -WORKDIR /srv - -# Copy package.json and Gruntfile -COPY ./package.json ./ -COPY ./package-lock.json ./ -COPY ./webpack.mix.js ./ -COPY ./resources/assets ./resources/assets - -RUN npm install -RUN npm run production - -# ================================ -# Prepare the final image including nginx -FROM webdevops/php-nginx:8.0-alpine -WORKDIR /app - -# Copy the app into the container -COPY ./app /app/app -COPY ./bootstrap /app/bootstrap -COPY ./config /app/config -COPY ./database /app/database -COPY ./public /app/public -COPY ./resources /app/resources -COPY ./routes /app/routes -COPY ./storage /app/storage -COPY ./tests /app/tests - -COPY ./artisan /app -COPY ./composer.json /app -COPY ./composer.lock /app -COPY ./README.md /app -COPY ./package.json /app -COPY ./server.php /app -COPY ./.env.example /app/.env - -# Copy the PHP config files -COPY ./resources/docker/php/php.ini /opt/docker/etc/php/php.ini - -# Copy files from the composer build -COPY --from=builder /app/vendor /app/vendor -COPY --from=builder /app/bootstrap/cache /app/bootstrap/cache - -# Install MySQL Dump for automated backups -RUN apk add --no-cache mariadb-client - -# Publish package resources -RUN php artisan vendor:publish --provider="Spatie\Backup\BackupServiceProvider" - -# Copy files from the theme build -COPY --from=npm_builder /srv/public/assets/dist/js /app/public/assets/dist/js -COPY --from=npm_builder /srv/public/assets/dist/css /app/public/assets/dist/css -COPY --from=npm_builder /srv/public/mix-manifest.json /app/public/mix-manifest.json - -# Set correct permissions for the storage directory -RUN chown -R application:application /app -RUN chmod -R 0777 /app/storage - -ENV WEB_DOCUMENT_ROOT /app/public diff --git a/resources/docker/dockerfiles/deprecated/release.Dockerfile b/resources/docker/dockerfiles/deprecated/release.Dockerfile deleted file mode 100644 index 9778ea93..00000000 --- a/resources/docker/dockerfiles/deprecated/release.Dockerfile +++ /dev/null @@ -1,83 +0,0 @@ -# DOCKERFILE RELEASE - -# ================================ -# PHP Dependency Setup -FROM composer AS builder -WORKDIR /app - -# Make needed parts of the app available in the container -COPY ./app /app/app -COPY ./bootstrap /app/bootstrap -COPY ./config /app/config -COPY ./database /app/database -COPY ./resources /app -COPY ./routes /app/routes -COPY ./tests /app/tests - -COPY ./artisan /app -COPY ./composer.json /app -COPY ./composer.lock /app -COPY ./README.md /app -COPY ./.env.example /app/.env - -# Install dependencies using Composer -RUN composer install -n --prefer-dist --no-dev - -# ================================ -# Compile all assets -FROM node:14.15.4 AS npm_builder -WORKDIR /srv - -# Copy package.json and Gruntfile -COPY ./package.json ./ -COPY ./package-lock.json ./ -COPY ./webpack.mix.js ./ -COPY ./resources/assets ./resources/assets - -RUN npm install -RUN npm run production - -# ================================ -# Prepare the final image -FROM bitnami/php-fpm:8.0-prod -WORKDIR /app - -# Copy the app into the container -COPY ./app /app/app -COPY ./bootstrap /app/bootstrap -COPY ./config /app/config -COPY ./database /app/database -COPY ./public /app/public -COPY ./resources /app/resources -COPY ./routes /app/routes -COPY ./storage /app/storage -COPY ./tests /app/tests - -COPY ./artisan /app -COPY ./composer.json /app -COPY ./composer.lock /app -COPY ./README.md /app -COPY ./package.json /app -COPY ./server.php /app -COPY ./.env.example /app/.env - -# Copy the PHP config files -COPY ./resources/docker/php/php.ini /opt/bitnami/php/etc/conf.d/php.ini - -# Install MySQL Dump for automated backups -RUN install_packages mariadb-client - -# Copy files from the composer build -COPY --from=builder /app/vendor /app/vendor -COPY --from=builder /app/bootstrap/cache /app/bootstrap/cache - -# Publish package resources -RUN php artisan vendor:publish --provider="Spatie\Backup\BackupServiceProvider" - -# Copy files from the theme build -COPY --from=npm_builder /srv/public/assets/dist/js /app/public/assets/dist/js -COPY --from=npm_builder /srv/public/assets/dist/css /app/public/assets/dist/css -COPY --from=npm_builder /srv/public/mix-manifest.json /app/public/mix-manifest.json - -# Set correct permissions for the storage directory -RUN chmod -R 0777 /app/storage diff --git a/resources/docker/dockerfiles/development.Dockerfile b/resources/docker/dockerfiles/development.Dockerfile index 9c1e7b85..5df081ef 100644 --- a/resources/docker/dockerfiles/development.Dockerfile +++ b/resources/docker/dockerfiles/development.Dockerfile @@ -1,7 +1,7 @@ # DOCKERFILE DEVELOPMENT # Installs MySQL Client for database exports, xDebug with PCov and Composer -FROM php:7.4-fpm +FROM php:8.0-fpm WORKDIR /app RUN apt-get update && apt-get install -y \ diff --git a/resources/docker/php/php-dev.ini b/resources/docker/php/php-dev.ini index 5bd4ef68..807a3067 100644 --- a/resources/docker/php/php-dev.ini +++ b/resources/docker/php/php-dev.ini @@ -17,21 +17,18 @@ post_max_size = 20M ; Uncomment the zend_extension line to enable xDebug ; ------- +xdebug.mode = profile xdebug.idekey = "phpstorm" -xdebug.remote_enable = 1 -xdebug.remote_host = docker.for.mac.localhost -xdebug.remote_port = 10000 -xdebug.remote_connect_back = 0 -xdebug.remote_log = /tmp/xdebug_remote.log +xdebug.client_host = docker.for.mac.localhost +xdebug.client_port = 10000 +xdebug.discover_client_host = false +xdebug.log = /tmp/xdebug_remote.log xdebug.max_nesting_level = 300 xdebug.scream = 0 xdebug.cli_color = 1 xdebug.show_local_vars = 1 - -xdebug.mode = off -xdebug.profiler_enable = 0 -xdebug.profiler_enable_trigger=1 -xdebug.profiler_enable_trigger_value=1 +xdebug.start_with_request=trigger +xdebug.trigger_value=1 xdebug.profiler_append = 1 ; opcache diff --git a/tests/Controller/App/ImportControllerTest.php b/tests/Controller/App/ImportControllerTest.php index 8949d271..7630da65 100644 --- a/tests/Controller/App/ImportControllerTest.php +++ b/tests/Controller/App/ImportControllerTest.php @@ -26,8 +26,7 @@ public function testValidImportResponse(): void { $response = $this->get('import'); - $response->assertOk() - ->assertSee('Import'); + $response->assertOk()->assertSee('Import'); } public function testValidImportActionResponse(): void @@ -48,5 +47,9 @@ public function testValidImportActionResponse(): void $linkCount = Link::count(); $this->assertEquals(5, $linkCount); + + // Test correct tag creation with and without white space + $this->assertDatabaseHas('tags', ['name' => 'color-wheel']); + $this->assertDatabaseHas('tags', ['name' => 'design systems']); } } diff --git a/tests/Controller/App/data/import_example.html b/tests/Controller/App/data/import_example.html index 85bf671b..04943cba 100644 --- a/tests/Controller/App/data/import_example.html +++ b/tests/Controller/App/data/import_example.html @@ -15,7 +15,7 @@ has the best investor in history, Warren Buffett, invested 80% of his time in reading…
Adele – Design Systems and Pattern Libraries + TAGS="collection,design,design systems,library,patterns">Adele – Design Systems and Pattern Libraries Repository
Date: Mon, 2 May 2022 16:49:50 +0200 Subject: [PATCH 02/86] Various code formatting fixes and optimizations --- app/Console/Commands/CheckLinksCommand.php | 5 ++- app/Helper/HtmlMeta.php | 7 ++- app/Helper/UpdateHelper.php | 4 +- app/Helper/functions.php | 10 ++--- app/Http/Controllers/FetchController.php | 20 ++++----- app/Http/Controllers/FrontController.php | 2 +- app/Http/Middleware/GuestAccess.php | 2 +- .../Middleware/RedirectIfAuthenticated.php | 2 +- app/Http/Middleware/SettingsMiddleware.php | 2 +- app/Http/Middleware/SetupCheckMiddleware.php | 2 +- app/Http/Requests/Models/LinkStoreRequest.php | 4 +- .../Requests/Models/LinkUpdateRequest.php | 4 +- .../Requests/Models/ListUpdateRequest.php | 4 +- app/Http/Requests/Models/TagStoreRequest.php | 4 +- app/Http/Requests/Models/TagUpdateRequest.php | 4 +- app/Jobs/SaveLinkToWaybackmachine.php | 6 +-- app/Models/LinkList.php | 4 +- app/Models/Note.php | 4 +- app/Models/Tag.php | 4 +- app/Models/User.php | 4 +- app/Notifications/LinkCheckNotification.php | 10 +---- app/Providers/FortifyServiceProvider.php | 20 +++------ app/Repositories/LinkRepository.php | 4 +- app/Repositories/NoteRepository.php | 2 +- app/Repositories/TrashRepository.php | 23 +++------- app/View/Components/Links/HistoryEntry.php | 6 +-- database/factories/LinkFactory.php | 4 +- database/factories/UserFactory.php | 4 +- ...13_04_09_062329_create_revisions_table.php | 4 +- .../2014_10_12_000000_create_users_table.php | 4 +- ...12_100000_create_password_resets_table.php | 4 +- ..._add_two_factor_columns_to_users_table.php | 4 +- ...18_08_22_212248_create_taxonomy_tables.php | 4 +- .../2018_08_22_212358_create_link_tables.php | 4 +- .../2018_08_22_213055_create_note_tables.php | 4 +- ...018_09_27_214216_create_settings_table.php | 4 +- ...1_30_153129_update_link_table_for_icon.php | 4 +- .../2019_02_07_223113_add_user_api_token.php | 4 +- ..._02_10_221213_create_permission_tables.php | 45 +++++++++++-------- .../2019_02_11_143743_add_link_status.php | 4 +- .../2019_07_16_173805_create_jobs_table.php | 4 +- ..._07_16_175247_create_failed_jobs_table.php | 4 +- ..._29_135735_move_category_to_list_table.php | 4 +- ...3446_add_check_disabled_to_links_table.php | 4 +- ...04_230306_convert_link_privacy_setting.php | 4 +- ...enable_internet_archive_backup_setting.php | 4 +- .../2020_10_21_104548_migrate_link_icons.php | 4 +- ...38_add_thumbnail_column_to_links_table.php | 4 +- database/seeders/DatabaseSeeder.php | 2 +- tests/Commands/CheckLinksCommandTest.php | 8 +--- tests/Controller/App/ExportControllerTest.php | 2 +- tests/Controller/App/SearchControllerTest.php | 2 +- .../App/SystemSettingsControllerTest.php | 2 +- tests/Controller/App/TrashControllerTest.php | 2 +- .../App/UserSettingsControllerTest.php | 2 +- tests/CreatesApplication.php | 2 +- tests/Database/ExampleSeedingTest.php | 2 +- tests/Helper/HelperFunctionsTest.php | 2 +- tests/Models/Link/DuplicateSearchTest.php | 2 +- tests/Models/LinkCreateTest.php | 2 +- tests/Models/LinkDeleteTest.php | 2 +- tests/Models/LinkUpdateTest.php | 2 +- tests/Models/ListCreateTest.php | 2 +- tests/Models/ListDeleteTest.php | 2 +- tests/Models/ListUpdateTest.php | 2 +- tests/Models/NoteCreateTest.php | 2 +- tests/Models/NoteDeleteTest.php | 2 +- tests/Models/NoteUpdateTest.php | 2 +- tests/Models/TagCreateTest.php | 2 +- tests/Models/TagDeleteTest.php | 2 +- tests/Models/TagUpdateTest.php | 2 +- 71 files changed, 147 insertions(+), 197 deletions(-) diff --git a/app/Console/Commands/CheckLinksCommand.php b/app/Console/Commands/CheckLinksCommand.php index 75a23df9..a039ec42 100644 --- a/app/Console/Commands/CheckLinksCommand.php +++ b/app/Console/Commands/CheckLinksCommand.php @@ -7,6 +7,7 @@ use App\Notifications\LinkCheckNotification; use Exception; use Illuminate\Console\Command; +use Illuminate\Database\Eloquent\Collection; use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Notification; @@ -112,9 +113,9 @@ public function handle(): void * Get links but limit the results to a fixed number of links. * If there is an offset saved, use this instead of beginning from the first entry. * - * @return \LaravelIdea\Helper\App\Models\_IH_Link_C|Link[] + * @return Collection */ - protected function getLinks() + protected function getLinks(): Collection { // Get the total amount of remaining links $this->total = Link::count(); diff --git a/app/Helper/HtmlMeta.php b/app/Helper/HtmlMeta.php index fd026a09..fe204858 100644 --- a/app/Helper/HtmlMeta.php +++ b/app/Helper/HtmlMeta.php @@ -62,10 +62,9 @@ public function getFromUrl(string $url, bool $flashAlerts = false): array */ protected function buildLinkMeta(): array { - $this->meta['description'] = $this->meta['description'] - ?? $this->meta['og:description'] - ?? $this->meta['twitter:description'] - ?? null; + $this->meta['description'] ??= $this->meta['og:description'] + ?? $this->meta['twitter:description'] + ?? null; return [ 'success' => true, diff --git a/app/Helper/UpdateHelper.php b/app/Helper/UpdateHelper.php index 8d2a214d..36d7a071 100644 --- a/app/Helper/UpdateHelper.php +++ b/app/Helper/UpdateHelper.php @@ -17,7 +17,7 @@ class UpdateHelper * * @return mixed */ - public static function currentVersion() + public static function currentVersion(): mixed { return Cache::remember('current-version', 86400, function () { try { @@ -39,7 +39,7 @@ public static function currentVersion() * @param bool $cacheResult * @return bool|string */ - public static function checkForUpdates(bool $cacheResult = false) + public static function checkForUpdates(bool $cacheResult = false): bool|string { return Cache::remember('updatecheck', $cacheResult ? 86400 : 0, function () { $currentVersion = self::currentVersion(); diff --git a/app/Helper/functions.php b/app/Helper/functions.php index b83e0ac4..c990849c 100644 --- a/app/Helper/functions.php +++ b/app/Helper/functions.php @@ -30,7 +30,7 @@ function setupCompleted() * @param string $key * @return mixed */ -function usersettings(string $key = '') +function usersettings(string $key = ''): mixed { if (!auth()->user()) { return null; @@ -51,9 +51,7 @@ function usersettings(string $key = '') */ function systemsettings(string $key = '') { - $settings = Cache::rememberForever('systemsettings', function () { - return Setting::systemOnly()->get()->pluck('value', 'key'); - }); + $settings = Cache::rememberForever('systemsettings', fn() => Setting::systemOnly()->get()->pluck('value', 'key')); if ($key === '') { return $settings; @@ -95,7 +93,7 @@ function formatDateTime(Carbon $date, bool $use_relational = false): string * * @return mixed */ -function getPaginationLimit() +function getPaginationLimit(): mixed { if (request()->has('per_page') && (int)request()->get('per_page') >= 0) { return (int)request()->get('per_page') > 0 ? (int)request()->get('per_page') : 999999999; @@ -167,7 +165,7 @@ function tableSorter(string $label, string $route, string $type, string $orderBy } /** - * Get the Wayback Machine link for an URL + * Get the Wayback Machine link for a URL * * @param string|Link $link * @return null|string diff --git a/app/Http/Controllers/FetchController.php b/app/Http/Controllers/FetchController.php index c9875155..ef0fd4c4 100644 --- a/app/Http/Controllers/FetchController.php +++ b/app/Http/Controllers/FetchController.php @@ -34,12 +34,10 @@ public function getTags(Request $request): JsonResponse if (!$tags->isEmpty()) { // Properly format the results to be used by Selectize - $tags = $tags->map(function ($item) { - return [ - 'value' => $item->name, - 'text' => $item->name, - ]; - }); + $tags = $tags->map(fn($item) => [ + 'value' => $item->name, + 'text' => $item->name, + ]); } return response()->json($tags); @@ -66,12 +64,10 @@ public function getLists(Request $request): JsonResponse if (!$tags->isEmpty()) { // Properly format the results to be used by Selectize - $tags = $tags->map(function ($item) { - return [ - 'value' => $item->name, - 'text' => $item->name, - ]; - }); + $tags = $tags->map(fn($item) => [ + 'value' => $item->name, + 'text' => $item->name, + ]); } return response()->json($tags); diff --git a/app/Http/Controllers/FrontController.php b/app/Http/Controllers/FrontController.php index be5ba3c9..b61c6f64 100644 --- a/app/Http/Controllers/FrontController.php +++ b/app/Http/Controllers/FrontController.php @@ -11,7 +11,7 @@ class FrontController extends Controller * The front controller checks if the user is authenticated and the guest * access is enabled, and redirects the request accordingly. * - * @return RedirectResponse|View + * @return RedirectResponse */ public function __invoke() { diff --git a/app/Http/Middleware/GuestAccess.php b/app/Http/Middleware/GuestAccess.php index 29063d71..f543180d 100644 --- a/app/Http/Middleware/GuestAccess.php +++ b/app/Http/Middleware/GuestAccess.php @@ -14,7 +14,7 @@ class GuestAccess * @param Closure $next * @return mixed */ - public function handle(Request $request, Closure $next) + public function handle(Request $request, Closure $next): mixed { // Check for logged in users if (auth()->check()) { diff --git a/app/Http/Middleware/RedirectIfAuthenticated.php b/app/Http/Middleware/RedirectIfAuthenticated.php index c507152f..7d554be3 100644 --- a/app/Http/Middleware/RedirectIfAuthenticated.php +++ b/app/Http/Middleware/RedirectIfAuthenticated.php @@ -16,7 +16,7 @@ class RedirectIfAuthenticated * @param string|null $guard * @return mixed */ - public function handle(Request $request, Closure $next, $guard = null) + public function handle(Request $request, Closure $next, $guard = null): mixed { if (Auth::guard($guard)->check()) { return redirect('/dashboard'); diff --git a/app/Http/Middleware/SettingsMiddleware.php b/app/Http/Middleware/SettingsMiddleware.php index d14d776f..a026f803 100644 --- a/app/Http/Middleware/SettingsMiddleware.php +++ b/app/Http/Middleware/SettingsMiddleware.php @@ -14,7 +14,7 @@ class SettingsMiddleware * @param Closure $next * @return mixed */ - public function handle(Request $request, Closure $next) + public function handle(Request $request, Closure $next): mixed { if (!setupCompleted()) { return $next($request); diff --git a/app/Http/Middleware/SetupCheckMiddleware.php b/app/Http/Middleware/SetupCheckMiddleware.php index 8b3c814d..5753f79e 100644 --- a/app/Http/Middleware/SetupCheckMiddleware.php +++ b/app/Http/Middleware/SetupCheckMiddleware.php @@ -20,7 +20,7 @@ class SetupCheckMiddleware * @param Closure $next * @return mixed */ - public function handle(Request $request, Closure $next) + public function handle(Request $request, Closure $next): mixed { if (config('app.key') === self::GENERIC_APP_KEY) { $envContent = File::get(base_path('.env')); diff --git a/app/Http/Requests/Models/LinkStoreRequest.php b/app/Http/Requests/Models/LinkStoreRequest.php index 0870dad5..87316862 100644 --- a/app/Http/Requests/Models/LinkStoreRequest.php +++ b/app/Http/Requests/Models/LinkStoreRequest.php @@ -28,9 +28,7 @@ public function rules(): array 'url' => [ 'required', 'string', - Rule::unique('links')->where(function ($query) { - return $query->where('user_id', auth()->user()->id); - }), + Rule::unique('links')->where(fn($query) => $query->where('user_id', auth()->user()->id)), ], 'title' => 'nullable|string', 'description' => 'nullable|string', diff --git a/app/Http/Requests/Models/LinkUpdateRequest.php b/app/Http/Requests/Models/LinkUpdateRequest.php index 50771cdc..a92c9229 100644 --- a/app/Http/Requests/Models/LinkUpdateRequest.php +++ b/app/Http/Requests/Models/LinkUpdateRequest.php @@ -46,9 +46,7 @@ public function rules(): array if ($this->requireUniqueUrl) { $rules['url'] = [ 'required', - Rule::unique('links')->where(function ($query) { - return $query->where('user_id', auth()->id()); - }), + Rule::unique('links')->where(fn($query) => $query->where('user_id', auth()->id())), ]; } diff --git a/app/Http/Requests/Models/ListUpdateRequest.php b/app/Http/Requests/Models/ListUpdateRequest.php index f5e13c27..cbc7e810 100644 --- a/app/Http/Requests/Models/ListUpdateRequest.php +++ b/app/Http/Requests/Models/ListUpdateRequest.php @@ -47,9 +47,7 @@ public function rules(): array if ($this->requireUniqueName) { $rules['name'] = [ 'required', - Rule::unique('lists')->where(function ($query) { - return $query->where('user_id', auth()->id()); - }), + Rule::unique('lists')->where(fn($query) => $query->where('user_id', auth()->id())), ]; } diff --git a/app/Http/Requests/Models/TagStoreRequest.php b/app/Http/Requests/Models/TagStoreRequest.php index 167bc82d..6cd15a9c 100644 --- a/app/Http/Requests/Models/TagStoreRequest.php +++ b/app/Http/Requests/Models/TagStoreRequest.php @@ -27,9 +27,7 @@ public function rules(): array return [ 'name' => [ 'required', - Rule::unique('tags')->where(function ($query) { - return $query->where('user_id', auth()->user()->id); - }), + Rule::unique('tags')->where(fn($query) => $query->where('user_id', auth()->user()->id)), ], 'is_private' => 'sometimes|boolean', ]; diff --git a/app/Http/Requests/Models/TagUpdateRequest.php b/app/Http/Requests/Models/TagUpdateRequest.php index 341a3d4e..eafc0000 100644 --- a/app/Http/Requests/Models/TagUpdateRequest.php +++ b/app/Http/Requests/Models/TagUpdateRequest.php @@ -41,9 +41,7 @@ public function rules(): array if ($this->requireUniqueName) { $rules['name'] = [ 'required', - Rule::unique('tags')->where(function ($query) { - return $query->where('user_id', auth()->id()); - }), + Rule::unique('tags')->where(fn($query) => $query->where('user_id', auth()->id())), ]; } diff --git a/app/Jobs/SaveLinkToWaybackmachine.php b/app/Jobs/SaveLinkToWaybackmachine.php index 10a31c28..87d7269e 100644 --- a/app/Jobs/SaveLinkToWaybackmachine.php +++ b/app/Jobs/SaveLinkToWaybackmachine.php @@ -14,17 +14,13 @@ class SaveLinkToWaybackmachine implements ShouldQueue { use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; - /** @var Link */ - protected $link; - /** * Create a new job instance. * * @param Link $link */ - public function __construct(Link $link) + public function __construct(protected Link $link) { - $this->link = $link; } /** diff --git a/app/Models/LinkList.php b/app/Models/LinkList.php index 2cf35691..f190fb54 100644 --- a/app/Models/LinkList.php +++ b/app/Models/LinkList.php @@ -109,7 +109,7 @@ public function scopePublicOnly(Builder $query): Builder */ public function user(): BelongsTo { - return $this->belongsTo('App\Models\User', 'user_id'); + return $this->belongsTo(User::class, 'user_id'); } /** @@ -117,7 +117,7 @@ public function user(): BelongsTo */ public function links(): BelongsToMany { - return $this->belongsToMany('App\Models\Link', 'link_lists', 'list_id', 'link_id'); + return $this->belongsToMany(Link::class, 'link_lists', 'list_id', 'link_id'); } /* diff --git a/app/Models/Note.php b/app/Models/Note.php index 1728a8cf..8a084940 100644 --- a/app/Models/Note.php +++ b/app/Models/Note.php @@ -73,7 +73,7 @@ public function scopeByUser(Builder $query, int $user_id): Builder */ public function user(): BelongsTo { - return $this->belongsTo('App\Models\User', 'user_id'); + return $this->belongsTo(User::class, 'user_id'); } /** @@ -81,7 +81,7 @@ public function user(): BelongsTo */ public function link(): BelongsTo { - return $this->belongsTo('App\Models\Link', 'link_id'); + return $this->belongsTo(Link::class, 'link_id'); } /* diff --git a/app/Models/Tag.php b/app/Models/Tag.php index 82488c64..ae01f282 100644 --- a/app/Models/Tag.php +++ b/app/Models/Tag.php @@ -106,7 +106,7 @@ public function scopePublicOnly(Builder $query): Builder */ public function user(): BelongsTo { - return $this->belongsTo('App\Models\User', 'user_id'); + return $this->belongsTo(User::class, 'user_id'); } /** @@ -114,7 +114,7 @@ public function user(): BelongsTo */ public function links(): BelongsToMany { - return $this->belongsToMany('App\Models\Link', 'link_tags', 'tag_id', 'link_id'); + return $this->belongsToMany(Link::class, 'link_tags', 'tag_id', 'link_id'); } /* diff --git a/app/Models/User.php b/app/Models/User.php index 21f5f3b1..2601d4cf 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -58,8 +58,6 @@ public function settings(): \Illuminate\Support\Collection $this->load('rawSettings'); } - return $this->rawSettings->mapWithKeys(function ($item) { - return [$item['key'] => $item['value']]; - }); + return $this->rawSettings->mapWithKeys(fn($item) => [$item['key'] => $item['value']]); } } diff --git a/app/Notifications/LinkCheckNotification.php b/app/Notifications/LinkCheckNotification.php index 5e7d10aa..f1fe1ef6 100644 --- a/app/Notifications/LinkCheckNotification.php +++ b/app/Notifications/LinkCheckNotification.php @@ -10,21 +10,13 @@ class LinkCheckNotification extends Notification { use Queueable; - /** @var array */ - public $movedLinks = []; - - /** @var array */ - public $brokenLinks = []; - /** * Create a new notification instance. * * @return void */ - public function __construct($moved_links, $broken_links) + public function __construct(public array $movedLinks, public array $brokenLinks) { - $this->movedLinks = $moved_links; - $this->brokenLinks = $broken_links; } /** diff --git a/app/Providers/FortifyServiceProvider.php b/app/Providers/FortifyServiceProvider.php index b49e4fab..edeb52a7 100644 --- a/app/Providers/FortifyServiceProvider.php +++ b/app/Providers/FortifyServiceProvider.php @@ -33,24 +33,14 @@ public function boot(): void Fortify::updateUserPasswordsUsing(UpdateUserPassword::class); Fortify::resetUserPasswordsUsing(ResetUserPassword::class); - Fortify::loginView(function () { - return view('auth.login'); - }); + Fortify::loginView(fn() => view('auth.login')); - Fortify::requestPasswordResetLinkView(function () { - return view('auth.passwords.email'); - }); + Fortify::requestPasswordResetLinkView(fn() => view('auth.passwords.email')); - Fortify::resetPasswordView(function () { - return view('auth.passwords.reset'); - }); + Fortify::resetPasswordView(fn() => view('auth.passwords.reset')); - Fortify::confirmPasswordView(function () { - return view('auth.confirm-password'); - }); + Fortify::confirmPasswordView(fn() => view('auth.confirm-password')); - Fortify::twoFactorChallengeView(function () { - return view('auth.two-factor-challenge'); - }); + Fortify::twoFactorChallengeView(fn() => view('auth.two-factor-challenge')); } } diff --git a/app/Repositories/LinkRepository.php b/app/Repositories/LinkRepository.php index 229004ab..ef8e61db 100644 --- a/app/Repositories/LinkRepository.php +++ b/app/Repositories/LinkRepository.php @@ -30,8 +30,8 @@ public static function create(array $data, bool $flashAlerts = false): Link { $linkMeta = (new HtmlMeta)->getFromUrl($data['url'], $flashAlerts); - $data['title'] = $data['title'] ?? $linkMeta['title']; - $data['description'] = $data['description'] ?? $linkMeta['description']; + $data['title'] ??= $linkMeta['title']; + $data['description'] ??= $linkMeta['description']; $data['user_id'] = auth()->user()->id; $data['icon'] = LinkIconMapper::mapLink($data['url']); $data['thumbnail'] = $linkMeta['thumbnail']; diff --git a/app/Repositories/NoteRepository.php b/app/Repositories/NoteRepository.php index 535def1c..4b468d17 100644 --- a/app/Repositories/NoteRepository.php +++ b/app/Repositories/NoteRepository.php @@ -26,7 +26,7 @@ public static function create(array $data): Note */ public static function update(Note $note, array $data): Note { - $data['is_private'] = $data['is_private'] ?? false; + $data['is_private'] ??= false; $note->update($data); diff --git a/app/Repositories/TrashRepository.php b/app/Repositories/TrashRepository.php index e29c6df1..6acd5154 100644 --- a/app/Repositories/TrashRepository.php +++ b/app/Repositories/TrashRepository.php @@ -59,22 +59,13 @@ public static function delete(string $model): bool */ public static function restore(string $model, int $id): bool { - switch ($model) { - case 'link': - $entry = Link::withTrashed()->findOrFail($id); - break; - case 'list': - $entry = LinkList::withTrashed()->findOrFail($id); - break; - case 'tag': - $entry = Tag::withTrashed()->findOrFail($id); - break; - case 'note': - $entry = Note::withTrashed()->findOrFail($id); - break; - default: - $entry = null; - } + $entry = match ($model) { + 'link' => Link::withTrashed()->findOrFail($id), + 'list' => LinkList::withTrashed()->findOrFail($id), + 'tag' => Tag::withTrashed()->findOrFail($id), + 'note' => Note::withTrashed()->findOrFail($id), + default => null, + }; $entry->restore(); diff --git a/app/View/Components/Links/HistoryEntry.php b/app/View/Components/Links/HistoryEntry.php index a8162940..f887ca00 100644 --- a/app/View/Components/Links/HistoryEntry.php +++ b/app/View/Components/Links/HistoryEntry.php @@ -35,12 +35,8 @@ */ class HistoryEntry extends Component { - /** @var Revision */ - private $entry; - - public function __construct(Revision $entry) + public function __construct(private Revision $entry) { - $this->entry = $entry; } public function render() diff --git a/database/factories/LinkFactory.php b/database/factories/LinkFactory.php index 17640a9a..8f3f24e3 100644 --- a/database/factories/LinkFactory.php +++ b/database/factories/LinkFactory.php @@ -26,10 +26,10 @@ public function definition(): array { return [ 'user_id' => User::first()->id ?? User::factory(), - 'url' => $this->faker->url, + 'url' => $this->faker->url(), 'title' => $this->faker->boolean(70) ? $this->faker->words(random_int(2, 5), true) - : $this->faker->domainName, + : $this->faker->domainName(), 'description' => $this->faker->boolean(70) ? $this->faker->sentences(random_int(1, 3), true) : null, 'is_private' => $this->faker->boolean(10), 'check_disabled' => false, diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php index 5e75f627..7a8497d4 100644 --- a/database/factories/UserFactory.php +++ b/database/factories/UserFactory.php @@ -23,8 +23,8 @@ class UserFactory extends Factory public function definition(): array { return [ - 'name' => $this->faker->userName, - 'email' => $this->faker->unique()->safeEmail, + 'name' => $this->faker->userName(), + 'email' => $this->faker->unique()->safeEmail(), 'password' => '$2y$10$9.preebMjZ.8obdvk5ZVdOCw7Cq1EJm6i1B1RJevxCXYW0lUiwDJG', // secretpassword 'api_token' => Str::random(32), ]; diff --git a/database/migrations/2013_04_09_062329_create_revisions_table.php b/database/migrations/2013_04_09_062329_create_revisions_table.php index fdd5b1e8..dc954993 100644 --- a/database/migrations/2013_04_09_062329_create_revisions_table.php +++ b/database/migrations/2013_04_09_062329_create_revisions_table.php @@ -9,7 +9,7 @@ class CreateRevisionsTable extends Migration * * @return void */ - public function up() + public function up(): void { Schema::create('revisions', function ($table) { $table->increments('id'); @@ -30,7 +30,7 @@ public function up() * * @return void */ - public function down() + public function down(): void { Schema::drop('revisions'); } diff --git a/database/migrations/2014_10_12_000000_create_users_table.php b/database/migrations/2014_10_12_000000_create_users_table.php index 689cbeea..4000d444 100644 --- a/database/migrations/2014_10_12_000000_create_users_table.php +++ b/database/migrations/2014_10_12_000000_create_users_table.php @@ -11,7 +11,7 @@ class CreateUsersTable extends Migration * * @return void */ - public function up() + public function up(): void { Schema::create('users', function (Blueprint $table) { $table->increments('id'); @@ -28,7 +28,7 @@ public function up() * * @return void */ - public function down() + public function down(): void { Schema::dropIfExists('users'); } diff --git a/database/migrations/2014_10_12_100000_create_password_resets_table.php b/database/migrations/2014_10_12_100000_create_password_resets_table.php index 0d5cb845..2768a2bc 100644 --- a/database/migrations/2014_10_12_100000_create_password_resets_table.php +++ b/database/migrations/2014_10_12_100000_create_password_resets_table.php @@ -11,7 +11,7 @@ class CreatePasswordResetsTable extends Migration * * @return void */ - public function up() + public function up(): void { Schema::create('password_resets', function (Blueprint $table) { $table->string('email')->index(); @@ -25,7 +25,7 @@ public function up() * * @return void */ - public function down() + public function down(): void { Schema::dropIfExists('password_resets'); } diff --git a/database/migrations/2014_10_12_200000_add_two_factor_columns_to_users_table.php b/database/migrations/2014_10_12_200000_add_two_factor_columns_to_users_table.php index f4500c98..d5e08b3f 100644 --- a/database/migrations/2014_10_12_200000_add_two_factor_columns_to_users_table.php +++ b/database/migrations/2014_10_12_200000_add_two_factor_columns_to_users_table.php @@ -11,7 +11,7 @@ class AddTwoFactorColumnsToUsersTable extends Migration * * @return void */ - public function up() + public function up(): void { Schema::table('users', function (Blueprint $table) { $table->text('two_factor_secret') @@ -29,7 +29,7 @@ public function up() * * @return void */ - public function down() + public function down(): void { Schema::table('users', function (Blueprint $table) { $table->dropColumn('two_factor_secret', 'two_factor_recovery_codes'); diff --git a/database/migrations/2018_08_22_212248_create_taxonomy_tables.php b/database/migrations/2018_08_22_212248_create_taxonomy_tables.php index b61ce6fd..85e2317f 100644 --- a/database/migrations/2018_08_22_212248_create_taxonomy_tables.php +++ b/database/migrations/2018_08_22_212248_create_taxonomy_tables.php @@ -11,7 +11,7 @@ class CreateTaxonomyTables extends Migration * * @return void */ - public function up() + public function up(): void { // Tags Schema::create('tags', function (Blueprint $table) { @@ -48,7 +48,7 @@ public function up() * * @return void */ - public function down() + public function down(): void { Schema::dropIfExists('tags'); Schema::dropIfExists('link_tags'); diff --git a/database/migrations/2018_08_22_212358_create_link_tables.php b/database/migrations/2018_08_22_212358_create_link_tables.php index 59306fde..077711d3 100644 --- a/database/migrations/2018_08_22_212358_create_link_tables.php +++ b/database/migrations/2018_08_22_212358_create_link_tables.php @@ -11,7 +11,7 @@ class CreateLinkTables extends Migration * * @return void */ - public function up() + public function up(): void { Schema::create('links', function (Blueprint $table) { $table->increments('id'); @@ -31,7 +31,7 @@ public function up() * * @return void */ - public function down() + public function down(): void { Schema::dropIfExists('links'); } diff --git a/database/migrations/2018_08_22_213055_create_note_tables.php b/database/migrations/2018_08_22_213055_create_note_tables.php index a8823db5..b6f11cc9 100644 --- a/database/migrations/2018_08_22_213055_create_note_tables.php +++ b/database/migrations/2018_08_22_213055_create_note_tables.php @@ -11,7 +11,7 @@ class CreateNoteTables extends Migration * * @return void */ - public function up() + public function up(): void { Schema::create('notes', function (Blueprint $table) { $table->increments('id'); @@ -29,7 +29,7 @@ public function up() * * @return void */ - public function down() + public function down(): void { Schema::dropIfExists('notes'); } diff --git a/database/migrations/2018_09_27_214216_create_settings_table.php b/database/migrations/2018_09_27_214216_create_settings_table.php index 1d98db79..e75f1bee 100644 --- a/database/migrations/2018_09_27_214216_create_settings_table.php +++ b/database/migrations/2018_09_27_214216_create_settings_table.php @@ -11,7 +11,7 @@ class CreateSettingsTable extends Migration * * @return void */ - public function up() + public function up(): void { Schema::create('settings', function (Blueprint $table) { $table->increments('id'); @@ -26,7 +26,7 @@ public function up() * * @return void */ - public function down() + public function down(): void { Schema::dropIfExists('settings'); } diff --git a/database/migrations/2019_01_30_153129_update_link_table_for_icon.php b/database/migrations/2019_01_30_153129_update_link_table_for_icon.php index 95ae5be0..b755c6a4 100644 --- a/database/migrations/2019_01_30_153129_update_link_table_for_icon.php +++ b/database/migrations/2019_01_30_153129_update_link_table_for_icon.php @@ -11,7 +11,7 @@ class UpdateLinkTableForIcon extends Migration * * @return void */ - public function up() + public function up(): void { Schema::table('links', function (Blueprint $table) { $table->string('icon')->nullable()->after('description'); @@ -23,7 +23,7 @@ public function up() * * @return void */ - public function down() + public function down(): void { Schema::table('links', function (Blueprint $table) { $table->dropColumn('icon'); diff --git a/database/migrations/2019_02_07_223113_add_user_api_token.php b/database/migrations/2019_02_07_223113_add_user_api_token.php index 98a8b735..dfd0cef9 100644 --- a/database/migrations/2019_02_07_223113_add_user_api_token.php +++ b/database/migrations/2019_02_07_223113_add_user_api_token.php @@ -11,7 +11,7 @@ class AddUserApiToken extends Migration * * @return void */ - public function up() + public function up(): void { Schema::table('users', function (Blueprint $table) { $table->string('api_token')->nullable()->after('remember_token'); @@ -23,7 +23,7 @@ public function up() * * @return void */ - public function down() + public function down(): void { Schema::table('users', function (Blueprint $table) { $table->dropColumn('api_token'); diff --git a/database/migrations/2019_02_10_221213_create_permission_tables.php b/database/migrations/2019_02_10_221213_create_permission_tables.php index 33b1e669..bae1c98f 100644 --- a/database/migrations/2019_02_10_221213_create_permission_tables.php +++ b/database/migrations/2019_02_10_221213_create_permission_tables.php @@ -11,7 +11,7 @@ class CreatePermissionTables extends Migration * * @return void */ - public function up() + public function up(): void { $tableNames = config('permission.table_names'); $columnNames = config('permission.column_names'); @@ -30,36 +30,43 @@ public function up() $table->timestamps(); }); - Schema::create($tableNames['model_has_permissions'], function (Blueprint $table) use ($tableNames, $columnNames) { - $table->unsignedInteger('permission_id'); + Schema::create( + $tableNames['model_has_permissions'], + function (Blueprint $table) use ($tableNames, $columnNames) { + $table->unsignedInteger('permission_id'); - $table->string('model_type'); - $table->unsignedBigInteger($columnNames['model_morph_key']); - $table->index([$columnNames['model_morph_key'], 'model_type', ]); + $table->string('model_type'); + $table->unsignedBigInteger($columnNames['model_morph_key']); + $table->index([$columnNames['model_morph_key'], 'model_type',]); - $table->foreign('permission_id') - ->references('id') - ->on($tableNames['permissions']) - ->onDelete('cascade'); + $table->foreign('permission_id') + ->references('id') + ->on($tableNames['permissions']) + ->onDelete('cascade'); - $table->primary(['permission_id', $columnNames['model_morph_key'], 'model_type'], - 'model_has_permissions_permission_model_type_primary'); - }); + $table->primary( + ['permission_id', $columnNames['model_morph_key'], 'model_type'], + 'model_has_permissions_permission_model_type_primary' + ); + } + ); Schema::create($tableNames['model_has_roles'], function (Blueprint $table) use ($tableNames, $columnNames) { $table->unsignedInteger('role_id'); $table->string('model_type'); $table->unsignedBigInteger($columnNames['model_morph_key']); - $table->index([$columnNames['model_morph_key'], 'model_type', ]); + $table->index([$columnNames['model_morph_key'], 'model_type',]); $table->foreign('role_id') ->references('id') ->on($tableNames['roles']) ->onDelete('cascade'); - $table->primary(['role_id', $columnNames['model_morph_key'], 'model_type'], - 'model_has_roles_role_model_type_primary'); + $table->primary( + ['role_id', $columnNames['model_morph_key'], 'model_type'], + 'model_has_roles_role_model_type_primary' + ); }); Schema::create($tableNames['role_has_permissions'], function (Blueprint $table) use ($tableNames) { @@ -77,9 +84,9 @@ public function up() ->onDelete('cascade'); $table->primary(['permission_id', 'role_id']); - + app('cache') - ->store(config('permission.cache.store') != 'default' ? config('permission.cache.store') : null) + ->store(config('permission.cache.store') !== 'default' ? config('permission.cache.store') : null) ->forget(config('permission.cache.key')); }); } @@ -89,7 +96,7 @@ public function up() * * @return void */ - public function down() + public function down(): void { $tableNames = config('permission.table_names'); diff --git a/database/migrations/2019_02_11_143743_add_link_status.php b/database/migrations/2019_02_11_143743_add_link_status.php index e38a86a3..7b387c99 100644 --- a/database/migrations/2019_02_11_143743_add_link_status.php +++ b/database/migrations/2019_02_11_143743_add_link_status.php @@ -11,7 +11,7 @@ class AddLinkStatus extends Migration * * @return void */ - public function up() + public function up(): void { Schema::table('links', function (Blueprint $table) { $table->integer('status')->default(1)->after('is_private'); @@ -23,7 +23,7 @@ public function up() * * @return void */ - public function down() + public function down(): void { Schema::table('links', function (Blueprint $table) { $table->dropColumn('status'); diff --git a/database/migrations/2019_07_16_173805_create_jobs_table.php b/database/migrations/2019_07_16_173805_create_jobs_table.php index 58d77154..9ecf7326 100644 --- a/database/migrations/2019_07_16_173805_create_jobs_table.php +++ b/database/migrations/2019_07_16_173805_create_jobs_table.php @@ -11,7 +11,7 @@ class CreateJobsTable extends Migration * * @return void */ - public function up() + public function up(): void { Schema::create('jobs', function (Blueprint $table) { $table->bigIncrements('id'); @@ -29,7 +29,7 @@ public function up() * * @return void */ - public function down() + public function down(): void { Schema::dropIfExists('jobs'); } diff --git a/database/migrations/2019_07_16_175247_create_failed_jobs_table.php b/database/migrations/2019_07_16_175247_create_failed_jobs_table.php index d432dff0..d94a5fb1 100644 --- a/database/migrations/2019_07_16_175247_create_failed_jobs_table.php +++ b/database/migrations/2019_07_16_175247_create_failed_jobs_table.php @@ -11,7 +11,7 @@ class CreateFailedJobsTable extends Migration * * @return void */ - public function up() + public function up(): void { Schema::create('failed_jobs', function (Blueprint $table) { $table->bigIncrements('id'); @@ -28,7 +28,7 @@ public function up() * * @return void */ - public function down() + public function down(): void { Schema::dropIfExists('failed_jobs'); } diff --git a/database/migrations/2019_10_29_135735_move_category_to_list_table.php b/database/migrations/2019_10_29_135735_move_category_to_list_table.php index 7fd32db6..8b2e14a8 100644 --- a/database/migrations/2019_10_29_135735_move_category_to_list_table.php +++ b/database/migrations/2019_10_29_135735_move_category_to_list_table.php @@ -13,7 +13,7 @@ class MoveCategoryToListTable extends Migration * * @return void */ - public function up() + public function up(): void { // First, move child categories to list titles DB::table('categories')->whereNotNull('parent_category')->get()->each(function ($item) { @@ -54,7 +54,7 @@ public function up() * * @return void */ - public function down() + public function down(): void { Schema::table('lists', function (Blueprint $table) { $table->rename('categories'); diff --git a/database/migrations/2020_02_28_153446_add_check_disabled_to_links_table.php b/database/migrations/2020_02_28_153446_add_check_disabled_to_links_table.php index 96aaefc9..82b06d39 100644 --- a/database/migrations/2020_02_28_153446_add_check_disabled_to_links_table.php +++ b/database/migrations/2020_02_28_153446_add_check_disabled_to_links_table.php @@ -11,7 +11,7 @@ class AddCheckDisabledToLinksTable extends Migration * * @return void */ - public function up() + public function up(): void { Schema::table('links', function (Blueprint $table) { $table->boolean('check_disabled')->default(false)->after('status'); @@ -23,7 +23,7 @@ public function up() * * @return void */ - public function down() + public function down(): void { Schema::table('links', function (Blueprint $table) { $table->dropColumn(['check_disabled']); diff --git a/database/migrations/2020_05_04_230306_convert_link_privacy_setting.php b/database/migrations/2020_05_04_230306_convert_link_privacy_setting.php index 8f01286a..496b8733 100644 --- a/database/migrations/2020_05_04_230306_convert_link_privacy_setting.php +++ b/database/migrations/2020_05_04_230306_convert_link_privacy_setting.php @@ -10,7 +10,7 @@ class ConvertLinkPrivacySetting extends Migration * * @return void */ - public function up() + public function up(): void { Setting::create([ 'user_id' => 1, @@ -24,7 +24,7 @@ public function up() * * @return void */ - public function down() + public function down(): void { // } diff --git a/database/migrations/2020_05_06_153715_enable_internet_archive_backup_setting.php b/database/migrations/2020_05_06_153715_enable_internet_archive_backup_setting.php index 45f9ef47..ec7e6174 100644 --- a/database/migrations/2020_05_06_153715_enable_internet_archive_backup_setting.php +++ b/database/migrations/2020_05_06_153715_enable_internet_archive_backup_setting.php @@ -10,7 +10,7 @@ class EnableInternetArchiveBackupSetting extends Migration * * @return void */ - public function up() + public function up(): void { Setting::create([ 'user_id' => 1, @@ -30,7 +30,7 @@ public function up() * * @return void */ - public function down() + public function down(): void { Setting::where('key', 'archive_backups_enabled')->delete(); Setting::where('key', 'archive_private_backups_enabled')->delete(); diff --git a/database/migrations/2020_10_21_104548_migrate_link_icons.php b/database/migrations/2020_10_21_104548_migrate_link_icons.php index 9ae63ca4..a03a925e 100644 --- a/database/migrations/2020_10_21_104548_migrate_link_icons.php +++ b/database/migrations/2020_10_21_104548_migrate_link_icons.php @@ -95,7 +95,7 @@ class MigrateLinkIcons extends Migration * * @return void */ - public function up() + public function up(): void { Link::withTrashed()->chunk(100, function ($links) { /** @var Link $link */ @@ -111,7 +111,7 @@ public function up() * * @return void */ - public function down() + public function down(): void { // } diff --git a/database/migrations/2021_04_15_165138_add_thumbnail_column_to_links_table.php b/database/migrations/2021_04_15_165138_add_thumbnail_column_to_links_table.php index 8c9893a7..20a40054 100644 --- a/database/migrations/2021_04_15_165138_add_thumbnail_column_to_links_table.php +++ b/database/migrations/2021_04_15_165138_add_thumbnail_column_to_links_table.php @@ -11,7 +11,7 @@ class AddThumbnailColumnToLinksTable extends Migration * * @return void */ - public function up() + public function up(): void { Schema::table('links', function (Blueprint $table) { $table->string('thumbnail', 255)->nullable()->default(null)->after('icon'); @@ -23,7 +23,7 @@ public function up() * * @return void */ - public function down() + public function down(): void { Schema::table('links', function (Blueprint $table) { $table->dropColumn('thumbnail'); diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 1313cb70..63316fc4 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -11,7 +11,7 @@ class DatabaseSeeder extends Seeder * * @return void */ - public function run() + public function run(): void { //$this->call(PermissionSeeder::class); } diff --git a/tests/Commands/CheckLinksCommandTest.php b/tests/Commands/CheckLinksCommandTest.php index 702192c2..5e6a00ab 100644 --- a/tests/Commands/CheckLinksCommandTest.php +++ b/tests/Commands/CheckLinksCommandTest.php @@ -69,9 +69,7 @@ public function testCheckWithMovedLinks(): void Notification::assertSentTo( $this->user, LinkCheckNotification::class, - function (LinkCheckNotification $notification, $channels) { - return count($notification->movedLinks) === 1; - } + fn(LinkCheckNotification $notification, $channels) => count($notification->movedLinks) === 1 ); } @@ -90,9 +88,7 @@ public function testCheckWithBrokenLinks(): void Notification::assertSentTo( $this->user, LinkCheckNotification::class, - function (LinkCheckNotification $notification, $channels) { - return count($notification->brokenLinks) === 1; - } + fn(LinkCheckNotification $notification, $channels) => count($notification->brokenLinks) === 1 ); } diff --git a/tests/Controller/App/ExportControllerTest.php b/tests/Controller/App/ExportControllerTest.php index a65d50ea..284b284f 100644 --- a/tests/Controller/App/ExportControllerTest.php +++ b/tests/Controller/App/ExportControllerTest.php @@ -13,7 +13,7 @@ class ExportControllerTest extends TestCase private $user; - public function setUp(): void + protected function setUp(): void { parent::setUp(); diff --git a/tests/Controller/App/SearchControllerTest.php b/tests/Controller/App/SearchControllerTest.php index 94abe511..55c2ea5c 100644 --- a/tests/Controller/App/SearchControllerTest.php +++ b/tests/Controller/App/SearchControllerTest.php @@ -15,7 +15,7 @@ class SearchControllerTest extends TestCase private $user; - public function setUp(): void + protected function setUp(): void { parent::setUp(); diff --git a/tests/Controller/App/SystemSettingsControllerTest.php b/tests/Controller/App/SystemSettingsControllerTest.php index 4357d7bd..e8ccf4fa 100644 --- a/tests/Controller/App/SystemSettingsControllerTest.php +++ b/tests/Controller/App/SystemSettingsControllerTest.php @@ -13,7 +13,7 @@ class SystemSettingsControllerTest extends TestCase /** @var User */ private $user; - public function setUp(): void + protected function setUp(): void { parent::setUp(); diff --git a/tests/Controller/App/TrashControllerTest.php b/tests/Controller/App/TrashControllerTest.php index 592cd67f..2c0a2051 100644 --- a/tests/Controller/App/TrashControllerTest.php +++ b/tests/Controller/App/TrashControllerTest.php @@ -20,7 +20,7 @@ class TrashControllerTest extends TestCase /** @var User */ private $user; - public function setUp(): void + protected function setUp(): void { parent::setUp(); diff --git a/tests/Controller/App/UserSettingsControllerTest.php b/tests/Controller/App/UserSettingsControllerTest.php index bb681372..0ccc8d5e 100644 --- a/tests/Controller/App/UserSettingsControllerTest.php +++ b/tests/Controller/App/UserSettingsControllerTest.php @@ -14,7 +14,7 @@ class UserSettingsControllerTest extends TestCase /** @var User */ private $user; - public function setUp(): void + protected function setUp(): void { parent::setUp(); diff --git a/tests/CreatesApplication.php b/tests/CreatesApplication.php index ab924025..e4c5d32b 100644 --- a/tests/CreatesApplication.php +++ b/tests/CreatesApplication.php @@ -11,7 +11,7 @@ trait CreatesApplication * * @return \Illuminate\Foundation\Application */ - public function createApplication() + public function createApplication(): \Illuminate\Foundation\Application { $app = require __DIR__ . '/../bootstrap/app.php'; diff --git a/tests/Database/ExampleSeedingTest.php b/tests/Database/ExampleSeedingTest.php index e3b0c8b5..1f0c1783 100644 --- a/tests/Database/ExampleSeedingTest.php +++ b/tests/Database/ExampleSeedingTest.php @@ -15,7 +15,7 @@ class ExampleSeedingTest extends TestCase use DatabaseTransactions; use DatabaseMigrations; - public function setUp(): void + protected function setUp(): void { parent::setUp(); diff --git a/tests/Helper/HelperFunctionsTest.php b/tests/Helper/HelperFunctionsTest.php index 8b1ec13e..4a5e4dbb 100644 --- a/tests/Helper/HelperFunctionsTest.php +++ b/tests/Helper/HelperFunctionsTest.php @@ -18,7 +18,7 @@ class HelperFunctionsTest extends TestCase /** @var Link */ private $link; - public function setUp(): void + protected function setUp(): void { parent::setUp(); diff --git a/tests/Models/Link/DuplicateSearchTest.php b/tests/Models/Link/DuplicateSearchTest.php index 3aa92bb0..246a9f9e 100644 --- a/tests/Models/Link/DuplicateSearchTest.php +++ b/tests/Models/Link/DuplicateSearchTest.php @@ -16,7 +16,7 @@ class DuplicateSearchTest extends TestCase /** @var User */ private $user; - public function setUp(): void + protected function setUp(): void { parent::setUp(); diff --git a/tests/Models/LinkCreateTest.php b/tests/Models/LinkCreateTest.php index 645cffc4..495eb286 100644 --- a/tests/Models/LinkCreateTest.php +++ b/tests/Models/LinkCreateTest.php @@ -17,7 +17,7 @@ class LinkCreateTest extends TestCase /** @var User */ private $user; - public function setUp(): void + protected function setUp(): void { parent::setUp(); diff --git a/tests/Models/LinkDeleteTest.php b/tests/Models/LinkDeleteTest.php index c73562a4..a38b79b7 100644 --- a/tests/Models/LinkDeleteTest.php +++ b/tests/Models/LinkDeleteTest.php @@ -17,7 +17,7 @@ class LinkDeleteTest extends TestCase /** @var User */ private $user; - public function setUp(): void + protected function setUp(): void { parent::setUp(); diff --git a/tests/Models/LinkUpdateTest.php b/tests/Models/LinkUpdateTest.php index 88d7b7fc..e64f904f 100644 --- a/tests/Models/LinkUpdateTest.php +++ b/tests/Models/LinkUpdateTest.php @@ -17,7 +17,7 @@ class LinkUpdateTest extends TestCase /** @var User */ private $user; - public function setUp(): void + protected function setUp(): void { parent::setUp(); diff --git a/tests/Models/ListCreateTest.php b/tests/Models/ListCreateTest.php index 054e81be..9e982456 100644 --- a/tests/Models/ListCreateTest.php +++ b/tests/Models/ListCreateTest.php @@ -16,7 +16,7 @@ class ListCreateTest extends TestCase /** @var User */ private $user; - public function setUp(): void + protected function setUp(): void { parent::setUp(); diff --git a/tests/Models/ListDeleteTest.php b/tests/Models/ListDeleteTest.php index b48e3d9b..d4e483b9 100644 --- a/tests/Models/ListDeleteTest.php +++ b/tests/Models/ListDeleteTest.php @@ -17,7 +17,7 @@ class ListDeleteTest extends TestCase /** @var User */ private $user; - public function setUp(): void + protected function setUp(): void { parent::setUp(); diff --git a/tests/Models/ListUpdateTest.php b/tests/Models/ListUpdateTest.php index 2a043119..e4e7eef6 100644 --- a/tests/Models/ListUpdateTest.php +++ b/tests/Models/ListUpdateTest.php @@ -17,7 +17,7 @@ class ListUpdateTest extends TestCase /** @var User */ private $user; - public function setUp(): void + protected function setUp(): void { parent::setUp(); diff --git a/tests/Models/NoteCreateTest.php b/tests/Models/NoteCreateTest.php index ef0cf138..4e533a4a 100644 --- a/tests/Models/NoteCreateTest.php +++ b/tests/Models/NoteCreateTest.php @@ -17,7 +17,7 @@ class NoteCreateTest extends TestCase /** @var User */ private $user; - public function setUp(): void + protected function setUp(): void { parent::setUp(); diff --git a/tests/Models/NoteDeleteTest.php b/tests/Models/NoteDeleteTest.php index 14930b10..cef8fd6c 100644 --- a/tests/Models/NoteDeleteTest.php +++ b/tests/Models/NoteDeleteTest.php @@ -17,7 +17,7 @@ class NoteDeleteTest extends TestCase /** @var User */ private $user; - public function setUp(): void + protected function setUp(): void { parent::setUp(); diff --git a/tests/Models/NoteUpdateTest.php b/tests/Models/NoteUpdateTest.php index 0700f1af..c5f342aa 100644 --- a/tests/Models/NoteUpdateTest.php +++ b/tests/Models/NoteUpdateTest.php @@ -17,7 +17,7 @@ class NoteUpdateTest extends TestCase /** @var User */ private $user; - public function setUp(): void + protected function setUp(): void { parent::setUp(); diff --git a/tests/Models/TagCreateTest.php b/tests/Models/TagCreateTest.php index 92ddac37..cc873ac2 100644 --- a/tests/Models/TagCreateTest.php +++ b/tests/Models/TagCreateTest.php @@ -16,7 +16,7 @@ class TagCreateTest extends TestCase /** @var User */ private $user; - public function setUp(): void + protected function setUp(): void { parent::setUp(); diff --git a/tests/Models/TagDeleteTest.php b/tests/Models/TagDeleteTest.php index 1fcae3be..a82f793b 100644 --- a/tests/Models/TagDeleteTest.php +++ b/tests/Models/TagDeleteTest.php @@ -17,7 +17,7 @@ class TagDeleteTest extends TestCase /** @var User */ private $user; - public function setUp(): void + protected function setUp(): void { parent::setUp(); diff --git a/tests/Models/TagUpdateTest.php b/tests/Models/TagUpdateTest.php index 66df31ae..2f032ef0 100644 --- a/tests/Models/TagUpdateTest.php +++ b/tests/Models/TagUpdateTest.php @@ -17,7 +17,7 @@ class TagUpdateTest extends TestCase /** @var User */ private $user; - public function setUp(): void + protected function setUp(): void { parent::setUp(); From 433a319ca26cd5b716aff9d8d54bcec53418058c Mon Sep 17 00:00:00 2001 From: Kovah Date: Mon, 2 May 2022 17:04:21 +0200 Subject: [PATCH 03/86] Various code formatting fixes and optimizations --- app/Actions/ImportHtmlBookmarks.php | 2 +- app/Console/Commands/CheckLinksCommand.php | 2 +- .../Commands/CleanupLinkHistoriesCommand.php | 2 +- app/Helper/functions.php | 2 +- app/Http/Controllers/API/SearchController.php | 4 +-- app/Http/Controllers/App/ExportController.php | 4 +-- app/Http/Controllers/FetchController.php | 4 +-- app/Http/Requests/DoImportRequest.php | 6 +++- app/Http/Requests/Models/LinkStoreRequest.php | 28 ++++++++++++---- .../Models/LinkToggleCheckRequest.php | 5 ++- app/Http/Requests/Models/ListStoreRequest.php | 15 +++++++-- app/Http/Requests/Models/NoteStoreRequest.php | 13 ++++++-- .../Requests/Models/NoteUpdateRequest.php | 9 +++-- app/Http/Requests/Models/TagStoreRequest.php | 5 ++- app/Http/Requests/SearchRequest.php | 16 ++++++--- app/Http/Requests/SetupDatabaseRequest.php | 21 +++++++++--- .../Requests/SystemSettingsUpdateRequest.php | 33 ++++++++++++++----- app/Http/Requests/TrashClearRequest.php | 5 ++- app/Http/Requests/TrashRestoreRequest.php | 10 ++++-- .../Requests/UserSettingsUpdateRequest.php | 8 +++-- app/Models/Link.php | 2 +- app/Models/LinkList.php | 4 +-- app/Models/Note.php | 2 +- app/Models/Tag.php | 2 +- app/Models/User.php | 2 +- app/Scopes/OrderNameScope.php | 2 +- database/factories/LinkFactory.php | 7 ---- database/factories/LinkListFactory.php | 7 ---- database/factories/NoteFactory.php | 7 ---- database/factories/TagFactory.php | 7 ---- database/factories/UserFactory.php | 7 ---- 31 files changed, 152 insertions(+), 91 deletions(-) diff --git a/app/Actions/ImportHtmlBookmarks.php b/app/Actions/ImportHtmlBookmarks.php index 3763e8a2..267e00e5 100644 --- a/app/Actions/ImportHtmlBookmarks.php +++ b/app/Actions/ImportHtmlBookmarks.php @@ -6,7 +6,7 @@ use App\Helper\LinkIconMapper; use App\Models\Link; use App\Models\Tag; -use Carbon\Carbon; +use Illuminate\Support\Carbon; use Illuminate\Support\Facades\Log; use Shaarli\NetscapeBookmarkParser\NetscapeBookmarkParser; diff --git a/app/Console/Commands/CheckLinksCommand.php b/app/Console/Commands/CheckLinksCommand.php index a039ec42..e3670f4c 100644 --- a/app/Console/Commands/CheckLinksCommand.php +++ b/app/Console/Commands/CheckLinksCommand.php @@ -122,7 +122,7 @@ protected function getLinks(): Collection // Get a portion of the remaining links based on the limit return Link::where('check_disabled', false) - ->orderBy('id', 'ASC') + ->oldest('id') ->offset($this->offset) ->limit($this->limit) ->get(); diff --git a/app/Console/Commands/CleanupLinkHistoriesCommand.php b/app/Console/Commands/CleanupLinkHistoriesCommand.php index 669d2539..f79736df 100644 --- a/app/Console/Commands/CleanupLinkHistoriesCommand.php +++ b/app/Console/Commands/CleanupLinkHistoriesCommand.php @@ -44,7 +44,7 @@ public function handle(): void $bar->start(); Link::withTrashed()->has('revisionHistory')->each(function (Link $link) use ($bar) { - $historyEntries = $link->revisionHistory()->orderBy('created_at', 'desc') + $historyEntries = $link->revisionHistory()->latest() ->skip($this->offset)->take(9999999) ->pluck('id'); diff --git a/app/Helper/functions.php b/app/Helper/functions.php index c990849c..81321e16 100644 --- a/app/Helper/functions.php +++ b/app/Helper/functions.php @@ -4,7 +4,7 @@ use App\Helper\WaybackMachine; use App\Models\Link; use App\Models\Setting; -use Carbon\Carbon; +use Illuminate\Support\Carbon; use Illuminate\Support\Collection; use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\Log; diff --git a/app/Http/Controllers/API/SearchController.php b/app/Http/Controllers/API/SearchController.php index 02b6075d..7bbcb81c 100644 --- a/app/Http/Controllers/API/SearchController.php +++ b/app/Http/Controllers/API/SearchController.php @@ -54,7 +54,7 @@ public function searchByTags(Request $request): JsonResponse $tags = Tag::byUser($request->user()->id) ->where('name', 'like', '%' . $query . '%') - ->orderBy('name') + ->oldest('name') ->pluck('name', 'id'); return response()->json($tags); @@ -78,7 +78,7 @@ public function searchByLists(Request $request): JsonResponse $tags = LinkList::byUser($request->user()->id) ->where('name', 'like', '%' . $query . '%') - ->orderBy('name') + ->oldest('name') ->pluck('name', 'id'); return response()->json($tags); diff --git a/app/Http/Controllers/App/ExportController.php b/app/Http/Controllers/App/ExportController.php index 5fc8aa19..16663253 100644 --- a/app/Http/Controllers/App/ExportController.php +++ b/app/Http/Controllers/App/ExportController.php @@ -35,7 +35,7 @@ public function getExport(): View */ public function doHtmlExport(): StreamedResponse { - $links = Link::orderBy('title')->with('tags')->get(); + $links = Link::oldest('title')->with('tags')->get(); $fileContent = view()->make('app.export.html-export', ['links' => $links])->render(); $fileName = config('app.name') . '_export.html'; @@ -54,7 +54,7 @@ public function doHtmlExport(): StreamedResponse */ public function doCsvExport() { - $links = Link::orderBy('title')->get(); + $links = Link::oldest('title')->get(); $rows = $links->map(function (Link $link) { $link->tags = $link->tags()->get()->pluck('name')->join(','); diff --git a/app/Http/Controllers/FetchController.php b/app/Http/Controllers/FetchController.php index ef0fd4c4..5d1c3d7a 100644 --- a/app/Http/Controllers/FetchController.php +++ b/app/Http/Controllers/FetchController.php @@ -29,7 +29,7 @@ public function getTags(Request $request): JsonResponse $tags = Tag::byUser(auth()->user()->id) ->where('name', 'like', '%' . escapeSearchQuery($query) . '%') - ->orderBy('name') + ->oldest('name') ->get(); if (!$tags->isEmpty()) { @@ -59,7 +59,7 @@ public function getLists(Request $request): JsonResponse $tags = LinkList::byUser(auth()->user()->id) ->where('name', 'like', '%' . escapeSearchQuery($query) . '%') - ->orderBy('name') + ->oldest('name') ->get(); if (!$tags->isEmpty()) { diff --git a/app/Http/Requests/DoImportRequest.php b/app/Http/Requests/DoImportRequest.php index 32c9df87..f7def017 100644 --- a/app/Http/Requests/DoImportRequest.php +++ b/app/Http/Requests/DoImportRequest.php @@ -24,7 +24,11 @@ public function authorize(): bool public function rules(): array { return [ - 'import-file' => 'required|file|mimes:html,htm', + 'import-file' => [ + 'required', + 'file', + 'mimes:html,htm', + ], ]; } } diff --git a/app/Http/Requests/Models/LinkStoreRequest.php b/app/Http/Requests/Models/LinkStoreRequest.php index 87316862..26de0ecc 100644 --- a/app/Http/Requests/Models/LinkStoreRequest.php +++ b/app/Http/Requests/Models/LinkStoreRequest.php @@ -30,12 +30,28 @@ public function rules(): array 'string', Rule::unique('links')->where(fn($query) => $query->where('user_id', auth()->user()->id)), ], - 'title' => 'nullable|string', - 'description' => 'nullable|string', - 'lists' => 'nullable', - 'tags' => 'nullable', - 'is_private' => 'sometimes|boolean', - 'check_disabled' => 'sometimes|boolean', + 'title' => [ + 'nullable', + 'string', + ], + 'description' => [ + 'nullable', + 'string', + ], + 'lists' => [ + 'nullable', + ], + 'tags' => [ + 'nullable', + ], + 'is_private' => [ + 'sometimes', + 'boolean', + ], + 'check_disabled' => [ + 'sometimes', + 'boolean', + ], ]; } } diff --git a/app/Http/Requests/Models/LinkToggleCheckRequest.php b/app/Http/Requests/Models/LinkToggleCheckRequest.php index 039827e3..86e6a42f 100644 --- a/app/Http/Requests/Models/LinkToggleCheckRequest.php +++ b/app/Http/Requests/Models/LinkToggleCheckRequest.php @@ -24,7 +24,10 @@ public function authorize(): bool public function rules(): array { return [ - 'toggle' => 'required|boolean', + 'toggle' => [ + 'required', + 'boolean', + ], ]; } } diff --git a/app/Http/Requests/Models/ListStoreRequest.php b/app/Http/Requests/Models/ListStoreRequest.php index 21152236..9a472615 100644 --- a/app/Http/Requests/Models/ListStoreRequest.php +++ b/app/Http/Requests/Models/ListStoreRequest.php @@ -24,9 +24,18 @@ public function authorize(): bool public function rules(): array { return [ - 'name' => 'required|string', - 'description' => 'nullable|string', - 'is_private' => 'sometimes|boolean', + 'name' => [ + 'required', + 'string', + ], + 'description' => [ + 'nullable', + 'string', + ], + 'is_private' => [ + 'sometimes', + 'boolean', + ], ]; } } diff --git a/app/Http/Requests/Models/NoteStoreRequest.php b/app/Http/Requests/Models/NoteStoreRequest.php index f5721fe5..28800488 100644 --- a/app/Http/Requests/Models/NoteStoreRequest.php +++ b/app/Http/Requests/Models/NoteStoreRequest.php @@ -24,9 +24,16 @@ public function authorize(): bool public function rules(): array { return [ - 'link_id' => 'required', - 'note' => 'required', - 'is_private' => 'sometimes|boolean', + 'link_id' => [ + 'required', + ], + 'note' => [ + 'required', + ], + 'is_private' => [ + 'sometimes', + 'boolean', + ], ]; } } diff --git a/app/Http/Requests/Models/NoteUpdateRequest.php b/app/Http/Requests/Models/NoteUpdateRequest.php index 028c6664..e8fc2e73 100644 --- a/app/Http/Requests/Models/NoteUpdateRequest.php +++ b/app/Http/Requests/Models/NoteUpdateRequest.php @@ -24,8 +24,13 @@ public function authorize(): bool public function rules(): array { return [ - 'note' => 'required', - 'is_private' => 'sometimes|boolean', + 'note' => [ + 'required', + ], + 'is_private' => [ + 'sometimes', + 'boolean', + ], ]; } } diff --git a/app/Http/Requests/Models/TagStoreRequest.php b/app/Http/Requests/Models/TagStoreRequest.php index 6cd15a9c..9754e5a8 100644 --- a/app/Http/Requests/Models/TagStoreRequest.php +++ b/app/Http/Requests/Models/TagStoreRequest.php @@ -29,7 +29,10 @@ public function rules(): array 'required', Rule::unique('tags')->where(fn($query) => $query->where('user_id', auth()->user()->id)), ], - 'is_private' => 'sometimes|boolean', + 'is_private' => [ + 'sometimes', + 'boolean', + ], ]; } } diff --git a/app/Http/Requests/SearchRequest.php b/app/Http/Requests/SearchRequest.php index 7a48a29d..8ad6edb7 100644 --- a/app/Http/Requests/SearchRequest.php +++ b/app/Http/Requests/SearchRequest.php @@ -24,10 +24,18 @@ public function authorize(): bool public function rules(): array { return [ - 'query' => 'required_without_all:only_lists,only_tags,broken_only', - 'only_lists' => 'required_without_all:query,only_tags,broken_only', - 'only_tags' => 'required_without_all:query,only_lists,broken_only', - 'broken_only' => 'required_without_all:query,only_lists,only_tags', + 'query' => [ + 'required_without_all:only_lists,only_tags,broken_only', + ], + 'only_lists' => [ + 'required_without_all:query,only_tags,broken_only', + ], + 'only_tags' => [ + 'required_without_all:query,only_lists,broken_only', + ], + 'broken_only' => [ + 'required_without_all:query,only_lists,only_tags', + ], ]; } diff --git a/app/Http/Requests/SetupDatabaseRequest.php b/app/Http/Requests/SetupDatabaseRequest.php index 64ada89b..6171967c 100644 --- a/app/Http/Requests/SetupDatabaseRequest.php +++ b/app/Http/Requests/SetupDatabaseRequest.php @@ -24,11 +24,22 @@ public function authorize(): bool public function rules(): array { return [ - 'db_host' => 'required', - 'db_port' => 'required|numeric', - 'db_name' => 'required', - 'db_user' => 'required', - 'db_password' => 'nullable', + 'db_host' => [ + 'required', + ], + 'db_port' => [ + 'required', + 'numeric', + ], + 'db_name' => [ + 'required', + ], + 'db_user' => [ + 'required', + ], + 'db_password' => [ + 'nullable', + ], ]; } } diff --git a/app/Http/Requests/SystemSettingsUpdateRequest.php b/app/Http/Requests/SystemSettingsUpdateRequest.php index cfe007d5..ad543345 100644 --- a/app/Http/Requests/SystemSettingsUpdateRequest.php +++ b/app/Http/Requests/SystemSettingsUpdateRequest.php @@ -24,14 +24,31 @@ public function authorize(): bool public function rules(): array { return [ - 'system_page_title' => 'max:256', - 'system_guest_access' => 'boolean', - 'system_custom_header_content' => 'nullable|string', - 'guest_listitem_count' => 'integer', - 'guest_link_display_mode' => 'integer', - 'guest_links_new_tab' => 'boolean', - 'guest_darkmode_setting' => 'integer', - 'guest_share' => 'array', + 'system_page_title' => [ + 'max:256', + ], + 'system_guest_access' => [ + 'boolean', + ], + 'system_custom_header_content' => [ + 'nullable', + 'string', + ], + 'guest_listitem_count' => [ + 'integer', + ], + 'guest_link_display_mode' => [ + 'integer', + ], + 'guest_links_new_tab' => [ + 'boolean', + ], + 'guest_darkmode_setting' => [ + 'integer', + ], + 'guest_share' => [ + 'array', + ], ]; } } diff --git a/app/Http/Requests/TrashClearRequest.php b/app/Http/Requests/TrashClearRequest.php index 95931c9c..9849a58b 100644 --- a/app/Http/Requests/TrashClearRequest.php +++ b/app/Http/Requests/TrashClearRequest.php @@ -24,7 +24,10 @@ public function authorize(): bool public function rules(): array { return [ - 'model' => 'required|in:links,lists,tags,notes', + 'model' => [ + 'required', + 'in:links,lists,tags,notes', + ], ]; } } diff --git a/app/Http/Requests/TrashRestoreRequest.php b/app/Http/Requests/TrashRestoreRequest.php index 7e93c09c..620f2b73 100644 --- a/app/Http/Requests/TrashRestoreRequest.php +++ b/app/Http/Requests/TrashRestoreRequest.php @@ -24,8 +24,14 @@ public function authorize(): bool public function rules(): array { return [ - 'model' => 'required|in:link,list,tag,note', - 'id' => 'required|numeric', + 'model' => [ + 'required', + 'in:link,list,tag,note', + ], + 'id' => [ + 'required', + 'numeric', + ], ]; } } diff --git a/app/Http/Requests/UserSettingsUpdateRequest.php b/app/Http/Requests/UserSettingsUpdateRequest.php index 2a8997f5..97f34a0b 100644 --- a/app/Http/Requests/UserSettingsUpdateRequest.php +++ b/app/Http/Requests/UserSettingsUpdateRequest.php @@ -24,8 +24,12 @@ public function authorize(): bool public function rules(): array { return [ - 'locale' => 'required', - 'timezone' => 'required', + 'locale' => [ + 'required', + ], + 'timezone' => [ + 'required', + ], ]; } } diff --git a/app/Models/Link.php b/app/Models/Link.php index cbeefa4c..5a0baa6f 100644 --- a/app/Models/Link.php +++ b/app/Models/Link.php @@ -3,7 +3,7 @@ namespace App\Models; use App\Jobs\SaveLinkToWaybackmachine; -use Carbon\Carbon; +use Illuminate\Support\Carbon; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Collection; use Illuminate\Database\Eloquent\Factories\HasFactory; diff --git a/app/Models/LinkList.php b/app/Models/LinkList.php index f190fb54..0efe8fc3 100644 --- a/app/Models/LinkList.php +++ b/app/Models/LinkList.php @@ -3,7 +3,7 @@ namespace App\Models; use App\Scopes\OrderNameScope; -use Carbon\Carbon; +use Illuminate\Support\Carbon; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Collection; use Illuminate\Database\Eloquent\Factories\HasFactory; @@ -151,7 +151,7 @@ public function getFormattedDescriptionAttribute(): string public static function getAllForCurrentUser() { return self::byUser(auth()->id()) - ->orderBy('name') + ->oldest('name') ->get(); } diff --git a/app/Models/Note.php b/app/Models/Note.php index 8a084940..1e520756 100644 --- a/app/Models/Note.php +++ b/app/Models/Note.php @@ -2,7 +2,7 @@ namespace App\Models; -use Carbon\Carbon; +use Illuminate\Support\Carbon; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; diff --git a/app/Models/Tag.php b/app/Models/Tag.php index ae01f282..55d8f48d 100644 --- a/app/Models/Tag.php +++ b/app/Models/Tag.php @@ -3,7 +3,7 @@ namespace App\Models; use App\Scopes\OrderNameScope; -use Carbon\Carbon; +use Illuminate\Support\Carbon; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Collection; use Illuminate\Database\Eloquent\Factories\HasFactory; diff --git a/app/Models/User.php b/app/Models/User.php index 2601d4cf..207097e3 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -2,7 +2,7 @@ namespace App\Models; -use Carbon\Carbon; +use Illuminate\Support\Carbon; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Foundation\Auth\User as Authenticatable; diff --git a/app/Scopes/OrderNameScope.php b/app/Scopes/OrderNameScope.php index f4cf6626..7b1bd7da 100644 --- a/app/Scopes/OrderNameScope.php +++ b/app/Scopes/OrderNameScope.php @@ -17,6 +17,6 @@ class OrderNameScope implements Scope */ public function apply(Builder $builder, Model $model): void { - $builder->orderBy('name', 'ASC'); + $builder->oldest('name'); } } diff --git a/database/factories/LinkFactory.php b/database/factories/LinkFactory.php index 8f3f24e3..f89c303b 100644 --- a/database/factories/LinkFactory.php +++ b/database/factories/LinkFactory.php @@ -9,13 +9,6 @@ class LinkFactory extends Factory { - /** - * The name of the factory's corresponding model. - * - * @var string - */ - protected $model = Link::class; - /** * Define the model's default state. * diff --git a/database/factories/LinkListFactory.php b/database/factories/LinkListFactory.php index 728cf739..f20ddaa1 100644 --- a/database/factories/LinkListFactory.php +++ b/database/factories/LinkListFactory.php @@ -9,13 +9,6 @@ class LinkListFactory extends Factory { - /** - * The name of the factory's corresponding model. - * - * @var string - */ - protected $model = LinkList::class; - /** * Define the model's default state. * diff --git a/database/factories/NoteFactory.php b/database/factories/NoteFactory.php index 7700d664..8c7c3306 100644 --- a/database/factories/NoteFactory.php +++ b/database/factories/NoteFactory.php @@ -10,13 +10,6 @@ class NoteFactory extends Factory { - /** - * The name of the factory's corresponding model. - * - * @var string - */ - protected $model = Note::class; - /** * Define the model's default state. * diff --git a/database/factories/TagFactory.php b/database/factories/TagFactory.php index 673e5f5d..59024df4 100644 --- a/database/factories/TagFactory.php +++ b/database/factories/TagFactory.php @@ -9,13 +9,6 @@ class TagFactory extends Factory { - /** - * The name of the factory's corresponding model. - * - * @var string - */ - protected $model = Tag::class; - /** * Define the model's default state. * diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php index 7a8497d4..449c2d87 100644 --- a/database/factories/UserFactory.php +++ b/database/factories/UserFactory.php @@ -8,13 +8,6 @@ class UserFactory extends Factory { - /** - * The name of the factory's corresponding model. - * - * @var string - */ - protected $model = User::class; - /** * Define the model's default state. * From 0fe8a19d0fec1383b8433504eb9c7286b6effca2 Mon Sep 17 00:00:00 2001 From: Kovah Date: Mon, 2 May 2022 18:29:23 +0200 Subject: [PATCH 04/86] Various code formatting fixes and optimizations --- app/Actions/ImportHtmlBookmarks.php | 6 +-- app/Console/Commands/AsksForUser.php | 3 +- app/Console/Commands/CheckLinksCommand.php | 31 +++++--------- .../Commands/CleanupLinkHistoriesCommand.php | 2 +- app/Console/Commands/UpdateLinkThumbnails.php | 3 +- .../Commands/ViewRecoveryCodesCommand.php | 4 +- app/Helper/HtmlMeta.php | 20 ++++----- app/Helper/LinkIconMapper.php | 8 ++-- app/Helper/Sharing.php | 12 +++--- app/Helper/WaybackMachine.php | 7 ++-- app/Helper/functions.php | 8 ++-- app/Http/Controllers/App/FeedController.php | 10 ++--- app/Http/Controllers/FetchController.php | 6 +-- app/Http/Controllers/Guest/FeedController.php | 10 ++--- .../Controllers/Setup/DatabaseController.php | 2 +- .../Setup/RequirementsController.php | 2 +- app/Http/Controllers/Traits/SearchesLinks.php | 41 +++++++++---------- app/Http/Kernel.php | 4 +- app/Http/Middleware/GuestAccess.php | 2 +- app/Models/Link.php | 6 +-- app/Models/LinkList.php | 10 +++-- app/Models/Note.php | 2 - app/Models/Setting.php | 2 - app/Models/Tag.php | 10 ++--- app/Models/User.php | 3 +- app/Repositories/LinkRepository.php | 6 +-- app/Repositories/TrashRepository.php | 2 +- app/View/Components/Links/HistoryEntry.php | 10 ++--- config/database.php | 2 +- 29 files changed, 109 insertions(+), 125 deletions(-) diff --git a/app/Actions/ImportHtmlBookmarks.php b/app/Actions/ImportHtmlBookmarks.php index 267e00e5..37ece7a2 100644 --- a/app/Actions/ImportHtmlBookmarks.php +++ b/app/Actions/ImportHtmlBookmarks.php @@ -12,8 +12,8 @@ class ImportHtmlBookmarks { - protected $imported = 0; - protected $skipped = 0; + protected int $imported = 0; + protected int $skipped = 0; /** * Import all links from a given bookmarks file. @@ -25,7 +25,7 @@ class ImportHtmlBookmarks */ public function run(string $data, string $userId, bool $generateMeta = true): bool { - $parser = new NetscapeBookmarkParser(true, [], '0', storage_path('logs')); + $parser = new NetscapeBookmarkParser(logDir: storage_path('logs')); try { $links = $parser->parseString($data); diff --git a/app/Console/Commands/AsksForUser.php b/app/Console/Commands/AsksForUser.php index 6eae7cfd..8d123bad 100644 --- a/app/Console/Commands/AsksForUser.php +++ b/app/Console/Commands/AsksForUser.php @@ -6,8 +6,7 @@ trait AsksForUser { - /** @var User */ - protected $user; + protected User|null $user; protected function askForUser(): void { diff --git a/app/Console/Commands/CheckLinksCommand.php b/app/Console/Commands/CheckLinksCommand.php index e3670f4c..3dd99d64 100644 --- a/app/Console/Commands/CheckLinksCommand.php +++ b/app/Console/Commands/CheckLinksCommand.php @@ -17,35 +17,26 @@ class CheckLinksCommand extends Command protected $signature = 'links:check {--limit=} {--noWait}'; protected $description = 'This command checks the current status of a chunk of links. It is intended to be run on a schedule.'; - /** @var int $limit Check a maximum of 100 links at once */ - public $limit = 100; + // Check a maximum of 100 links at once + public int $limit = 100; - /** @var int */ - protected $offset; + protected int $offset; - /** @var int */ - protected $total; + protected int $total; - /** @var int */ - protected $checkedLinkCount; + protected int $checkedLinkCount; - /** @var string */ - protected $cacheKeyOffset = 'command_links:check_offset'; + protected string $cacheKeyOffset = 'command_links:check_offset'; - /** @var string */ - protected $cacheKeySkipTimestamp = 'command_links:check_skip_timestamp'; + protected string $cacheKeySkipTimestamp = 'command_links:check_skip_timestamp'; - /** @var string */ - protected $cacheKeyCheckedCount = 'command_links:check_checked_count'; + protected string $cacheKeyCheckedCount = 'command_links:check_checked_count'; - /** @var array */ - protected $movedLinks = []; + protected array $movedLinks = []; - /** @var array */ - protected $brokenLinks = []; + protected array $brokenLinks = []; - /** @var array */ - protected $validUrlSchemes = ['http', 'https']; + protected array $validUrlSchemes = ['http', 'https']; public function handle(): void { diff --git a/app/Console/Commands/CleanupLinkHistoriesCommand.php b/app/Console/Commands/CleanupLinkHistoriesCommand.php index f79736df..3661725b 100644 --- a/app/Console/Commands/CleanupLinkHistoriesCommand.php +++ b/app/Console/Commands/CleanupLinkHistoriesCommand.php @@ -13,7 +13,7 @@ class CleanupLinkHistoriesCommand extends Command protected $description = 'Removes all but the last 5 entries in the link histories. {field : If provided, only history entries of that field are deleted}'; - private $offset; + private int $offset; public function handle(): void { diff --git a/app/Console/Commands/UpdateLinkThumbnails.php b/app/Console/Commands/UpdateLinkThumbnails.php index 18ddc330..93d1f175 100644 --- a/app/Console/Commands/UpdateLinkThumbnails.php +++ b/app/Console/Commands/UpdateLinkThumbnails.php @@ -14,7 +14,8 @@ class UpdateLinkThumbnails extends Command public function handle(): void { - $this->confirm('This command updates the thumbnail for all links with the status "ok". This can take a long time, depending on the amount of links you have saved. Do you want to proceed?'); + $this->confirm('This command updates the thumbnail for all links with the status "ok". ' . + 'This can take a long time, depending on the amount of links you have saved. Do you want to proceed?'); $totalCount = Link::where('status', Link::STATUS_OK)->count(); $processedLinks = 0; diff --git a/app/Console/Commands/ViewRecoveryCodesCommand.php b/app/Console/Commands/ViewRecoveryCodesCommand.php index 03462355..63b8a3ce 100644 --- a/app/Console/Commands/ViewRecoveryCodesCommand.php +++ b/app/Console/Commands/ViewRecoveryCodesCommand.php @@ -10,7 +10,7 @@ class ViewRecoveryCodesCommand extends Command protected $signature = '2fa:view-recovery-codes'; - protected $description = 'View the recovery codes for a given user, in case the user has no access to the dashboard anymore.'; + protected $description = 'View the recovery codes for a user, in case the user has no access to LinkAce anymore.'; public function handle(): void { @@ -29,7 +29,7 @@ protected function viewBackupCodes(): void $this->info('Recovery Codes for user ' . $this->user->name . ':'); - $recoveryCodes = json_decode(decrypt($this->user->two_factor_recovery_codes), true); + $recoveryCodes = json_decode(decrypt($this->user->two_factor_recovery_codes)); foreach ($recoveryCodes as $code) { $this->line($code); } diff --git a/app/Helper/HtmlMeta.php b/app/Helper/HtmlMeta.php index fe204858..d0e99aea 100644 --- a/app/Helper/HtmlMeta.php +++ b/app/Helper/HtmlMeta.php @@ -3,22 +3,18 @@ namespace App\Helper; use Illuminate\Support\Facades\Log; +use JetBrains\PhpStorm\ArrayShape; use Kovah\HtmlMeta\Exceptions\InvalidUrlException; use Kovah\HtmlMeta\Exceptions\UnreachableUrlException; class HtmlMeta { - /** @var string */ - protected $url; - - /** @var array */ - protected $fallback; - - /** @var array */ - protected $meta; + protected string $url; + protected array $fallback; + protected array $meta; /** - * Get the title and description of an URL. + * Get the title and description of a URL. * * Returned array: * array [ @@ -63,8 +59,8 @@ public function getFromUrl(string $url, bool $flashAlerts = false): array protected function buildLinkMeta(): array { $this->meta['description'] ??= $this->meta['og:description'] - ?? $this->meta['twitter:description'] - ?? null; + ?? $this->meta['twitter:description'] + ?? null; return [ 'success' => true, @@ -107,7 +103,7 @@ protected function getThumbnail(): ?string } /* - * Edge case of Youtube only (because of Youtube EU cookie consent) + * Edge case of YouTube only (because of YouTube EU cookie consent) * Formula based on https://stackoverflow.com/a/2068371, returns Youtube image url * https://img.youtube.com/vi/[video-id]/mqdefault.jpg */ diff --git a/app/Helper/LinkIconMapper.php b/app/Helper/LinkIconMapper.php index 74215d97..2581ef9d 100644 --- a/app/Helper/LinkIconMapper.php +++ b/app/Helper/LinkIconMapper.php @@ -4,11 +4,11 @@ class LinkIconMapper { - /** @var string Default icon as fallback if no specific icon was found */ - public static $defaultIcon = 'link'; + // Default icon as fallback if no specific icon was found + public static string $defaultIcon = 'link'; - /** @var array Array holding the pattern => icon map, sorted alphabetically */ - public static $iconMap = [ + // Array holding the pattern => icon map, sorted alphabetically + public static array $iconMap = [ '500px\.com' => 'brand.500px', 'amazon\.([a-zA-Z]*(\.)?[a-zA-Z]*)' => 'brand.amazon', 'itunes\.apple\.com\/app' => 'brand.app-store-ios', diff --git a/app/Helper/Sharing.php b/app/Helper/Sharing.php index b51f7e2f..8fc6a4d5 100644 --- a/app/Helper/Sharing.php +++ b/app/Helper/Sharing.php @@ -6,9 +6,9 @@ class Sharing { - public static $linkClasses = 'share-link btn btn-xs btn-light'; + public static string $linkClasses = 'share-link btn btn-xs btn-light'; - public static $placeholders = [ + public static array $placeholders = [ '#URL#', '#E-URL#', '#SUBJECT#', @@ -48,17 +48,17 @@ public static function getShareLink(string $service, Link $link): string protected static function generateLinkData(Link $link): array { $subject = $link->title ?: trans(config('sharing.defaults.subject')); - $sharetext = trans(config('sharing.defaults.sharetext')); + $shareText = trans(config('sharing.defaults.sharetext')); - $sharetext = str_replace('#URL#', $link->url, $sharetext); + $shareText = str_replace('#URL#', $link->url, $shareText); return [ $link->url, // URL self::encode($link->url), // endoced URL $subject, // subject self::encode($subject), // encoded subject - $sharetext, // sharetext - self::encode($sharetext), // encoded sharetext + $shareText, // sharetext + self::encode($shareText), // encoded sharetext ]; } diff --git a/app/Helper/WaybackMachine.php b/app/Helper/WaybackMachine.php index 9fefedd1..936db02d 100644 --- a/app/Helper/WaybackMachine.php +++ b/app/Helper/WaybackMachine.php @@ -7,8 +7,7 @@ class WaybackMachine { - /** @var string */ - public static $baseUrl = 'https://web.archive.org'; + public static string $baseUrl = 'https://web.archive.org'; /** * Save an URL to the Wayback Machine @@ -19,7 +18,7 @@ class WaybackMachine public static function saveToArchive(string $url): bool { if (!filter_var($url, FILTER_VALIDATE_URL)) { - // Abort if provided string is not an URL + // Abort if provided string is not a URL return false; } @@ -51,7 +50,7 @@ public static function saveToArchive(string $url): bool public static function getArchiveLink(string $url): ?string { if (!filter_var($url, FILTER_VALIDATE_URL)) { - // Abort if provided string is not an URL + // Abort if provided string is not a URL return null; } diff --git a/app/Helper/functions.php b/app/Helper/functions.php index 81321e16..a22c0f7f 100644 --- a/app/Helper/functions.php +++ b/app/Helper/functions.php @@ -8,6 +8,8 @@ use Illuminate\Support\Collection; use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\Log; +use Psr\Container\ContainerExceptionInterface; +use Psr\Container\NotFoundExceptionInterface; /** * Check if the setup was completed. @@ -47,7 +49,7 @@ function usersettings(string $key = ''): mixed * Retrieve system settings * * @param string $key - * @return null|Collection|string + * @return Collection|null|string */ function systemsettings(string $key = '') { @@ -137,7 +139,7 @@ function getShareLinks(Link $link): string }); } -/* +/** * Build sorting links for a table column */ function tableSorter(string $label, string $route, string $type, string $orderBy, string $orderDir): string @@ -170,7 +172,7 @@ function tableSorter(string $label, string $route, string $type, string $orderBy * @param string|Link $link * @return null|string */ -function waybackLink($link): ?string +function waybackLink(string|Link $link): ?string { $link = $link->url ?? $link; diff --git a/app/Http/Controllers/App/FeedController.php b/app/Http/Controllers/App/FeedController.php index 950bda4f..bb3e232c 100644 --- a/app/Http/Controllers/App/FeedController.php +++ b/app/Http/Controllers/App/FeedController.php @@ -24,7 +24,7 @@ public function links(Request $request): Response return new Response(view('app.feed.links', [ 'meta' => $meta, 'links' => $links, - ]), 200, ['Content-Type' => 'application/xml']); + ]), headers: ['Content-Type' => 'application/xml']); } public function lists(Request $request): Response @@ -40,7 +40,7 @@ public function lists(Request $request): Response return new Response(view('app.feed.lists', [ 'meta' => $meta, 'lists' => $lists, - ]), 200, ['Content-Type' => 'application/xml']); + ]), headers: ['Content-Type' => 'application/xml']); } public function listLinks(Request $request, LinkList $list): Response @@ -56,7 +56,7 @@ public function listLinks(Request $request, LinkList $list): Response return new Response(view('app.feed.links', [ 'meta' => $meta, 'links' => $links, - ]), 200, ['Content-Type' => 'application/xml']); + ]), headers: ['Content-Type' => 'application/xml']); } public function tags(Request $request): Response @@ -72,7 +72,7 @@ public function tags(Request $request): Response return new Response(view('app.feed.tags', [ 'meta' => $meta, 'tags' => $tags, - ]), 200, ['Content-Type' => 'application/xml']); + ]), headers: ['Content-Type' => 'application/xml']); } public function tagLinks(Request $request, Tag $tag): Response @@ -88,6 +88,6 @@ public function tagLinks(Request $request, Tag $tag): Response return new Response(view('app.feed.links', [ 'meta' => $meta, 'links' => $links, - ]), 200, ['Content-Type' => 'application/xml']); + ]), headers: ['Content-Type' => 'application/xml']); } } diff --git a/app/Http/Controllers/FetchController.php b/app/Http/Controllers/FetchController.php index 5d1c3d7a..c6f3dfb5 100644 --- a/app/Http/Controllers/FetchController.php +++ b/app/Http/Controllers/FetchController.php @@ -21,7 +21,7 @@ class FetchController extends Controller */ public function getTags(Request $request): JsonResponse { - $query = $request->input('query', false); + $query = $request->input('query'); if (!$query) { return response()->json([]); @@ -34,7 +34,7 @@ public function getTags(Request $request): JsonResponse if (!$tags->isEmpty()) { // Properly format the results to be used by Selectize - $tags = $tags->map(fn($item) => [ + $tags = $tags->map(fn(Tag $item) => [ 'value' => $item->name, 'text' => $item->name, ]); @@ -64,7 +64,7 @@ public function getLists(Request $request): JsonResponse if (!$tags->isEmpty()) { // Properly format the results to be used by Selectize - $tags = $tags->map(fn($item) => [ + $tags = $tags->map(fn(LinkList $item) => [ 'value' => $item->name, 'text' => $item->name, ]); diff --git a/app/Http/Controllers/Guest/FeedController.php b/app/Http/Controllers/Guest/FeedController.php index 366451ce..2edc72ec 100644 --- a/app/Http/Controllers/Guest/FeedController.php +++ b/app/Http/Controllers/Guest/FeedController.php @@ -24,7 +24,7 @@ public function links(Request $request): Response return new Response(view('app.feed.links', [ 'meta' => $meta, 'links' => $links, - ]), 200, ['Content-Type' => 'application/xml']); + ]), headers: ['Content-Type' => 'application/xml']); } public function lists(Request $request): Response @@ -40,7 +40,7 @@ public function lists(Request $request): Response return new Response(view('app.feed.lists', [ 'meta' => $meta, 'lists' => $lists, - ]), 200, ['Content-Type' => 'application/xml']); + ]), headers: ['Content-Type' => 'application/xml']); } public function listLinks(Request $request, $listID): Response @@ -57,7 +57,7 @@ public function listLinks(Request $request, $listID): Response return new Response(view('app.feed.links', [ 'meta' => $meta, 'links' => $links, - ]), 200, ['Content-Type' => 'application/xml']); + ]), headers: ['Content-Type' => 'application/xml']); } public function tags(Request $request): Response @@ -73,7 +73,7 @@ public function tags(Request $request): Response return new Response(view('app.feed.tags', [ 'meta' => $meta, 'tags' => $tags, - ]), 200, ['Content-Type' => 'application/xml']); + ]), headers: ['Content-Type' => 'application/xml']); } public function tagLinks(Request $request, $tagID): Response @@ -90,6 +90,6 @@ public function tagLinks(Request $request, $tagID): Response return new Response(view('app.feed.links', [ 'meta' => $meta, 'links' => $links, - ]), 200, ['Content-Type' => 'application/xml']); + ]), headers: ['Content-Type' => 'application/xml']); } } diff --git a/app/Http/Controllers/Setup/DatabaseController.php b/app/Http/Controllers/Setup/DatabaseController.php index f67f8f93..8daf0efa 100644 --- a/app/Http/Controllers/Setup/DatabaseController.php +++ b/app/Http/Controllers/Setup/DatabaseController.php @@ -138,7 +138,7 @@ protected function databaseHasData(): bool $present_tables = DB::connection('setup') ->getDoctrineSchemaManager() ->listTableNames(); - } catch (PDOException $e) { + } catch (PDOException|\Doctrine\DBAL\Exception $e) { Log::error($e->getMessage()); return false; } diff --git a/app/Http/Controllers/Setup/RequirementsController.php b/app/Http/Controllers/Setup/RequirementsController.php index 68163920..6cec88bd 100644 --- a/app/Http/Controllers/Setup/RequirementsController.php +++ b/app/Http/Controllers/Setup/RequirementsController.php @@ -26,7 +26,7 @@ public function index(): View protected function checkRequirements(): array { $results = [ - 'php_version' => PHP_VERSION_ID >= 70400, + 'php_version' => PHP_VERSION_ID >= 80002, 'extension_bcmath' => extension_loaded('bcmath'), 'extension_ctype' => extension_loaded('ctype'), 'extension_json' => extension_loaded('json'), diff --git a/app/Http/Controllers/Traits/SearchesLinks.php b/app/Http/Controllers/Traits/SearchesLinks.php index 65764c52..4487733d 100644 --- a/app/Http/Controllers/Traits/SearchesLinks.php +++ b/app/Http/Controllers/Traits/SearchesLinks.php @@ -8,19 +8,18 @@ trait SearchesLinks { - protected $searchQuery; - protected $searchTitle; - protected $searchDescription; - protected $searchPrivateOnly; - protected $searchBrokenOnly; - protected $searchLists; - protected $searchTags; - protected $emptyLists; - protected $emptyTags; - protected $searchOrderBy; + protected string|null $searchQuery; + protected bool $searchTitle = false; + protected bool $searchDescription = false; + protected bool $searchPrivateOnly = false; + protected bool $searchBrokenOnly = false; + protected string|null $searchLists = null; + protected string|null $searchTags = null; + protected bool $emptyLists = false; + protected bool $emptyTags = false; + protected string $searchOrderBy; - /** @var array */ - public $orderByOptions = [ + public array $orderByOptions = [ 'title:asc', 'title:desc', 'url:asc', @@ -42,37 +41,37 @@ protected function buildDatabaseQuery(SearchRequest $request): Builder $search = Link::byUser($request->user()->id)->with(['tags']); // Search for the URL - if ($this->searchQuery = $request->input('query', false)) { + if ($this->searchQuery = $request->input('query')) { $query = '%' . escapeSearchQuery($this->searchQuery) . '%'; $search->where(function ($search) use ($request, $query) { $search->where('url', 'like', $query); // Also search for the title if applicable - if ($this->searchTitle = $request->input('search_title', false)) { + if ($this->searchTitle = (bool)$request->input('search_title', false)) { $search->orWhere('title', 'like', $query); } // Also search for the title if applicable - if ($this->searchDescription = $request->input('search_description', false)) { + if ($this->searchDescription = (bool)$request->input('search_description', false)) { $search->orWhere('description', 'like', $query); } }); } // Show private only if applicable - if ($this->searchPrivateOnly = $request->input('private_only', false)) { + if ($this->searchPrivateOnly = (bool)$request->input('private_only', false)) { $search->where('is_private', true); } // Show broken only if applicable - if ($this->searchBrokenOnly = $request->input('broken_only', false)) { + if ($this->searchBrokenOnly = (bool)$request->input('broken_only', false)) { $search->where('status', '>', 1); } // Show by specific list only if applicable - if ($this->emptyLists = $request->input('empty_lists', false)) { + if ($this->emptyLists = (bool)$request->input('empty_lists', false)) { $search->doesntHave('lists'); - } elseif ($this->searchLists = $request->input('only_lists', false)) { + } elseif ($this->searchLists = $request->input('only_lists')) { $search->whereHas('lists', function ($query) use ($request) { $field = $request->isJson() ? 'id' : 'name'; $query->whereIn($field, explode(',', $this->searchLists)); @@ -80,9 +79,9 @@ protected function buildDatabaseQuery(SearchRequest $request): Builder } // Show by specific tag only if applicable - if ($this->emptyTags = $request->input('empty_tags', false)) { + if ($this->emptyTags = (bool)$request->input('empty_tags', false)) { $search->doesntHave('tags'); - } elseif ($this->searchTags = $request->input('only_tags', false)) { + } elseif ($this->searchTags = $request->input('only_tags')) { $search->whereHas('tags', function ($query) use ($request) { $field = $request->isJson() ? 'id' : 'name'; $query->whereIn($field, explode(',', $this->searchTags)); diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index f459d7b9..4829a932 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -9,7 +9,7 @@ class Kernel extends HttpKernel /** * The application's global HTTP middleware stack. * - * These middleware are run during every request to your application. + * These middlewares are run during every request to your application. * * @var array */ @@ -49,7 +49,7 @@ class Kernel extends HttpKernel /** * The application's route middleware. * - * These middleware may be assigned to groups or used individually. + * These middlewares may be assigned to groups or used individually. * * @var array */ diff --git a/app/Http/Middleware/GuestAccess.php b/app/Http/Middleware/GuestAccess.php index f543180d..d96c4b0c 100644 --- a/app/Http/Middleware/GuestAccess.php +++ b/app/Http/Middleware/GuestAccess.php @@ -16,7 +16,7 @@ class GuestAccess */ public function handle(Request $request, Closure $next): mixed { - // Check for logged in users + // Check for logged-in users if (auth()->check()) { return redirect()->route('dashboard'); } diff --git a/app/Models/Link.php b/app/Models/Link.php index 5a0baa6f..b5dea99c 100644 --- a/app/Models/Link.php +++ b/app/Models/Link.php @@ -49,8 +49,6 @@ class Link extends Model use RevisionableTrait; use HasFactory; - public $table = 'links'; - public $fillable = [ 'user_id', 'url', @@ -80,8 +78,8 @@ class Link extends Model public const DISPLAY_LIST_DETAILED = 0; // Revisions settings - protected $revisionCleanup = true; - protected $historyLimit = 50; + protected bool $revisionCleanup = true; + protected int $historyLimit = 50; protected $dontKeepRevisionOf = ['icon']; public const REV_TAGS_NAME = 'revtags'; diff --git a/app/Models/LinkList.php b/app/Models/LinkList.php index 0efe8fc3..4c03de0b 100644 --- a/app/Models/LinkList.php +++ b/app/Models/LinkList.php @@ -3,7 +3,6 @@ namespace App\Models; use App\Scopes\OrderNameScope; -use Illuminate\Support\Carbon; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Collection; use Illuminate\Database\Eloquent\Factories\HasFactory; @@ -11,6 +10,7 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsToMany; use Illuminate\Database\Eloquent\SoftDeletes; +use Illuminate\Support\Carbon; use Illuminate\Support\Str; /** @@ -148,7 +148,7 @@ public function getFormattedDescriptionAttribute(): string * * @return Builder[]|Collection */ - public static function getAllForCurrentUser() + public static function getAllForCurrentUser(): Collection|array { return self::byUser(auth()->id()) ->oldest('name') @@ -156,11 +156,13 @@ public static function getAllForCurrentUser() } /** - * @param string|int $listId + * Check if the list name has changed + * + * @param int|string $listId * @param string $newName * @return bool */ - public static function nameHasChanged($listId, string $newName): bool + public static function nameHasChanged(int|string $listId, string $newName): bool { $oldName = self::find($listId)->name ?? null; return $oldName !== $newName; diff --git a/app/Models/Note.php b/app/Models/Note.php index 1e520756..66dfde3a 100644 --- a/app/Models/Note.php +++ b/app/Models/Note.php @@ -31,8 +31,6 @@ class Note extends Model use SoftDeletes; use HasFactory; - public $table = 'notes'; - public $fillable = [ 'user_id', 'link_id', diff --git a/app/Models/Setting.php b/app/Models/Setting.php index badcd619..ac8a24d5 100644 --- a/app/Models/Setting.php +++ b/app/Models/Setting.php @@ -18,8 +18,6 @@ */ class Setting extends Model { - public $table = 'settings'; - public $timestamps = false; public $fillable = [ diff --git a/app/Models/Tag.php b/app/Models/Tag.php index 55d8f48d..8b2a930f 100644 --- a/app/Models/Tag.php +++ b/app/Models/Tag.php @@ -3,7 +3,6 @@ namespace App\Models; use App\Scopes\OrderNameScope; -use Illuminate\Support\Carbon; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Collection; use Illuminate\Database\Eloquent\Factories\HasFactory; @@ -11,6 +10,7 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsToMany; use Illuminate\Database\Eloquent\SoftDeletes; +use Illuminate\Support\Carbon; /** * Class Tag @@ -34,8 +34,6 @@ class Tag extends Model use SoftDeletes; use HasFactory; - public $table = 'tags'; - public $fillable = [ 'user_id', 'name', @@ -123,11 +121,13 @@ public function links(): BelongsToMany */ /** - * @param string|int $tagId + * Check if the tag name has changed + * + * @param int|string $tagId * @param string $newName * @return bool */ - public static function nameHasChanged($tagId, string $newName): bool + public static function nameHasChanged(int|string $tagId, string $newName): bool { $oldName = self::find($tagId)->name ?? null; return $oldName !== $newName; diff --git a/app/Models/User.php b/app/Models/User.php index 207097e3..41e24adf 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -7,6 +7,7 @@ use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; +use Illuminate\Support\Collection; use Laravel\Fortify\TwoFactorAuthenticatable; /** @@ -52,7 +53,7 @@ public function rawSettings(): HasMany return $this->hasMany(Setting::class, 'user_id', 'id'); } - public function settings(): \Illuminate\Support\Collection + public function settings(): Collection { if ($this->rawSettings->isEmpty()) { $this->load('rawSettings'); diff --git a/app/Repositories/LinkRepository.php b/app/Repositories/LinkRepository.php index ef8e61db..b3af349f 100644 --- a/app/Repositories/LinkRepository.php +++ b/app/Repositories/LinkRepository.php @@ -132,7 +132,7 @@ protected static function processLinkTaxonomies(Link $link, array $data): void * @param Link $link * @param array|string $tags */ - protected static function updateTagsForLink(Link $link, $tags): void + protected static function updateTagsForLink(Link $link, array|string $tags): void { $oldTags = $link->tags->pluck('id'); @@ -160,7 +160,7 @@ protected static function updateTagsForLink(Link $link, $tags): void * @param Link $link * @param array|string $lists */ - protected static function updateListsForLink(Link $link, $lists): void + protected static function updateListsForLink(Link $link, array|string $lists): void { $oldLists = $link->lists->pluck('id'); @@ -226,7 +226,7 @@ protected static function processTaxonomy(string $model, array $entries): Collec * @param mixed $oldData * @param mixed $newData */ - protected static function createRelationshipRevision(Link $link, string $key, $oldData, $newData): void + protected static function createRelationshipRevision(Link $link, string $key, mixed $oldData, mixed $newData): void { $revision = [ 'revisionable_type' => $link->getMorphClass(), diff --git a/app/Repositories/TrashRepository.php b/app/Repositories/TrashRepository.php index 6acd5154..3f78b6eb 100644 --- a/app/Repositories/TrashRepository.php +++ b/app/Repositories/TrashRepository.php @@ -67,7 +67,7 @@ public static function restore(string $model, int $id): bool default => null, }; - $entry->restore(); + $entry?->restore(); return true; } diff --git a/app/View/Components/Links/HistoryEntry.php b/app/View/Components/Links/HistoryEntry.php index f887ca00..171bd7e9 100644 --- a/app/View/Components/Links/HistoryEntry.php +++ b/app/View/Components/Links/HistoryEntry.php @@ -46,23 +46,23 @@ public function render() } $timestamp = formatDateTime($this->entry->created_at); - $fieldname = trans('link.' . $this->entry->fieldName()); + $fieldName = trans('link.' . $this->entry->fieldName()); [$oldValue, $newValue] = $this->processValues(); if ($oldValue === null) { $change = trans('link.history_added', [ - 'fieldname' => $fieldname, + 'fieldname' => $fieldName, 'newvalue' => htmlspecialchars($newValue), ]); } elseif ($newValue === null) { $change = trans('link.history_removed', [ - 'fieldname' => $fieldname, + 'fieldname' => $fieldName, 'oldvalue' => htmlspecialchars($oldValue), ]); } else { $change = trans('link.history_changed', [ - 'fieldname' => $fieldname, + 'fieldname' => $fieldName, 'oldvalue' => htmlspecialchars($oldValue), 'newvalue' => htmlspecialchars($newValue), ]); @@ -110,7 +110,7 @@ protected function processValues(): array * * @param $oldValue * @param $newValue - * @return null[]|string[] + * @return array */ protected function processTagsField($oldValue, $newValue): array { diff --git a/config/database.php b/config/database.php index 70b9dc02..06c5aeff 100644 --- a/config/database.php +++ b/config/database.php @@ -126,7 +126,7 @@ 'redis' => [ - 'client' => env('REDIS_CLIENT', 'phpredis'), + 'client' => env('REDIS_CLIENT', 'predis'), 'options' => [ 'cluster' => env('REDIS_CLUSTER', 'redis'), From 931859adc52a5b03b655392473c33caf611eccdf Mon Sep 17 00:00:00 2001 From: Kovah Date: Mon, 2 May 2022 20:12:27 +0200 Subject: [PATCH 05/86] Squash migrations of v1 --- ...13_04_09_062329_create_revisions_table.php | 37 --- .../2014_10_12_000000_create_users_table.php | 35 --- ...12_100000_create_password_resets_table.php | 32 --- ..._add_two_factor_columns_to_users_table.php | 38 --- ...18_08_22_212248_create_taxonomy_tables.php | 57 ---- .../2018_08_22_212358_create_link_tables.php | 38 --- .../2018_08_22_213055_create_note_tables.php | 36 --- ...018_09_27_214216_create_settings_table.php | 33 --- ...1_30_153129_update_link_table_for_icon.php | 32 --- .../2019_02_07_223113_add_user_api_token.php | 32 --- ..._02_10_221213_create_permission_tables.php | 109 ------- .../2019_02_11_143743_add_link_status.php | 32 --- .../2019_07_16_173805_create_jobs_table.php | 36 --- ..._07_16_175247_create_failed_jobs_table.php | 35 --- ..._29_135735_move_category_to_list_table.php | 65 ----- ...3446_add_check_disabled_to_links_table.php | 32 --- ...04_230306_convert_link_privacy_setting.php | 31 -- ...enable_internet_archive_backup_setting.php | 38 --- .../2020_10_21_104548_migrate_link_icons.php | 118 -------- ...38_add_thumbnail_column_to_links_table.php | 32 --- ..._10_123913_change_link_thumbnail_field.php | 22 -- ..._24_222856_add_completed_setup_setting.php | 16 -- database/schema/mysql-schema.dump | 271 ++++++++++++++++++ database/schema/pgsql-schema.dump | Bin 0 -> 33787 bytes database/schema/sqlite-schema.dump | 50 ++++ phpunit.xml | 20 +- .../docker/dockerfiles/development.Dockerfile | 2 + 27 files changed, 332 insertions(+), 947 deletions(-) delete mode 100644 database/migrations/2013_04_09_062329_create_revisions_table.php delete mode 100644 database/migrations/2014_10_12_000000_create_users_table.php delete mode 100644 database/migrations/2014_10_12_100000_create_password_resets_table.php delete mode 100644 database/migrations/2014_10_12_200000_add_two_factor_columns_to_users_table.php delete mode 100644 database/migrations/2018_08_22_212248_create_taxonomy_tables.php delete mode 100644 database/migrations/2018_08_22_212358_create_link_tables.php delete mode 100644 database/migrations/2018_08_22_213055_create_note_tables.php delete mode 100644 database/migrations/2018_09_27_214216_create_settings_table.php delete mode 100644 database/migrations/2019_01_30_153129_update_link_table_for_icon.php delete mode 100644 database/migrations/2019_02_07_223113_add_user_api_token.php delete mode 100644 database/migrations/2019_02_10_221213_create_permission_tables.php delete mode 100644 database/migrations/2019_02_11_143743_add_link_status.php delete mode 100644 database/migrations/2019_07_16_173805_create_jobs_table.php delete mode 100644 database/migrations/2019_07_16_175247_create_failed_jobs_table.php delete mode 100644 database/migrations/2019_10_29_135735_move_category_to_list_table.php delete mode 100644 database/migrations/2020_02_28_153446_add_check_disabled_to_links_table.php delete mode 100644 database/migrations/2020_05_04_230306_convert_link_privacy_setting.php delete mode 100644 database/migrations/2020_05_06_153715_enable_internet_archive_backup_setting.php delete mode 100644 database/migrations/2020_10_21_104548_migrate_link_icons.php delete mode 100644 database/migrations/2021_04_15_165138_add_thumbnail_column_to_links_table.php delete mode 100644 database/migrations/2021_05_10_123913_change_link_thumbnail_field.php delete mode 100644 database/migrations/2022_03_24_222856_add_completed_setup_setting.php create mode 100644 database/schema/mysql-schema.dump create mode 100644 database/schema/pgsql-schema.dump create mode 100644 database/schema/sqlite-schema.dump diff --git a/database/migrations/2013_04_09_062329_create_revisions_table.php b/database/migrations/2013_04_09_062329_create_revisions_table.php deleted file mode 100644 index dc954993..00000000 --- a/database/migrations/2013_04_09_062329_create_revisions_table.php +++ /dev/null @@ -1,37 +0,0 @@ -increments('id'); - $table->string('revisionable_type'); - $table->integer('revisionable_id'); - $table->integer('user_id')->nullable(); - $table->string('key'); - $table->text('old_value')->nullable(); - $table->text('new_value')->nullable(); - $table->timestamps(); - - $table->index(array('revisionable_id', 'revisionable_type')); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down(): void - { - Schema::drop('revisions'); - } -} diff --git a/database/migrations/2014_10_12_000000_create_users_table.php b/database/migrations/2014_10_12_000000_create_users_table.php deleted file mode 100644 index 4000d444..00000000 --- a/database/migrations/2014_10_12_000000_create_users_table.php +++ /dev/null @@ -1,35 +0,0 @@ -increments('id'); - $table->string('name'); - $table->string('email')->unique(); - $table->string('password'); - $table->rememberToken(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down(): void - { - Schema::dropIfExists('users'); - } -} diff --git a/database/migrations/2014_10_12_100000_create_password_resets_table.php b/database/migrations/2014_10_12_100000_create_password_resets_table.php deleted file mode 100644 index 2768a2bc..00000000 --- a/database/migrations/2014_10_12_100000_create_password_resets_table.php +++ /dev/null @@ -1,32 +0,0 @@ -string('email')->index(); - $table->string('token'); - $table->timestamp('created_at')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down(): void - { - Schema::dropIfExists('password_resets'); - } -} diff --git a/database/migrations/2014_10_12_200000_add_two_factor_columns_to_users_table.php b/database/migrations/2014_10_12_200000_add_two_factor_columns_to_users_table.php deleted file mode 100644 index d5e08b3f..00000000 --- a/database/migrations/2014_10_12_200000_add_two_factor_columns_to_users_table.php +++ /dev/null @@ -1,38 +0,0 @@ -text('two_factor_secret') - ->after('password') - ->nullable(); - - $table->text('two_factor_recovery_codes') - ->after('two_factor_secret') - ->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down(): void - { - Schema::table('users', function (Blueprint $table) { - $table->dropColumn('two_factor_secret', 'two_factor_recovery_codes'); - }); - } -} diff --git a/database/migrations/2018_08_22_212248_create_taxonomy_tables.php b/database/migrations/2018_08_22_212248_create_taxonomy_tables.php deleted file mode 100644 index 85e2317f..00000000 --- a/database/migrations/2018_08_22_212248_create_taxonomy_tables.php +++ /dev/null @@ -1,57 +0,0 @@ -increments('id'); - $table->integer('user_id')->unsigned(); - $table->text('name'); - $table->boolean('is_private')->default(false); - $table->timestamps(); - $table->softDeletes(); - }); - - Schema::create('link_tags', function (Blueprint $table) { - $table->integer('link_id')->unsigned(); - $table->integer('tag_id')->unsigned(); - - $table->primary(['link_id', 'tag_id']); - }); - - // Categories - Schema::create('categories', function (Blueprint $table) { - $table->increments('id'); - $table->integer('user_id')->unsigned(); - $table->text('name'); - $table->text('description')->nullable(); - $table->integer('parent_category')->unsigned()->nullable(); - $table->boolean('is_private')->default(false); - $table->timestamps(); - $table->softDeletes(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down(): void - { - Schema::dropIfExists('tags'); - Schema::dropIfExists('link_tags'); - Schema::dropIfExists('categories'); - } -} diff --git a/database/migrations/2018_08_22_212358_create_link_tables.php b/database/migrations/2018_08_22_212358_create_link_tables.php deleted file mode 100644 index 077711d3..00000000 --- a/database/migrations/2018_08_22_212358_create_link_tables.php +++ /dev/null @@ -1,38 +0,0 @@ -increments('id'); - $table->integer('user_id')->unsigned(); - $table->integer('category_id')->unsigned()->nullable(); - $table->text('url'); - $table->text('title'); - $table->text('description')->nullable(); - $table->boolean('is_private')->default(false); - $table->timestamps(); - $table->softDeletes(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down(): void - { - Schema::dropIfExists('links'); - } -} diff --git a/database/migrations/2018_08_22_213055_create_note_tables.php b/database/migrations/2018_08_22_213055_create_note_tables.php deleted file mode 100644 index b6f11cc9..00000000 --- a/database/migrations/2018_08_22_213055_create_note_tables.php +++ /dev/null @@ -1,36 +0,0 @@ -increments('id'); - $table->integer('user_id')->unsigned(); - $table->integer('link_id')->unsigned(); - $table->text('note'); - $table->boolean('is_private')->default(false); - $table->timestamps(); - $table->softDeletes(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down(): void - { - Schema::dropIfExists('notes'); - } -} diff --git a/database/migrations/2018_09_27_214216_create_settings_table.php b/database/migrations/2018_09_27_214216_create_settings_table.php deleted file mode 100644 index e75f1bee..00000000 --- a/database/migrations/2018_09_27_214216_create_settings_table.php +++ /dev/null @@ -1,33 +0,0 @@ -increments('id'); - $table->integer('user_id')->unsigned()->nullable(); - $table->string('key'); - $table->text('value')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down(): void - { - Schema::dropIfExists('settings'); - } -} diff --git a/database/migrations/2019_01_30_153129_update_link_table_for_icon.php b/database/migrations/2019_01_30_153129_update_link_table_for_icon.php deleted file mode 100644 index b755c6a4..00000000 --- a/database/migrations/2019_01_30_153129_update_link_table_for_icon.php +++ /dev/null @@ -1,32 +0,0 @@ -string('icon')->nullable()->after('description'); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down(): void - { - Schema::table('links', function (Blueprint $table) { - $table->dropColumn('icon'); - }); - } -} diff --git a/database/migrations/2019_02_07_223113_add_user_api_token.php b/database/migrations/2019_02_07_223113_add_user_api_token.php deleted file mode 100644 index dfd0cef9..00000000 --- a/database/migrations/2019_02_07_223113_add_user_api_token.php +++ /dev/null @@ -1,32 +0,0 @@ -string('api_token')->nullable()->after('remember_token'); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down(): void - { - Schema::table('users', function (Blueprint $table) { - $table->dropColumn('api_token'); - }); - } -} diff --git a/database/migrations/2019_02_10_221213_create_permission_tables.php b/database/migrations/2019_02_10_221213_create_permission_tables.php deleted file mode 100644 index bae1c98f..00000000 --- a/database/migrations/2019_02_10_221213_create_permission_tables.php +++ /dev/null @@ -1,109 +0,0 @@ -increments('id'); - $table->string('name'); - $table->string('guard_name'); - $table->timestamps(); - }); - - Schema::create($tableNames['roles'], function (Blueprint $table) { - $table->increments('id'); - $table->string('name'); - $table->string('guard_name'); - $table->timestamps(); - }); - - Schema::create( - $tableNames['model_has_permissions'], - function (Blueprint $table) use ($tableNames, $columnNames) { - $table->unsignedInteger('permission_id'); - - $table->string('model_type'); - $table->unsignedBigInteger($columnNames['model_morph_key']); - $table->index([$columnNames['model_morph_key'], 'model_type',]); - - $table->foreign('permission_id') - ->references('id') - ->on($tableNames['permissions']) - ->onDelete('cascade'); - - $table->primary( - ['permission_id', $columnNames['model_morph_key'], 'model_type'], - 'model_has_permissions_permission_model_type_primary' - ); - } - ); - - Schema::create($tableNames['model_has_roles'], function (Blueprint $table) use ($tableNames, $columnNames) { - $table->unsignedInteger('role_id'); - - $table->string('model_type'); - $table->unsignedBigInteger($columnNames['model_morph_key']); - $table->index([$columnNames['model_morph_key'], 'model_type',]); - - $table->foreign('role_id') - ->references('id') - ->on($tableNames['roles']) - ->onDelete('cascade'); - - $table->primary( - ['role_id', $columnNames['model_morph_key'], 'model_type'], - 'model_has_roles_role_model_type_primary' - ); - }); - - Schema::create($tableNames['role_has_permissions'], function (Blueprint $table) use ($tableNames) { - $table->unsignedInteger('permission_id'); - $table->unsignedInteger('role_id'); - - $table->foreign('permission_id') - ->references('id') - ->on($tableNames['permissions']) - ->onDelete('cascade'); - - $table->foreign('role_id') - ->references('id') - ->on($tableNames['roles']) - ->onDelete('cascade'); - - $table->primary(['permission_id', 'role_id']); - - app('cache') - ->store(config('permission.cache.store') !== 'default' ? config('permission.cache.store') : null) - ->forget(config('permission.cache.key')); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down(): void - { - $tableNames = config('permission.table_names'); - - Schema::drop($tableNames['role_has_permissions']); - Schema::drop($tableNames['model_has_roles']); - Schema::drop($tableNames['model_has_permissions']); - Schema::drop($tableNames['roles']); - Schema::drop($tableNames['permissions']); - } -} diff --git a/database/migrations/2019_02_11_143743_add_link_status.php b/database/migrations/2019_02_11_143743_add_link_status.php deleted file mode 100644 index 7b387c99..00000000 --- a/database/migrations/2019_02_11_143743_add_link_status.php +++ /dev/null @@ -1,32 +0,0 @@ -integer('status')->default(1)->after('is_private'); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down(): void - { - Schema::table('links', function (Blueprint $table) { - $table->dropColumn('status'); - }); - } -} diff --git a/database/migrations/2019_07_16_173805_create_jobs_table.php b/database/migrations/2019_07_16_173805_create_jobs_table.php deleted file mode 100644 index 9ecf7326..00000000 --- a/database/migrations/2019_07_16_173805_create_jobs_table.php +++ /dev/null @@ -1,36 +0,0 @@ -bigIncrements('id'); - $table->string('queue')->index(); - $table->longText('payload'); - $table->unsignedTinyInteger('attempts'); - $table->unsignedInteger('reserved_at')->nullable(); - $table->unsignedInteger('available_at'); - $table->unsignedInteger('created_at'); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down(): void - { - Schema::dropIfExists('jobs'); - } -} diff --git a/database/migrations/2019_07_16_175247_create_failed_jobs_table.php b/database/migrations/2019_07_16_175247_create_failed_jobs_table.php deleted file mode 100644 index d94a5fb1..00000000 --- a/database/migrations/2019_07_16_175247_create_failed_jobs_table.php +++ /dev/null @@ -1,35 +0,0 @@ -bigIncrements('id'); - $table->text('connection'); - $table->text('queue'); - $table->longText('payload'); - $table->longText('exception'); - $table->timestamp('failed_at')->useCurrent(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down(): void - { - Schema::dropIfExists('failed_jobs'); - } -} diff --git a/database/migrations/2019_10_29_135735_move_category_to_list_table.php b/database/migrations/2019_10_29_135735_move_category_to_list_table.php deleted file mode 100644 index 8b2e14a8..00000000 --- a/database/migrations/2019_10_29_135735_move_category_to_list_table.php +++ /dev/null @@ -1,65 +0,0 @@ -whereNotNull('parent_category')->get()->each(function ($item) { - $parent = DB::table('categories')->where('id', $item->parent_category)->first(); - DB::table('categories')->where('id', $item->id)->update([ - 'name' => $parent->name . ' > ' . $item->name, - ]); - }); - - // Move all corresponding tables - Schema::table('categories', function (Blueprint $table) { - $table->dropColumn('parent_category'); - $table->rename('lists'); - }); - - Schema::create('link_lists', function (Blueprint $table) { - $table->integer('link_id')->unsigned(); - $table->integer('list_id')->unsigned(); - - $table->primary(['link_id', 'list_id']); - }); - - // Transfer all link relations form categories to categories - DB::table('links')->whereNotNull('category_id')->get()->each(function ($link) { - $list = DB::table('lists')->where('id', $link->category_id)->first(); - if (!empty($list)) { - Link::withTrashed()->find($link->id)->lists()->attach($list->id); - } - }); - - Schema::table('links', function (Blueprint $table) { - $table->dropColumn('category_id'); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down(): void - { - Schema::table('lists', function (Blueprint $table) { - $table->rename('categories'); - }); - - Schema::dropIfExists('link_lists'); - } -} diff --git a/database/migrations/2020_02_28_153446_add_check_disabled_to_links_table.php b/database/migrations/2020_02_28_153446_add_check_disabled_to_links_table.php deleted file mode 100644 index 82b06d39..00000000 --- a/database/migrations/2020_02_28_153446_add_check_disabled_to_links_table.php +++ /dev/null @@ -1,32 +0,0 @@ -boolean('check_disabled')->default(false)->after('status'); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down(): void - { - Schema::table('links', function (Blueprint $table) { - $table->dropColumn(['check_disabled']); - }); - } -} diff --git a/database/migrations/2020_05_04_230306_convert_link_privacy_setting.php b/database/migrations/2020_05_04_230306_convert_link_privacy_setting.php deleted file mode 100644 index 496b8733..00000000 --- a/database/migrations/2020_05_04_230306_convert_link_privacy_setting.php +++ /dev/null @@ -1,31 +0,0 @@ - 1, - 'key' => 'links_private_default', - 'value' => usersettings('private_default') ?? '0', - ]); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down(): void - { - // - } -} diff --git a/database/migrations/2020_05_06_153715_enable_internet_archive_backup_setting.php b/database/migrations/2020_05_06_153715_enable_internet_archive_backup_setting.php deleted file mode 100644 index ec7e6174..00000000 --- a/database/migrations/2020_05_06_153715_enable_internet_archive_backup_setting.php +++ /dev/null @@ -1,38 +0,0 @@ - 1, - 'key' => 'archive_backups_enabled', - 'value' => '1', - ]); - - Setting::create([ - 'user_id' => 1, - 'key' => 'archive_private_backups_enabled', - 'value' => '0', - ]); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down(): void - { - Setting::where('key', 'archive_backups_enabled')->delete(); - Setting::where('key', 'archive_private_backups_enabled')->delete(); - } -} diff --git a/database/migrations/2020_10_21_104548_migrate_link_icons.php b/database/migrations/2020_10_21_104548_migrate_link_icons.php deleted file mode 100644 index a03a925e..00000000 --- a/database/migrations/2020_10_21_104548_migrate_link_icons.php +++ /dev/null @@ -1,118 +0,0 @@ - 'brand.500px', - 'fab fa-amazon' => 'brand.amazon', - 'fab fa-app-store' => 'brand.app-store-ios', - 'fab fa-apple' => 'brand.apple', - 'fab fa-artstation' => 'brand.artstation', - 'fab fa-atlassian' => 'brand.atlassian', - 'fab fa-bandcamp' => 'brand.bandcamp', - 'fab fa-behance' => 'brand.behance', - 'fab fa-bitbucket' => 'brand.bitbucket', - 'fab fa-bitcoin' => 'brand.bitcoin', - 'fab fa-blogger-b' => 'brand.blogger-b', - 'fab fa-chrome' => 'brand.chrome', - 'fab fa-codepen' => 'brand.codepen', - 'fab fa-dev' => 'brand.dev', - 'fab fa-deviantart' => 'brand.deviantart', - 'fab fa-discord' => 'brand.discord', - 'fab fa-docker' => 'brand.docker', - 'fab fa-dribbble' => 'brand.dribbble', - 'fab fa-dropbox' => 'brand.dropbox', - 'fab fa-ebay' => 'brand.ebay', - 'fab fa-etsy' => 'brand.etsy', - 'fab fa-facebook-square' => 'brand.facebook', - 'fab fa-firefox' => 'brand.firefox', - 'fab fa-flickr' => 'brand.flickr', - 'fab fa-flipboard' => 'brand.flipboard', - 'fab fa-get-pocket' => 'brand.get-pocket', - 'fab fa-github' => 'brand.github', - 'fab fa-gitlab' => 'brand.gitlab', - 'fab fa-gitter' => 'brand.gitter', - 'fab fa-google' => 'brand.google', - 'fab fa-google-drive' => 'brand.google-drive', - 'fab fa-google-play' => 'brand.google-play', - 'fab fa-hacker-news' => 'brand.hacker-news', - 'fab fa-hacker-news-square' => 'brand.hacker-news', - 'fab fa-imdb' => 'brand.imdb', - 'fab fa-instagram' => 'brand.instagram', - 'fab fa-jsfiddle' => 'brand.jsfiddle', - 'fab fa-keybase' => 'brand.keybase', - 'fab fa-kickstarter' => 'brand.kickstarter', - 'fab fa-lastfm' => 'brand.lastfm', - 'fab fa-linkedin-in' => 'brand.linkedin', - 'fab fa-mastodon' => 'brand.mastodon', - 'fab fa-medium-m' => 'brand.medium', - 'fab fa-meetup' => 'brand.meetup', - 'fab fa-microsoft' => 'brand.microsoft', - 'fab fa-mixcloud' => 'brand.mixcloud', - 'fab fa-npm' => 'brand.npm', - 'fab fa-openid' => 'brand.openid', - 'fab fa-patreon ' => 'brand.patreon', - 'fab fa-paypal' => 'brand.paypal', - 'fab fa-php' => 'brand.php', - 'fab fa-pinterest-square' => 'brand.pinterest', - 'fab fa-playstation' => 'brand.playstation', - 'fab fa-product-hunt' => 'brand.product-hunt', - 'fab fa-quora' => 'brand.quora', - 'fab fa-reddit-square' => 'brand.reddit', - 'fab fa-researchgate' => 'brand.researchgate', - 'fab fa-skype' => 'brand.skype', - 'fab fa-slack' => 'brand.slack', - 'fab fa-slideshare' => 'brand.slideshare', - 'fab fa-snapchat' => 'brand.snapchat', - 'fab fa-soundcloud' => 'brand.soundcloud', - 'fab fa-spotify' => 'brand.spotify', - 'fab fa-stack-exchange' => 'brand.stack-exchange', - 'fab fa-stack-overflow' => 'brand.stack-overflow', - 'fab fa-steam' => 'brand.steam', - 'fab fa-telegram' => 'brand.telegram', - 'fab fa-trello' => 'brand.trello', - 'fab fa-tripadvisor' => 'brand.tripadvisor', - 'fab fa-tumblr-square' => 'brand.tumblr', - 'fab fa-twitch' => 'brand.twitch', - 'fab fa-twitter-square' => 'brand.twitter', - 'fab fa-vimeo' => 'brand.vimeo', - 'fab fa-weibo' => 'brand.weibo', - 'fab fa-wikipedia-w' => 'brand.wikipedia-w', - 'fab fa-wordpress' => 'brand.wordpress', - 'fab fa-xbox' => 'brand.xbox', - 'fab fa-xing-square' => 'brand.xing', - 'fab fa-yelp' => 'brand.yelp', - 'fab fa-youtube' => 'brand.youtube', - ]; - - /** - * Run the migrations. - * - * @return void - */ - public function up(): void - { - Link::withTrashed()->chunk(100, function ($links) { - /** @var Link $link */ - foreach ($links as $link) { - $link->icon = $this->changedLinks[$link->icon] ?? LinkIconMapper::$defaultIcon; - $link->save(); - } - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down(): void - { - // - } -} diff --git a/database/migrations/2021_04_15_165138_add_thumbnail_column_to_links_table.php b/database/migrations/2021_04_15_165138_add_thumbnail_column_to_links_table.php deleted file mode 100644 index 20a40054..00000000 --- a/database/migrations/2021_04_15_165138_add_thumbnail_column_to_links_table.php +++ /dev/null @@ -1,32 +0,0 @@ -string('thumbnail', 255)->nullable()->default(null)->after('icon'); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down(): void - { - Schema::table('links', function (Blueprint $table) { - $table->dropColumn('thumbnail'); - }); - } -} diff --git a/database/migrations/2021_05_10_123913_change_link_thumbnail_field.php b/database/migrations/2021_05_10_123913_change_link_thumbnail_field.php deleted file mode 100644 index 08a11443..00000000 --- a/database/migrations/2021_05_10_123913_change_link_thumbnail_field.php +++ /dev/null @@ -1,22 +0,0 @@ -text('thumbnail')->change(); - }); - } - - public function down() - { - Schema::table('links', function (Blueprint $table) { - $table->string('thumbnail')->change(); - }); - } -} diff --git a/database/migrations/2022_03_24_222856_add_completed_setup_setting.php b/database/migrations/2022_03_24_222856_add_completed_setup_setting.php deleted file mode 100644 index 37534a2c..00000000 --- a/database/migrations/2022_03_24_222856_add_completed_setup_setting.php +++ /dev/null @@ -1,16 +0,0 @@ - 'system_setup_completed', 'value' => true]); - Cache::forget('systemsettings'); - } - } -} diff --git a/database/schema/mysql-schema.dump b/database/schema/mysql-schema.dump new file mode 100644 index 00000000..cce6e23c --- /dev/null +++ b/database/schema/mysql-schema.dump @@ -0,0 +1,271 @@ +/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; +/*!40103 SET TIME_ZONE='+00:00' */; +/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; +/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; +/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; +/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; +DROP TABLE IF EXISTS `failed_jobs`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `failed_jobs` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `connection` text COLLATE utf8mb4_bin NOT NULL, + `queue` text COLLATE utf8mb4_bin NOT NULL, + `payload` longtext COLLATE utf8mb4_bin NOT NULL, + `exception` longtext COLLATE utf8mb4_bin NOT NULL, + `failed_at` timestamp NOT NULL DEFAULT current_timestamp(), + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `jobs`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `jobs` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `queue` varchar(191) COLLATE utf8mb4_bin NOT NULL, + `payload` longtext COLLATE utf8mb4_bin NOT NULL, + `attempts` tinyint(3) unsigned NOT NULL, + `reserved_at` int(10) unsigned DEFAULT NULL, + `available_at` int(10) unsigned NOT NULL, + `created_at` int(10) unsigned NOT NULL, + PRIMARY KEY (`id`), + KEY `jobs_queue_index` (`queue`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `link_lists`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `link_lists` ( + `link_id` int(10) unsigned NOT NULL, + `list_id` int(10) unsigned NOT NULL, + PRIMARY KEY (`link_id`,`list_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `link_tags`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `link_tags` ( + `link_id` int(10) unsigned NOT NULL, + `tag_id` int(10) unsigned NOT NULL, + PRIMARY KEY (`link_id`,`tag_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `links`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `links` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `user_id` int(10) unsigned NOT NULL, + `url` text COLLATE utf8mb4_bin NOT NULL, + `title` text COLLATE utf8mb4_bin NOT NULL, + `description` text COLLATE utf8mb4_bin DEFAULT NULL, + `icon` varchar(191) COLLATE utf8mb4_bin DEFAULT NULL, + `thumbnail` text COLLATE utf8mb4_bin DEFAULT NULL, + `is_private` tinyint(1) NOT NULL DEFAULT 0, + `status` int(11) NOT NULL DEFAULT 1, + `check_disabled` tinyint(1) NOT NULL DEFAULT 0, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + `deleted_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `lists`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `lists` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `user_id` int(10) unsigned NOT NULL, + `name` text COLLATE utf8mb4_bin NOT NULL, + `description` text COLLATE utf8mb4_bin DEFAULT NULL, + `is_private` tinyint(1) NOT NULL DEFAULT 0, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + `deleted_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `migrations`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `migrations` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `migration` varchar(191) COLLATE utf8mb4_bin NOT NULL, + `batch` int(11) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `model_has_permissions`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `model_has_permissions` ( + `permission_id` int(10) unsigned NOT NULL, + `model_type` varchar(191) COLLATE utf8mb4_bin NOT NULL, + `model_id` bigint(20) unsigned NOT NULL, + PRIMARY KEY (`permission_id`,`model_id`,`model_type`), + KEY `model_has_permissions_model_id_model_type_index` (`model_id`,`model_type`), + CONSTRAINT `model_has_permissions_permission_id_foreign` FOREIGN KEY (`permission_id`) REFERENCES `permissions` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `model_has_roles`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `model_has_roles` ( + `role_id` int(10) unsigned NOT NULL, + `model_type` varchar(191) COLLATE utf8mb4_bin NOT NULL, + `model_id` bigint(20) unsigned NOT NULL, + PRIMARY KEY (`role_id`,`model_id`,`model_type`), + KEY `model_has_roles_model_id_model_type_index` (`model_id`,`model_type`), + CONSTRAINT `model_has_roles_role_id_foreign` FOREIGN KEY (`role_id`) REFERENCES `roles` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `notes`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `notes` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `user_id` int(10) unsigned NOT NULL, + `link_id` int(10) unsigned NOT NULL, + `note` text COLLATE utf8mb4_bin NOT NULL, + `is_private` tinyint(1) NOT NULL DEFAULT 0, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + `deleted_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `password_resets`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `password_resets` ( + `email` varchar(191) COLLATE utf8mb4_bin NOT NULL, + `token` varchar(191) COLLATE utf8mb4_bin NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + KEY `password_resets_email_index` (`email`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `permissions`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `permissions` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(191) COLLATE utf8mb4_bin NOT NULL, + `guard_name` varchar(191) COLLATE utf8mb4_bin NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `revisions`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `revisions` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `revisionable_type` varchar(191) COLLATE utf8mb4_bin NOT NULL, + `revisionable_id` int(11) NOT NULL, + `user_id` int(11) DEFAULT NULL, + `key` varchar(191) COLLATE utf8mb4_bin NOT NULL, + `old_value` text COLLATE utf8mb4_bin DEFAULT NULL, + `new_value` text COLLATE utf8mb4_bin DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `revisions_revisionable_id_revisionable_type_index` (`revisionable_id`,`revisionable_type`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `role_has_permissions`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `role_has_permissions` ( + `permission_id` int(10) unsigned NOT NULL, + `role_id` int(10) unsigned NOT NULL, + PRIMARY KEY (`permission_id`,`role_id`), + KEY `role_has_permissions_role_id_foreign` (`role_id`), + CONSTRAINT `role_has_permissions_permission_id_foreign` FOREIGN KEY (`permission_id`) REFERENCES `permissions` (`id`) ON DELETE CASCADE, + CONSTRAINT `role_has_permissions_role_id_foreign` FOREIGN KEY (`role_id`) REFERENCES `roles` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `roles`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `roles` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(191) COLLATE utf8mb4_bin NOT NULL, + `guard_name` varchar(191) COLLATE utf8mb4_bin NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `settings`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `settings` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `user_id` int(10) unsigned DEFAULT NULL, + `key` varchar(191) COLLATE utf8mb4_bin NOT NULL, + `value` text COLLATE utf8mb4_bin DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `tags`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tags` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `user_id` int(10) unsigned NOT NULL, + `name` text COLLATE utf8mb4_bin NOT NULL, + `is_private` tinyint(1) NOT NULL DEFAULT 0, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + `deleted_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `users`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `users` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(191) COLLATE utf8mb4_bin NOT NULL, + `email` varchar(191) COLLATE utf8mb4_bin NOT NULL, + `password` varchar(191) COLLATE utf8mb4_bin NOT NULL, + `two_factor_secret` text COLLATE utf8mb4_bin DEFAULT NULL, + `two_factor_recovery_codes` text COLLATE utf8mb4_bin DEFAULT NULL, + `remember_token` varchar(100) COLLATE utf8mb4_bin DEFAULT NULL, + `api_token` varchar(191) COLLATE utf8mb4_bin DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `users_email_unique` (`email`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; + +/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; +/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; +/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; +/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; + +INSERT INTO `migrations` VALUES (7,'2014_10_12_000000_create_users_table',1); +INSERT INTO `migrations` VALUES (8,'2014_10_12_100000_create_password_resets_table',1); +INSERT INTO `migrations` VALUES (9,'2018_08_22_212248_create_taxonomy_tables',1); +INSERT INTO `migrations` VALUES (10,'2018_08_22_212358_create_link_tables',1); +INSERT INTO `migrations` VALUES (11,'2018_08_22_213055_create_note_tables',1); +INSERT INTO `migrations` VALUES (12,'2018_09_27_214216_create_settings_table',1); +INSERT INTO `migrations` VALUES (13,'2019_01_30_153129_update_link_table_for_icon',2); +INSERT INTO `migrations` VALUES (14,'2019_02_07_223113_add_user_api_token',3); +INSERT INTO `migrations` VALUES (15,'2019_02_10_221213_create_permission_tables',3); +INSERT INTO `migrations` VALUES (16,'2019_02_11_143743_add_link_status',3); +INSERT INTO `migrations` VALUES (17,'2019_07_16_173805_create_jobs_table',4); +INSERT INTO `migrations` VALUES (18,'2019_07_16_175247_create_failed_jobs_table',4); +INSERT INTO `migrations` VALUES (19,'2019_10_29_135735_move_category_to_list_table',5); +INSERT INTO `migrations` VALUES (20,'2020_02_28_153446_add_check_disabled_to_links_table',6); +INSERT INTO `migrations` VALUES (21,'2020_05_04_230306_convert_link_privacy_setting',7); +INSERT INTO `migrations` VALUES (22,'2020_05_06_153715_enable_internet_archive_backup_setting',7); +INSERT INTO `migrations` VALUES (23,'2013_04_09_062329_create_revisions_table',8); +INSERT INTO `migrations` VALUES (24,'2020_10_21_104548_migrate_link_icons',9); +INSERT INTO `migrations` VALUES (25,'2014_10_12_200000_add_two_factor_columns_to_users_table',10); +INSERT INTO `migrations` VALUES (26,'2021_04_15_165138_add_thumbnail_column_to_links_table',11); +INSERT INTO `migrations` VALUES (27,'2021_05_10_123913_change_link_thumbnail_field',12); +INSERT INTO `migrations` VALUES (29,'2022_03_24_222856_add_completed_setup_setting',13); diff --git a/database/schema/pgsql-schema.dump b/database/schema/pgsql-schema.dump new file mode 100644 index 0000000000000000000000000000000000000000..15e9ca9915d441b466316ca2b9b9cf7d9eb56d81 GIT binary patch literal 33787 zcmdsA3zSsFnQjmbqUicUH;UXfkQtC2`}SiV##b}bz~D>|JJW-Jc-o$x%S=O0ciY_q z1ICEam^JaND6E@E9>m})njDXALI|>QvWZ3sD87hjlq9RsO(g7kHX7GGXaB0YkLs$w zZr|?d*+=dJ}gG0LRzfhm+I}a`5zi`kP z(DhL$u!ht+bTauQ7h%J1eolq&(O7#=M`vu2uj~h9jI`btjcch)+Q^m?MmCijOlOC* zOSOjn_`=qP&rGA8QhxZ3hYD6FGev_IISziYYZ&Eb8a(Wacl5=3ft@~|@RM@XNQwYQ z#Zodmm@Et?Qn~EvTww&bN)$^4_^(K~%VlflEv@D)8tH9cyfhMD%y@HtQr=oAZ(Y&$ zxRxJEq>`m%CO6bnG)k1o^iX3%(MT3j!-;&dG~6&>Yk+?goVhjQxW?v{=#U<04p7MT z=3r~c$LkT1ZAT;?SrF-qGNrp3?zHztBk`zaJ(H&r+#&yt8H8s?_F1sFPi+yWuvo zyP=Ryzh%&>?ysg1@duG74I(C$7c% zySnDn2ct!!kWfC&CPxfFXRIVp4I0H%A)PO!b6NVB)s-$L@`dy|08$&s5@4s&lo2%L={o_6Fk~GO4I9b4C&|9RXy8+nY_QFD8r%kRGKO-6v{3|UB#Op$ z)Lr#O|E3>Q(iHS9eFxfA+;Ay>X`eI=#^ugX+4YvADKig~o2h zdbIA&*s@4hf0Py>zaz_?-|dn1#ZgTM$cU?=kX7VGM$qx7IC?(fN&~tsxYf0`JK&u> z4j;K|bJlZJEZPB`WUgTWJc@M1qrIA4z%&^NM$MwMfTl*(lpf@*oKp>t9rFtv`xoGd zU4nXq!y!7Fu1=;iU@B{J1CsfF41}2Zb0m%v7)TF+9}o>Om(3a}+n9x?*NqyZs1wL1 zH)L|jLCilGV=2S&4nl<{V-?Nbb{_5hy}h8MiFjvs6m+36x@iDXQ1Pa`2<$5H$<%*2gdIK#&2Y(HWu}f5qP=IO+X0{&!1!lISYz2E|7MU7O z7LutFjOgofup$284$a=QbUojf^lmz0Z?v%8oHqsIhDvXpP zoB->*02)TElWSH6$fH>{3tBsZnkAXKajm)8<7c2KZjW3Ak|C03%C(3iJ>6?TaN zZw}G942k>`X!M)_I?N6o3ey_t4P~TE>c-+|s_tZ-DXY8Ff-F;~GoF?HAftg#0fSI5 zHo{n2D`-mhlA$iDZ5tc``gON z6BKs*u;|6iDT(XkX|#~RVxv;JltJUEKc`6*!zT^d3k@HqSOJ*xl}3y9AY#oHbzu}s z4I8PoiNSP{j5>p!CYPn*(UE~H3{+GEu5&yPbX^qiB}@M#0}Sgv;%tclx(qwFKoP~T z!&B06XF_Lop8`hEVTfl#hRoYIqz47xokhnX2``uV+@-)TJ`nK?OCu3|INqU14+!0P z2AE-&;D&;&Ep#XvNe>m0WU?jsqAvm+=7$}MN)E{`sjxc1t_G5&)Ua)RR$|Cy$g=CN zkH!4Vf=aZQU~8C09!`7eXzex!HGASLx zML>XCkyMRjN=}LK+LK>Qjl7}Kk+47DJBxHO2dTcqa1xS_1|-UhMa;CeLqXKEFk;in zoa(T+h7Dk>@zRF8;mzV$d59u~L=3gLxxl0xC87P3l?Q0yB0k4+#P}v9vB>m*oo){6 zLAsFRG+lsnuH>(_0;xNwl+1*aeE%N;(jLIdvbjQU>H^^*6@;PYFbz7hxsnXrB1O^-?iqVBsHssV4PY_ppIzpjB3Ty+zoM3KkVbX1DfRH=64mjP6F)N9Mj?)pJR34( z9-}&OMxI9pC32H*&TTwWM|FG+(ojSnj&~H&Lqb${K&b_KD|MCmWU;tD2Me|&Z6>eL zeHZ94S1FL0wr`A(i3>h)5<<9AZmpr3V+lpMq@4SD8y$>nbt&_q0>84lFr2CyhF()* z+uBOAbKUYR9&Pc$!%hZGx^; zc#qH>8aYa5wR(2|D(BoB64z;x1L;h<1grlvI%Dl*l8{n{XwUNwi3#;L^FW01>Kkke)5Vg4u`Z2f5>_c3 zluh9HBz)1pDp;joDkD=aLkW{Z=1A5W8@vURxy)cAq3md^ z?$;;r_^c^>X{{{S7WDlEJhYoryOY0#VhVR6QcrwH(_n!ndNz@jT78ILOxqVxAA(}% z;x?kdH|{n>#wAZ-7Z|T|@QW$@Bfu291m_SAgnVbh6Pn7Zka5gGIc&y<(V8v;oWGgB z1g(?O^2{7nSu{E)u#?Yab2h9+Sq+>Hd(I#JlF`7YfK#ZgnI^wT%Tk2*2Nz%}uDE)S zz5Y*4*6{766rQ?B;&rtoLNrN5n^OC-TO6544ur^%kA(hrmLB;I$dGx9g92h4R6>0i zxyd)@HXXYZ$}0R9hnwuX$iwmat$-NRysFfKmKM657&22Oa)dzKLCy_jWuC(-Un!&+ zU)1459Mp-C^B(f}Z?PiFo^_gdAkU8L7iyrwG@EC&rnVSvtyZ)cfq3Ev|4&;vUmb2DW1K2WX#$%x6b@fxsSbWHn|^7psUL5~=mH2giJuwYua(%9!c zBCTRo$699bHf=8$BgV)8oa0jE8+E^bE}K3~)XbgLURs|^tcE@5xdNPEf~MdM7n~iF zo)wH#ZkhIQY3*hr%?LrcJ4xh)XQZ zQ%<}Wu~+cKuz+VnhRj<`;1?Hs*Q0KP+~k{c^CRk5ny*1}B=q69J&CyByPck4CaOS` zC(!HKo>kt`F%gVI(boF<~ z$T3ZF`q$bAn+5BE=(w@L+|S0*nfljo@x=vWC5Yg>!ZkO>;zMm&Ry7fQx^8`kA-Jyam*yi_5 zhceC{PZYl_6k!O-{*EK921JJp*S|}ICZ%1!lE~_Tq~Ao)Zz3w~$Gt~|WT?57Dk0sX zgo5a1x{RtC{P=xR-t-S|qaLW~Aye;6ho_72!`GFlwdr)gb+Y5Q0lN*jJZ&`ya&))~ zDh6DRZbEcWZ!^&}2VPy=ZgQ^*&2USIzU%-vMAlhRr6lX-D$7<>Qzga-Cpg@T1y)Rp z_sB&(^f+i*f6%mkX>EP83i)7LD@(;&E6XU@8KH;#Fl4WINjl{g^w?B5q|WTUEM&B) zq_*mTB5d8K1GwKD$fecAZ>UfVwY5t)v=xe;+eC#DRf8OtI1`jkF;PKVsE5u$-i%qQInqe!!#kCT>3(XdbbgLP=4Ppk zsv6ArB!K{$BHG5=s0(UlwBt9U9VuI~oFqmd?P$HOjJy#_hqqcuM+B$A1Ll~?Tdb%o zxC9Ncq4u7oc4EPan6<|A;C#*gJzt||{pM;5dwaU!?PBnnGe{Sl0OZW z_HwbRd!&nNs2k88DPC4W%F11ecL%ucvPPkPZlc7VQUqT$2=)73>Nxov}^dTJM4$1%mUn zQeo66dm&%dHX|L;yaDYIxyjE!$0HfOp882f%=vx}?T2EIJ}w$hw$IHD>uvkGn0dVs z?bA$<4L)fy8Bz$V%Zui@R$MpfNn3h1p*=-6B;vBW+)L-|c~QM3C+$MK3GENL$Rn+zkY}g`!R9u!M2_1&7rWLz8iqO0+kCN^RO45zJ;T` zCkF4~jdaH1bb-&;2c2iL4LN;HYhmlP9UYoOsRE8HBUFInb7Qg~mh{l3YB60?;qed8*?kmDZH z`Z4GhdaGUnP^`OF1f>@lKBYtu)QzkO)8#@M3@b6~a_JPI#K5v^#87IjP@x2mU0cn# zh-;Pml(@ix$0vb55?HghuW8O#wO*}u>5@Z_A>}+pw2D3?vtsjIZNxk~JT)a@D6~^E zl4cq|Ag1phRUsM*w))5(I?4b|`q&3RCvjw; zoKhZZMM+vP-=RV$*cPCs>r5k^WReR`%UwFjuM zmWh&~T2(t>E-5+x3mY7MtQ1!u=$l<8F1Cc@^n^{6l+NJ>Pa>j~xC_T=r`%zX`>q0U zb5BAyTtwkCU$YR*^*lh7t{McyQ-eQH2_XdQ(!?9H9SAJnqXgWoyOb1z*{QP}+{)gV z@g#aR)8 zHQ*yr4-Sw@26R(n54|Rgww8Mhr5ou(O+*{Y`BH%Up1`$uX$yhf2TVHj}WaCFQoCjLWA;dr^L( zLM;rFu_l5V8J>mX;2L&QjpZgcERpI_SdnrF!k}=@Df9V^Pv*_tf_JPtvH(;Z)T+U7 z?2g3|V&?A&rA%OZCW#|xEJHizGFx$rBWMLGm}{HWF`h&RK<|!AW2JpSKUAR;g7@mq z0CcQ$xn_M)Yi8UZR%N?c$g6&Wws4jPv1r^nme#%VWAqE%oJ z$#vVKFm13>-idK2LM7K)GiKs8g@@Icg{fy^95D`Rn&D7VHCCifOrPBHO^hcTB~oAA z(0RHH9qzqLVR%PA@!K>zP5;16BAp#H#^@HL&R9ouIa{Y8k%4(cm)_Mx0<9-z9kU{j zwEjN$V~g5AsbCmdBdwUI44LoK?y^eEy@z65wRSroX2|y_yA3xyIT<1+g_5IDwYuu2!i0q6>Il1yLCGW|OhrZ6avD zD~`Y1HdWuQFuaj;AVaOm3F&k=@iWNV${;kaSaT&55v;M`w> zAe(~Vk0=}Ip)5VgxbRAD69)?`{s}5qEykgZV(}MR5a&Z%*wY*BTohwlMV!u%l~k=a zx-bfV@UlJHXGJnjfg;&gLiC^mHci7HFK&z3m`} z)tM>4XV7n*0Fq9wy`aZM9s!CQF!PDYa6j zE4(x5B2ARTnk8t(0JBGU(a{CR4(tk-Q{b0b?R+aQ=cPjht?@W~3h4#xO zZa%EurrmbqU;^|eWr5cko??|1Au_OGitKUi|?qH9-aTYk23@T{rB2Rj~q z{HMdSnsyyIWAzP3-#h#A$W3z!x1P6o|C=ZDJoD7dGZ$@s@}_Uc-fj5F-#y!~ZT)SR zEV=g1cfR+}AD?mT-tJRQ>wf2fZ{2>zWrrWScVu&T>W;U3kG*=>_^*pT^j~sz^J%MY z*t=lQkvIPIpQpU?hwaxc8QFen@!hjB%N~tBc;eQ*4^N-{&_1?2G<(;rAI{%)^qOaP?^rn}^w_GV&9mm;e`NHI!{=;! z;q-mqx_U*!qraYU&s|S!efjsVy#C0p)Ngwy?Y{56CuiNVe_s5pzu$E2=MQeY`Nm&- zYeisU$WCUyL<96jx9az>X+u6 zv-0FEUpl%Wf9S&>-Bmc(Xj!@}cJlOv)5q@n;qcv86}R2`_yf-$TJ-*FGxpBw-?#0I zkzIFh`{SYaPEX8fI`GG9?%aCi_MLmDOrA68`3J*4_TRo||JL)rI`;U#fAHM9rH@X% N@W?ek2ZQtZ{u`Q|Pmllr literal 0 HcmV?d00001 diff --git a/database/schema/sqlite-schema.dump b/database/schema/sqlite-schema.dump new file mode 100644 index 00000000..2e5be026 --- /dev/null +++ b/database/schema/sqlite-schema.dump @@ -0,0 +1,50 @@ +CREATE TABLE IF NOT EXISTS "migrations" ("id" integer not null primary key autoincrement, "migration" varchar not null, "batch" integer not null); +CREATE TABLE IF NOT EXISTS "revisions" ("id" integer not null primary key autoincrement, "revisionable_type" varchar not null, "revisionable_id" integer not null, "user_id" integer, "key" varchar not null, "old_value" text, "new_value" text, "created_at" datetime, "updated_at" datetime); +CREATE INDEX "revisions_revisionable_id_revisionable_type_index" on "revisions" ("revisionable_id", "revisionable_type"); +CREATE TABLE IF NOT EXISTS "users" ("id" integer not null primary key autoincrement, "name" varchar not null, "email" varchar not null, "password" varchar not null, "remember_token" varchar, "created_at" datetime, "updated_at" datetime, "two_factor_secret" text, "two_factor_recovery_codes" text, "api_token" varchar); +CREATE UNIQUE INDEX "users_email_unique" on "users" ("email"); +CREATE TABLE IF NOT EXISTS "password_resets" ("email" varchar not null, "token" varchar not null, "created_at" datetime); +CREATE INDEX "password_resets_email_index" on "password_resets" ("email"); +CREATE TABLE IF NOT EXISTS "tags" ("id" integer not null primary key autoincrement, "user_id" integer not null, "name" text not null, "is_private" tinyint(1) not null default '0', "created_at" datetime, "updated_at" datetime, "deleted_at" datetime); +CREATE TABLE IF NOT EXISTS "link_tags" ("link_id" integer not null, "tag_id" integer not null, primary key ("link_id", "tag_id")); +CREATE TABLE IF NOT EXISTS "notes" ("id" integer not null primary key autoincrement, "user_id" integer not null, "link_id" integer not null, "note" text not null, "is_private" tinyint(1) not null default '0', "created_at" datetime, "updated_at" datetime, "deleted_at" datetime); +CREATE TABLE IF NOT EXISTS "settings" ("id" integer not null primary key autoincrement, "user_id" integer, "key" varchar not null, "value" text); +CREATE TABLE IF NOT EXISTS "permissions" ("id" integer not null primary key autoincrement, "name" varchar not null, "guard_name" varchar not null, "created_at" datetime, "updated_at" datetime); +CREATE TABLE IF NOT EXISTS "roles" ("id" integer not null primary key autoincrement, "name" varchar not null, "guard_name" varchar not null, "created_at" datetime, "updated_at" datetime); +CREATE TABLE IF NOT EXISTS "model_has_permissions" ("permission_id" integer not null, "model_type" varchar not null, "model_id" integer not null, foreign key("permission_id") references "permissions"("id") on delete cascade, primary key ("permission_id", "model_id", "model_type")); +CREATE INDEX "model_has_permissions_model_id_model_type_index" on "model_has_permissions" ("model_id", "model_type"); +CREATE TABLE IF NOT EXISTS "model_has_roles" ("role_id" integer not null, "model_type" varchar not null, "model_id" integer not null, foreign key("role_id") references "roles"("id") on delete cascade, primary key ("role_id", "model_id", "model_type")); +CREATE INDEX "model_has_roles_model_id_model_type_index" on "model_has_roles" ("model_id", "model_type"); +CREATE TABLE IF NOT EXISTS "role_has_permissions" ("permission_id" integer not null, "role_id" integer not null, foreign key("permission_id") references "permissions"("id") on delete cascade, foreign key("role_id") references "roles"("id") on delete cascade, primary key ("permission_id", "role_id")); +CREATE TABLE IF NOT EXISTS "jobs" ("id" integer not null primary key autoincrement, "queue" varchar not null, "payload" text not null, "attempts" integer not null, "reserved_at" integer, "available_at" integer not null, "created_at" integer not null); +CREATE INDEX "jobs_queue_index" on "jobs" ("queue"); +CREATE TABLE IF NOT EXISTS "failed_jobs" ("id" integer not null primary key autoincrement, "connection" text not null, "queue" text not null, "payload" text not null, "exception" text not null, "failed_at" datetime default CURRENT_TIMESTAMP not null); +CREATE TABLE IF NOT EXISTS "lists" (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, user_id INTEGER NOT NULL, name CLOB NOT NULL COLLATE BINARY, description CLOB DEFAULT NULL COLLATE BINARY, is_private BOOLEAN DEFAULT 0 NOT NULL, created_at DATETIME DEFAULT NULL, updated_at DATETIME DEFAULT NULL, deleted_at DATETIME DEFAULT NULL); +CREATE TABLE IF NOT EXISTS "link_lists" ("link_id" integer not null, "list_id" integer not null, primary key ("link_id", "list_id")); +CREATE TABLE IF NOT EXISTS "personal_access_tokens" ("id" integer not null primary key autoincrement, "tokenable_type" varchar not null, "tokenable_id" integer not null, "name" varchar not null, "token" varchar not null, "abilities" text, "last_used_at" datetime, "created_at" datetime, "updated_at" datetime); +CREATE INDEX "personal_access_tokens_tokenable_type_tokenable_id_index" on "personal_access_tokens" ("tokenable_type", "tokenable_id"); +CREATE UNIQUE INDEX "personal_access_tokens_token_unique" on "personal_access_tokens" ("token"); +CREATE TABLE links (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, user_id INTEGER NOT NULL, url CLOB NOT NULL COLLATE BINARY, title CLOB NOT NULL COLLATE BINARY, description CLOB DEFAULT NULL COLLATE BINARY, is_private BOOLEAN DEFAULT 0 NOT NULL, created_at DATETIME DEFAULT NULL, updated_at DATETIME DEFAULT NULL, deleted_at DATETIME DEFAULT NULL, icon VARCHAR(255) DEFAULT NULL COLLATE BINARY, status INTEGER DEFAULT 1 NOT NULL, check_disabled BOOLEAN DEFAULT 0 NOT NULL, thumbnail CLOB DEFAULT NULL COLLATE BINARY); +INSERT INTO migrations VALUES(1,'2013_04_09_062329_create_revisions_table',1); +INSERT INTO migrations VALUES(2,'2014_10_12_000000_create_users_table',1); +INSERT INTO migrations VALUES(3,'2014_10_12_100000_create_password_resets_table',1); +INSERT INTO migrations VALUES(4,'2014_10_12_200000_add_two_factor_columns_to_users_table',1); +INSERT INTO migrations VALUES(5,'2018_08_22_212248_create_taxonomy_tables',1); +INSERT INTO migrations VALUES(6,'2018_08_22_212358_create_link_tables',1); +INSERT INTO migrations VALUES(7,'2018_08_22_213055_create_note_tables',1); +INSERT INTO migrations VALUES(8,'2018_09_27_214216_create_settings_table',1); +INSERT INTO migrations VALUES(9,'2019_01_30_153129_update_link_table_for_icon',1); +INSERT INTO migrations VALUES(10,'2019_02_07_223113_add_user_api_token',1); +INSERT INTO migrations VALUES(11,'2019_02_10_221213_create_permission_tables',1); +INSERT INTO migrations VALUES(12,'2019_02_11_143743_add_link_status',1); +INSERT INTO migrations VALUES(13,'2019_07_16_173805_create_jobs_table',1); +INSERT INTO migrations VALUES(14,'2019_07_16_175247_create_failed_jobs_table',1); +INSERT INTO migrations VALUES(15,'2019_10_29_135735_move_category_to_list_table',1); +INSERT INTO migrations VALUES(16,'2019_12_14_000001_create_personal_access_tokens_table',1); +INSERT INTO migrations VALUES(17,'2020_02_28_153446_add_check_disabled_to_links_table',1); +INSERT INTO migrations VALUES(18,'2020_05_04_230306_convert_link_privacy_setting',1); +INSERT INTO migrations VALUES(19,'2020_05_06_153715_enable_internet_archive_backup_setting',1); +INSERT INTO migrations VALUES(20,'2020_10_21_104548_migrate_link_icons',1); +INSERT INTO migrations VALUES(21,'2021_04_15_165138_add_thumbnail_column_to_links_table',1); +INSERT INTO migrations VALUES(22,'2021_05_10_123913_change_link_thumbnail_field',1); +INSERT INTO migrations VALUES(23,'2022_03_24_222856_add_completed_setup_setting',1); diff --git a/phpunit.xml b/phpunit.xml index a57079d0..1bf9eae1 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -1,20 +1,15 @@ + xsi:noNamespaceSchemaLocation="./vendor/phpunit/phpunit/phpunit.xsd" + bootstrap="tests/bootstrap.php" + colors="true"> + ./app + ./tests/Commands @@ -35,14 +30,17 @@ ./tests/Models + + - + + diff --git a/resources/docker/dockerfiles/development.Dockerfile b/resources/docker/dockerfiles/development.Dockerfile index 5df081ef..d94e5f4a 100644 --- a/resources/docker/dockerfiles/development.Dockerfile +++ b/resources/docker/dockerfiles/development.Dockerfile @@ -8,6 +8,8 @@ RUN apt-get update && apt-get install -y \ zip \ git \ mariadb-client \ + postgresql-client \ + sqlite3 \ autoconf \ build-essential \ libpq-dev \ From 11d6e96701dadd4d958a93050130468adbe57d72 Mon Sep 17 00:00:00 2001 From: Kovah Date: Mon, 2 May 2022 20:28:40 +0200 Subject: [PATCH 06/86] Refactor http request setup into single function --- app/Console/Commands/CheckLinksCommand.php | 6 +----- app/Helper/UpdateHelper.php | 6 +----- app/Helper/WaybackMachine.php | 7 +------ app/Helper/functions.php | 21 +++++++++++++++++++-- app/Http/Controllers/FetchController.php | 6 +----- 5 files changed, 23 insertions(+), 23 deletions(-) diff --git a/app/Console/Commands/CheckLinksCommand.php b/app/Console/Commands/CheckLinksCommand.php index 3dd99d64..dfd172ee 100644 --- a/app/Console/Commands/CheckLinksCommand.php +++ b/app/Console/Commands/CheckLinksCommand.php @@ -136,11 +136,7 @@ protected function checkLink(Link $link): void } try { - $request = Http::timeout(20); - if (config('html-meta.user_agents', false)) { - $agents = config('html-meta.user_agents'); - $request->withHeaders(['User-Agent' => $agents[array_rand($agents)]]); - } + $request = setupHttpRequest(20); $response = $request->head($link->url); $statusCode = $response->status(); } catch (Exception $e) { diff --git a/app/Helper/UpdateHelper.php b/app/Helper/UpdateHelper.php index 36d7a071..0ecb41f2 100644 --- a/app/Helper/UpdateHelper.php +++ b/app/Helper/UpdateHelper.php @@ -66,11 +66,7 @@ public static function checkForUpdates(bool $cacheResult = false): bool|string */ protected static function getCurrentVersionFromAPI(): ?string { - $request = Http::timeout(5); - if (config('html-meta.user_agents', false)) { - $agents = config('html-meta.user_agents'); - $request->withHeaders(['User-Agent' => $agents[array_rand($agents)]]); - } + $request = setupHttpRequest(5); $response = $request->get(self::RELEASE_API_URL); return $response->successful() ? $response->body() : null; diff --git a/app/Helper/WaybackMachine.php b/app/Helper/WaybackMachine.php index 936db02d..f15ff243 100644 --- a/app/Helper/WaybackMachine.php +++ b/app/Helper/WaybackMachine.php @@ -2,7 +2,6 @@ namespace App\Helper; -use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Log; class WaybackMachine @@ -24,11 +23,7 @@ public static function saveToArchive(string $url): bool $archiveUrl = self::$baseUrl . '/save/' . $url; - $request = Http::timeout(10); - if (config('html-meta.user_agents', false)) { - $agents = config('html-meta.user_agents'); - $request->withHeaders(['User-Agent' => $agents[array_rand($agents)]]); - } + $request = setupHttpRequest(); $response = $request->head($archiveUrl); try { diff --git a/app/Helper/functions.php b/app/Helper/functions.php index a22c0f7f..38046c3b 100644 --- a/app/Helper/functions.php +++ b/app/Helper/functions.php @@ -4,12 +4,12 @@ use App\Helper\WaybackMachine; use App\Models\Link; use App\Models\Setting; +use Illuminate\Http\Client\PendingRequest; use Illuminate\Support\Carbon; use Illuminate\Support\Collection; use Illuminate\Support\Facades\Cache; +use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Log; -use Psr\Container\ContainerExceptionInterface; -use Psr\Container\NotFoundExceptionInterface; /** * Check if the setup was completed. @@ -209,3 +209,20 @@ function escapeSearchQuery(string $query): string $query ); } + +/** + * Set up an HTTP request with a random user agent + * + * @param int $timeout + * @return PendingRequest + */ +function setupHttpRequest(int $timeout = 10): PendingRequest +{ + $request = Http::timeout($timeout); + if (config('html-meta.user_agents', false)) { + $agents = config('html-meta.user_agents'); + $request->withHeaders(['User-Agent' => $agents[array_rand($agents)]]); + } + + return $request; +} diff --git a/app/Http/Controllers/FetchController.php b/app/Http/Controllers/FetchController.php index c6f3dfb5..76644d60 100644 --- a/app/Http/Controllers/FetchController.php +++ b/app/Http/Controllers/FetchController.php @@ -126,11 +126,7 @@ public function htmlForUrl(Request $request): Response ]); $url = $request->input('url'); - $newRequest = Http::timeout(3); - if (config('html-meta.user_agents', false)) { - $agents = config('html-meta.user_agents'); - $newRequest->withHeaders(['User-Agent' => $agents[array_rand($agents)]]); - } + $newRequest = setupHttpRequest(3); $response = $newRequest->get($url); if ($response->successful()) { From ecc4225f1a04f1602f3a9b889526de01e3e38930 Mon Sep 17 00:00:00 2001 From: Kovah Date: Thu, 9 Jun 2022 10:04:40 +0200 Subject: [PATCH 07/86] Move from venturecraft/revisionable to owen-it/laravel-auditing (#467) --- .../Controllers/Models/LinkController.php | 2 +- app/Models/Link.php | 26 +-- app/Repositories/LinkRepository.php | 66 +++---- app/View/Components/Links/HistoryEntry.php | 86 ++++----- composer.json | 4 +- composer.lock | 154 +++++++++------- config/audit.php | 169 ++++++++++++++++++ config/linkace.php | 2 +- config/queue.php | 2 +- config/revisionable.php | 10 -- .../2022_05_04_223548_create_audits_table.php | 43 +++++ phpunit.xml | 1 + .../components/links/history-entry.blade.php | 4 +- resources/views/models/links/show.blade.php | 18 +- tests/Components/HistoryEntryTest.php | 33 ++-- .../Controller/Models/LinkControllerTest.php | 8 +- 16 files changed, 422 insertions(+), 206 deletions(-) create mode 100644 config/audit.php delete mode 100644 config/revisionable.php create mode 100644 database/migrations/2022_05_04_223548_create_audits_table.php diff --git a/app/Http/Controllers/Models/LinkController.php b/app/Http/Controllers/Models/LinkController.php index fd939779..bd07453a 100644 --- a/app/Http/Controllers/Models/LinkController.php +++ b/app/Http/Controllers/Models/LinkController.php @@ -106,7 +106,7 @@ public function show(Link $link): View { return view('models.links.show', [ 'link' => $link, - 'history' => $link->revisionHistory()->latest()->get(), + 'history' => $link->audits()->latest()->get(), ]); } diff --git a/app/Models/Link.php b/app/Models/Link.php index b5dea99c..21c70044 100644 --- a/app/Models/Link.php +++ b/app/Models/Link.php @@ -3,7 +3,6 @@ namespace App\Models; use App\Jobs\SaveLinkToWaybackmachine; -use Illuminate\Support\Carbon; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Collection; use Illuminate\Database\Eloquent\Factories\HasFactory; @@ -11,11 +10,12 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsToMany; use Illuminate\Database\Eloquent\Relations\HasMany; -use Illuminate\Database\Eloquent\Relations\MorphMany; use Illuminate\Database\Eloquent\SoftDeletes; +use Illuminate\Support\Carbon; use Illuminate\Support\Str; +use OwenIt\Auditing\Auditable as AuditableTrait; +use OwenIt\Auditing\Contracts\Auditable; use Venturecraft\Revisionable\Revision; -use Venturecraft\Revisionable\RevisionableTrait; /** * Class Link @@ -41,13 +41,12 @@ * @method static Builder|Link byUser($user_id) * @method static Builder|Link privateOnly() * @method static Builder|Link publicOnly() - * @method static MorphMany revisionHistory() */ -class Link extends Model +class Link extends Model implements Auditable { - use SoftDeletes; - use RevisionableTrait; + use AuditableTrait; use HasFactory; + use SoftDeletes; public $fillable = [ 'user_id', @@ -77,13 +76,14 @@ class Link extends Model public const DISPLAY_LIST_SIMPLE = 2; public const DISPLAY_LIST_DETAILED = 0; - // Revisions settings - protected bool $revisionCleanup = true; - protected int $historyLimit = 50; - protected $dontKeepRevisionOf = ['icon']; + // Audit settings + protected array $auditExclude = [ + 'icon', + ]; - public const REV_TAGS_NAME = 'revtags'; - public const REV_LISTS_NAME = 'revlists'; + public const AUDIT_RELATION_EVENT = 'relatedModels'; + public const AUDIT_TAGS_NAME = 'revtags'; + public const AUDIT_LISTS_NAME = 'revlists'; /* diff --git a/app/Repositories/LinkRepository.php b/app/Repositories/LinkRepository.php index b3af349f..8b4c2557 100644 --- a/app/Repositories/LinkRepository.php +++ b/app/Repositories/LinkRepository.php @@ -7,12 +7,11 @@ use App\Models\Link; use App\Models\LinkList; use App\Models\Tag; -use DateTime; use Exception; use Illuminate\Support\Collection; -use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Event; use Illuminate\Support\Facades\Log; -use Venturecraft\Revisionable\Revisionable; +use OwenIt\Auditing\Events\AuditCustom; class LinkRepository { @@ -96,8 +95,8 @@ protected static function processLinkTaxonomies(Link $link, array $data): void if ($link->tags()->count() > 0) { self::createRelationshipRevision( $link, - Link::REV_TAGS_NAME, - $link->tags->pluck('id')->join(','), + Link::AUDIT_TAGS_NAME, + $link->tags->pluck('id')->toArray(), null ); } @@ -112,8 +111,8 @@ protected static function processLinkTaxonomies(Link $link, array $data): void if ($link->lists()->count() > 0) { self::createRelationshipRevision( $link, - Link::REV_LISTS_NAME, - $link->lists->pluck('id')->join(','), + Link::AUDIT_LISTS_NAME, + $link->lists->pluck('id')->toArray(), null ); } @@ -144,12 +143,12 @@ protected static function updateTagsForLink(Link $link, array|string $tags): voi $link->tags()->sync($newTags); - if ($oldTags->isEmpty() || $oldTags->diff($newTags)->isNotEmpty()) { + if ($oldTags->isEmpty() || $oldTags->diff($newTags)->isNotEmpty() || $newTags->diff($oldTags)->isNotEmpty()) { self::createRelationshipRevision( $link, - Link::REV_TAGS_NAME, - $oldTags->join(','), - $newTags->join(',') + Link::AUDIT_TAGS_NAME, + $oldTags->toArray(), + $newTags->toArray() ); } } @@ -172,12 +171,13 @@ protected static function updateListsForLink(Link $link, array|string $lists): v $link->lists()->sync($newLists); - if ($oldLists->isEmpty() || $oldLists->diff($newLists)->isNotEmpty()) { + if ($oldLists->isEmpty() + || $oldLists->diff($newLists)->isNotEmpty() || $newLists->diff($oldLists)->isNotEmpty()) { self::createRelationshipRevision( $link, - Link::REV_LISTS_NAME, - $oldLists->join(','), - $newLists->join(',') + Link::AUDIT_LISTS_NAME, + $oldLists->toArray(), + $newLists->toArray() ); } } @@ -221,26 +221,26 @@ protected static function processTaxonomy(string $model, array $entries): Collec * have changed. Recorded are the IDs instead of names to make sure changes * of the corresponding models are taken into account. * - * @param Link $link - * @param string $key - * @param mixed $oldData - * @param mixed $newData + * @param Link $link + * @param string $key + * @param array|null $oldData + * @param array|null $newData */ - protected static function createRelationshipRevision(Link $link, string $key, mixed $oldData, mixed $newData): void - { - $revision = [ - 'revisionable_type' => $link->getMorphClass(), - 'revisionable_id' => $link->getKey(), - 'key' => $key, - 'old_value' => $oldData, - 'new_value' => $newData, - 'user_id' => $link->getSystemUserId(), - 'created_at' => new DateTime(), - 'updated_at' => new DateTime(), + protected static function createRelationshipRevision( + Link $link, + string $key, + ?array $oldData, + ?array $newData + ): void { + $link->auditEvent = Link::AUDIT_RELATION_EVENT; + $link->isCustomEvent = true; + $link->auditCustomOld = [ + $key => $oldData, + ]; + $link->auditCustomNew = [ + $key => $newData, ]; - $revisionable = Revisionable::newModel(); - - DB::table($revisionable->getTable())->insert($revision); + Event::dispatch(AuditCustom::class, [$link]); } } diff --git a/app/View/Components/Links/HistoryEntry.php b/app/View/Components/Links/HistoryEntry.php index 171bd7e9..6fa84302 100644 --- a/app/View/Components/Links/HistoryEntry.php +++ b/app/View/Components/Links/HistoryEntry.php @@ -5,19 +5,16 @@ use App\Models\Link; use App\Models\LinkList; use App\Models\Tag; -use Illuminate\Contracts\Foundation\Application; -use Illuminate\Contracts\View\Factory; use Illuminate\View\Component; -use Illuminate\View\View; -use Venturecraft\Revisionable\Revision; +use OwenIt\Auditing\Models\Audit; /** * Class HistoryEntry * * This view component renders a changeset from a history entry as complex * logic is needed to properly display all different cases. - * First, if the deleted_at field is detected, the component will output - * either a "was deleted" or "was restored" changeset. + * First it is checked if the entity was deleted or restored, which will shorten + * the processing. Otherwise, the modified fields are processed. * * For all other fields, the proper change is generated: * - If no old value is present, a field value was added. @@ -35,20 +32,34 @@ */ class HistoryEntry extends Component { - public function __construct(private Revision $entry) + public function __construct(private Audit $entry, private array $changes = []) { } public function render() { - if ($this->entry->fieldName() === 'deleted_at') { - return $this->processDeletedField(); + $timestamp = formatDateTime($this->entry->created_at); + + if ($this->entry->event === 'deleted') { + $this->changes[] = trans('link.history_deleted'); + } elseif ($this->entry->event === 'restored') { + $this->changes[] = trans('link.history_restored'); + } else { + foreach ($this->entry->getModified() as $field => $change) { + $this->processChange($field, $change); + } } - $timestamp = formatDateTime($this->entry->created_at); - $fieldName = trans('link.' . $this->entry->fieldName()); + return view('components.links.history-entry', [ + 'timestamp' => $timestamp, + 'changes' => $this->changes, + ]); + } - [$oldValue, $newValue] = $this->processValues(); + protected function processChange(string $field, array $changeData): void + { + $fieldName = trans('link.' . $field); + [$oldValue, $newValue] = $this->processValues($field, $changeData); if ($oldValue === null) { $change = trans('link.history_added', [ @@ -68,40 +79,39 @@ public function render() ]); } - return view('components.links.history-entry', [ - 'timestamp' => $timestamp, - 'change' => $change, - ]); + $this->changes[] = $change; } /** * Apply specialized methods for different fields to handle particular * formatting needs of these fields. * + * @param string $field + * @param array $changeData * @return array */ - protected function processValues(): array + protected function processValues(string $field, array $changeData): array { - $oldValue = $this->entry->oldValue(); - $newValue = $this->entry->newValue(); + $oldValue = $changeData['old'] ?? null; + $newValue = $changeData['new'] ?? null; - if ($this->entry->fieldName() === Link::REV_TAGS_NAME) { + if ($field === Link::AUDIT_TAGS_NAME) { return $this->processTagsField($oldValue, $newValue); } - if ($this->entry->fieldName() === Link::REV_LISTS_NAME) { + if ($field === Link::AUDIT_LISTS_NAME) { return $this->processListsField($oldValue, $newValue); } - if ($this->entry->fieldName() === 'is_private') { + if ($field === 'is_private') { return $this->processPrivateField($oldValue, $newValue); } - if ($this->entry->fieldName() === 'status') { + if ($field === 'status') { return $this->processStatusField($oldValue, $newValue); } - return [$this->entry->oldValue(), $this->entry->newValue()]; + return [$oldValue, $newValue]; } /** @@ -115,13 +125,11 @@ protected function processValues(): array protected function processTagsField($oldValue, $newValue): array { $oldTags = $oldValue - ? Tag::whereIn('id', explode(',', $oldValue)) - ->pluck('name')->join(', ') + ? Tag::whereIn('id', $oldValue)->pluck('name')->join(', ') : null; $newTags = $newValue - ? Tag::whereIn('id', explode(',', $newValue)) - ->pluck('name')->join(', ') + ? Tag::whereIn('id', $newValue)->pluck('name')->join(', ') : null; return [$oldTags, $newTags]; @@ -138,13 +146,11 @@ protected function processTagsField($oldValue, $newValue): array protected function processListsField($oldValue, $newValue): array { $oldTags = $oldValue - ? LinkList::whereIn('id', explode(',', $oldValue)) - ->pluck('name')->join(', ') + ? LinkList::whereIn('id', $oldValue)->pluck('name')->join(', ') : null; $newTags = $newValue ? - LinkList::whereIn('id', explode(',', $newValue)) - ->pluck('name')->join(', ') + LinkList::whereIn('id', $newValue)->pluck('name')->join(', ') : null; return [$oldTags, $newTags]; @@ -181,20 +187,4 @@ protected function processStatusField($oldValue, $newValue): array return [$oldValue, $newValue]; } - - /** - * The deleted field displays its own string based on whether the link - * was deleted or restored. - * - * @return Application|Factory|\Illuminate\Contracts\View\View - */ - protected function processDeletedField() - { - $change = $this->entry->oldValue() === null ? trans('link.history_deleted') : trans('link.history_restored'); - - return view('components.links.history-entry', [ - 'timestamp' => formatDateTime($this->entry->created_at), - 'change' => $change, - ]); - } } diff --git a/composer.json b/composer.json index 497d01ca..7dd69196 100644 --- a/composer.json +++ b/composer.json @@ -16,14 +16,14 @@ "laravel/sanctum": "^2.15", "league/csv": "^9.6", "league/flysystem-aws-s3-v3": "^3.0.13", + "owen-it/laravel-auditing": "^13.0", "predis/predis": "^1.1", "rap2hpoutre/laravel-log-viewer": "^2.2", "sentry/sentry-laravel": "^2.3", "shaarli/netscape-bookmark-parser": "^v3.2", "spatie/laravel-backup": "^8.1.2", "symfony/http-client": "^6.0", - "symfony/mailgun-mailer": "^6.0", - "venturecraft/revisionable": "^1.34" + "symfony/mailgun-mailer": "^6.0" }, "require-dev": { "barryvdh/laravel-debugbar": "^3.2", diff --git a/composer.lock b/composer.lock index ac18818d..c5c37246 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "7d81ee0ac75e7b6e67c157836ce9b2ab", + "content-hash": "0ab96c681f49e103b7c5e85954d29678", "packages": [ { "name": "aws/aws-crt-php", @@ -3250,6 +3250,94 @@ ], "time": "2022-02-02T18:37:57+00:00" }, + { + "name": "owen-it/laravel-auditing", + "version": "v13.0.3", + "source": { + "type": "git", + "url": "https://github.com/owen-it/laravel-auditing.git", + "reference": "332d136a7d67a2c06ee85aa17efeafb3ba25c972" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/owen-it/laravel-auditing/zipball/332d136a7d67a2c06ee85aa17efeafb3ba25c972", + "reference": "332d136a7d67a2c06ee85aa17efeafb3ba25c972", + "shasum": "" + }, + "require": { + "ext-json": "*", + "illuminate/console": "^7.0|^8.0|^9.0", + "illuminate/database": "^7.0|^8.0|^9.0", + "illuminate/filesystem": "^7.0|^8.0|^9.0", + "php": "^7.3|^8.0" + }, + "require-dev": { + "laravel/legacy-factories": "*", + "mockery/mockery": "^1.0", + "orchestra/testbench": "^5.0|^6.0|^7.0", + "phpunit/phpunit": "^9.0" + }, + "suggest": { + "laravelista/lumen-vendor-publish": "Needed to publish the package configuration in Lumen" + }, + "type": "package", + "extra": { + "branch-alias": { + "dev-master": "v13-dev" + }, + "laravel": { + "providers": [ + "OwenIt\\Auditing\\AuditingServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "OwenIt\\Auditing\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Antério Vieira", + "email": "anteriovieira@gmail.com" + }, + { + "name": "Raphael França", + "email": "raphaelfrancabsb@gmail.com" + }, + { + "name": "Morten D. Hansen", + "email": "morten@visia.dk" + } + ], + "description": "Audit changes of your Eloquent models in Laravel/Lumen", + "homepage": "http://laravel-auditing.com", + "keywords": [ + "Accountability", + "Audit", + "auditing", + "changes", + "eloquent", + "history", + "laravel", + "log", + "logging", + "lumen", + "observer", + "record", + "revision", + "tracking" + ], + "support": { + "issues": "https://github.com/owen-it/laravel-auditing/issues", + "source": "https://github.com/owen-it/laravel-auditing" + }, + "time": "2022-04-20T14:28:57+00:00" + }, { "name": "paragonie/constant_time_encoding", "version": "v2.5.0", @@ -7859,70 +7947,6 @@ }, "time": "2021-12-08T09:12:39+00:00" }, - { - "name": "venturecraft/revisionable", - "version": "1.39.0", - "source": { - "type": "git", - "url": "https://github.com/VentureCraft/revisionable.git", - "reference": "24ef304dfe7fe64362cc815faab0fc80030d0c59" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/VentureCraft/revisionable/zipball/24ef304dfe7fe64362cc815faab0fc80030d0c59", - "reference": "24ef304dfe7fe64362cc815faab0fc80030d0c59", - "shasum": "" - }, - "require": { - "illuminate/support": "~4.0|~5.0|~5.1|^6.0|^7.0|^8.0|^9.0", - "laravel/framework": "~5.4|^6.0|^7.0|^8.0|^9.0", - "php": ">=5.4.0" - }, - "require-dev": { - "orchestra/testbench": "~3.0" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Venturecraft\\Revisionable\\RevisionableServiceProvider" - ] - } - }, - "autoload": { - "psr-0": { - "Venturecraft\\Revisionable": "src/" - }, - "classmap": [ - "src/migrations" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Chris Duell", - "email": "me@chrisduell.com" - } - ], - "description": "Keep a revision history for your models without thinking, created as a package for use with Laravel", - "homepage": "http://github.com/venturecraft/revisionable", - "keywords": [ - "Audit", - "ardent", - "history", - "laravel", - "model", - "revision" - ], - "support": { - "issues": "https://github.com/VentureCraft/revisionable/issues", - "source": "https://github.com/VentureCraft/revisionable" - }, - "time": "2022-01-20T05:56:12+00:00" - }, { "name": "vlucas/phpdotenv", "version": "v5.4.1", diff --git a/config/audit.php b/config/audit.php new file mode 100644 index 00000000..6a30a779 --- /dev/null +++ b/config/audit.php @@ -0,0 +1,169 @@ + env('AUDITING_ENABLED', true), + + /* + |-------------------------------------------------------------------------- + | Audit Implementation + |-------------------------------------------------------------------------- + | + | Define which Audit model implementation should be used. + | + */ + + 'implementation' => OwenIt\Auditing\Models\Audit::class, + + /* + |-------------------------------------------------------------------------- + | User Morph prefix & Guards + |-------------------------------------------------------------------------- + | + | Define the morph prefix and authentication guards for the User resolver. + | + */ + + 'user' => [ + 'morph_prefix' => 'user', + 'guards' => [ + 'web', + 'api' + ], + 'resolver' => OwenIt\Auditing\Resolvers\UserResolver::class + ], + + /* + |-------------------------------------------------------------------------- + | Audit Resolvers + |-------------------------------------------------------------------------- + | + | Define the User, IP Address, User Agent and URL resolver implementations. + | + */ + 'resolvers' => [ + //'ip_address' => OwenIt\Auditing\Resolvers\IpAddressResolver::class, + //'user_agent' => OwenIt\Auditing\Resolvers\UserAgentResolver::class, + //'url' => OwenIt\Auditing\Resolvers\UrlResolver::class, + ], + + /* + |-------------------------------------------------------------------------- + | Audit Events + |-------------------------------------------------------------------------- + | + | The Eloquent events that trigger an Audit. + | + */ + + 'events' => [ + //'created', + 'updated', + 'deleted', + 'restored' + ], + + /* + |-------------------------------------------------------------------------- + | Strict Mode + |-------------------------------------------------------------------------- + | + | Enable the strict mode when auditing? + | + */ + + 'strict' => false, + + /* + |-------------------------------------------------------------------------- + | Global exclude + |-------------------------------------------------------------------------- + | + | Have something you always want to exclude by default? - add it here. + | Note that this is overwritten (not merged) with local exclude + | + */ + + 'exclude' => [], + + /* + |-------------------------------------------------------------------------- + | Empty Values + |-------------------------------------------------------------------------- + | + | Should Audit records be stored when the recorded old_values & new_values + | are both empty? + | + | Some events may be empty on purpose. Use allowed_empty_values to exclude + | those from the empty values check. For example when auditing + | model retrieved events which will never have new and old values. + | + | + */ + + 'empty_values' => false, + 'allowed_empty_values' => [ + 'retrieved' + ], + + /* + |-------------------------------------------------------------------------- + | Audit Timestamps + |-------------------------------------------------------------------------- + | + | Should the created_at, updated_at and deleted_at timestamps be audited? + | + */ + + 'timestamps' => false, + + /* + |-------------------------------------------------------------------------- + | Audit Threshold + |-------------------------------------------------------------------------- + | + | Specify a threshold for the amount of Audit records a model can have. + | Zero means no limit. + | + */ + + 'threshold' => 0, + + /* + |-------------------------------------------------------------------------- + | Audit Driver + |-------------------------------------------------------------------------- + | + | The default audit driver used to keep track of changes. + | + */ + + 'driver' => 'database', + + /* + |-------------------------------------------------------------------------- + | Audit Driver Configurations + |-------------------------------------------------------------------------- + | + | Available audit drivers and respective configurations. + | + */ + + 'drivers' => [ + 'database' => [ + 'table' => 'audits', + 'connection' => null, + ], + ], + + /* + |-------------------------------------------------------------------------- + | Audit Console + |-------------------------------------------------------------------------- + | + | Whether console events should be audited (eg. php artisan db:seed). + | + */ + + 'console' => env('AUDIT_CONSOLE_EVENTS', false), +]; diff --git a/config/linkace.php b/config/linkace.php index d87af122..ff3160ca 100644 --- a/config/linkace.php +++ b/config/linkace.php @@ -4,7 +4,7 @@ 'pagination' => 25, 'date_format' => 'Y-m-d', 'time_format' => 'H:i', - 'cache_duration' => 60, // minutes + 'cache_duration' => 3600, // 60 minutes ], 'listitem_count_values' => [ diff --git a/config/queue.php b/config/queue.php index 25ea5a81..6112837d 100644 --- a/config/queue.php +++ b/config/queue.php @@ -13,7 +13,7 @@ | */ - 'default' => env('QUEUE_CONNECTION', 'sync'), + 'default' => env('QUEUE_CONNECTION', 'database'), /* |-------------------------------------------------------------------------- diff --git a/config/revisionable.php b/config/revisionable.php deleted file mode 100644 index 4f6666b8..00000000 --- a/config/revisionable.php +++ /dev/null @@ -1,10 +0,0 @@ - Venturecraft\Revisionable\Revision::class, -]; diff --git a/database/migrations/2022_05_04_223548_create_audits_table.php b/database/migrations/2022_05_04_223548_create_audits_table.php new file mode 100644 index 00000000..23ca0c36 --- /dev/null +++ b/database/migrations/2022_05_04_223548_create_audits_table.php @@ -0,0 +1,43 @@ +bigIncrements('id'); + $table->string('user_type')->nullable(); + $table->unsignedBigInteger('user_id')->nullable(); + $table->string('event'); + $table->morphs('auditable'); + $table->text('old_values')->nullable(); + $table->text('new_values')->nullable(); + $table->text('url')->nullable(); + $table->ipAddress('ip_address')->nullable(); + $table->string('user_agent', 1023)->nullable(); + $table->string('tags')->nullable(); + $table->timestamps(); + + $table->index(['user_id', 'user_type']); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::drop('audits'); + } +} diff --git a/phpunit.xml b/phpunit.xml index 1bf9eae1..2c472b51 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -46,6 +46,7 @@ + diff --git a/resources/views/components/links/history-entry.blade.php b/resources/views/components/links/history-entry.blade.php index e33bff44..23bd3e82 100644 --- a/resources/views/components/links/history-entry.blade.php +++ b/resources/views/components/links/history-entry.blade.php @@ -1 +1,3 @@ -
{{ $timestamp }}: {!! $change !!}
+@foreach($changes as $change) +
{{ $timestamp }}: {!! $change !!}
+@endforeach diff --git a/resources/views/models/links/show.blade.php b/resources/views/models/links/show.blade.php index c2ee1f21..78deac0f 100644 --- a/resources/views/models/links/show.blade.php +++ b/resources/views/models/links/show.blade.php @@ -60,11 +60,11 @@ class="rounded d-block mt-lg-1 me-lg-2 align-self-center link-thumbnail link-thu @lang('linkace.edit')
- +