From e174f2d538429b1c43368307277a59e73bef092d Mon Sep 17 00:00:00 2001 From: mszulik <69617961+mszulik@users.noreply.github.com> Date: Wed, 20 Mar 2024 16:55:54 +0100 Subject: [PATCH 01/15] fix crashes when transformations are not passed in expected format (#39) --- .github/workflows/tests.yml | 2 +- app/Enums/Transformation.php | 16 +- .../InvalidTransformationFormatException.php | 18 ++ app/Http/Controllers/V1/ImageController.php | 3 +- tests/Unit/ImageTest.php | 218 +++++++++++++++++- 5 files changed, 253 insertions(+), 4 deletions(-) create mode 100644 app/Exceptions/InvalidTransformationFormatException.php diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 7ba9a44d..8f54a04b 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -3,7 +3,7 @@ name: Tests on: push: branches: - - master + - main - release/* pull_request: workflow_dispatch: diff --git a/app/Enums/Transformation.php b/app/Enums/Transformation.php index 5d396a08..c3ca2273 100644 --- a/app/Enums/Transformation.php +++ b/app/Enums/Transformation.php @@ -3,7 +3,9 @@ namespace App\Enums; use App\Exceptions\InvalidTransformationValueException; +use App\Exceptions\InvalidTransformationFormatException; use App\Exceptions\TransformationNotFoundException; +use ErrorException; use ValueError; enum Transformation: string @@ -16,6 +18,7 @@ enum Transformation: string /** * @param string|int $value * @return string|int + * @throws InvalidTransformationValueException */ public function validate(string|int $value): string|int { @@ -36,6 +39,9 @@ public function validate(string|int $value): string|int /** * @param string $transformations * @return array|null + * @throws InvalidTransformationValueException + * @throws InvalidTransformationFormatException + * @throws TransformationNotFoundException */ public static function arrayFromString(string $transformations): array|null { @@ -47,7 +53,15 @@ public static function arrayFromString(string $transformations): array|null $parameters = explode('+', $transformations); foreach ($parameters as $parameter) { - [$key, $value] = explode('-', $parameter, 2); + if (!$parameter) { + throw new InvalidTransformationFormatException(); + } + + try { + [$key, $value] = explode('-', $parameter, 2); + } catch (ErrorException $exception) { + throw new InvalidTransformationFormatException(); + } try { $transformationsArray[$key] = Transformation::from($key)->validate($value); diff --git a/app/Exceptions/InvalidTransformationFormatException.php b/app/Exceptions/InvalidTransformationFormatException.php new file mode 100644 index 00000000..5f3c5600 --- /dev/null +++ b/app/Exceptions/InvalidTransformationFormatException.php @@ -0,0 +1,18 @@ +getMessage()); } diff --git a/tests/Unit/ImageTest.php b/tests/Unit/ImageTest.php index 5b1eea4e..6e62b9db 100644 --- a/tests/Unit/ImageTest.php +++ b/tests/Unit/ImageTest.php @@ -2,8 +2,12 @@ namespace Tests\Unit; -use FilePathHelper; +use App\Enums\Transformation; +use App\Exceptions\InvalidTransformationFormatException; +use App\Exceptions\InvalidTransformationValueException; +use App\Exceptions\TransformationNotFoundException; use App\Models\Media; +use FilePathHelper; use Illuminate\Http\UploadedFile; use Storage; @@ -75,4 +79,216 @@ public function ensureUnprocessedFilesAreNotAvailable(Media $media) $getDerivativeResponse->assertNotFound(); } + + /** + * Provides Transformation string scenarios. contextually used in web requests for retrieving derivatives. + * + * @return array + */ + public static function provideTransformationStrings(): array + { + return [ + 'valid_Quality' => [ + 'input' => 'q-50', + 'expectedException' => null, + 'expectedArray' => [ + 'q' => 50, + ] + ], + + 'invalid_QualityNonInteger' => [ + 'input' => 'q-aa', + 'expectedException' => InvalidTransformationValueException::class, + ], + + 'invalid_QualityOutOfUpperBounds' => [ + 'input' => 'q-101', + 'expectedException' => InvalidTransformationValueException::class, + ], + + 'invalid_QualityOutOfLowerBounds' => [ + 'input' => 'q-0', + 'expectedException' => InvalidTransformationValueException::class, + ], + + 'valid_Width' => [ + 'input' => 'w-1920', + 'expectedException' => null, + 'expectedArray' => [ + 'w' => 1920, + ] + ], + + 'invalid_WidthOutOfLowerBound' => [ + 'input' => 'w--12', + 'expectedException' => InvalidTransformationValueException::class, + ], + + 'invalid_WidthNonInteger' => [ + 'input' => 'w-aa', + 'expectedException' => InvalidTransformationValueException::class, + ], + + 'valid_Height' => [ + 'input' => 'h-1080', + 'expectedException' => null, + 'expectedArray' => [ + 'h' => 1080, + ] + ], + + 'invalid_HeightOutOfLowerBound' => [ + 'input' => 'h--12', + 'expectedException' => InvalidTransformationValueException::class, + ], + + 'invalid_HeightNonInteger' => [ + 'input' => 'h-aa', + 'expectedException' => InvalidTransformationValueException::class, + ], + + 'valid_Format' => [ + 'input' => 'f-webp', + 'expectedException' => null, + 'expectedArray' => [ + 'f' => 'webp', + ] + ], + + 'invalid_FormatUndefined' => [ + 'input' => 'f-pdf', + 'expectedException' => InvalidTransformationValueException::class, + ], + + 'valid_Multiple' => [ + 'input' => 'f-png+w-200+h-150+q-35', + 'expectedException' => null, + 'expectedArray' => [ + 'f' => 'png', + 'w' => 200, + 'h' => 150, + 'q' => 35, + ] + ], + + 'invalid_FirstValueWrong' => [ + 'input' => 'f-dsa+w-200+h-150+q-100', + 'expectedException' => InvalidTransformationValueException::class, + ], + + 'invalid_MiddleValueWrong' => [ + 'input' => 'f-png+w-200+h-abc+q-100', + 'expectedException' => InvalidTransformationValueException::class, + ], + + 'invalid_LastValueWrong' => [ + 'input' => 'f-png+w-200+h-150+q-101', + 'expectedException' => InvalidTransformationValueException::class, + ], + + 'invalid_MultipleValuesWrong' => [ + 'input' => 'f-png+w-abc+h-150+q-101', + 'expectedException' => InvalidTransformationValueException::class, + ], + + 'invalid_FirstKeyWrong' => [ + 'input' => 'foo-png+w-200+h-150+q-100', + 'expectedException' => TransformationNotFoundException::class, + ], + + 'invalid_MiddleKeyWrong' => [ + 'input' => 'f-png+w-200+foo-150+q-100', + 'expectedException' => TransformationNotFoundException::class, + ], + + 'invalid_LastKeyWrong' => [ + 'input' => 'f-png+w-200+h-150+foo-100', + 'expectedException' => TransformationNotFoundException::class, + ], + + 'invalid_MultipleKeysWrong' => [ + 'input' => 'foo-png+w-200+bar-150+q-100', + 'expectedException' => TransformationNotFoundException::class, + ], + + 'invalid_LeadingPlus' => [ + 'input' => '+f-png', + 'expectedException' => InvalidTransformationFormatException::class, + ], + + 'invalid_OnlyPlus' => [ + 'input' => '+', + 'expectedException' => InvalidTransformationFormatException::class, + ], + + 'invalid_TrailingPlus' => [ + 'input' => 'w-123+', + 'expectedException' => InvalidTransformationFormatException::class, + ], + + 'invalid_MissingMinus' => [ + 'input' => 'fpng+q-50', + 'expectedException' => InvalidTransformationFormatException::class, + ], + + 'invalid_OnlyMinus' => [ + 'input' => '-', + 'expectedException' => TransformationNotFoundException::class, + ], + + 'invalid_KeyMissing' => [ + 'input' => '-png', + 'expectedException' => TransformationNotFoundException::class, + ], + + 'invalid_ValueMissing' => [ + 'input' => 'w-', + 'expectedException' => InvalidTransformationValueException::class, + ], + + 'empty' => [ + 'input' => '', + 'exceptedException' => null, + 'expectedArray' => null + ], + + 'invalid_ValueFloat' => [ + 'input' => 'q-1.5', + 'exceptedException' => InvalidTransformationValueException::class, + ], + + 'invalid_ValueLeadingZero' => [ + 'input' => 'q-0005', + 'exceptedException' => InvalidTransformationValueException::class, + ], + + 'invalid_ValueContainingExponent' => [ + 'input' => 'w-1337e0', + 'exceptedException' => InvalidTransformationValueException::class, + ], + + 'invalid_ValueHex' => [ + 'input' => 'h-0x539', + 'exceptedException' => InvalidTransformationValueException::class, + ], + + 'invalid_ValueUnderscore' => [ + 'input' => 'h-10_1', + 'exceptedException' => InvalidTransformationValueException::class, + ], + ]; + } + + /** + * @test + * @dataProvider provideTransformationStrings + */ + public function ensureTransformationStringsAreProperlyParsed(string $input, ?string $expectedException, ?array $expectedArray = null) + { + if ($expectedException) { + $this->expectException($expectedException); + } + + $this->assertEquals($expectedArray, Transformation::arrayFromString($input)); + } } From 4c09e9021a5a3f76165721c13fac1cf75aaaa842 Mon Sep 17 00:00:00 2001 From: mszulik <69617961+mszulik@users.noreply.github.com> Date: Wed, 3 Apr 2024 08:38:41 +0200 Subject: [PATCH 02/15] update to laravel 10 (#40) --- .gitattributes | 2 +- .github/workflows/tests.yml | 7 +- .gitignore | 1 + app/Console/Kernel.php | 4 +- app/Exceptions/Handler.php | 2 +- app/Http/Controllers/Controller.php | 3 +- app/Http/Kernel.php | 9 +- app/Http/Middleware/Authenticate.php | 9 +- .../Middleware/RedirectIfAuthenticated.php | 12 +- app/Http/Middleware/TrustHosts.php | 2 +- app/Models/User.php | 1 + app/Providers/AppServiceProvider.php | 4 +- app/Providers/AuthServiceProvider.php | 6 +- app/Providers/BroadcastServiceProvider.php | 2 +- app/Providers/EventServiceProvider.php | 4 +- app/Providers/RouteServiceProvider.php | 6 +- composer.json | 12 +- composer.lock | 2912 ++++++++--------- config/app.php | 32 +- config/auth.php | 2 +- config/broadcasting.php | 1 + config/cache.php | 1 + config/hashing.php | 4 +- config/logging.php | 9 + config/mail.php | 28 +- config/queue.php | 16 + config/sanctum.php | 22 +- config/session.php | 13 + database/factories/UserFactory.php | 12 +- .../2014_10_12_000000_create_users_table.php | 12 +- ...12_100000_create_password_resets_table.php | 12 +- ..._08_19_000000_create_failed_jobs_table.php | 12 +- ...01_create_personal_access_tokens_table.php | 12 +- .../2023_01_24_141057_create_media_table.php | 2 +- ...023_01_24_141106_create_versions_table.php | 2 +- ...0_make_user_name_unique_in_users_table.php | 2 +- .../2023_02_15_102309_create_jobs_table.php | 12 +- ...04_18_055131_create_upload_slots_table.php | 2 +- ...6_103017_add_public_key_to_users_table.php | 11 +- database/seeders/DatabaseSeeder.php | 2 +- package.json | 9 +- phpunit.xml | 19 +- resources/js/bootstrap.js | 3 - resources/views/welcome.blade.php | 223 +- routes/api.php | 4 +- routes/web.php | 4 +- tests/CreatesApplication.php | 5 +- tests/{Unit => }/MediaTest.php | 5 +- tests/Unit/CreateUserCommandTest.php | 6 +- tests/Unit/DeleteFfmpegFoldersCommandTest.php | 2 +- tests/Unit/ImageTest.php | 1 + tests/Unit/VideoTest.php | 1 + 52 files changed, 1651 insertions(+), 1850 deletions(-) rename tests/{Unit => }/MediaTest.php (81%) diff --git a/.gitattributes b/.gitattributes index 7dbbf41a..fcb21d39 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,4 +1,4 @@ -* text=auto +* text=auto eol=lf *.blade.php diff=html *.css diff=css diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 8f54a04b..ce69600d 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -24,14 +24,14 @@ jobs: fail-fast: true matrix: php: [ 8.1, 8.2 ] - laravel: [ 9.* ] + laravel: [ 10.* ] dependency-version: [ prefer-stable ] name: PHP ${{ matrix.php }} with Laravel ${{ matrix.laravel }} (${{ matrix.dependency-version }}) steps: - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Setup PHP uses: shivammathur/setup-php@v2 @@ -56,9 +56,10 @@ jobs: run: | composer require "laravel/framework:${{ matrix.laravel }}" --no-interaction --no-update --dev --no-progress composer update --${{ matrix.dependency-version }} --prefer-dist --no-interaction --no-progress + - name: Execute tests run: | php artisan migrate:fresh --env=ci - php artisan test --env=ci + php artisan test --env=ci --no-coverage env: DB_PORT: ${{ job.services.mysql.ports[3306] }} diff --git a/.gitignore b/.gitignore index c3307f6a..abb962bb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +/.phpunit.cache /node_modules /public/build /public/hot diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index 10a48343..13664664 100644 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -14,7 +14,7 @@ class Kernel extends ConsoleKernel * @param Schedule $schedule * @return void */ - protected function schedule(Schedule $schedule) + protected function schedule(Schedule $schedule): void { $schedule->command(DeleteFfmpegTempFolders::class)->daily(); } @@ -24,7 +24,7 @@ protected function schedule(Schedule $schedule) * * @return void */ - protected function commands() + protected function commands(): void { $this->load(__DIR__.'/Commands'); diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php index 917d213f..cb96d1e0 100644 --- a/app/Exceptions/Handler.php +++ b/app/Exceptions/Handler.php @@ -44,7 +44,7 @@ class Handler extends ExceptionHandler * * @return void */ - public function register() + public function register(): void { $this->reportable(function (Throwable $e) { // diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php index a0a2a8a3..77ec359a 100644 --- a/app/Http/Controllers/Controller.php +++ b/app/Http/Controllers/Controller.php @@ -3,11 +3,10 @@ namespace App\Http\Controllers; use Illuminate\Foundation\Auth\Access\AuthorizesRequests; -use Illuminate\Foundation\Bus\DispatchesJobs; use Illuminate\Foundation\Validation\ValidatesRequests; use Illuminate\Routing\Controller as BaseController; class Controller extends BaseController { - use AuthorizesRequests, DispatchesJobs, ValidatesRequests; + use AuthorizesRequests, ValidatesRequests; } diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index df8e966e..1a84dbad 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -40,19 +40,19 @@ class Kernel extends HttpKernel 'api' => [ // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, -// 'throttle:api', + // \Illuminate\Routing\Middleware\ThrottleRequests::class.':api', \Illuminate\Routing\Middleware\SubstituteBindings::class, ], ]; /** - * The application's route middleware. + * The application's middleware aliases. * - * These middleware may be assigned to groups or used individually. + * Aliases may be used instead of class names to conveniently assign middleware to routes and groups. * * @var array */ - protected $routeMiddleware = [ + protected $middlewareAliases = [ 'auth' => \App\Http\Middleware\Authenticate::class, 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 'auth.session' => \Illuminate\Session\Middleware\AuthenticateSession::class, @@ -60,6 +60,7 @@ class Kernel extends HttpKernel 'can' => \Illuminate\Auth\Middleware\Authorize::class, 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class, + 'precognitive' => \Illuminate\Foundation\Http\Middleware\HandlePrecognitiveRequests::class, 'signed' => \App\Http\Middleware\ValidateSignature::class, 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, diff --git a/app/Http/Middleware/Authenticate.php b/app/Http/Middleware/Authenticate.php index 704089a7..b00a3362 100644 --- a/app/Http/Middleware/Authenticate.php +++ b/app/Http/Middleware/Authenticate.php @@ -3,19 +3,18 @@ namespace App\Http\Middleware; use Illuminate\Auth\Middleware\Authenticate as Middleware; +use Illuminate\Http\Request; class Authenticate extends Middleware { /** * Get the path the user should be redirected to when they are not authenticated. * - * @param \Illuminate\Http\Request $request + * @param Request $request * @return string|null */ - protected function redirectTo($request) + protected function redirectTo(Request $request): ?string { - if (! $request->expectsJson()) { - return route('login'); - } + return $request->expectsJson() ? null : route('login'); } } diff --git a/app/Http/Middleware/RedirectIfAuthenticated.php b/app/Http/Middleware/RedirectIfAuthenticated.php index a2813a06..7eb9cddf 100644 --- a/app/Http/Middleware/RedirectIfAuthenticated.php +++ b/app/Http/Middleware/RedirectIfAuthenticated.php @@ -4,20 +4,22 @@ use App\Providers\RouteServiceProvider; use Closure; +use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; +use Symfony\Component\HttpFoundation\Response; class RedirectIfAuthenticated { /** * Handle an incoming request. * - * @param \Illuminate\Http\Request $request - * @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next - * @param string|null ...$guards - * @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse + * @param Request $request + * @param Closure(Request): (Response|RedirectResponse) $next + * @param string|null ...$guards + * @return Response */ - public function handle(Request $request, Closure $next, ...$guards) + public function handle(Request $request, Closure $next, string ...$guards): Response { $guards = empty($guards) ? [null] : $guards; diff --git a/app/Http/Middleware/TrustHosts.php b/app/Http/Middleware/TrustHosts.php index 7186414c..c9c58bdd 100644 --- a/app/Http/Middleware/TrustHosts.php +++ b/app/Http/Middleware/TrustHosts.php @@ -11,7 +11,7 @@ class TrustHosts extends Middleware * * @return array */ - public function hosts() + public function hosts(): array { return [ $this->allSubdomainsOfApplicationUrl(), diff --git a/app/Models/User.php b/app/Models/User.php index 688cdb4f..c0cfa215 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -73,6 +73,7 @@ class User extends Authenticatable */ protected $casts = [ 'email_verified_at' => 'datetime', + 'password' => 'hashed', ]; /** diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index ee8ca5bc..20d4a338 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -11,7 +11,7 @@ class AppServiceProvider extends ServiceProvider * * @return void */ - public function register() + public function register(): void { // } @@ -21,7 +21,7 @@ public function register() * * @return void */ - public function boot() + public function boot(): void { // } diff --git a/app/Providers/AuthServiceProvider.php b/app/Providers/AuthServiceProvider.php index 33b83f56..5b551734 100644 --- a/app/Providers/AuthServiceProvider.php +++ b/app/Providers/AuthServiceProvider.php @@ -13,7 +13,7 @@ class AuthServiceProvider extends ServiceProvider * @var array */ protected $policies = [ - // 'App\Models\Model' => 'App\Policies\ModelPolicy', + // ]; /** @@ -21,10 +21,8 @@ class AuthServiceProvider extends ServiceProvider * * @return void */ - public function boot() + public function boot(): void { - $this->registerPolicies(); - // } } diff --git a/app/Providers/BroadcastServiceProvider.php b/app/Providers/BroadcastServiceProvider.php index 395c518b..229284cb 100644 --- a/app/Providers/BroadcastServiceProvider.php +++ b/app/Providers/BroadcastServiceProvider.php @@ -12,7 +12,7 @@ class BroadcastServiceProvider extends ServiceProvider * * @return void */ - public function boot() + public function boot(): void { Broadcast::routes(); diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php index ab8b2cf7..f2391b92 100644 --- a/app/Providers/EventServiceProvider.php +++ b/app/Providers/EventServiceProvider.php @@ -25,7 +25,7 @@ class EventServiceProvider extends ServiceProvider * * @return void */ - public function boot() + public function boot(): void { // } @@ -35,7 +35,7 @@ public function boot() * * @return bool */ - public function shouldDiscoverEvents() + public function shouldDiscoverEvents(): bool { return false; } diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php index fe666ada..5230901b 100644 --- a/app/Providers/RouteServiceProvider.php +++ b/app/Providers/RouteServiceProvider.php @@ -13,7 +13,7 @@ class RouteServiceProvider extends ServiceProvider { /** - * The path to the "home" route for your application. + * The path to your application's "home" route. * * Typically, users are redirected here after authentication. * @@ -26,7 +26,7 @@ class RouteServiceProvider extends ServiceProvider * * @return void */ - public function boot() + public function boot(): void { $this->configureRateLimiting(); @@ -55,7 +55,7 @@ public function boot() * * @return void */ - protected function configureRateLimiting() + protected function configureRateLimiting(): void { RateLimiter::for('api', function (Request $request) { return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); diff --git a/composer.json b/composer.json index 449ddce5..53dddd69 100644 --- a/composer.json +++ b/composer.json @@ -12,22 +12,22 @@ "cybex/laravel-protector": "^2.0", "guzzlehttp/guzzle": "^7.2", "intervention/image": "^2.7", - "laravel/framework": "^9.19", - "laravel/sanctum": "^3.0", + "laravel/framework": "^10.0", + "laravel/sanctum": "^3.2", "laravel/tinker": "^2.7", "league/flysystem-aws-s3-v3": "^3.12", "pion/laravel-chunk-upload": "^1.5", "spatie/laravel-image-optimizer": "^1.7" }, "require-dev": { - "barryvdh/laravel-ide-helper": "^2.12", + "barryvdh/laravel-ide-helper": "^3.0", "fakerphp/faker": "^1.9.1", "laravel/pint": "^1.0", "laravel/sail": "^1.0.1", "mockery/mockery": "^1.4.4", - "nunomaduro/collision": "^6.1", - "phpunit/phpunit": "^9.5.10", - "spatie/laravel-ignition": "^1.0" + "nunomaduro/collision": "^7.0", + "phpunit/phpunit": "^10.0", + "spatie/laravel-ignition": "^2.0" }, "autoload": { "psr-4": { diff --git a/composer.lock b/composer.lock index 398e9765..11a84c26 100644 --- a/composer.lock +++ b/composer.lock @@ -4,30 +4,30 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "b03be3467e597279bd67243a49f5b699", + "content-hash": "e598a947523275a88373598a577cf766", "packages": [ { "name": "aminyazdanpanah/php-ffmpeg-video-streaming", - "version": "v1.2.16", + "version": "v1.2.17", "source": { "type": "git", - "url": "https://github.com/aminyazdanpanah/PHP-FFmpeg-video-streaming.git", - "reference": "302a869488794bc1be432f606645d55515248f79" + "url": "https://github.com/hadronepoch/PHP-FFmpeg-video-streaming.git", + "reference": "52c2742117f9b224df70cd0497071f8785ac446e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aminyazdanpanah/PHP-FFmpeg-video-streaming/zipball/302a869488794bc1be432f606645d55515248f79", - "reference": "302a869488794bc1be432f606645d55515248f79", + "url": "https://api.github.com/repos/hadronepoch/PHP-FFmpeg-video-streaming/zipball/52c2742117f9b224df70cd0497071f8785ac446e", + "reference": "52c2742117f9b224df70cd0497071f8785ac446e", "shasum": "" }, "require": { "php": "^7.2 || ^8.0", - "php-ffmpeg/php-ffmpeg": "^0.15 || 0.16 || 0.17 || 0.18 || 0.19 || 1.0", + "php-ffmpeg/php-ffmpeg": "^0.15 || 0.16 || 0.17 || 0.18 || 0.19 || ^1.0 || ^1.1", "symfony/filesystem": "^4.0 || ^5.0 || ^6.0" }, "require-dev": { "aws/aws-sdk-php": "^3.0@dev", - "google/cloud-storage": "dev-master", + "google/cloud-storage": "dev-main", "microsoft/azure-storage-blob": "dev-master", "phpunit/phpunit": "^8.4" }, @@ -87,23 +87,37 @@ "video-streaming" ], "support": { - "issues": "https://github.com/aminyazdanpanah/PHP-FFmpeg-video-streaming/issues", - "source": "https://github.com/aminyazdanpanah/PHP-FFmpeg-video-streaming/tree/v1.2.16" + "issues": "https://github.com/hadronepoch/PHP-FFmpeg-video-streaming/issues", + "source": "https://github.com/hadronepoch/PHP-FFmpeg-video-streaming/tree/v1.2.17" }, - "time": "2022-07-22T10:31:46+00:00" + "funding": [ + { + "url": "https://github.com/hadronepoch", + "type": "github" + }, + { + "url": "https://opencollective.com/hadronepoch", + "type": "open_collective" + }, + { + "url": "https://www.patreon.com/HadronEpoch", + "type": "patreon" + } + ], + "time": "2023-11-13T22:03:13+00:00" }, { "name": "aws/aws-crt-php", - "version": "v1.2.1", + "version": "v1.2.4", "source": { "type": "git", "url": "https://github.com/awslabs/aws-crt-php.git", - "reference": "1926277fc71d253dfa820271ac5987bdb193ccf5" + "reference": "eb0c6e4e142224a10b08f49ebf87f32611d162b2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/awslabs/aws-crt-php/zipball/1926277fc71d253dfa820271ac5987bdb193ccf5", - "reference": "1926277fc71d253dfa820271ac5987bdb193ccf5", + "url": "https://api.github.com/repos/awslabs/aws-crt-php/zipball/eb0c6e4e142224a10b08f49ebf87f32611d162b2", + "reference": "eb0c6e4e142224a10b08f49ebf87f32611d162b2", "shasum": "" }, "require": { @@ -142,35 +156,35 @@ ], "support": { "issues": "https://github.com/awslabs/aws-crt-php/issues", - "source": "https://github.com/awslabs/aws-crt-php/tree/v1.2.1" + "source": "https://github.com/awslabs/aws-crt-php/tree/v1.2.4" }, - "time": "2023-03-24T20:22:19+00:00" + "time": "2023-11-08T00:42:13+00:00" }, { "name": "aws/aws-sdk-php", - "version": "3.275.5", + "version": "3.301.2", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "d46961b82e857f77059c0c78160719ecb26f6cc6" + "reference": "7f8180275e624cb566d8af77d2f1c958bf5be35b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/d46961b82e857f77059c0c78160719ecb26f6cc6", - "reference": "d46961b82e857f77059c0c78160719ecb26f6cc6", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/7f8180275e624cb566d8af77d2f1c958bf5be35b", + "reference": "7f8180275e624cb566d8af77d2f1c958bf5be35b", "shasum": "" }, "require": { - "aws/aws-crt-php": "^1.0.4", + "aws/aws-crt-php": "^1.2.3", "ext-json": "*", "ext-pcre": "*", "ext-simplexml": "*", "guzzlehttp/guzzle": "^6.5.8 || ^7.4.5", - "guzzlehttp/promises": "^1.4.0", + "guzzlehttp/promises": "^1.4.0 || ^2.0", "guzzlehttp/psr7": "^1.9.1 || ^2.4.5", "mtdowling/jmespath.php": "^2.6", - "php": ">=5.5", - "psr/http-message": "^1.0" + "php": ">=7.2.5", + "psr/http-message": "^1.0 || ^2.0" }, "require-dev": { "andrewsville/php-token-reflection": "^1.4", @@ -185,7 +199,7 @@ "ext-sockets": "*", "nette/neon": "^2.3", "paragonie/random_compat": ">= 2", - "phpunit/phpunit": "^4.8.35 || ^5.6.3 || ^9.5", + "phpunit/phpunit": "^5.6.3 || ^8.5 || ^9.5", "psr/cache": "^1.0", "psr/simple-cache": "^1.0", "sebastian/comparator": "^1.2.3 || ^4.0", @@ -237,9 +251,9 @@ "support": { "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80", "issues": "https://github.com/aws/aws-sdk-php/issues", - "source": "https://github.com/aws/aws-sdk-php/tree/3.275.5" + "source": "https://github.com/aws/aws-sdk-php/tree/3.301.2" }, - "time": "2023-07-07T18:20:11+00:00" + "time": "2024-03-18T18:06:18+00:00" }, { "name": "brick/math", @@ -296,18 +310,87 @@ ], "time": "2023-01-15T23:15:59+00:00" }, + { + "name": "carbonphp/carbon-doctrine-types", + "version": "2.1.0", + "source": { + "type": "git", + "url": "https://github.com/CarbonPHP/carbon-doctrine-types.git", + "reference": "99f76ffa36cce3b70a4a6abce41dba15ca2e84cb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/99f76ffa36cce3b70a4a6abce41dba15ca2e84cb", + "reference": "99f76ffa36cce3b70a4a6abce41dba15ca2e84cb", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0" + }, + "conflict": { + "doctrine/dbal": "<3.7.0 || >=4.0.0" + }, + "require-dev": { + "doctrine/dbal": "^3.7.0", + "nesbot/carbon": "^2.71.0 || ^3.0.0", + "phpunit/phpunit": "^10.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Carbon\\Doctrine\\": "src/Carbon/Doctrine/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "KyleKatarn", + "email": "kylekatarnls@gmail.com" + } + ], + "description": "Types to use Carbon in Doctrine", + "keywords": [ + "carbon", + "date", + "datetime", + "doctrine", + "time" + ], + "support": { + "issues": "https://github.com/CarbonPHP/carbon-doctrine-types/issues", + "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/2.1.0" + }, + "funding": [ + { + "url": "https://github.com/kylekatarnls", + "type": "github" + }, + { + "url": "https://opencollective.com/Carbon", + "type": "open_collective" + }, + { + "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", + "type": "tidelift" + } + ], + "time": "2023-12-11T17:09:12+00:00" + }, { "name": "cybex/laravel-protector", - "version": "v2.0.1", + "version": "v2.2.0", "source": { "type": "git", "url": "https://github.com/cybex-gmbh/laravel-protector.git", - "reference": "9ce283314582adfe0d779b77714c6c9afb2b6221" + "reference": "29ee0e8f1a93dad1db80f1e57449e96cdd17520a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cybex-gmbh/laravel-protector/zipball/9ce283314582adfe0d779b77714c6c9afb2b6221", - "reference": "9ce283314582adfe0d779b77714c6c9afb2b6221", + "url": "https://api.github.com/repos/cybex-gmbh/laravel-protector/zipball/29ee0e8f1a93dad1db80f1e57449e96cdd17520a", + "reference": "29ee0e8f1a93dad1db80f1e57449e96cdd17520a", "shasum": "" }, "require": { @@ -367,9 +450,9 @@ ], "support": { "issues": "https://github.com/cybex-gmbh/laravel-protector/issues", - "source": "https://github.com/cybex-gmbh/laravel-protector/tree/v2.0.1" + "source": "https://github.com/cybex-gmbh/laravel-protector/tree/v2.2.0" }, - "time": "2023-04-25T15:44:47+00:00" + "time": "2024-03-12T15:33:26+00:00" }, { "name": "dflydev/dot-access-data", @@ -448,16 +531,16 @@ }, { "name": "doctrine/inflector", - "version": "2.0.8", + "version": "2.0.10", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff" + "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/f9301a5b2fb1216b2b08f02ba04dc45423db6bff", - "reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/5817d0659c5b50c9b950feb9af7b9668e2c436bc", + "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc", "shasum": "" }, "require": { @@ -519,7 +602,7 @@ ], "support": { "issues": "https://github.com/doctrine/inflector/issues", - "source": "https://github.com/doctrine/inflector/tree/2.0.8" + "source": "https://github.com/doctrine/inflector/tree/2.0.10" }, "funding": [ { @@ -535,31 +618,31 @@ "type": "tidelift" } ], - "time": "2023-06-16T13:40:37+00:00" + "time": "2024-02-18T20:23:39+00:00" }, { "name": "doctrine/lexer", - "version": "3.0.0", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "84a527db05647743d50373e0ec53a152f2cde568" + "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/84a527db05647743d50373e0ec53a152f2cde568", - "reference": "84a527db05647743d50373e0ec53a152f2cde568", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", + "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", "shasum": "" }, "require": { "php": "^8.1" }, "require-dev": { - "doctrine/coding-standard": "^10", - "phpstan/phpstan": "^1.9", - "phpunit/phpunit": "^9.5", + "doctrine/coding-standard": "^12", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^10.5", "psalm/plugin-phpunit": "^0.18.3", - "vimeo/psalm": "^5.0" + "vimeo/psalm": "^5.21" }, "type": "library", "autoload": { @@ -596,7 +679,7 @@ ], "support": { "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/3.0.0" + "source": "https://github.com/doctrine/lexer/tree/3.0.1" }, "funding": [ { @@ -612,20 +695,20 @@ "type": "tidelift" } ], - "time": "2022-12-15T16:57:16+00:00" + "time": "2024-02-05T11:56:58+00:00" }, { "name": "dragonmantank/cron-expression", - "version": "v3.3.2", + "version": "v3.3.3", "source": { "type": "git", "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "782ca5968ab8b954773518e9e49a6f892a34b2a8" + "reference": "adfb1f505deb6384dc8b39804c5065dd3c8c8c0a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/782ca5968ab8b954773518e9e49a6f892a34b2a8", - "reference": "782ca5968ab8b954773518e9e49a6f892a34b2a8", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/adfb1f505deb6384dc8b39804c5065dd3c8c8c0a", + "reference": "adfb1f505deb6384dc8b39804c5065dd3c8c8c0a", "shasum": "" }, "require": { @@ -665,7 +748,7 @@ ], "support": { "issues": "https://github.com/dragonmantank/cron-expression/issues", - "source": "https://github.com/dragonmantank/cron-expression/tree/v3.3.2" + "source": "https://github.com/dragonmantank/cron-expression/tree/v3.3.3" }, "funding": [ { @@ -673,20 +756,20 @@ "type": "github" } ], - "time": "2022-09-10T18:51:20+00:00" + "time": "2023-08-10T19:36:49+00:00" }, { "name": "egulias/email-validator", - "version": "4.0.1", + "version": "4.0.2", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "3a85486b709bc384dae8eb78fb2eec649bdb64ff" + "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/3a85486b709bc384dae8eb78fb2eec649bdb64ff", - "reference": "3a85486b709bc384dae8eb78fb2eec649bdb64ff", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ebaaf5be6c0286928352e054f2d5125608e5405e", + "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e", "shasum": "" }, "require": { @@ -695,8 +778,8 @@ "symfony/polyfill-intl-idn": "^1.26" }, "require-dev": { - "phpunit/phpunit": "^9.5.27", - "vimeo/psalm": "^4.30" + "phpunit/phpunit": "^10.2", + "vimeo/psalm": "^5.12" }, "suggest": { "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" @@ -732,7 +815,7 @@ ], "support": { "issues": "https://github.com/egulias/EmailValidator/issues", - "source": "https://github.com/egulias/EmailValidator/tree/4.0.1" + "source": "https://github.com/egulias/EmailValidator/tree/4.0.2" }, "funding": [ { @@ -740,32 +823,32 @@ "type": "github" } ], - "time": "2023-01-14T14:17:03+00:00" + "time": "2023-10-06T06:47:41+00:00" }, { "name": "evenement/evenement", - "version": "v3.0.1", + "version": "v3.0.2", "source": { "type": "git", "url": "https://github.com/igorw/evenement.git", - "reference": "531bfb9d15f8aa57454f5f0285b18bec903b8fb7" + "reference": "0a16b0d71ab13284339abb99d9d2bd813640efbc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/igorw/evenement/zipball/531bfb9d15f8aa57454f5f0285b18bec903b8fb7", - "reference": "531bfb9d15f8aa57454f5f0285b18bec903b8fb7", + "url": "https://api.github.com/repos/igorw/evenement/zipball/0a16b0d71ab13284339abb99d9d2bd813640efbc", + "reference": "0a16b0d71ab13284339abb99d9d2bd813640efbc", "shasum": "" }, "require": { "php": ">=7.0" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^9 || ^6" }, "type": "library", "autoload": { - "psr-0": { - "Evenement": "src" + "psr-4": { + "Evenement\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -785,27 +868,27 @@ ], "support": { "issues": "https://github.com/igorw/evenement/issues", - "source": "https://github.com/igorw/evenement/tree/master" + "source": "https://github.com/igorw/evenement/tree/v3.0.2" }, - "time": "2017-07-23T21:35:13+00:00" + "time": "2023-08-08T05:53:35+00:00" }, { "name": "fruitcake/php-cors", - "version": "v1.2.0", + "version": "v1.3.0", "source": { "type": "git", "url": "https://github.com/fruitcake/php-cors.git", - "reference": "58571acbaa5f9f462c9c77e911700ac66f446d4e" + "reference": "3d158f36e7875e2f040f37bc0573956240a5a38b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/58571acbaa5f9f462c9c77e911700ac66f446d4e", - "reference": "58571acbaa5f9f462c9c77e911700ac66f446d4e", + "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/3d158f36e7875e2f040f37bc0573956240a5a38b", + "reference": "3d158f36e7875e2f040f37bc0573956240a5a38b", "shasum": "" }, "require": { "php": "^7.4|^8.0", - "symfony/http-foundation": "^4.4|^5.4|^6" + "symfony/http-foundation": "^4.4|^5.4|^6|^7" }, "require-dev": { "phpstan/phpstan": "^1.4", @@ -815,7 +898,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.1-dev" + "dev-master": "1.2-dev" } }, "autoload": { @@ -846,7 +929,7 @@ ], "support": { "issues": "https://github.com/fruitcake/php-cors/issues", - "source": "https://github.com/fruitcake/php-cors/tree/v1.2.0" + "source": "https://github.com/fruitcake/php-cors/tree/v1.3.0" }, "funding": [ { @@ -858,28 +941,28 @@ "type": "github" } ], - "time": "2022-02-20T15:07:15+00:00" + "time": "2023-10-12T05:21:21+00:00" }, { "name": "graham-campbell/result-type", - "version": "v1.1.1", + "version": "v1.1.2", "source": { "type": "git", "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "672eff8cf1d6fe1ef09ca0f89c4b287d6a3eb831" + "reference": "fbd48bce38f73f8a4ec8583362e732e4095e5862" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/672eff8cf1d6fe1ef09ca0f89c4b287d6a3eb831", - "reference": "672eff8cf1d6fe1ef09ca0f89c4b287d6a3eb831", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/fbd48bce38f73f8a4ec8583362e732e4095e5862", + "reference": "fbd48bce38f73f8a4ec8583362e732e4095e5862", "shasum": "" }, "require": { "php": "^7.2.5 || ^8.0", - "phpoption/phpoption": "^1.9.1" + "phpoption/phpoption": "^1.9.2" }, "require-dev": { - "phpunit/phpunit": "^8.5.32 || ^9.6.3 || ^10.0.12" + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" }, "type": "library", "autoload": { @@ -908,7 +991,7 @@ ], "support": { "issues": "https://github.com/GrahamCampbell/Result-Type/issues", - "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.1" + "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.2" }, "funding": [ { @@ -920,26 +1003,26 @@ "type": "tidelift" } ], - "time": "2023-02-25T20:23:15+00:00" + "time": "2023-11-12T22:16:48+00:00" }, { "name": "guzzlehttp/guzzle", - "version": "7.7.0", + "version": "7.8.1", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "fb7566caccf22d74d1ab270de3551f72a58399f5" + "reference": "41042bc7ab002487b876a0683fc8dce04ddce104" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/fb7566caccf22d74d1ab270de3551f72a58399f5", - "reference": "fb7566caccf22d74d1ab270de3551f72a58399f5", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/41042bc7ab002487b876a0683fc8dce04ddce104", + "reference": "41042bc7ab002487b876a0683fc8dce04ddce104", "shasum": "" }, "require": { "ext-json": "*", - "guzzlehttp/promises": "^1.5.3 || ^2.0", - "guzzlehttp/psr7": "^1.9.1 || ^2.4.5", + "guzzlehttp/promises": "^1.5.3 || ^2.0.1", + "guzzlehttp/psr7": "^1.9.1 || ^2.5.1", "php": "^7.2.5 || ^8.0", "psr/http-client": "^1.0", "symfony/deprecation-contracts": "^2.2 || ^3.0" @@ -948,11 +1031,11 @@ "psr/http-client-implementation": "1.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.1", + "bamarni/composer-bin-plugin": "^1.8.2", "ext-curl": "*", "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999", "php-http/message-factory": "^1.1", - "phpunit/phpunit": "^8.5.29 || ^9.5.23", + "phpunit/phpunit": "^8.5.36 || ^9.6.15", "psr/log": "^1.1 || ^2.0 || ^3.0" }, "suggest": { @@ -1030,7 +1113,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.7.0" + "source": "https://github.com/guzzle/guzzle/tree/7.8.1" }, "funding": [ { @@ -1046,33 +1129,37 @@ "type": "tidelift" } ], - "time": "2023-05-21T14:04:53+00:00" + "time": "2023-12-03T20:35:24+00:00" }, { "name": "guzzlehttp/promises", - "version": "1.5.3", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "67ab6e18aaa14d753cc148911d273f6e6cb6721e" + "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/67ab6e18aaa14d753cc148911d273f6e6cb6721e", - "reference": "67ab6e18aaa14d753cc148911d273f6e6cb6721e", + "url": "https://api.github.com/repos/guzzle/promises/zipball/bbff78d96034045e58e13dedd6ad91b5d1253223", + "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223", "shasum": "" }, "require": { - "php": ">=5.5" + "php": "^7.2.5 || ^8.0" }, "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.36 || ^9.6.15" }, "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, "autoload": { - "files": [ - "src/functions_include.php" - ], "psr-4": { "GuzzleHttp\\Promise\\": "src/" } @@ -1109,7 +1196,7 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/1.5.3" + "source": "https://github.com/guzzle/promises/tree/2.0.2" }, "funding": [ { @@ -1125,20 +1212,20 @@ "type": "tidelift" } ], - "time": "2023-05-21T12:31:43+00:00" + "time": "2023-12-03T20:19:20+00:00" }, { "name": "guzzlehttp/psr7", - "version": "2.5.0", + "version": "2.6.2", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "b635f279edd83fc275f822a1188157ffea568ff6" + "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/b635f279edd83fc275f822a1188157ffea568ff6", - "reference": "b635f279edd83fc275f822a1188157ffea568ff6", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/45b30f99ac27b5ca93cb4831afe16285f57b8221", + "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221", "shasum": "" }, "require": { @@ -1152,9 +1239,9 @@ "psr/http-message-implementation": "1.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.1", + "bamarni/composer-bin-plugin": "^1.8.2", "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.29 || ^9.5.23" + "phpunit/phpunit": "^8.5.36 || ^9.6.15" }, "suggest": { "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" @@ -1225,7 +1312,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.5.0" + "source": "https://github.com/guzzle/psr7/tree/2.6.2" }, "funding": [ { @@ -1241,34 +1328,36 @@ "type": "tidelift" } ], - "time": "2023-04-17T16:11:26+00:00" + "time": "2023-12-03T20:05:35+00:00" }, { "name": "guzzlehttp/uri-template", - "version": "v1.0.1", + "version": "v1.0.3", "source": { "type": "git", "url": "https://github.com/guzzle/uri-template.git", - "reference": "b945d74a55a25a949158444f09ec0d3c120d69e2" + "reference": "ecea8feef63bd4fef1f037ecb288386999ecc11c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/uri-template/zipball/b945d74a55a25a949158444f09ec0d3c120d69e2", - "reference": "b945d74a55a25a949158444f09ec0d3c120d69e2", + "url": "https://api.github.com/repos/guzzle/uri-template/zipball/ecea8feef63bd4fef1f037ecb288386999ecc11c", + "reference": "ecea8feef63bd4fef1f037ecb288386999ecc11c", "shasum": "" }, "require": { "php": "^7.2.5 || ^8.0", - "symfony/polyfill-php80": "^1.17" + "symfony/polyfill-php80": "^1.24" }, "require-dev": { - "phpunit/phpunit": "^8.5.19 || ^9.5.8", + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.36 || ^9.6.15", "uri-template/tests": "1.0.0" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "1.0-dev" + "bamarni-bin": { + "bin-links": true, + "forward-command": false } }, "autoload": { @@ -1309,7 +1398,7 @@ ], "support": { "issues": "https://github.com/guzzle/uri-template/issues", - "source": "https://github.com/guzzle/uri-template/tree/v1.0.1" + "source": "https://github.com/guzzle/uri-template/tree/v1.0.3" }, "funding": [ { @@ -1325,7 +1414,7 @@ "type": "tidelift" } ], - "time": "2021-10-07T12:57:01+00:00" + "time": "2023-12-03T19:50:20+00:00" }, { "name": "intervention/image", @@ -1413,20 +1502,21 @@ }, { "name": "laravel/framework", - "version": "v9.52.10", + "version": "v10.48.3", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "858add225ce88a76c43aec0e7866288321ee0ee9" + "reference": "5791c052b41c6b593556adc687076bfbdd13c501" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/858add225ce88a76c43aec0e7866288321ee0ee9", - "reference": "858add225ce88a76c43aec0e7866288321ee0ee9", + "url": "https://api.github.com/repos/laravel/framework/zipball/5791c052b41c6b593556adc687076bfbdd13c501", + "reference": "5791c052b41c6b593556adc687076bfbdd13c501", "shasum": "" }, "require": { - "brick/math": "^0.9.3|^0.10.2|^0.11", + "brick/math": "^0.9.3|^0.10.2|^0.11|^0.12", + "composer-runtime-api": "^2.2", "doctrine/inflector": "^2.0.5", "dragonmantank/cron-expression": "^3.3.2", "egulias/email-validator": "^3.2.1|^4.0", @@ -1439,33 +1529,38 @@ "ext-tokenizer": "*", "fruitcake/php-cors": "^1.2", "guzzlehttp/uri-template": "^1.0", - "laravel/serializable-closure": "^1.2.2", + "laravel/prompts": "^0.1.9", + "laravel/serializable-closure": "^1.3", "league/commonmark": "^2.2.1", "league/flysystem": "^3.8.0", - "monolog/monolog": "^2.0", - "nesbot/carbon": "^2.62.1", + "monolog/monolog": "^3.0", + "nesbot/carbon": "^2.67", "nunomaduro/termwind": "^1.13", - "php": "^8.0.2", + "php": "^8.1", "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.7", - "symfony/console": "^6.0.9", - "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/uid": "^6.0", - "symfony/var-dumper": "^6.0", + "symfony/console": "^6.2", + "symfony/error-handler": "^6.2", + "symfony/finder": "^6.2", + "symfony/http-foundation": "^6.4", + "symfony/http-kernel": "^6.2", + "symfony/mailer": "^6.2", + "symfony/mime": "^6.2", + "symfony/process": "^6.2", + "symfony/routing": "^6.2", + "symfony/uid": "^6.2", + "symfony/var-dumper": "^6.2", "tijsverkoyen/css-to-inline-styles": "^2.2.5", "vlucas/phpdotenv": "^5.4.1", "voku/portable-ascii": "^2.0" }, "conflict": { + "carbonphp/carbon-doctrine-types": ">=3.0", + "doctrine/dbal": ">=4.0", + "mockery/mockery": "1.6.8", + "phpunit/phpunit": ">=11.0.0", "tightenco/collect": "<5.5.33" }, "provide": { @@ -1496,6 +1591,7 @@ "illuminate/notifications": "self.version", "illuminate/pagination": "self.version", "illuminate/pipeline": "self.version", + "illuminate/process": "self.version", "illuminate/queue": "self.version", "illuminate/redis": "self.version", "illuminate/routing": "self.version", @@ -1509,7 +1605,7 @@ "require-dev": { "ably/ably-php": "^1.0", "aws/aws-sdk-php": "^3.235.5", - "doctrine/dbal": "^2.13.3|^3.1.4", + "doctrine/dbal": "^3.5.1", "ext-gmp": "*", "fakerphp/faker": "^1.21", "guzzlehttp/guzzle": "^7.5", @@ -1519,20 +1615,21 @@ "league/flysystem-read-only": "^3.3", "league/flysystem-sftp-v3": "^3.0", "mockery/mockery": "^1.5.1", - "orchestra/testbench-core": "^7.24", + "nyholm/psr7": "^1.2", + "orchestra/testbench-core": "^8.18", "pda/pheanstalk": "^4.0", - "phpstan/phpdoc-parser": "^1.15", "phpstan/phpstan": "^1.4.7", - "phpunit/phpunit": "^9.5.8", - "predis/predis": "^1.1.9|^2.0.2", - "symfony/cache": "^6.0", - "symfony/http-client": "^6.0" + "phpunit/phpunit": "^10.0.7", + "predis/predis": "^2.0.2", + "symfony/cache": "^6.2", + "symfony/http-client": "^6.2.4", + "symfony/psr-http-message-bridge": "^2.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.235.5).", "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).", + "doctrine/dbal": "Required to rename columns and drop SQLite columns (^3.5.1).", "ext-apcu": "Required to use the APC cache driver.", "ext-fileinfo": "Required to use the Filesystem class.", "ext-ftp": "Required to use the Flysystem FTP driver.", @@ -1554,27 +1651,28 @@ "mockery/mockery": "Required to use mocking (^1.5.1).", "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 (^9.5.8).", - "predis/predis": "Required to use the predis connector (^1.1.9|^2.0.2).", + "phpunit/phpunit": "Required to use assertions and run tests (^9.5.8|^10.0.7).", + "predis/predis": "Required to use the predis connector (^2.0.2).", "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 (^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/cache": "Required to PSR-6 cache bridge (^6.2).", + "symfony/filesystem": "Required to enable support for relative symbolic links (^6.2).", + "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.2).", + "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.2).", + "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.2).", "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." }, "type": "library", "extra": { "branch-alias": { - "dev-master": "9.x-dev" + "dev-master": "10.x-dev" } }, "autoload": { "files": [ "src/Illuminate/Collections/helpers.php", "src/Illuminate/Events/functions.php", + "src/Illuminate/Filesystem/functions.php", "src/Illuminate/Foundation/helpers.php", "src/Illuminate/Support/helpers.php" ], @@ -1607,20 +1705,77 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2023-06-27T13:25:54+00:00" + "time": "2024-03-15T10:17:07+00:00" + }, + { + "name": "laravel/prompts", + "version": "v0.1.16", + "source": { + "type": "git", + "url": "https://github.com/laravel/prompts.git", + "reference": "ca6872ab6aec3ab61db3a61f83a6caf764ec7781" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/prompts/zipball/ca6872ab6aec3ab61db3a61f83a6caf764ec7781", + "reference": "ca6872ab6aec3ab61db3a61f83a6caf764ec7781", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "illuminate/collections": "^10.0|^11.0", + "php": "^8.1", + "symfony/console": "^6.2|^7.0" + }, + "conflict": { + "illuminate/console": ">=10.17.0 <10.25.0", + "laravel/framework": ">=10.17.0 <10.25.0" + }, + "require-dev": { + "mockery/mockery": "^1.5", + "pestphp/pest": "^2.3", + "phpstan/phpstan": "^1.11", + "phpstan/phpstan-mockery": "^1.1" + }, + "suggest": { + "ext-pcntl": "Required for the spinner to be animated." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "0.1.x-dev" + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Laravel\\Prompts\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "support": { + "issues": "https://github.com/laravel/prompts/issues", + "source": "https://github.com/laravel/prompts/tree/v0.1.16" + }, + "time": "2024-02-21T19:25:27+00:00" }, { "name": "laravel/sanctum", - "version": "v3.2.5", + "version": "v3.3.3", "source": { "type": "git", "url": "https://github.com/laravel/sanctum.git", - "reference": "8ebda85d59d3c414863a7f4d816ef8302faad876" + "reference": "8c104366459739f3ada0e994bcd3e6fd681ce3d5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/8ebda85d59d3c414863a7f4d816ef8302faad876", - "reference": "8ebda85d59d3c414863a7f4d816ef8302faad876", + "url": "https://api.github.com/repos/laravel/sanctum/zipball/8c104366459739f3ada0e994bcd3e6fd681ce3d5", + "reference": "8c104366459739f3ada0e994bcd3e6fd681ce3d5", "shasum": "" }, "require": { @@ -1633,9 +1788,9 @@ }, "require-dev": { "mockery/mockery": "^1.0", - "orchestra/testbench": "^7.0|^8.0", + "orchestra/testbench": "^7.28.2|^8.8.3", "phpstan/phpstan": "^1.10", - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^9.6" }, "type": "library", "extra": { @@ -1673,20 +1828,20 @@ "issues": "https://github.com/laravel/sanctum/issues", "source": "https://github.com/laravel/sanctum" }, - "time": "2023-05-01T19:39:51+00:00" + "time": "2023-12-19T18:44:48+00:00" }, { "name": "laravel/serializable-closure", - "version": "v1.3.0", + "version": "v1.3.3", "source": { "type": "git", "url": "https://github.com/laravel/serializable-closure.git", - "reference": "f23fe9d4e95255dacee1bf3525e0810d1a1b0f37" + "reference": "3dbf8a8e914634c48d389c1234552666b3d43754" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/f23fe9d4e95255dacee1bf3525e0810d1a1b0f37", - "reference": "f23fe9d4e95255dacee1bf3525e0810d1a1b0f37", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/3dbf8a8e914634c48d389c1234552666b3d43754", + "reference": "3dbf8a8e914634c48d389c1234552666b3d43754", "shasum": "" }, "require": { @@ -1733,42 +1888,40 @@ "issues": "https://github.com/laravel/serializable-closure/issues", "source": "https://github.com/laravel/serializable-closure" }, - "time": "2023-01-30T18:31:20+00:00" + "time": "2023-11-08T14:08:06+00:00" }, { "name": "laravel/tinker", - "version": "v2.8.1", + "version": "v2.9.0", "source": { "type": "git", "url": "https://github.com/laravel/tinker.git", - "reference": "04a2d3bd0d650c0764f70bf49d1ee39393e4eb10" + "reference": "502e0fe3f0415d06d5db1f83a472f0f3b754bafe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/04a2d3bd0d650c0764f70bf49d1ee39393e4eb10", - "reference": "04a2d3bd0d650c0764f70bf49d1ee39393e4eb10", + "url": "https://api.github.com/repos/laravel/tinker/zipball/502e0fe3f0415d06d5db1f83a472f0f3b754bafe", + "reference": "502e0fe3f0415d06d5db1f83a472f0f3b754bafe", "shasum": "" }, "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0|^10.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0|^10.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0", + "illuminate/console": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", + "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", + "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", "php": "^7.2.5|^8.0", - "psy/psysh": "^0.10.4|^0.11.1", - "symfony/var-dumper": "^4.3.4|^5.0|^6.0" + "psy/psysh": "^0.11.1|^0.12.0", + "symfony/var-dumper": "^4.3.4|^5.0|^6.0|^7.0" }, "require-dev": { "mockery/mockery": "~1.3.3|^1.4.2", + "phpstan/phpstan": "^1.10", "phpunit/phpunit": "^8.5.8|^9.3.3" }, "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.0|^10.0)." + "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.0|^10.0|^11.0)." }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - }, "laravel": { "providers": [ "Laravel\\Tinker\\TinkerServiceProvider" @@ -1799,22 +1952,22 @@ ], "support": { "issues": "https://github.com/laravel/tinker/issues", - "source": "https://github.com/laravel/tinker/tree/v2.8.1" + "source": "https://github.com/laravel/tinker/tree/v2.9.0" }, - "time": "2023-02-15T16:40:09+00:00" + "time": "2024-01-04T16:10:04+00:00" }, { "name": "league/commonmark", - "version": "2.4.0", + "version": "2.4.2", "source": { "type": "git", "url": "https://github.com/thephpleague/commonmark.git", - "reference": "d44a24690f16b8c1808bf13b1bd54ae4c63ea048" + "reference": "91c24291965bd6d7c46c46a12ba7492f83b1cadf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/d44a24690f16b8c1808bf13b1bd54ae4c63ea048", - "reference": "d44a24690f16b8c1808bf13b1bd54ae4c63ea048", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/91c24291965bd6d7c46c46a12ba7492f83b1cadf", + "reference": "91c24291965bd6d7c46c46a12ba7492f83b1cadf", "shasum": "" }, "require": { @@ -1827,7 +1980,7 @@ }, "require-dev": { "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", + "commonmark/cmark": "0.30.3", "commonmark/commonmark.js": "0.30.0", "composer/package-versions-deprecated": "^1.8", "embed/embed": "^4.4", @@ -1837,10 +1990,10 @@ "michelf/php-markdown": "^1.4 || ^2.0", "nyholm/psr7": "^1.5", "phpstan/phpstan": "^1.8.2", - "phpunit/phpunit": "^9.5.21", + "phpunit/phpunit": "^9.5.21 || ^10.5.9 || ^11.0.0", "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3 | ^6.0", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", + "symfony/finder": "^5.3 | ^6.0 || ^7.0", + "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0 || ^7.0", "unleashedtech/php-coding-standard": "^3.1.1", "vimeo/psalm": "^4.24.0 || ^5.0.0" }, @@ -1907,7 +2060,7 @@ "type": "tidelift" } ], - "time": "2023-03-24T15:16:10+00:00" + "time": "2024-02-02T11:59:32+00:00" }, { "name": "league/config", @@ -1993,16 +2146,16 @@ }, { "name": "league/flysystem", - "version": "3.15.1", + "version": "3.25.1", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "a141d430414fcb8bf797a18716b09f759a385bed" + "reference": "abbd664eb4381102c559d358420989f835208f18" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/a141d430414fcb8bf797a18716b09f759a385bed", - "reference": "a141d430414fcb8bf797a18716b09f759a385bed", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/abbd664eb4381102c559d358420989f835208f18", + "reference": "abbd664eb4381102c559d358420989f835208f18", "shasum": "" }, "require": { @@ -2011,6 +2164,8 @@ "php": "^8.0.2" }, "conflict": { + "async-aws/core": "<1.19.0", + "async-aws/s3": "<1.14.0", "aws/aws-sdk-php": "3.209.31 || 3.210.0", "guzzlehttp/guzzle": "<7.0", "guzzlehttp/ringphp": "<1.1.1", @@ -2018,9 +2173,9 @@ "symfony/http-client": "<5.2" }, "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.1", - "aws/aws-sdk-php": "^3.220.0", + "async-aws/s3": "^1.5 || ^2.0", + "async-aws/simple-s3": "^1.1 || ^2.0", + "aws/aws-sdk-php": "^3.295.10", "composer/semver": "^3.0", "ext-fileinfo": "*", "ext-ftp": "*", @@ -2028,10 +2183,10 @@ "friendsofphp/php-cs-fixer": "^3.5", "google/cloud-storage": "^1.23", "microsoft/azure-storage-blob": "^1.1", - "phpseclib/phpseclib": "^3.0.14", - "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^9.5.11", - "sabre/dav": "^4.3.1" + "phpseclib/phpseclib": "^3.0.36", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^9.5.11|^10.0", + "sabre/dav": "^4.6.0" }, "type": "library", "autoload": { @@ -2065,7 +2220,7 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/3.15.1" + "source": "https://github.com/thephpleague/flysystem/tree/3.25.1" }, "funding": [ { @@ -2077,24 +2232,24 @@ "type": "github" } ], - "time": "2023-05-04T09:04:26+00:00" + "time": "2024-03-16T12:53:19+00:00" }, { "name": "league/flysystem-aws-s3-v3", - "version": "3.15.0", + "version": "3.25.1", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem-aws-s3-v3.git", - "reference": "d8de61ee10b6a607e7996cff388c5a3a663e8c8a" + "reference": "6a5be0e6d6a93574e80805c9cc108a4b63c824d8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/d8de61ee10b6a607e7996cff388c5a3a663e8c8a", - "reference": "d8de61ee10b6a607e7996cff388c5a3a663e8c8a", + "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/6a5be0e6d6a93574e80805c9cc108a4b63c824d8", + "reference": "6a5be0e6d6a93574e80805c9cc108a4b63c824d8", "shasum": "" }, "require": { - "aws/aws-sdk-php": "^3.220.0", + "aws/aws-sdk-php": "^3.295.10", "league/flysystem": "^3.10.0", "league/mime-type-detection": "^1.0.0", "php": "^8.0.2" @@ -2130,8 +2285,7 @@ "storage" ], "support": { - "issues": "https://github.com/thephpleague/flysystem-aws-s3-v3/issues", - "source": "https://github.com/thephpleague/flysystem-aws-s3-v3/tree/3.15.0" + "source": "https://github.com/thephpleague/flysystem-aws-s3-v3/tree/3.25.1" }, "funding": [ { @@ -2143,20 +2297,20 @@ "type": "github" } ], - "time": "2023-05-02T20:02:14+00:00" + "time": "2024-03-15T19:58:44+00:00" }, { "name": "league/flysystem-local", - "version": "3.15.0", + "version": "3.25.1", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem-local.git", - "reference": "543f64c397fefdf9cfeac443ffb6beff602796b3" + "reference": "61a6a90d6e999e4ddd9ce5adb356de0939060b92" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/543f64c397fefdf9cfeac443ffb6beff602796b3", - "reference": "543f64c397fefdf9cfeac443ffb6beff602796b3", + "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/61a6a90d6e999e4ddd9ce5adb356de0939060b92", + "reference": "61a6a90d6e999e4ddd9ce5adb356de0939060b92", "shasum": "" }, "require": { @@ -2190,8 +2344,7 @@ "local" ], "support": { - "issues": "https://github.com/thephpleague/flysystem-local/issues", - "source": "https://github.com/thephpleague/flysystem-local/tree/3.15.0" + "source": "https://github.com/thephpleague/flysystem-local/tree/3.25.1" }, "funding": [ { @@ -2203,30 +2356,30 @@ "type": "github" } ], - "time": "2023-05-02T20:02:14+00:00" + "time": "2024-03-15T19:58:44+00:00" }, { "name": "league/mime-type-detection", - "version": "1.11.0", + "version": "1.15.0", "source": { "type": "git", "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "ff6248ea87a9f116e78edd6002e39e5128a0d4dd" + "reference": "ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/ff6248ea87a9f116e78edd6002e39e5128a0d4dd", - "reference": "ff6248ea87a9f116e78edd6002e39e5128a0d4dd", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301", + "reference": "ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301", "shasum": "" }, "require": { "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" + "php": "^7.4 || ^8.0" }, "require-dev": { "friendsofphp/php-cs-fixer": "^3.2", "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" + "phpunit/phpunit": "^8.5.8 || ^9.3 || ^10.0" }, "type": "library", "autoload": { @@ -2247,7 +2400,7 @@ "description": "Mime-type detection for Flysystem", "support": { "issues": "https://github.com/thephpleague/mime-type-detection/issues", - "source": "https://github.com/thephpleague/mime-type-detection/tree/1.11.0" + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.15.0" }, "funding": [ { @@ -2259,46 +2412,45 @@ "type": "tidelift" } ], - "time": "2022-04-17T13:12:02+00:00" + "time": "2024-01-28T23:22:08+00:00" }, { "name": "monolog/monolog", - "version": "2.9.1", + "version": "3.5.0", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "f259e2b15fb95494c83f52d3caad003bbf5ffaa1" + "reference": "c915e2634718dbc8a4a15c61b0e62e7a44e14448" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/f259e2b15fb95494c83f52d3caad003bbf5ffaa1", - "reference": "f259e2b15fb95494c83f52d3caad003bbf5ffaa1", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/c915e2634718dbc8a4a15c61b0e62e7a44e14448", + "reference": "c915e2634718dbc8a4a15c61b0e62e7a44e14448", "shasum": "" }, "require": { - "php": ">=7.2", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" + "php": ">=8.1", + "psr/log": "^2.0 || ^3.0" }, "provide": { - "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" + "psr/log-implementation": "3.0.0" }, "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", + "aws/aws-sdk-php": "^3.0", "doctrine/couchdb": "~1.0@dev", "elasticsearch/elasticsearch": "^7 || ^8", "ext-json": "*", - "graylog2/gelf-php": "^1.4.2 || ^2@dev", - "guzzlehttp/guzzle": "^7.4", + "graylog2/gelf-php": "^1.4.2 || ^2.0", + "guzzlehttp/guzzle": "^7.4.5", "guzzlehttp/psr7": "^2.2", "mongodb/mongodb": "^1.8", "php-amqplib/php-amqplib": "~2.4 || ^3", - "phpspec/prophecy": "^1.15", - "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5.14", - "predis/predis": "^1.1 || ^2.0", - "rollbar/rollbar": "^1.3 || ^2 || ^3", + "phpstan/phpstan": "^1.9", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-strict-rules": "^1.4", + "phpunit/phpunit": "^10.1", + "predis/predis": "^1.1 || ^2", "ruflin/elastica": "^7", - "swiftmailer/swiftmailer": "^5.3|^6.0", "symfony/mailer": "^5.4 || ^6", "symfony/mime": "^5.4 || ^6" }, @@ -2321,7 +2473,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.x-dev" + "dev-main": "3.x-dev" } }, "autoload": { @@ -2349,7 +2501,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/2.9.1" + "source": "https://github.com/Seldaek/monolog/tree/3.5.0" }, "funding": [ { @@ -2361,29 +2513,29 @@ "type": "tidelift" } ], - "time": "2023-02-06T13:44:46+00:00" + "time": "2023-10-27T15:32:31+00:00" }, { "name": "mtdowling/jmespath.php", - "version": "2.6.1", + "version": "2.7.0", "source": { "type": "git", "url": "https://github.com/jmespath/jmespath.php.git", - "reference": "9b87907a81b87bc76d19a7fb2d61e61486ee9edb" + "reference": "bbb69a935c2cbb0c03d7f481a238027430f6440b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/jmespath/jmespath.php/zipball/9b87907a81b87bc76d19a7fb2d61e61486ee9edb", - "reference": "9b87907a81b87bc76d19a7fb2d61e61486ee9edb", + "url": "https://api.github.com/repos/jmespath/jmespath.php/zipball/bbb69a935c2cbb0c03d7f481a238027430f6440b", + "reference": "bbb69a935c2cbb0c03d7f481a238027430f6440b", "shasum": "" }, "require": { - "php": "^5.4 || ^7.0 || ^8.0", + "php": "^7.2.5 || ^8.0", "symfony/polyfill-mbstring": "^1.17" }, "require-dev": { - "composer/xdebug-handler": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^7.5.15" + "composer/xdebug-handler": "^3.0.3", + "phpunit/phpunit": "^8.5.33" }, "bin": [ "bin/jp.php" @@ -2391,7 +2543,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.6-dev" + "dev-master": "2.7-dev" } }, "autoload": { @@ -2407,6 +2559,11 @@ "MIT" ], "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, { "name": "Michael Dowling", "email": "mtdowling@gmail.com", @@ -2420,34 +2577,39 @@ ], "support": { "issues": "https://github.com/jmespath/jmespath.php/issues", - "source": "https://github.com/jmespath/jmespath.php/tree/2.6.1" + "source": "https://github.com/jmespath/jmespath.php/tree/2.7.0" }, - "time": "2021-06-14T00:11:39+00:00" + "time": "2023-08-25T10:54:48+00:00" }, { "name": "nesbot/carbon", - "version": "2.68.1", + "version": "2.72.3", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "4f991ed2a403c85efbc4f23eb4030063fdbe01da" + "reference": "0c6fd108360c562f6e4fd1dedb8233b423e91c83" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/4f991ed2a403c85efbc4f23eb4030063fdbe01da", - "reference": "4f991ed2a403c85efbc4f23eb4030063fdbe01da", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/0c6fd108360c562f6e4fd1dedb8233b423e91c83", + "reference": "0c6fd108360c562f6e4fd1dedb8233b423e91c83", "shasum": "" }, "require": { + "carbonphp/carbon-doctrine-types": "*", "ext-json": "*", "php": "^7.1.8 || ^8.0", + "psr/clock": "^1.0", "symfony/polyfill-mbstring": "^1.0", "symfony/polyfill-php80": "^1.16", "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" }, + "provide": { + "psr/clock-implementation": "1.0" + }, "require-dev": { - "doctrine/dbal": "^2.0 || ^3.1.4", - "doctrine/orm": "^2.7", + "doctrine/dbal": "^2.0 || ^3.1.4 || ^4.0", + "doctrine/orm": "^2.7 || ^3.0", "friendsofphp/php-cs-fixer": "^3.0", "kylekatarnls/multi-tester": "^2.0", "ondrejmirtes/better-reflection": "*", @@ -2524,35 +2686,35 @@ "type": "tidelift" } ], - "time": "2023-06-20T18:29:04+00:00" + "time": "2024-01-25T10:35:09+00:00" }, { "name": "nette/schema", - "version": "v1.2.3", + "version": "v1.3.0", "source": { "type": "git", "url": "https://github.com/nette/schema.git", - "reference": "abbdbb70e0245d5f3bf77874cea1dfb0c930d06f" + "reference": "a6d3a6d1f545f01ef38e60f375d1cf1f4de98188" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/abbdbb70e0245d5f3bf77874cea1dfb0c930d06f", - "reference": "abbdbb70e0245d5f3bf77874cea1dfb0c930d06f", + "url": "https://api.github.com/repos/nette/schema/zipball/a6d3a6d1f545f01ef38e60f375d1cf1f4de98188", + "reference": "a6d3a6d1f545f01ef38e60f375d1cf1f4de98188", "shasum": "" }, "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.3" + "nette/utils": "^4.0", + "php": "8.1 - 8.3" }, "require-dev": { - "nette/tester": "^2.3 || ^2.4", + "nette/tester": "^2.4", "phpstan/phpstan-nette": "^1.0", - "tracy/tracy": "^2.7" + "tracy/tracy": "^2.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2-dev" + "dev-master": "1.3-dev" } }, "autoload": { @@ -2584,26 +2746,26 @@ ], "support": { "issues": "https://github.com/nette/schema/issues", - "source": "https://github.com/nette/schema/tree/v1.2.3" + "source": "https://github.com/nette/schema/tree/v1.3.0" }, - "time": "2022-10-13T01:24:26+00:00" + "time": "2023-12-11T11:54:22+00:00" }, { "name": "nette/utils", - "version": "v4.0.0", + "version": "v4.0.4", "source": { "type": "git", "url": "https://github.com/nette/utils.git", - "reference": "cacdbf5a91a657ede665c541eda28941d4b09c1e" + "reference": "d3ad0aa3b9f934602cb3e3902ebccf10be34d218" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/cacdbf5a91a657ede665c541eda28941d4b09c1e", - "reference": "cacdbf5a91a657ede665c541eda28941d4b09c1e", + "url": "https://api.github.com/repos/nette/utils/zipball/d3ad0aa3b9f934602cb3e3902ebccf10be34d218", + "reference": "d3ad0aa3b9f934602cb3e3902ebccf10be34d218", "shasum": "" }, "require": { - "php": ">=8.0 <8.3" + "php": ">=8.0 <8.4" }, "conflict": { "nette/finder": "<3", @@ -2611,7 +2773,7 @@ }, "require-dev": { "jetbrains/phpstorm-attributes": "dev-master", - "nette/tester": "^2.4", + "nette/tester": "^2.5", "phpstan/phpstan": "^1.0", "tracy/tracy": "^2.9" }, @@ -2621,8 +2783,7 @@ "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()", "ext-json": "to use Nette\\Utils\\Json", "ext-mbstring": "to use Strings::lower() etc...", - "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" + "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()" }, "type": "library", "extra": { @@ -2671,31 +2832,33 @@ ], "support": { "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/v4.0.0" + "source": "https://github.com/nette/utils/tree/v4.0.4" }, - "time": "2023-02-02T10:41:53+00:00" + "time": "2024-01-17T16:50:36+00:00" }, { "name": "nikic/php-parser", - "version": "v4.16.0", + "version": "v5.0.2", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "19526a33fb561ef417e822e85f08a00db4059c17" + "reference": "139676794dc1e9231bf7bcd123cfc0c99182cb13" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/19526a33fb561ef417e822e85f08a00db4059c17", - "reference": "19526a33fb561ef417e822e85f08a00db4059c17", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/139676794dc1e9231bf7bcd123cfc0c99182cb13", + "reference": "139676794dc1e9231bf7bcd123cfc0c99182cb13", "shasum": "" }, "require": { + "ext-ctype": "*", + "ext-json": "*", "ext-tokenizer": "*", - "php": ">=7.0" + "php": ">=7.4" }, "require-dev": { "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" }, "bin": [ "bin/php-parse" @@ -2703,7 +2866,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.9-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -2727,9 +2890,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.16.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.0.2" }, - "time": "2023-06-25T14:52:30+00:00" + "time": "2024-03-05T20:51:40+00:00" }, { "name": "nunomaduro/termwind", @@ -2819,27 +2982,28 @@ }, { "name": "php-ffmpeg/php-ffmpeg", - "version": "v1.0.0", + "version": "v1.2.0", "source": { "type": "git", "url": "https://github.com/PHP-FFMpeg/PHP-FFMpeg.git", - "reference": "f8086d70037097ecd969f6d46e81c452d702b9e1" + "reference": "785a5ba05dd88b3b8146f85f18476b259b23917c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-FFMpeg/PHP-FFMpeg/zipball/f8086d70037097ecd969f6d46e81c452d702b9e1", - "reference": "f8086d70037097ecd969f6d46e81c452d702b9e1", + "url": "https://api.github.com/repos/PHP-FFMpeg/PHP-FFMpeg/zipball/785a5ba05dd88b3b8146f85f18476b259b23917c", + "reference": "785a5ba05dd88b3b8146f85f18476b259b23917c", "shasum": "" }, "require": { "evenement/evenement": "^3.0", - "php": "^8.0 || ^8.1", + "php": "^8.0 || ^8.1 || ^8.2 || ^8.3", "psr/log": "^1.0 || ^2.0 || ^3.0", "spatie/temporary-directory": "^2.0", - "symfony/cache": "^5.4 || ^6.0", - "symfony/process": "^5.4 || ^6.0" + "symfony/cache": "^5.4 || ^6.0 || ^7.0", + "symfony/process": "^5.4 || ^6.0 || ^7.0" }, "require-dev": { + "mockery/mockery": "^1.5", "phpunit/phpunit": "^9.5.10" }, "suggest": { @@ -2901,22 +3065,22 @@ ], "support": { "issues": "https://github.com/PHP-FFMpeg/PHP-FFMpeg/issues", - "source": "https://github.com/PHP-FFMpeg/PHP-FFMpeg/tree/v1.0.0" + "source": "https://github.com/PHP-FFMpeg/PHP-FFMpeg/tree/v1.2.0" }, - "time": "2022-02-09T13:36:26+00:00" + "time": "2024-01-02T10:37:01+00:00" }, { "name": "phpoption/phpoption", - "version": "1.9.1", + "version": "1.9.2", "source": { "type": "git", "url": "https://github.com/schmittjoh/php-option.git", - "reference": "dd3a383e599f49777d8b628dadbb90cae435b87e" + "reference": "80735db690fe4fc5c76dfa7f9b770634285fa820" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/dd3a383e599f49777d8b628dadbb90cae435b87e", - "reference": "dd3a383e599f49777d8b628dadbb90cae435b87e", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/80735db690fe4fc5c76dfa7f9b770634285fa820", + "reference": "80735db690fe4fc5c76dfa7f9b770634285fa820", "shasum": "" }, "require": { @@ -2924,7 +3088,7 @@ }, "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", - "phpunit/phpunit": "^8.5.32 || ^9.6.3 || ^10.0.12" + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" }, "type": "library", "extra": { @@ -2966,7 +3130,7 @@ ], "support": { "issues": "https://github.com/schmittjoh/php-option/issues", - "source": "https://github.com/schmittjoh/php-option/tree/1.9.1" + "source": "https://github.com/schmittjoh/php-option/tree/1.9.2" }, "funding": [ { @@ -2978,7 +3142,7 @@ "type": "tidelift" } ], - "time": "2023-02-25T19:38:58+00:00" + "time": "2023-11-12T21:59:55+00:00" }, { "name": "pion/laravel-chunk-upload", @@ -3095,6 +3259,54 @@ }, "time": "2021-02-03T23:26:27+00:00" }, + { + "name": "psr/clock", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/clock.git", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Clock\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for reading the clock.", + "homepage": "https://github.com/php-fig/clock", + "keywords": [ + "clock", + "now", + "psr", + "psr-20", + "time" + ], + "support": { + "issues": "https://github.com/php-fig/clock/issues", + "source": "https://github.com/php-fig/clock/tree/1.0.0" + }, + "time": "2022-11-25T14:36:26+00:00" + }, { "name": "psr/container", "version": "2.0.2", @@ -3200,16 +3412,16 @@ }, { "name": "psr/http-client", - "version": "1.0.2", + "version": "1.0.3", "source": { "type": "git", "url": "https://github.com/php-fig/http-client.git", - "reference": "0955afe48220520692d2d09f7ab7e0f93ffd6a31" + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/0955afe48220520692d2d09f7ab7e0f93ffd6a31", - "reference": "0955afe48220520692d2d09f7ab7e0f93ffd6a31", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90", "shasum": "" }, "require": { @@ -3246,9 +3458,9 @@ "psr-18" ], "support": { - "source": "https://github.com/php-fig/http-client/tree/1.0.2" + "source": "https://github.com/php-fig/http-client" }, - "time": "2023-04-10T20:12:12+00:00" + "time": "2023-09-23T14:17:50+00:00" }, { "name": "psr/http-factory", @@ -3307,16 +3519,16 @@ }, { "name": "psr/http-message", - "version": "1.1", + "version": "2.0", "source": { "type": "git", "url": "https://github.com/php-fig/http-message.git", - "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba" + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/cb6ce4845ce34a8ad9e68117c10ee90a29919eba", - "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", "shasum": "" }, "require": { @@ -3325,7 +3537,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -3340,7 +3552,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for HTTP messages", @@ -3354,9 +3566,9 @@ "response" ], "support": { - "source": "https://github.com/php-fig/http-message/tree/1.1" + "source": "https://github.com/php-fig/http-message/tree/2.0" }, - "time": "2023-04-04T09:50:52+00:00" + "time": "2023-04-04T09:54:51+00:00" }, { "name": "psr/log", @@ -3461,25 +3673,25 @@ }, { "name": "psy/psysh", - "version": "v0.11.18", + "version": "v0.12.2", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "4f00ee9e236fa6a48f4560d1300b9c961a70a7ec" + "reference": "9185c66c2165bbf4d71de78a69dccf4974f9538d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/4f00ee9e236fa6a48f4560d1300b9c961a70a7ec", - "reference": "4f00ee9e236fa6a48f4560d1300b9c961a70a7ec", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/9185c66c2165bbf4d71de78a69dccf4974f9538d", + "reference": "9185c66c2165bbf4d71de78a69dccf4974f9538d", "shasum": "" }, "require": { "ext-json": "*", "ext-tokenizer": "*", - "nikic/php-parser": "^4.0 || ^3.1", - "php": "^8.0 || ^7.0.8", - "symfony/console": "^6.0 || ^5.0 || ^4.0 || ^3.4", - "symfony/var-dumper": "^6.0 || ^5.0 || ^4.0 || ^3.4" + "nikic/php-parser": "^5.0 || ^4.0", + "php": "^8.0 || ^7.4", + "symfony/console": "^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4", + "symfony/var-dumper": "^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4" }, "conflict": { "symfony/console": "4.4.37 || 5.3.14 || 5.3.15 || 5.4.3 || 5.4.4 || 6.0.3 || 6.0.4" @@ -3490,8 +3702,7 @@ "suggest": { "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", "ext-pdo-sqlite": "The doc command requires SQLite to work.", - "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well.", - "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history." + "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well." }, "bin": [ "bin/psysh" @@ -3499,7 +3710,11 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "0.11.x-dev" + "dev-main": "0.12.x-dev" + }, + "bamarni-bin": { + "bin-links": false, + "forward-command": false } }, "autoload": { @@ -3531,9 +3746,9 @@ ], "support": { "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/v0.11.18" + "source": "https://github.com/bobthecow/psysh/tree/v0.12.2" }, - "time": "2023-05-23T02:31:11+00:00" + "time": "2024-03-17T01:53:00+00:00" }, { "name": "ralouphie/getallheaders", @@ -3670,16 +3885,16 @@ }, { "name": "ramsey/uuid", - "version": "4.7.4", + "version": "4.7.5", "source": { "type": "git", "url": "https://github.com/ramsey/uuid.git", - "reference": "60a4c63ab724854332900504274f6150ff26d286" + "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/60a4c63ab724854332900504274f6150ff26d286", - "reference": "60a4c63ab724854332900504274f6150ff26d286", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e", + "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e", "shasum": "" }, "require": { @@ -3746,7 +3961,7 @@ ], "support": { "issues": "https://github.com/ramsey/uuid/issues", - "source": "https://github.com/ramsey/uuid/tree/4.7.4" + "source": "https://github.com/ramsey/uuid/tree/4.7.5" }, "funding": [ { @@ -3758,32 +3973,32 @@ "type": "tidelift" } ], - "time": "2023-04-15T23:01:58+00:00" + "time": "2023-11-08T05:53:05+00:00" }, { "name": "spatie/image-optimizer", - "version": "1.6.4", + "version": "1.7.2", "source": { "type": "git", "url": "https://github.com/spatie/image-optimizer.git", - "reference": "d997e01ba980b2769ddca2f00badd3b80c2a2512" + "reference": "62f7463483d1bd975f6f06025d89d42a29608fe1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/image-optimizer/zipball/d997e01ba980b2769ddca2f00badd3b80c2a2512", - "reference": "d997e01ba980b2769ddca2f00badd3b80c2a2512", + "url": "https://api.github.com/repos/spatie/image-optimizer/zipball/62f7463483d1bd975f6f06025d89d42a29608fe1", + "reference": "62f7463483d1bd975f6f06025d89d42a29608fe1", "shasum": "" }, "require": { "ext-fileinfo": "*", "php": "^7.3|^8.0", "psr/log": "^1.0 | ^2.0 | ^3.0", - "symfony/process": "^4.2|^5.0|^6.0" + "symfony/process": "^4.2|^5.0|^6.0|^7.0" }, "require-dev": { "pestphp/pest": "^1.21", "phpunit/phpunit": "^8.5.21|^9.4.4", - "symfony/var-dumper": "^4.2|^5.0|^6.0" + "symfony/var-dumper": "^4.2|^5.0|^6.0|^7.0" }, "type": "library", "autoload": { @@ -3811,32 +4026,32 @@ ], "support": { "issues": "https://github.com/spatie/image-optimizer/issues", - "source": "https://github.com/spatie/image-optimizer/tree/1.6.4" + "source": "https://github.com/spatie/image-optimizer/tree/1.7.2" }, - "time": "2023-03-10T08:43:19+00:00" + "time": "2023-11-03T10:08:02+00:00" }, { "name": "spatie/laravel-image-optimizer", - "version": "1.7.1", + "version": "1.8.0", "source": { "type": "git", "url": "https://github.com/spatie/laravel-image-optimizer.git", - "reference": "cd8945e47b9fd01bc7b770eecd57c56f46c47422" + "reference": "024752cba691fee3cd1800000b6aa3da3b8b2474" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-image-optimizer/zipball/cd8945e47b9fd01bc7b770eecd57c56f46c47422", - "reference": "cd8945e47b9fd01bc7b770eecd57c56f46c47422", + "url": "https://api.github.com/repos/spatie/laravel-image-optimizer/zipball/024752cba691fee3cd1800000b6aa3da3b8b2474", + "reference": "024752cba691fee3cd1800000b6aa3da3b8b2474", "shasum": "" }, "require": { - "laravel/framework": "^8.0|^9.0|^10.0", + "laravel/framework": "^8.0|^9.0|^10.0|^11.0", "php": "^8.0", "spatie/image-optimizer": "^1.2.0" }, "require-dev": { - "orchestra/testbench": "^6.23|^7.0|^8.0", - "phpunit/phpunit": "^9.4" + "orchestra/testbench": "^6.23|^7.0|^8.0|^9.0", + "phpunit/phpunit": "^9.4|^10.5" }, "type": "library", "extra": { @@ -3873,7 +4088,7 @@ "spatie" ], "support": { - "source": "https://github.com/spatie/laravel-image-optimizer/tree/1.7.1" + "source": "https://github.com/spatie/laravel-image-optimizer/tree/1.8.0" }, "funding": [ { @@ -3881,20 +4096,20 @@ "type": "custom" } ], - "time": "2023-01-24T23:44:33+00:00" + "time": "2024-02-29T10:55:08+00:00" }, { "name": "spatie/temporary-directory", - "version": "2.1.2", + "version": "2.2.1", "source": { "type": "git", "url": "https://github.com/spatie/temporary-directory.git", - "reference": "0c804873f6b4042aa8836839dca683c7d0f71831" + "reference": "76949fa18f8e1a7f663fd2eaa1d00e0bcea0752a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/temporary-directory/zipball/0c804873f6b4042aa8836839dca683c7d0f71831", - "reference": "0c804873f6b4042aa8836839dca683c7d0f71831", + "url": "https://api.github.com/repos/spatie/temporary-directory/zipball/76949fa18f8e1a7f663fd2eaa1d00e0bcea0752a", + "reference": "76949fa18f8e1a7f663fd2eaa1d00e0bcea0752a", "shasum": "" }, "require": { @@ -3930,7 +4145,7 @@ ], "support": { "issues": "https://github.com/spatie/temporary-directory/issues", - "source": "https://github.com/spatie/temporary-directory/tree/2.1.2" + "source": "https://github.com/spatie/temporary-directory/tree/2.2.1" }, "funding": [ { @@ -3942,20 +4157,20 @@ "type": "github" } ], - "time": "2023-04-28T07:47:42+00:00" + "time": "2023-12-25T11:46:58+00:00" }, { "name": "symfony/cache", - "version": "v6.3.1", + "version": "v6.4.4", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "52cff7608ef6e38376ac11bd1fbb0a220107f066" + "reference": "0ef36534694c572ff526d91c7181f3edede176e7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/52cff7608ef6e38376ac11bd1fbb0a220107f066", - "reference": "52cff7608ef6e38376ac11bd1fbb0a220107f066", + "url": "https://api.github.com/repos/symfony/cache/zipball/0ef36534694c572ff526d91c7181f3edede176e7", + "reference": "0ef36534694c572ff526d91c7181f3edede176e7", "shasum": "" }, "require": { @@ -3964,7 +4179,7 @@ "psr/log": "^1.1|^2|^3", "symfony/cache-contracts": "^2.5|^3", "symfony/service-contracts": "^2.5|^3", - "symfony/var-exporter": "^6.2.10" + "symfony/var-exporter": "^6.3.6|^7.0" }, "conflict": { "doctrine/dbal": "<2.13.1", @@ -3979,15 +4194,15 @@ }, "require-dev": { "cache/integration-tests": "dev-master", - "doctrine/dbal": "^2.13.1|^3.0", + "doctrine/dbal": "^2.13.1|^3|^4", "predis/predis": "^1.1|^2.0", "psr/simple-cache": "^1.0|^2.0|^3.0", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/filesystem": "^5.4|^6.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/messenger": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/filesystem": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/messenger": "^5.4|^6.0|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -4022,7 +4237,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v6.3.1" + "source": "https://github.com/symfony/cache/tree/v6.4.4" }, "funding": [ { @@ -4038,20 +4253,20 @@ "type": "tidelift" } ], - "time": "2023-06-24T11:51:27+00:00" + "time": "2024-02-22T20:27:10+00:00" }, { "name": "symfony/cache-contracts", - "version": "v3.3.0", + "version": "v3.4.0", "source": { "type": "git", "url": "https://github.com/symfony/cache-contracts.git", - "reference": "ad945640ccc0ae6e208bcea7d7de4b39b569896b" + "reference": "1d74b127da04ffa87aa940abe15446fa89653778" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/ad945640ccc0ae6e208bcea7d7de4b39b569896b", - "reference": "ad945640ccc0ae6e208bcea7d7de4b39b569896b", + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/1d74b127da04ffa87aa940abe15446fa89653778", + "reference": "1d74b127da04ffa87aa940abe15446fa89653778", "shasum": "" }, "require": { @@ -4098,7 +4313,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/cache-contracts/tree/v3.3.0" + "source": "https://github.com/symfony/cache-contracts/tree/v3.4.0" }, "funding": [ { @@ -4114,20 +4329,20 @@ "type": "tidelift" } ], - "time": "2023-05-23T14:45:45+00:00" + "time": "2023-09-25T12:52:38+00:00" }, { "name": "symfony/console", - "version": "v6.3.0", + "version": "v6.4.4", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "8788808b07cf0bdd6e4b7fdd23d8ddb1470c83b7" + "reference": "0d9e4eb5ad413075624378f474c4167ea202de78" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/8788808b07cf0bdd6e4b7fdd23d8ddb1470c83b7", - "reference": "8788808b07cf0bdd6e4b7fdd23d8ddb1470c83b7", + "url": "https://api.github.com/repos/symfony/console/zipball/0d9e4eb5ad413075624378f474c4167ea202de78", + "reference": "0d9e4eb5ad413075624378f474c4167ea202de78", "shasum": "" }, "require": { @@ -4135,7 +4350,7 @@ "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", "symfony/service-contracts": "^2.5|^3", - "symfony/string": "^5.4|^6.0" + "symfony/string": "^5.4|^6.0|^7.0" }, "conflict": { "symfony/dependency-injection": "<5.4", @@ -4149,12 +4364,16 @@ }, "require-dev": { "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" + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/lock": "^5.4|^6.0|^7.0", + "symfony/messenger": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -4188,7 +4407,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.3.0" + "source": "https://github.com/symfony/console/tree/v6.4.4" }, "funding": [ { @@ -4204,20 +4423,20 @@ "type": "tidelift" } ], - "time": "2023-05-29T12:49:39+00:00" + "time": "2024-02-22T20:27:10+00:00" }, { "name": "symfony/css-selector", - "version": "v6.3.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "88453e64cd86c5b60e8d2fb2c6f953bbc353ffbf" + "reference": "ee0f7ed5cf298cc019431bb3b3977ebc52b86229" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/88453e64cd86c5b60e8d2fb2c6f953bbc353ffbf", - "reference": "88453e64cd86c5b60e8d2fb2c6f953bbc353ffbf", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/ee0f7ed5cf298cc019431bb3b3977ebc52b86229", + "reference": "ee0f7ed5cf298cc019431bb3b3977ebc52b86229", "shasum": "" }, "require": { @@ -4253,7 +4472,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v6.3.0" + "source": "https://github.com/symfony/css-selector/tree/v6.4.3" }, "funding": [ { @@ -4269,11 +4488,11 @@ "type": "tidelift" } ], - "time": "2023-03-20T16:43:42+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.3.0", + "version": "v3.4.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", @@ -4320,7 +4539,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.3.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.4.0" }, "funding": [ { @@ -4340,30 +4559,31 @@ }, { "name": "symfony/error-handler", - "version": "v6.3.0", + "version": "v6.4.4", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "99d2d814a6351461af350ead4d963bd67451236f" + "reference": "c725219bdf2afc59423c32793d5019d2a904e13a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/99d2d814a6351461af350ead4d963bd67451236f", - "reference": "99d2d814a6351461af350ead4d963bd67451236f", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/c725219bdf2afc59423c32793d5019d2a904e13a", + "reference": "c725219bdf2afc59423c32793d5019d2a904e13a", "shasum": "" }, "require": { "php": ">=8.1", "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" + "symfony/var-dumper": "^5.4|^6.0|^7.0" }, "conflict": { - "symfony/deprecation-contracts": "<2.5" + "symfony/deprecation-contracts": "<2.5", + "symfony/http-kernel": "<6.4" }, "require-dev": { "symfony/deprecation-contracts": "^2.5|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" + "symfony/http-kernel": "^6.4|^7.0", + "symfony/serializer": "^5.4|^6.0|^7.0" }, "bin": [ "Resources/bin/patch-type-declarations" @@ -4394,7 +4614,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/v6.3.0" + "source": "https://github.com/symfony/error-handler/tree/v6.4.4" }, "funding": [ { @@ -4410,20 +4630,20 @@ "type": "tidelift" } ], - "time": "2023-05-10T12:03:13+00:00" + "time": "2024-02-22T20:27:10+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v6.3.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "3af8ac1a3f98f6dbc55e10ae59c9e44bfc38dfaa" + "reference": "ae9d3a6f3003a6caf56acd7466d8d52378d44fef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/3af8ac1a3f98f6dbc55e10ae59c9e44bfc38dfaa", - "reference": "3af8ac1a3f98f6dbc55e10ae59c9e44bfc38dfaa", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/ae9d3a6f3003a6caf56acd7466d8d52378d44fef", + "reference": "ae9d3a6f3003a6caf56acd7466d8d52378d44fef", "shasum": "" }, "require": { @@ -4440,13 +4660,13 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "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/config": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/error-handler": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^5.4|^6.0|^7.0", "symfony/service-contracts": "^2.5|^3", - "symfony/stopwatch": "^5.4|^6.0" + "symfony/stopwatch": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -4474,7 +4694,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/v6.3.0" + "source": "https://github.com/symfony/event-dispatcher/tree/v6.4.3" }, "funding": [ { @@ -4490,11 +4710,11 @@ "type": "tidelift" } ], - "time": "2023-04-21T14:41:17+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.3.0", + "version": "v3.4.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", @@ -4550,7 +4770,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.3.0" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.4.0" }, "funding": [ { @@ -4570,16 +4790,16 @@ }, { "name": "symfony/filesystem", - "version": "v6.3.1", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "edd36776956f2a6fcf577edb5b05eb0e3bdc52ae" + "reference": "7f3b1755eb49297a0827a7575d5d2b2fd11cc9fb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/edd36776956f2a6fcf577edb5b05eb0e3bdc52ae", - "reference": "edd36776956f2a6fcf577edb5b05eb0e3bdc52ae", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/7f3b1755eb49297a0827a7575d5d2b2fd11cc9fb", + "reference": "7f3b1755eb49297a0827a7575d5d2b2fd11cc9fb", "shasum": "" }, "require": { @@ -4613,7 +4833,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v6.3.1" + "source": "https://github.com/symfony/filesystem/tree/v6.4.3" }, "funding": [ { @@ -4629,27 +4849,27 @@ "type": "tidelift" } ], - "time": "2023-06-01T08:30:39+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/finder", - "version": "v6.3.0", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "d9b01ba073c44cef617c7907ce2419f8d00d75e2" + "reference": "11d736e97f116ac375a81f96e662911a34cd50ce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/d9b01ba073c44cef617c7907ce2419f8d00d75e2", - "reference": "d9b01ba073c44cef617c7907ce2419f8d00d75e2", + "url": "https://api.github.com/repos/symfony/finder/zipball/11d736e97f116ac375a81f96e662911a34cd50ce", + "reference": "11d736e97f116ac375a81f96e662911a34cd50ce", "shasum": "" }, "require": { "php": ">=8.1" }, "require-dev": { - "symfony/filesystem": "^6.0" + "symfony/filesystem": "^6.0|^7.0" }, "type": "library", "autoload": { @@ -4677,7 +4897,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v6.3.0" + "source": "https://github.com/symfony/finder/tree/v6.4.0" }, "funding": [ { @@ -4693,20 +4913,20 @@ "type": "tidelift" } ], - "time": "2023-04-02T01:25:41+00:00" + "time": "2023-10-31T17:30:12+00:00" }, { "name": "symfony/http-foundation", - "version": "v6.3.1", + "version": "v6.4.4", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "e0ad0d153e1c20069250986cd9e9dd1ccebb0d66" + "reference": "ebc713bc6e6f4b53f46539fc158be85dfcd77304" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/e0ad0d153e1c20069250986cd9e9dd1ccebb0d66", - "reference": "e0ad0d153e1c20069250986cd9e9dd1ccebb0d66", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ebc713bc6e6f4b53f46539fc158be85dfcd77304", + "reference": "ebc713bc6e6f4b53f46539fc158be85dfcd77304", "shasum": "" }, "require": { @@ -4716,17 +4936,17 @@ "symfony/polyfill-php83": "^1.27" }, "conflict": { - "symfony/cache": "<6.2" + "symfony/cache": "<6.3" }, "require-dev": { - "doctrine/dbal": "^2.13.1|^3.0", + "doctrine/dbal": "^2.13.1|^3|^4", "predis/predis": "^1.1|^2.0", - "symfony/cache": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4", - "symfony/mime": "^5.4|^6.0", - "symfony/rate-limiter": "^5.2|^6.0" + "symfony/cache": "^6.3|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4|^7.0", + "symfony/mime": "^5.4|^6.0|^7.0", + "symfony/rate-limiter": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -4754,7 +4974,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.3.1" + "source": "https://github.com/symfony/http-foundation/tree/v6.4.4" }, "funding": [ { @@ -4770,29 +4990,29 @@ "type": "tidelift" } ], - "time": "2023-06-24T11:51:27+00:00" + "time": "2024-02-08T15:01:18+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.3.1", + "version": "v6.4.5", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "161e16fd2e35fb4881a43bc8b383dfd5be4ac374" + "reference": "f6947cb939d8efee137797382cb4db1af653ef75" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/161e16fd2e35fb4881a43bc8b383dfd5be4ac374", - "reference": "161e16fd2e35fb4881a43bc8b383dfd5be4ac374", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/f6947cb939d8efee137797382cb4db1af653ef75", + "reference": "f6947cb939d8efee137797382cb4db1af653ef75", "shasum": "" }, "require": { "php": ">=8.1", "psr/log": "^1|^2|^3", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/error-handler": "^6.3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^6.2.7", + "symfony/error-handler": "^6.4|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^6.4|^7.0", "symfony/polyfill-ctype": "^1.8" }, "conflict": { @@ -4800,7 +5020,7 @@ "symfony/cache": "<5.4", "symfony/config": "<6.1", "symfony/console": "<5.4", - "symfony/dependency-injection": "<6.3", + "symfony/dependency-injection": "<6.4", "symfony/doctrine-bridge": "<5.4", "symfony/form": "<5.4", "symfony/http-client": "<5.4", @@ -4810,7 +5030,7 @@ "symfony/translation": "<5.4", "symfony/translation-contracts": "<2.5", "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", + "symfony/validator": "<6.4", "symfony/var-dumper": "<6.3", "twig/twig": "<2.13" }, @@ -4819,26 +5039,26 @@ }, "require-dev": { "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/clock": "^6.2", - "symfony/config": "^6.1", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^6.3", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", + "symfony/browser-kit": "^5.4|^6.0|^7.0", + "symfony/clock": "^6.2|^7.0", + "symfony/config": "^6.1|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/css-selector": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/dom-crawler": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0", "symfony/http-client-contracts": "^2.5|^3", - "symfony/process": "^5.4|^6.0", - "symfony/property-access": "^5.4.5|^6.0.5", - "symfony/routing": "^5.4|^6.0", - "symfony/serializer": "^6.3", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/property-access": "^5.4.5|^6.0.5|^7.0", + "symfony/routing": "^5.4|^6.0|^7.0", + "symfony/serializer": "^6.4.4|^7.0.4", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/translation": "^5.4|^6.0|^7.0", "symfony/translation-contracts": "^2.5|^3", - "symfony/uid": "^5.4|^6.0", - "symfony/validator": "^6.3", - "symfony/var-exporter": "^6.2", + "symfony/uid": "^5.4|^6.0|^7.0", + "symfony/validator": "^6.4|^7.0", + "symfony/var-exporter": "^6.2|^7.0", "twig/twig": "^2.13|^3.0.4" }, "type": "library", @@ -4867,7 +5087,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/v6.3.1" + "source": "https://github.com/symfony/http-kernel/tree/v6.4.5" }, "funding": [ { @@ -4883,20 +5103,20 @@ "type": "tidelift" } ], - "time": "2023-06-26T06:07:32+00:00" + "time": "2024-03-04T21:00:47+00:00" }, { "name": "symfony/mailer", - "version": "v6.3.0", + "version": "v6.4.4", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "7b03d9be1dea29bfec0a6c7b603f5072a4c97435" + "reference": "791c5d31a8204cf3db0c66faab70282307f4376b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/7b03d9be1dea29bfec0a6c7b603f5072a4c97435", - "reference": "7b03d9be1dea29bfec0a6c7b603f5072a4c97435", + "url": "https://api.github.com/repos/symfony/mailer/zipball/791c5d31a8204cf3db0c66faab70282307f4376b", + "reference": "791c5d31a8204cf3db0c66faab70282307f4376b", "shasum": "" }, "require": { @@ -4904,8 +5124,8 @@ "php": ">=8.1", "psr/event-dispatcher": "^1", "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/mime": "^6.2", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/mime": "^6.2|^7.0", "symfony/service-contracts": "^2.5|^3" }, "conflict": { @@ -4916,10 +5136,10 @@ "symfony/twig-bridge": "<6.2.1" }, "require-dev": { - "symfony/console": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/messenger": "^6.2", - "symfony/twig-bridge": "^6.2" + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/http-client": "^5.4|^6.0|^7.0", + "symfony/messenger": "^6.2|^7.0", + "symfony/twig-bridge": "^6.2|^7.0" }, "type": "library", "autoload": { @@ -4947,7 +5167,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v6.3.0" + "source": "https://github.com/symfony/mailer/tree/v6.4.4" }, "funding": [ { @@ -4963,24 +5183,25 @@ "type": "tidelift" } ], - "time": "2023-05-29T12:49:39+00:00" + "time": "2024-02-03T21:33:47+00:00" }, { "name": "symfony/mime", - "version": "v6.3.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "7b5d2121858cd6efbed778abce9cfdd7ab1f62ad" + "reference": "5017e0a9398c77090b7694be46f20eb796262a34" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/7b5d2121858cd6efbed778abce9cfdd7ab1f62ad", - "reference": "7b5d2121858cd6efbed778abce9cfdd7ab1f62ad", + "url": "https://api.github.com/repos/symfony/mime/zipball/5017e0a9398c77090b7694be46f20eb796262a34", + "reference": "5017e0a9398c77090b7694be46f20eb796262a34", "shasum": "" }, "require": { "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-intl-idn": "^1.10", "symfony/polyfill-mbstring": "^1.0" }, @@ -4989,16 +5210,16 @@ "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", "symfony/mailer": "<5.4", - "symfony/serializer": "<6.2" + "symfony/serializer": "<6.3.2" }, "require-dev": { "egulias/email-validator": "^2.1.10|^3.1|^4", "league/html-to-markdown": "^5.0", "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": "^6.2" + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/property-access": "^5.4|^6.0|^7.0", + "symfony/property-info": "^5.4|^6.0|^7.0", + "symfony/serializer": "^6.3.2|^7.0" }, "type": "library", "autoload": { @@ -5030,7 +5251,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v6.3.0" + "source": "https://github.com/symfony/mime/tree/v6.4.3" }, "funding": [ { @@ -5046,20 +5267,20 @@ "type": "tidelift" } ], - "time": "2023-04-28T15:57:00+00:00" + "time": "2024-01-30T08:32:12+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.27.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "5bbc823adecdae860bb64756d639ecfec17b050a" + "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a", - "reference": "5bbc823adecdae860bb64756d639ecfec17b050a", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ef4d7e442ca910c4764bce785146269b30cb5fc4", + "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4", "shasum": "" }, "require": { @@ -5073,9 +5294,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -5112,7 +5330,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.29.0" }, "funding": [ { @@ -5128,20 +5346,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.27.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "511a08c03c1960e08a883f4cffcacd219b758354" + "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/511a08c03c1960e08a883f4cffcacd219b758354", - "reference": "511a08c03c1960e08a883f4cffcacd219b758354", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/32a9da87d7b3245e09ac426c83d334ae9f06f80f", + "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f", "shasum": "" }, "require": { @@ -5152,9 +5370,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -5193,7 +5408,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.29.0" }, "funding": [ { @@ -5209,20 +5424,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.27.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "639084e360537a19f9ee352433b84ce831f3d2da" + "reference": "a287ed7475f85bf6f61890146edbc932c0fff919" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/639084e360537a19f9ee352433b84ce831f3d2da", - "reference": "639084e360537a19f9ee352433b84ce831f3d2da", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/a287ed7475f85bf6f61890146edbc932c0fff919", + "reference": "a287ed7475f85bf6f61890146edbc932c0fff919", "shasum": "" }, "require": { @@ -5235,9 +5450,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -5280,7 +5492,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.29.0" }, "funding": [ { @@ -5296,20 +5508,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.27.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6" + "reference": "bc45c394692b948b4d383a08d7753968bed9a83d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6", - "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/bc45c394692b948b4d383a08d7753968bed9a83d", + "reference": "bc45c394692b948b4d383a08d7753968bed9a83d", "shasum": "" }, "require": { @@ -5320,9 +5532,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -5364,7 +5573,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.29.0" }, "funding": [ { @@ -5380,20 +5589,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.27.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" + "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534", - "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec", + "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec", "shasum": "" }, "require": { @@ -5407,9 +5616,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -5447,7 +5653,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0" }, "funding": [ { @@ -5463,20 +5669,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-php72", - "version": "v1.27.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "869329b1e9894268a8a61dabb69153029b7a8c97" + "reference": "861391a8da9a04cbad2d232ddd9e4893220d6e25" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/869329b1e9894268a8a61dabb69153029b7a8c97", - "reference": "869329b1e9894268a8a61dabb69153029b7a8c97", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/861391a8da9a04cbad2d232ddd9e4893220d6e25", + "reference": "861391a8da9a04cbad2d232ddd9e4893220d6e25", "shasum": "" }, "require": { @@ -5484,9 +5690,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -5523,7 +5726,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-php72/tree/v1.29.0" }, "funding": [ { @@ -5539,20 +5742,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.27.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936" + "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", - "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", + "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", "shasum": "" }, "require": { @@ -5560,9 +5763,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -5606,7 +5806,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.29.0" }, "funding": [ { @@ -5622,20 +5822,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-php83", - "version": "v1.27.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php83.git", - "reference": "508c652ba3ccf69f8c97f251534f229791b52a57" + "reference": "86fcae159633351e5fd145d1c47de6c528f8caff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/508c652ba3ccf69f8c97f251534f229791b52a57", - "reference": "508c652ba3ccf69f8c97f251534f229791b52a57", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/86fcae159633351e5fd145d1c47de6c528f8caff", + "reference": "86fcae159633351e5fd145d1c47de6c528f8caff", "shasum": "" }, "require": { @@ -5644,9 +5844,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -5658,7 +5855,10 @@ ], "psr-4": { "Symfony\\Polyfill\\Php83\\": "" - } + }, + "classmap": [ + "Resources/stubs" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -5683,7 +5883,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php83/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-php83/tree/v1.29.0" }, "funding": [ { @@ -5699,20 +5899,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-uuid", - "version": "v1.27.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-uuid.git", - "reference": "f3cf1a645c2734236ed1e2e671e273eeb3586166" + "reference": "3abdd21b0ceaa3000ee950097bc3cf9efc137853" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/f3cf1a645c2734236ed1e2e671e273eeb3586166", - "reference": "f3cf1a645c2734236ed1e2e671e273eeb3586166", + "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/3abdd21b0ceaa3000ee950097bc3cf9efc137853", + "reference": "3abdd21b0ceaa3000ee950097bc3cf9efc137853", "shasum": "" }, "require": { @@ -5726,9 +5926,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -5765,7 +5962,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/polyfill-uuid/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-uuid/tree/v1.29.0" }, "funding": [ { @@ -5781,20 +5978,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/process", - "version": "v6.3.0", + "version": "v6.4.4", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "8741e3ed7fe2e91ec099e02446fb86667a0f1628" + "reference": "710e27879e9be3395de2b98da3f52a946039f297" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/8741e3ed7fe2e91ec099e02446fb86667a0f1628", - "reference": "8741e3ed7fe2e91ec099e02446fb86667a0f1628", + "url": "https://api.github.com/repos/symfony/process/zipball/710e27879e9be3395de2b98da3f52a946039f297", + "reference": "710e27879e9be3395de2b98da3f52a946039f297", "shasum": "" }, "require": { @@ -5826,7 +6023,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v6.3.0" + "source": "https://github.com/symfony/process/tree/v6.4.4" }, "funding": [ { @@ -5842,24 +6039,25 @@ "type": "tidelift" } ], - "time": "2023-05-19T08:06:44+00:00" + "time": "2024-02-20T12:31:00+00:00" }, { "name": "symfony/routing", - "version": "v6.3.1", + "version": "v6.4.5", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "d37ad1779c38b8eb71996d17dc13030dcb7f9cf5" + "reference": "7fe30068e207d9c31c0138501ab40358eb2d49a4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/d37ad1779c38b8eb71996d17dc13030dcb7f9cf5", - "reference": "d37ad1779c38b8eb71996d17dc13030dcb7f9cf5", + "url": "https://api.github.com/repos/symfony/routing/zipball/7fe30068e207d9c31c0138501ab40358eb2d49a4", + "reference": "7fe30068e207d9c31c0138501ab40358eb2d49a4", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3" }, "conflict": { "doctrine/annotations": "<1.12", @@ -5870,11 +6068,11 @@ "require-dev": { "doctrine/annotations": "^1.12|^2", "psr/log": "^1|^2|^3", - "symfony/config": "^6.2", - "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" + "symfony/config": "^6.2|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^5.4|^6.0|^7.0", + "symfony/yaml": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -5908,7 +6106,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v6.3.1" + "source": "https://github.com/symfony/routing/tree/v6.4.5" }, "funding": [ { @@ -5924,25 +6122,25 @@ "type": "tidelift" } ], - "time": "2023-06-05T15:30:22+00:00" + "time": "2024-02-27T12:33:30+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.3.0", + "version": "v3.4.1", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4" + "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/40da9cc13ec349d9e4966ce18b5fbcd724ab10a4", - "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/fe07cbc8d837f60caf7018068e350cc5163681a0", + "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0", "shasum": "" }, "require": { "php": ">=8.1", - "psr/container": "^2.0" + "psr/container": "^1.1|^2.0" }, "conflict": { "ext-psr": "<1.1|>=2" @@ -5990,7 +6188,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.3.0" + "source": "https://github.com/symfony/service-contracts/tree/v3.4.1" }, "funding": [ { @@ -6006,20 +6204,20 @@ "type": "tidelift" } ], - "time": "2023-05-23T14:45:45+00:00" + "time": "2023-12-26T14:02:43+00:00" }, { "name": "symfony/string", - "version": "v6.3.0", + "version": "v6.4.4", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "f2e190ee75ff0f5eced645ec0be5c66fac81f51f" + "reference": "4e465a95bdc32f49cf4c7f07f751b843bbd6dcd9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/f2e190ee75ff0f5eced645ec0be5c66fac81f51f", - "reference": "f2e190ee75ff0f5eced645ec0be5c66fac81f51f", + "url": "https://api.github.com/repos/symfony/string/zipball/4e465a95bdc32f49cf4c7f07f751b843bbd6dcd9", + "reference": "4e465a95bdc32f49cf4c7f07f751b843bbd6dcd9", "shasum": "" }, "require": { @@ -6033,11 +6231,11 @@ "symfony/translation-contracts": "<2.5" }, "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/intl": "^6.2", + "symfony/error-handler": "^5.4|^6.0|^7.0", + "symfony/http-client": "^5.4|^6.0|^7.0", + "symfony/intl": "^6.2|^7.0", "symfony/translation-contracts": "^2.5|^3.0", - "symfony/var-exporter": "^5.4|^6.0" + "symfony/var-exporter": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -6076,7 +6274,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.3.0" + "source": "https://github.com/symfony/string/tree/v6.4.4" }, "funding": [ { @@ -6092,24 +6290,25 @@ "type": "tidelift" } ], - "time": "2023-03-21T21:06:29+00:00" + "time": "2024-02-01T13:16:41+00:00" }, { "name": "symfony/translation", - "version": "v6.3.0", + "version": "v6.4.4", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "f72b2cba8f79dd9d536f534f76874b58ad37876f" + "reference": "bce6a5a78e94566641b2594d17e48b0da3184a8e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/f72b2cba8f79dd9d536f534f76874b58ad37876f", - "reference": "f72b2cba8f79dd9d536f534f76874b58ad37876f", + "url": "https://api.github.com/repos/symfony/translation/zipball/bce6a5a78e94566641b2594d17e48b0da3184a8e", + "reference": "bce6a5a78e94566641b2594d17e48b0da3184a8e", "shasum": "" }, "require": { "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", "symfony/translation-contracts": "^2.5|^3.0" }, @@ -6127,19 +6326,19 @@ "symfony/translation-implementation": "2.3|3.0" }, "require-dev": { - "nikic/php-parser": "^4.13", + "nikic/php-parser": "^4.18|^5.0", "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0", "symfony/http-client-contracts": "^2.5|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/intl": "^5.4|^6.0|^7.0", "symfony/polyfill-intl-icu": "^1.21", - "symfony/routing": "^5.4|^6.0", + "symfony/routing": "^5.4|^6.0|^7.0", "symfony/service-contracts": "^2.5|^3", - "symfony/yaml": "^5.4|^6.0" + "symfony/yaml": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -6170,7 +6369,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v6.3.0" + "source": "https://github.com/symfony/translation/tree/v6.4.4" }, "funding": [ { @@ -6186,20 +6385,20 @@ "type": "tidelift" } ], - "time": "2023-05-19T12:46:45+00:00" + "time": "2024-02-20T13:16:58+00:00" }, { "name": "symfony/translation-contracts", - "version": "v3.3.0", + "version": "v3.4.1", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "02c24deb352fb0d79db5486c0c79905a85e37e86" + "reference": "06450585bf65e978026bda220cdebca3f867fde7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/02c24deb352fb0d79db5486c0c79905a85e37e86", - "reference": "02c24deb352fb0d79db5486c0c79905a85e37e86", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/06450585bf65e978026bda220cdebca3f867fde7", + "reference": "06450585bf65e978026bda220cdebca3f867fde7", "shasum": "" }, "require": { @@ -6248,7 +6447,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.3.0" + "source": "https://github.com/symfony/translation-contracts/tree/v3.4.1" }, "funding": [ { @@ -6264,20 +6463,20 @@ "type": "tidelift" } ], - "time": "2023-05-30T17:17:10+00:00" + "time": "2023-12-26T14:02:43+00:00" }, { "name": "symfony/uid", - "version": "v6.3.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/uid.git", - "reference": "01b0f20b1351d997711c56f1638f7a8c3061e384" + "reference": "1d31267211cc3a2fff32bcfc7c1818dac41b6fc0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/uid/zipball/01b0f20b1351d997711c56f1638f7a8c3061e384", - "reference": "01b0f20b1351d997711c56f1638f7a8c3061e384", + "url": "https://api.github.com/repos/symfony/uid/zipball/1d31267211cc3a2fff32bcfc7c1818dac41b6fc0", + "reference": "1d31267211cc3a2fff32bcfc7c1818dac41b6fc0", "shasum": "" }, "require": { @@ -6285,7 +6484,7 @@ "symfony/polyfill-uuid": "^1.15" }, "require-dev": { - "symfony/console": "^5.4|^6.0" + "symfony/console": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -6322,7 +6521,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/uid/tree/v6.3.0" + "source": "https://github.com/symfony/uid/tree/v6.4.3" }, "funding": [ { @@ -6338,24 +6537,25 @@ "type": "tidelift" } ], - "time": "2023-04-08T07:25:02+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/var-dumper", - "version": "v6.3.1", + "version": "v6.4.4", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "c81268d6960ddb47af17391a27d222bd58cf0515" + "reference": "b439823f04c98b84d4366c79507e9da6230944b1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/c81268d6960ddb47af17391a27d222bd58cf0515", - "reference": "c81268d6960ddb47af17391a27d222bd58cf0515", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/b439823f04c98b84d4366c79507e9da6230944b1", + "reference": "b439823f04c98b84d4366c79507e9da6230944b1", "shasum": "" }, "require": { "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0" }, "conflict": { @@ -6363,9 +6563,11 @@ }, "require-dev": { "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/error-handler": "^6.3|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/uid": "^5.4|^6.0|^7.0", "twig/twig": "^2.13|^3.0.4" }, "bin": [ @@ -6404,7 +6606,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.3.1" + "source": "https://github.com/symfony/var-dumper/tree/v6.4.4" }, "funding": [ { @@ -6420,27 +6622,28 @@ "type": "tidelift" } ], - "time": "2023-06-21T12:08:28+00:00" + "time": "2024-02-15T11:23:52+00:00" }, { "name": "symfony/var-exporter", - "version": "v6.3.0", + "version": "v6.4.4", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "db5416d04269f2827d8c54331ba4cfa42620d350" + "reference": "0bd342e24aef49fc82a21bd4eedd3e665d177e5b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/db5416d04269f2827d8c54331ba4cfa42620d350", - "reference": "db5416d04269f2827d8c54331ba4cfa42620d350", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/0bd342e24aef49fc82a21bd4eedd3e665d177e5b", + "reference": "0bd342e24aef49fc82a21bd4eedd3e665d177e5b", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3" }, "require-dev": { - "symfony/var-dumper": "^5.4|^6.0" + "symfony/var-dumper": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -6478,7 +6681,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v6.3.0" + "source": "https://github.com/symfony/var-exporter/tree/v6.4.4" }, "funding": [ { @@ -6494,27 +6697,27 @@ "type": "tidelift" } ], - "time": "2023-04-21T08:48:44+00:00" + "time": "2024-02-26T08:37:45+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.6", + "version": "v2.2.7", "source": { "type": "git", "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "c42125b83a4fa63b187fdf29f9c93cb7733da30c" + "reference": "83ee6f38df0a63106a9e4536e3060458b74ccedb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/c42125b83a4fa63b187fdf29f9c93cb7733da30c", - "reference": "c42125b83a4fa63b187fdf29f9c93cb7733da30c", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/83ee6f38df0a63106a9e4536e3060458b74ccedb", + "reference": "83ee6f38df0a63106a9e4536e3060458b74ccedb", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" + "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0" }, "require-dev": { "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" @@ -6545,37 +6748,37 @@ "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", "support": { "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.6" + "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/v2.2.7" }, - "time": "2023-01-03T09:29:04+00:00" + "time": "2023-12-08T13:03:43+00:00" }, { "name": "vlucas/phpdotenv", - "version": "v5.5.0", + "version": "v5.6.0", "source": { "type": "git", "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7" + "reference": "2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7", - "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4", + "reference": "2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4", "shasum": "" }, "require": { "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" + "graham-campbell/result-type": "^1.1.2", + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.2", + "symfony/polyfill-ctype": "^1.24", + "symfony/polyfill-mbstring": "^1.24", + "symfony/polyfill-php80": "^1.24" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", + "bamarni/composer-bin-plugin": "^1.8.2", "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.30 || ^9.5.25" + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" }, "suggest": { "ext-filter": "Required to use the boolean validator." @@ -6587,7 +6790,7 @@ "forward-command": true }, "branch-alias": { - "dev-master": "5.5-dev" + "dev-master": "5.6-dev" } }, "autoload": { @@ -6619,7 +6822,7 @@ ], "support": { "issues": "https://github.com/vlucas/phpdotenv/issues", - "source": "https://github.com/vlucas/phpdotenv/tree/v5.5.0" + "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.0" }, "funding": [ { @@ -6631,7 +6834,7 @@ "type": "tidelift" } ], - "time": "2022-10-16T01:01:54+00:00" + "time": "2023-11-12T22:43:29+00:00" }, { "name": "voku/portable-ascii", @@ -6769,48 +6972,48 @@ "packages-dev": [ { "name": "barryvdh/laravel-ide-helper", - "version": "v2.13.0", + "version": "v3.0.0", "source": { "type": "git", "url": "https://github.com/barryvdh/laravel-ide-helper.git", - "reference": "81d5b223ff067a1f38e14c100997e153b837fe4a" + "reference": "bc1d67f01ce8c77e3f97d48ba51fa1d81874f622" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/81d5b223ff067a1f38e14c100997e153b837fe4a", - "reference": "81d5b223ff067a1f38e14c100997e153b837fe4a", + "url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/bc1d67f01ce8c77e3f97d48ba51fa1d81874f622", + "reference": "bc1d67f01ce8c77e3f97d48ba51fa1d81874f622", "shasum": "" }, "require": { - "barryvdh/reflection-docblock": "^2.0.6", + "barryvdh/reflection-docblock": "^2.1.1", "composer/class-map-generator": "^1.0", - "doctrine/dbal": "^2.6 || ^3", "ext-json": "*", - "illuminate/console": "^8 || ^9 || ^10", - "illuminate/filesystem": "^8 || ^9 || ^10", - "illuminate/support": "^8 || ^9 || ^10", - "nikic/php-parser": "^4.7", - "php": "^7.3 || ^8.0", + "illuminate/console": "^10 || ^11", + "illuminate/database": "^10.38 || ^11", + "illuminate/filesystem": "^10 || ^11", + "illuminate/support": "^10 || ^11", + "nikic/php-parser": "^4.18 || ^5", + "php": "^8.1", "phpdocumentor/type-resolver": "^1.1.0" }, "require-dev": { "ext-pdo_sqlite": "*", - "friendsofphp/php-cs-fixer": "^2", - "illuminate/config": "^8 || ^9 || ^10", - "illuminate/view": "^8 || ^9 || ^10", + "friendsofphp/php-cs-fixer": "^3", + "illuminate/config": "^9 || ^10 || ^11", + "illuminate/view": "^9 || ^10 || ^11", "mockery/mockery": "^1.4", - "orchestra/testbench": "^6 || ^7 || ^8", - "phpunit/phpunit": "^8.5 || ^9", - "spatie/phpunit-snapshot-assertions": "^3 || ^4", - "vimeo/psalm": "^3.12" + "orchestra/testbench": "^8 || ^9", + "phpunit/phpunit": "^10.5", + "spatie/phpunit-snapshot-assertions": "^4 || ^5", + "vimeo/psalm": "^5.4" }, "suggest": { - "illuminate/events": "Required for automatic helper generation (^6|^7|^8|^9|^10)." + "illuminate/events": "Required for automatic helper generation (^6|^7|^8|^9|^10|^11)." }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.12-dev" + "dev-master": "3.0-dev" }, "laravel": { "providers": [ @@ -6847,7 +7050,7 @@ ], "support": { "issues": "https://github.com/barryvdh/laravel-ide-helper/issues", - "source": "https://github.com/barryvdh/laravel-ide-helper/tree/v2.13.0" + "source": "https://github.com/barryvdh/laravel-ide-helper/tree/v3.0.0" }, "funding": [ { @@ -6859,7 +7062,7 @@ "type": "github" } ], - "time": "2023-02-04T13:56:40+00:00" + "time": "2024-03-01T12:53:18+00:00" }, { "name": "barryvdh/reflection-docblock", @@ -6915,16 +7118,16 @@ }, { "name": "composer/class-map-generator", - "version": "1.1.0", + "version": "1.1.1", "source": { "type": "git", "url": "https://github.com/composer/class-map-generator.git", - "reference": "953cc4ea32e0c31f2185549c7d216d7921f03da9" + "reference": "8286a62d243312ed99b3eee20d5005c961adb311" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/class-map-generator/zipball/953cc4ea32e0c31f2185549c7d216d7921f03da9", - "reference": "953cc4ea32e0c31f2185549c7d216d7921f03da9", + "url": "https://api.github.com/repos/composer/class-map-generator/zipball/8286a62d243312ed99b3eee20d5005c961adb311", + "reference": "8286a62d243312ed99b3eee20d5005c961adb311", "shasum": "" }, "require": { @@ -6968,7 +7171,7 @@ ], "support": { "issues": "https://github.com/composer/class-map-generator/issues", - "source": "https://github.com/composer/class-map-generator/tree/1.1.0" + "source": "https://github.com/composer/class-map-generator/tree/1.1.1" }, "funding": [ { @@ -6984,20 +7187,20 @@ "type": "tidelift" } ], - "time": "2023-06-30T13:58:57+00:00" + "time": "2024-03-15T12:53:41+00:00" }, { "name": "composer/pcre", - "version": "3.1.0", + "version": "3.1.3", "source": { "type": "git", "url": "https://github.com/composer/pcre.git", - "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2" + "reference": "5b16e25a5355f1f3afdfc2f954a0a80aec4826a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", - "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", + "url": "https://api.github.com/repos/composer/pcre/zipball/5b16e25a5355f1f3afdfc2f954a0a80aec4826a8", + "reference": "5b16e25a5355f1f3afdfc2f954a0a80aec4826a8", "shasum": "" }, "require": { @@ -7039,7 +7242,7 @@ ], "support": { "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/3.1.0" + "source": "https://github.com/composer/pcre/tree/3.1.3" }, "funding": [ { @@ -7055,229 +7258,24 @@ "type": "tidelift" } ], - "time": "2022-11-17T09:50:14+00:00" + "time": "2024-03-19T10:26:25+00:00" }, { - "name": "doctrine/cache", - "version": "2.2.0", + "name": "doctrine/deprecations", + "version": "1.1.3", "source": { "type": "git", - "url": "https://github.com/doctrine/cache.git", - "reference": "1ca8f21980e770095a31456042471a57bc4c68fb" + "url": "https://github.com/doctrine/deprecations.git", + "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/cache/zipball/1ca8f21980e770095a31456042471a57bc4c68fb", - "reference": "1ca8f21980e770095a31456042471a57bc4c68fb", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", + "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", "shasum": "" }, "require": { - "php": "~7.1 || ^8.0" - }, - "conflict": { - "doctrine/common": ">2.2,<2.4" - }, - "require-dev": { - "cache/integration-tests": "dev-master", - "doctrine/coding-standard": "^9", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "psr/cache": "^1.0 || ^2.0 || ^3.0", - "symfony/cache": "^4.4 || ^5.4 || ^6", - "symfony/var-exporter": "^4.4 || ^5.4 || ^6" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.", - "homepage": "https://www.doctrine-project.org/projects/cache.html", - "keywords": [ - "abstraction", - "apcu", - "cache", - "caching", - "couchdb", - "memcached", - "php", - "redis", - "xcache" - ], - "support": { - "issues": "https://github.com/doctrine/cache/issues", - "source": "https://github.com/doctrine/cache/tree/2.2.0" - }, - "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%2Fcache", - "type": "tidelift" - } - ], - "time": "2022-05-20T20:07:39+00:00" - }, - { - "name": "doctrine/dbal", - "version": "3.6.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/dbal.git", - "reference": "19f0dec95edd6a3c3c5ff1d188ea94c6b7fc903f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/19f0dec95edd6a3c3c5ff1d188ea94c6b7fc903f", - "reference": "19f0dec95edd6a3c3c5ff1d188ea94c6b7fc903f", - "shasum": "" - }, - "require": { - "composer-runtime-api": "^2", - "doctrine/cache": "^1.11|^2.0", - "doctrine/deprecations": "^0.5.3|^1", - "doctrine/event-manager": "^1|^2", - "php": "^7.4 || ^8.0", - "psr/cache": "^1|^2|^3", - "psr/log": "^1|^2|^3" - }, - "require-dev": { - "doctrine/coding-standard": "12.0.0", - "fig/log-test": "^1", - "jetbrains/phpstorm-stubs": "2022.3", - "phpstan/phpstan": "1.10.14", - "phpstan/phpstan-strict-rules": "^1.5", - "phpunit/phpunit": "9.6.7", - "psalm/plugin-phpunit": "0.18.4", - "squizlabs/php_codesniffer": "3.7.2", - "symfony/cache": "^5.4|^6.0", - "symfony/console": "^4.4|^5.4|^6.0", - "vimeo/psalm": "4.30.0" - }, - "suggest": { - "symfony/console": "For helpful console commands such as SQL execution and import of files." - }, - "bin": [ - "bin/doctrine-dbal" - ], - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\DBAL\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - } - ], - "description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.", - "homepage": "https://www.doctrine-project.org/projects/dbal.html", - "keywords": [ - "abstraction", - "database", - "db2", - "dbal", - "mariadb", - "mssql", - "mysql", - "oci8", - "oracle", - "pdo", - "pgsql", - "postgresql", - "queryobject", - "sasql", - "sql", - "sqlite", - "sqlserver", - "sqlsrv" - ], - "support": { - "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.6.4" - }, - "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%2Fdbal", - "type": "tidelift" - } - ], - "time": "2023-06-15T07:40:12+00:00" - }, - { - "name": "doctrine/deprecations", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/doctrine/deprecations.git", - "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/612a3ee5ab0d5dd97b7cf3874a6efe24325efac3", - "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" + "php": "^7.1 || ^8.0" }, "require-dev": { "doctrine/coding-standard": "^9", @@ -7305,183 +7303,22 @@ "homepage": "https://www.doctrine-project.org/", "support": { "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/v1.1.1" - }, - "time": "2023-06-03T09:27:29+00:00" - }, - { - "name": "doctrine/event-manager", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/event-manager.git", - "reference": "750671534e0241a7c50ea5b43f67e23eb5c96f32" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/event-manager/zipball/750671534e0241a7c50ea5b43f67e23eb5c96f32", - "reference": "750671534e0241a7c50ea5b43f67e23eb5c96f32", - "shasum": "" - }, - "require": { - "php": "^8.1" - }, - "conflict": { - "doctrine/common": "<2.9" - }, - "require-dev": { - "doctrine/coding-standard": "^10", - "phpstan/phpstan": "^1.8.8", - "phpunit/phpunit": "^9.5", - "vimeo/psalm": "^4.28" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - }, - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - } - ], - "description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.", - "homepage": "https://www.doctrine-project.org/projects/event-manager.html", - "keywords": [ - "event", - "event dispatcher", - "event manager", - "event system", - "events" - ], - "support": { - "issues": "https://github.com/doctrine/event-manager/issues", - "source": "https://github.com/doctrine/event-manager/tree/2.0.0" - }, - "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%2Fevent-manager", - "type": "tidelift" - } - ], - "time": "2022-10-12T20:59:15+00:00" - }, - { - "name": "doctrine/instantiator", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", - "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", - "shasum": "" - }, - "require": { - "php": "^8.1" - }, - "require-dev": { - "doctrine/coding-standard": "^11", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^1.2", - "phpstan/phpstan": "^1.9.4", - "phpstan/phpstan-phpunit": "^1.3", - "phpunit/phpunit": "^9.5.27", - "vimeo/psalm": "^5.4" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } + "source": "https://github.com/doctrine/deprecations/tree/1.1.3" }, - "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/2.0.0" - }, - "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-12-30T00:23:10+00:00" + "time": "2024-01-30T19:34:25+00:00" }, { "name": "fakerphp/faker", - "version": "v1.23.0", + "version": "v1.23.1", "source": { "type": "git", "url": "https://github.com/FakerPHP/Faker.git", - "reference": "e3daa170d00fde61ea7719ef47bb09bb8f1d9b01" + "reference": "bfb4fe148adbf78eff521199619b93a52ae3554b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/e3daa170d00fde61ea7719ef47bb09bb8f1d9b01", - "reference": "e3daa170d00fde61ea7719ef47bb09bb8f1d9b01", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/bfb4fe148adbf78eff521199619b93a52ae3554b", + "reference": "bfb4fe148adbf78eff521199619b93a52ae3554b", "shasum": "" }, "require": { @@ -7507,11 +7344,6 @@ "ext-mbstring": "Required for multibyte Unicode string functionality." }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.21-dev" - } - }, "autoload": { "psr-4": { "Faker\\": "src/Faker/" @@ -7534,22 +7366,22 @@ ], "support": { "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.23.0" + "source": "https://github.com/FakerPHP/Faker/tree/v1.23.1" }, - "time": "2023-06-12T08:44:38+00:00" + "time": "2024-01-02T13:46:09+00:00" }, { "name": "filp/whoops", - "version": "2.15.2", + "version": "2.15.4", "source": { "type": "git", "url": "https://github.com/filp/whoops.git", - "reference": "aac9304c5ed61bf7b1b7a6064bf9806ab842ce73" + "reference": "a139776fa3f5985a50b509f2a02ff0f709d2a546" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/aac9304c5ed61bf7b1b7a6064bf9806ab842ce73", - "reference": "aac9304c5ed61bf7b1b7a6064bf9806ab842ce73", + "url": "https://api.github.com/repos/filp/whoops/zipball/a139776fa3f5985a50b509f2a02ff0f709d2a546", + "reference": "a139776fa3f5985a50b509f2a02ff0f709d2a546", "shasum": "" }, "require": { @@ -7599,7 +7431,7 @@ ], "support": { "issues": "https://github.com/filp/whoops/issues", - "source": "https://github.com/filp/whoops/tree/2.15.2" + "source": "https://github.com/filp/whoops/tree/2.15.4" }, "funding": [ { @@ -7607,7 +7439,7 @@ "type": "github" } ], - "time": "2023-04-12T12:00:00+00:00" + "time": "2023-11-03T12:00:00+00:00" }, { "name": "hamcrest/hamcrest-php", @@ -7662,16 +7494,16 @@ }, { "name": "laravel/pint", - "version": "v1.10.3", + "version": "v1.14.0", "source": { "type": "git", "url": "https://github.com/laravel/pint.git", - "reference": "c472786bca01e4812a9bb7933b23edfc5b6877b7" + "reference": "6b127276e3f263f7bb17d5077e9e0269e61b2a0e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/pint/zipball/c472786bca01e4812a9bb7933b23edfc5b6877b7", - "reference": "c472786bca01e4812a9bb7933b23edfc5b6877b7", + "url": "https://api.github.com/repos/laravel/pint/zipball/6b127276e3f263f7bb17d5077e9e0269e61b2a0e", + "reference": "6b127276e3f263f7bb17d5077e9e0269e61b2a0e", "shasum": "" }, "require": { @@ -7682,13 +7514,13 @@ "php": "^8.1.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^3.18.0", - "illuminate/view": "^10.5.1", - "laravel-zero/framework": "^10.0.2", - "mockery/mockery": "^1.5.1", - "nunomaduro/larastan": "^2.5.1", + "friendsofphp/php-cs-fixer": "^3.49.0", + "illuminate/view": "^10.43.0", + "larastan/larastan": "^2.8.1", + "laravel-zero/framework": "^10.3.0", + "mockery/mockery": "^1.6.7", "nunomaduro/termwind": "^1.15.1", - "pestphp/pest": "^2.4.0" + "pestphp/pest": "^2.33.6" }, "bin": [ "builds/pint" @@ -7724,31 +7556,31 @@ "issues": "https://github.com/laravel/pint/issues", "source": "https://github.com/laravel/pint" }, - "time": "2023-06-20T15:55:03+00:00" + "time": "2024-02-20T17:38:05+00:00" }, { "name": "laravel/sail", - "version": "v1.23.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/laravel/sail.git", - "reference": "a2e046f748e87d3ef8b2b381e0e5c5a11f34e46b" + "reference": "e40cc7ffb5186c45698dbd47e9477e0e429396d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/a2e046f748e87d3ef8b2b381e0e5c5a11f34e46b", - "reference": "a2e046f748e87d3ef8b2b381e0e5c5a11f34e46b", + "url": "https://api.github.com/repos/laravel/sail/zipball/e40cc7ffb5186c45698dbd47e9477e0e429396d0", + "reference": "e40cc7ffb5186c45698dbd47e9477e0e429396d0", "shasum": "" }, "require": { - "illuminate/console": "^8.0|^9.0|^10.0", - "illuminate/contracts": "^8.0|^9.0|^10.0", - "illuminate/support": "^8.0|^9.0|^10.0", + "illuminate/console": "^9.52.16|^10.0|^11.0", + "illuminate/contracts": "^9.52.16|^10.0|^11.0", + "illuminate/support": "^9.52.16|^10.0|^11.0", "php": "^8.0", - "symfony/yaml": "^6.0" + "symfony/yaml": "^6.0|^7.0" }, "require-dev": { - "orchestra/testbench": "^6.0|^7.0|^8.0", + "orchestra/testbench": "^7.0|^8.0|^9.0", "phpstan/phpstan": "^1.10" }, "bin": [ @@ -7756,9 +7588,6 @@ ], "type": "library", "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - }, "laravel": { "providers": [ "Laravel\\Sail\\SailServiceProvider" @@ -7789,41 +7618,35 @@ "issues": "https://github.com/laravel/sail/issues", "source": "https://github.com/laravel/sail" }, - "time": "2023-06-16T21:20:12+00:00" + "time": "2024-03-08T16:32:33+00:00" }, { "name": "mockery/mockery", - "version": "1.6.2", + "version": "1.6.9", "source": { "type": "git", "url": "https://github.com/mockery/mockery.git", - "reference": "13a7fa2642c76c58fa2806ef7f565344c817a191" + "reference": "0cc058854b3195ba21dc6b1f7b1f60f4ef3a9c06" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/13a7fa2642c76c58fa2806ef7f565344c817a191", - "reference": "13a7fa2642c76c58fa2806ef7f565344c817a191", + "url": "https://api.github.com/repos/mockery/mockery/zipball/0cc058854b3195ba21dc6b1f7b1f60f4ef3a9c06", + "reference": "0cc058854b3195ba21dc6b1f7b1f60f4ef3a9c06", "shasum": "" }, "require": { "hamcrest/hamcrest-php": "^2.0.1", "lib-pcre": ">=7.0", - "php": "^7.4 || ^8.0" + "php": ">=7.3" }, "conflict": { "phpunit/phpunit": "<8.0" }, "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3", - "psalm/plugin-phpunit": "^0.18", - "vimeo/psalm": "^5.9" + "phpunit/phpunit": "^8.5 || ^9.6.10", + "symplify/easy-coding-standard": "^12.0.8" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.6.x-dev" - } - }, "autoload": { "files": [ "library/helpers.php", @@ -7841,12 +7664,20 @@ { "name": "Pádraic Brady", "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" + "homepage": "https://github.com/padraic", + "role": "Author" }, { "name": "Dave Marshall", "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" + "homepage": "https://davedevelopment.co.uk", + "role": "Developer" + }, + { + "name": "Nathanael Esayeas", + "email": "nathanael.esayeas@protonmail.com", + "homepage": "https://github.com/ghostwriter", + "role": "Lead Developer" } ], "description": "Mockery is a simple yet flexible PHP mock object framework", @@ -7864,10 +7695,13 @@ "testing" ], "support": { + "docs": "https://docs.mockery.io/", "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.6.2" + "rss": "https://github.com/mockery/mockery/releases.atom", + "security": "https://github.com/mockery/mockery/security/advisories", + "source": "https://github.com/mockery/mockery" }, - "time": "2023-06-07T09:07:52+00:00" + "time": "2023-12-10T02:24:34+00:00" }, { "name": "myclabs/deep-copy", @@ -7930,38 +7764,43 @@ }, { "name": "nunomaduro/collision", - "version": "v6.4.0", + "version": "v7.10.0", "source": { "type": "git", "url": "https://github.com/nunomaduro/collision.git", - "reference": "f05978827b9343cba381ca05b8c7deee346b6015" + "reference": "49ec67fa7b002712da8526678abd651c09f375b2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/f05978827b9343cba381ca05b8c7deee346b6015", - "reference": "f05978827b9343cba381ca05b8c7deee346b6015", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/49ec67fa7b002712da8526678abd651c09f375b2", + "reference": "49ec67fa7b002712da8526678abd651c09f375b2", "shasum": "" }, "require": { - "filp/whoops": "^2.14.5", - "php": "^8.0.0", - "symfony/console": "^6.0.2" + "filp/whoops": "^2.15.3", + "nunomaduro/termwind": "^1.15.1", + "php": "^8.1.0", + "symfony/console": "^6.3.4" + }, + "conflict": { + "laravel/framework": ">=11.0.0" }, "require-dev": { - "brianium/paratest": "^6.4.1", - "laravel/framework": "^9.26.1", - "laravel/pint": "^1.1.1", - "nunomaduro/larastan": "^1.0.3", - "nunomaduro/mock-final-classes": "^1.1.0", - "orchestra/testbench": "^7.7", - "phpunit/phpunit": "^9.5.23", - "spatie/ignition": "^1.4.1" + "brianium/paratest": "^7.3.0", + "laravel/framework": "^10.28.0", + "laravel/pint": "^1.13.3", + "laravel/sail": "^1.25.0", + "laravel/sanctum": "^3.3.1", + "laravel/tinker": "^2.8.2", + "nunomaduro/larastan": "^2.6.4", + "orchestra/testbench-core": "^8.13.0", + "pestphp/pest": "^2.23.2", + "phpunit/phpunit": "^10.4.1", + "sebastian/environment": "^6.0.1", + "spatie/laravel-ignition": "^2.3.1" }, "type": "library", "extra": { - "branch-alias": { - "dev-develop": "6.x-dev" - }, "laravel": { "providers": [ "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" @@ -7969,6 +7808,9 @@ } }, "autoload": { + "files": [ + "./src/Adapters/Phpunit/Autoload.php" + ], "psr-4": { "NunoMaduro\\Collision\\": "src/" } @@ -8014,24 +7856,25 @@ "type": "patreon" } ], - "time": "2023-01-03T12:54:54+00:00" + "time": "2023-10-11T15:45:01+00:00" }, { "name": "phar-io/manifest", - "version": "2.0.3", + "version": "2.0.4", "source": { "type": "git", "url": "https://github.com/phar-io/manifest.git", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53" + "reference": "54750ef60c58e43759730615a392c31c80e23176" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", + "reference": "54750ef60c58e43759730615a392c31c80e23176", "shasum": "" }, "require": { "ext-dom": "*", + "ext-libxml": "*", "ext-phar": "*", "ext-xmlwriter": "*", "phar-io/version": "^3.0.1", @@ -8072,9 +7915,15 @@ "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", "support": { "issues": "https://github.com/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/2.0.3" + "source": "https://github.com/phar-io/manifest/tree/2.0.4" }, - "time": "2021-07-20T11:28:43+00:00" + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2024-03-03T12:33:53+00:00" }, { "name": "phar-io/version", @@ -8182,21 +8031,21 @@ }, { "name": "phpdocumentor/type-resolver", - "version": "1.7.2", + "version": "1.8.2", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "b2fe4d22a5426f38e014855322200b97b5362c0d" + "reference": "153ae662783729388a584b4361f2545e4d841e3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/b2fe4d22a5426f38e014855322200b97b5362c0d", - "reference": "b2fe4d22a5426f38e014855322200b97b5362c0d", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/153ae662783729388a584b4361f2545e4d841e3c", + "reference": "153ae662783729388a584b4361f2545e4d841e3c", "shasum": "" }, "require": { "doctrine/deprecations": "^1.0", - "php": "^7.4 || ^8.0", + "php": "^7.3 || ^8.0", "phpdocumentor/reflection-common": "^2.0", "phpstan/phpdoc-parser": "^1.13" }, @@ -8234,22 +8083,22 @@ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.7.2" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.8.2" }, - "time": "2023-05-30T18:13:47+00:00" + "time": "2024-02-23T11:10:43+00:00" }, { "name": "phpstan/phpdoc-parser", - "version": "1.22.1", + "version": "1.26.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "65c39594fbd8c67abfc68bb323f86447bab79cc0" + "reference": "231e3186624c03d7e7c890ec662b81e6b0405227" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/65c39594fbd8c67abfc68bb323f86447bab79cc0", - "reference": "65c39594fbd8c67abfc68bb323f86447bab79cc0", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/231e3186624c03d7e7c890ec662b81e6b0405227", + "reference": "231e3186624c03d7e7c890ec662b81e6b0405227", "shasum": "" }, "require": { @@ -8281,41 +8130,41 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.22.1" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.26.0" }, - "time": "2023-06-29T20:46:06+00:00" + "time": "2024-02-23T16:05:55+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "9.2.26", + "version": "10.1.14", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "443bc6912c9bd5b409254a40f4b0f4ced7c80ea1" + "reference": "e3f51450ebffe8e0efdf7346ae966a656f7d5e5b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/443bc6912c9bd5b409254a40f4b0f4ced7c80ea1", - "reference": "443bc6912c9bd5b409254a40f4b0f4ced7c80ea1", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/e3f51450ebffe8e0efdf7346ae966a656f7d5e5b", + "reference": "e3f51450ebffe8e0efdf7346ae966a656f7d5e5b", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.15", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", + "nikic/php-parser": "^4.18 || ^5.0", + "php": ">=8.1", + "phpunit/php-file-iterator": "^4.0", + "phpunit/php-text-template": "^3.0", + "sebastian/code-unit-reverse-lookup": "^3.0", + "sebastian/complexity": "^3.0", + "sebastian/environment": "^6.0", + "sebastian/lines-of-code": "^2.0", + "sebastian/version": "^4.0", "theseer/tokenizer": "^1.2.0" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.1" }, "suggest": { "ext-pcov": "PHP extension that provides line coverage", @@ -8324,7 +8173,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "9.2-dev" + "dev-main": "10.1-dev" } }, "autoload": { @@ -8352,7 +8201,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.26" + "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.14" }, "funding": [ { @@ -8360,32 +8210,32 @@ "type": "github" } ], - "time": "2023-03-06T12:58:08+00:00" + "time": "2024-03-12T15:33:41+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "3.0.6", + "version": "4.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a95037b6d9e608ba092da1b23931e537cadc3c3c", + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -8412,7 +8262,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" + "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.1.0" }, "funding": [ { @@ -8420,28 +8271,28 @@ "type": "github" } ], - "time": "2021-12-02T12:48:52+00:00" + "time": "2023-08-31T06:24:48+00:00" }, { "name": "phpunit/php-invoker", - "version": "3.1.1", + "version": "4.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" + "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", + "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "suggest": { "ext-pcntl": "*" @@ -8449,7 +8300,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -8475,7 +8326,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-invoker/issues", - "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" + "source": "https://github.com/sebastianbergmann/php-invoker/tree/4.0.0" }, "funding": [ { @@ -8483,32 +8334,32 @@ "type": "github" } ], - "time": "2020-09-28T05:58:55+00:00" + "time": "2023-02-03T06:56:09+00:00" }, { "name": "phpunit/php-text-template", - "version": "2.0.4", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/0c7b06ff49e3d5072f057eb1fa59258bf287a748", + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -8534,7 +8385,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" + "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.1" }, "funding": [ { @@ -8542,32 +8394,32 @@ "type": "github" } ], - "time": "2020-10-26T05:33:50+00:00" + "time": "2023-08-31T14:07:24+00:00" }, { "name": "phpunit/php-timer", - "version": "5.0.3", + "version": "6.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" + "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/e2a2d67966e740530f4a3343fe2e030ffdc1161d", + "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -8593,7 +8445,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" + "source": "https://github.com/sebastianbergmann/php-timer/tree/6.0.0" }, "funding": [ { @@ -8601,24 +8453,23 @@ "type": "github" } ], - "time": "2020-10-26T13:16:10+00:00" + "time": "2023-02-03T06:57:52+00:00" }, { "name": "phpunit/phpunit", - "version": "9.6.10", + "version": "10.5.13", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "a6d351645c3fe5a30f5e86be6577d946af65a328" + "reference": "20a63fc1c6db29b15da3bd02d4b6cf59900088a7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a6d351645c3fe5a30f5e86be6577d946af65a328", - "reference": "a6d351645c3fe5a30f5e86be6577d946af65a328", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/20a63fc1c6db29b15da3bd02d4b6cf59900088a7", + "reference": "20a63fc1c6db29b15da3bd02d4b6cf59900088a7", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.3.1 || ^2", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", @@ -8628,27 +8479,26 @@ "myclabs/deep-copy": "^1.10.1", "phar-io/manifest": "^2.0.3", "phar-io/version": "^3.0.2", - "php": ">=7.3", - "phpunit/php-code-coverage": "^9.2.13", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.8", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.5", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^3.2", - "sebastian/version": "^3.0.2" + "php": ">=8.1", + "phpunit/php-code-coverage": "^10.1.5", + "phpunit/php-file-iterator": "^4.0", + "phpunit/php-invoker": "^4.0", + "phpunit/php-text-template": "^3.0", + "phpunit/php-timer": "^6.0", + "sebastian/cli-parser": "^2.0", + "sebastian/code-unit": "^2.0", + "sebastian/comparator": "^5.0", + "sebastian/diff": "^5.0", + "sebastian/environment": "^6.0", + "sebastian/exporter": "^5.1", + "sebastian/global-state": "^6.0.1", + "sebastian/object-enumerator": "^5.0", + "sebastian/recursion-context": "^5.0", + "sebastian/type": "^4.0", + "sebastian/version": "^4.0" }, "suggest": { - "ext-soap": "To be able to generate mocks based on WSDL files", - "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" + "ext-soap": "To be able to generate mocks based on WSDL files" }, "bin": [ "phpunit" @@ -8656,7 +8506,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "9.6-dev" + "dev-main": "10.5-dev" } }, "autoload": { @@ -8688,7 +8538,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.10" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.13" }, "funding": [ { @@ -8704,32 +8554,32 @@ "type": "tidelift" } ], - "time": "2023-07-10T04:04:23+00:00" + "time": "2024-03-12T15:37:41+00:00" }, { "name": "sebastian/cli-parser", - "version": "1.0.1", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" + "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/c34583b87e7b7a8055bf6c450c2c77ce32a24084", + "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-main": "2.0-dev" } }, "autoload": { @@ -8752,7 +8602,8 @@ "homepage": "https://github.com/sebastianbergmann/cli-parser", "support": { "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" + "security": "https://github.com/sebastianbergmann/cli-parser/security/policy", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/2.0.1" }, "funding": [ { @@ -8760,32 +8611,32 @@ "type": "github" } ], - "time": "2020-09-28T06:08:49+00:00" + "time": "2024-03-02T07:12:49+00:00" }, { "name": "sebastian/code-unit", - "version": "1.0.8", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" + "reference": "a81fee9eef0b7a76af11d121767abc44c104e503" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/a81fee9eef0b7a76af11d121767abc44c104e503", + "reference": "a81fee9eef0b7a76af11d121767abc44c104e503", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-main": "2.0-dev" } }, "autoload": { @@ -8808,7 +8659,7 @@ "homepage": "https://github.com/sebastianbergmann/code-unit", "support": { "issues": "https://github.com/sebastianbergmann/code-unit/issues", - "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" + "source": "https://github.com/sebastianbergmann/code-unit/tree/2.0.0" }, "funding": [ { @@ -8816,32 +8667,32 @@ "type": "github" } ], - "time": "2020-10-26T13:08:54+00:00" + "time": "2023-02-03T06:58:43+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" + "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", + "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -8863,7 +8714,7 @@ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", "support": { "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/3.0.0" }, "funding": [ { @@ -8871,34 +8722,36 @@ "type": "github" } ], - "time": "2020-09-28T05:30:19+00:00" + "time": "2023-02-03T06:59:15+00:00" }, { "name": "sebastian/comparator", - "version": "4.0.8", + "version": "5.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "fa0f136dd2334583309d32b62544682ee972b51a" + "reference": "2db5010a484d53ebf536087a70b4a5423c102372" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", - "reference": "fa0f136dd2334583309d32b62544682ee972b51a", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2db5010a484d53ebf536087a70b4a5423c102372", + "reference": "2db5010a484d53ebf536087a70b4a5423c102372", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" + "ext-dom": "*", + "ext-mbstring": "*", + "php": ">=8.1", + "sebastian/diff": "^5.0", + "sebastian/exporter": "^5.0" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -8937,7 +8790,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8" + "security": "https://github.com/sebastianbergmann/comparator/security/policy", + "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.1" }, "funding": [ { @@ -8945,33 +8799,33 @@ "type": "github" } ], - "time": "2022-09-14T12:41:17+00:00" + "time": "2023-08-14T13:18:12+00:00" }, { "name": "sebastian/complexity", - "version": "2.0.2", + "version": "3.2.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" + "reference": "68ff824baeae169ec9f2137158ee529584553799" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68ff824baeae169ec9f2137158ee529584553799", + "reference": "68ff824baeae169ec9f2137158ee529584553799", "shasum": "" }, "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" + "nikic/php-parser": "^4.18 || ^5.0", + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "3.2-dev" } }, "autoload": { @@ -8994,7 +8848,8 @@ "homepage": "https://github.com/sebastianbergmann/complexity", "support": { "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" + "security": "https://github.com/sebastianbergmann/complexity/security/policy", + "source": "https://github.com/sebastianbergmann/complexity/tree/3.2.0" }, "funding": [ { @@ -9002,33 +8857,33 @@ "type": "github" } ], - "time": "2020-10-26T15:52:27+00:00" + "time": "2023-12-21T08:37:17+00:00" }, { "name": "sebastian/diff", - "version": "4.0.5", + "version": "5.1.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131" + "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/74be17022044ebaaecfdf0c5cd504fc9cd5a7131", - "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/c41e007b4b62af48218231d6c2275e4c9b975b2e", + "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" + "phpunit/phpunit": "^10.0", + "symfony/process": "^6.4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.1-dev" } }, "autoload": { @@ -9060,7 +8915,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.5" + "security": "https://github.com/sebastianbergmann/diff/security/policy", + "source": "https://github.com/sebastianbergmann/diff/tree/5.1.1" }, "funding": [ { @@ -9068,27 +8924,27 @@ "type": "github" } ], - "time": "2023-05-07T05:35:17+00:00" + "time": "2024-03-02T07:15:17+00:00" }, { "name": "sebastian/environment", - "version": "5.1.5", + "version": "6.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed" + "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", - "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/43c751b41d74f96cbbd4e07b7aec9675651e2951", + "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "suggest": { "ext-posix": "*" @@ -9096,7 +8952,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "5.1-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -9115,7 +8971,7 @@ } ], "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "http://www.github.com/sebastianbergmann/environment", + "homepage": "https://github.com/sebastianbergmann/environment", "keywords": [ "Xdebug", "environment", @@ -9123,7 +8979,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.5" + "security": "https://github.com/sebastianbergmann/environment/security/policy", + "source": "https://github.com/sebastianbergmann/environment/tree/6.0.1" }, "funding": [ { @@ -9131,34 +8988,34 @@ "type": "github" } ], - "time": "2023-02-03T06:03:51+00:00" + "time": "2023-04-11T05:39:26+00:00" }, { "name": "sebastian/exporter", - "version": "4.0.5", + "version": "5.1.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d" + "reference": "955288482d97c19a372d3f31006ab3f37da47adf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", - "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/955288482d97c19a372d3f31006ab3f37da47adf", + "reference": "955288482d97c19a372d3f31006ab3f37da47adf", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" + "ext-mbstring": "*", + "php": ">=8.1", + "sebastian/recursion-context": "^5.0" }, "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.1-dev" } }, "autoload": { @@ -9200,7 +9057,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.5" + "security": "https://github.com/sebastianbergmann/exporter/security/policy", + "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.2" }, "funding": [ { @@ -9208,38 +9066,35 @@ "type": "github" } ], - "time": "2022-09-14T06:03:37+00:00" + "time": "2024-03-02T07:17:12+00:00" }, { "name": "sebastian/global-state", - "version": "5.0.5", + "version": "6.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2" + "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2", - "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", + "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" + "php": ">=8.1", + "sebastian/object-reflector": "^3.0", + "sebastian/recursion-context": "^5.0" }, "require-dev": { "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -9258,13 +9113,14 @@ } ], "description": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", + "homepage": "https://www.github.com/sebastianbergmann/global-state", "keywords": [ "global state" ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5" + "security": "https://github.com/sebastianbergmann/global-state/security/policy", + "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.2" }, "funding": [ { @@ -9272,33 +9128,33 @@ "type": "github" } ], - "time": "2022-02-14T08:28:10+00:00" + "time": "2024-03-02T07:19:19+00:00" }, { "name": "sebastian/lines-of-code", - "version": "1.0.3", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/856e7f6a75a84e339195d48c556f23be2ebf75d0", + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0", "shasum": "" }, "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" + "nikic/php-parser": "^4.18 || ^5.0", + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-main": "2.0-dev" } }, "autoload": { @@ -9321,7 +9177,8 @@ "homepage": "https://github.com/sebastianbergmann/lines-of-code", "support": { "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" + "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.2" }, "funding": [ { @@ -9329,34 +9186,34 @@ "type": "github" } ], - "time": "2020-11-28T06:42:11+00:00" + "time": "2023-12-21T08:38:20+00:00" }, { "name": "sebastian/object-enumerator", - "version": "4.0.4", + "version": "5.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" + "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/202d0e344a580d7f7d04b3fafce6933e59dae906", + "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" + "php": ">=8.1", + "sebastian/object-reflector": "^3.0", + "sebastian/recursion-context": "^5.0" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -9378,7 +9235,7 @@ "homepage": "https://github.com/sebastianbergmann/object-enumerator/", "support": { "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/5.0.0" }, "funding": [ { @@ -9386,32 +9243,32 @@ "type": "github" } ], - "time": "2020-10-26T13:12:34+00:00" + "time": "2023-02-03T07:08:32+00:00" }, { "name": "sebastian/object-reflector", - "version": "2.0.4", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" + "reference": "24ed13d98130f0e7122df55d06c5c4942a577957" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/24ed13d98130f0e7122df55d06c5c4942a577957", + "reference": "24ed13d98130f0e7122df55d06c5c4942a577957", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -9433,7 +9290,7 @@ "homepage": "https://github.com/sebastianbergmann/object-reflector/", "support": { "issues": "https://github.com/sebastianbergmann/object-reflector/issues", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" + "source": "https://github.com/sebastianbergmann/object-reflector/tree/3.0.0" }, "funding": [ { @@ -9441,32 +9298,32 @@ "type": "github" } ], - "time": "2020-10-26T13:14:26+00:00" + "time": "2023-02-03T07:06:18+00:00" }, { "name": "sebastian/recursion-context", - "version": "4.0.5", + "version": "5.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1" + "reference": "05909fb5bc7df4c52992396d0116aed689f93712" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", - "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/05909fb5bc7df4c52992396d0116aed689f93712", + "reference": "05909fb5bc7df4c52992396d0116aed689f93712", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -9496,62 +9353,7 @@ "homepage": "https://github.com/sebastianbergmann/recursion-context", "support": { "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.5" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-03T06:07:39+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" + "source": "https://github.com/sebastianbergmann/recursion-context/tree/5.0.0" }, "funding": [ { @@ -9559,32 +9361,32 @@ "type": "github" } ], - "time": "2020-09-28T06:45:17+00:00" + "time": "2023-02-03T07:05:40+00:00" }, { "name": "sebastian/type", - "version": "3.2.1", + "version": "4.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7" + "reference": "462699a16464c3944eefc02ebdd77882bd3925bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", - "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/462699a16464c3944eefc02ebdd77882bd3925bf", + "reference": "462699a16464c3944eefc02ebdd77882bd3925bf", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.5" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.2-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -9607,7 +9409,7 @@ "homepage": "https://github.com/sebastianbergmann/type", "support": { "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/3.2.1" + "source": "https://github.com/sebastianbergmann/type/tree/4.0.0" }, "funding": [ { @@ -9615,29 +9417,29 @@ "type": "github" } ], - "time": "2023-02-03T06:13:03+00:00" + "time": "2023-02-03T07:10:45+00:00" }, { "name": "sebastian/version", - "version": "3.0.2", + "version": "4.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" + "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c51fa83a5d8f43f1402e3f32a005e6262244ef17", + "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -9660,7 +9462,7 @@ "homepage": "https://github.com/sebastianbergmann/version", "support": { "issues": "https://github.com/sebastianbergmann/version/issues", - "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" + "source": "https://github.com/sebastianbergmann/version/tree/4.0.1" }, "funding": [ { @@ -9668,7 +9470,7 @@ "type": "github" } ], - "time": "2020-09-28T06:39:44+00:00" + "time": "2023-02-07T11:34:05+00:00" }, { "name": "spatie/backtrace", @@ -9734,35 +9536,34 @@ }, { "name": "spatie/flare-client-php", - "version": "1.4.1", + "version": "1.4.4", "source": { "type": "git", "url": "https://github.com/spatie/flare-client-php.git", - "reference": "943894c6a6b00501365ac0b91ae0dce56f2226fa" + "reference": "17082e780752d346c2db12ef5d6bee8e835e399c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/943894c6a6b00501365ac0b91ae0dce56f2226fa", - "reference": "943894c6a6b00501365ac0b91ae0dce56f2226fa", + "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/17082e780752d346c2db12ef5d6bee8e835e399c", + "reference": "17082e780752d346c2db12ef5d6bee8e835e399c", "shasum": "" }, "require": { - "illuminate/pipeline": "^8.0|^9.0|^10.0", - "nesbot/carbon": "^2.62.1", + "illuminate/pipeline": "^8.0|^9.0|^10.0|^11.0", "php": "^8.0", "spatie/backtrace": "^1.5.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" + "symfony/http-foundation": "^5.2|^6.0|^7.0", + "symfony/mime": "^5.2|^6.0|^7.0", + "symfony/process": "^5.2|^6.0|^7.0", + "symfony/var-dumper": "^5.2|^6.0|^7.0" }, "require-dev": { - "dms/phpunit-arraysubset-asserts": "^0.3.0", - "pestphp/pest": "^1.20", + "dms/phpunit-arraysubset-asserts": "^0.5.0", + "pestphp/pest": "^1.20|^2.0", "phpstan/extension-installer": "^1.1", "phpstan/phpstan-deprecation-rules": "^1.0", "phpstan/phpstan-phpunit": "^1.0", - "spatie/phpunit-snapshot-assertions": "^4.0" + "spatie/phpunit-snapshot-assertions": "^4.0|^5.0" }, "type": "library", "extra": { @@ -9792,7 +9593,7 @@ ], "support": { "issues": "https://github.com/spatie/flare-client-php/issues", - "source": "https://github.com/spatie/flare-client-php/tree/1.4.1" + "source": "https://github.com/spatie/flare-client-php/tree/1.4.4" }, "funding": [ { @@ -9800,20 +9601,20 @@ "type": "github" } ], - "time": "2023-07-06T09:29:49+00:00" + "time": "2024-01-31T14:18:45+00:00" }, { "name": "spatie/ignition", - "version": "1.9.0", + "version": "1.12.0", "source": { "type": "git", "url": "https://github.com/spatie/ignition.git", - "reference": "de24ff1e01814d5043bd6eb4ab36a5a852a04973" + "reference": "5b6f801c605a593106b623e45ca41496a6e7d56d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/de24ff1e01814d5043bd6eb4ab36a5a852a04973", - "reference": "de24ff1e01814d5043bd6eb4ab36a5a852a04973", + "url": "https://api.github.com/repos/spatie/ignition/zipball/5b6f801c605a593106b623e45ca41496a6e7d56d", + "reference": "5b6f801c605a593106b623e45ca41496a6e7d56d", "shasum": "" }, "require": { @@ -9822,19 +9623,19 @@ "php": "^8.0", "spatie/backtrace": "^1.5.3", "spatie/flare-client-php": "^1.4.0", - "symfony/console": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0" }, "require-dev": { - "illuminate/cache": "^9.52", + "illuminate/cache": "^9.52|^10.0|^11.0", "mockery/mockery": "^1.4", - "pestphp/pest": "^1.20", + "pestphp/pest": "^1.20|^2.0", "phpstan/extension-installer": "^1.1", "phpstan/phpstan-deprecation-rules": "^1.0", "phpstan/phpstan-phpunit": "^1.0", "psr/simple-cache-implementation": "*", - "symfony/cache": "^6.0", - "symfony/process": "^5.4|^6.0", + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", "vlucas/phpdotenv": "^5.5" }, "suggest": { @@ -9883,45 +9684,47 @@ "type": "github" } ], - "time": "2023-06-28T13:24:59+00:00" + "time": "2024-01-03T15:49:39+00:00" }, { "name": "spatie/laravel-ignition", - "version": "1.6.4", + "version": "2.4.2", "source": { "type": "git", "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "1a2b4bd3d48c72526c0ba417687e5c56b5cf49bc" + "reference": "351504f4570e32908839fc5a2dc53bf77d02f85e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/1a2b4bd3d48c72526c0ba417687e5c56b5cf49bc", - "reference": "1a2b4bd3d48c72526c0ba417687e5c56b5cf49bc", + "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/351504f4570e32908839fc5a2dc53bf77d02f85e", + "reference": "351504f4570e32908839fc5a2dc53bf77d02f85e", "shasum": "" }, "require": { "ext-curl": "*", "ext-json": "*", "ext-mbstring": "*", - "illuminate/support": "^8.77|^9.27", - "monolog/monolog": "^2.3", - "php": "^8.0", - "spatie/flare-client-php": "^1.0.1", - "spatie/ignition": "^1.4.1", - "symfony/console": "^5.0|^6.0", - "symfony/var-dumper": "^5.0|^6.0" + "illuminate/support": "^10.0|^11.0", + "php": "^8.1", + "spatie/flare-client-php": "^1.3.5", + "spatie/ignition": "^1.9", + "symfony/console": "^6.2.3|^7.0", + "symfony/var-dumper": "^6.2.3|^7.0" }, "require-dev": { - "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" + "livewire/livewire": "^2.11|^3.3.5", + "mockery/mockery": "^1.5.1", + "openai-php/client": "^0.8.1", + "orchestra/testbench": "^8.0|^9.0", + "pestphp/pest": "^2.30", + "phpstan/extension-installer": "^1.2", + "phpstan/phpstan-deprecation-rules": "^1.1.1", + "phpstan/phpstan-phpunit": "^1.3.3", + "vlucas/phpdotenv": "^5.5" + }, + "suggest": { + "openai-php/client": "Require get solutions from OpenAI", + "psr/simple-cache-implementation": "Needed to cache solutions from OpenAI" }, "type": "library", "extra": { @@ -9973,31 +9776,32 @@ "type": "github" } ], - "time": "2023-01-03T19:28:04+00:00" + "time": "2024-02-09T16:08:40+00:00" }, { "name": "symfony/yaml", - "version": "v6.3.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "a9a8337aa641ef2aa39c3e028f9107ec391e5927" + "reference": "d75715985f0f94f978e3a8fa42533e10db921b90" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/a9a8337aa641ef2aa39c3e028f9107ec391e5927", - "reference": "a9a8337aa641ef2aa39c3e028f9107ec391e5927", + "url": "https://api.github.com/repos/symfony/yaml/zipball/d75715985f0f94f978e3a8fa42533e10db921b90", + "reference": "d75715985f0f94f978e3a8fa42533e10db921b90", "shasum": "" }, "require": { "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "^1.8" }, "conflict": { "symfony/console": "<5.4" }, "require-dev": { - "symfony/console": "^5.4|^6.0" + "symfony/console": "^5.4|^6.0|^7.0" }, "bin": [ "Resources/bin/yaml-lint" @@ -10028,7 +9832,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v6.3.0" + "source": "https://github.com/symfony/yaml/tree/v6.4.3" }, "funding": [ { @@ -10044,20 +9848,20 @@ "type": "tidelift" } ], - "time": "2023-04-28T13:28:14+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "theseer/tokenizer", - "version": "1.2.1", + "version": "1.2.3", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", "shasum": "" }, "require": { @@ -10086,7 +9890,7 @@ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", "support": { "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" + "source": "https://github.com/theseer/tokenizer/tree/1.2.3" }, "funding": [ { @@ -10094,7 +9898,7 @@ "type": "github" } ], - "time": "2021-07-28T10:34:58+00:00" + "time": "2024-03-03T12:36:25+00:00" } ], "aliases": [], diff --git a/config/app.php b/config/app.php index 65c84762..9ca0e9df 100644 --- a/config/app.php +++ b/config/app.php @@ -1,6 +1,7 @@ [ - - /* - * Laravel Framework Service Providers... - */ - Illuminate\Auth\AuthServiceProvider::class, - Illuminate\Broadcasting\BroadcastServiceProvider::class, - Illuminate\Bus\BusServiceProvider::class, - Illuminate\Cache\CacheServiceProvider::class, - Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, - Illuminate\Cookie\CookieServiceProvider::class, - Illuminate\Database\DatabaseServiceProvider::class, - Illuminate\Encryption\EncryptionServiceProvider::class, - Illuminate\Filesystem\FilesystemServiceProvider::class, - Illuminate\Foundation\Providers\FoundationServiceProvider::class, - Illuminate\Hashing\HashServiceProvider::class, - Illuminate\Mail\MailServiceProvider::class, - Illuminate\Notifications\NotificationServiceProvider::class, - Illuminate\Pagination\PaginationServiceProvider::class, - Illuminate\Pipeline\PipelineServiceProvider::class, - Illuminate\Queue\QueueServiceProvider::class, - Illuminate\Redis\RedisServiceProvider::class, - Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, - Illuminate\Session\SessionServiceProvider::class, - Illuminate\Translation\TranslationServiceProvider::class, - Illuminate\Validation\ValidationServiceProvider::class, - Illuminate\View\ViewServiceProvider::class, - + 'providers' => ServiceProvider::defaultProviders()->merge([ /* * Package Service Providers... */ @@ -202,7 +176,7 @@ App\Providers\SqsFifoServiceProvider::class, App\Providers\TranscodeServiceProvider::class, App\Providers\TransformServiceProvider::class, - ], + ])->toArray(), /* |-------------------------------------------------------------------------- diff --git a/config/auth.php b/config/auth.php index d8c6cee7..f3b3deb6 100644 --- a/config/auth.php +++ b/config/auth.php @@ -80,7 +80,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 each reset token will be + | The expiry 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. | diff --git a/config/broadcasting.php b/config/broadcasting.php index 9e4d4aa4..24104853 100644 --- a/config/broadcasting.php +++ b/config/broadcasting.php @@ -36,6 +36,7 @@ 'secret' => env('PUSHER_APP_SECRET'), 'app_id' => env('PUSHER_APP_ID'), 'options' => [ + 'cluster' => env('PUSHER_APP_CLUSTER'), 'host' => env('PUSHER_HOST') ?: 'api-'.env('PUSHER_APP_CLUSTER', 'mt1').'.pusher.com', 'port' => env('PUSHER_PORT', 443), 'scheme' => env('PUSHER_SCHEME', 'https'), diff --git a/config/cache.php b/config/cache.php index 33bb2954..d4171e22 100644 --- a/config/cache.php +++ b/config/cache.php @@ -52,6 +52,7 @@ 'file' => [ 'driver' => 'file', 'path' => storage_path('framework/cache/data'), + 'lock_path' => storage_path('framework/cache/data'), ], 'memcached' => [ diff --git a/config/hashing.php b/config/hashing.php index bcd3be4c..0e8a0bb3 100644 --- a/config/hashing.php +++ b/config/hashing.php @@ -29,7 +29,8 @@ */ 'bcrypt' => [ - 'rounds' => env('BCRYPT_ROUNDS', 10), + 'rounds' => env('BCRYPT_ROUNDS', 12), + 'verify' => true, ], /* @@ -47,6 +48,7 @@ 'memory' => 65536, 'threads' => 1, 'time' => 4, + 'verify' => true, ], ]; diff --git a/config/logging.php b/config/logging.php index 5ffb43e7..f8c5ef49 100644 --- a/config/logging.php +++ b/config/logging.php @@ -3,6 +3,7 @@ use Monolog\Handler\NullHandler; use Monolog\Handler\StreamHandler; use Monolog\Handler\SyslogUdpHandler; +use Monolog\Processor\PsrLogMessageProcessor; return [ @@ -61,6 +62,7 @@ 'driver' => 'single', 'path' => storage_path(sprintf('logs/%s/laravel.log', env('LOG_FOLDER'))), 'level' => env('LOG_LEVEL', 'debug'), + 'replace_placeholders' => true, ], 'daily' => [ @@ -68,6 +70,7 @@ 'path' => storage_path(sprintf('logs/%s/laravel.log', env('LOG_FOLDER'))), 'level' => env('LOG_LEVEL', 'debug'), 'days' => 14, + 'replace_placeholders' => true, ], 'slack' => [ @@ -76,6 +79,7 @@ 'username' => 'Laravel Log', 'emoji' => ':boom:', 'level' => env('LOG_LEVEL', 'critical'), + 'replace_placeholders' => true, ], 'papertrail' => [ @@ -87,6 +91,7 @@ 'port' => env('PAPERTRAIL_PORT'), 'connectionString' => 'tls://'.env('PAPERTRAIL_URL').':'.env('PAPERTRAIL_PORT'), ], + 'processors' => [PsrLogMessageProcessor::class], ], 'stderr' => [ @@ -97,16 +102,20 @@ 'with' => [ 'stream' => 'php://stderr', ], + 'processors' => [PsrLogMessageProcessor::class], ], 'syslog' => [ 'driver' => 'syslog', 'level' => env('LOG_LEVEL', 'debug'), + 'facility' => LOG_USER, + 'replace_placeholders' => true, ], 'errorlog' => [ 'driver' => 'errorlog', 'level' => env('LOG_LEVEL', 'debug'), + 'replace_placeholders' => true, ], 'null' => [ diff --git a/config/mail.php b/config/mail.php index 534395a3..e894b2e5 100644 --- a/config/mail.php +++ b/config/mail.php @@ -28,14 +28,15 @@ | 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. | - | Supported: "smtp", "sendmail", "mailgun", "ses", - | "postmark", "log", "array", "failover" + | Supported: "smtp", "sendmail", "mailgun", "ses", "ses-v2", + | "postmark", "log", "array", "failover", "roundrobin" | */ 'mailers' => [ 'smtp' => [ 'transport' => 'smtp', + 'url' => env('MAIL_URL'), 'host' => env('MAIL_HOST', 'smtp.mailgun.org'), 'port' => env('MAIL_PORT', 587), 'encryption' => env('MAIL_ENCRYPTION', 'tls'), @@ -49,12 +50,19 @@ 'transport' => 'ses', ], - 'mailgun' => [ - 'transport' => 'mailgun', - ], - 'postmark' => [ 'transport' => 'postmark', + // 'message_stream_id' => null, + // 'client' => [ + // 'timeout' => 5, + // ], + ], + + 'mailgun' => [ + 'transport' => 'mailgun', + // 'client' => [ + // 'timeout' => 5, + // ], ], 'sendmail' => [ @@ -78,6 +86,14 @@ 'log', ], ], + + 'roundrobin' => [ + 'transport' => 'roundrobin', + 'mailers' => [ + 'ses', + 'postmark', + ], + ], ], /* diff --git a/config/queue.php b/config/queue.php index 883b25a3..0d880dae 100644 --- a/config/queue.php +++ b/config/queue.php @@ -85,6 +85,22 @@ ], + /* + |-------------------------------------------------------------------------- + | Job Batching + |-------------------------------------------------------------------------- + | + | The following options configure the database and table that store job + | batching information. These options can be updated to any database + | connection and table which has been defined by your application. + | + */ + + 'batching' => [ + 'database' => env('DB_CONNECTION', 'mysql'), + 'table' => 'job_batches', + ], + /* |-------------------------------------------------------------------------- | Failed Queue Jobs diff --git a/config/sanctum.php b/config/sanctum.php index 529cfdc9..35d75b31 100644 --- a/config/sanctum.php +++ b/config/sanctum.php @@ -41,13 +41,28 @@ |-------------------------------------------------------------------------- | | 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. + | considered expired. This will override any values set in the token's + | "expires_at" attribute, but first-party sessions are not affected. | */ 'expiration' => null, + /* + |-------------------------------------------------------------------------- + | Token Prefix + |-------------------------------------------------------------------------- + | + | Sanctum can prefix new tokens in order to take advantage of numerous + | security scanning initiatives maintained by open source platforms + | that notify developers if they commit tokens into repositories. + | + | See: https://docs.github.com/en/code-security/secret-scanning/about-secret-scanning + | + */ + + 'token_prefix' => env('SANCTUM_TOKEN_PREFIX', ''), + /* |-------------------------------------------------------------------------- | Sanctum Middleware @@ -60,8 +75,9 @@ */ 'middleware' => [ - 'verify_csrf_token' => App\Http\Middleware\VerifyCsrfToken::class, + 'authenticate_session' => Laravel\Sanctum\Http\Middleware\AuthenticateSession::class, 'encrypt_cookies' => App\Http\Middleware\EncryptCookies::class, + 'verify_csrf_token' => App\Http\Middleware\VerifyCsrfToken::class, ], ]; diff --git a/config/session.php b/config/session.php index 8fed97c0..e738cb3e 100644 --- a/config/session.php +++ b/config/session.php @@ -198,4 +198,17 @@ 'same_site' => 'lax', + /* + |-------------------------------------------------------------------------- + | Partitioned Cookies + |-------------------------------------------------------------------------- + | + | Setting this value to true will tie the cookie to the top-level site for + | a cross-site context. Partitioned cookies are accepted by the browser + | when flagged "secure" and the Same-Site attribute is set to "none". + | + */ + + 'partitioned' => false, + ]; diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php index 2a606fe9..e033548d 100644 --- a/database/factories/UserFactory.php +++ b/database/factories/UserFactory.php @@ -3,6 +3,7 @@ namespace Database\Factories; use Illuminate\Database\Eloquent\Factories\Factory; +use Illuminate\Support\Facades\Hash; use Illuminate\Support\Str; /** @@ -10,18 +11,23 @@ */ class UserFactory extends Factory { + /** + * The current password being used by the factory. + */ + protected static ?string $password; + /** * Define the model's default state. * * @return array */ - public function definition() + public function definition(): array { return [ 'name' => fake()->unique()->name(), 'email' => fake()->unique()->safeEmail(), 'email_verified_at' => now(), - 'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password + 'password' => static::$password ??= Hash::make('password'), 'remember_token' => Str::random(10), ]; } @@ -31,7 +37,7 @@ public function definition() * * @return static */ - public function unverified() + public function unverified(): static { return $this->state(fn (array $attributes) => [ 'email_verified_at' => null, 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 cf6b7766..e00abff2 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 @@ * * @return void */ - public function up() + public function up(): void { Schema::create('users', function (Blueprint $table) { $table->id(); @@ -23,14 +23,4 @@ public function up() $table->timestamps(); }); } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - 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 e5f1397c..5f80752f 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 @@ * * @return void */ - public function up() + public function up(): void { Schema::create('password_resets', function (Blueprint $table) { $table->string('email')->primary(); @@ -19,14 +19,4 @@ public function up() $table->timestamp('created_at')->nullable(); }); } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('password_resets'); - } }; diff --git a/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/database/migrations/2019_08_19_000000_create_failed_jobs_table.php index 17191986..e5d047a2 100644 --- a/database/migrations/2019_08_19_000000_create_failed_jobs_table.php +++ b/database/migrations/2019_08_19_000000_create_failed_jobs_table.php @@ -11,7 +11,7 @@ * * @return void */ - public function up() + public function up(): void { Schema::create('failed_jobs', function (Blueprint $table) { $table->id(); @@ -23,14 +23,4 @@ public function up() $table->timestamp('failed_at')->useCurrent(); }); } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('failed_jobs'); - } }; diff --git a/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php index 6c81fd22..3f755a8f 100644 --- a/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php +++ b/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php @@ -11,7 +11,7 @@ * * @return void */ - public function up() + public function up(): void { Schema::create('personal_access_tokens', function (Blueprint $table) { $table->id(); @@ -24,14 +24,4 @@ public function up() $table->timestamps(); }); } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('personal_access_tokens'); - } }; diff --git a/database/migrations/2023_01_24_141057_create_media_table.php b/database/migrations/2023_01_24_141057_create_media_table.php index 36b62a54..18e14957 100644 --- a/database/migrations/2023_01_24_141057_create_media_table.php +++ b/database/migrations/2023_01_24_141057_create_media_table.php @@ -11,7 +11,7 @@ * * @return void */ - public function up() + public function up(): void { Schema::create('media', function (Blueprint $table) { $table->id(); diff --git a/database/migrations/2023_01_24_141106_create_versions_table.php b/database/migrations/2023_01_24_141106_create_versions_table.php index 48dbddfc..72e56f24 100644 --- a/database/migrations/2023_01_24_141106_create_versions_table.php +++ b/database/migrations/2023_01_24_141106_create_versions_table.php @@ -11,7 +11,7 @@ * * @return void */ - public function up() + public function up(): void { Schema::create('versions', function (Blueprint $table) { $table->id(); diff --git a/database/migrations/2023_02_13_130940_make_user_name_unique_in_users_table.php b/database/migrations/2023_02_13_130940_make_user_name_unique_in_users_table.php index 0d65d7dc..91672d9c 100644 --- a/database/migrations/2023_02_13_130940_make_user_name_unique_in_users_table.php +++ b/database/migrations/2023_02_13_130940_make_user_name_unique_in_users_table.php @@ -11,7 +11,7 @@ * * @return void */ - public function up() + public function up(): void { Schema::table('users', function (Blueprint $table) { $table->unique('name'); diff --git a/database/migrations/2023_02_15_102309_create_jobs_table.php b/database/migrations/2023_02_15_102309_create_jobs_table.php index a786a891..5a5b9284 100644 --- a/database/migrations/2023_02_15_102309_create_jobs_table.php +++ b/database/migrations/2023_02_15_102309_create_jobs_table.php @@ -11,7 +11,7 @@ * * @return void */ - public function up() + public function up(): void { Schema::create('jobs', function (Blueprint $table) { $table->bigIncrements('id'); @@ -23,14 +23,4 @@ public function up() $table->unsignedInteger('created_at'); }); } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('jobs'); - } }; diff --git a/database/migrations/2023_04_18_055131_create_upload_slots_table.php b/database/migrations/2023_04_18_055131_create_upload_slots_table.php index 4ea24299..01f95022 100644 --- a/database/migrations/2023_04_18_055131_create_upload_slots_table.php +++ b/database/migrations/2023_04_18_055131_create_upload_slots_table.php @@ -11,7 +11,7 @@ * * @return void */ - public function up() + public function up(): void { Schema::create('upload_slots', function (Blueprint $table) { $table->id(); diff --git a/database/migrations/2024_01_16_103017_add_public_key_to_users_table.php b/database/migrations/2024_01_16_103017_add_public_key_to_users_table.php index 13827ffd..558ffbc9 100644 --- a/database/migrations/2024_01_16_103017_add_public_key_to_users_table.php +++ b/database/migrations/2024_01_16_103017_add_public_key_to_users_table.php @@ -11,7 +11,7 @@ class AddPublicKeyToUsersTable extends Migration * * @return void */ - public function up() + public function up(): void { Schema::table('users', function (Blueprint $table) { $table->string('protector_public_key')->unique()->nullable()->comment( @@ -19,13 +19,4 @@ public function up() ); }); } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - } } diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 76d96dc7..1b347433 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -12,7 +12,7 @@ class DatabaseSeeder extends Seeder * * @return void */ - public function run() + public function run(): void { // \App\Models\User::factory(10)->create(); diff --git a/package.json b/package.json index 0b32ba69..56f5ddcc 100644 --- a/package.json +++ b/package.json @@ -1,14 +1,13 @@ { "private": true, + "type": "module", "scripts": { "dev": "vite", "build": "vite build" }, "devDependencies": { - "axios": "^1.1.2", - "laravel-vite-plugin": "^0.7.2", - "lodash": "^4.17.19", - "postcss": "^8.1.14", - "vite": "^4.0.0" + "axios": "^1.6.4", + "laravel-vite-plugin": "^1.0.0", + "vite": "^5.0.0" } } diff --git a/phpunit.xml b/phpunit.xml index d1d200d3..e937d135 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -1,18 +1,14 @@ + colors="true"> - - tests + + tests/Unit - - - ./app - + @@ -22,4 +18,9 @@ + + + app + + diff --git a/resources/js/bootstrap.js b/resources/js/bootstrap.js index a5b3eddc..846d3505 100644 --- a/resources/js/bootstrap.js +++ b/resources/js/bootstrap.js @@ -1,6 +1,3 @@ -import _ from 'lodash'; -window._ = _; - /** * We'll load the axios HTTP library which allows us to easily issue requests * to our Laravel back-end. This library automatically handles sending the diff --git a/resources/views/welcome.blade.php b/resources/views/welcome.blade.php index 9faad4e8..3390c0aa 100644 --- a/resources/views/welcome.blade.php +++ b/resources/views/welcome.blade.php @@ -1,132 +1,133 @@ - - - - - Laravel - - - - - - - - - - -
- @if (Route::has('login')) - - @endif - -
-
- - - - - -
+ + + + + Laravel + + + + + + + + + +
+ @if (Route::has('login')) +
+ @auth + Home + @else + Log in + + @if (Route::has('register')) + Register + @endif + @endauth +
+ @endif -
-
-
- - -
-
- Laravel has wonderful, thorough documentation covering every aspect of the framework. Whether you are new to the framework or have previous experience with Laravel, we recommend reading all of the documentation from beginning to end. -
-
-
+
+
+ + + +
-
-
- - -
- -
-
- Laracasts offers thousands of video tutorials on Laravel, PHP, and JavaScript development. Check them out, see for yourself, and massively level up your development skills in the process. -
-
+
+
+ +
+
+ + +
-
- - -
-
- Laravel News is a community driven portal and newsletter aggregating all of the latest and most important news in the Laravel ecosystem, including new package releases and tutorials. -
-
-
+

Documentation

-
-
- -
Vibrant Ecosystem
-
- -
-
- Laravel's robust library of first-party tools and libraries, such as Forge, Vapor, Nova, and Envoyer help you take your projects to the next level. Pair them with powerful open source libraries like Cashier, Dusk, Echo, Horizon, Sanctum, Telescope, and more. -
-
-
+

+ Laravel has wonderful documentation covering every aspect of the framework. Whether you are a newcomer or have prior experience with Laravel, we recommend reading our documentation from beginning to end. +

-
-
-
-
- - + + + + + + +
+
+ + +
- - Shop - +

Laracasts

- - - +

+ Laracasts offers thousands of video tutorials on Laravel, PHP, and JavaScript development. Check them out, see for yourself, and massively level up your development skills in the process. +

+
- - Sponsor - + + + + + + +
+
+ + +
+ +

Laravel News

+ +

+ Laravel News is a community driven portal and newsletter aggregating all of the latest and most important news in the Laravel ecosystem, including new package releases and tutorials. +

-
- Laravel v{{ Illuminate\Foundation\Application::VERSION }} (PHP v{{ PHP_VERSION }}) + + + + + +
+
+
+ + + +
+ +

Vibrant Ecosystem

+ +

+ Laravel's robust library of first-party tools and libraries, such as Forge, Vapor, Nova, and Envoyer help you take your projects to the next level. Pair them with powerful open source libraries like Cashier, Dusk, Echo, Horizon, Sanctum, Telescope, and more. +

- + +
+
+   +
+ +
+ Laravel v{{ Illuminate\Foundation\Application::VERSION }} (PHP v{{ PHP_VERSION }}) +
+
+
+
+ diff --git a/routes/api.php b/routes/api.php index e3ed2144..d5f5592a 100644 --- a/routes/api.php +++ b/routes/api.php @@ -6,8 +6,8 @@ |-------------------------------------------------------------------------- | | Here is where you can register API routes for your application. These -| routes are loaded by the RouteServiceProvider within a group which -| is assigned the "api" middleware group. Enjoy building your API! +| routes are loaded by the RouteServiceProvider and all of them will +| be assigned to the "api" middleware group. Make something great! | */ diff --git a/routes/web.php b/routes/web.php index e9e12a0c..2c9c402b 100644 --- a/routes/web.php +++ b/routes/web.php @@ -10,8 +10,8 @@ |-------------------------------------------------------------------------- | | Here is where you can register web routes for your application. These -| routes are loaded by the RouteServiceProvider within a group which -| contains the "web" middleware group. Now create something great! +| routes are loaded by the RouteServiceProvider and all of them will +| be assigned to the "web" middleware group. Make something great! | */ diff --git a/tests/CreatesApplication.php b/tests/CreatesApplication.php index 547152f6..e3a47be4 100644 --- a/tests/CreatesApplication.php +++ b/tests/CreatesApplication.php @@ -3,15 +3,16 @@ namespace Tests; use Illuminate\Contracts\Console\Kernel; +use Illuminate\Foundation\Application; trait CreatesApplication { /** * Creates the application. * - * @return \Illuminate\Foundation\Application + * @return Application */ - public function createApplication() + public function createApplication(): Application { $app = require __DIR__.'/../bootstrap/app.php'; diff --git a/tests/Unit/MediaTest.php b/tests/MediaTest.php similarity index 81% rename from tests/Unit/MediaTest.php rename to tests/MediaTest.php index b7ed5bb8..1faac6c6 100644 --- a/tests/Unit/MediaTest.php +++ b/tests/MediaTest.php @@ -1,13 +1,12 @@ assertEquals(Command::INVALID, $exitStatus); } - protected function duplicateEntryDataProvider(): array + public static function duplicateEntryDataProvider(): array { return [ 'duplicate name' => [ @@ -95,7 +95,7 @@ protected function duplicateEntryDataProvider(): array ]; } - protected function missingArgumentsDataProvider(): array + public static function missingArgumentsDataProvider(): array { return [ 'missing name' => [ @@ -113,7 +113,7 @@ protected function missingArgumentsDataProvider(): array ]; } - protected function invalidArgumentsDataProvider(): array + public static function invalidArgumentsDataProvider(): array { return [ 'invalid name with slash' => [ diff --git a/tests/Unit/DeleteFfmpegFoldersCommandTest.php b/tests/Unit/DeleteFfmpegFoldersCommandTest.php index cad30550..4fd640ba 100644 --- a/tests/Unit/DeleteFfmpegFoldersCommandTest.php +++ b/tests/Unit/DeleteFfmpegFoldersCommandTest.php @@ -36,7 +36,7 @@ public function ensureNonExistentPathDoesNotCauseProblems() ); } - protected function folderDataProvider(): array + public static function folderDataProvider(): array { return [ 'directoryOlderThanADay' => [ diff --git a/tests/Unit/ImageTest.php b/tests/Unit/ImageTest.php index 6e62b9db..2f2c14fc 100644 --- a/tests/Unit/ImageTest.php +++ b/tests/Unit/ImageTest.php @@ -10,6 +10,7 @@ use FilePathHelper; use Illuminate\Http\UploadedFile; use Storage; +use Tests\MediaTest; class ImageTest extends MediaTest { diff --git a/tests/Unit/VideoTest.php b/tests/Unit/VideoTest.php index dc87d9f9..bad7fed5 100644 --- a/tests/Unit/VideoTest.php +++ b/tests/Unit/VideoTest.php @@ -9,6 +9,7 @@ use FilePathHelper; use Http; use Storage; +use Tests\MediaTest; class VideoTest extends MediaTest { From d97b3426c41e1b039d039d7775072686d51bab17 Mon Sep 17 00:00:00 2001 From: mszulik <69617961+mszulik@users.noreply.github.com> Date: Wed, 3 Apr 2024 08:48:08 +0200 Subject: [PATCH 03/15] use ffmpeg's new 'temporary_directory' configuration option (#41) --- .phpstorm.meta.php | 167 +- _ide_helper.php | 12367 ++++++++-------- .../Commands/DeleteFfmpegTempFolders.php | 53 - app/Console/Kernel.php | 4 +- app/Jobs/TranscodeVideo.php | 128 +- app/Models/Media.php | 1 + app/Models/UploadSlot.php | 1 + app/Models/User.php | 4 +- composer.json | 2 +- composer.lock | 2 +- docker/Dockerfile | 3 - tests/Unit/DeleteFfmpegFoldersCommandTest.php | 64 - 12 files changed, 6111 insertions(+), 6685 deletions(-) delete mode 100644 app/Console/Commands/DeleteFfmpegTempFolders.php delete mode 100644 tests/Unit/DeleteFfmpegFoldersCommandTest.php diff --git a/.phpstorm.meta.php b/.phpstorm.meta.php index 1433b8ae..944410c7 100644 --- a/.phpstorm.meta.php +++ b/.phpstorm.meta.php @@ -1,5 +1,7 @@ \Illuminate\Cache\Console\CacheTableCommand::class, 'Illuminate\Cache\Console\ClearCommand' => \Illuminate\Cache\Console\ClearCommand::class, 'Illuminate\Cache\Console\ForgetCommand' => \Illuminate\Cache\Console\ForgetCommand::class, + 'Illuminate\Cache\Console\PruneStaleTagsCommand' => \Illuminate\Cache\Console\PruneStaleTagsCommand::class, 'Illuminate\Cache\RateLimiter' => \Illuminate\Cache\RateLimiter::class, 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, 'Illuminate\Console\Scheduling\ScheduleClearCacheCommand' => \Illuminate\Console\Scheduling\ScheduleClearCacheCommand::class, 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, + 'Illuminate\Console\Scheduling\ScheduleInterruptCommand' => \Illuminate\Console\Scheduling\ScheduleInterruptCommand::class, 'Illuminate\Console\Scheduling\ScheduleListCommand' => \Illuminate\Console\Scheduling\ScheduleListCommand::class, 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::class, 'Illuminate\Console\Scheduling\ScheduleTestCommand' => \Illuminate\Console\Scheduling\ScheduleTestCommand::class, @@ -55,15 +59,18 @@ 'Illuminate\Database\Console\Seeds\SeedCommand' => \Illuminate\Database\Console\Seeds\SeedCommand::class, 'Illuminate\Database\Console\Seeds\SeederMakeCommand' => \Illuminate\Database\Console\Seeds\SeederMakeCommand::class, 'Illuminate\Database\Console\ShowCommand' => \Illuminate\Database\Console\ShowCommand::class, + 'Illuminate\Database\Console\ShowModelCommand' => \Illuminate\Database\Console\ShowModelCommand::class, 'Illuminate\Database\Console\TableCommand' => \Illuminate\Database\Console\TableCommand::class, 'Illuminate\Database\Console\WipeCommand' => \Illuminate\Database\Console\WipeCommand::class, 'Illuminate\Foundation\Console\AboutCommand' => \Illuminate\Foundation\Console\AboutCommand::class, 'Illuminate\Foundation\Console\CastMakeCommand' => \Illuminate\Foundation\Console\CastMakeCommand::class, + 'Illuminate\Foundation\Console\ChannelListCommand' => \Illuminate\Foundation\Console\ChannelListCommand::class, 'Illuminate\Foundation\Console\ChannelMakeCommand' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, 'Illuminate\Foundation\Console\ClearCompiledCommand' => \Illuminate\Foundation\Console\ClearCompiledCommand::class, 'Illuminate\Foundation\Console\ComponentMakeCommand' => \Illuminate\Foundation\Console\ComponentMakeCommand::class, 'Illuminate\Foundation\Console\ConfigCacheCommand' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, 'Illuminate\Foundation\Console\ConfigClearCommand' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'Illuminate\Foundation\Console\ConfigShowCommand' => \Illuminate\Foundation\Console\ConfigShowCommand::class, 'Illuminate\Foundation\Console\ConsoleMakeCommand' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, 'Illuminate\Foundation\Console\DocsCommand' => \Illuminate\Foundation\Console\DocsCommand::class, 'Illuminate\Foundation\Console\DownCommand' => \Illuminate\Foundation\Console\DownCommand::class, @@ -78,6 +85,7 @@ 'Illuminate\Foundation\Console\ExceptionMakeCommand' => \Illuminate\Foundation\Console\ExceptionMakeCommand::class, 'Illuminate\Foundation\Console\JobMakeCommand' => \Illuminate\Foundation\Console\JobMakeCommand::class, 'Illuminate\Foundation\Console\KeyGenerateCommand' => \Illuminate\Foundation\Console\KeyGenerateCommand::class, + 'Illuminate\Foundation\Console\LangPublishCommand' => \Illuminate\Foundation\Console\LangPublishCommand::class, 'Illuminate\Foundation\Console\ListenerMakeCommand' => \Illuminate\Foundation\Console\ListenerMakeCommand::class, 'Illuminate\Foundation\Console\MailMakeCommand' => \Illuminate\Foundation\Console\MailMakeCommand::class, 'Illuminate\Foundation\Console\ModelMakeCommand' => \Illuminate\Foundation\Console\ModelMakeCommand::class, @@ -96,18 +104,20 @@ 'Illuminate\Foundation\Console\RuleMakeCommand' => \Illuminate\Foundation\Console\RuleMakeCommand::class, 'Illuminate\Foundation\Console\ScopeMakeCommand' => \Illuminate\Foundation\Console\ScopeMakeCommand::class, 'Illuminate\Foundation\Console\ServeCommand' => \Illuminate\Foundation\Console\ServeCommand::class, - 'Illuminate\Foundation\Console\ShowModelCommand' => \Illuminate\Foundation\Console\ShowModelCommand::class, 'Illuminate\Foundation\Console\StorageLinkCommand' => \Illuminate\Foundation\Console\StorageLinkCommand::class, + 'Illuminate\Foundation\Console\StorageUnlinkCommand' => \Illuminate\Foundation\Console\StorageUnlinkCommand::class, 'Illuminate\Foundation\Console\StubPublishCommand' => \Illuminate\Foundation\Console\StubPublishCommand::class, 'Illuminate\Foundation\Console\TestMakeCommand' => \Illuminate\Foundation\Console\TestMakeCommand::class, 'Illuminate\Foundation\Console\UpCommand' => \Illuminate\Foundation\Console\UpCommand::class, 'Illuminate\Foundation\Console\VendorPublishCommand' => \Illuminate\Foundation\Console\VendorPublishCommand::class, 'Illuminate\Foundation\Console\ViewCacheCommand' => \Illuminate\Foundation\Console\ViewCacheCommand::class, 'Illuminate\Foundation\Console\ViewClearCommand' => \Illuminate\Foundation\Console\ViewClearCommand::class, + 'Illuminate\Foundation\Console\ViewMakeCommand' => \Illuminate\Foundation\Console\ViewMakeCommand::class, 'Illuminate\Foundation\MaintenanceModeManager' => \Illuminate\Foundation\MaintenanceModeManager::class, 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, 'Illuminate\Foundation\Vite' => \Illuminate\Foundation\Vite::class, + 'Illuminate\Http\Client\Factory' => \Illuminate\Http\Client\Factory::class, 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, 'Illuminate\Notifications\Console\NotificationTableCommand' => \Illuminate\Notifications\Console\NotificationTableCommand::class, @@ -133,7 +143,7 @@ 'Illuminate\Session\Console\SessionTableCommand' => \Illuminate\Session\Console\SessionTableCommand::class, 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, - 'NunoMaduro\Collision\Contracts\Provider' => \NunoMaduro\Collision\Provider::class, + 'NunoMaduro\Collision\Provider' => \NunoMaduro\Collision\Provider::class, 'Pion\Laravel\ChunkUpload\Config\AbstractConfig' => \Pion\Laravel\ChunkUpload\Config\FileConfig::class, 'Pion\Laravel\ChunkUpload\Receiver\FileReceiver' => \Pion\Laravel\ChunkUpload\Receiver\FileReceiver::class, 'Pion\Laravel\ChunkUpload\Storage\ChunkStorage' => \Pion\Laravel\ChunkUpload\Storage\ChunkStorage::class, @@ -149,7 +159,6 @@ 'Spatie\LaravelIgnition\Recorders\LogRecorder\LogRecorder' => \Spatie\LaravelIgnition\Recorders\LogRecorder\LogRecorder::class, 'Spatie\LaravelIgnition\Recorders\QueryRecorder\QueryRecorder' => \Spatie\LaravelIgnition\Recorders\QueryRecorder\QueryRecorder::class, 'Spatie\LaravelIgnition\Support\SentReports' => \Spatie\LaravelIgnition\Support\SentReports::class, - 'Whoops\Handler\HandlerInterface' => \Spatie\LaravelIgnition\Renderers\IgnitionWhoopsHandler::class, 'auth' => \Illuminate\Auth\AuthManager::class, 'auth.driver' => \Illuminate\Auth\SessionGuard::class, 'auth.password' => \Illuminate\Auth\Passwords\PasswordBrokerManager::class, @@ -191,6 +200,8 @@ 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, 'migration.repository' => \Illuminate\Database\Migrations\DatabaseMigrationRepository::class, 'migrator' => \Illuminate\Database\Migrations\Migrator::class, + 'pipeline' => \Illuminate\Pipeline\Pipeline::class, + 'protector' => \Cybex\Protector\Protector::class, 'queue' => \Illuminate\Queue\QueueManager::class, 'queue.connection' => \Illuminate\Queue\DatabaseQueue::class, 'queue.failer' => \Illuminate\Queue\Failed\DatabaseUuidFailedJobProvider::class, @@ -222,10 +233,12 @@ 'Illuminate\Cache\Console\CacheTableCommand' => \Illuminate\Cache\Console\CacheTableCommand::class, 'Illuminate\Cache\Console\ClearCommand' => \Illuminate\Cache\Console\ClearCommand::class, 'Illuminate\Cache\Console\ForgetCommand' => \Illuminate\Cache\Console\ForgetCommand::class, + 'Illuminate\Cache\Console\PruneStaleTagsCommand' => \Illuminate\Cache\Console\PruneStaleTagsCommand::class, 'Illuminate\Cache\RateLimiter' => \Illuminate\Cache\RateLimiter::class, 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, 'Illuminate\Console\Scheduling\ScheduleClearCacheCommand' => \Illuminate\Console\Scheduling\ScheduleClearCacheCommand::class, 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, + 'Illuminate\Console\Scheduling\ScheduleInterruptCommand' => \Illuminate\Console\Scheduling\ScheduleInterruptCommand::class, 'Illuminate\Console\Scheduling\ScheduleListCommand' => \Illuminate\Console\Scheduling\ScheduleListCommand::class, 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::class, 'Illuminate\Console\Scheduling\ScheduleTestCommand' => \Illuminate\Console\Scheduling\ScheduleTestCommand::class, @@ -257,15 +270,18 @@ 'Illuminate\Database\Console\Seeds\SeedCommand' => \Illuminate\Database\Console\Seeds\SeedCommand::class, 'Illuminate\Database\Console\Seeds\SeederMakeCommand' => \Illuminate\Database\Console\Seeds\SeederMakeCommand::class, 'Illuminate\Database\Console\ShowCommand' => \Illuminate\Database\Console\ShowCommand::class, + 'Illuminate\Database\Console\ShowModelCommand' => \Illuminate\Database\Console\ShowModelCommand::class, 'Illuminate\Database\Console\TableCommand' => \Illuminate\Database\Console\TableCommand::class, 'Illuminate\Database\Console\WipeCommand' => \Illuminate\Database\Console\WipeCommand::class, 'Illuminate\Foundation\Console\AboutCommand' => \Illuminate\Foundation\Console\AboutCommand::class, 'Illuminate\Foundation\Console\CastMakeCommand' => \Illuminate\Foundation\Console\CastMakeCommand::class, + 'Illuminate\Foundation\Console\ChannelListCommand' => \Illuminate\Foundation\Console\ChannelListCommand::class, 'Illuminate\Foundation\Console\ChannelMakeCommand' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, 'Illuminate\Foundation\Console\ClearCompiledCommand' => \Illuminate\Foundation\Console\ClearCompiledCommand::class, 'Illuminate\Foundation\Console\ComponentMakeCommand' => \Illuminate\Foundation\Console\ComponentMakeCommand::class, 'Illuminate\Foundation\Console\ConfigCacheCommand' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, 'Illuminate\Foundation\Console\ConfigClearCommand' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'Illuminate\Foundation\Console\ConfigShowCommand' => \Illuminate\Foundation\Console\ConfigShowCommand::class, 'Illuminate\Foundation\Console\ConsoleMakeCommand' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, 'Illuminate\Foundation\Console\DocsCommand' => \Illuminate\Foundation\Console\DocsCommand::class, 'Illuminate\Foundation\Console\DownCommand' => \Illuminate\Foundation\Console\DownCommand::class, @@ -280,6 +296,7 @@ 'Illuminate\Foundation\Console\ExceptionMakeCommand' => \Illuminate\Foundation\Console\ExceptionMakeCommand::class, 'Illuminate\Foundation\Console\JobMakeCommand' => \Illuminate\Foundation\Console\JobMakeCommand::class, 'Illuminate\Foundation\Console\KeyGenerateCommand' => \Illuminate\Foundation\Console\KeyGenerateCommand::class, + 'Illuminate\Foundation\Console\LangPublishCommand' => \Illuminate\Foundation\Console\LangPublishCommand::class, 'Illuminate\Foundation\Console\ListenerMakeCommand' => \Illuminate\Foundation\Console\ListenerMakeCommand::class, 'Illuminate\Foundation\Console\MailMakeCommand' => \Illuminate\Foundation\Console\MailMakeCommand::class, 'Illuminate\Foundation\Console\ModelMakeCommand' => \Illuminate\Foundation\Console\ModelMakeCommand::class, @@ -298,18 +315,20 @@ 'Illuminate\Foundation\Console\RuleMakeCommand' => \Illuminate\Foundation\Console\RuleMakeCommand::class, 'Illuminate\Foundation\Console\ScopeMakeCommand' => \Illuminate\Foundation\Console\ScopeMakeCommand::class, 'Illuminate\Foundation\Console\ServeCommand' => \Illuminate\Foundation\Console\ServeCommand::class, - 'Illuminate\Foundation\Console\ShowModelCommand' => \Illuminate\Foundation\Console\ShowModelCommand::class, 'Illuminate\Foundation\Console\StorageLinkCommand' => \Illuminate\Foundation\Console\StorageLinkCommand::class, + 'Illuminate\Foundation\Console\StorageUnlinkCommand' => \Illuminate\Foundation\Console\StorageUnlinkCommand::class, 'Illuminate\Foundation\Console\StubPublishCommand' => \Illuminate\Foundation\Console\StubPublishCommand::class, 'Illuminate\Foundation\Console\TestMakeCommand' => \Illuminate\Foundation\Console\TestMakeCommand::class, 'Illuminate\Foundation\Console\UpCommand' => \Illuminate\Foundation\Console\UpCommand::class, 'Illuminate\Foundation\Console\VendorPublishCommand' => \Illuminate\Foundation\Console\VendorPublishCommand::class, 'Illuminate\Foundation\Console\ViewCacheCommand' => \Illuminate\Foundation\Console\ViewCacheCommand::class, 'Illuminate\Foundation\Console\ViewClearCommand' => \Illuminate\Foundation\Console\ViewClearCommand::class, + 'Illuminate\Foundation\Console\ViewMakeCommand' => \Illuminate\Foundation\Console\ViewMakeCommand::class, 'Illuminate\Foundation\MaintenanceModeManager' => \Illuminate\Foundation\MaintenanceModeManager::class, 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, 'Illuminate\Foundation\Vite' => \Illuminate\Foundation\Vite::class, + 'Illuminate\Http\Client\Factory' => \Illuminate\Http\Client\Factory::class, 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, 'Illuminate\Notifications\Console\NotificationTableCommand' => \Illuminate\Notifications\Console\NotificationTableCommand::class, @@ -335,7 +354,7 @@ 'Illuminate\Session\Console\SessionTableCommand' => \Illuminate\Session\Console\SessionTableCommand::class, 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, - 'NunoMaduro\Collision\Contracts\Provider' => \NunoMaduro\Collision\Provider::class, + 'NunoMaduro\Collision\Provider' => \NunoMaduro\Collision\Provider::class, 'Pion\Laravel\ChunkUpload\Config\AbstractConfig' => \Pion\Laravel\ChunkUpload\Config\FileConfig::class, 'Pion\Laravel\ChunkUpload\Receiver\FileReceiver' => \Pion\Laravel\ChunkUpload\Receiver\FileReceiver::class, 'Pion\Laravel\ChunkUpload\Storage\ChunkStorage' => \Pion\Laravel\ChunkUpload\Storage\ChunkStorage::class, @@ -351,7 +370,6 @@ 'Spatie\LaravelIgnition\Recorders\LogRecorder\LogRecorder' => \Spatie\LaravelIgnition\Recorders\LogRecorder\LogRecorder::class, 'Spatie\LaravelIgnition\Recorders\QueryRecorder\QueryRecorder' => \Spatie\LaravelIgnition\Recorders\QueryRecorder\QueryRecorder::class, 'Spatie\LaravelIgnition\Support\SentReports' => \Spatie\LaravelIgnition\Support\SentReports::class, - 'Whoops\Handler\HandlerInterface' => \Spatie\LaravelIgnition\Renderers\IgnitionWhoopsHandler::class, 'auth' => \Illuminate\Auth\AuthManager::class, 'auth.driver' => \Illuminate\Auth\SessionGuard::class, 'auth.password' => \Illuminate\Auth\Passwords\PasswordBrokerManager::class, @@ -393,6 +411,8 @@ 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, 'migration.repository' => \Illuminate\Database\Migrations\DatabaseMigrationRepository::class, 'migrator' => \Illuminate\Database\Migrations\Migrator::class, + 'pipeline' => \Illuminate\Pipeline\Pipeline::class, + 'protector' => \Cybex\Protector\Protector::class, 'queue' => \Illuminate\Queue\QueueManager::class, 'queue.connection' => \Illuminate\Queue\DatabaseQueue::class, 'queue.failer' => \Illuminate\Queue\Failed\DatabaseUuidFailedJobProvider::class, @@ -424,10 +444,12 @@ 'Illuminate\Cache\Console\CacheTableCommand' => \Illuminate\Cache\Console\CacheTableCommand::class, 'Illuminate\Cache\Console\ClearCommand' => \Illuminate\Cache\Console\ClearCommand::class, 'Illuminate\Cache\Console\ForgetCommand' => \Illuminate\Cache\Console\ForgetCommand::class, + 'Illuminate\Cache\Console\PruneStaleTagsCommand' => \Illuminate\Cache\Console\PruneStaleTagsCommand::class, 'Illuminate\Cache\RateLimiter' => \Illuminate\Cache\RateLimiter::class, 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, 'Illuminate\Console\Scheduling\ScheduleClearCacheCommand' => \Illuminate\Console\Scheduling\ScheduleClearCacheCommand::class, 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, + 'Illuminate\Console\Scheduling\ScheduleInterruptCommand' => \Illuminate\Console\Scheduling\ScheduleInterruptCommand::class, 'Illuminate\Console\Scheduling\ScheduleListCommand' => \Illuminate\Console\Scheduling\ScheduleListCommand::class, 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::class, 'Illuminate\Console\Scheduling\ScheduleTestCommand' => \Illuminate\Console\Scheduling\ScheduleTestCommand::class, @@ -459,15 +481,18 @@ 'Illuminate\Database\Console\Seeds\SeedCommand' => \Illuminate\Database\Console\Seeds\SeedCommand::class, 'Illuminate\Database\Console\Seeds\SeederMakeCommand' => \Illuminate\Database\Console\Seeds\SeederMakeCommand::class, 'Illuminate\Database\Console\ShowCommand' => \Illuminate\Database\Console\ShowCommand::class, + 'Illuminate\Database\Console\ShowModelCommand' => \Illuminate\Database\Console\ShowModelCommand::class, 'Illuminate\Database\Console\TableCommand' => \Illuminate\Database\Console\TableCommand::class, 'Illuminate\Database\Console\WipeCommand' => \Illuminate\Database\Console\WipeCommand::class, 'Illuminate\Foundation\Console\AboutCommand' => \Illuminate\Foundation\Console\AboutCommand::class, 'Illuminate\Foundation\Console\CastMakeCommand' => \Illuminate\Foundation\Console\CastMakeCommand::class, + 'Illuminate\Foundation\Console\ChannelListCommand' => \Illuminate\Foundation\Console\ChannelListCommand::class, 'Illuminate\Foundation\Console\ChannelMakeCommand' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, 'Illuminate\Foundation\Console\ClearCompiledCommand' => \Illuminate\Foundation\Console\ClearCompiledCommand::class, 'Illuminate\Foundation\Console\ComponentMakeCommand' => \Illuminate\Foundation\Console\ComponentMakeCommand::class, 'Illuminate\Foundation\Console\ConfigCacheCommand' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, 'Illuminate\Foundation\Console\ConfigClearCommand' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'Illuminate\Foundation\Console\ConfigShowCommand' => \Illuminate\Foundation\Console\ConfigShowCommand::class, 'Illuminate\Foundation\Console\ConsoleMakeCommand' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, 'Illuminate\Foundation\Console\DocsCommand' => \Illuminate\Foundation\Console\DocsCommand::class, 'Illuminate\Foundation\Console\DownCommand' => \Illuminate\Foundation\Console\DownCommand::class, @@ -482,6 +507,7 @@ 'Illuminate\Foundation\Console\ExceptionMakeCommand' => \Illuminate\Foundation\Console\ExceptionMakeCommand::class, 'Illuminate\Foundation\Console\JobMakeCommand' => \Illuminate\Foundation\Console\JobMakeCommand::class, 'Illuminate\Foundation\Console\KeyGenerateCommand' => \Illuminate\Foundation\Console\KeyGenerateCommand::class, + 'Illuminate\Foundation\Console\LangPublishCommand' => \Illuminate\Foundation\Console\LangPublishCommand::class, 'Illuminate\Foundation\Console\ListenerMakeCommand' => \Illuminate\Foundation\Console\ListenerMakeCommand::class, 'Illuminate\Foundation\Console\MailMakeCommand' => \Illuminate\Foundation\Console\MailMakeCommand::class, 'Illuminate\Foundation\Console\ModelMakeCommand' => \Illuminate\Foundation\Console\ModelMakeCommand::class, @@ -500,18 +526,20 @@ 'Illuminate\Foundation\Console\RuleMakeCommand' => \Illuminate\Foundation\Console\RuleMakeCommand::class, 'Illuminate\Foundation\Console\ScopeMakeCommand' => \Illuminate\Foundation\Console\ScopeMakeCommand::class, 'Illuminate\Foundation\Console\ServeCommand' => \Illuminate\Foundation\Console\ServeCommand::class, - 'Illuminate\Foundation\Console\ShowModelCommand' => \Illuminate\Foundation\Console\ShowModelCommand::class, 'Illuminate\Foundation\Console\StorageLinkCommand' => \Illuminate\Foundation\Console\StorageLinkCommand::class, + 'Illuminate\Foundation\Console\StorageUnlinkCommand' => \Illuminate\Foundation\Console\StorageUnlinkCommand::class, 'Illuminate\Foundation\Console\StubPublishCommand' => \Illuminate\Foundation\Console\StubPublishCommand::class, 'Illuminate\Foundation\Console\TestMakeCommand' => \Illuminate\Foundation\Console\TestMakeCommand::class, 'Illuminate\Foundation\Console\UpCommand' => \Illuminate\Foundation\Console\UpCommand::class, 'Illuminate\Foundation\Console\VendorPublishCommand' => \Illuminate\Foundation\Console\VendorPublishCommand::class, 'Illuminate\Foundation\Console\ViewCacheCommand' => \Illuminate\Foundation\Console\ViewCacheCommand::class, 'Illuminate\Foundation\Console\ViewClearCommand' => \Illuminate\Foundation\Console\ViewClearCommand::class, + 'Illuminate\Foundation\Console\ViewMakeCommand' => \Illuminate\Foundation\Console\ViewMakeCommand::class, 'Illuminate\Foundation\MaintenanceModeManager' => \Illuminate\Foundation\MaintenanceModeManager::class, 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, 'Illuminate\Foundation\Vite' => \Illuminate\Foundation\Vite::class, + 'Illuminate\Http\Client\Factory' => \Illuminate\Http\Client\Factory::class, 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, 'Illuminate\Notifications\Console\NotificationTableCommand' => \Illuminate\Notifications\Console\NotificationTableCommand::class, @@ -537,7 +565,7 @@ 'Illuminate\Session\Console\SessionTableCommand' => \Illuminate\Session\Console\SessionTableCommand::class, 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, - 'NunoMaduro\Collision\Contracts\Provider' => \NunoMaduro\Collision\Provider::class, + 'NunoMaduro\Collision\Provider' => \NunoMaduro\Collision\Provider::class, 'Pion\Laravel\ChunkUpload\Config\AbstractConfig' => \Pion\Laravel\ChunkUpload\Config\FileConfig::class, 'Pion\Laravel\ChunkUpload\Receiver\FileReceiver' => \Pion\Laravel\ChunkUpload\Receiver\FileReceiver::class, 'Pion\Laravel\ChunkUpload\Storage\ChunkStorage' => \Pion\Laravel\ChunkUpload\Storage\ChunkStorage::class, @@ -553,7 +581,6 @@ 'Spatie\LaravelIgnition\Recorders\LogRecorder\LogRecorder' => \Spatie\LaravelIgnition\Recorders\LogRecorder\LogRecorder::class, 'Spatie\LaravelIgnition\Recorders\QueryRecorder\QueryRecorder' => \Spatie\LaravelIgnition\Recorders\QueryRecorder\QueryRecorder::class, 'Spatie\LaravelIgnition\Support\SentReports' => \Spatie\LaravelIgnition\Support\SentReports::class, - 'Whoops\Handler\HandlerInterface' => \Spatie\LaravelIgnition\Renderers\IgnitionWhoopsHandler::class, 'auth' => \Illuminate\Auth\AuthManager::class, 'auth.driver' => \Illuminate\Auth\SessionGuard::class, 'auth.password' => \Illuminate\Auth\Passwords\PasswordBrokerManager::class, @@ -595,6 +622,8 @@ 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, 'migration.repository' => \Illuminate\Database\Migrations\DatabaseMigrationRepository::class, 'migrator' => \Illuminate\Database\Migrations\Migrator::class, + 'pipeline' => \Illuminate\Pipeline\Pipeline::class, + 'protector' => \Cybex\Protector\Protector::class, 'queue' => \Illuminate\Queue\QueueManager::class, 'queue.connection' => \Illuminate\Queue\DatabaseQueue::class, 'queue.failer' => \Illuminate\Queue\Failed\DatabaseUuidFailedJobProvider::class, @@ -626,10 +655,12 @@ 'Illuminate\Cache\Console\CacheTableCommand' => \Illuminate\Cache\Console\CacheTableCommand::class, 'Illuminate\Cache\Console\ClearCommand' => \Illuminate\Cache\Console\ClearCommand::class, 'Illuminate\Cache\Console\ForgetCommand' => \Illuminate\Cache\Console\ForgetCommand::class, + 'Illuminate\Cache\Console\PruneStaleTagsCommand' => \Illuminate\Cache\Console\PruneStaleTagsCommand::class, 'Illuminate\Cache\RateLimiter' => \Illuminate\Cache\RateLimiter::class, 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, 'Illuminate\Console\Scheduling\ScheduleClearCacheCommand' => \Illuminate\Console\Scheduling\ScheduleClearCacheCommand::class, 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, + 'Illuminate\Console\Scheduling\ScheduleInterruptCommand' => \Illuminate\Console\Scheduling\ScheduleInterruptCommand::class, 'Illuminate\Console\Scheduling\ScheduleListCommand' => \Illuminate\Console\Scheduling\ScheduleListCommand::class, 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::class, 'Illuminate\Console\Scheduling\ScheduleTestCommand' => \Illuminate\Console\Scheduling\ScheduleTestCommand::class, @@ -661,15 +692,18 @@ 'Illuminate\Database\Console\Seeds\SeedCommand' => \Illuminate\Database\Console\Seeds\SeedCommand::class, 'Illuminate\Database\Console\Seeds\SeederMakeCommand' => \Illuminate\Database\Console\Seeds\SeederMakeCommand::class, 'Illuminate\Database\Console\ShowCommand' => \Illuminate\Database\Console\ShowCommand::class, + 'Illuminate\Database\Console\ShowModelCommand' => \Illuminate\Database\Console\ShowModelCommand::class, 'Illuminate\Database\Console\TableCommand' => \Illuminate\Database\Console\TableCommand::class, 'Illuminate\Database\Console\WipeCommand' => \Illuminate\Database\Console\WipeCommand::class, 'Illuminate\Foundation\Console\AboutCommand' => \Illuminate\Foundation\Console\AboutCommand::class, 'Illuminate\Foundation\Console\CastMakeCommand' => \Illuminate\Foundation\Console\CastMakeCommand::class, + 'Illuminate\Foundation\Console\ChannelListCommand' => \Illuminate\Foundation\Console\ChannelListCommand::class, 'Illuminate\Foundation\Console\ChannelMakeCommand' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, 'Illuminate\Foundation\Console\ClearCompiledCommand' => \Illuminate\Foundation\Console\ClearCompiledCommand::class, 'Illuminate\Foundation\Console\ComponentMakeCommand' => \Illuminate\Foundation\Console\ComponentMakeCommand::class, 'Illuminate\Foundation\Console\ConfigCacheCommand' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, 'Illuminate\Foundation\Console\ConfigClearCommand' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'Illuminate\Foundation\Console\ConfigShowCommand' => \Illuminate\Foundation\Console\ConfigShowCommand::class, 'Illuminate\Foundation\Console\ConsoleMakeCommand' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, 'Illuminate\Foundation\Console\DocsCommand' => \Illuminate\Foundation\Console\DocsCommand::class, 'Illuminate\Foundation\Console\DownCommand' => \Illuminate\Foundation\Console\DownCommand::class, @@ -684,6 +718,7 @@ 'Illuminate\Foundation\Console\ExceptionMakeCommand' => \Illuminate\Foundation\Console\ExceptionMakeCommand::class, 'Illuminate\Foundation\Console\JobMakeCommand' => \Illuminate\Foundation\Console\JobMakeCommand::class, 'Illuminate\Foundation\Console\KeyGenerateCommand' => \Illuminate\Foundation\Console\KeyGenerateCommand::class, + 'Illuminate\Foundation\Console\LangPublishCommand' => \Illuminate\Foundation\Console\LangPublishCommand::class, 'Illuminate\Foundation\Console\ListenerMakeCommand' => \Illuminate\Foundation\Console\ListenerMakeCommand::class, 'Illuminate\Foundation\Console\MailMakeCommand' => \Illuminate\Foundation\Console\MailMakeCommand::class, 'Illuminate\Foundation\Console\ModelMakeCommand' => \Illuminate\Foundation\Console\ModelMakeCommand::class, @@ -702,18 +737,20 @@ 'Illuminate\Foundation\Console\RuleMakeCommand' => \Illuminate\Foundation\Console\RuleMakeCommand::class, 'Illuminate\Foundation\Console\ScopeMakeCommand' => \Illuminate\Foundation\Console\ScopeMakeCommand::class, 'Illuminate\Foundation\Console\ServeCommand' => \Illuminate\Foundation\Console\ServeCommand::class, - 'Illuminate\Foundation\Console\ShowModelCommand' => \Illuminate\Foundation\Console\ShowModelCommand::class, 'Illuminate\Foundation\Console\StorageLinkCommand' => \Illuminate\Foundation\Console\StorageLinkCommand::class, + 'Illuminate\Foundation\Console\StorageUnlinkCommand' => \Illuminate\Foundation\Console\StorageUnlinkCommand::class, 'Illuminate\Foundation\Console\StubPublishCommand' => \Illuminate\Foundation\Console\StubPublishCommand::class, 'Illuminate\Foundation\Console\TestMakeCommand' => \Illuminate\Foundation\Console\TestMakeCommand::class, 'Illuminate\Foundation\Console\UpCommand' => \Illuminate\Foundation\Console\UpCommand::class, 'Illuminate\Foundation\Console\VendorPublishCommand' => \Illuminate\Foundation\Console\VendorPublishCommand::class, 'Illuminate\Foundation\Console\ViewCacheCommand' => \Illuminate\Foundation\Console\ViewCacheCommand::class, 'Illuminate\Foundation\Console\ViewClearCommand' => \Illuminate\Foundation\Console\ViewClearCommand::class, + 'Illuminate\Foundation\Console\ViewMakeCommand' => \Illuminate\Foundation\Console\ViewMakeCommand::class, 'Illuminate\Foundation\MaintenanceModeManager' => \Illuminate\Foundation\MaintenanceModeManager::class, 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, 'Illuminate\Foundation\Vite' => \Illuminate\Foundation\Vite::class, + 'Illuminate\Http\Client\Factory' => \Illuminate\Http\Client\Factory::class, 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, 'Illuminate\Notifications\Console\NotificationTableCommand' => \Illuminate\Notifications\Console\NotificationTableCommand::class, @@ -739,7 +776,7 @@ 'Illuminate\Session\Console\SessionTableCommand' => \Illuminate\Session\Console\SessionTableCommand::class, 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, - 'NunoMaduro\Collision\Contracts\Provider' => \NunoMaduro\Collision\Provider::class, + 'NunoMaduro\Collision\Provider' => \NunoMaduro\Collision\Provider::class, 'Pion\Laravel\ChunkUpload\Config\AbstractConfig' => \Pion\Laravel\ChunkUpload\Config\FileConfig::class, 'Pion\Laravel\ChunkUpload\Receiver\FileReceiver' => \Pion\Laravel\ChunkUpload\Receiver\FileReceiver::class, 'Pion\Laravel\ChunkUpload\Storage\ChunkStorage' => \Pion\Laravel\ChunkUpload\Storage\ChunkStorage::class, @@ -755,7 +792,6 @@ 'Spatie\LaravelIgnition\Recorders\LogRecorder\LogRecorder' => \Spatie\LaravelIgnition\Recorders\LogRecorder\LogRecorder::class, 'Spatie\LaravelIgnition\Recorders\QueryRecorder\QueryRecorder' => \Spatie\LaravelIgnition\Recorders\QueryRecorder\QueryRecorder::class, 'Spatie\LaravelIgnition\Support\SentReports' => \Spatie\LaravelIgnition\Support\SentReports::class, - 'Whoops\Handler\HandlerInterface' => \Spatie\LaravelIgnition\Renderers\IgnitionWhoopsHandler::class, 'auth' => \Illuminate\Auth\AuthManager::class, 'auth.driver' => \Illuminate\Auth\SessionGuard::class, 'auth.password' => \Illuminate\Auth\Passwords\PasswordBrokerManager::class, @@ -797,6 +833,8 @@ 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, 'migration.repository' => \Illuminate\Database\Migrations\DatabaseMigrationRepository::class, 'migrator' => \Illuminate\Database\Migrations\Migrator::class, + 'pipeline' => \Illuminate\Pipeline\Pipeline::class, + 'protector' => \Cybex\Protector\Protector::class, 'queue' => \Illuminate\Queue\QueueManager::class, 'queue.connection' => \Illuminate\Queue\DatabaseQueue::class, 'queue.failer' => \Illuminate\Queue\Failed\DatabaseUuidFailedJobProvider::class, @@ -828,10 +866,12 @@ 'Illuminate\Cache\Console\CacheTableCommand' => \Illuminate\Cache\Console\CacheTableCommand::class, 'Illuminate\Cache\Console\ClearCommand' => \Illuminate\Cache\Console\ClearCommand::class, 'Illuminate\Cache\Console\ForgetCommand' => \Illuminate\Cache\Console\ForgetCommand::class, + 'Illuminate\Cache\Console\PruneStaleTagsCommand' => \Illuminate\Cache\Console\PruneStaleTagsCommand::class, 'Illuminate\Cache\RateLimiter' => \Illuminate\Cache\RateLimiter::class, 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, 'Illuminate\Console\Scheduling\ScheduleClearCacheCommand' => \Illuminate\Console\Scheduling\ScheduleClearCacheCommand::class, 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, + 'Illuminate\Console\Scheduling\ScheduleInterruptCommand' => \Illuminate\Console\Scheduling\ScheduleInterruptCommand::class, 'Illuminate\Console\Scheduling\ScheduleListCommand' => \Illuminate\Console\Scheduling\ScheduleListCommand::class, 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::class, 'Illuminate\Console\Scheduling\ScheduleTestCommand' => \Illuminate\Console\Scheduling\ScheduleTestCommand::class, @@ -863,15 +903,18 @@ 'Illuminate\Database\Console\Seeds\SeedCommand' => \Illuminate\Database\Console\Seeds\SeedCommand::class, 'Illuminate\Database\Console\Seeds\SeederMakeCommand' => \Illuminate\Database\Console\Seeds\SeederMakeCommand::class, 'Illuminate\Database\Console\ShowCommand' => \Illuminate\Database\Console\ShowCommand::class, + 'Illuminate\Database\Console\ShowModelCommand' => \Illuminate\Database\Console\ShowModelCommand::class, 'Illuminate\Database\Console\TableCommand' => \Illuminate\Database\Console\TableCommand::class, 'Illuminate\Database\Console\WipeCommand' => \Illuminate\Database\Console\WipeCommand::class, 'Illuminate\Foundation\Console\AboutCommand' => \Illuminate\Foundation\Console\AboutCommand::class, 'Illuminate\Foundation\Console\CastMakeCommand' => \Illuminate\Foundation\Console\CastMakeCommand::class, + 'Illuminate\Foundation\Console\ChannelListCommand' => \Illuminate\Foundation\Console\ChannelListCommand::class, 'Illuminate\Foundation\Console\ChannelMakeCommand' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, 'Illuminate\Foundation\Console\ClearCompiledCommand' => \Illuminate\Foundation\Console\ClearCompiledCommand::class, 'Illuminate\Foundation\Console\ComponentMakeCommand' => \Illuminate\Foundation\Console\ComponentMakeCommand::class, 'Illuminate\Foundation\Console\ConfigCacheCommand' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, 'Illuminate\Foundation\Console\ConfigClearCommand' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'Illuminate\Foundation\Console\ConfigShowCommand' => \Illuminate\Foundation\Console\ConfigShowCommand::class, 'Illuminate\Foundation\Console\ConsoleMakeCommand' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, 'Illuminate\Foundation\Console\DocsCommand' => \Illuminate\Foundation\Console\DocsCommand::class, 'Illuminate\Foundation\Console\DownCommand' => \Illuminate\Foundation\Console\DownCommand::class, @@ -886,6 +929,7 @@ 'Illuminate\Foundation\Console\ExceptionMakeCommand' => \Illuminate\Foundation\Console\ExceptionMakeCommand::class, 'Illuminate\Foundation\Console\JobMakeCommand' => \Illuminate\Foundation\Console\JobMakeCommand::class, 'Illuminate\Foundation\Console\KeyGenerateCommand' => \Illuminate\Foundation\Console\KeyGenerateCommand::class, + 'Illuminate\Foundation\Console\LangPublishCommand' => \Illuminate\Foundation\Console\LangPublishCommand::class, 'Illuminate\Foundation\Console\ListenerMakeCommand' => \Illuminate\Foundation\Console\ListenerMakeCommand::class, 'Illuminate\Foundation\Console\MailMakeCommand' => \Illuminate\Foundation\Console\MailMakeCommand::class, 'Illuminate\Foundation\Console\ModelMakeCommand' => \Illuminate\Foundation\Console\ModelMakeCommand::class, @@ -904,18 +948,20 @@ 'Illuminate\Foundation\Console\RuleMakeCommand' => \Illuminate\Foundation\Console\RuleMakeCommand::class, 'Illuminate\Foundation\Console\ScopeMakeCommand' => \Illuminate\Foundation\Console\ScopeMakeCommand::class, 'Illuminate\Foundation\Console\ServeCommand' => \Illuminate\Foundation\Console\ServeCommand::class, - 'Illuminate\Foundation\Console\ShowModelCommand' => \Illuminate\Foundation\Console\ShowModelCommand::class, 'Illuminate\Foundation\Console\StorageLinkCommand' => \Illuminate\Foundation\Console\StorageLinkCommand::class, + 'Illuminate\Foundation\Console\StorageUnlinkCommand' => \Illuminate\Foundation\Console\StorageUnlinkCommand::class, 'Illuminate\Foundation\Console\StubPublishCommand' => \Illuminate\Foundation\Console\StubPublishCommand::class, 'Illuminate\Foundation\Console\TestMakeCommand' => \Illuminate\Foundation\Console\TestMakeCommand::class, 'Illuminate\Foundation\Console\UpCommand' => \Illuminate\Foundation\Console\UpCommand::class, 'Illuminate\Foundation\Console\VendorPublishCommand' => \Illuminate\Foundation\Console\VendorPublishCommand::class, 'Illuminate\Foundation\Console\ViewCacheCommand' => \Illuminate\Foundation\Console\ViewCacheCommand::class, 'Illuminate\Foundation\Console\ViewClearCommand' => \Illuminate\Foundation\Console\ViewClearCommand::class, + 'Illuminate\Foundation\Console\ViewMakeCommand' => \Illuminate\Foundation\Console\ViewMakeCommand::class, 'Illuminate\Foundation\MaintenanceModeManager' => \Illuminate\Foundation\MaintenanceModeManager::class, 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, 'Illuminate\Foundation\Vite' => \Illuminate\Foundation\Vite::class, + 'Illuminate\Http\Client\Factory' => \Illuminate\Http\Client\Factory::class, 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, 'Illuminate\Notifications\Console\NotificationTableCommand' => \Illuminate\Notifications\Console\NotificationTableCommand::class, @@ -941,7 +987,7 @@ 'Illuminate\Session\Console\SessionTableCommand' => \Illuminate\Session\Console\SessionTableCommand::class, 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, - 'NunoMaduro\Collision\Contracts\Provider' => \NunoMaduro\Collision\Provider::class, + 'NunoMaduro\Collision\Provider' => \NunoMaduro\Collision\Provider::class, 'Pion\Laravel\ChunkUpload\Config\AbstractConfig' => \Pion\Laravel\ChunkUpload\Config\FileConfig::class, 'Pion\Laravel\ChunkUpload\Receiver\FileReceiver' => \Pion\Laravel\ChunkUpload\Receiver\FileReceiver::class, 'Pion\Laravel\ChunkUpload\Storage\ChunkStorage' => \Pion\Laravel\ChunkUpload\Storage\ChunkStorage::class, @@ -957,7 +1003,6 @@ 'Spatie\LaravelIgnition\Recorders\LogRecorder\LogRecorder' => \Spatie\LaravelIgnition\Recorders\LogRecorder\LogRecorder::class, 'Spatie\LaravelIgnition\Recorders\QueryRecorder\QueryRecorder' => \Spatie\LaravelIgnition\Recorders\QueryRecorder\QueryRecorder::class, 'Spatie\LaravelIgnition\Support\SentReports' => \Spatie\LaravelIgnition\Support\SentReports::class, - 'Whoops\Handler\HandlerInterface' => \Spatie\LaravelIgnition\Renderers\IgnitionWhoopsHandler::class, 'auth' => \Illuminate\Auth\AuthManager::class, 'auth.driver' => \Illuminate\Auth\SessionGuard::class, 'auth.password' => \Illuminate\Auth\Passwords\PasswordBrokerManager::class, @@ -999,6 +1044,8 @@ 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, 'migration.repository' => \Illuminate\Database\Migrations\DatabaseMigrationRepository::class, 'migrator' => \Illuminate\Database\Migrations\Migrator::class, + 'pipeline' => \Illuminate\Pipeline\Pipeline::class, + 'protector' => \Cybex\Protector\Protector::class, 'queue' => \Illuminate\Queue\QueueManager::class, 'queue.connection' => \Illuminate\Queue\DatabaseQueue::class, 'queue.failer' => \Illuminate\Queue\Failed\DatabaseUuidFailedJobProvider::class, @@ -1030,10 +1077,12 @@ 'Illuminate\Cache\Console\CacheTableCommand' => \Illuminate\Cache\Console\CacheTableCommand::class, 'Illuminate\Cache\Console\ClearCommand' => \Illuminate\Cache\Console\ClearCommand::class, 'Illuminate\Cache\Console\ForgetCommand' => \Illuminate\Cache\Console\ForgetCommand::class, + 'Illuminate\Cache\Console\PruneStaleTagsCommand' => \Illuminate\Cache\Console\PruneStaleTagsCommand::class, 'Illuminate\Cache\RateLimiter' => \Illuminate\Cache\RateLimiter::class, 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, 'Illuminate\Console\Scheduling\ScheduleClearCacheCommand' => \Illuminate\Console\Scheduling\ScheduleClearCacheCommand::class, 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, + 'Illuminate\Console\Scheduling\ScheduleInterruptCommand' => \Illuminate\Console\Scheduling\ScheduleInterruptCommand::class, 'Illuminate\Console\Scheduling\ScheduleListCommand' => \Illuminate\Console\Scheduling\ScheduleListCommand::class, 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::class, 'Illuminate\Console\Scheduling\ScheduleTestCommand' => \Illuminate\Console\Scheduling\ScheduleTestCommand::class, @@ -1065,15 +1114,18 @@ 'Illuminate\Database\Console\Seeds\SeedCommand' => \Illuminate\Database\Console\Seeds\SeedCommand::class, 'Illuminate\Database\Console\Seeds\SeederMakeCommand' => \Illuminate\Database\Console\Seeds\SeederMakeCommand::class, 'Illuminate\Database\Console\ShowCommand' => \Illuminate\Database\Console\ShowCommand::class, + 'Illuminate\Database\Console\ShowModelCommand' => \Illuminate\Database\Console\ShowModelCommand::class, 'Illuminate\Database\Console\TableCommand' => \Illuminate\Database\Console\TableCommand::class, 'Illuminate\Database\Console\WipeCommand' => \Illuminate\Database\Console\WipeCommand::class, 'Illuminate\Foundation\Console\AboutCommand' => \Illuminate\Foundation\Console\AboutCommand::class, 'Illuminate\Foundation\Console\CastMakeCommand' => \Illuminate\Foundation\Console\CastMakeCommand::class, + 'Illuminate\Foundation\Console\ChannelListCommand' => \Illuminate\Foundation\Console\ChannelListCommand::class, 'Illuminate\Foundation\Console\ChannelMakeCommand' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, 'Illuminate\Foundation\Console\ClearCompiledCommand' => \Illuminate\Foundation\Console\ClearCompiledCommand::class, 'Illuminate\Foundation\Console\ComponentMakeCommand' => \Illuminate\Foundation\Console\ComponentMakeCommand::class, 'Illuminate\Foundation\Console\ConfigCacheCommand' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, 'Illuminate\Foundation\Console\ConfigClearCommand' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'Illuminate\Foundation\Console\ConfigShowCommand' => \Illuminate\Foundation\Console\ConfigShowCommand::class, 'Illuminate\Foundation\Console\ConsoleMakeCommand' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, 'Illuminate\Foundation\Console\DocsCommand' => \Illuminate\Foundation\Console\DocsCommand::class, 'Illuminate\Foundation\Console\DownCommand' => \Illuminate\Foundation\Console\DownCommand::class, @@ -1088,6 +1140,7 @@ 'Illuminate\Foundation\Console\ExceptionMakeCommand' => \Illuminate\Foundation\Console\ExceptionMakeCommand::class, 'Illuminate\Foundation\Console\JobMakeCommand' => \Illuminate\Foundation\Console\JobMakeCommand::class, 'Illuminate\Foundation\Console\KeyGenerateCommand' => \Illuminate\Foundation\Console\KeyGenerateCommand::class, + 'Illuminate\Foundation\Console\LangPublishCommand' => \Illuminate\Foundation\Console\LangPublishCommand::class, 'Illuminate\Foundation\Console\ListenerMakeCommand' => \Illuminate\Foundation\Console\ListenerMakeCommand::class, 'Illuminate\Foundation\Console\MailMakeCommand' => \Illuminate\Foundation\Console\MailMakeCommand::class, 'Illuminate\Foundation\Console\ModelMakeCommand' => \Illuminate\Foundation\Console\ModelMakeCommand::class, @@ -1106,18 +1159,20 @@ 'Illuminate\Foundation\Console\RuleMakeCommand' => \Illuminate\Foundation\Console\RuleMakeCommand::class, 'Illuminate\Foundation\Console\ScopeMakeCommand' => \Illuminate\Foundation\Console\ScopeMakeCommand::class, 'Illuminate\Foundation\Console\ServeCommand' => \Illuminate\Foundation\Console\ServeCommand::class, - 'Illuminate\Foundation\Console\ShowModelCommand' => \Illuminate\Foundation\Console\ShowModelCommand::class, 'Illuminate\Foundation\Console\StorageLinkCommand' => \Illuminate\Foundation\Console\StorageLinkCommand::class, + 'Illuminate\Foundation\Console\StorageUnlinkCommand' => \Illuminate\Foundation\Console\StorageUnlinkCommand::class, 'Illuminate\Foundation\Console\StubPublishCommand' => \Illuminate\Foundation\Console\StubPublishCommand::class, 'Illuminate\Foundation\Console\TestMakeCommand' => \Illuminate\Foundation\Console\TestMakeCommand::class, 'Illuminate\Foundation\Console\UpCommand' => \Illuminate\Foundation\Console\UpCommand::class, 'Illuminate\Foundation\Console\VendorPublishCommand' => \Illuminate\Foundation\Console\VendorPublishCommand::class, 'Illuminate\Foundation\Console\ViewCacheCommand' => \Illuminate\Foundation\Console\ViewCacheCommand::class, 'Illuminate\Foundation\Console\ViewClearCommand' => \Illuminate\Foundation\Console\ViewClearCommand::class, + 'Illuminate\Foundation\Console\ViewMakeCommand' => \Illuminate\Foundation\Console\ViewMakeCommand::class, 'Illuminate\Foundation\MaintenanceModeManager' => \Illuminate\Foundation\MaintenanceModeManager::class, 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, 'Illuminate\Foundation\Vite' => \Illuminate\Foundation\Vite::class, + 'Illuminate\Http\Client\Factory' => \Illuminate\Http\Client\Factory::class, 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, 'Illuminate\Notifications\Console\NotificationTableCommand' => \Illuminate\Notifications\Console\NotificationTableCommand::class, @@ -1143,7 +1198,7 @@ 'Illuminate\Session\Console\SessionTableCommand' => \Illuminate\Session\Console\SessionTableCommand::class, 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, - 'NunoMaduro\Collision\Contracts\Provider' => \NunoMaduro\Collision\Provider::class, + 'NunoMaduro\Collision\Provider' => \NunoMaduro\Collision\Provider::class, 'Pion\Laravel\ChunkUpload\Config\AbstractConfig' => \Pion\Laravel\ChunkUpload\Config\FileConfig::class, 'Pion\Laravel\ChunkUpload\Receiver\FileReceiver' => \Pion\Laravel\ChunkUpload\Receiver\FileReceiver::class, 'Pion\Laravel\ChunkUpload\Storage\ChunkStorage' => \Pion\Laravel\ChunkUpload\Storage\ChunkStorage::class, @@ -1159,7 +1214,6 @@ 'Spatie\LaravelIgnition\Recorders\LogRecorder\LogRecorder' => \Spatie\LaravelIgnition\Recorders\LogRecorder\LogRecorder::class, 'Spatie\LaravelIgnition\Recorders\QueryRecorder\QueryRecorder' => \Spatie\LaravelIgnition\Recorders\QueryRecorder\QueryRecorder::class, 'Spatie\LaravelIgnition\Support\SentReports' => \Spatie\LaravelIgnition\Support\SentReports::class, - 'Whoops\Handler\HandlerInterface' => \Spatie\LaravelIgnition\Renderers\IgnitionWhoopsHandler::class, 'auth' => \Illuminate\Auth\AuthManager::class, 'auth.driver' => \Illuminate\Auth\SessionGuard::class, 'auth.password' => \Illuminate\Auth\Passwords\PasswordBrokerManager::class, @@ -1201,6 +1255,8 @@ 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, 'migration.repository' => \Illuminate\Database\Migrations\DatabaseMigrationRepository::class, 'migrator' => \Illuminate\Database\Migrations\Migrator::class, + 'pipeline' => \Illuminate\Pipeline\Pipeline::class, + 'protector' => \Cybex\Protector\Protector::class, 'queue' => \Illuminate\Queue\QueueManager::class, 'queue.connection' => \Illuminate\Queue\DatabaseQueue::class, 'queue.failer' => \Illuminate\Queue\Failed\DatabaseUuidFailedJobProvider::class, @@ -1232,10 +1288,12 @@ 'Illuminate\Cache\Console\CacheTableCommand' => \Illuminate\Cache\Console\CacheTableCommand::class, 'Illuminate\Cache\Console\ClearCommand' => \Illuminate\Cache\Console\ClearCommand::class, 'Illuminate\Cache\Console\ForgetCommand' => \Illuminate\Cache\Console\ForgetCommand::class, + 'Illuminate\Cache\Console\PruneStaleTagsCommand' => \Illuminate\Cache\Console\PruneStaleTagsCommand::class, 'Illuminate\Cache\RateLimiter' => \Illuminate\Cache\RateLimiter::class, 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, 'Illuminate\Console\Scheduling\ScheduleClearCacheCommand' => \Illuminate\Console\Scheduling\ScheduleClearCacheCommand::class, 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, + 'Illuminate\Console\Scheduling\ScheduleInterruptCommand' => \Illuminate\Console\Scheduling\ScheduleInterruptCommand::class, 'Illuminate\Console\Scheduling\ScheduleListCommand' => \Illuminate\Console\Scheduling\ScheduleListCommand::class, 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::class, 'Illuminate\Console\Scheduling\ScheduleTestCommand' => \Illuminate\Console\Scheduling\ScheduleTestCommand::class, @@ -1267,15 +1325,18 @@ 'Illuminate\Database\Console\Seeds\SeedCommand' => \Illuminate\Database\Console\Seeds\SeedCommand::class, 'Illuminate\Database\Console\Seeds\SeederMakeCommand' => \Illuminate\Database\Console\Seeds\SeederMakeCommand::class, 'Illuminate\Database\Console\ShowCommand' => \Illuminate\Database\Console\ShowCommand::class, + 'Illuminate\Database\Console\ShowModelCommand' => \Illuminate\Database\Console\ShowModelCommand::class, 'Illuminate\Database\Console\TableCommand' => \Illuminate\Database\Console\TableCommand::class, 'Illuminate\Database\Console\WipeCommand' => \Illuminate\Database\Console\WipeCommand::class, 'Illuminate\Foundation\Console\AboutCommand' => \Illuminate\Foundation\Console\AboutCommand::class, 'Illuminate\Foundation\Console\CastMakeCommand' => \Illuminate\Foundation\Console\CastMakeCommand::class, + 'Illuminate\Foundation\Console\ChannelListCommand' => \Illuminate\Foundation\Console\ChannelListCommand::class, 'Illuminate\Foundation\Console\ChannelMakeCommand' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, 'Illuminate\Foundation\Console\ClearCompiledCommand' => \Illuminate\Foundation\Console\ClearCompiledCommand::class, 'Illuminate\Foundation\Console\ComponentMakeCommand' => \Illuminate\Foundation\Console\ComponentMakeCommand::class, 'Illuminate\Foundation\Console\ConfigCacheCommand' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, 'Illuminate\Foundation\Console\ConfigClearCommand' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'Illuminate\Foundation\Console\ConfigShowCommand' => \Illuminate\Foundation\Console\ConfigShowCommand::class, 'Illuminate\Foundation\Console\ConsoleMakeCommand' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, 'Illuminate\Foundation\Console\DocsCommand' => \Illuminate\Foundation\Console\DocsCommand::class, 'Illuminate\Foundation\Console\DownCommand' => \Illuminate\Foundation\Console\DownCommand::class, @@ -1290,6 +1351,7 @@ 'Illuminate\Foundation\Console\ExceptionMakeCommand' => \Illuminate\Foundation\Console\ExceptionMakeCommand::class, 'Illuminate\Foundation\Console\JobMakeCommand' => \Illuminate\Foundation\Console\JobMakeCommand::class, 'Illuminate\Foundation\Console\KeyGenerateCommand' => \Illuminate\Foundation\Console\KeyGenerateCommand::class, + 'Illuminate\Foundation\Console\LangPublishCommand' => \Illuminate\Foundation\Console\LangPublishCommand::class, 'Illuminate\Foundation\Console\ListenerMakeCommand' => \Illuminate\Foundation\Console\ListenerMakeCommand::class, 'Illuminate\Foundation\Console\MailMakeCommand' => \Illuminate\Foundation\Console\MailMakeCommand::class, 'Illuminate\Foundation\Console\ModelMakeCommand' => \Illuminate\Foundation\Console\ModelMakeCommand::class, @@ -1308,18 +1370,20 @@ 'Illuminate\Foundation\Console\RuleMakeCommand' => \Illuminate\Foundation\Console\RuleMakeCommand::class, 'Illuminate\Foundation\Console\ScopeMakeCommand' => \Illuminate\Foundation\Console\ScopeMakeCommand::class, 'Illuminate\Foundation\Console\ServeCommand' => \Illuminate\Foundation\Console\ServeCommand::class, - 'Illuminate\Foundation\Console\ShowModelCommand' => \Illuminate\Foundation\Console\ShowModelCommand::class, 'Illuminate\Foundation\Console\StorageLinkCommand' => \Illuminate\Foundation\Console\StorageLinkCommand::class, + 'Illuminate\Foundation\Console\StorageUnlinkCommand' => \Illuminate\Foundation\Console\StorageUnlinkCommand::class, 'Illuminate\Foundation\Console\StubPublishCommand' => \Illuminate\Foundation\Console\StubPublishCommand::class, 'Illuminate\Foundation\Console\TestMakeCommand' => \Illuminate\Foundation\Console\TestMakeCommand::class, 'Illuminate\Foundation\Console\UpCommand' => \Illuminate\Foundation\Console\UpCommand::class, 'Illuminate\Foundation\Console\VendorPublishCommand' => \Illuminate\Foundation\Console\VendorPublishCommand::class, 'Illuminate\Foundation\Console\ViewCacheCommand' => \Illuminate\Foundation\Console\ViewCacheCommand::class, 'Illuminate\Foundation\Console\ViewClearCommand' => \Illuminate\Foundation\Console\ViewClearCommand::class, + 'Illuminate\Foundation\Console\ViewMakeCommand' => \Illuminate\Foundation\Console\ViewMakeCommand::class, 'Illuminate\Foundation\MaintenanceModeManager' => \Illuminate\Foundation\MaintenanceModeManager::class, 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, 'Illuminate\Foundation\Vite' => \Illuminate\Foundation\Vite::class, + 'Illuminate\Http\Client\Factory' => \Illuminate\Http\Client\Factory::class, 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, 'Illuminate\Notifications\Console\NotificationTableCommand' => \Illuminate\Notifications\Console\NotificationTableCommand::class, @@ -1345,7 +1409,7 @@ 'Illuminate\Session\Console\SessionTableCommand' => \Illuminate\Session\Console\SessionTableCommand::class, 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, - 'NunoMaduro\Collision\Contracts\Provider' => \NunoMaduro\Collision\Provider::class, + 'NunoMaduro\Collision\Provider' => \NunoMaduro\Collision\Provider::class, 'Pion\Laravel\ChunkUpload\Config\AbstractConfig' => \Pion\Laravel\ChunkUpload\Config\FileConfig::class, 'Pion\Laravel\ChunkUpload\Receiver\FileReceiver' => \Pion\Laravel\ChunkUpload\Receiver\FileReceiver::class, 'Pion\Laravel\ChunkUpload\Storage\ChunkStorage' => \Pion\Laravel\ChunkUpload\Storage\ChunkStorage::class, @@ -1361,7 +1425,6 @@ 'Spatie\LaravelIgnition\Recorders\LogRecorder\LogRecorder' => \Spatie\LaravelIgnition\Recorders\LogRecorder\LogRecorder::class, 'Spatie\LaravelIgnition\Recorders\QueryRecorder\QueryRecorder' => \Spatie\LaravelIgnition\Recorders\QueryRecorder\QueryRecorder::class, 'Spatie\LaravelIgnition\Support\SentReports' => \Spatie\LaravelIgnition\Support\SentReports::class, - 'Whoops\Handler\HandlerInterface' => \Spatie\LaravelIgnition\Renderers\IgnitionWhoopsHandler::class, 'auth' => \Illuminate\Auth\AuthManager::class, 'auth.driver' => \Illuminate\Auth\SessionGuard::class, 'auth.password' => \Illuminate\Auth\Passwords\PasswordBrokerManager::class, @@ -1403,6 +1466,8 @@ 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, 'migration.repository' => \Illuminate\Database\Migrations\DatabaseMigrationRepository::class, 'migrator' => \Illuminate\Database\Migrations\Migrator::class, + 'pipeline' => \Illuminate\Pipeline\Pipeline::class, + 'protector' => \Cybex\Protector\Protector::class, 'queue' => \Illuminate\Queue\QueueManager::class, 'queue.connection' => \Illuminate\Queue\DatabaseQueue::class, 'queue.failer' => \Illuminate\Queue\Failed\DatabaseUuidFailedJobProvider::class, @@ -1434,10 +1499,12 @@ 'Illuminate\Cache\Console\CacheTableCommand' => \Illuminate\Cache\Console\CacheTableCommand::class, 'Illuminate\Cache\Console\ClearCommand' => \Illuminate\Cache\Console\ClearCommand::class, 'Illuminate\Cache\Console\ForgetCommand' => \Illuminate\Cache\Console\ForgetCommand::class, + 'Illuminate\Cache\Console\PruneStaleTagsCommand' => \Illuminate\Cache\Console\PruneStaleTagsCommand::class, 'Illuminate\Cache\RateLimiter' => \Illuminate\Cache\RateLimiter::class, 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, 'Illuminate\Console\Scheduling\ScheduleClearCacheCommand' => \Illuminate\Console\Scheduling\ScheduleClearCacheCommand::class, 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, + 'Illuminate\Console\Scheduling\ScheduleInterruptCommand' => \Illuminate\Console\Scheduling\ScheduleInterruptCommand::class, 'Illuminate\Console\Scheduling\ScheduleListCommand' => \Illuminate\Console\Scheduling\ScheduleListCommand::class, 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::class, 'Illuminate\Console\Scheduling\ScheduleTestCommand' => \Illuminate\Console\Scheduling\ScheduleTestCommand::class, @@ -1469,15 +1536,18 @@ 'Illuminate\Database\Console\Seeds\SeedCommand' => \Illuminate\Database\Console\Seeds\SeedCommand::class, 'Illuminate\Database\Console\Seeds\SeederMakeCommand' => \Illuminate\Database\Console\Seeds\SeederMakeCommand::class, 'Illuminate\Database\Console\ShowCommand' => \Illuminate\Database\Console\ShowCommand::class, + 'Illuminate\Database\Console\ShowModelCommand' => \Illuminate\Database\Console\ShowModelCommand::class, 'Illuminate\Database\Console\TableCommand' => \Illuminate\Database\Console\TableCommand::class, 'Illuminate\Database\Console\WipeCommand' => \Illuminate\Database\Console\WipeCommand::class, 'Illuminate\Foundation\Console\AboutCommand' => \Illuminate\Foundation\Console\AboutCommand::class, 'Illuminate\Foundation\Console\CastMakeCommand' => \Illuminate\Foundation\Console\CastMakeCommand::class, + 'Illuminate\Foundation\Console\ChannelListCommand' => \Illuminate\Foundation\Console\ChannelListCommand::class, 'Illuminate\Foundation\Console\ChannelMakeCommand' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, 'Illuminate\Foundation\Console\ClearCompiledCommand' => \Illuminate\Foundation\Console\ClearCompiledCommand::class, 'Illuminate\Foundation\Console\ComponentMakeCommand' => \Illuminate\Foundation\Console\ComponentMakeCommand::class, 'Illuminate\Foundation\Console\ConfigCacheCommand' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, 'Illuminate\Foundation\Console\ConfigClearCommand' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'Illuminate\Foundation\Console\ConfigShowCommand' => \Illuminate\Foundation\Console\ConfigShowCommand::class, 'Illuminate\Foundation\Console\ConsoleMakeCommand' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, 'Illuminate\Foundation\Console\DocsCommand' => \Illuminate\Foundation\Console\DocsCommand::class, 'Illuminate\Foundation\Console\DownCommand' => \Illuminate\Foundation\Console\DownCommand::class, @@ -1492,6 +1562,7 @@ 'Illuminate\Foundation\Console\ExceptionMakeCommand' => \Illuminate\Foundation\Console\ExceptionMakeCommand::class, 'Illuminate\Foundation\Console\JobMakeCommand' => \Illuminate\Foundation\Console\JobMakeCommand::class, 'Illuminate\Foundation\Console\KeyGenerateCommand' => \Illuminate\Foundation\Console\KeyGenerateCommand::class, + 'Illuminate\Foundation\Console\LangPublishCommand' => \Illuminate\Foundation\Console\LangPublishCommand::class, 'Illuminate\Foundation\Console\ListenerMakeCommand' => \Illuminate\Foundation\Console\ListenerMakeCommand::class, 'Illuminate\Foundation\Console\MailMakeCommand' => \Illuminate\Foundation\Console\MailMakeCommand::class, 'Illuminate\Foundation\Console\ModelMakeCommand' => \Illuminate\Foundation\Console\ModelMakeCommand::class, @@ -1510,18 +1581,20 @@ 'Illuminate\Foundation\Console\RuleMakeCommand' => \Illuminate\Foundation\Console\RuleMakeCommand::class, 'Illuminate\Foundation\Console\ScopeMakeCommand' => \Illuminate\Foundation\Console\ScopeMakeCommand::class, 'Illuminate\Foundation\Console\ServeCommand' => \Illuminate\Foundation\Console\ServeCommand::class, - 'Illuminate\Foundation\Console\ShowModelCommand' => \Illuminate\Foundation\Console\ShowModelCommand::class, 'Illuminate\Foundation\Console\StorageLinkCommand' => \Illuminate\Foundation\Console\StorageLinkCommand::class, + 'Illuminate\Foundation\Console\StorageUnlinkCommand' => \Illuminate\Foundation\Console\StorageUnlinkCommand::class, 'Illuminate\Foundation\Console\StubPublishCommand' => \Illuminate\Foundation\Console\StubPublishCommand::class, 'Illuminate\Foundation\Console\TestMakeCommand' => \Illuminate\Foundation\Console\TestMakeCommand::class, 'Illuminate\Foundation\Console\UpCommand' => \Illuminate\Foundation\Console\UpCommand::class, 'Illuminate\Foundation\Console\VendorPublishCommand' => \Illuminate\Foundation\Console\VendorPublishCommand::class, 'Illuminate\Foundation\Console\ViewCacheCommand' => \Illuminate\Foundation\Console\ViewCacheCommand::class, 'Illuminate\Foundation\Console\ViewClearCommand' => \Illuminate\Foundation\Console\ViewClearCommand::class, + 'Illuminate\Foundation\Console\ViewMakeCommand' => \Illuminate\Foundation\Console\ViewMakeCommand::class, 'Illuminate\Foundation\MaintenanceModeManager' => \Illuminate\Foundation\MaintenanceModeManager::class, 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, 'Illuminate\Foundation\Vite' => \Illuminate\Foundation\Vite::class, + 'Illuminate\Http\Client\Factory' => \Illuminate\Http\Client\Factory::class, 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, 'Illuminate\Notifications\Console\NotificationTableCommand' => \Illuminate\Notifications\Console\NotificationTableCommand::class, @@ -1547,7 +1620,7 @@ 'Illuminate\Session\Console\SessionTableCommand' => \Illuminate\Session\Console\SessionTableCommand::class, 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, - 'NunoMaduro\Collision\Contracts\Provider' => \NunoMaduro\Collision\Provider::class, + 'NunoMaduro\Collision\Provider' => \NunoMaduro\Collision\Provider::class, 'Pion\Laravel\ChunkUpload\Config\AbstractConfig' => \Pion\Laravel\ChunkUpload\Config\FileConfig::class, 'Pion\Laravel\ChunkUpload\Receiver\FileReceiver' => \Pion\Laravel\ChunkUpload\Receiver\FileReceiver::class, 'Pion\Laravel\ChunkUpload\Storage\ChunkStorage' => \Pion\Laravel\ChunkUpload\Storage\ChunkStorage::class, @@ -1563,7 +1636,6 @@ 'Spatie\LaravelIgnition\Recorders\LogRecorder\LogRecorder' => \Spatie\LaravelIgnition\Recorders\LogRecorder\LogRecorder::class, 'Spatie\LaravelIgnition\Recorders\QueryRecorder\QueryRecorder' => \Spatie\LaravelIgnition\Recorders\QueryRecorder\QueryRecorder::class, 'Spatie\LaravelIgnition\Support\SentReports' => \Spatie\LaravelIgnition\Support\SentReports::class, - 'Whoops\Handler\HandlerInterface' => \Spatie\LaravelIgnition\Renderers\IgnitionWhoopsHandler::class, 'auth' => \Illuminate\Auth\AuthManager::class, 'auth.driver' => \Illuminate\Auth\SessionGuard::class, 'auth.password' => \Illuminate\Auth\Passwords\PasswordBrokerManager::class, @@ -1605,6 +1677,8 @@ 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, 'migration.repository' => \Illuminate\Database\Migrations\DatabaseMigrationRepository::class, 'migrator' => \Illuminate\Database\Migrations\Migrator::class, + 'pipeline' => \Illuminate\Pipeline\Pipeline::class, + 'protector' => \Cybex\Protector\Protector::class, 'queue' => \Illuminate\Queue\QueueManager::class, 'queue.connection' => \Illuminate\Queue\DatabaseQueue::class, 'queue.failer' => \Illuminate\Queue\Failed\DatabaseUuidFailedJobProvider::class, @@ -1636,10 +1710,12 @@ 'Illuminate\Cache\Console\CacheTableCommand' => \Illuminate\Cache\Console\CacheTableCommand::class, 'Illuminate\Cache\Console\ClearCommand' => \Illuminate\Cache\Console\ClearCommand::class, 'Illuminate\Cache\Console\ForgetCommand' => \Illuminate\Cache\Console\ForgetCommand::class, + 'Illuminate\Cache\Console\PruneStaleTagsCommand' => \Illuminate\Cache\Console\PruneStaleTagsCommand::class, 'Illuminate\Cache\RateLimiter' => \Illuminate\Cache\RateLimiter::class, 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, 'Illuminate\Console\Scheduling\ScheduleClearCacheCommand' => \Illuminate\Console\Scheduling\ScheduleClearCacheCommand::class, 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, + 'Illuminate\Console\Scheduling\ScheduleInterruptCommand' => \Illuminate\Console\Scheduling\ScheduleInterruptCommand::class, 'Illuminate\Console\Scheduling\ScheduleListCommand' => \Illuminate\Console\Scheduling\ScheduleListCommand::class, 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::class, 'Illuminate\Console\Scheduling\ScheduleTestCommand' => \Illuminate\Console\Scheduling\ScheduleTestCommand::class, @@ -1671,15 +1747,18 @@ 'Illuminate\Database\Console\Seeds\SeedCommand' => \Illuminate\Database\Console\Seeds\SeedCommand::class, 'Illuminate\Database\Console\Seeds\SeederMakeCommand' => \Illuminate\Database\Console\Seeds\SeederMakeCommand::class, 'Illuminate\Database\Console\ShowCommand' => \Illuminate\Database\Console\ShowCommand::class, + 'Illuminate\Database\Console\ShowModelCommand' => \Illuminate\Database\Console\ShowModelCommand::class, 'Illuminate\Database\Console\TableCommand' => \Illuminate\Database\Console\TableCommand::class, 'Illuminate\Database\Console\WipeCommand' => \Illuminate\Database\Console\WipeCommand::class, 'Illuminate\Foundation\Console\AboutCommand' => \Illuminate\Foundation\Console\AboutCommand::class, 'Illuminate\Foundation\Console\CastMakeCommand' => \Illuminate\Foundation\Console\CastMakeCommand::class, + 'Illuminate\Foundation\Console\ChannelListCommand' => \Illuminate\Foundation\Console\ChannelListCommand::class, 'Illuminate\Foundation\Console\ChannelMakeCommand' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, 'Illuminate\Foundation\Console\ClearCompiledCommand' => \Illuminate\Foundation\Console\ClearCompiledCommand::class, 'Illuminate\Foundation\Console\ComponentMakeCommand' => \Illuminate\Foundation\Console\ComponentMakeCommand::class, 'Illuminate\Foundation\Console\ConfigCacheCommand' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, 'Illuminate\Foundation\Console\ConfigClearCommand' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'Illuminate\Foundation\Console\ConfigShowCommand' => \Illuminate\Foundation\Console\ConfigShowCommand::class, 'Illuminate\Foundation\Console\ConsoleMakeCommand' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, 'Illuminate\Foundation\Console\DocsCommand' => \Illuminate\Foundation\Console\DocsCommand::class, 'Illuminate\Foundation\Console\DownCommand' => \Illuminate\Foundation\Console\DownCommand::class, @@ -1694,6 +1773,7 @@ 'Illuminate\Foundation\Console\ExceptionMakeCommand' => \Illuminate\Foundation\Console\ExceptionMakeCommand::class, 'Illuminate\Foundation\Console\JobMakeCommand' => \Illuminate\Foundation\Console\JobMakeCommand::class, 'Illuminate\Foundation\Console\KeyGenerateCommand' => \Illuminate\Foundation\Console\KeyGenerateCommand::class, + 'Illuminate\Foundation\Console\LangPublishCommand' => \Illuminate\Foundation\Console\LangPublishCommand::class, 'Illuminate\Foundation\Console\ListenerMakeCommand' => \Illuminate\Foundation\Console\ListenerMakeCommand::class, 'Illuminate\Foundation\Console\MailMakeCommand' => \Illuminate\Foundation\Console\MailMakeCommand::class, 'Illuminate\Foundation\Console\ModelMakeCommand' => \Illuminate\Foundation\Console\ModelMakeCommand::class, @@ -1712,18 +1792,20 @@ 'Illuminate\Foundation\Console\RuleMakeCommand' => \Illuminate\Foundation\Console\RuleMakeCommand::class, 'Illuminate\Foundation\Console\ScopeMakeCommand' => \Illuminate\Foundation\Console\ScopeMakeCommand::class, 'Illuminate\Foundation\Console\ServeCommand' => \Illuminate\Foundation\Console\ServeCommand::class, - 'Illuminate\Foundation\Console\ShowModelCommand' => \Illuminate\Foundation\Console\ShowModelCommand::class, 'Illuminate\Foundation\Console\StorageLinkCommand' => \Illuminate\Foundation\Console\StorageLinkCommand::class, + 'Illuminate\Foundation\Console\StorageUnlinkCommand' => \Illuminate\Foundation\Console\StorageUnlinkCommand::class, 'Illuminate\Foundation\Console\StubPublishCommand' => \Illuminate\Foundation\Console\StubPublishCommand::class, 'Illuminate\Foundation\Console\TestMakeCommand' => \Illuminate\Foundation\Console\TestMakeCommand::class, 'Illuminate\Foundation\Console\UpCommand' => \Illuminate\Foundation\Console\UpCommand::class, 'Illuminate\Foundation\Console\VendorPublishCommand' => \Illuminate\Foundation\Console\VendorPublishCommand::class, 'Illuminate\Foundation\Console\ViewCacheCommand' => \Illuminate\Foundation\Console\ViewCacheCommand::class, 'Illuminate\Foundation\Console\ViewClearCommand' => \Illuminate\Foundation\Console\ViewClearCommand::class, + 'Illuminate\Foundation\Console\ViewMakeCommand' => \Illuminate\Foundation\Console\ViewMakeCommand::class, 'Illuminate\Foundation\MaintenanceModeManager' => \Illuminate\Foundation\MaintenanceModeManager::class, 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, 'Illuminate\Foundation\Vite' => \Illuminate\Foundation\Vite::class, + 'Illuminate\Http\Client\Factory' => \Illuminate\Http\Client\Factory::class, 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, 'Illuminate\Notifications\Console\NotificationTableCommand' => \Illuminate\Notifications\Console\NotificationTableCommand::class, @@ -1749,7 +1831,7 @@ 'Illuminate\Session\Console\SessionTableCommand' => \Illuminate\Session\Console\SessionTableCommand::class, 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, - 'NunoMaduro\Collision\Contracts\Provider' => \NunoMaduro\Collision\Provider::class, + 'NunoMaduro\Collision\Provider' => \NunoMaduro\Collision\Provider::class, 'Pion\Laravel\ChunkUpload\Config\AbstractConfig' => \Pion\Laravel\ChunkUpload\Config\FileConfig::class, 'Pion\Laravel\ChunkUpload\Receiver\FileReceiver' => \Pion\Laravel\ChunkUpload\Receiver\FileReceiver::class, 'Pion\Laravel\ChunkUpload\Storage\ChunkStorage' => \Pion\Laravel\ChunkUpload\Storage\ChunkStorage::class, @@ -1765,7 +1847,6 @@ 'Spatie\LaravelIgnition\Recorders\LogRecorder\LogRecorder' => \Spatie\LaravelIgnition\Recorders\LogRecorder\LogRecorder::class, 'Spatie\LaravelIgnition\Recorders\QueryRecorder\QueryRecorder' => \Spatie\LaravelIgnition\Recorders\QueryRecorder\QueryRecorder::class, 'Spatie\LaravelIgnition\Support\SentReports' => \Spatie\LaravelIgnition\Support\SentReports::class, - 'Whoops\Handler\HandlerInterface' => \Spatie\LaravelIgnition\Renderers\IgnitionWhoopsHandler::class, 'auth' => \Illuminate\Auth\AuthManager::class, 'auth.driver' => \Illuminate\Auth\SessionGuard::class, 'auth.password' => \Illuminate\Auth\Passwords\PasswordBrokerManager::class, @@ -1807,6 +1888,8 @@ 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, 'migration.repository' => \Illuminate\Database\Migrations\DatabaseMigrationRepository::class, 'migrator' => \Illuminate\Database\Migrations\Migrator::class, + 'pipeline' => \Illuminate\Pipeline\Pipeline::class, + 'protector' => \Cybex\Protector\Protector::class, 'queue' => \Illuminate\Queue\QueueManager::class, 'queue.connection' => \Illuminate\Queue\DatabaseQueue::class, 'queue.failer' => \Illuminate\Queue\Failed\DatabaseUuidFailedJobProvider::class, @@ -1838,10 +1921,12 @@ 'Illuminate\Cache\Console\CacheTableCommand' => \Illuminate\Cache\Console\CacheTableCommand::class, 'Illuminate\Cache\Console\ClearCommand' => \Illuminate\Cache\Console\ClearCommand::class, 'Illuminate\Cache\Console\ForgetCommand' => \Illuminate\Cache\Console\ForgetCommand::class, + 'Illuminate\Cache\Console\PruneStaleTagsCommand' => \Illuminate\Cache\Console\PruneStaleTagsCommand::class, 'Illuminate\Cache\RateLimiter' => \Illuminate\Cache\RateLimiter::class, 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, 'Illuminate\Console\Scheduling\ScheduleClearCacheCommand' => \Illuminate\Console\Scheduling\ScheduleClearCacheCommand::class, 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, + 'Illuminate\Console\Scheduling\ScheduleInterruptCommand' => \Illuminate\Console\Scheduling\ScheduleInterruptCommand::class, 'Illuminate\Console\Scheduling\ScheduleListCommand' => \Illuminate\Console\Scheduling\ScheduleListCommand::class, 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::class, 'Illuminate\Console\Scheduling\ScheduleTestCommand' => \Illuminate\Console\Scheduling\ScheduleTestCommand::class, @@ -1873,15 +1958,18 @@ 'Illuminate\Database\Console\Seeds\SeedCommand' => \Illuminate\Database\Console\Seeds\SeedCommand::class, 'Illuminate\Database\Console\Seeds\SeederMakeCommand' => \Illuminate\Database\Console\Seeds\SeederMakeCommand::class, 'Illuminate\Database\Console\ShowCommand' => \Illuminate\Database\Console\ShowCommand::class, + 'Illuminate\Database\Console\ShowModelCommand' => \Illuminate\Database\Console\ShowModelCommand::class, 'Illuminate\Database\Console\TableCommand' => \Illuminate\Database\Console\TableCommand::class, 'Illuminate\Database\Console\WipeCommand' => \Illuminate\Database\Console\WipeCommand::class, 'Illuminate\Foundation\Console\AboutCommand' => \Illuminate\Foundation\Console\AboutCommand::class, 'Illuminate\Foundation\Console\CastMakeCommand' => \Illuminate\Foundation\Console\CastMakeCommand::class, + 'Illuminate\Foundation\Console\ChannelListCommand' => \Illuminate\Foundation\Console\ChannelListCommand::class, 'Illuminate\Foundation\Console\ChannelMakeCommand' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, 'Illuminate\Foundation\Console\ClearCompiledCommand' => \Illuminate\Foundation\Console\ClearCompiledCommand::class, 'Illuminate\Foundation\Console\ComponentMakeCommand' => \Illuminate\Foundation\Console\ComponentMakeCommand::class, 'Illuminate\Foundation\Console\ConfigCacheCommand' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, 'Illuminate\Foundation\Console\ConfigClearCommand' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'Illuminate\Foundation\Console\ConfigShowCommand' => \Illuminate\Foundation\Console\ConfigShowCommand::class, 'Illuminate\Foundation\Console\ConsoleMakeCommand' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, 'Illuminate\Foundation\Console\DocsCommand' => \Illuminate\Foundation\Console\DocsCommand::class, 'Illuminate\Foundation\Console\DownCommand' => \Illuminate\Foundation\Console\DownCommand::class, @@ -1896,6 +1984,7 @@ 'Illuminate\Foundation\Console\ExceptionMakeCommand' => \Illuminate\Foundation\Console\ExceptionMakeCommand::class, 'Illuminate\Foundation\Console\JobMakeCommand' => \Illuminate\Foundation\Console\JobMakeCommand::class, 'Illuminate\Foundation\Console\KeyGenerateCommand' => \Illuminate\Foundation\Console\KeyGenerateCommand::class, + 'Illuminate\Foundation\Console\LangPublishCommand' => \Illuminate\Foundation\Console\LangPublishCommand::class, 'Illuminate\Foundation\Console\ListenerMakeCommand' => \Illuminate\Foundation\Console\ListenerMakeCommand::class, 'Illuminate\Foundation\Console\MailMakeCommand' => \Illuminate\Foundation\Console\MailMakeCommand::class, 'Illuminate\Foundation\Console\ModelMakeCommand' => \Illuminate\Foundation\Console\ModelMakeCommand::class, @@ -1914,18 +2003,20 @@ 'Illuminate\Foundation\Console\RuleMakeCommand' => \Illuminate\Foundation\Console\RuleMakeCommand::class, 'Illuminate\Foundation\Console\ScopeMakeCommand' => \Illuminate\Foundation\Console\ScopeMakeCommand::class, 'Illuminate\Foundation\Console\ServeCommand' => \Illuminate\Foundation\Console\ServeCommand::class, - 'Illuminate\Foundation\Console\ShowModelCommand' => \Illuminate\Foundation\Console\ShowModelCommand::class, 'Illuminate\Foundation\Console\StorageLinkCommand' => \Illuminate\Foundation\Console\StorageLinkCommand::class, + 'Illuminate\Foundation\Console\StorageUnlinkCommand' => \Illuminate\Foundation\Console\StorageUnlinkCommand::class, 'Illuminate\Foundation\Console\StubPublishCommand' => \Illuminate\Foundation\Console\StubPublishCommand::class, 'Illuminate\Foundation\Console\TestMakeCommand' => \Illuminate\Foundation\Console\TestMakeCommand::class, 'Illuminate\Foundation\Console\UpCommand' => \Illuminate\Foundation\Console\UpCommand::class, 'Illuminate\Foundation\Console\VendorPublishCommand' => \Illuminate\Foundation\Console\VendorPublishCommand::class, 'Illuminate\Foundation\Console\ViewCacheCommand' => \Illuminate\Foundation\Console\ViewCacheCommand::class, 'Illuminate\Foundation\Console\ViewClearCommand' => \Illuminate\Foundation\Console\ViewClearCommand::class, + 'Illuminate\Foundation\Console\ViewMakeCommand' => \Illuminate\Foundation\Console\ViewMakeCommand::class, 'Illuminate\Foundation\MaintenanceModeManager' => \Illuminate\Foundation\MaintenanceModeManager::class, 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, 'Illuminate\Foundation\Vite' => \Illuminate\Foundation\Vite::class, + 'Illuminate\Http\Client\Factory' => \Illuminate\Http\Client\Factory::class, 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, 'Illuminate\Notifications\Console\NotificationTableCommand' => \Illuminate\Notifications\Console\NotificationTableCommand::class, @@ -1951,7 +2042,7 @@ 'Illuminate\Session\Console\SessionTableCommand' => \Illuminate\Session\Console\SessionTableCommand::class, 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, - 'NunoMaduro\Collision\Contracts\Provider' => \NunoMaduro\Collision\Provider::class, + 'NunoMaduro\Collision\Provider' => \NunoMaduro\Collision\Provider::class, 'Pion\Laravel\ChunkUpload\Config\AbstractConfig' => \Pion\Laravel\ChunkUpload\Config\FileConfig::class, 'Pion\Laravel\ChunkUpload\Receiver\FileReceiver' => \Pion\Laravel\ChunkUpload\Receiver\FileReceiver::class, 'Pion\Laravel\ChunkUpload\Storage\ChunkStorage' => \Pion\Laravel\ChunkUpload\Storage\ChunkStorage::class, @@ -1967,7 +2058,6 @@ 'Spatie\LaravelIgnition\Recorders\LogRecorder\LogRecorder' => \Spatie\LaravelIgnition\Recorders\LogRecorder\LogRecorder::class, 'Spatie\LaravelIgnition\Recorders\QueryRecorder\QueryRecorder' => \Spatie\LaravelIgnition\Recorders\QueryRecorder\QueryRecorder::class, 'Spatie\LaravelIgnition\Support\SentReports' => \Spatie\LaravelIgnition\Support\SentReports::class, - 'Whoops\Handler\HandlerInterface' => \Spatie\LaravelIgnition\Renderers\IgnitionWhoopsHandler::class, 'auth' => \Illuminate\Auth\AuthManager::class, 'auth.driver' => \Illuminate\Auth\SessionGuard::class, 'auth.password' => \Illuminate\Auth\Passwords\PasswordBrokerManager::class, @@ -2009,6 +2099,8 @@ 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, 'migration.repository' => \Illuminate\Database\Migrations\DatabaseMigrationRepository::class, 'migrator' => \Illuminate\Database\Migrations\Migrator::class, + 'pipeline' => \Illuminate\Pipeline\Pipeline::class, + 'protector' => \Cybex\Protector\Protector::class, 'queue' => \Illuminate\Queue\QueueManager::class, 'queue.connection' => \Illuminate\Queue\DatabaseQueue::class, 'queue.failer' => \Illuminate\Queue\Failed\DatabaseUuidFailedJobProvider::class, @@ -2040,10 +2132,12 @@ 'Illuminate\Cache\Console\CacheTableCommand' => \Illuminate\Cache\Console\CacheTableCommand::class, 'Illuminate\Cache\Console\ClearCommand' => \Illuminate\Cache\Console\ClearCommand::class, 'Illuminate\Cache\Console\ForgetCommand' => \Illuminate\Cache\Console\ForgetCommand::class, + 'Illuminate\Cache\Console\PruneStaleTagsCommand' => \Illuminate\Cache\Console\PruneStaleTagsCommand::class, 'Illuminate\Cache\RateLimiter' => \Illuminate\Cache\RateLimiter::class, 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, 'Illuminate\Console\Scheduling\ScheduleClearCacheCommand' => \Illuminate\Console\Scheduling\ScheduleClearCacheCommand::class, 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, + 'Illuminate\Console\Scheduling\ScheduleInterruptCommand' => \Illuminate\Console\Scheduling\ScheduleInterruptCommand::class, 'Illuminate\Console\Scheduling\ScheduleListCommand' => \Illuminate\Console\Scheduling\ScheduleListCommand::class, 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::class, 'Illuminate\Console\Scheduling\ScheduleTestCommand' => \Illuminate\Console\Scheduling\ScheduleTestCommand::class, @@ -2075,15 +2169,18 @@ 'Illuminate\Database\Console\Seeds\SeedCommand' => \Illuminate\Database\Console\Seeds\SeedCommand::class, 'Illuminate\Database\Console\Seeds\SeederMakeCommand' => \Illuminate\Database\Console\Seeds\SeederMakeCommand::class, 'Illuminate\Database\Console\ShowCommand' => \Illuminate\Database\Console\ShowCommand::class, + 'Illuminate\Database\Console\ShowModelCommand' => \Illuminate\Database\Console\ShowModelCommand::class, 'Illuminate\Database\Console\TableCommand' => \Illuminate\Database\Console\TableCommand::class, 'Illuminate\Database\Console\WipeCommand' => \Illuminate\Database\Console\WipeCommand::class, 'Illuminate\Foundation\Console\AboutCommand' => \Illuminate\Foundation\Console\AboutCommand::class, 'Illuminate\Foundation\Console\CastMakeCommand' => \Illuminate\Foundation\Console\CastMakeCommand::class, + 'Illuminate\Foundation\Console\ChannelListCommand' => \Illuminate\Foundation\Console\ChannelListCommand::class, 'Illuminate\Foundation\Console\ChannelMakeCommand' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, 'Illuminate\Foundation\Console\ClearCompiledCommand' => \Illuminate\Foundation\Console\ClearCompiledCommand::class, 'Illuminate\Foundation\Console\ComponentMakeCommand' => \Illuminate\Foundation\Console\ComponentMakeCommand::class, 'Illuminate\Foundation\Console\ConfigCacheCommand' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, 'Illuminate\Foundation\Console\ConfigClearCommand' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'Illuminate\Foundation\Console\ConfigShowCommand' => \Illuminate\Foundation\Console\ConfigShowCommand::class, 'Illuminate\Foundation\Console\ConsoleMakeCommand' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, 'Illuminate\Foundation\Console\DocsCommand' => \Illuminate\Foundation\Console\DocsCommand::class, 'Illuminate\Foundation\Console\DownCommand' => \Illuminate\Foundation\Console\DownCommand::class, @@ -2098,6 +2195,7 @@ 'Illuminate\Foundation\Console\ExceptionMakeCommand' => \Illuminate\Foundation\Console\ExceptionMakeCommand::class, 'Illuminate\Foundation\Console\JobMakeCommand' => \Illuminate\Foundation\Console\JobMakeCommand::class, 'Illuminate\Foundation\Console\KeyGenerateCommand' => \Illuminate\Foundation\Console\KeyGenerateCommand::class, + 'Illuminate\Foundation\Console\LangPublishCommand' => \Illuminate\Foundation\Console\LangPublishCommand::class, 'Illuminate\Foundation\Console\ListenerMakeCommand' => \Illuminate\Foundation\Console\ListenerMakeCommand::class, 'Illuminate\Foundation\Console\MailMakeCommand' => \Illuminate\Foundation\Console\MailMakeCommand::class, 'Illuminate\Foundation\Console\ModelMakeCommand' => \Illuminate\Foundation\Console\ModelMakeCommand::class, @@ -2116,18 +2214,20 @@ 'Illuminate\Foundation\Console\RuleMakeCommand' => \Illuminate\Foundation\Console\RuleMakeCommand::class, 'Illuminate\Foundation\Console\ScopeMakeCommand' => \Illuminate\Foundation\Console\ScopeMakeCommand::class, 'Illuminate\Foundation\Console\ServeCommand' => \Illuminate\Foundation\Console\ServeCommand::class, - 'Illuminate\Foundation\Console\ShowModelCommand' => \Illuminate\Foundation\Console\ShowModelCommand::class, 'Illuminate\Foundation\Console\StorageLinkCommand' => \Illuminate\Foundation\Console\StorageLinkCommand::class, + 'Illuminate\Foundation\Console\StorageUnlinkCommand' => \Illuminate\Foundation\Console\StorageUnlinkCommand::class, 'Illuminate\Foundation\Console\StubPublishCommand' => \Illuminate\Foundation\Console\StubPublishCommand::class, 'Illuminate\Foundation\Console\TestMakeCommand' => \Illuminate\Foundation\Console\TestMakeCommand::class, 'Illuminate\Foundation\Console\UpCommand' => \Illuminate\Foundation\Console\UpCommand::class, 'Illuminate\Foundation\Console\VendorPublishCommand' => \Illuminate\Foundation\Console\VendorPublishCommand::class, 'Illuminate\Foundation\Console\ViewCacheCommand' => \Illuminate\Foundation\Console\ViewCacheCommand::class, 'Illuminate\Foundation\Console\ViewClearCommand' => \Illuminate\Foundation\Console\ViewClearCommand::class, + 'Illuminate\Foundation\Console\ViewMakeCommand' => \Illuminate\Foundation\Console\ViewMakeCommand::class, 'Illuminate\Foundation\MaintenanceModeManager' => \Illuminate\Foundation\MaintenanceModeManager::class, 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, 'Illuminate\Foundation\Vite' => \Illuminate\Foundation\Vite::class, + 'Illuminate\Http\Client\Factory' => \Illuminate\Http\Client\Factory::class, 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, 'Illuminate\Notifications\Console\NotificationTableCommand' => \Illuminate\Notifications\Console\NotificationTableCommand::class, @@ -2153,7 +2253,7 @@ 'Illuminate\Session\Console\SessionTableCommand' => \Illuminate\Session\Console\SessionTableCommand::class, 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, - 'NunoMaduro\Collision\Contracts\Provider' => \NunoMaduro\Collision\Provider::class, + 'NunoMaduro\Collision\Provider' => \NunoMaduro\Collision\Provider::class, 'Pion\Laravel\ChunkUpload\Config\AbstractConfig' => \Pion\Laravel\ChunkUpload\Config\FileConfig::class, 'Pion\Laravel\ChunkUpload\Receiver\FileReceiver' => \Pion\Laravel\ChunkUpload\Receiver\FileReceiver::class, 'Pion\Laravel\ChunkUpload\Storage\ChunkStorage' => \Pion\Laravel\ChunkUpload\Storage\ChunkStorage::class, @@ -2169,7 +2269,6 @@ 'Spatie\LaravelIgnition\Recorders\LogRecorder\LogRecorder' => \Spatie\LaravelIgnition\Recorders\LogRecorder\LogRecorder::class, 'Spatie\LaravelIgnition\Recorders\QueryRecorder\QueryRecorder' => \Spatie\LaravelIgnition\Recorders\QueryRecorder\QueryRecorder::class, 'Spatie\LaravelIgnition\Support\SentReports' => \Spatie\LaravelIgnition\Support\SentReports::class, - 'Whoops\Handler\HandlerInterface' => \Spatie\LaravelIgnition\Renderers\IgnitionWhoopsHandler::class, 'auth' => \Illuminate\Auth\AuthManager::class, 'auth.driver' => \Illuminate\Auth\SessionGuard::class, 'auth.password' => \Illuminate\Auth\Passwords\PasswordBrokerManager::class, @@ -2211,6 +2310,8 @@ 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, 'migration.repository' => \Illuminate\Database\Migrations\DatabaseMigrationRepository::class, 'migrator' => \Illuminate\Database\Migrations\Migrator::class, + 'pipeline' => \Illuminate\Pipeline\Pipeline::class, + 'protector' => \Cybex\Protector\Protector::class, 'queue' => \Illuminate\Queue\QueueManager::class, 'queue.connection' => \Illuminate\Queue\DatabaseQueue::class, 'queue.failer' => \Illuminate\Queue\Failed\DatabaseUuidFailedJobProvider::class, diff --git a/_ide_helper.php b/_ide_helper.php index 02837c7e..20d52930 100644 --- a/_ide_helper.php +++ b/_ide_helper.php @@ -1,10 +1,11 @@ version(); @@ -36,8 +35,7 @@ public static function version() * @param string[] $bootstrappers * @return void * @static - */ - public static function bootstrapWith($bootstrappers) + */ public static function bootstrapWith($bootstrappers) { /** @var \Illuminate\Foundation\Application $instance */ $instance->bootstrapWith($bootstrappers); @@ -48,8 +46,7 @@ public static function bootstrapWith($bootstrappers) * @param \Closure $callback * @return void * @static - */ - public static function afterLoadingEnvironment($callback) + */ public static function afterLoadingEnvironment($callback) { /** @var \Illuminate\Foundation\Application $instance */ $instance->afterLoadingEnvironment($callback); @@ -61,8 +58,7 @@ public static function afterLoadingEnvironment($callback) * @param \Closure $callback * @return void * @static - */ - public static function beforeBootstrapping($bootstrapper, $callback) + */ public static function beforeBootstrapping($bootstrapper, $callback) { /** @var \Illuminate\Foundation\Application $instance */ $instance->beforeBootstrapping($bootstrapper, $callback); @@ -74,8 +70,7 @@ public static function beforeBootstrapping($bootstrapper, $callback) * @param \Closure $callback * @return void * @static - */ - public static function afterBootstrapping($bootstrapper, $callback) + */ public static function afterBootstrapping($bootstrapper, $callback) { /** @var \Illuminate\Foundation\Application $instance */ $instance->afterBootstrapping($bootstrapper, $callback); @@ -85,8 +80,7 @@ public static function afterBootstrapping($bootstrapper, $callback) * * @return bool * @static - */ - public static function hasBeenBootstrapped() + */ public static function hasBeenBootstrapped() { /** @var \Illuminate\Foundation\Application $instance */ return $instance->hasBeenBootstrapped(); @@ -97,8 +91,7 @@ public static function hasBeenBootstrapped() * @param string $basePath * @return \Illuminate\Foundation\Application * @static - */ - public static function setBasePath($basePath) + */ public static function setBasePath($basePath) { /** @var \Illuminate\Foundation\Application $instance */ return $instance->setBasePath($basePath); @@ -109,8 +102,7 @@ public static function setBasePath($basePath) * @param string $path * @return string * @static - */ - public static function path($path = '') + */ public static function path($path = '') { /** @var \Illuminate\Foundation\Application $instance */ return $instance->path($path); @@ -121,8 +113,7 @@ public static function path($path = '') * @param string $path * @return \Illuminate\Foundation\Application * @static - */ - public static function useAppPath($path) + */ public static function useAppPath($path) { /** @var \Illuminate\Foundation\Application $instance */ return $instance->useAppPath($path); @@ -133,8 +124,7 @@ public static function useAppPath($path) * @param string $path * @return string * @static - */ - public static function basePath($path = '') + */ public static function basePath($path = '') { /** @var \Illuminate\Foundation\Application $instance */ return $instance->basePath($path); @@ -145,11 +135,21 @@ public static function basePath($path = '') * @param string $path * @return string * @static - */ - public static function bootstrapPath($path = '') + */ public static function bootstrapPath($path = '') { /** @var \Illuminate\Foundation\Application $instance */ return $instance->bootstrapPath($path); + } + /** + * Set the bootstrap file directory. + * + * @param string $path + * @return \Illuminate\Foundation\Application + * @static + */ public static function useBootstrapPath($path) + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->useBootstrapPath($path); } /** * Get the path to the application configuration files. @@ -157,11 +157,21 @@ public static function bootstrapPath($path = '') * @param string $path * @return string * @static - */ - public static function configPath($path = '') + */ public static function configPath($path = '') { /** @var \Illuminate\Foundation\Application $instance */ return $instance->configPath($path); + } + /** + * Set the configuration directory. + * + * @param string $path + * @return \Illuminate\Foundation\Application + * @static + */ public static function useConfigPath($path) + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->useConfigPath($path); } /** * Get the path to the database directory. @@ -169,8 +179,7 @@ public static function configPath($path = '') * @param string $path * @return string * @static - */ - public static function databasePath($path = '') + */ public static function databasePath($path = '') { /** @var \Illuminate\Foundation\Application $instance */ return $instance->databasePath($path); @@ -181,8 +190,7 @@ public static function databasePath($path = '') * @param string $path * @return \Illuminate\Foundation\Application * @static - */ - public static function useDatabasePath($path) + */ public static function useDatabasePath($path) { /** @var \Illuminate\Foundation\Application $instance */ return $instance->useDatabasePath($path); @@ -193,8 +201,7 @@ public static function useDatabasePath($path) * @param string $path * @return string * @static - */ - public static function langPath($path = '') + */ public static function langPath($path = '') { /** @var \Illuminate\Foundation\Application $instance */ return $instance->langPath($path); @@ -205,8 +212,7 @@ public static function langPath($path = '') * @param string $path * @return \Illuminate\Foundation\Application * @static - */ - public static function useLangPath($path) + */ public static function useLangPath($path) { /** @var \Illuminate\Foundation\Application $instance */ return $instance->useLangPath($path); @@ -214,13 +220,24 @@ public static function useLangPath($path) /** * Get the path to the public / web directory. * + * @param string $path * @return string * @static - */ - public static function publicPath() + */ public static function publicPath($path = '') + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->publicPath($path); + } + /** + * Set the public / web directory. + * + * @param string $path + * @return \Illuminate\Foundation\Application + * @static + */ public static function usePublicPath($path) { /** @var \Illuminate\Foundation\Application $instance */ - return $instance->publicPath(); + return $instance->usePublicPath($path); } /** * Get the path to the storage directory. @@ -228,8 +245,7 @@ public static function publicPath() * @param string $path * @return string * @static - */ - public static function storagePath($path = '') + */ public static function storagePath($path = '') { /** @var \Illuminate\Foundation\Application $instance */ return $instance->storagePath($path); @@ -240,8 +256,7 @@ public static function storagePath($path = '') * @param string $path * @return \Illuminate\Foundation\Application * @static - */ - public static function useStoragePath($path) + */ public static function useStoragePath($path) { /** @var \Illuminate\Foundation\Application $instance */ return $instance->useStoragePath($path); @@ -252,8 +267,7 @@ public static function useStoragePath($path) * @param string $path * @return string * @static - */ - public static function resourcePath($path = '') + */ public static function resourcePath($path = '') { /** @var \Illuminate\Foundation\Application $instance */ return $instance->resourcePath($path); @@ -266,19 +280,29 @@ public static function resourcePath($path = '') * @param string $path * @return string * @static - */ - public static function viewPath($path = '') + */ public static function viewPath($path = '') { /** @var \Illuminate\Foundation\Application $instance */ return $instance->viewPath($path); + } + /** + * Join the given paths together. + * + * @param string $basePath + * @param string $path + * @return string + * @static + */ public static function joinPaths($basePath, $path = '') + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->joinPaths($basePath, $path); } /** * Get the path to the environment file directory. * * @return string * @static - */ - public static function environmentPath() + */ public static function environmentPath() { /** @var \Illuminate\Foundation\Application $instance */ return $instance->environmentPath(); @@ -289,8 +313,7 @@ public static function environmentPath() * @param string $path * @return \Illuminate\Foundation\Application * @static - */ - public static function useEnvironmentPath($path) + */ public static function useEnvironmentPath($path) { /** @var \Illuminate\Foundation\Application $instance */ return $instance->useEnvironmentPath($path); @@ -301,8 +324,7 @@ public static function useEnvironmentPath($path) * @param string $file * @return \Illuminate\Foundation\Application * @static - */ - public static function loadEnvironmentFrom($file) + */ public static function loadEnvironmentFrom($file) { /** @var \Illuminate\Foundation\Application $instance */ return $instance->loadEnvironmentFrom($file); @@ -312,8 +334,7 @@ public static function loadEnvironmentFrom($file) * * @return string * @static - */ - public static function environmentFile() + */ public static function environmentFile() { /** @var \Illuminate\Foundation\Application $instance */ return $instance->environmentFile(); @@ -323,8 +344,7 @@ public static function environmentFile() * * @return string * @static - */ - public static function environmentFilePath() + */ public static function environmentFilePath() { /** @var \Illuminate\Foundation\Application $instance */ return $instance->environmentFilePath(); @@ -335,8 +355,7 @@ public static function environmentFilePath() * @param string|array $environments * @return string|bool * @static - */ - public static function environment(...$environments) + */ public static function environment(...$environments) { /** @var \Illuminate\Foundation\Application $instance */ return $instance->environment(...$environments); @@ -346,8 +365,7 @@ public static function environment(...$environments) * * @return bool * @static - */ - public static function isLocal() + */ public static function isLocal() { /** @var \Illuminate\Foundation\Application $instance */ return $instance->isLocal(); @@ -357,8 +375,7 @@ public static function isLocal() * * @return bool * @static - */ - public static function isProduction() + */ public static function isProduction() { /** @var \Illuminate\Foundation\Application $instance */ return $instance->isProduction(); @@ -369,8 +386,7 @@ public static function isProduction() * @param \Closure $callback * @return string * @static - */ - public static function detectEnvironment($callback) + */ public static function detectEnvironment($callback) { /** @var \Illuminate\Foundation\Application $instance */ return $instance->detectEnvironment($callback); @@ -380,19 +396,28 @@ public static function detectEnvironment($callback) * * @return bool * @static - */ - public static function runningInConsole() + */ public static function runningInConsole() { /** @var \Illuminate\Foundation\Application $instance */ return $instance->runningInConsole(); + } + /** + * Determine if the application is running any of the given console commands. + * + * @param string|array $commands + * @return bool + * @static + */ public static function runningConsoleCommand(...$commands) + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->runningConsoleCommand(...$commands); } /** * Determine if the application is running unit tests. * * @return bool * @static - */ - public static function runningUnitTests() + */ public static function runningUnitTests() { /** @var \Illuminate\Foundation\Application $instance */ return $instance->runningUnitTests(); @@ -402,8 +427,7 @@ public static function runningUnitTests() * * @return bool * @static - */ - public static function hasDebugModeEnabled() + */ public static function hasDebugModeEnabled() { /** @var \Illuminate\Foundation\Application $instance */ return $instance->hasDebugModeEnabled(); @@ -413,8 +437,7 @@ public static function hasDebugModeEnabled() * * @return void * @static - */ - public static function registerConfiguredProviders() + */ public static function registerConfiguredProviders() { /** @var \Illuminate\Foundation\Application $instance */ $instance->registerConfiguredProviders(); @@ -426,8 +449,7 @@ public static function registerConfiguredProviders() * @param bool $force * @return \Illuminate\Support\ServiceProvider * @static - */ - public static function register($provider, $force = false) + */ public static function register($provider, $force = false) { /** @var \Illuminate\Foundation\Application $instance */ return $instance->register($provider, $force); @@ -438,8 +460,7 @@ public static function register($provider, $force = false) * @param \Illuminate\Support\ServiceProvider|string $provider * @return \Illuminate\Support\ServiceProvider|null * @static - */ - public static function getProvider($provider) + */ public static function getProvider($provider) { /** @var \Illuminate\Foundation\Application $instance */ return $instance->getProvider($provider); @@ -450,8 +471,7 @@ public static function getProvider($provider) * @param \Illuminate\Support\ServiceProvider|string $provider * @return array * @static - */ - public static function getProviders($provider) + */ public static function getProviders($provider) { /** @var \Illuminate\Foundation\Application $instance */ return $instance->getProviders($provider); @@ -462,8 +482,7 @@ public static function getProviders($provider) * @param string $provider * @return \Illuminate\Support\ServiceProvider * @static - */ - public static function resolveProvider($provider) + */ public static function resolveProvider($provider) { /** @var \Illuminate\Foundation\Application $instance */ return $instance->resolveProvider($provider); @@ -473,8 +492,7 @@ public static function resolveProvider($provider) * * @return void * @static - */ - public static function loadDeferredProviders() + */ public static function loadDeferredProviders() { /** @var \Illuminate\Foundation\Application $instance */ $instance->loadDeferredProviders(); @@ -485,8 +503,7 @@ public static function loadDeferredProviders() * @param string $service * @return void * @static - */ - public static function loadDeferredProvider($service) + */ public static function loadDeferredProvider($service) { /** @var \Illuminate\Foundation\Application $instance */ $instance->loadDeferredProvider($service); @@ -498,8 +515,7 @@ public static function loadDeferredProvider($service) * @param string|null $service * @return void * @static - */ - public static function registerDeferredProvider($provider, $service = null) + */ public static function registerDeferredProvider($provider, $service = null) { /** @var \Illuminate\Foundation\Application $instance */ $instance->registerDeferredProvider($provider, $service); @@ -511,8 +527,7 @@ public static function registerDeferredProvider($provider, $service = null) * @param array $parameters * @return mixed * @static - */ - public static function make($abstract, $parameters = []) + */ public static function make($abstract, $parameters = []) { /** @var \Illuminate\Foundation\Application $instance */ return $instance->make($abstract, $parameters); @@ -523,8 +538,7 @@ public static function make($abstract, $parameters = []) * @param string $abstract * @return bool * @static - */ - public static function bound($abstract) + */ public static function bound($abstract) { /** @var \Illuminate\Foundation\Application $instance */ return $instance->bound($abstract); @@ -534,8 +548,7 @@ public static function bound($abstract) * * @return bool * @static - */ - public static function isBooted() + */ public static function isBooted() { /** @var \Illuminate\Foundation\Application $instance */ return $instance->isBooted(); @@ -545,8 +558,7 @@ public static function isBooted() * * @return void * @static - */ - public static function boot() + */ public static function boot() { /** @var \Illuminate\Foundation\Application $instance */ $instance->boot(); @@ -557,8 +569,7 @@ public static function boot() * @param callable $callback * @return void * @static - */ - public static function booting($callback) + */ public static function booting($callback) { /** @var \Illuminate\Foundation\Application $instance */ $instance->booting($callback); @@ -569,8 +580,7 @@ public static function booting($callback) * @param callable $callback * @return void * @static - */ - public static function booted($callback) + */ public static function booted($callback) { /** @var \Illuminate\Foundation\Application $instance */ $instance->booted($callback); @@ -580,8 +590,7 @@ public static function booted($callback) * * @return \Symfony\Component\HttpFoundation\Response * @static - */ - public static function handle($request, $type = 1, $catch = true) + */ public static function handle($request, $type = 1, $catch = true) { /** @var \Illuminate\Foundation\Application $instance */ return $instance->handle($request, $type, $catch); @@ -591,8 +600,7 @@ public static function handle($request, $type = 1, $catch = true) * * @return bool * @static - */ - public static function shouldSkipMiddleware() + */ public static function shouldSkipMiddleware() { /** @var \Illuminate\Foundation\Application $instance */ return $instance->shouldSkipMiddleware(); @@ -602,8 +610,7 @@ public static function shouldSkipMiddleware() * * @return string * @static - */ - public static function getCachedServicesPath() + */ public static function getCachedServicesPath() { /** @var \Illuminate\Foundation\Application $instance */ return $instance->getCachedServicesPath(); @@ -613,8 +620,7 @@ public static function getCachedServicesPath() * * @return string * @static - */ - public static function getCachedPackagesPath() + */ public static function getCachedPackagesPath() { /** @var \Illuminate\Foundation\Application $instance */ return $instance->getCachedPackagesPath(); @@ -624,8 +630,7 @@ public static function getCachedPackagesPath() * * @return bool * @static - */ - public static function configurationIsCached() + */ public static function configurationIsCached() { /** @var \Illuminate\Foundation\Application $instance */ return $instance->configurationIsCached(); @@ -635,8 +640,7 @@ public static function configurationIsCached() * * @return string * @static - */ - public static function getCachedConfigPath() + */ public static function getCachedConfigPath() { /** @var \Illuminate\Foundation\Application $instance */ return $instance->getCachedConfigPath(); @@ -646,8 +650,7 @@ public static function getCachedConfigPath() * * @return bool * @static - */ - public static function routesAreCached() + */ public static function routesAreCached() { /** @var \Illuminate\Foundation\Application $instance */ return $instance->routesAreCached(); @@ -657,8 +660,7 @@ public static function routesAreCached() * * @return string * @static - */ - public static function getCachedRoutesPath() + */ public static function getCachedRoutesPath() { /** @var \Illuminate\Foundation\Application $instance */ return $instance->getCachedRoutesPath(); @@ -668,8 +670,7 @@ public static function getCachedRoutesPath() * * @return bool * @static - */ - public static function eventsAreCached() + */ public static function eventsAreCached() { /** @var \Illuminate\Foundation\Application $instance */ return $instance->eventsAreCached(); @@ -679,8 +680,7 @@ public static function eventsAreCached() * * @return string * @static - */ - public static function getCachedEventsPath() + */ public static function getCachedEventsPath() { /** @var \Illuminate\Foundation\Application $instance */ return $instance->getCachedEventsPath(); @@ -691,8 +691,7 @@ public static function getCachedEventsPath() * @param string $prefix * @return \Illuminate\Foundation\Application * @static - */ - public static function addAbsoluteCachePathPrefix($prefix) + */ public static function addAbsoluteCachePathPrefix($prefix) { /** @var \Illuminate\Foundation\Application $instance */ return $instance->addAbsoluteCachePathPrefix($prefix); @@ -702,8 +701,7 @@ public static function addAbsoluteCachePathPrefix($prefix) * * @return \Illuminate\Contracts\Foundation\MaintenanceMode * @static - */ - public static function maintenanceMode() + */ public static function maintenanceMode() { /** @var \Illuminate\Foundation\Application $instance */ return $instance->maintenanceMode(); @@ -713,8 +711,7 @@ public static function maintenanceMode() * * @return bool * @static - */ - public static function isDownForMaintenance() + */ public static function isDownForMaintenance() { /** @var \Illuminate\Foundation\Application $instance */ return $instance->isDownForMaintenance(); @@ -729,8 +726,7 @@ public static function isDownForMaintenance() * @throws \Symfony\Component\HttpKernel\Exception\HttpException * @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException * @static - */ - public static function abort($code, $message = '', $headers = []) + */ public static function abort($code, $message = '', $headers = []) { /** @var \Illuminate\Foundation\Application $instance */ return $instance->abort($code, $message, $headers); @@ -741,8 +737,7 @@ public static function abort($code, $message = '', $headers = []) * @param callable|string $callback * @return \Illuminate\Foundation\Application * @static - */ - public static function terminating($callback) + */ public static function terminating($callback) { /** @var \Illuminate\Foundation\Application $instance */ return $instance->terminating($callback); @@ -752,8 +747,7 @@ public static function terminating($callback) * * @return void * @static - */ - public static function terminate() + */ public static function terminate() { /** @var \Illuminate\Foundation\Application $instance */ $instance->terminate(); @@ -763,8 +757,7 @@ public static function terminate() * * @return array * @static - */ - public static function getLoadedProviders() + */ public static function getLoadedProviders() { /** @var \Illuminate\Foundation\Application $instance */ return $instance->getLoadedProviders(); @@ -775,8 +768,7 @@ public static function getLoadedProviders() * @param string $provider * @return bool * @static - */ - public static function providerIsLoaded($provider) + */ public static function providerIsLoaded($provider) { /** @var \Illuminate\Foundation\Application $instance */ return $instance->providerIsLoaded($provider); @@ -786,8 +778,7 @@ public static function providerIsLoaded($provider) * * @return array * @static - */ - public static function getDeferredServices() + */ public static function getDeferredServices() { /** @var \Illuminate\Foundation\Application $instance */ return $instance->getDeferredServices(); @@ -798,8 +789,7 @@ public static function getDeferredServices() * @param array $services * @return void * @static - */ - public static function setDeferredServices($services) + */ public static function setDeferredServices($services) { /** @var \Illuminate\Foundation\Application $instance */ $instance->setDeferredServices($services); @@ -810,8 +800,7 @@ public static function setDeferredServices($services) * @param array $services * @return void * @static - */ - public static function addDeferredServices($services) + */ public static function addDeferredServices($services) { /** @var \Illuminate\Foundation\Application $instance */ $instance->addDeferredServices($services); @@ -822,8 +811,7 @@ public static function addDeferredServices($services) * @param string $service * @return bool * @static - */ - public static function isDeferredService($service) + */ public static function isDeferredService($service) { /** @var \Illuminate\Foundation\Application $instance */ return $instance->isDeferredService($service); @@ -834,8 +822,7 @@ public static function isDeferredService($service) * @param string $namespace * @return void * @static - */ - public static function provideFacades($namespace) + */ public static function provideFacades($namespace) { /** @var \Illuminate\Foundation\Application $instance */ $instance->provideFacades($namespace); @@ -845,8 +832,7 @@ public static function provideFacades($namespace) * * @return string * @static - */ - public static function getLocale() + */ public static function getLocale() { /** @var \Illuminate\Foundation\Application $instance */ return $instance->getLocale(); @@ -856,8 +842,7 @@ public static function getLocale() * * @return string * @static - */ - public static function currentLocale() + */ public static function currentLocale() { /** @var \Illuminate\Foundation\Application $instance */ return $instance->currentLocale(); @@ -867,8 +852,7 @@ public static function currentLocale() * * @return string * @static - */ - public static function getFallbackLocale() + */ public static function getFallbackLocale() { /** @var \Illuminate\Foundation\Application $instance */ return $instance->getFallbackLocale(); @@ -879,8 +863,7 @@ public static function getFallbackLocale() * @param string $locale * @return void * @static - */ - public static function setLocale($locale) + */ public static function setLocale($locale) { /** @var \Illuminate\Foundation\Application $instance */ $instance->setLocale($locale); @@ -891,8 +874,7 @@ public static function setLocale($locale) * @param string $fallbackLocale * @return void * @static - */ - public static function setFallbackLocale($fallbackLocale) + */ public static function setFallbackLocale($fallbackLocale) { /** @var \Illuminate\Foundation\Application $instance */ $instance->setFallbackLocale($fallbackLocale); @@ -903,8 +885,7 @@ public static function setFallbackLocale($fallbackLocale) * @param string $locale * @return bool * @static - */ - public static function isLocale($locale) + */ public static function isLocale($locale) { /** @var \Illuminate\Foundation\Application $instance */ return $instance->isLocale($locale); @@ -914,8 +895,7 @@ public static function isLocale($locale) * * @return void * @static - */ - public static function registerCoreContainerAliases() + */ public static function registerCoreContainerAliases() { /** @var \Illuminate\Foundation\Application $instance */ $instance->registerCoreContainerAliases(); @@ -925,8 +905,7 @@ public static function registerCoreContainerAliases() * * @return void * @static - */ - public static function flush() + */ public static function flush() { /** @var \Illuminate\Foundation\Application $instance */ $instance->flush(); @@ -937,8 +916,7 @@ public static function flush() * @return string * @throws \RuntimeException * @static - */ - public static function getNamespace() + */ public static function getNamespace() { /** @var \Illuminate\Foundation\Application $instance */ return $instance->getNamespace(); @@ -949,8 +927,7 @@ public static function getNamespace() * @param array|string $concrete * @return \Illuminate\Contracts\Container\ContextualBindingBuilder * @static - */ - public static function when($concrete) + */ public static function when($concrete) { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ return $instance->when($concrete); @@ -967,8 +944,7 @@ public static function when($concrete) * @param string $id Identifier of the entry to look for. * @return bool * @static - */ - public static function has($id) + */ public static function has($id) { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ return $instance->has($id); @@ -979,8 +955,7 @@ public static function has($id) * @param string $abstract * @return bool * @static - */ - public static function resolved($abstract) + */ public static function resolved($abstract) { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ return $instance->resolved($abstract); @@ -991,8 +966,7 @@ public static function resolved($abstract) * @param string $abstract * @return bool * @static - */ - public static function isShared($abstract) + */ public static function isShared($abstract) { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ return $instance->isShared($abstract); @@ -1003,8 +977,7 @@ public static function isShared($abstract) * @param string $name * @return bool * @static - */ - public static function isAlias($name) + */ public static function isAlias($name) { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ return $instance->isAlias($name); @@ -1018,8 +991,7 @@ public static function isAlias($name) * @return void * @throws \TypeError * @static - */ - public static function bind($abstract, $concrete = null, $shared = false) + */ public static function bind($abstract, $concrete = null, $shared = false) { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ $instance->bind($abstract, $concrete, $shared); @@ -1030,8 +1002,7 @@ public static function bind($abstract, $concrete = null, $shared = false) * @param string $method * @return bool * @static - */ - public static function hasMethodBinding($method) + */ public static function hasMethodBinding($method) { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ return $instance->hasMethodBinding($method); @@ -1043,8 +1014,7 @@ public static function hasMethodBinding($method) * @param \Closure $callback * @return void * @static - */ - public static function bindMethod($method, $callback) + */ public static function bindMethod($method, $callback) { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ $instance->bindMethod($method, $callback); @@ -1056,8 +1026,7 @@ public static function bindMethod($method, $callback) * @param mixed $instance * @return mixed * @static - */ - public static function callMethodBinding($method, $instance) + */ public static function callMethodBinding($method, $instance) { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ return $instance->callMethodBinding($method, $instance); @@ -1070,8 +1039,7 @@ public static function callMethodBinding($method, $instance) * @param \Closure|string $implementation * @return void * @static - */ - public static function addContextualBinding($concrete, $abstract, $implementation) + */ public static function addContextualBinding($concrete, $abstract, $implementation) { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ $instance->addContextualBinding($concrete, $abstract, $implementation); @@ -1084,8 +1052,7 @@ public static function addContextualBinding($concrete, $abstract, $implementatio * @param bool $shared * @return void * @static - */ - public static function bindIf($abstract, $concrete = null, $shared = false) + */ public static function bindIf($abstract, $concrete = null, $shared = false) { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ $instance->bindIf($abstract, $concrete, $shared); @@ -1097,8 +1064,7 @@ public static function bindIf($abstract, $concrete = null, $shared = false) * @param \Closure|string|null $concrete * @return void * @static - */ - public static function singleton($abstract, $concrete = null) + */ public static function singleton($abstract, $concrete = null) { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ $instance->singleton($abstract, $concrete); @@ -1110,8 +1076,7 @@ public static function singleton($abstract, $concrete = null) * @param \Closure|string|null $concrete * @return void * @static - */ - public static function singletonIf($abstract, $concrete = null) + */ public static function singletonIf($abstract, $concrete = null) { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ $instance->singletonIf($abstract, $concrete); @@ -1123,8 +1088,7 @@ public static function singletonIf($abstract, $concrete = null) * @param \Closure|string|null $concrete * @return void * @static - */ - public static function scoped($abstract, $concrete = null) + */ public static function scoped($abstract, $concrete = null) { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ $instance->scoped($abstract, $concrete); @@ -1136,8 +1100,7 @@ public static function scoped($abstract, $concrete = null) * @param \Closure|string|null $concrete * @return void * @static - */ - public static function scopedIf($abstract, $concrete = null) + */ public static function scopedIf($abstract, $concrete = null) { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ $instance->scopedIf($abstract, $concrete); @@ -1150,8 +1113,7 @@ public static function scopedIf($abstract, $concrete = null) * @return void * @throws \InvalidArgumentException * @static - */ - public static function extend($abstract, $closure) + */ public static function extend($abstract, $closure) { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ $instance->extend($abstract, $closure); @@ -1163,8 +1125,7 @@ public static function extend($abstract, $closure) * @param mixed $instance * @return mixed * @static - */ - public static function instance($abstract, $instance) + */ public static function instance($abstract, $instance) { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ return $instance->instance($abstract, $instance); @@ -1176,8 +1137,7 @@ public static function instance($abstract, $instance) * @param array|mixed $tags * @return void * @static - */ - public static function tag($abstracts, $tags) + */ public static function tag($abstracts, $tags) { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ $instance->tag($abstracts, $tags); @@ -1188,8 +1148,7 @@ public static function tag($abstracts, $tags) * @param string $tag * @return \Illuminate\Container\iterable * @static - */ - public static function tagged($tag) + */ public static function tagged($tag) { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ return $instance->tagged($tag); @@ -1202,8 +1161,7 @@ public static function tagged($tag) * @return void * @throws \LogicException * @static - */ - public static function alias($abstract, $alias) + */ public static function alias($abstract, $alias) { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ $instance->alias($abstract, $alias); @@ -1215,8 +1173,7 @@ public static function alias($abstract, $alias) * @param \Closure $callback * @return mixed * @static - */ - public static function rebinding($abstract, $callback) + */ public static function rebinding($abstract, $callback) { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ return $instance->rebinding($abstract, $callback); @@ -1229,8 +1186,7 @@ public static function rebinding($abstract, $callback) * @param string $method * @return mixed * @static - */ - public static function refresh($abstract, $target, $method) + */ public static function refresh($abstract, $target, $method) { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ return $instance->refresh($abstract, $target, $method); @@ -1242,8 +1198,7 @@ public static function refresh($abstract, $target, $method) * @param array $parameters * @return \Closure * @static - */ - public static function wrap($callback, $parameters = []) + */ public static function wrap($callback, $parameters = []) { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ return $instance->wrap($callback, $parameters); @@ -1257,8 +1212,7 @@ public static function wrap($callback, $parameters = []) * @return mixed * @throws \InvalidArgumentException * @static - */ - public static function call($callback, $parameters = [], $defaultMethod = null) + */ public static function call($callback, $parameters = [], $defaultMethod = null) { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ return $instance->call($callback, $parameters, $defaultMethod); @@ -1269,8 +1223,7 @@ public static function call($callback, $parameters = [], $defaultMethod = null) * @param string $abstract * @return \Closure * @static - */ - public static function factory($abstract) + */ public static function factory($abstract) { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ return $instance->factory($abstract); @@ -1283,8 +1236,7 @@ public static function factory($abstract) * @return mixed * @throws \Illuminate\Contracts\Container\BindingResolutionException * @static - */ - public static function makeWith($abstract, $parameters = []) + */ public static function makeWith($abstract, $parameters = []) { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ return $instance->makeWith($abstract, $parameters); @@ -1298,8 +1250,7 @@ public static function makeWith($abstract, $parameters = []) * @throws ContainerExceptionInterface Error while retrieving the entry. * @return mixed Entry. * @static - */ - public static function get($id) + */ public static function get($id) { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ return $instance->get($id); @@ -1312,8 +1263,7 @@ public static function get($id) * @throws \Illuminate\Contracts\Container\BindingResolutionException * @throws \Illuminate\Contracts\Container\CircularDependencyException * @static - */ - public static function build($concrete) + */ public static function build($concrete) { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ return $instance->build($concrete); @@ -1325,8 +1275,7 @@ public static function build($concrete) * @param \Closure|null $callback * @return void * @static - */ - public static function beforeResolving($abstract, $callback = null) + */ public static function beforeResolving($abstract, $callback = null) { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ $instance->beforeResolving($abstract, $callback); @@ -1338,8 +1287,7 @@ public static function beforeResolving($abstract, $callback = null) * @param \Closure|null $callback * @return void * @static - */ - public static function resolving($abstract, $callback = null) + */ public static function resolving($abstract, $callback = null) { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ $instance->resolving($abstract, $callback); @@ -1351,8 +1299,7 @@ public static function resolving($abstract, $callback = null) * @param \Closure|null $callback * @return void * @static - */ - public static function afterResolving($abstract, $callback = null) + */ public static function afterResolving($abstract, $callback = null) { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ $instance->afterResolving($abstract, $callback); @@ -1362,8 +1309,7 @@ public static function afterResolving($abstract, $callback = null) * * @return array * @static - */ - public static function getBindings() + */ public static function getBindings() { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ return $instance->getBindings(); @@ -1374,8 +1320,7 @@ public static function getBindings() * @param string $abstract * @return string * @static - */ - public static function getAlias($abstract) + */ public static function getAlias($abstract) { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ return $instance->getAlias($abstract); @@ -1386,8 +1331,7 @@ public static function getAlias($abstract) * @param string $abstract * @return void * @static - */ - public static function forgetExtenders($abstract) + */ public static function forgetExtenders($abstract) { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ $instance->forgetExtenders($abstract); @@ -1398,8 +1342,7 @@ public static function forgetExtenders($abstract) * @param string $abstract * @return void * @static - */ - public static function forgetInstance($abstract) + */ public static function forgetInstance($abstract) { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ $instance->forgetInstance($abstract); @@ -1409,8 +1352,7 @@ public static function forgetInstance($abstract) * * @return void * @static - */ - public static function forgetInstances() + */ public static function forgetInstances() { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ $instance->forgetInstances(); @@ -1420,8 +1362,7 @@ public static function forgetInstances() * * @return void * @static - */ - public static function forgetScopedInstances() + */ public static function forgetScopedInstances() { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ $instance->forgetScopedInstances(); @@ -1431,8 +1372,7 @@ public static function forgetScopedInstances() * * @return static * @static - */ - public static function getInstance() + */ public static function getInstance() { //Method inherited from \Illuminate\Container\Container return \Illuminate\Foundation\Application::getInstance(); } @@ -1442,8 +1382,7 @@ public static function getInstance() * @param \Illuminate\Contracts\Container\Container|null $container * @return \Illuminate\Contracts\Container\Container|static * @static - */ - public static function setInstance($container = null) + */ public static function setInstance($container = null) { //Method inherited from \Illuminate\Container\Container return \Illuminate\Foundation\Application::setInstance($container); } @@ -1453,8 +1392,7 @@ public static function setInstance($container = null) * @param string $key * @return bool * @static - */ - public static function offsetExists($key) + */ public static function offsetExists($key) { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ return $instance->offsetExists($key); @@ -1465,8 +1403,7 @@ public static function offsetExists($key) * @param string $key * @return mixed * @static - */ - public static function offsetGet($key) + */ public static function offsetGet($key) { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ return $instance->offsetGet($key); @@ -1478,8 +1415,7 @@ public static function offsetGet($key) * @param mixed $value * @return void * @static - */ - public static function offsetSet($key, $value) + */ public static function offsetSet($key, $value) { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ $instance->offsetSet($key, $value); @@ -1490,8 +1426,7 @@ public static function offsetSet($key, $value) * @param string $key * @return void * @static - */ - public static function offsetUnset($key) + */ public static function offsetUnset($key) { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ $instance->offsetUnset($key); @@ -1503,8 +1438,7 @@ public static function offsetUnset($key) * @param object|callable $macro * @return void * @static - */ - public static function macro($name, $macro) + */ public static function macro($name, $macro) { \Illuminate\Foundation\Application::macro($name, $macro); } @@ -1516,8 +1450,7 @@ public static function macro($name, $macro) * @return void * @throws \ReflectionException * @static - */ - public static function mixin($mixin, $replace = true) + */ public static function mixin($mixin, $replace = true) { \Illuminate\Foundation\Application::mixin($mixin, $replace); } @@ -1527,8 +1460,7 @@ public static function mixin($mixin, $replace = true) * @param string $name * @return bool * @static - */ - public static function hasMacro($name) + */ public static function hasMacro($name) { return \Illuminate\Foundation\Application::hasMacro($name); } @@ -1537,19 +1469,27 @@ public static function hasMacro($name) * * @return void * @static - */ - public static function flushMacros() + */ public static function flushMacros() { \Illuminate\Foundation\Application::flushMacros(); } - - } + } /** * * * @see \Illuminate\Foundation\Console\Kernel - */ - class Artisan { + */ class Artisan { + /** + * Re-route the Symfony command events to their Laravel counterparts. + * + * @internal + * @return \App\Console\Kernel + * @static + */ public static function rerouteSymfonyCommandEvents() + { //Method inherited from \Illuminate\Foundation\Console\Kernel + /** @var \App\Console\Kernel $instance */ + return $instance->rerouteSymfonyCommandEvents(); + } /** * Run the console application. * @@ -1557,8 +1497,7 @@ class Artisan { * @param \Symfony\Component\Console\Output\OutputInterface|null $output * @return int * @static - */ - public static function handle($input, $output = null) + */ public static function handle($input, $output = null) { //Method inherited from \Illuminate\Foundation\Console\Kernel /** @var \App\Console\Kernel $instance */ return $instance->handle($input, $output); @@ -1570,8 +1509,7 @@ public static function handle($input, $output = null) * @param int $status * @return void * @static - */ - public static function terminate($input, $status) + */ public static function terminate($input, $status) { //Method inherited from \Illuminate\Foundation\Console\Kernel /** @var \App\Console\Kernel $instance */ $instance->terminate($input, $status); @@ -1583,8 +1521,7 @@ public static function terminate($input, $status) * @param callable $handler * @return void * @static - */ - public static function whenCommandLifecycleIsLongerThan($threshold, $handler) + */ public static function whenCommandLifecycleIsLongerThan($threshold, $handler) { //Method inherited from \Illuminate\Foundation\Console\Kernel /** @var \App\Console\Kernel $instance */ $instance->whenCommandLifecycleIsLongerThan($threshold, $handler); @@ -1594,8 +1531,7 @@ public static function whenCommandLifecycleIsLongerThan($threshold, $handler) * * @return \Illuminate\Support\Carbon|null * @static - */ - public static function commandStartedAt() + */ public static function commandStartedAt() { //Method inherited from \Illuminate\Foundation\Console\Kernel /** @var \App\Console\Kernel $instance */ return $instance->commandStartedAt(); @@ -1607,8 +1543,7 @@ public static function commandStartedAt() * @param \Closure $callback * @return \Illuminate\Foundation\Console\ClosureCommand * @static - */ - public static function command($signature, $callback) + */ public static function command($signature, $callback) { //Method inherited from \Illuminate\Foundation\Console\Kernel /** @var \App\Console\Kernel $instance */ return $instance->command($signature, $callback); @@ -1619,8 +1554,7 @@ public static function command($signature, $callback) * @param \Symfony\Component\Console\Command\Command $command * @return void * @static - */ - public static function registerCommand($command) + */ public static function registerCommand($command) { //Method inherited from \Illuminate\Foundation\Console\Kernel /** @var \App\Console\Kernel $instance */ $instance->registerCommand($command); @@ -1634,8 +1568,7 @@ public static function registerCommand($command) * @return int * @throws \Symfony\Component\Console\Exception\CommandNotFoundException * @static - */ - public static function call($command, $parameters = [], $outputBuffer = null) + */ public static function call($command, $parameters = [], $outputBuffer = null) { //Method inherited from \Illuminate\Foundation\Console\Kernel /** @var \App\Console\Kernel $instance */ return $instance->call($command, $parameters, $outputBuffer); @@ -1647,8 +1580,7 @@ public static function call($command, $parameters = [], $outputBuffer = null) * @param array $parameters * @return \Illuminate\Foundation\Bus\PendingDispatch * @static - */ - public static function queue($command, $parameters = []) + */ public static function queue($command, $parameters = []) { //Method inherited from \Illuminate\Foundation\Console\Kernel /** @var \App\Console\Kernel $instance */ return $instance->queue($command, $parameters); @@ -1658,8 +1590,7 @@ public static function queue($command, $parameters = []) * * @return array * @static - */ - public static function all() + */ public static function all() { //Method inherited from \Illuminate\Foundation\Console\Kernel /** @var \App\Console\Kernel $instance */ return $instance->all(); @@ -1669,8 +1600,7 @@ public static function all() * * @return string * @static - */ - public static function output() + */ public static function output() { //Method inherited from \Illuminate\Foundation\Console\Kernel /** @var \App\Console\Kernel $instance */ return $instance->output(); @@ -1680,8 +1610,7 @@ public static function output() * * @return void * @static - */ - public static function bootstrap() + */ public static function bootstrap() { //Method inherited from \Illuminate\Foundation\Console\Kernel /** @var \App\Console\Kernel $instance */ $instance->bootstrap(); @@ -1691,8 +1620,7 @@ public static function bootstrap() * * @return void * @static - */ - public static function bootstrapWithoutBootingProviders() + */ public static function bootstrapWithoutBootingProviders() { //Method inherited from \Illuminate\Foundation\Console\Kernel /** @var \App\Console\Kernel $instance */ $instance->bootstrapWithoutBootingProviders(); @@ -1700,32 +1628,28 @@ public static function bootstrapWithoutBootingProviders() /** * Set the Artisan application instance. * - * @param \Illuminate\Console\Application $artisan + * @param \Illuminate\Console\Application|null $artisan * @return void * @static - */ - public static function setArtisan($artisan) + */ public static function setArtisan($artisan) { //Method inherited from \Illuminate\Foundation\Console\Kernel /** @var \App\Console\Kernel $instance */ $instance->setArtisan($artisan); } - - } + } /** * * * @see \Illuminate\Auth\AuthManager * @see \Illuminate\Auth\SessionGuard - */ - class Auth { + */ class Auth { /** * Attempt to get the guard from the local cache. * * @param string|null $name * @return \Illuminate\Contracts\Auth\Guard|\Illuminate\Contracts\Auth\StatefulGuard * @static - */ - public static function guard($name = null) + */ public static function guard($name = null) { /** @var \Illuminate\Auth\AuthManager $instance */ return $instance->guard($name); @@ -1737,8 +1661,7 @@ public static function guard($name = null) * @param array $config * @return \Illuminate\Auth\SessionGuard * @static - */ - public static function createSessionDriver($name, $config) + */ public static function createSessionDriver($name, $config) { /** @var \Illuminate\Auth\AuthManager $instance */ return $instance->createSessionDriver($name, $config); @@ -1750,8 +1673,7 @@ public static function createSessionDriver($name, $config) * @param array $config * @return \Illuminate\Auth\TokenGuard * @static - */ - public static function createTokenDriver($name, $config) + */ public static function createTokenDriver($name, $config) { /** @var \Illuminate\Auth\AuthManager $instance */ return $instance->createTokenDriver($name, $config); @@ -1761,8 +1683,7 @@ public static function createTokenDriver($name, $config) * * @return string * @static - */ - public static function getDefaultDriver() + */ public static function getDefaultDriver() { /** @var \Illuminate\Auth\AuthManager $instance */ return $instance->getDefaultDriver(); @@ -1773,8 +1694,7 @@ public static function getDefaultDriver() * @param string $name * @return void * @static - */ - public static function shouldUse($name) + */ public static function shouldUse($name) { /** @var \Illuminate\Auth\AuthManager $instance */ $instance->shouldUse($name); @@ -1785,8 +1705,7 @@ public static function shouldUse($name) * @param string $name * @return void * @static - */ - public static function setDefaultDriver($name) + */ public static function setDefaultDriver($name) { /** @var \Illuminate\Auth\AuthManager $instance */ $instance->setDefaultDriver($name); @@ -1798,8 +1717,7 @@ public static function setDefaultDriver($name) * @param callable $callback * @return \Illuminate\Auth\AuthManager * @static - */ - public static function viaRequest($driver, $callback) + */ public static function viaRequest($driver, $callback) { /** @var \Illuminate\Auth\AuthManager $instance */ return $instance->viaRequest($driver, $callback); @@ -1809,8 +1727,7 @@ public static function viaRequest($driver, $callback) * * @return \Closure * @static - */ - public static function userResolver() + */ public static function userResolver() { /** @var \Illuminate\Auth\AuthManager $instance */ return $instance->userResolver(); @@ -1821,8 +1738,7 @@ public static function userResolver() * @param \Closure $userResolver * @return \Illuminate\Auth\AuthManager * @static - */ - public static function resolveUsersUsing($userResolver) + */ public static function resolveUsersUsing($userResolver) { /** @var \Illuminate\Auth\AuthManager $instance */ return $instance->resolveUsersUsing($userResolver); @@ -1834,8 +1750,7 @@ public static function resolveUsersUsing($userResolver) * @param \Closure $callback * @return \Illuminate\Auth\AuthManager * @static - */ - public static function extend($driver, $callback) + */ public static function extend($driver, $callback) { /** @var \Illuminate\Auth\AuthManager $instance */ return $instance->extend($driver, $callback); @@ -1847,8 +1762,7 @@ public static function extend($driver, $callback) * @param \Closure $callback * @return \Illuminate\Auth\AuthManager * @static - */ - public static function provider($name, $callback) + */ public static function provider($name, $callback) { /** @var \Illuminate\Auth\AuthManager $instance */ return $instance->provider($name, $callback); @@ -1858,8 +1772,7 @@ public static function provider($name, $callback) * * @return bool * @static - */ - public static function hasResolvedGuards() + */ public static function hasResolvedGuards() { /** @var \Illuminate\Auth\AuthManager $instance */ return $instance->hasResolvedGuards(); @@ -1869,8 +1782,7 @@ public static function hasResolvedGuards() * * @return \Illuminate\Auth\AuthManager * @static - */ - public static function forgetGuards() + */ public static function forgetGuards() { /** @var \Illuminate\Auth\AuthManager $instance */ return $instance->forgetGuards(); @@ -1881,8 +1793,7 @@ public static function forgetGuards() * @param \Illuminate\Contracts\Foundation\Application $app * @return \Illuminate\Auth\AuthManager * @static - */ - public static function setApplication($app) + */ public static function setApplication($app) { /** @var \Illuminate\Auth\AuthManager $instance */ return $instance->setApplication($app); @@ -1894,8 +1805,7 @@ public static function setApplication($app) * @return \Illuminate\Contracts\Auth\UserProvider|null * @throws \InvalidArgumentException * @static - */ - public static function createUserProvider($provider = null) + */ public static function createUserProvider($provider = null) { /** @var \Illuminate\Auth\AuthManager $instance */ return $instance->createUserProvider($provider); @@ -1905,8 +1815,7 @@ public static function createUserProvider($provider = null) * * @return string * @static - */ - public static function getDefaultUserProvider() + */ public static function getDefaultUserProvider() { /** @var \Illuminate\Auth\AuthManager $instance */ return $instance->getDefaultUserProvider(); @@ -1916,8 +1825,7 @@ public static function getDefaultUserProvider() * * @return \App\Models\User|null * @static - */ - public static function user() + */ public static function user() { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->user(); @@ -1927,8 +1835,7 @@ public static function user() * * @return int|string|null * @static - */ - public static function id() + */ public static function id() { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->id(); @@ -1939,8 +1846,7 @@ public static function id() * @param array $credentials * @return bool * @static - */ - public static function once($credentials = []) + */ public static function once($credentials = []) { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->once($credentials); @@ -1951,8 +1857,7 @@ public static function once($credentials = []) * @param mixed $id * @return \App\Models\User|false * @static - */ - public static function onceUsingId($id) + */ public static function onceUsingId($id) { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->onceUsingId($id); @@ -1963,8 +1868,7 @@ public static function onceUsingId($id) * @param array $credentials * @return bool * @static - */ - public static function validate($credentials = []) + */ public static function validate($credentials = []) { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->validate($credentials); @@ -1977,8 +1881,7 @@ public static function validate($credentials = []) * @return \Symfony\Component\HttpFoundation\Response|null * @throws \Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException * @static - */ - public static function basic($field = 'email', $extraConditions = []) + */ public static function basic($field = 'email', $extraConditions = []) { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->basic($field, $extraConditions); @@ -1991,8 +1894,7 @@ public static function basic($field = 'email', $extraConditions = []) * @return \Symfony\Component\HttpFoundation\Response|null * @throws \Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException * @static - */ - public static function onceBasic($field = 'email', $extraConditions = []) + */ public static function onceBasic($field = 'email', $extraConditions = []) { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->onceBasic($field, $extraConditions); @@ -2004,8 +1906,7 @@ public static function onceBasic($field = 'email', $extraConditions = []) * @param bool $remember * @return bool * @static - */ - public static function attempt($credentials = [], $remember = false) + */ public static function attempt($credentials = [], $remember = false) { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->attempt($credentials, $remember); @@ -2018,8 +1919,7 @@ public static function attempt($credentials = [], $remember = false) * @param bool $remember * @return bool * @static - */ - public static function attemptWhen($credentials = [], $callbacks = null, $remember = false) + */ public static function attemptWhen($credentials = [], $callbacks = null, $remember = false) { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->attemptWhen($credentials, $callbacks, $remember); @@ -2031,8 +1931,7 @@ public static function attemptWhen($credentials = [], $callbacks = null, $rememb * @param bool $remember * @return \App\Models\User|false * @static - */ - public static function loginUsingId($id, $remember = false) + */ public static function loginUsingId($id, $remember = false) { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->loginUsingId($id, $remember); @@ -2044,8 +1943,7 @@ public static function loginUsingId($id, $remember = false) * @param bool $remember * @return void * @static - */ - public static function login($user, $remember = false) + */ public static function login($user, $remember = false) { /** @var \Illuminate\Auth\SessionGuard $instance */ $instance->login($user, $remember); @@ -2055,8 +1953,7 @@ public static function login($user, $remember = false) * * @return void * @static - */ - public static function logout() + */ public static function logout() { /** @var \Illuminate\Auth\SessionGuard $instance */ $instance->logout(); @@ -2068,8 +1965,7 @@ public static function logout() * * @return void * @static - */ - public static function logoutCurrentDevice() + */ public static function logoutCurrentDevice() { /** @var \Illuminate\Auth\SessionGuard $instance */ $instance->logoutCurrentDevice(); @@ -2084,8 +1980,7 @@ public static function logoutCurrentDevice() * @return \App\Models\User|null * @throws \Illuminate\Auth\AuthenticationException * @static - */ - public static function logoutOtherDevices($password, $attribute = 'password') + */ public static function logoutOtherDevices($password, $attribute = 'password') { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->logoutOtherDevices($password, $attribute); @@ -2096,8 +1991,7 @@ public static function logoutOtherDevices($password, $attribute = 'password') * @param mixed $callback * @return void * @static - */ - public static function attempting($callback) + */ public static function attempting($callback) { /** @var \Illuminate\Auth\SessionGuard $instance */ $instance->attempting($callback); @@ -2107,8 +2001,7 @@ public static function attempting($callback) * * @return \App\Models\User * @static - */ - public static function getLastAttempted() + */ public static function getLastAttempted() { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->getLastAttempted(); @@ -2118,8 +2011,7 @@ public static function getLastAttempted() * * @return string * @static - */ - public static function getName() + */ public static function getName() { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->getName(); @@ -2129,8 +2021,7 @@ public static function getName() * * @return string * @static - */ - public static function getRecallerName() + */ public static function getRecallerName() { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->getRecallerName(); @@ -2140,8 +2031,7 @@ public static function getRecallerName() * * @return bool * @static - */ - public static function viaRemember() + */ public static function viaRemember() { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->viaRemember(); @@ -2152,8 +2042,7 @@ public static function viaRemember() * @param int $minutes * @return \Illuminate\Auth\SessionGuard * @static - */ - public static function setRememberDuration($minutes) + */ public static function setRememberDuration($minutes) { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->setRememberDuration($minutes); @@ -2164,8 +2053,7 @@ public static function setRememberDuration($minutes) * @return \Illuminate\Contracts\Cookie\QueueingFactory * @throws \RuntimeException * @static - */ - public static function getCookieJar() + */ public static function getCookieJar() { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->getCookieJar(); @@ -2176,8 +2064,7 @@ public static function getCookieJar() * @param \Illuminate\Contracts\Cookie\QueueingFactory $cookie * @return void * @static - */ - public static function setCookieJar($cookie) + */ public static function setCookieJar($cookie) { /** @var \Illuminate\Auth\SessionGuard $instance */ $instance->setCookieJar($cookie); @@ -2187,8 +2074,7 @@ public static function setCookieJar($cookie) * * @return \Illuminate\Contracts\Events\Dispatcher * @static - */ - public static function getDispatcher() + */ public static function getDispatcher() { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->getDispatcher(); @@ -2199,8 +2085,7 @@ public static function getDispatcher() * @param \Illuminate\Contracts\Events\Dispatcher $events * @return void * @static - */ - public static function setDispatcher($events) + */ public static function setDispatcher($events) { /** @var \Illuminate\Auth\SessionGuard $instance */ $instance->setDispatcher($events); @@ -2210,8 +2095,7 @@ public static function setDispatcher($events) * * @return \Illuminate\Contracts\Session\Session * @static - */ - public static function getSession() + */ public static function getSession() { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->getSession(); @@ -2221,8 +2105,7 @@ public static function getSession() * * @return \App\Models\User|null * @static - */ - public static function getUser() + */ public static function getUser() { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->getUser(); @@ -2233,8 +2116,7 @@ public static function getUser() * @param \Illuminate\Contracts\Auth\Authenticatable $user * @return \Illuminate\Auth\SessionGuard * @static - */ - public static function setUser($user) + */ public static function setUser($user) { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->setUser($user); @@ -2244,8 +2126,7 @@ public static function setUser($user) * * @return \Symfony\Component\HttpFoundation\Request * @static - */ - public static function getRequest() + */ public static function getRequest() { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->getRequest(); @@ -2256,8 +2137,7 @@ public static function getRequest() * @param \Symfony\Component\HttpFoundation\Request $request * @return \Illuminate\Auth\SessionGuard * @static - */ - public static function setRequest($request) + */ public static function setRequest($request) { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->setRequest($request); @@ -2267,8 +2147,7 @@ public static function setRequest($request) * * @return \Illuminate\Support\Timebox * @static - */ - public static function getTimebox() + */ public static function getTimebox() { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->getTimebox(); @@ -2279,8 +2158,7 @@ public static function getTimebox() * @return \App\Models\User * @throws \Illuminate\Auth\AuthenticationException * @static - */ - public static function authenticate() + */ public static function authenticate() { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->authenticate(); @@ -2290,8 +2168,7 @@ public static function authenticate() * * @return bool * @static - */ - public static function hasUser() + */ public static function hasUser() { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->hasUser(); @@ -2301,8 +2178,7 @@ public static function hasUser() * * @return bool * @static - */ - public static function check() + */ public static function check() { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->check(); @@ -2312,8 +2188,7 @@ public static function check() * * @return bool * @static - */ - public static function guest() + */ public static function guest() { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->guest(); @@ -2323,8 +2198,7 @@ public static function guest() * * @return \Illuminate\Auth\SessionGuard * @static - */ - public static function forgetUser() + */ public static function forgetUser() { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->forgetUser(); @@ -2334,8 +2208,7 @@ public static function forgetUser() * * @return \Illuminate\Contracts\Auth\UserProvider * @static - */ - public static function getProvider() + */ public static function getProvider() { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->getProvider(); @@ -2346,8 +2219,7 @@ public static function getProvider() * @param \Illuminate\Contracts\Auth\UserProvider $provider * @return void * @static - */ - public static function setProvider($provider) + */ public static function setProvider($provider) { /** @var \Illuminate\Auth\SessionGuard $instance */ $instance->setProvider($provider); @@ -2359,8 +2231,7 @@ public static function setProvider($provider) * @param object|callable $macro * @return void * @static - */ - public static function macro($name, $macro) + */ public static function macro($name, $macro) { \Illuminate\Auth\SessionGuard::macro($name, $macro); } @@ -2372,8 +2243,7 @@ public static function macro($name, $macro) * @return void * @throws \ReflectionException * @static - */ - public static function mixin($mixin, $replace = true) + */ public static function mixin($mixin, $replace = true) { \Illuminate\Auth\SessionGuard::mixin($mixin, $replace); } @@ -2383,8 +2253,7 @@ public static function mixin($mixin, $replace = true) * @param string $name * @return bool * @static - */ - public static function hasMacro($name) + */ public static function hasMacro($name) { return \Illuminate\Auth\SessionGuard::hasMacro($name); } @@ -2393,27 +2262,23 @@ public static function hasMacro($name) * * @return void * @static - */ - public static function flushMacros() + */ public static function flushMacros() { \Illuminate\Auth\SessionGuard::flushMacros(); } - - } + } /** * * * @see \Illuminate\View\Compilers\BladeCompiler - */ - class Blade { + */ class Blade { /** * Compile the view at the given path. * * @param string|null $path * @return void * @static - */ - public static function compile($path = null) + */ public static function compile($path = null) { /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ $instance->compile($path); @@ -2423,8 +2288,7 @@ public static function compile($path = null) * * @return string * @static - */ - public static function getPath() + */ public static function getPath() { /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ return $instance->getPath(); @@ -2435,8 +2299,7 @@ public static function getPath() * @param string $path * @return void * @static - */ - public static function setPath($path) + */ public static function setPath($path) { /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ $instance->setPath($path); @@ -2447,8 +2310,7 @@ public static function setPath($path) * @param string $value * @return string * @static - */ - public static function compileString($value) + */ public static function compileString($value) { /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ return $instance->compileString($value); @@ -2461,8 +2323,7 @@ public static function compileString($value) * @param bool $deleteCachedView * @return string * @static - */ - public static function render($string, $data = [], $deleteCachedView = false) + */ public static function render($string, $data = [], $deleteCachedView = false) { return \Illuminate\View\Compilers\BladeCompiler::render($string, $data, $deleteCachedView); } @@ -2472,8 +2333,7 @@ public static function render($string, $data = [], $deleteCachedView = false) * @param \Illuminate\View\Component $component * @return string * @static - */ - public static function renderComponent($component) + */ public static function renderComponent($component) { return \Illuminate\View\Compilers\BladeCompiler::renderComponent($component); } @@ -2483,8 +2343,7 @@ public static function renderComponent($component) * @param string $expression * @return string * @static - */ - public static function stripParentheses($expression) + */ public static function stripParentheses($expression) { /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ return $instance->stripParentheses($expression); @@ -2495,8 +2354,7 @@ public static function stripParentheses($expression) * @param callable $compiler * @return void * @static - */ - public static function extend($compiler) + */ public static function extend($compiler) { /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ $instance->extend($compiler); @@ -2506,8 +2364,7 @@ public static function extend($compiler) * * @return array * @static - */ - public static function getExtensions() + */ public static function getExtensions() { /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ return $instance->getExtensions(); @@ -2519,8 +2376,7 @@ public static function getExtensions() * @param callable $callback * @return void * @static - */ - public static function if($name, $callback) + */ public static function if($name, $callback) { /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ $instance->if($name, $callback); @@ -2532,8 +2388,7 @@ public static function if($name, $callback) * @param mixed $parameters * @return bool * @static - */ - public static function check($name, ...$parameters) + */ public static function check($name, ...$parameters) { /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ return $instance->check($name, ...$parameters); @@ -2546,8 +2401,7 @@ public static function check($name, ...$parameters) * @param string $prefix * @return void * @static - */ - public static function component($class, $alias = null, $prefix = '') + */ public static function component($class, $alias = null, $prefix = '') { /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ $instance->component($class, $alias, $prefix); @@ -2559,8 +2413,7 @@ public static function component($class, $alias = null, $prefix = '') * @param string $prefix * @return void * @static - */ - public static function components($components, $prefix = '') + */ public static function components($components, $prefix = '') { /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ $instance->components($components, $prefix); @@ -2570,8 +2423,7 @@ public static function components($components, $prefix = '') * * @return array * @static - */ - public static function getClassComponentAliases() + */ public static function getClassComponentAliases() { /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ return $instance->getClassComponentAliases(); @@ -2583,8 +2435,7 @@ public static function getClassComponentAliases() * @param string|null $prefix * @return void * @static - */ - public static function anonymousComponentPath($path, $prefix = null) + */ public static function anonymousComponentPath($path, $prefix = null) { /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ $instance->anonymousComponentPath($path, $prefix); @@ -2596,8 +2447,7 @@ public static function anonymousComponentPath($path, $prefix = null) * @param string|null $prefix * @return void * @static - */ - public static function anonymousComponentNamespace($directory, $prefix = null) + */ public static function anonymousComponentNamespace($directory, $prefix = null) { /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ $instance->anonymousComponentNamespace($directory, $prefix); @@ -2609,8 +2459,7 @@ public static function anonymousComponentNamespace($directory, $prefix = null) * @param string $prefix * @return void * @static - */ - public static function componentNamespace($namespace, $prefix) + */ public static function componentNamespace($namespace, $prefix) { /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ $instance->componentNamespace($namespace, $prefix); @@ -2620,8 +2469,7 @@ public static function componentNamespace($namespace, $prefix) * * @return array * @static - */ - public static function getAnonymousComponentPaths() + */ public static function getAnonymousComponentPaths() { /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ return $instance->getAnonymousComponentPaths(); @@ -2631,8 +2479,7 @@ public static function getAnonymousComponentPaths() * * @return array * @static - */ - public static function getAnonymousComponentNamespaces() + */ public static function getAnonymousComponentNamespaces() { /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ return $instance->getAnonymousComponentNamespaces(); @@ -2642,8 +2489,7 @@ public static function getAnonymousComponentNamespaces() * * @return array * @static - */ - public static function getClassComponentNamespaces() + */ public static function getClassComponentNamespaces() { /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ return $instance->getClassComponentNamespaces(); @@ -2655,8 +2501,7 @@ public static function getClassComponentNamespaces() * @param string|null $alias * @return void * @static - */ - public static function aliasComponent($path, $alias = null) + */ public static function aliasComponent($path, $alias = null) { /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ $instance->aliasComponent($path, $alias); @@ -2668,8 +2513,7 @@ public static function aliasComponent($path, $alias = null) * @param string|null $alias * @return void * @static - */ - public static function include($path, $alias = null) + */ public static function include($path, $alias = null) { /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ $instance->include($path, $alias); @@ -2681,8 +2525,7 @@ public static function include($path, $alias = null) * @param string|null $alias * @return void * @static - */ - public static function aliasInclude($path, $alias = null) + */ public static function aliasInclude($path, $alias = null) { /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ $instance->aliasInclude($path, $alias); @@ -2695,8 +2538,7 @@ public static function aliasInclude($path, $alias = null) * @return void * @throws \InvalidArgumentException * @static - */ - public static function directive($name, $handler) + */ public static function directive($name, $handler) { /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ $instance->directive($name, $handler); @@ -2706,11 +2548,21 @@ public static function directive($name, $handler) * * @return array * @static - */ - public static function getCustomDirectives() + */ public static function getCustomDirectives() { /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ return $instance->getCustomDirectives(); + } + /** + * Indicate that the following callable should be used to prepare strings for compilation. + * + * @param callable $callback + * @return \Illuminate\View\Compilers\BladeCompiler + * @static + */ public static function prepareStringsForCompilationUsing($callback) + { + /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ + return $instance->prepareStringsForCompilationUsing($callback); } /** * Register a new precompiler. @@ -2718,8 +2570,7 @@ public static function getCustomDirectives() * @param callable $precompiler * @return void * @static - */ - public static function precompiler($precompiler) + */ public static function precompiler($precompiler) { /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ $instance->precompiler($precompiler); @@ -2730,8 +2581,7 @@ public static function precompiler($precompiler) * @param string $format * @return void * @static - */ - public static function setEchoFormat($format) + */ public static function setEchoFormat($format) { /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ $instance->setEchoFormat($format); @@ -2741,8 +2591,7 @@ public static function setEchoFormat($format) * * @return void * @static - */ - public static function withDoubleEncoding() + */ public static function withDoubleEncoding() { /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ $instance->withDoubleEncoding(); @@ -2752,8 +2601,7 @@ public static function withDoubleEncoding() * * @return void * @static - */ - public static function withoutDoubleEncoding() + */ public static function withoutDoubleEncoding() { /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ $instance->withoutDoubleEncoding(); @@ -2763,8 +2611,7 @@ public static function withoutDoubleEncoding() * * @return void * @static - */ - public static function withoutComponentTags() + */ public static function withoutComponentTags() { /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ $instance->withoutComponentTags(); @@ -2775,8 +2622,7 @@ public static function withoutComponentTags() * @param string $path * @return string * @static - */ - public static function getCompiledPath($path) + */ public static function getCompiledPath($path) { //Method inherited from \Illuminate\View\Compilers\Compiler /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ return $instance->getCompiledPath($path); @@ -2786,9 +2632,9 @@ public static function getCompiledPath($path) * * @param string $path * @return bool + * @throws \ErrorException * @static - */ - public static function isExpired($path) + */ public static function isExpired($path) { //Method inherited from \Illuminate\View\Compilers\Compiler /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ return $instance->isExpired($path); @@ -2799,8 +2645,7 @@ public static function isExpired($path) * @param string $component * @return string * @static - */ - public static function newComponentHash($component) + */ public static function newComponentHash($component) { return \Illuminate\View\Compilers\BladeCompiler::newComponentHash($component); } @@ -2813,8 +2658,7 @@ public static function newComponentHash($component) * @param string $hash * @return string * @static - */ - public static function compileClassComponentOpening($component, $alias, $data, $hash) + */ public static function compileClassComponentOpening($component, $alias, $data, $hash) { return \Illuminate\View\Compilers\BladeCompiler::compileClassComponentOpening($component, $alias, $data, $hash); } @@ -2823,8 +2667,7 @@ public static function compileClassComponentOpening($component, $alias, $data, $ * * @return string * @static - */ - public static function compileEndComponentClass() + */ public static function compileEndComponentClass() { /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ return $instance->compileEndComponentClass(); @@ -2835,8 +2678,7 @@ public static function compileEndComponentClass() * @param mixed $value * @return mixed * @static - */ - public static function sanitizeComponentAttribute($value) + */ public static function sanitizeComponentAttribute($value) { return \Illuminate\View\Compilers\BladeCompiler::sanitizeComponentAttribute($value); } @@ -2845,8 +2687,7 @@ public static function sanitizeComponentAttribute($value) * * @return string * @static - */ - public static function compileEndOnce() + */ public static function compileEndOnce() { /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ return $instance->compileEndOnce(); @@ -2858,8 +2699,7 @@ public static function compileEndOnce() * @param callable|null $handler * @return void * @static - */ - public static function stringable($class, $handler = null) + */ public static function stringable($class, $handler = null) { /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ $instance->stringable($class, $handler); @@ -2870,8 +2710,7 @@ public static function stringable($class, $handler = null) * @param string $value * @return string * @static - */ - public static function compileEchos($value) + */ public static function compileEchos($value) { /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ return $instance->compileEchos($value); @@ -2882,14 +2721,12 @@ public static function compileEchos($value) * @param string $value * @return string * @static - */ - public static function applyEchoHandler($value) + */ public static function applyEchoHandler($value) { /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ return $instance->applyEchoHandler($value); } - - } + } /** * * @@ -2899,18 +2736,17 @@ public static function applyEchoHandler($value) * @method static array|null resolveAuthenticatedUser(\Illuminate\Http\Request $request) * @method static void resolveAuthenticatedUserUsing(\Closure $callback) * @method static \Illuminate\Broadcasting\Broadcasters\Broadcaster channel(\Illuminate\Contracts\Broadcasting\HasBroadcastChannel|string $channel, callable|string $callback, array $options = []) + * @method static \Illuminate\Support\Collection getChannels() * @see \Illuminate\Broadcasting\BroadcastManager * @see \Illuminate\Broadcasting\Broadcasters\Broadcaster - */ - class Broadcast { + */ class Broadcast { /** * Register the routes for handling broadcast channel authentication and sockets. * * @param array|null $attributes * @return void * @static - */ - public static function routes($attributes = null) + */ public static function routes($attributes = null) { /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ $instance->routes($attributes); @@ -2921,8 +2757,7 @@ public static function routes($attributes = null) * @param array|null $attributes * @return void * @static - */ - public static function userRoutes($attributes = null) + */ public static function userRoutes($attributes = null) { /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ $instance->userRoutes($attributes); @@ -2935,8 +2770,7 @@ public static function userRoutes($attributes = null) * @param array|null $attributes * @return void * @static - */ - public static function channelRoutes($attributes = null) + */ public static function channelRoutes($attributes = null) { /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ $instance->channelRoutes($attributes); @@ -2947,8 +2781,7 @@ public static function channelRoutes($attributes = null) * @param \Illuminate\Http\Request|null $request * @return string|null * @static - */ - public static function socket($request = null) + */ public static function socket($request = null) { /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ return $instance->socket($request); @@ -2959,8 +2792,7 @@ public static function socket($request = null) * @param mixed|null $event * @return \Illuminate\Broadcasting\PendingBroadcast * @static - */ - public static function event($event = null) + */ public static function event($event = null) { /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ return $instance->event($event); @@ -2971,8 +2803,7 @@ public static function event($event = null) * @param mixed $event * @return void * @static - */ - public static function queue($event) + */ public static function queue($event) { /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ $instance->queue($event); @@ -2983,8 +2814,7 @@ public static function queue($event) * @param string|null $driver * @return mixed * @static - */ - public static function connection($driver = null) + */ public static function connection($driver = null) { /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ return $instance->connection($driver); @@ -2995,8 +2825,7 @@ public static function connection($driver = null) * @param string|null $name * @return mixed * @static - */ - public static function driver($name = null) + */ public static function driver($name = null) { /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ return $instance->driver($name); @@ -3007,8 +2836,7 @@ public static function driver($name = null) * @param array $config * @return \Pusher\Pusher * @static - */ - public static function pusher($config) + */ public static function pusher($config) { /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ return $instance->pusher($config); @@ -3019,8 +2847,7 @@ public static function pusher($config) * @param array $config * @return \Ably\AblyRest * @static - */ - public static function ably($config) + */ public static function ably($config) { /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ return $instance->ably($config); @@ -3030,8 +2857,7 @@ public static function ably($config) * * @return string * @static - */ - public static function getDefaultDriver() + */ public static function getDefaultDriver() { /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ return $instance->getDefaultDriver(); @@ -3042,8 +2868,7 @@ public static function getDefaultDriver() * @param string $name * @return void * @static - */ - public static function setDefaultDriver($name) + */ public static function setDefaultDriver($name) { /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ $instance->setDefaultDriver($name); @@ -3054,8 +2879,7 @@ public static function setDefaultDriver($name) * @param string|null $name * @return void * @static - */ - public static function purge($name = null) + */ public static function purge($name = null) { /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ $instance->purge($name); @@ -3067,8 +2891,7 @@ public static function purge($name = null) * @param \Closure $callback * @return \Illuminate\Broadcasting\BroadcastManager * @static - */ - public static function extend($driver, $callback) + */ public static function extend($driver, $callback) { /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ return $instance->extend($driver, $callback); @@ -3078,8 +2901,7 @@ public static function extend($driver, $callback) * * @return \Illuminate\Contracts\Foundation\Application * @static - */ - public static function getApplication() + */ public static function getApplication() { /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ return $instance->getApplication(); @@ -3090,8 +2912,7 @@ public static function getApplication() * @param \Illuminate\Contracts\Foundation\Application $app * @return \Illuminate\Broadcasting\BroadcastManager * @static - */ - public static function setApplication($app) + */ public static function setApplication($app) { /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ return $instance->setApplication($app); @@ -3101,29 +2922,25 @@ public static function setApplication($app) * * @return \Illuminate\Broadcasting\BroadcastManager * @static - */ - public static function forgetDrivers() + */ public static function forgetDrivers() { /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ return $instance->forgetDrivers(); } - - } + } /** * * * @see \Illuminate\Bus\Dispatcher * @see \Illuminate\Support\Testing\Fakes\BusFake - */ - class Bus { + */ class Bus { /** * Dispatch a command to its appropriate handler. * * @param mixed $command * @return mixed * @static - */ - public static function dispatch($command) + */ public static function dispatch($command) { /** @var \Illuminate\Bus\Dispatcher $instance */ return $instance->dispatch($command); @@ -3137,8 +2954,7 @@ public static function dispatch($command) * @param mixed $handler * @return mixed * @static - */ - public static function dispatchSync($command, $handler = null) + */ public static function dispatchSync($command, $handler = null) { /** @var \Illuminate\Bus\Dispatcher $instance */ return $instance->dispatchSync($command, $handler); @@ -3150,8 +2966,7 @@ public static function dispatchSync($command, $handler = null) * @param mixed $handler * @return mixed * @static - */ - public static function dispatchNow($command, $handler = null) + */ public static function dispatchNow($command, $handler = null) { /** @var \Illuminate\Bus\Dispatcher $instance */ return $instance->dispatchNow($command, $handler); @@ -3162,8 +2977,7 @@ public static function dispatchNow($command, $handler = null) * @param string $batchId * @return \Illuminate\Bus\Batch|null * @static - */ - public static function findBatch($batchId) + */ public static function findBatch($batchId) { /** @var \Illuminate\Bus\Dispatcher $instance */ return $instance->findBatch($batchId); @@ -3174,8 +2988,7 @@ public static function findBatch($batchId) * @param \Illuminate\Support\Collection|array|mixed $jobs * @return \Illuminate\Bus\PendingBatch * @static - */ - public static function batch($jobs) + */ public static function batch($jobs) { /** @var \Illuminate\Bus\Dispatcher $instance */ return $instance->batch($jobs); @@ -3186,8 +2999,7 @@ public static function batch($jobs) * @param \Illuminate\Support\Collection|array $jobs * @return \Illuminate\Foundation\Bus\PendingChain * @static - */ - public static function chain($jobs) + */ public static function chain($jobs) { /** @var \Illuminate\Bus\Dispatcher $instance */ return $instance->chain($jobs); @@ -3198,8 +3010,7 @@ public static function chain($jobs) * @param mixed $command * @return bool * @static - */ - public static function hasCommandHandler($command) + */ public static function hasCommandHandler($command) { /** @var \Illuminate\Bus\Dispatcher $instance */ return $instance->hasCommandHandler($command); @@ -3210,8 +3021,7 @@ public static function hasCommandHandler($command) * @param mixed $command * @return bool|mixed * @static - */ - public static function getCommandHandler($command) + */ public static function getCommandHandler($command) { /** @var \Illuminate\Bus\Dispatcher $instance */ return $instance->getCommandHandler($command); @@ -3223,8 +3033,7 @@ public static function getCommandHandler($command) * @return mixed * @throws \RuntimeException * @static - */ - public static function dispatchToQueue($command) + */ public static function dispatchToQueue($command) { /** @var \Illuminate\Bus\Dispatcher $instance */ return $instance->dispatchToQueue($command); @@ -3236,8 +3045,7 @@ public static function dispatchToQueue($command) * @param mixed $handler * @return void * @static - */ - public static function dispatchAfterResponse($command, $handler = null) + */ public static function dispatchAfterResponse($command, $handler = null) { /** @var \Illuminate\Bus\Dispatcher $instance */ $instance->dispatchAfterResponse($command, $handler); @@ -3248,8 +3056,7 @@ public static function dispatchAfterResponse($command, $handler = null) * @param array $pipes * @return \Illuminate\Bus\Dispatcher * @static - */ - public static function pipeThrough($pipes) + */ public static function pipeThrough($pipes) { /** @var \Illuminate\Bus\Dispatcher $instance */ return $instance->pipeThrough($pipes); @@ -3260,8 +3067,7 @@ public static function pipeThrough($pipes) * @param array $map * @return \Illuminate\Bus\Dispatcher * @static - */ - public static function map($map) + */ public static function map($map) { /** @var \Illuminate\Bus\Dispatcher $instance */ return $instance->map($map); @@ -3270,13 +3076,12 @@ public static function map($map) * Specify the jobs that should be dispatched instead of faked. * * @param array|string $jobsToDispatch - * @return void + * @return \Illuminate\Support\Testing\Fakes\BusFake * @static - */ - public static function except($jobsToDispatch) + */ public static function except($jobsToDispatch) { /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ - $instance->except($jobsToDispatch); + return $instance->except($jobsToDispatch); } /** * Assert if a job was dispatched based on a truth-test callback. @@ -3285,8 +3090,7 @@ public static function except($jobsToDispatch) * @param callable|int|null $callback * @return void * @static - */ - public static function assertDispatched($command, $callback = null) + */ public static function assertDispatched($command, $callback = null) { /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ $instance->assertDispatched($command, $callback); @@ -3298,8 +3102,7 @@ public static function assertDispatched($command, $callback = null) * @param int $times * @return void * @static - */ - public static function assertDispatchedTimes($command, $times = 1) + */ public static function assertDispatchedTimes($command, $times = 1) { /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ $instance->assertDispatchedTimes($command, $times); @@ -3311,8 +3114,7 @@ public static function assertDispatchedTimes($command, $times = 1) * @param callable|null $callback * @return void * @static - */ - public static function assertNotDispatched($command, $callback = null) + */ public static function assertNotDispatched($command, $callback = null) { /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ $instance->assertNotDispatched($command, $callback); @@ -3322,8 +3124,7 @@ public static function assertNotDispatched($command, $callback = null) * * @return void * @static - */ - public static function assertNothingDispatched() + */ public static function assertNothingDispatched() { /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ $instance->assertNothingDispatched(); @@ -3335,8 +3136,7 @@ public static function assertNothingDispatched() * @param callable|int|null $callback * @return void * @static - */ - public static function assertDispatchedSync($command, $callback = null) + */ public static function assertDispatchedSync($command, $callback = null) { /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ $instance->assertDispatchedSync($command, $callback); @@ -3348,8 +3148,7 @@ public static function assertDispatchedSync($command, $callback = null) * @param int $times * @return void * @static - */ - public static function assertDispatchedSyncTimes($command, $times = 1) + */ public static function assertDispatchedSyncTimes($command, $times = 1) { /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ $instance->assertDispatchedSyncTimes($command, $times); @@ -3361,8 +3160,7 @@ public static function assertDispatchedSyncTimes($command, $times = 1) * @param callable|null $callback * @return void * @static - */ - public static function assertNotDispatchedSync($command, $callback = null) + */ public static function assertNotDispatchedSync($command, $callback = null) { /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ $instance->assertNotDispatchedSync($command, $callback); @@ -3374,8 +3172,7 @@ public static function assertNotDispatchedSync($command, $callback = null) * @param callable|int|null $callback * @return void * @static - */ - public static function assertDispatchedAfterResponse($command, $callback = null) + */ public static function assertDispatchedAfterResponse($command, $callback = null) { /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ $instance->assertDispatchedAfterResponse($command, $callback); @@ -3387,8 +3184,7 @@ public static function assertDispatchedAfterResponse($command, $callback = null) * @param int $times * @return void * @static - */ - public static function assertDispatchedAfterResponseTimes($command, $times = 1) + */ public static function assertDispatchedAfterResponseTimes($command, $times = 1) { /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ $instance->assertDispatchedAfterResponseTimes($command, $times); @@ -3400,8 +3196,7 @@ public static function assertDispatchedAfterResponseTimes($command, $times = 1) * @param callable|null $callback * @return void * @static - */ - public static function assertNotDispatchedAfterResponse($command, $callback = null) + */ public static function assertNotDispatchedAfterResponse($command, $callback = null) { /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ $instance->assertNotDispatchedAfterResponse($command, $callback); @@ -3412,8 +3207,7 @@ public static function assertNotDispatchedAfterResponse($command, $callback = nu * @param array $expectedChain * @return void * @static - */ - public static function assertChained($expectedChain) + */ public static function assertChained($expectedChain) { /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ $instance->assertChained($expectedChain); @@ -3425,11 +3219,21 @@ public static function assertChained($expectedChain) * @param callable|null $callback * @return void * @static - */ - public static function assertDispatchedWithoutChain($command, $callback = null) + */ public static function assertDispatchedWithoutChain($command, $callback = null) { /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ $instance->assertDispatchedWithoutChain($command, $callback); + } + /** + * Create a new assertion about a chained batch. + * + * @param \Closure $callback + * @return \Illuminate\Support\Testing\Fakes\ChainedBatchTruthTest + * @static + */ public static function chainedBatch($callback) + { + /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ + return $instance->chainedBatch($callback); } /** * Assert if a batch was dispatched based on a truth-test callback. @@ -3437,8 +3241,7 @@ public static function assertDispatchedWithoutChain($command, $callback = null) * @param callable $callback * @return void * @static - */ - public static function assertBatched($callback) + */ public static function assertBatched($callback) { /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ $instance->assertBatched($callback); @@ -3449,8 +3252,7 @@ public static function assertBatched($callback) * @param int $count * @return void * @static - */ - public static function assertBatchCount($count) + */ public static function assertBatchCount($count) { /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ $instance->assertBatchCount($count); @@ -3460,8 +3262,7 @@ public static function assertBatchCount($count) * * @return void * @static - */ - public static function assertNothingBatched() + */ public static function assertNothingBatched() { /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ $instance->assertNothingBatched(); @@ -3473,8 +3274,7 @@ public static function assertNothingBatched() * @param callable|null $callback * @return \Illuminate\Support\Collection * @static - */ - public static function dispatched($command, $callback = null) + */ public static function dispatched($command, $callback = null) { /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ return $instance->dispatched($command, $callback); @@ -3486,8 +3286,7 @@ public static function dispatched($command, $callback = null) * @param callable|null $callback * @return \Illuminate\Support\Collection * @static - */ - public static function dispatchedSync($command, $callback = null) + */ public static function dispatchedSync($command, $callback = null) { /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ return $instance->dispatchedSync($command, $callback); @@ -3499,8 +3298,7 @@ public static function dispatchedSync($command, $callback = null) * @param callable|null $callback * @return \Illuminate\Support\Collection * @static - */ - public static function dispatchedAfterResponse($command, $callback = null) + */ public static function dispatchedAfterResponse($command, $callback = null) { /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ return $instance->dispatchedAfterResponse($command, $callback); @@ -3511,8 +3309,7 @@ public static function dispatchedAfterResponse($command, $callback = null) * @param callable $callback * @return \Illuminate\Support\Collection * @static - */ - public static function batched($callback) + */ public static function batched($callback) { /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ return $instance->batched($callback); @@ -3523,8 +3320,7 @@ public static function batched($callback) * @param string $command * @return bool * @static - */ - public static function hasDispatched($command) + */ public static function hasDispatched($command) { /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ return $instance->hasDispatched($command); @@ -3535,8 +3331,7 @@ public static function hasDispatched($command) * @param string $command * @return bool * @static - */ - public static function hasDispatchedSync($command) + */ public static function hasDispatchedSync($command) { /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ return $instance->hasDispatchedSync($command); @@ -3547,8 +3342,7 @@ public static function hasDispatchedSync($command) * @param string $command * @return bool * @static - */ - public static function hasDispatchedAfterResponse($command) + */ public static function hasDispatchedAfterResponse($command) { /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ return $instance->hasDispatchedAfterResponse($command); @@ -3559,8 +3353,7 @@ public static function hasDispatchedAfterResponse($command) * @param string $name * @return \Illuminate\Bus\Batch * @static - */ - public static function dispatchFakeBatch($name = '') + */ public static function dispatchFakeBatch($name = '') { /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ return $instance->dispatchFakeBatch($name); @@ -3571,29 +3364,36 @@ public static function dispatchFakeBatch($name = '') * @param \Illuminate\Bus\PendingBatch $pendingBatch * @return \Illuminate\Bus\Batch * @static - */ - public static function recordPendingBatch($pendingBatch) + */ public static function recordPendingBatch($pendingBatch) { /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ return $instance->recordPendingBatch($pendingBatch); } - - } + /** + * Specify if commands should be serialized and restored when being batched. + * + * @param bool $serializeAndRestore + * @return \Illuminate\Support\Testing\Fakes\BusFake + * @static + */ public static function serializeAndRestore($serializeAndRestore = true) + { + /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ + return $instance->serializeAndRestore($serializeAndRestore); + } + } /** * * * @see \Illuminate\Cache\CacheManager * @mixin \Illuminate\Cache\Repository - */ - class Cache { + */ class Cache { /** * Get a cache store instance by name, wrapped in a repository. * * @param string|null $name * @return \Illuminate\Contracts\Cache\Repository * @static - */ - public static function store($name = null) + */ public static function store($name = null) { /** @var \Illuminate\Cache\CacheManager $instance */ return $instance->store($name); @@ -3604,11 +3404,22 @@ public static function store($name = null) * @param string|null $driver * @return \Illuminate\Contracts\Cache\Repository * @static - */ - public static function driver($driver = null) + */ public static function driver($driver = null) { /** @var \Illuminate\Cache\CacheManager $instance */ return $instance->driver($driver); + } + /** + * Resolve the given store. + * + * @param string $name + * @return \Illuminate\Contracts\Cache\Repository + * @throws \InvalidArgumentException + * @static + */ public static function resolve($name) + { + /** @var \Illuminate\Cache\CacheManager $instance */ + return $instance->resolve($name); } /** * Create a new cache repository with the given implementation. @@ -3616,8 +3427,7 @@ public static function driver($driver = null) * @param \Illuminate\Contracts\Cache\Store $store * @return \Illuminate\Cache\Repository * @static - */ - public static function repository($store) + */ public static function repository($store) { /** @var \Illuminate\Cache\CacheManager $instance */ return $instance->repository($store); @@ -3627,8 +3437,7 @@ public static function repository($store) * * @return void * @static - */ - public static function refreshEventDispatcher() + */ public static function refreshEventDispatcher() { /** @var \Illuminate\Cache\CacheManager $instance */ $instance->refreshEventDispatcher(); @@ -3638,8 +3447,7 @@ public static function refreshEventDispatcher() * * @return string * @static - */ - public static function getDefaultDriver() + */ public static function getDefaultDriver() { /** @var \Illuminate\Cache\CacheManager $instance */ return $instance->getDefaultDriver(); @@ -3650,8 +3458,7 @@ public static function getDefaultDriver() * @param string $name * @return void * @static - */ - public static function setDefaultDriver($name) + */ public static function setDefaultDriver($name) { /** @var \Illuminate\Cache\CacheManager $instance */ $instance->setDefaultDriver($name); @@ -3662,8 +3469,7 @@ public static function setDefaultDriver($name) * @param array|string|null $name * @return \Illuminate\Cache\CacheManager * @static - */ - public static function forgetDriver($name = null) + */ public static function forgetDriver($name = null) { /** @var \Illuminate\Cache\CacheManager $instance */ return $instance->forgetDriver($name); @@ -3674,8 +3480,7 @@ public static function forgetDriver($name = null) * @param string|null $name * @return void * @static - */ - public static function purge($name = null) + */ public static function purge($name = null) { /** @var \Illuminate\Cache\CacheManager $instance */ $instance->purge($name); @@ -3687,11 +3492,21 @@ public static function purge($name = null) * @param \Closure $callback * @return \Illuminate\Cache\CacheManager * @static - */ - public static function extend($driver, $callback) + */ public static function extend($driver, $callback) { /** @var \Illuminate\Cache\CacheManager $instance */ return $instance->extend($driver, $callback); + } + /** + * Set the application instance used by the manager. + * + * @param \Illuminate\Contracts\Foundation\Application $app + * @return \Illuminate\Cache\CacheManager + * @static + */ public static function setApplication($app) + { + /** @var \Illuminate\Cache\CacheManager $instance */ + return $instance->setApplication($app); } /** * Determine if an item exists in the cache. @@ -3699,8 +3514,7 @@ public static function extend($driver, $callback) * @param array|string $key * @return bool * @static - */ - public static function has($key) + */ public static function has($key) { /** @var \Illuminate\Cache\Repository $instance */ return $instance->has($key); @@ -3711,8 +3525,7 @@ public static function has($key) * @param string $key * @return bool * @static - */ - public static function missing($key) + */ public static function missing($key) { /** @var \Illuminate\Cache\Repository $instance */ return $instance->missing($key); @@ -3725,8 +3538,7 @@ public static function missing($key) * @param \Illuminate\Cache\TCacheValue|\Illuminate\Cache\(\Closure(): TCacheValue) $default * @return \Illuminate\Cache\(TCacheValue is null ? mixed : TCacheValue) * @static - */ - public static function get($key, $default = null) + */ public static function get($key, $default = null) { /** @var \Illuminate\Cache\Repository $instance */ return $instance->get($key, $default); @@ -3739,8 +3551,7 @@ public static function get($key, $default = null) * @param array $keys * @return array * @static - */ - public static function many($keys) + */ public static function many($keys) { /** @var \Illuminate\Cache\Repository $instance */ return $instance->many($keys); @@ -3756,8 +3567,7 @@ public static function many($keys) * MUST be thrown if $keys is neither an array nor a Traversable, * or if any of the $keys are not a legal value. * @static - */ - public static function getMultiple($keys, $default = null) + */ public static function getMultiple($keys, $default = null) { /** @var \Illuminate\Cache\Repository $instance */ return $instance->getMultiple($keys, $default); @@ -3770,8 +3580,7 @@ public static function getMultiple($keys, $default = null) * @param \Illuminate\Cache\TCacheValue|\Illuminate\Cache\(\Closure(): TCacheValue) $default * @return \Illuminate\Cache\(TCacheValue is null ? mixed : TCacheValue) * @static - */ - public static function pull($key, $default = null) + */ public static function pull($key, $default = null) { /** @var \Illuminate\Cache\Repository $instance */ return $instance->pull($key, $default); @@ -3784,8 +3593,7 @@ public static function pull($key, $default = null) * @param \DateTimeInterface|\DateInterval|int|null $ttl * @return bool * @static - */ - public static function put($key, $value, $ttl = null) + */ public static function put($key, $value, $ttl = null) { /** @var \Illuminate\Cache\Repository $instance */ return $instance->put($key, $value, $ttl); @@ -3803,8 +3611,7 @@ public static function put($key, $value, $ttl = null) * @throws \Psr\SimpleCache\InvalidArgumentException * MUST be thrown if the $key string is not a legal value. * @static - */ - public static function set($key, $value, $ttl = null) + */ public static function set($key, $value, $ttl = null) { /** @var \Illuminate\Cache\Repository $instance */ return $instance->set($key, $value, $ttl); @@ -3816,8 +3623,7 @@ public static function set($key, $value, $ttl = null) * @param \DateTimeInterface|\DateInterval|int|null $ttl * @return bool * @static - */ - public static function putMany($values, $ttl = null) + */ public static function putMany($values, $ttl = null) { /** @var \Illuminate\Cache\Repository $instance */ return $instance->putMany($values, $ttl); @@ -3835,8 +3641,7 @@ public static function putMany($values, $ttl = null) * MUST be thrown if $values is neither an array nor a Traversable, * or if any of the $values are not a legal value. * @static - */ - public static function setMultiple($values, $ttl = null) + */ public static function setMultiple($values, $ttl = null) { /** @var \Illuminate\Cache\Repository $instance */ return $instance->setMultiple($values, $ttl); @@ -3849,8 +3654,7 @@ public static function setMultiple($values, $ttl = null) * @param \DateTimeInterface|\DateInterval|int|null $ttl * @return bool * @static - */ - public static function add($key, $value, $ttl = null) + */ public static function add($key, $value, $ttl = null) { /** @var \Illuminate\Cache\Repository $instance */ return $instance->add($key, $value, $ttl); @@ -3862,8 +3666,7 @@ public static function add($key, $value, $ttl = null) * @param mixed $value * @return int|bool * @static - */ - public static function increment($key, $value = 1) + */ public static function increment($key, $value = 1) { /** @var \Illuminate\Cache\Repository $instance */ return $instance->increment($key, $value); @@ -3875,8 +3678,7 @@ public static function increment($key, $value = 1) * @param mixed $value * @return int|bool * @static - */ - public static function decrement($key, $value = 1) + */ public static function decrement($key, $value = 1) { /** @var \Illuminate\Cache\Repository $instance */ return $instance->decrement($key, $value); @@ -3888,8 +3690,7 @@ public static function decrement($key, $value = 1) * @param mixed $value * @return bool * @static - */ - public static function forever($key, $value) + */ public static function forever($key, $value) { /** @var \Illuminate\Cache\Repository $instance */ return $instance->forever($key, $value); @@ -3903,8 +3704,7 @@ public static function forever($key, $value) * @param \Closure(): TCacheValue $callback * @return \Illuminate\Cache\TCacheValue * @static - */ - public static function remember($key, $ttl, $callback) + */ public static function remember($key, $ttl, $callback) { /** @var \Illuminate\Cache\Repository $instance */ return $instance->remember($key, $ttl, $callback); @@ -3917,8 +3717,7 @@ public static function remember($key, $ttl, $callback) * @param \Closure(): TCacheValue $callback * @return \Illuminate\Cache\TCacheValue * @static - */ - public static function sear($key, $callback) + */ public static function sear($key, $callback) { /** @var \Illuminate\Cache\Repository $instance */ return $instance->sear($key, $callback); @@ -3931,8 +3730,7 @@ public static function sear($key, $callback) * @param \Closure(): TCacheValue $callback * @return \Illuminate\Cache\TCacheValue * @static - */ - public static function rememberForever($key, $callback) + */ public static function rememberForever($key, $callback) { /** @var \Illuminate\Cache\Repository $instance */ return $instance->rememberForever($key, $callback); @@ -3943,8 +3741,7 @@ public static function rememberForever($key, $callback) * @param string $key * @return bool * @static - */ - public static function forget($key) + */ public static function forget($key) { /** @var \Illuminate\Cache\Repository $instance */ return $instance->forget($key); @@ -3958,8 +3755,7 @@ public static function forget($key) * @throws \Psr\SimpleCache\InvalidArgumentException * MUST be thrown if the $key string is not a legal value. * @static - */ - public static function delete($key) + */ public static function delete($key) { /** @var \Illuminate\Cache\Repository $instance */ return $instance->delete($key); @@ -3974,8 +3770,7 @@ public static function delete($key) * MUST be thrown if $keys is neither an array nor a Traversable, * or if any of the $keys are not a legal value. * @static - */ - public static function deleteMultiple($keys) + */ public static function deleteMultiple($keys) { /** @var \Illuminate\Cache\Repository $instance */ return $instance->deleteMultiple($keys); @@ -3986,8 +3781,7 @@ public static function deleteMultiple($keys) * @return bool * @return bool True on success and false on failure. * @static - */ - public static function clear() + */ public static function clear() { /** @var \Illuminate\Cache\Repository $instance */ return $instance->clear(); @@ -3999,8 +3793,7 @@ public static function clear() * @return \Illuminate\Cache\TaggedCache * @throws \BadMethodCallException * @static - */ - public static function tags($names) + */ public static function tags($names) { /** @var \Illuminate\Cache\Repository $instance */ return $instance->tags($names); @@ -4010,8 +3803,7 @@ public static function tags($names) * * @return bool * @static - */ - public static function supportsTags() + */ public static function supportsTags() { /** @var \Illuminate\Cache\Repository $instance */ return $instance->supportsTags(); @@ -4021,8 +3813,7 @@ public static function supportsTags() * * @return int|null * @static - */ - public static function getDefaultCacheTime() + */ public static function getDefaultCacheTime() { /** @var \Illuminate\Cache\Repository $instance */ return $instance->getDefaultCacheTime(); @@ -4033,8 +3824,7 @@ public static function getDefaultCacheTime() * @param int|null $seconds * @return \Illuminate\Cache\Repository * @static - */ - public static function setDefaultCacheTime($seconds) + */ public static function setDefaultCacheTime($seconds) { /** @var \Illuminate\Cache\Repository $instance */ return $instance->setDefaultCacheTime($seconds); @@ -4044,19 +3834,28 @@ public static function setDefaultCacheTime($seconds) * * @return \Illuminate\Contracts\Cache\Store * @static - */ - public static function getStore() + */ public static function getStore() { /** @var \Illuminate\Cache\Repository $instance */ return $instance->getStore(); + } + /** + * Set the cache store implementation. + * + * @param \Illuminate\Contracts\Cache\Store $store + * @return static + * @static + */ public static function setStore($store) + { + /** @var \Illuminate\Cache\Repository $instance */ + return $instance->setStore($store); } /** * Get the event dispatcher instance. * * @return \Illuminate\Contracts\Events\Dispatcher * @static - */ - public static function getEventDispatcher() + */ public static function getEventDispatcher() { /** @var \Illuminate\Cache\Repository $instance */ return $instance->getEventDispatcher(); @@ -4067,8 +3866,7 @@ public static function getEventDispatcher() * @param \Illuminate\Contracts\Events\Dispatcher $events * @return void * @static - */ - public static function setEventDispatcher($events) + */ public static function setEventDispatcher($events) { /** @var \Illuminate\Cache\Repository $instance */ $instance->setEventDispatcher($events); @@ -4079,8 +3877,7 @@ public static function setEventDispatcher($events) * @param string $key * @return bool * @static - */ - public static function offsetExists($key) + */ public static function offsetExists($key) { /** @var \Illuminate\Cache\Repository $instance */ return $instance->offsetExists($key); @@ -4091,8 +3888,7 @@ public static function offsetExists($key) * @param string $key * @return mixed * @static - */ - public static function offsetGet($key) + */ public static function offsetGet($key) { /** @var \Illuminate\Cache\Repository $instance */ return $instance->offsetGet($key); @@ -4104,8 +3900,7 @@ public static function offsetGet($key) * @param mixed $value * @return void * @static - */ - public static function offsetSet($key, $value) + */ public static function offsetSet($key, $value) { /** @var \Illuminate\Cache\Repository $instance */ $instance->offsetSet($key, $value); @@ -4116,8 +3911,7 @@ public static function offsetSet($key, $value) * @param string $key * @return void * @static - */ - public static function offsetUnset($key) + */ public static function offsetUnset($key) { /** @var \Illuminate\Cache\Repository $instance */ $instance->offsetUnset($key); @@ -4129,8 +3923,7 @@ public static function offsetUnset($key) * @param object|callable $macro * @return void * @static - */ - public static function macro($name, $macro) + */ public static function macro($name, $macro) { \Illuminate\Cache\Repository::macro($name, $macro); } @@ -4142,8 +3935,7 @@ public static function macro($name, $macro) * @return void * @throws \ReflectionException * @static - */ - public static function mixin($mixin, $replace = true) + */ public static function mixin($mixin, $replace = true) { \Illuminate\Cache\Repository::mixin($mixin, $replace); } @@ -4153,8 +3945,7 @@ public static function mixin($mixin, $replace = true) * @param string $name * @return bool * @static - */ - public static function hasMacro($name) + */ public static function hasMacro($name) { return \Illuminate\Cache\Repository::hasMacro($name); } @@ -4163,8 +3954,7 @@ public static function hasMacro($name) * * @return void * @static - */ - public static function flushMacros() + */ public static function flushMacros() { \Illuminate\Cache\Repository::flushMacros(); } @@ -4176,8 +3966,7 @@ public static function flushMacros() * @return mixed * @throws \BadMethodCallException * @static - */ - public static function macroCall($method, $parameters) + */ public static function macroCall($method, $parameters) { /** @var \Illuminate\Cache\Repository $instance */ return $instance->macroCall($method, $parameters); @@ -4190,8 +3979,7 @@ public static function macroCall($method, $parameters) * @param string|null $owner * @return \Illuminate\Contracts\Cache\Lock * @static - */ - public static function lock($name, $seconds = 0, $owner = null) + */ public static function lock($name, $seconds = 0, $owner = null) { /** @var \Illuminate\Cache\FileStore $instance */ return $instance->lock($name, $seconds, $owner); @@ -4203,8 +3991,7 @@ public static function lock($name, $seconds = 0, $owner = null) * @param string $owner * @return \Illuminate\Contracts\Cache\Lock * @static - */ - public static function restoreLock($name, $owner) + */ public static function restoreLock($name, $owner) { /** @var \Illuminate\Cache\FileStore $instance */ return $instance->restoreLock($name, $owner); @@ -4214,19 +4001,28 @@ public static function restoreLock($name, $owner) * * @return bool * @static - */ - public static function flush() + */ public static function flush() { /** @var \Illuminate\Cache\FileStore $instance */ return $instance->flush(); + } + /** + * Get the full path for the given cache key. + * + * @param string $key + * @return string + * @static + */ public static function path($key) + { + /** @var \Illuminate\Cache\FileStore $instance */ + return $instance->path($key); } /** * Get the Filesystem instance. * * @return \Illuminate\Filesystem\Filesystem * @static - */ - public static function getFilesystem() + */ public static function getFilesystem() { /** @var \Illuminate\Cache\FileStore $instance */ return $instance->getFilesystem(); @@ -4236,39 +4032,45 @@ public static function getFilesystem() * * @return string * @static - */ - public static function getDirectory() + */ public static function getDirectory() { /** @var \Illuminate\Cache\FileStore $instance */ return $instance->getDirectory(); + } + /** + * Set the cache directory where locks should be stored. + * + * @param string|null $lockDirectory + * @return \Illuminate\Cache\FileStore + * @static + */ public static function setLockDirectory($lockDirectory) + { + /** @var \Illuminate\Cache\FileStore $instance */ + return $instance->setLockDirectory($lockDirectory); } /** * Get the cache key prefix. * * @return string * @static - */ - public static function getPrefix() + */ public static function getPrefix() { /** @var \Illuminate\Cache\FileStore $instance */ return $instance->getPrefix(); } - - } + } /** * * * @see \Illuminate\Config\Repository - */ - class Config { + */ class Config { /** * Determine if the given configuration value exists. * * @param string $key * @return bool * @static - */ - public static function has($key) + */ public static function has($key) { /** @var \Illuminate\Config\Repository $instance */ return $instance->has($key); @@ -4280,8 +4082,7 @@ public static function has($key) * @param mixed $default * @return mixed * @static - */ - public static function get($key, $default = null) + */ public static function get($key, $default = null) { /** @var \Illuminate\Config\Repository $instance */ return $instance->get($key, $default); @@ -4292,8 +4093,7 @@ public static function get($key, $default = null) * @param array $keys * @return array * @static - */ - public static function getMany($keys) + */ public static function getMany($keys) { /** @var \Illuminate\Config\Repository $instance */ return $instance->getMany($keys); @@ -4305,8 +4105,7 @@ public static function getMany($keys) * @param mixed $value * @return void * @static - */ - public static function set($key, $value = null) + */ public static function set($key, $value = null) { /** @var \Illuminate\Config\Repository $instance */ $instance->set($key, $value); @@ -4318,8 +4117,7 @@ public static function set($key, $value = null) * @param mixed $value * @return void * @static - */ - public static function prepend($key, $value) + */ public static function prepend($key, $value) { /** @var \Illuminate\Config\Repository $instance */ $instance->prepend($key, $value); @@ -4331,8 +4129,7 @@ public static function prepend($key, $value) * @param mixed $value * @return void * @static - */ - public static function push($key, $value) + */ public static function push($key, $value) { /** @var \Illuminate\Config\Repository $instance */ $instance->push($key, $value); @@ -4342,8 +4139,7 @@ public static function push($key, $value) * * @return array * @static - */ - public static function all() + */ public static function all() { /** @var \Illuminate\Config\Repository $instance */ return $instance->all(); @@ -4354,8 +4150,7 @@ public static function all() * @param string $key * @return bool * @static - */ - public static function offsetExists($key) + */ public static function offsetExists($key) { /** @var \Illuminate\Config\Repository $instance */ return $instance->offsetExists($key); @@ -4366,8 +4161,7 @@ public static function offsetExists($key) * @param string $key * @return mixed * @static - */ - public static function offsetGet($key) + */ public static function offsetGet($key) { /** @var \Illuminate\Config\Repository $instance */ return $instance->offsetGet($key); @@ -4379,8 +4173,7 @@ public static function offsetGet($key) * @param mixed $value * @return void * @static - */ - public static function offsetSet($key, $value) + */ public static function offsetSet($key, $value) { /** @var \Illuminate\Config\Repository $instance */ $instance->offsetSet($key, $value); @@ -4391,8 +4184,7 @@ public static function offsetSet($key, $value) * @param string $key * @return void * @static - */ - public static function offsetUnset($key) + */ public static function offsetUnset($key) { /** @var \Illuminate\Config\Repository $instance */ $instance->offsetUnset($key); @@ -4404,8 +4196,7 @@ public static function offsetUnset($key) * @param object|callable $macro * @return void * @static - */ - public static function macro($name, $macro) + */ public static function macro($name, $macro) { \Illuminate\Config\Repository::macro($name, $macro); } @@ -4417,8 +4208,7 @@ public static function macro($name, $macro) * @return void * @throws \ReflectionException * @static - */ - public static function mixin($mixin, $replace = true) + */ public static function mixin($mixin, $replace = true) { \Illuminate\Config\Repository::mixin($mixin, $replace); } @@ -4428,8 +4218,7 @@ public static function mixin($mixin, $replace = true) * @param string $name * @return bool * @static - */ - public static function hasMacro($name) + */ public static function hasMacro($name) { return \Illuminate\Config\Repository::hasMacro($name); } @@ -4438,19 +4227,16 @@ public static function hasMacro($name) * * @return void * @static - */ - public static function flushMacros() + */ public static function flushMacros() { \Illuminate\Config\Repository::flushMacros(); } - - } + } /** * * * @see \Illuminate\Cookie\CookieJar - */ - class Cookie { + */ class Cookie { /** * Create a new cookie instance. * @@ -4465,8 +4251,7 @@ class Cookie { * @param string|null $sameSite * @return \Symfony\Component\HttpFoundation\Cookie * @static - */ - public static function make($name, $value, $minutes = 0, $path = null, $domain = null, $secure = null, $httpOnly = true, $raw = false, $sameSite = null) + */ public static function make($name, $value, $minutes = 0, $path = null, $domain = null, $secure = null, $httpOnly = true, $raw = false, $sameSite = null) { /** @var \Illuminate\Cookie\CookieJar $instance */ return $instance->make($name, $value, $minutes, $path, $domain, $secure, $httpOnly, $raw, $sameSite); @@ -4484,8 +4269,7 @@ public static function make($name, $value, $minutes = 0, $path = null, $domain = * @param string|null $sameSite * @return \Symfony\Component\HttpFoundation\Cookie * @static - */ - public static function forever($name, $value, $path = null, $domain = null, $secure = null, $httpOnly = true, $raw = false, $sameSite = null) + */ public static function forever($name, $value, $path = null, $domain = null, $secure = null, $httpOnly = true, $raw = false, $sameSite = null) { /** @var \Illuminate\Cookie\CookieJar $instance */ return $instance->forever($name, $value, $path, $domain, $secure, $httpOnly, $raw, $sameSite); @@ -4498,8 +4282,7 @@ public static function forever($name, $value, $path = null, $domain = null, $sec * @param string|null $domain * @return \Symfony\Component\HttpFoundation\Cookie * @static - */ - public static function forget($name, $path = null, $domain = null) + */ public static function forget($name, $path = null, $domain = null) { /** @var \Illuminate\Cookie\CookieJar $instance */ return $instance->forget($name, $path, $domain); @@ -4511,8 +4294,7 @@ public static function forget($name, $path = null, $domain = null) * @param string|null $path * @return bool * @static - */ - public static function hasQueued($key, $path = null) + */ public static function hasQueued($key, $path = null) { /** @var \Illuminate\Cookie\CookieJar $instance */ return $instance->hasQueued($key, $path); @@ -4525,8 +4307,7 @@ public static function hasQueued($key, $path = null) * @param string|null $path * @return \Symfony\Component\HttpFoundation\Cookie|null * @static - */ - public static function queued($key, $default = null, $path = null) + */ public static function queued($key, $default = null, $path = null) { /** @var \Illuminate\Cookie\CookieJar $instance */ return $instance->queued($key, $default, $path); @@ -4537,8 +4318,7 @@ public static function queued($key, $default = null, $path = null) * @param mixed $parameters * @return void * @static - */ - public static function queue(...$parameters) + */ public static function queue(...$parameters) { /** @var \Illuminate\Cookie\CookieJar $instance */ $instance->queue(...$parameters); @@ -4551,8 +4331,7 @@ public static function queue(...$parameters) * @param string|null $domain * @return void * @static - */ - public static function expire($name, $path = null, $domain = null) + */ public static function expire($name, $path = null, $domain = null) { /** @var \Illuminate\Cookie\CookieJar $instance */ $instance->expire($name, $path, $domain); @@ -4564,8 +4343,7 @@ public static function expire($name, $path = null, $domain = null) * @param string|null $path * @return void * @static - */ - public static function unqueue($name, $path = null) + */ public static function unqueue($name, $path = null) { /** @var \Illuminate\Cookie\CookieJar $instance */ $instance->unqueue($name, $path); @@ -4579,8 +4357,7 @@ public static function unqueue($name, $path = null) * @param string|null $sameSite * @return \Illuminate\Cookie\CookieJar * @static - */ - public static function setDefaultPathAndDomain($path, $domain, $secure = false, $sameSite = null) + */ public static function setDefaultPathAndDomain($path, $domain, $secure = false, $sameSite = null) { /** @var \Illuminate\Cookie\CookieJar $instance */ return $instance->setDefaultPathAndDomain($path, $domain, $secure, $sameSite); @@ -4590,8 +4367,7 @@ public static function setDefaultPathAndDomain($path, $domain, $secure = false, * * @return \Symfony\Component\HttpFoundation\Cookie[] * @static - */ - public static function getQueuedCookies() + */ public static function getQueuedCookies() { /** @var \Illuminate\Cookie\CookieJar $instance */ return $instance->getQueuedCookies(); @@ -4601,8 +4377,7 @@ public static function getQueuedCookies() * * @return \Illuminate\Cookie\CookieJar * @static - */ - public static function flushQueuedCookies() + */ public static function flushQueuedCookies() { /** @var \Illuminate\Cookie\CookieJar $instance */ return $instance->flushQueuedCookies(); @@ -4614,8 +4389,7 @@ public static function flushQueuedCookies() * @param object|callable $macro * @return void * @static - */ - public static function macro($name, $macro) + */ public static function macro($name, $macro) { \Illuminate\Cookie\CookieJar::macro($name, $macro); } @@ -4627,8 +4401,7 @@ public static function macro($name, $macro) * @return void * @throws \ReflectionException * @static - */ - public static function mixin($mixin, $replace = true) + */ public static function mixin($mixin, $replace = true) { \Illuminate\Cookie\CookieJar::mixin($mixin, $replace); } @@ -4638,8 +4411,7 @@ public static function mixin($mixin, $replace = true) * @param string $name * @return bool * @static - */ - public static function hasMacro($name) + */ public static function hasMacro($name) { return \Illuminate\Cookie\CookieJar::hasMacro($name); } @@ -4648,19 +4420,16 @@ public static function hasMacro($name) * * @return void * @static - */ - public static function flushMacros() + */ public static function flushMacros() { \Illuminate\Cookie\CookieJar::flushMacros(); } - - } + } /** * * * @see \Illuminate\Encryption\Encrypter - */ - class Crypt { + */ class Crypt { /** * Determine if the given key and cipher combination is valid. * @@ -4668,8 +4437,7 @@ class Crypt { * @param string $cipher * @return bool * @static - */ - public static function supported($key, $cipher) + */ public static function supported($key, $cipher) { return \Illuminate\Encryption\Encrypter::supported($key, $cipher); } @@ -4679,8 +4447,7 @@ public static function supported($key, $cipher) * @param string $cipher * @return string * @static - */ - public static function generateKey($cipher) + */ public static function generateKey($cipher) { return \Illuminate\Encryption\Encrypter::generateKey($cipher); } @@ -4692,8 +4459,7 @@ public static function generateKey($cipher) * @return string * @throws \Illuminate\Contracts\Encryption\EncryptException * @static - */ - public static function encrypt($value, $serialize = true) + */ public static function encrypt($value, $serialize = true) { /** @var \Illuminate\Encryption\Encrypter $instance */ return $instance->encrypt($value, $serialize); @@ -4705,8 +4471,7 @@ public static function encrypt($value, $serialize = true) * @return string * @throws \Illuminate\Contracts\Encryption\EncryptException * @static - */ - public static function encryptString($value) + */ public static function encryptString($value) { /** @var \Illuminate\Encryption\Encrypter $instance */ return $instance->encryptString($value); @@ -4719,8 +4484,7 @@ public static function encryptString($value) * @return mixed * @throws \Illuminate\Contracts\Encryption\DecryptException * @static - */ - public static function decrypt($payload, $unserialize = true) + */ public static function decrypt($payload, $unserialize = true) { /** @var \Illuminate\Encryption\Encrypter $instance */ return $instance->decrypt($payload, $unserialize); @@ -4732,8 +4496,7 @@ public static function decrypt($payload, $unserialize = true) * @return string * @throws \Illuminate\Contracts\Encryption\DecryptException * @static - */ - public static function decryptString($payload) + */ public static function decryptString($payload) { /** @var \Illuminate\Encryption\Encrypter $instance */ return $instance->decryptString($payload); @@ -4743,14 +4506,12 @@ public static function decryptString($payload) * * @return string * @static - */ - public static function getKey() + */ public static function getKey() { /** @var \Illuminate\Encryption\Encrypter $instance */ return $instance->getKey(); } - - } + } /** * * @@ -4828,8 +4589,7 @@ public static function getKey() * @method static void useYearsOverflow($yearsOverflow = true) * @method static \Illuminate\Support\Carbon yesterday($tz = null) * @see \Illuminate\Support\DateFactory - */ - class Date { + */ class Date { /** * Use the given handler when generating dates (class name, callable, or factory). * @@ -4837,8 +4597,7 @@ class Date { * @return mixed * @throws \InvalidArgumentException * @static - */ - public static function use($handler) + */ public static function use($handler) { return \Illuminate\Support\DateFactory::use($handler); } @@ -4847,8 +4606,7 @@ public static function use($handler) * * @return void * @static - */ - public static function useDefault() + */ public static function useDefault() { \Illuminate\Support\DateFactory::useDefault(); } @@ -4858,8 +4616,7 @@ public static function useDefault() * @param callable $callable * @return void * @static - */ - public static function useCallable($callable) + */ public static function useCallable($callable) { \Illuminate\Support\DateFactory::useCallable($callable); } @@ -4869,8 +4626,7 @@ public static function useCallable($callable) * @param string $dateClass * @return void * @static - */ - public static function useClass($dateClass) + */ public static function useClass($dateClass) { \Illuminate\Support\DateFactory::useClass($dateClass); } @@ -4880,30 +4636,39 @@ public static function useClass($dateClass) * @param object $factory * @return void * @static - */ - public static function useFactory($factory) + */ public static function useFactory($factory) { \Illuminate\Support\DateFactory::useFactory($factory); } - - } + } /** * * * @see \Illuminate\Database\DatabaseManager - */ - class DB { + */ class DB { /** * Get a database connection instance. * * @param string|null $name * @return \Illuminate\Database\Connection * @static - */ - public static function connection($name = null) + */ public static function connection($name = null) { /** @var \Illuminate\Database\DatabaseManager $instance */ return $instance->connection($name); + } + /** + * Get a database connection instance from the given configuration. + * + * @param string $name + * @param array $config + * @param bool $force + * @return \Illuminate\Database\MySqlConnection + * @static + */ public static function connectUsing($name, $config, $force = false) + { + /** @var \Illuminate\Database\DatabaseManager $instance */ + return $instance->connectUsing($name, $config, $force); } /** * Register a custom Doctrine type. @@ -4912,11 +4677,10 @@ public static function connection($name = null) * @param string $name * @param string $type * @return void - * @throws \Doctrine\DBAL\DBALException + * @throws \Doctrine\DBAL\Exception * @throws \RuntimeException * @static - */ - public static function registerDoctrineType($class, $name, $type) + */ public static function registerDoctrineType($class, $name, $type) { /** @var \Illuminate\Database\DatabaseManager $instance */ $instance->registerDoctrineType($class, $name, $type); @@ -4927,8 +4691,7 @@ public static function registerDoctrineType($class, $name, $type) * @param string|null $name * @return void * @static - */ - public static function purge($name = null) + */ public static function purge($name = null) { /** @var \Illuminate\Database\DatabaseManager $instance */ $instance->purge($name); @@ -4939,8 +4702,7 @@ public static function purge($name = null) * @param string|null $name * @return void * @static - */ - public static function disconnect($name = null) + */ public static function disconnect($name = null) { /** @var \Illuminate\Database\DatabaseManager $instance */ $instance->disconnect($name); @@ -4951,8 +4713,7 @@ public static function disconnect($name = null) * @param string|null $name * @return \Illuminate\Database\Connection * @static - */ - public static function reconnect($name = null) + */ public static function reconnect($name = null) { /** @var \Illuminate\Database\DatabaseManager $instance */ return $instance->reconnect($name); @@ -4964,8 +4725,7 @@ public static function reconnect($name = null) * @param callable $callback * @return mixed * @static - */ - public static function usingConnection($name, $callback) + */ public static function usingConnection($name, $callback) { /** @var \Illuminate\Database\DatabaseManager $instance */ return $instance->usingConnection($name, $callback); @@ -4975,8 +4735,7 @@ public static function usingConnection($name, $callback) * * @return string * @static - */ - public static function getDefaultConnection() + */ public static function getDefaultConnection() { /** @var \Illuminate\Database\DatabaseManager $instance */ return $instance->getDefaultConnection(); @@ -4987,8 +4746,7 @@ public static function getDefaultConnection() * @param string $name * @return void * @static - */ - public static function setDefaultConnection($name) + */ public static function setDefaultConnection($name) { /** @var \Illuminate\Database\DatabaseManager $instance */ $instance->setDefaultConnection($name); @@ -4998,8 +4756,7 @@ public static function setDefaultConnection($name) * * @return string[] * @static - */ - public static function supportedDrivers() + */ public static function supportedDrivers() { /** @var \Illuminate\Database\DatabaseManager $instance */ return $instance->supportedDrivers(); @@ -5009,8 +4766,7 @@ public static function supportedDrivers() * * @return string[] * @static - */ - public static function availableDrivers() + */ public static function availableDrivers() { /** @var \Illuminate\Database\DatabaseManager $instance */ return $instance->availableDrivers(); @@ -5022,8 +4778,7 @@ public static function availableDrivers() * @param callable $resolver * @return void * @static - */ - public static function extend($name, $resolver) + */ public static function extend($name, $resolver) { /** @var \Illuminate\Database\DatabaseManager $instance */ $instance->extend($name, $resolver); @@ -5034,8 +4789,7 @@ public static function extend($name, $resolver) * @param string $name * @return void * @static - */ - public static function forgetExtension($name) + */ public static function forgetExtension($name) { /** @var \Illuminate\Database\DatabaseManager $instance */ $instance->forgetExtension($name); @@ -5045,8 +4799,7 @@ public static function forgetExtension($name) * * @return array * @static - */ - public static function getConnections() + */ public static function getConnections() { /** @var \Illuminate\Database\DatabaseManager $instance */ return $instance->getConnections(); @@ -5057,8 +4810,7 @@ public static function getConnections() * @param callable $reconnector * @return void * @static - */ - public static function setReconnector($reconnector) + */ public static function setReconnector($reconnector) { /** @var \Illuminate\Database\DatabaseManager $instance */ $instance->setReconnector($reconnector); @@ -5069,8 +4821,7 @@ public static function setReconnector($reconnector) * @param \Illuminate\Contracts\Foundation\Application $app * @return \Illuminate\Database\DatabaseManager * @static - */ - public static function setApplication($app) + */ public static function setApplication($app) { /** @var \Illuminate\Database\DatabaseManager $instance */ return $instance->setApplication($app); @@ -5082,8 +4833,7 @@ public static function setApplication($app) * @param object|callable $macro * @return void * @static - */ - public static function macro($name, $macro) + */ public static function macro($name, $macro) { \Illuminate\Database\DatabaseManager::macro($name, $macro); } @@ -5095,8 +4845,7 @@ public static function macro($name, $macro) * @return void * @throws \ReflectionException * @static - */ - public static function mixin($mixin, $replace = true) + */ public static function mixin($mixin, $replace = true) { \Illuminate\Database\DatabaseManager::mixin($mixin, $replace); } @@ -5106,8 +4855,7 @@ public static function mixin($mixin, $replace = true) * @param string $name * @return bool * @static - */ - public static function hasMacro($name) + */ public static function hasMacro($name) { return \Illuminate\Database\DatabaseManager::hasMacro($name); } @@ -5116,8 +4864,7 @@ public static function hasMacro($name) * * @return void * @static - */ - public static function flushMacros() + */ public static function flushMacros() { \Illuminate\Database\DatabaseManager::flushMacros(); } @@ -5129,8 +4876,7 @@ public static function flushMacros() * @return mixed * @throws \BadMethodCallException * @static - */ - public static function macroCall($method, $parameters) + */ public static function macroCall($method, $parameters) { /** @var \Illuminate\Database\DatabaseManager $instance */ return $instance->macroCall($method, $parameters); @@ -5140,8 +4886,7 @@ public static function macroCall($method, $parameters) * * @return bool * @static - */ - public static function isMaria() + */ public static function isMaria() { /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->isMaria(); @@ -5151,8 +4896,7 @@ public static function isMaria() * * @return \Illuminate\Database\Schema\MySqlBuilder * @static - */ - public static function getSchemaBuilder() + */ public static function getSchemaBuilder() { /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->getSchemaBuilder(); @@ -5164,8 +4908,7 @@ public static function getSchemaBuilder() * @param callable|null $processFactory * @return \Illuminate\Database\Schema\MySqlSchemaState * @static - */ - public static function getSchemaState($files = null, $processFactory = null) + */ public static function getSchemaState($files = null, $processFactory = null) { /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->getSchemaState($files, $processFactory); @@ -5175,8 +4918,7 @@ public static function getSchemaState($files = null, $processFactory = null) * * @return void * @static - */ - public static function useDefaultQueryGrammar() + */ public static function useDefaultQueryGrammar() { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ $instance->useDefaultQueryGrammar(); @@ -5186,8 +4928,7 @@ public static function useDefaultQueryGrammar() * * @return void * @static - */ - public static function useDefaultSchemaGrammar() + */ public static function useDefaultSchemaGrammar() { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ $instance->useDefaultSchemaGrammar(); @@ -5197,8 +4938,7 @@ public static function useDefaultSchemaGrammar() * * @return void * @static - */ - public static function useDefaultPostProcessor() + */ public static function useDefaultPostProcessor() { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ $instance->useDefaultPostProcessor(); @@ -5206,12 +4946,11 @@ public static function useDefaultPostProcessor() /** * Begin a fluent query against a database table. * - * @param \Closure|\Illuminate\Database\Query\Builder|string $table + * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Contracts\Database\Query\Expression|string $table * @param string|null $as * @return \Illuminate\Database\Query\Builder * @static - */ - public static function table($table, $as = null) + */ public static function table($table, $as = null) { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->table($table, $as); @@ -5221,8 +4960,7 @@ public static function table($table, $as = null) * * @return \Illuminate\Database\Query\Builder * @static - */ - public static function query() + */ public static function query() { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->query(); @@ -5235,8 +4973,7 @@ public static function query() * @param bool $useReadPdo * @return mixed * @static - */ - public static function selectOne($query, $bindings = [], $useReadPdo = true) + */ public static function selectOne($query, $bindings = [], $useReadPdo = true) { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->selectOne($query, $bindings, $useReadPdo); @@ -5250,8 +4987,7 @@ public static function selectOne($query, $bindings = [], $useReadPdo = true) * @return mixed * @throws \Illuminate\Database\MultipleColumnsSelectedException * @static - */ - public static function scalar($query, $bindings = [], $useReadPdo = true) + */ public static function scalar($query, $bindings = [], $useReadPdo = true) { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->scalar($query, $bindings, $useReadPdo); @@ -5263,8 +4999,7 @@ public static function scalar($query, $bindings = [], $useReadPdo = true) * @param array $bindings * @return array * @static - */ - public static function selectFromWriteConnection($query, $bindings = []) + */ public static function selectFromWriteConnection($query, $bindings = []) { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->selectFromWriteConnection($query, $bindings); @@ -5277,11 +5012,23 @@ public static function selectFromWriteConnection($query, $bindings = []) * @param bool $useReadPdo * @return array * @static - */ - public static function select($query, $bindings = [], $useReadPdo = true) + */ public static function select($query, $bindings = [], $useReadPdo = true) { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->select($query, $bindings, $useReadPdo); + } + /** + * Run a select statement against the database and returns all of the result sets. + * + * @param string $query + * @param array $bindings + * @param bool $useReadPdo + * @return array + * @static + */ public static function selectResultSets($query, $bindings = [], $useReadPdo = true) + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->selectResultSets($query, $bindings, $useReadPdo); } /** * Run a select statement against the database and returns a generator. @@ -5291,8 +5038,7 @@ public static function select($query, $bindings = [], $useReadPdo = true) * @param bool $useReadPdo * @return \Generator * @static - */ - public static function cursor($query, $bindings = [], $useReadPdo = true) + */ public static function cursor($query, $bindings = [], $useReadPdo = true) { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->cursor($query, $bindings, $useReadPdo); @@ -5304,8 +5050,7 @@ public static function cursor($query, $bindings = [], $useReadPdo = true) * @param array $bindings * @return bool * @static - */ - public static function insert($query, $bindings = []) + */ public static function insert($query, $bindings = []) { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->insert($query, $bindings); @@ -5317,8 +5062,7 @@ public static function insert($query, $bindings = []) * @param array $bindings * @return int * @static - */ - public static function update($query, $bindings = []) + */ public static function update($query, $bindings = []) { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->update($query, $bindings); @@ -5330,8 +5074,7 @@ public static function update($query, $bindings = []) * @param array $bindings * @return int * @static - */ - public static function delete($query, $bindings = []) + */ public static function delete($query, $bindings = []) { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->delete($query, $bindings); @@ -5343,8 +5086,7 @@ public static function delete($query, $bindings = []) * @param array $bindings * @return bool * @static - */ - public static function statement($query, $bindings = []) + */ public static function statement($query, $bindings = []) { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->statement($query, $bindings); @@ -5356,8 +5098,7 @@ public static function statement($query, $bindings = []) * @param array $bindings * @return int * @static - */ - public static function affectingStatement($query, $bindings = []) + */ public static function affectingStatement($query, $bindings = []) { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->affectingStatement($query, $bindings); @@ -5368,8 +5109,7 @@ public static function affectingStatement($query, $bindings = []) * @param string $query * @return bool * @static - */ - public static function unprepared($query) + */ public static function unprepared($query) { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->unprepared($query); @@ -5380,11 +5120,21 @@ public static function unprepared($query) * @param \Closure $callback * @return array * @static - */ - public static function pretend($callback) + */ public static function pretend($callback) { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->pretend($callback); + } + /** + * Execute the given callback without "pretending". + * + * @param \Closure $callback + * @return mixed + * @static + */ public static function withoutPretending($callback) + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->withoutPretending($callback); } /** * Bind values to their parameters in the given statement. @@ -5393,8 +5143,7 @@ public static function pretend($callback) * @param array $bindings * @return void * @static - */ - public static function bindValues($statement, $bindings) + */ public static function bindValues($statement, $bindings) { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ $instance->bindValues($statement, $bindings); @@ -5405,8 +5154,7 @@ public static function bindValues($statement, $bindings) * @param array $bindings * @return array * @static - */ - public static function prepareBindings($bindings) + */ public static function prepareBindings($bindings) { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->prepareBindings($bindings); @@ -5419,8 +5167,7 @@ public static function prepareBindings($bindings) * @param float|null $time * @return void * @static - */ - public static function logQuery($query, $bindings, $time = null) + */ public static function logQuery($query, $bindings, $time = null) { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ $instance->logQuery($query, $bindings, $time); @@ -5432,8 +5179,7 @@ public static function logQuery($query, $bindings, $time = null) * @param callable $handler * @return void * @static - */ - public static function whenQueryingForLongerThan($threshold, $handler) + */ public static function whenQueryingForLongerThan($threshold, $handler) { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ $instance->whenQueryingForLongerThan($threshold, $handler); @@ -5443,8 +5189,7 @@ public static function whenQueryingForLongerThan($threshold, $handler) * * @return void * @static - */ - public static function allowQueryDurationHandlersToRunAgain() + */ public static function allowQueryDurationHandlersToRunAgain() { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ $instance->allowQueryDurationHandlersToRunAgain(); @@ -5454,8 +5199,7 @@ public static function allowQueryDurationHandlersToRunAgain() * * @return float * @static - */ - public static function totalQueryDuration() + */ public static function totalQueryDuration() { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->totalQueryDuration(); @@ -5465,11 +5209,31 @@ public static function totalQueryDuration() * * @return void * @static - */ - public static function resetTotalQueryDuration() + */ public static function resetTotalQueryDuration() { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ $instance->resetTotalQueryDuration(); + } + /** + * Reconnect to the database if a PDO connection is missing. + * + * @return void + * @static + */ public static function reconnectIfMissingConnection() + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + $instance->reconnectIfMissingConnection(); + } + /** + * Register a hook to be run just before a database transaction is started. + * + * @param \Closure $callback + * @return \Illuminate\Database\MySqlConnection + * @static + */ public static function beforeStartingTransaction($callback) + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->beforeStartingTransaction($callback); } /** * Register a hook to be run just before a database query is executed. @@ -5477,8 +5241,7 @@ public static function resetTotalQueryDuration() * @param \Closure $callback * @return \Illuminate\Database\MySqlConnection * @static - */ - public static function beforeExecuting($callback) + */ public static function beforeExecuting($callback) { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->beforeExecuting($callback); @@ -5489,8 +5252,7 @@ public static function beforeExecuting($callback) * @param \Closure $callback * @return void * @static - */ - public static function listen($callback) + */ public static function listen($callback) { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ $instance->listen($callback); @@ -5499,21 +5261,31 @@ public static function listen($callback) * Get a new raw query expression. * * @param mixed $value - * @return \Illuminate\Database\Query\Expression + * @return \Illuminate\Contracts\Database\Query\Expression * @static - */ - public static function raw($value) + */ public static function raw($value) { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->raw($value); + } + /** + * Escape a value for safe SQL embedding. + * + * @param string|float|int|bool|null $value + * @param bool $binary + * @return string + * @static + */ public static function escape($value, $binary = false) + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->escape($value, $binary); } /** * Determine if the database connection has modified any database records. * * @return bool * @static - */ - public static function hasModifiedRecords() + */ public static function hasModifiedRecords() { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->hasModifiedRecords(); @@ -5524,8 +5296,7 @@ public static function hasModifiedRecords() * @param bool $value * @return void * @static - */ - public static function recordsHaveBeenModified($value = true) + */ public static function recordsHaveBeenModified($value = true) { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ $instance->recordsHaveBeenModified($value); @@ -5536,8 +5307,7 @@ public static function recordsHaveBeenModified($value = true) * @param bool $value * @return \Illuminate\Database\MySqlConnection * @static - */ - public static function setRecordModificationState($value) + */ public static function setRecordModificationState($value) { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->setRecordModificationState($value); @@ -5547,8 +5317,7 @@ public static function setRecordModificationState($value) * * @return void * @static - */ - public static function forgetRecordModificationState() + */ public static function forgetRecordModificationState() { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ $instance->forgetRecordModificationState(); @@ -5559,8 +5328,7 @@ public static function forgetRecordModificationState() * @param bool $value * @return \Illuminate\Database\MySqlConnection * @static - */ - public static function useWriteConnectionWhenReading($value = true) + */ public static function useWriteConnectionWhenReading($value = true) { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->useWriteConnectionWhenReading($value); @@ -5570,19 +5338,17 @@ public static function useWriteConnectionWhenReading($value = true) * * @return bool * @static - */ - public static function isDoctrineAvailable() + */ public static function isDoctrineAvailable() { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->isDoctrineAvailable(); } /** - * Indicates whether native alter operations will be used when dropping or renaming columns, even if Doctrine DBAL is installed. + * Indicates whether native alter operations will be used when dropping, renaming, or modifying columns, even if Doctrine DBAL is installed. * * @return bool * @static - */ - public static function usingNativeSchemaOperations() + */ public static function usingNativeSchemaOperations() { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->usingNativeSchemaOperations(); @@ -5594,8 +5360,7 @@ public static function usingNativeSchemaOperations() * @param string $column * @return \Doctrine\DBAL\Schema\Column * @static - */ - public static function getDoctrineColumn($table, $column) + */ public static function getDoctrineColumn($table, $column) { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->getDoctrineColumn($table, $column); @@ -5605,8 +5370,7 @@ public static function getDoctrineColumn($table, $column) * * @return \Doctrine\DBAL\Schema\AbstractSchemaManager * @static - */ - public static function getDoctrineSchemaManager() + */ public static function getDoctrineSchemaManager() { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->getDoctrineSchemaManager(); @@ -5616,8 +5380,7 @@ public static function getDoctrineSchemaManager() * * @return \Doctrine\DBAL\Connection * @static - */ - public static function getDoctrineConnection() + */ public static function getDoctrineConnection() { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->getDoctrineConnection(); @@ -5627,8 +5390,7 @@ public static function getDoctrineConnection() * * @return \PDO * @static - */ - public static function getPdo() + */ public static function getPdo() { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->getPdo(); @@ -5638,8 +5400,7 @@ public static function getPdo() * * @return \PDO|\Closure|null * @static - */ - public static function getRawPdo() + */ public static function getRawPdo() { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->getRawPdo(); @@ -5649,8 +5410,7 @@ public static function getRawPdo() * * @return \PDO * @static - */ - public static function getReadPdo() + */ public static function getReadPdo() { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->getReadPdo(); @@ -5660,8 +5420,7 @@ public static function getReadPdo() * * @return \PDO|\Closure|null * @static - */ - public static function getRawReadPdo() + */ public static function getRawReadPdo() { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->getRawReadPdo(); @@ -5672,8 +5431,7 @@ public static function getRawReadPdo() * @param \PDO|\Closure|null $pdo * @return \Illuminate\Database\MySqlConnection * @static - */ - public static function setPdo($pdo) + */ public static function setPdo($pdo) { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->setPdo($pdo); @@ -5684,8 +5442,7 @@ public static function setPdo($pdo) * @param \PDO|\Closure|null $pdo * @return \Illuminate\Database\MySqlConnection * @static - */ - public static function setReadPdo($pdo) + */ public static function setReadPdo($pdo) { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->setReadPdo($pdo); @@ -5695,8 +5452,7 @@ public static function setReadPdo($pdo) * * @return string|null * @static - */ - public static function getName() + */ public static function getName() { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->getName(); @@ -5706,8 +5462,7 @@ public static function getName() * * @return string|null * @static - */ - public static function getNameWithReadWriteType() + */ public static function getNameWithReadWriteType() { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->getNameWithReadWriteType(); @@ -5718,8 +5473,7 @@ public static function getNameWithReadWriteType() * @param string|null $option * @return mixed * @static - */ - public static function getConfig($option = null) + */ public static function getConfig($option = null) { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->getConfig($option); @@ -5729,8 +5483,7 @@ public static function getConfig($option = null) * * @return string * @static - */ - public static function getDriverName() + */ public static function getDriverName() { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->getDriverName(); @@ -5740,8 +5493,7 @@ public static function getDriverName() * * @return \Illuminate\Database\Query\Grammars\Grammar * @static - */ - public static function getQueryGrammar() + */ public static function getQueryGrammar() { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->getQueryGrammar(); @@ -5752,8 +5504,7 @@ public static function getQueryGrammar() * @param \Illuminate\Database\Query\Grammars\Grammar $grammar * @return \Illuminate\Database\MySqlConnection * @static - */ - public static function setQueryGrammar($grammar) + */ public static function setQueryGrammar($grammar) { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->setQueryGrammar($grammar); @@ -5763,8 +5514,7 @@ public static function setQueryGrammar($grammar) * * @return \Illuminate\Database\Schema\Grammars\Grammar * @static - */ - public static function getSchemaGrammar() + */ public static function getSchemaGrammar() { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->getSchemaGrammar(); @@ -5775,8 +5525,7 @@ public static function getSchemaGrammar() * @param \Illuminate\Database\Schema\Grammars\Grammar $grammar * @return \Illuminate\Database\MySqlConnection * @static - */ - public static function setSchemaGrammar($grammar) + */ public static function setSchemaGrammar($grammar) { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->setSchemaGrammar($grammar); @@ -5786,8 +5535,7 @@ public static function setSchemaGrammar($grammar) * * @return \Illuminate\Database\Query\Processors\Processor * @static - */ - public static function getPostProcessor() + */ public static function getPostProcessor() { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->getPostProcessor(); @@ -5798,8 +5546,7 @@ public static function getPostProcessor() * @param \Illuminate\Database\Query\Processors\Processor $processor * @return \Illuminate\Database\MySqlConnection * @static - */ - public static function setPostProcessor($processor) + */ public static function setPostProcessor($processor) { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->setPostProcessor($processor); @@ -5809,8 +5556,7 @@ public static function setPostProcessor($processor) * * @return \Illuminate\Contracts\Events\Dispatcher * @static - */ - public static function getEventDispatcher() + */ public static function getEventDispatcher() { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->getEventDispatcher(); @@ -5821,8 +5567,7 @@ public static function getEventDispatcher() * @param \Illuminate\Contracts\Events\Dispatcher $events * @return \Illuminate\Database\MySqlConnection * @static - */ - public static function setEventDispatcher($events) + */ public static function setEventDispatcher($events) { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->setEventDispatcher($events); @@ -5832,8 +5577,7 @@ public static function setEventDispatcher($events) * * @return void * @static - */ - public static function unsetEventDispatcher() + */ public static function unsetEventDispatcher() { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ $instance->unsetEventDispatcher(); @@ -5844,8 +5588,7 @@ public static function unsetEventDispatcher() * @param \Illuminate\Database\DatabaseTransactionsManager $manager * @return \Illuminate\Database\MySqlConnection * @static - */ - public static function setTransactionManager($manager) + */ public static function setTransactionManager($manager) { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->setTransactionManager($manager); @@ -5855,8 +5598,7 @@ public static function setTransactionManager($manager) * * @return void * @static - */ - public static function unsetTransactionManager() + */ public static function unsetTransactionManager() { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ $instance->unsetTransactionManager(); @@ -5866,8 +5608,7 @@ public static function unsetTransactionManager() * * @return bool * @static - */ - public static function pretending() + */ public static function pretending() { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->pretending(); @@ -5877,19 +5618,27 @@ public static function pretending() * * @return array * @static - */ - public static function getQueryLog() + */ public static function getQueryLog() { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->getQueryLog(); + } + /** + * Get the connection query log with embedded bindings. + * + * @return array + * @static + */ public static function getRawQueryLog() + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->getRawQueryLog(); } /** * Clear the query log. * * @return void * @static - */ - public static function flushQueryLog() + */ public static function flushQueryLog() { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ $instance->flushQueryLog(); @@ -5899,8 +5648,7 @@ public static function flushQueryLog() * * @return void * @static - */ - public static function enableQueryLog() + */ public static function enableQueryLog() { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ $instance->enableQueryLog(); @@ -5910,8 +5658,7 @@ public static function enableQueryLog() * * @return void * @static - */ - public static function disableQueryLog() + */ public static function disableQueryLog() { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ $instance->disableQueryLog(); @@ -5921,8 +5668,7 @@ public static function disableQueryLog() * * @return bool * @static - */ - public static function logging() + */ public static function logging() { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->logging(); @@ -5932,8 +5678,7 @@ public static function logging() * * @return string * @static - */ - public static function getDatabaseName() + */ public static function getDatabaseName() { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->getDatabaseName(); @@ -5944,8 +5689,7 @@ public static function getDatabaseName() * @param string $database * @return \Illuminate\Database\MySqlConnection * @static - */ - public static function setDatabaseName($database) + */ public static function setDatabaseName($database) { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->setDatabaseName($database); @@ -5956,8 +5700,7 @@ public static function setDatabaseName($database) * @param string|null $readWriteType * @return \Illuminate\Database\MySqlConnection * @static - */ - public static function setReadWriteType($readWriteType) + */ public static function setReadWriteType($readWriteType) { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->setReadWriteType($readWriteType); @@ -5967,8 +5710,7 @@ public static function setReadWriteType($readWriteType) * * @return string * @static - */ - public static function getTablePrefix() + */ public static function getTablePrefix() { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->getTablePrefix(); @@ -5979,8 +5721,7 @@ public static function getTablePrefix() * @param string $prefix * @return \Illuminate\Database\MySqlConnection * @static - */ - public static function setTablePrefix($prefix) + */ public static function setTablePrefix($prefix) { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->setTablePrefix($prefix); @@ -5991,8 +5732,7 @@ public static function setTablePrefix($prefix) * @param \Illuminate\Database\Grammar $grammar * @return \Illuminate\Database\Grammar * @static - */ - public static function withTablePrefix($grammar) + */ public static function withTablePrefix($grammar) { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->withTablePrefix($grammar); @@ -6004,8 +5744,7 @@ public static function withTablePrefix($grammar) * @param \Closure $callback * @return void * @static - */ - public static function resolverFor($driver, $callback) + */ public static function resolverFor($driver, $callback) { //Method inherited from \Illuminate\Database\Connection \Illuminate\Database\MySqlConnection::resolverFor($driver, $callback); } @@ -6015,8 +5754,7 @@ public static function resolverFor($driver, $callback) * @param string $driver * @return mixed * @static - */ - public static function getResolver($driver) + */ public static function getResolver($driver) { //Method inherited from \Illuminate\Database\Connection return \Illuminate\Database\MySqlConnection::getResolver($driver); } @@ -6028,8 +5766,7 @@ public static function getResolver($driver) * @return mixed * @throws \Throwable * @static - */ - public static function transaction($callback, $attempts = 1) + */ public static function transaction($callback, $attempts = 1) { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->transaction($callback, $attempts); @@ -6040,8 +5777,7 @@ public static function transaction($callback, $attempts = 1) * @return void * @throws \Throwable * @static - */ - public static function beginTransaction() + */ public static function beginTransaction() { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ $instance->beginTransaction(); @@ -6052,8 +5788,7 @@ public static function beginTransaction() * @return void * @throws \Throwable * @static - */ - public static function commit() + */ public static function commit() { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ $instance->commit(); @@ -6065,8 +5800,7 @@ public static function commit() * @return void * @throws \Throwable * @static - */ - public static function rollBack($toLevel = null) + */ public static function rollBack($toLevel = null) { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ $instance->rollBack($toLevel); @@ -6076,8 +5810,7 @@ public static function rollBack($toLevel = null) * * @return int * @static - */ - public static function transactionLevel() + */ public static function transactionLevel() { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->transactionLevel(); @@ -6089,21 +5822,18 @@ public static function transactionLevel() * @return void * @throws \RuntimeException * @static - */ - public static function afterCommit($callback) + */ public static function afterCommit($callback) { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ $instance->afterCommit($callback); } - - } + } /** * * * @see \Illuminate\Events\Dispatcher * @see \Illuminate\Support\Testing\Fakes\EventFake - */ - class Event { + */ class Event { /** * Register an event listener with the dispatcher. * @@ -6111,8 +5841,7 @@ class Event { * @param \Closure|string|array|null $listener * @return void * @static - */ - public static function listen($events, $listener = null) + */ public static function listen($events, $listener = null) { /** @var \Illuminate\Events\Dispatcher $instance */ $instance->listen($events, $listener); @@ -6123,8 +5852,7 @@ public static function listen($events, $listener = null) * @param string $eventName * @return bool * @static - */ - public static function hasListeners($eventName) + */ public static function hasListeners($eventName) { /** @var \Illuminate\Events\Dispatcher $instance */ return $instance->hasListeners($eventName); @@ -6135,8 +5863,7 @@ public static function hasListeners($eventName) * @param string $eventName * @return bool * @static - */ - public static function hasWildcardListeners($eventName) + */ public static function hasWildcardListeners($eventName) { /** @var \Illuminate\Events\Dispatcher $instance */ return $instance->hasWildcardListeners($eventName); @@ -6148,8 +5875,7 @@ public static function hasWildcardListeners($eventName) * @param object|array $payload * @return void * @static - */ - public static function push($event, $payload = []) + */ public static function push($event, $payload = []) { /** @var \Illuminate\Events\Dispatcher $instance */ $instance->push($event, $payload); @@ -6160,8 +5886,7 @@ public static function push($event, $payload = []) * @param string $event * @return void * @static - */ - public static function flush($event) + */ public static function flush($event) { /** @var \Illuminate\Events\Dispatcher $instance */ $instance->flush($event); @@ -6172,8 +5897,7 @@ public static function flush($event) * @param object|string $subscriber * @return void * @static - */ - public static function subscribe($subscriber) + */ public static function subscribe($subscriber) { /** @var \Illuminate\Events\Dispatcher $instance */ $instance->subscribe($subscriber); @@ -6183,10 +5907,9 @@ public static function subscribe($subscriber) * * @param string|object $event * @param mixed $payload - * @return array|null + * @return mixed * @static - */ - public static function until($event, $payload = []) + */ public static function until($event, $payload = []) { /** @var \Illuminate\Events\Dispatcher $instance */ return $instance->until($event, $payload); @@ -6199,8 +5922,7 @@ public static function until($event, $payload = []) * @param bool $halt * @return array|null * @static - */ - public static function dispatch($event, $payload = [], $halt = false) + */ public static function dispatch($event, $payload = [], $halt = false) { /** @var \Illuminate\Events\Dispatcher $instance */ return $instance->dispatch($event, $payload, $halt); @@ -6211,8 +5933,7 @@ public static function dispatch($event, $payload = [], $halt = false) * @param string $eventName * @return array * @static - */ - public static function getListeners($eventName) + */ public static function getListeners($eventName) { /** @var \Illuminate\Events\Dispatcher $instance */ return $instance->getListeners($eventName); @@ -6224,8 +5945,7 @@ public static function getListeners($eventName) * @param bool $wildcard * @return \Closure * @static - */ - public static function makeListener($listener, $wildcard = false) + */ public static function makeListener($listener, $wildcard = false) { /** @var \Illuminate\Events\Dispatcher $instance */ return $instance->makeListener($listener, $wildcard); @@ -6237,8 +5957,7 @@ public static function makeListener($listener, $wildcard = false) * @param bool $wildcard * @return \Closure * @static - */ - public static function createClassListener($listener, $wildcard = false) + */ public static function createClassListener($listener, $wildcard = false) { /** @var \Illuminate\Events\Dispatcher $instance */ return $instance->createClassListener($listener, $wildcard); @@ -6249,8 +5968,7 @@ public static function createClassListener($listener, $wildcard = false) * @param string $event * @return void * @static - */ - public static function forget($event) + */ public static function forget($event) { /** @var \Illuminate\Events\Dispatcher $instance */ $instance->forget($event); @@ -6260,8 +5978,7 @@ public static function forget($event) * * @return void * @static - */ - public static function forgetPushed() + */ public static function forgetPushed() { /** @var \Illuminate\Events\Dispatcher $instance */ $instance->forgetPushed(); @@ -6272,19 +5989,28 @@ public static function forgetPushed() * @param callable $resolver * @return \Illuminate\Events\Dispatcher * @static - */ - public static function setQueueResolver($resolver) + */ public static function setQueueResolver($resolver) { /** @var \Illuminate\Events\Dispatcher $instance */ return $instance->setQueueResolver($resolver); + } + /** + * Set the database transaction manager resolver implementation. + * + * @param callable $resolver + * @return \Illuminate\Events\Dispatcher + * @static + */ public static function setTransactionManagerResolver($resolver) + { + /** @var \Illuminate\Events\Dispatcher $instance */ + return $instance->setTransactionManagerResolver($resolver); } /** * Gets the raw, unprepared listeners. * * @return array * @static - */ - public static function getRawListeners() + */ public static function getRawListeners() { /** @var \Illuminate\Events\Dispatcher $instance */ return $instance->getRawListeners(); @@ -6296,8 +6022,7 @@ public static function getRawListeners() * @param object|callable $macro * @return void * @static - */ - public static function macro($name, $macro) + */ public static function macro($name, $macro) { \Illuminate\Events\Dispatcher::macro($name, $macro); } @@ -6309,8 +6034,7 @@ public static function macro($name, $macro) * @return void * @throws \ReflectionException * @static - */ - public static function mixin($mixin, $replace = true) + */ public static function mixin($mixin, $replace = true) { \Illuminate\Events\Dispatcher::mixin($mixin, $replace); } @@ -6320,8 +6044,7 @@ public static function mixin($mixin, $replace = true) * @param string $name * @return bool * @static - */ - public static function hasMacro($name) + */ public static function hasMacro($name) { return \Illuminate\Events\Dispatcher::hasMacro($name); } @@ -6330,8 +6053,7 @@ public static function hasMacro($name) * * @return void * @static - */ - public static function flushMacros() + */ public static function flushMacros() { \Illuminate\Events\Dispatcher::flushMacros(); } @@ -6341,8 +6063,7 @@ public static function flushMacros() * @param array|string $eventsToDispatch * @return \Illuminate\Support\Testing\Fakes\EventFake * @static - */ - public static function except($eventsToDispatch) + */ public static function except($eventsToDispatch) { /** @var \Illuminate\Support\Testing\Fakes\EventFake $instance */ return $instance->except($eventsToDispatch); @@ -6354,8 +6075,7 @@ public static function except($eventsToDispatch) * @param string|array $expectedListener * @return void * @static - */ - public static function assertListening($expectedEvent, $expectedListener) + */ public static function assertListening($expectedEvent, $expectedListener) { /** @var \Illuminate\Support\Testing\Fakes\EventFake $instance */ $instance->assertListening($expectedEvent, $expectedListener); @@ -6367,8 +6087,7 @@ public static function assertListening($expectedEvent, $expectedListener) * @param callable|int|null $callback * @return void * @static - */ - public static function assertDispatched($event, $callback = null) + */ public static function assertDispatched($event, $callback = null) { /** @var \Illuminate\Support\Testing\Fakes\EventFake $instance */ $instance->assertDispatched($event, $callback); @@ -6380,8 +6099,7 @@ public static function assertDispatched($event, $callback = null) * @param int $times * @return void * @static - */ - public static function assertDispatchedTimes($event, $times = 1) + */ public static function assertDispatchedTimes($event, $times = 1) { /** @var \Illuminate\Support\Testing\Fakes\EventFake $instance */ $instance->assertDispatchedTimes($event, $times); @@ -6393,8 +6111,7 @@ public static function assertDispatchedTimes($event, $times = 1) * @param callable|null $callback * @return void * @static - */ - public static function assertNotDispatched($event, $callback = null) + */ public static function assertNotDispatched($event, $callback = null) { /** @var \Illuminate\Support\Testing\Fakes\EventFake $instance */ $instance->assertNotDispatched($event, $callback); @@ -6404,8 +6121,7 @@ public static function assertNotDispatched($event, $callback = null) * * @return void * @static - */ - public static function assertNothingDispatched() + */ public static function assertNothingDispatched() { /** @var \Illuminate\Support\Testing\Fakes\EventFake $instance */ $instance->assertNothingDispatched(); @@ -6417,8 +6133,7 @@ public static function assertNothingDispatched() * @param callable|null $callback * @return \Illuminate\Support\Collection * @static - */ - public static function dispatched($event, $callback = null) + */ public static function dispatched($event, $callback = null) { /** @var \Illuminate\Support\Testing\Fakes\EventFake $instance */ return $instance->dispatched($event, $callback); @@ -6429,28 +6144,24 @@ public static function dispatched($event, $callback = null) * @param string $event * @return bool * @static - */ - public static function hasDispatched($event) + */ public static function hasDispatched($event) { /** @var \Illuminate\Support\Testing\Fakes\EventFake $instance */ return $instance->hasDispatched($event); } - - } + } /** * * * @see \Illuminate\Filesystem\Filesystem - */ - class File { + */ class File { /** * Determine if a file or directory exists. * * @param string $path * @return bool * @static - */ - public static function exists($path) + */ public static function exists($path) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->exists($path); @@ -6461,8 +6172,7 @@ public static function exists($path) * @param string $path * @return bool * @static - */ - public static function missing($path) + */ public static function missing($path) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->missing($path); @@ -6475,11 +6185,24 @@ public static function missing($path) * @return string * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException * @static - */ - public static function get($path, $lock = false) + */ public static function get($path, $lock = false) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->get($path, $lock); + } + /** + * Get the contents of a file as decoded JSON. + * + * @param string $path + * @param int $flags + * @param bool $lock + * @return array + * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException + * @static + */ public static function json($path, $flags = 0, $lock = false) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->json($path, $flags, $lock); } /** * Get contents of a file with shared access. @@ -6487,8 +6210,7 @@ public static function get($path, $lock = false) * @param string $path * @return string * @static - */ - public static function sharedGet($path) + */ public static function sharedGet($path) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->sharedGet($path); @@ -6501,8 +6223,7 @@ public static function sharedGet($path) * @return mixed * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException * @static - */ - public static function getRequire($path, $data = []) + */ public static function getRequire($path, $data = []) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->getRequire($path, $data); @@ -6515,8 +6236,7 @@ public static function getRequire($path, $data = []) * @return mixed * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException * @static - */ - public static function requireOnce($path, $data = []) + */ public static function requireOnce($path, $data = []) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->requireOnce($path, $data); @@ -6528,8 +6248,7 @@ public static function requireOnce($path, $data = []) * @return \Illuminate\Support\LazyCollection * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException * @static - */ - public static function lines($path) + */ public static function lines($path) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->lines($path); @@ -6541,8 +6260,7 @@ public static function lines($path) * @param string $algorithm * @return string * @static - */ - public static function hash($path, $algorithm = 'md5') + */ public static function hash($path, $algorithm = 'md5') { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->hash($path, $algorithm); @@ -6555,8 +6273,7 @@ public static function hash($path, $algorithm = 'md5') * @param bool $lock * @return int|bool * @static - */ - public static function put($path, $contents, $lock = false) + */ public static function put($path, $contents, $lock = false) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->put($path, $contents, $lock); @@ -6569,8 +6286,7 @@ public static function put($path, $contents, $lock = false) * @param int|null $mode * @return void * @static - */ - public static function replace($path, $content, $mode = null) + */ public static function replace($path, $content, $mode = null) { /** @var \Illuminate\Filesystem\Filesystem $instance */ $instance->replace($path, $content, $mode); @@ -6583,8 +6299,7 @@ public static function replace($path, $content, $mode = null) * @param string $path * @return void * @static - */ - public static function replaceInFile($search, $replace, $path) + */ public static function replaceInFile($search, $replace, $path) { /** @var \Illuminate\Filesystem\Filesystem $instance */ $instance->replaceInFile($search, $replace, $path); @@ -6596,8 +6311,7 @@ public static function replaceInFile($search, $replace, $path) * @param string $data * @return int * @static - */ - public static function prepend($path, $data) + */ public static function prepend($path, $data) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->prepend($path, $data); @@ -6607,13 +6321,13 @@ public static function prepend($path, $data) * * @param string $path * @param string $data + * @param bool $lock * @return int * @static - */ - public static function append($path, $data) + */ public static function append($path, $data, $lock = false) { /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->append($path, $data); + return $instance->append($path, $data, $lock); } /** * Get or set UNIX mode of a file or directory. @@ -6622,8 +6336,7 @@ public static function append($path, $data) * @param int|null $mode * @return mixed * @static - */ - public static function chmod($path, $mode = null) + */ public static function chmod($path, $mode = null) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->chmod($path, $mode); @@ -6634,8 +6347,7 @@ public static function chmod($path, $mode = null) * @param string|array $paths * @return bool * @static - */ - public static function delete($paths) + */ public static function delete($paths) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->delete($paths); @@ -6647,8 +6359,7 @@ public static function delete($paths) * @param string $target * @return bool * @static - */ - public static function move($path, $target) + */ public static function move($path, $target) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->move($path, $target); @@ -6660,8 +6371,7 @@ public static function move($path, $target) * @param string $target * @return bool * @static - */ - public static function copy($path, $target) + */ public static function copy($path, $target) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->copy($path, $target); @@ -6671,13 +6381,12 @@ public static function copy($path, $target) * * @param string $target * @param string $link - * @return void + * @return bool|null * @static - */ - public static function link($target, $link) + */ public static function link($target, $link) { /** @var \Illuminate\Filesystem\Filesystem $instance */ - $instance->link($target, $link); + return $instance->link($target, $link); } /** * Create a relative symlink to the target file or directory. @@ -6687,8 +6396,7 @@ public static function link($target, $link) * @return void * @throws \RuntimeException * @static - */ - public static function relativeLink($target, $link) + */ public static function relativeLink($target, $link) { /** @var \Illuminate\Filesystem\Filesystem $instance */ $instance->relativeLink($target, $link); @@ -6699,8 +6407,7 @@ public static function relativeLink($target, $link) * @param string $path * @return string * @static - */ - public static function name($path) + */ public static function name($path) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->name($path); @@ -6711,8 +6418,7 @@ public static function name($path) * @param string $path * @return string * @static - */ - public static function basename($path) + */ public static function basename($path) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->basename($path); @@ -6723,8 +6429,7 @@ public static function basename($path) * @param string $path * @return string * @static - */ - public static function dirname($path) + */ public static function dirname($path) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->dirname($path); @@ -6735,8 +6440,7 @@ public static function dirname($path) * @param string $path * @return string * @static - */ - public static function extension($path) + */ public static function extension($path) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->extension($path); @@ -6748,8 +6452,7 @@ public static function extension($path) * @return string|null * @throws \RuntimeException * @static - */ - public static function guessExtension($path) + */ public static function guessExtension($path) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->guessExtension($path); @@ -6760,8 +6463,7 @@ public static function guessExtension($path) * @param string $path * @return string * @static - */ - public static function type($path) + */ public static function type($path) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->type($path); @@ -6772,8 +6474,7 @@ public static function type($path) * @param string $path * @return string|false * @static - */ - public static function mimeType($path) + */ public static function mimeType($path) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->mimeType($path); @@ -6784,8 +6485,7 @@ public static function mimeType($path) * @param string $path * @return int * @static - */ - public static function size($path) + */ public static function size($path) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->size($path); @@ -6796,8 +6496,7 @@ public static function size($path) * @param string $path * @return int * @static - */ - public static function lastModified($path) + */ public static function lastModified($path) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->lastModified($path); @@ -6808,8 +6507,7 @@ public static function lastModified($path) * @param string $directory * @return bool * @static - */ - public static function isDirectory($directory) + */ public static function isDirectory($directory) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->isDirectory($directory); @@ -6821,8 +6519,7 @@ public static function isDirectory($directory) * @param bool $ignoreDotFiles * @return bool * @static - */ - public static function isEmptyDirectory($directory, $ignoreDotFiles = false) + */ public static function isEmptyDirectory($directory, $ignoreDotFiles = false) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->isEmptyDirectory($directory, $ignoreDotFiles); @@ -6833,8 +6530,7 @@ public static function isEmptyDirectory($directory, $ignoreDotFiles = false) * @param string $path * @return bool * @static - */ - public static function isReadable($path) + */ public static function isReadable($path) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->isReadable($path); @@ -6845,8 +6541,7 @@ public static function isReadable($path) * @param string $path * @return bool * @static - */ - public static function isWritable($path) + */ public static function isWritable($path) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->isWritable($path); @@ -6858,8 +6553,7 @@ public static function isWritable($path) * @param string $secondFile * @return bool * @static - */ - public static function hasSameHash($firstFile, $secondFile) + */ public static function hasSameHash($firstFile, $secondFile) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->hasSameHash($firstFile, $secondFile); @@ -6870,8 +6564,7 @@ public static function hasSameHash($firstFile, $secondFile) * @param string $file * @return bool * @static - */ - public static function isFile($file) + */ public static function isFile($file) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->isFile($file); @@ -6883,8 +6576,7 @@ public static function isFile($file) * @param int $flags * @return array * @static - */ - public static function glob($pattern, $flags = 0) + */ public static function glob($pattern, $flags = 0) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->glob($pattern, $flags); @@ -6896,8 +6588,7 @@ public static function glob($pattern, $flags = 0) * @param bool $hidden * @return \Symfony\Component\Finder\SplFileInfo[] * @static - */ - public static function files($directory, $hidden = false) + */ public static function files($directory, $hidden = false) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->files($directory, $hidden); @@ -6909,8 +6600,7 @@ public static function files($directory, $hidden = false) * @param bool $hidden * @return \Symfony\Component\Finder\SplFileInfo[] * @static - */ - public static function allFiles($directory, $hidden = false) + */ public static function allFiles($directory, $hidden = false) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->allFiles($directory, $hidden); @@ -6921,8 +6611,7 @@ public static function allFiles($directory, $hidden = false) * @param string $directory * @return array * @static - */ - public static function directories($directory) + */ public static function directories($directory) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->directories($directory); @@ -6935,8 +6624,7 @@ public static function directories($directory) * @param bool $recursive * @return void * @static - */ - public static function ensureDirectoryExists($path, $mode = 493, $recursive = true) + */ public static function ensureDirectoryExists($path, $mode = 493, $recursive = true) { /** @var \Illuminate\Filesystem\Filesystem $instance */ $instance->ensureDirectoryExists($path, $mode, $recursive); @@ -6950,8 +6638,7 @@ public static function ensureDirectoryExists($path, $mode = 493, $recursive = tr * @param bool $force * @return bool * @static - */ - public static function makeDirectory($path, $mode = 493, $recursive = false, $force = false) + */ public static function makeDirectory($path, $mode = 493, $recursive = false, $force = false) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->makeDirectory($path, $mode, $recursive, $force); @@ -6964,8 +6651,7 @@ public static function makeDirectory($path, $mode = 493, $recursive = false, $fo * @param bool $overwrite * @return bool * @static - */ - public static function moveDirectory($from, $to, $overwrite = false) + */ public static function moveDirectory($from, $to, $overwrite = false) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->moveDirectory($from, $to, $overwrite); @@ -6978,8 +6664,7 @@ public static function moveDirectory($from, $to, $overwrite = false) * @param int|null $options * @return bool * @static - */ - public static function copyDirectory($directory, $destination, $options = null) + */ public static function copyDirectory($directory, $destination, $options = null) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->copyDirectory($directory, $destination, $options); @@ -6993,8 +6678,7 @@ public static function copyDirectory($directory, $destination, $options = null) * @param bool $preserve * @return bool * @static - */ - public static function deleteDirectory($directory, $preserve = false) + */ public static function deleteDirectory($directory, $preserve = false) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->deleteDirectory($directory, $preserve); @@ -7005,8 +6689,7 @@ public static function deleteDirectory($directory, $preserve = false) * @param string $directory * @return bool * @static - */ - public static function deleteDirectories($directory) + */ public static function deleteDirectories($directory) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->deleteDirectories($directory); @@ -7017,8 +6700,7 @@ public static function deleteDirectories($directory) * @param string $directory * @return bool * @static - */ - public static function cleanDirectory($directory) + */ public static function cleanDirectory($directory) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->cleanDirectory($directory); @@ -7033,8 +6715,7 @@ public static function cleanDirectory($directory) * @param \Illuminate\Filesystem\(callable($this, TWhenParameter): TWhenReturnType)|null $default * @return $this|\Illuminate\Filesystem\TWhenReturnType * @static - */ - public static function when($value = null, $callback = null, $default = null) + */ public static function when($value = null, $callback = null, $default = null) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->when($value, $callback, $default); @@ -7049,8 +6730,7 @@ public static function when($value = null, $callback = null, $default = null) * @param \Illuminate\Filesystem\(callable($this, TUnlessParameter): TUnlessReturnType)|null $default * @return $this|\Illuminate\Filesystem\TUnlessReturnType * @static - */ - public static function unless($value = null, $callback = null, $default = null) + */ public static function unless($value = null, $callback = null, $default = null) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->unless($value, $callback, $default); @@ -7062,8 +6742,7 @@ public static function unless($value = null, $callback = null, $default = null) * @param object|callable $macro * @return void * @static - */ - public static function macro($name, $macro) + */ public static function macro($name, $macro) { \Illuminate\Filesystem\Filesystem::macro($name, $macro); } @@ -7075,8 +6754,7 @@ public static function macro($name, $macro) * @return void * @throws \ReflectionException * @static - */ - public static function mixin($mixin, $replace = true) + */ public static function mixin($mixin, $replace = true) { \Illuminate\Filesystem\Filesystem::mixin($mixin, $replace); } @@ -7086,8 +6764,7 @@ public static function mixin($mixin, $replace = true) * @param string $name * @return bool * @static - */ - public static function hasMacro($name) + */ public static function hasMacro($name) { return \Illuminate\Filesystem\Filesystem::hasMacro($name); } @@ -7096,27 +6773,23 @@ public static function hasMacro($name) * * @return void * @static - */ - public static function flushMacros() + */ public static function flushMacros() { \Illuminate\Filesystem\Filesystem::flushMacros(); } - - } + } /** * * * @see \Illuminate\Auth\Access\Gate - */ - class Gate { + */ class Gate { /** * Determine if a given ability has been defined. * * @param string|array $ability * @return bool * @static - */ - public static function has($ability) + */ public static function has($ability) { /** @var \Illuminate\Auth\Access\Gate $instance */ return $instance->has($ability); @@ -7130,8 +6803,7 @@ public static function has($ability) * @return \Illuminate\Auth\Access\Response * @throws \Illuminate\Auth\Access\AuthorizationException * @static - */ - public static function allowIf($condition, $message = null, $code = null) + */ public static function allowIf($condition, $message = null, $code = null) { /** @var \Illuminate\Auth\Access\Gate $instance */ return $instance->allowIf($condition, $message, $code); @@ -7145,8 +6817,7 @@ public static function allowIf($condition, $message = null, $code = null) * @return \Illuminate\Auth\Access\Response * @throws \Illuminate\Auth\Access\AuthorizationException * @static - */ - public static function denyIf($condition, $message = null, $code = null) + */ public static function denyIf($condition, $message = null, $code = null) { /** @var \Illuminate\Auth\Access\Gate $instance */ return $instance->denyIf($condition, $message, $code); @@ -7159,8 +6830,7 @@ public static function denyIf($condition, $message = null, $code = null) * @return \Illuminate\Auth\Access\Gate * @throws \InvalidArgumentException * @static - */ - public static function define($ability, $callback) + */ public static function define($ability, $callback) { /** @var \Illuminate\Auth\Access\Gate $instance */ return $instance->define($ability, $callback); @@ -7173,8 +6843,7 @@ public static function define($ability, $callback) * @param array|null $abilities * @return \Illuminate\Auth\Access\Gate * @static - */ - public static function resource($name, $class, $abilities = null) + */ public static function resource($name, $class, $abilities = null) { /** @var \Illuminate\Auth\Access\Gate $instance */ return $instance->resource($name, $class, $abilities); @@ -7186,8 +6855,7 @@ public static function resource($name, $class, $abilities = null) * @param string $policy * @return \Illuminate\Auth\Access\Gate * @static - */ - public static function policy($class, $policy) + */ public static function policy($class, $policy) { /** @var \Illuminate\Auth\Access\Gate $instance */ return $instance->policy($class, $policy); @@ -7198,8 +6866,7 @@ public static function policy($class, $policy) * @param callable $callback * @return \Illuminate\Auth\Access\Gate * @static - */ - public static function before($callback) + */ public static function before($callback) { /** @var \Illuminate\Auth\Access\Gate $instance */ return $instance->before($callback); @@ -7210,34 +6877,31 @@ public static function before($callback) * @param callable $callback * @return \Illuminate\Auth\Access\Gate * @static - */ - public static function after($callback) + */ public static function after($callback) { /** @var \Illuminate\Auth\Access\Gate $instance */ return $instance->after($callback); } /** - * Determine if the given ability should be granted for the current user. + * Determine if all of the given abilities should be granted for the current user. * - * @param string $ability + * @param \Illuminate\Auth\Access\iterable|string $ability * @param array|mixed $arguments * @return bool * @static - */ - public static function allows($ability, $arguments = []) + */ public static function allows($ability, $arguments = []) { /** @var \Illuminate\Auth\Access\Gate $instance */ return $instance->allows($ability, $arguments); } /** - * Determine if the given ability should be denied for the current user. + * Determine if any of the given abilities should be denied for the current user. * - * @param string $ability + * @param \Illuminate\Auth\Access\iterable|string $ability * @param array|mixed $arguments * @return bool * @static - */ - public static function denies($ability, $arguments = []) + */ public static function denies($ability, $arguments = []) { /** @var \Illuminate\Auth\Access\Gate $instance */ return $instance->denies($ability, $arguments); @@ -7249,8 +6913,7 @@ public static function denies($ability, $arguments = []) * @param array|mixed $arguments * @return bool * @static - */ - public static function check($abilities, $arguments = []) + */ public static function check($abilities, $arguments = []) { /** @var \Illuminate\Auth\Access\Gate $instance */ return $instance->check($abilities, $arguments); @@ -7262,8 +6925,7 @@ public static function check($abilities, $arguments = []) * @param array|mixed $arguments * @return bool * @static - */ - public static function any($abilities, $arguments = []) + */ public static function any($abilities, $arguments = []) { /** @var \Illuminate\Auth\Access\Gate $instance */ return $instance->any($abilities, $arguments); @@ -7275,8 +6937,7 @@ public static function any($abilities, $arguments = []) * @param array|mixed $arguments * @return bool * @static - */ - public static function none($abilities, $arguments = []) + */ public static function none($abilities, $arguments = []) { /** @var \Illuminate\Auth\Access\Gate $instance */ return $instance->none($abilities, $arguments); @@ -7289,8 +6950,7 @@ public static function none($abilities, $arguments = []) * @return \Illuminate\Auth\Access\Response * @throws \Illuminate\Auth\Access\AuthorizationException * @static - */ - public static function authorize($ability, $arguments = []) + */ public static function authorize($ability, $arguments = []) { /** @var \Illuminate\Auth\Access\Gate $instance */ return $instance->authorize($ability, $arguments); @@ -7302,8 +6962,7 @@ public static function authorize($ability, $arguments = []) * @param array|mixed $arguments * @return \Illuminate\Auth\Access\Response * @static - */ - public static function inspect($ability, $arguments = []) + */ public static function inspect($ability, $arguments = []) { /** @var \Illuminate\Auth\Access\Gate $instance */ return $instance->inspect($ability, $arguments); @@ -7316,8 +6975,7 @@ public static function inspect($ability, $arguments = []) * @return mixed * @throws \Illuminate\Auth\Access\AuthorizationException * @static - */ - public static function raw($ability, $arguments = []) + */ public static function raw($ability, $arguments = []) { /** @var \Illuminate\Auth\Access\Gate $instance */ return $instance->raw($ability, $arguments); @@ -7328,8 +6986,7 @@ public static function raw($ability, $arguments = []) * @param object|string $class * @return mixed * @static - */ - public static function getPolicyFor($class) + */ public static function getPolicyFor($class) { /** @var \Illuminate\Auth\Access\Gate $instance */ return $instance->getPolicyFor($class); @@ -7340,8 +6997,7 @@ public static function getPolicyFor($class) * @param callable $callback * @return \Illuminate\Auth\Access\Gate * @static - */ - public static function guessPolicyNamesUsing($callback) + */ public static function guessPolicyNamesUsing($callback) { /** @var \Illuminate\Auth\Access\Gate $instance */ return $instance->guessPolicyNamesUsing($callback); @@ -7353,8 +7009,7 @@ public static function guessPolicyNamesUsing($callback) * @return mixed * @throws \Illuminate\Contracts\Container\BindingResolutionException * @static - */ - public static function resolvePolicy($class) + */ public static function resolvePolicy($class) { /** @var \Illuminate\Auth\Access\Gate $instance */ return $instance->resolvePolicy($class); @@ -7365,8 +7020,7 @@ public static function resolvePolicy($class) * @param \Illuminate\Contracts\Auth\Authenticatable|mixed $user * @return static * @static - */ - public static function forUser($user) + */ public static function forUser($user) { /** @var \Illuminate\Auth\Access\Gate $instance */ return $instance->forUser($user); @@ -7376,8 +7030,7 @@ public static function forUser($user) * * @return array * @static - */ - public static function abilities() + */ public static function abilities() { /** @var \Illuminate\Auth\Access\Gate $instance */ return $instance->abilities(); @@ -7387,11 +7040,21 @@ public static function abilities() * * @return array * @static - */ - public static function policies() + */ public static function policies() { /** @var \Illuminate\Auth\Access\Gate $instance */ return $instance->policies(); + } + /** + * Set the default denial response for gates and policies. + * + * @param \Illuminate\Auth\Access\Response $response + * @return \Illuminate\Auth\Access\Gate + * @static + */ public static function defaultDenialResponse($response) + { + /** @var \Illuminate\Auth\Access\Gate $instance */ + return $instance->defaultDenialResponse($response); } /** * Set the container instance used by the gate. @@ -7399,8 +7062,7 @@ public static function policies() * @param \Illuminate\Contracts\Container\Container $container * @return \Illuminate\Auth\Access\Gate * @static - */ - public static function setContainer($container) + */ public static function setContainer($container) { /** @var \Illuminate\Auth\Access\Gate $instance */ return $instance->setContainer($container); @@ -7413,8 +7075,7 @@ public static function setContainer($container) * @param int|null $code * @return \Illuminate\Auth\Access\Response * @static - */ - public static function denyWithStatus($status, $message = null, $code = null) + */ public static function denyWithStatus($status, $message = null, $code = null) { /** @var \Illuminate\Auth\Access\Gate $instance */ return $instance->denyWithStatus($status, $message, $code); @@ -7426,28 +7087,24 @@ public static function denyWithStatus($status, $message = null, $code = null) * @param int|null $code * @return \Illuminate\Auth\Access\Response * @static - */ - public static function denyAsNotFound($message = null, $code = null) + */ public static function denyAsNotFound($message = null, $code = null) { /** @var \Illuminate\Auth\Access\Gate $instance */ return $instance->denyAsNotFound($message, $code); } - - } + } /** * * * @see \Illuminate\Hashing\HashManager * @see \Illuminate\Hashing\AbstractHasher - */ - class Hash { + */ class Hash { /** * Create an instance of the Bcrypt hash Driver. * * @return \Illuminate\Hashing\BcryptHasher * @static - */ - public static function createBcryptDriver() + */ public static function createBcryptDriver() { /** @var \Illuminate\Hashing\HashManager $instance */ return $instance->createBcryptDriver(); @@ -7457,8 +7114,7 @@ public static function createBcryptDriver() * * @return \Illuminate\Hashing\ArgonHasher * @static - */ - public static function createArgonDriver() + */ public static function createArgonDriver() { /** @var \Illuminate\Hashing\HashManager $instance */ return $instance->createArgonDriver(); @@ -7468,8 +7124,7 @@ public static function createArgonDriver() * * @return \Illuminate\Hashing\Argon2IdHasher * @static - */ - public static function createArgon2idDriver() + */ public static function createArgon2idDriver() { /** @var \Illuminate\Hashing\HashManager $instance */ return $instance->createArgon2idDriver(); @@ -7480,8 +7135,7 @@ public static function createArgon2idDriver() * @param string $hashedValue * @return array * @static - */ - public static function info($hashedValue) + */ public static function info($hashedValue) { /** @var \Illuminate\Hashing\HashManager $instance */ return $instance->info($hashedValue); @@ -7493,8 +7147,7 @@ public static function info($hashedValue) * @param array $options * @return string * @static - */ - public static function make($value, $options = []) + */ public static function make($value, $options = []) { /** @var \Illuminate\Hashing\HashManager $instance */ return $instance->make($value, $options); @@ -7507,8 +7160,7 @@ public static function make($value, $options = []) * @param array $options * @return bool * @static - */ - public static function check($value, $hashedValue, $options = []) + */ public static function check($value, $hashedValue, $options = []) { /** @var \Illuminate\Hashing\HashManager $instance */ return $instance->check($value, $hashedValue, $options); @@ -7520,19 +7172,28 @@ public static function check($value, $hashedValue, $options = []) * @param array $options * @return bool * @static - */ - public static function needsRehash($hashedValue, $options = []) + */ public static function needsRehash($hashedValue, $options = []) { /** @var \Illuminate\Hashing\HashManager $instance */ return $instance->needsRehash($hashedValue, $options); + } + /** + * Determine if a given string is already hashed. + * + * @param string $value + * @return bool + * @static + */ public static function isHashed($value) + { + /** @var \Illuminate\Hashing\HashManager $instance */ + return $instance->isHashed($value); } /** * Get the default driver name. * * @return string * @static - */ - public static function getDefaultDriver() + */ public static function getDefaultDriver() { /** @var \Illuminate\Hashing\HashManager $instance */ return $instance->getDefaultDriver(); @@ -7544,8 +7205,7 @@ public static function getDefaultDriver() * @return mixed * @throws \InvalidArgumentException * @static - */ - public static function driver($driver = null) + */ public static function driver($driver = null) { //Method inherited from \Illuminate\Support\Manager /** @var \Illuminate\Hashing\HashManager $instance */ return $instance->driver($driver); @@ -7557,8 +7217,7 @@ public static function driver($driver = null) * @param \Closure $callback * @return \Illuminate\Hashing\HashManager * @static - */ - public static function extend($driver, $callback) + */ public static function extend($driver, $callback) { //Method inherited from \Illuminate\Support\Manager /** @var \Illuminate\Hashing\HashManager $instance */ return $instance->extend($driver, $callback); @@ -7568,8 +7227,7 @@ public static function extend($driver, $callback) * * @return array * @static - */ - public static function getDrivers() + */ public static function getDrivers() { //Method inherited from \Illuminate\Support\Manager /** @var \Illuminate\Hashing\HashManager $instance */ return $instance->getDrivers(); @@ -7579,8 +7237,7 @@ public static function getDrivers() * * @return \Illuminate\Contracts\Container\Container * @static - */ - public static function getContainer() + */ public static function getContainer() { //Method inherited from \Illuminate\Support\Manager /** @var \Illuminate\Hashing\HashManager $instance */ return $instance->getContainer(); @@ -7591,8 +7248,7 @@ public static function getContainer() * @param \Illuminate\Contracts\Container\Container $container * @return \Illuminate\Hashing\HashManager * @static - */ - public static function setContainer($container) + */ public static function setContainer($container) { //Method inherited from \Illuminate\Support\Manager /** @var \Illuminate\Hashing\HashManager $instance */ return $instance->setContainer($container); @@ -7602,32 +7258,33 @@ public static function setContainer($container) * * @return \Illuminate\Hashing\HashManager * @static - */ - public static function forgetDrivers() + */ public static function forgetDrivers() { //Method inherited from \Illuminate\Support\Manager /** @var \Illuminate\Hashing\HashManager $instance */ return $instance->forgetDrivers(); } - - } + } /** * * * @method static \Illuminate\Http\Client\PendingRequest baseUrl(string $url) - * @method static \Illuminate\Http\Client\PendingRequest withBody(string $content, string $contentType) + * @method static \Illuminate\Http\Client\PendingRequest withBody(\Psr\Http\Message\StreamInterface|string $content, string $contentType = 'application/json') * @method static \Illuminate\Http\Client\PendingRequest asJson() * @method static \Illuminate\Http\Client\PendingRequest asForm() * @method static \Illuminate\Http\Client\PendingRequest attach(string|array $name, string|resource $contents = '', string|null $filename = null, array $headers = []) * @method static \Illuminate\Http\Client\PendingRequest asMultipart() * @method static \Illuminate\Http\Client\PendingRequest bodyFormat(string $format) + * @method static \Illuminate\Http\Client\PendingRequest withQueryParameters(array $parameters) * @method static \Illuminate\Http\Client\PendingRequest contentType(string $contentType) * @method static \Illuminate\Http\Client\PendingRequest acceptJson() * @method static \Illuminate\Http\Client\PendingRequest accept(string $contentType) * @method static \Illuminate\Http\Client\PendingRequest withHeaders(array $headers) + * @method static \Illuminate\Http\Client\PendingRequest withHeader(string $name, mixed $value) + * @method static \Illuminate\Http\Client\PendingRequest replaceHeaders(array $headers) * @method static \Illuminate\Http\Client\PendingRequest withBasicAuth(string $username, string $password) * @method static \Illuminate\Http\Client\PendingRequest withDigestAuth(string $username, string $password) * @method static \Illuminate\Http\Client\PendingRequest withToken(string $token, string $type = 'Bearer') - * @method static \Illuminate\Http\Client\PendingRequest withUserAgent(string $userAgent) + * @method static \Illuminate\Http\Client\PendingRequest withUserAgent(string|bool $userAgent) * @method static \Illuminate\Http\Client\PendingRequest withUrlParameters(array $parameters = []) * @method static \Illuminate\Http\Client\PendingRequest withCookies(array $cookies, string $domain) * @method static \Illuminate\Http\Client\PendingRequest maxRedirects(int $max) @@ -7636,9 +7293,11 @@ public static function forgetDrivers() * @method static \Illuminate\Http\Client\PendingRequest sink(string|resource $to) * @method static \Illuminate\Http\Client\PendingRequest timeout(int $seconds) * @method static \Illuminate\Http\Client\PendingRequest connectTimeout(int $seconds) - * @method static \Illuminate\Http\Client\PendingRequest retry(int $times, int $sleepMilliseconds = 0, callable|null $when = null, bool $throw = true) + * @method static \Illuminate\Http\Client\PendingRequest retry(array|int $times, \Closure|int $sleepMilliseconds = 0, callable|null $when = null, bool $throw = true) * @method static \Illuminate\Http\Client\PendingRequest withOptions(array $options) * @method static \Illuminate\Http\Client\PendingRequest withMiddleware(callable $middleware) + * @method static \Illuminate\Http\Client\PendingRequest withRequestMiddleware(callable $middleware) + * @method static \Illuminate\Http\Client\PendingRequest withResponseMiddleware(callable $middleware) * @method static \Illuminate\Http\Client\PendingRequest beforeSending(callable $callback) * @method static \Illuminate\Http\Client\PendingRequest throw(callable|null $callback = null) * @method static \Illuminate\Http\Client\PendingRequest throwIf(callable|bool $condition, callable|null $throwCallback = null) @@ -7671,41 +7330,81 @@ public static function forgetDrivers() * @method static \Illuminate\Http\Client\PendingRequest|mixed when(\Closure|mixed|null $value = null, callable|null $callback = null, callable|null $default = null) * @method static \Illuminate\Http\Client\PendingRequest|mixed unless(\Closure|mixed|null $value = null, callable|null $callback = null, callable|null $default = null) * @see \Illuminate\Http\Client\Factory - */ - class Http { + */ class Http { /** - * Create a new response instance for use during stubbing. + * Add middleware to apply to every request. * - * @param array|string|null $body - * @param int $status - * @param array $headers - * @return \GuzzleHttp\Promise\PromiseInterface + * @param callable $middleware + * @return \Illuminate\Http\Client\Factory * @static - */ - public static function response($body = null, $status = 200, $headers = []) + */ public static function globalMiddleware($middleware) { - return \Illuminate\Http\Client\Factory::response($body, $status, $headers); + /** @var \Illuminate\Http\Client\Factory $instance */ + return $instance->globalMiddleware($middleware); } /** - * Get an invokable object that returns a sequence of responses in order for use during stubbing. + * Add request middleware to apply to every request. * - * @param array $responses - * @return \Illuminate\Http\Client\ResponseSequence + * @param callable $middleware + * @return \Illuminate\Http\Client\Factory * @static - */ - public static function sequence($responses = []) + */ public static function globalRequestMiddleware($middleware) { /** @var \Illuminate\Http\Client\Factory $instance */ - return $instance->sequence($responses); + return $instance->globalRequestMiddleware($middleware); } /** - * Register a stub callable that will intercept requests and be able to return stub responses. + * Add response middleware to apply to every request. * - * @param callable|array|null $callback + * @param callable $middleware * @return \Illuminate\Http\Client\Factory * @static - */ - public static function fake($callback = null) + */ public static function globalResponseMiddleware($middleware) + { + /** @var \Illuminate\Http\Client\Factory $instance */ + return $instance->globalResponseMiddleware($middleware); + } + /** + * Set the options to apply to every request. + * + * @param array $options + * @return \Illuminate\Http\Client\Factory + * @static + */ public static function globalOptions($options) + { + /** @var \Illuminate\Http\Client\Factory $instance */ + return $instance->globalOptions($options); + } + /** + * Create a new response instance for use during stubbing. + * + * @param array|string|null $body + * @param int $status + * @param array $headers + * @return \GuzzleHttp\Promise\PromiseInterface + * @static + */ public static function response($body = null, $status = 200, $headers = []) + { + return \Illuminate\Http\Client\Factory::response($body, $status, $headers); + } + /** + * Get an invokable object that returns a sequence of responses in order for use during stubbing. + * + * @param array $responses + * @return \Illuminate\Http\Client\ResponseSequence + * @static + */ public static function sequence($responses = []) + { + /** @var \Illuminate\Http\Client\Factory $instance */ + return $instance->sequence($responses); + } + /** + * Register a stub callable that will intercept requests and be able to return stub responses. + * + * @param callable|array|null $callback + * @return \Illuminate\Http\Client\Factory + * @static + */ public static function fake($callback = null) { /** @var \Illuminate\Http\Client\Factory $instance */ return $instance->fake($callback); @@ -7716,8 +7415,7 @@ public static function fake($callback = null) * @param string $url * @return \Illuminate\Http\Client\ResponseSequence * @static - */ - public static function fakeSequence($url = '*') + */ public static function fakeSequence($url = '*') { /** @var \Illuminate\Http\Client\Factory $instance */ return $instance->fakeSequence($url); @@ -7729,8 +7427,7 @@ public static function fakeSequence($url = '*') * @param \Illuminate\Http\Client\Response|\GuzzleHttp\Promise\PromiseInterface|callable $callback * @return \Illuminate\Http\Client\Factory * @static - */ - public static function stubUrl($url, $callback) + */ public static function stubUrl($url, $callback) { /** @var \Illuminate\Http\Client\Factory $instance */ return $instance->stubUrl($url, $callback); @@ -7741,8 +7438,7 @@ public static function stubUrl($url, $callback) * @param bool $prevent * @return \Illuminate\Http\Client\Factory * @static - */ - public static function preventStrayRequests($prevent = true) + */ public static function preventStrayRequests($prevent = true) { /** @var \Illuminate\Http\Client\Factory $instance */ return $instance->preventStrayRequests($prevent); @@ -7752,8 +7448,7 @@ public static function preventStrayRequests($prevent = true) * * @return \Illuminate\Http\Client\Factory * @static - */ - public static function allowStrayRequests() + */ public static function allowStrayRequests() { /** @var \Illuminate\Http\Client\Factory $instance */ return $instance->allowStrayRequests(); @@ -7765,8 +7460,7 @@ public static function allowStrayRequests() * @param \Illuminate\Http\Client\Response $response * @return void * @static - */ - public static function recordRequestResponsePair($request, $response) + */ public static function recordRequestResponsePair($request, $response) { /** @var \Illuminate\Http\Client\Factory $instance */ $instance->recordRequestResponsePair($request, $response); @@ -7777,8 +7471,7 @@ public static function recordRequestResponsePair($request, $response) * @param callable $callback * @return void * @static - */ - public static function assertSent($callback) + */ public static function assertSent($callback) { /** @var \Illuminate\Http\Client\Factory $instance */ $instance->assertSent($callback); @@ -7789,8 +7482,7 @@ public static function assertSent($callback) * @param array $callbacks * @return void * @static - */ - public static function assertSentInOrder($callbacks) + */ public static function assertSentInOrder($callbacks) { /** @var \Illuminate\Http\Client\Factory $instance */ $instance->assertSentInOrder($callbacks); @@ -7801,8 +7493,7 @@ public static function assertSentInOrder($callbacks) * @param callable $callback * @return void * @static - */ - public static function assertNotSent($callback) + */ public static function assertNotSent($callback) { /** @var \Illuminate\Http\Client\Factory $instance */ $instance->assertNotSent($callback); @@ -7812,8 +7503,7 @@ public static function assertNotSent($callback) * * @return void * @static - */ - public static function assertNothingSent() + */ public static function assertNothingSent() { /** @var \Illuminate\Http\Client\Factory $instance */ $instance->assertNothingSent(); @@ -7824,8 +7514,7 @@ public static function assertNothingSent() * @param int $count * @return void * @static - */ - public static function assertSentCount($count) + */ public static function assertSentCount($count) { /** @var \Illuminate\Http\Client\Factory $instance */ $instance->assertSentCount($count); @@ -7835,8 +7524,7 @@ public static function assertSentCount($count) * * @return void * @static - */ - public static function assertSequencesAreEmpty() + */ public static function assertSequencesAreEmpty() { /** @var \Illuminate\Http\Client\Factory $instance */ $instance->assertSequencesAreEmpty(); @@ -7847,8 +7535,7 @@ public static function assertSequencesAreEmpty() * @param callable $callback * @return \Illuminate\Support\Collection * @static - */ - public static function recorded($callback = null) + */ public static function recorded($callback = null) { /** @var \Illuminate\Http\Client\Factory $instance */ return $instance->recorded($callback); @@ -7858,11 +7545,20 @@ public static function recorded($callback = null) * * @return \Illuminate\Contracts\Events\Dispatcher|null * @static - */ - public static function getDispatcher() + */ public static function getDispatcher() { /** @var \Illuminate\Http\Client\Factory $instance */ return $instance->getDispatcher(); + } + /** + * Get the array of global middleware. + * + * @return array + * @static + */ public static function getGlobalMiddleware() + { + /** @var \Illuminate\Http\Client\Factory $instance */ + return $instance->getGlobalMiddleware(); } /** * Register a custom macro. @@ -7871,8 +7567,7 @@ public static function getDispatcher() * @param object|callable $macro * @return void * @static - */ - public static function macro($name, $macro) + */ public static function macro($name, $macro) { \Illuminate\Http\Client\Factory::macro($name, $macro); } @@ -7884,8 +7579,7 @@ public static function macro($name, $macro) * @return void * @throws \ReflectionException * @static - */ - public static function mixin($mixin, $replace = true) + */ public static function mixin($mixin, $replace = true) { \Illuminate\Http\Client\Factory::mixin($mixin, $replace); } @@ -7895,8 +7589,7 @@ public static function mixin($mixin, $replace = true) * @param string $name * @return bool * @static - */ - public static function hasMacro($name) + */ public static function hasMacro($name) { return \Illuminate\Http\Client\Factory::hasMacro($name); } @@ -7905,8 +7598,7 @@ public static function hasMacro($name) * * @return void * @static - */ - public static function flushMacros() + */ public static function flushMacros() { \Illuminate\Http\Client\Factory::flushMacros(); } @@ -7918,20 +7610,17 @@ public static function flushMacros() * @return mixed * @throws \BadMethodCallException * @static - */ - public static function macroCall($method, $parameters) + */ public static function macroCall($method, $parameters) { /** @var \Illuminate\Http\Client\Factory $instance */ return $instance->macroCall($method, $parameters); } - - } + } /** * * * @see \Illuminate\Translation\Translator - */ - class Lang { + */ class Lang { /** * Determine if a translation exists for a given locale. * @@ -7939,8 +7628,7 @@ class Lang { * @param string|null $locale * @return bool * @static - */ - public static function hasForLocale($key, $locale = null) + */ public static function hasForLocale($key, $locale = null) { /** @var \Illuminate\Translation\Translator $instance */ return $instance->hasForLocale($key, $locale); @@ -7953,8 +7641,7 @@ public static function hasForLocale($key, $locale = null) * @param bool $fallback * @return bool * @static - */ - public static function has($key, $locale = null, $fallback = true) + */ public static function has($key, $locale = null, $fallback = true) { /** @var \Illuminate\Translation\Translator $instance */ return $instance->has($key, $locale, $fallback); @@ -7968,8 +7655,7 @@ public static function has($key, $locale = null, $fallback = true) * @param bool $fallback * @return string|array * @static - */ - public static function get($key, $replace = [], $locale = null, $fallback = true) + */ public static function get($key, $replace = [], $locale = null, $fallback = true) { /** @var \Illuminate\Translation\Translator $instance */ return $instance->get($key, $replace, $locale, $fallback); @@ -7978,13 +7664,12 @@ public static function get($key, $replace = [], $locale = null, $fallback = true * Get a translation according to an integer value. * * @param string $key - * @param \Countable|int|array $number + * @param \Countable|int|float|array $number * @param array $replace * @param string|null $locale * @return string * @static - */ - public static function choice($key, $number, $replace = [], $locale = null) + */ public static function choice($key, $number, $replace = [], $locale = null) { /** @var \Illuminate\Translation\Translator $instance */ return $instance->choice($key, $number, $replace, $locale); @@ -7997,8 +7682,7 @@ public static function choice($key, $number, $replace = [], $locale = null) * @param string $namespace * @return void * @static - */ - public static function addLines($lines, $locale, $namespace = '*') + */ public static function addLines($lines, $locale, $namespace = '*') { /** @var \Illuminate\Translation\Translator $instance */ $instance->addLines($lines, $locale, $namespace); @@ -8011,11 +7695,21 @@ public static function addLines($lines, $locale, $namespace = '*') * @param string $locale * @return void * @static - */ - public static function load($namespace, $group, $locale) + */ public static function load($namespace, $group, $locale) { /** @var \Illuminate\Translation\Translator $instance */ $instance->load($namespace, $group, $locale); + } + /** + * Register a callback that is responsible for handling missing translation keys. + * + * @param callable|null $callback + * @return static + * @static + */ public static function handleMissingKeysUsing($callback) + { + /** @var \Illuminate\Translation\Translator $instance */ + return $instance->handleMissingKeysUsing($callback); } /** * Add a new namespace to the loader. @@ -8024,8 +7718,7 @@ public static function load($namespace, $group, $locale) * @param string $hint * @return void * @static - */ - public static function addNamespace($namespace, $hint) + */ public static function addNamespace($namespace, $hint) { /** @var \Illuminate\Translation\Translator $instance */ $instance->addNamespace($namespace, $hint); @@ -8036,8 +7729,7 @@ public static function addNamespace($namespace, $hint) * @param string $path * @return void * @static - */ - public static function addJsonPath($path) + */ public static function addJsonPath($path) { /** @var \Illuminate\Translation\Translator $instance */ $instance->addJsonPath($path); @@ -8048,8 +7740,7 @@ public static function addJsonPath($path) * @param string $key * @return array * @static - */ - public static function parseKey($key) + */ public static function parseKey($key) { /** @var \Illuminate\Translation\Translator $instance */ return $instance->parseKey($key); @@ -8060,8 +7751,7 @@ public static function parseKey($key) * @param callable $callback * @return void * @static - */ - public static function determineLocalesUsing($callback) + */ public static function determineLocalesUsing($callback) { /** @var \Illuminate\Translation\Translator $instance */ $instance->determineLocalesUsing($callback); @@ -8071,8 +7761,7 @@ public static function determineLocalesUsing($callback) * * @return \Illuminate\Translation\MessageSelector * @static - */ - public static function getSelector() + */ public static function getSelector() { /** @var \Illuminate\Translation\Translator $instance */ return $instance->getSelector(); @@ -8083,8 +7772,7 @@ public static function getSelector() * @param \Illuminate\Translation\MessageSelector $selector * @return void * @static - */ - public static function setSelector($selector) + */ public static function setSelector($selector) { /** @var \Illuminate\Translation\Translator $instance */ $instance->setSelector($selector); @@ -8094,8 +7782,7 @@ public static function setSelector($selector) * * @return \Illuminate\Contracts\Translation\Loader * @static - */ - public static function getLoader() + */ public static function getLoader() { /** @var \Illuminate\Translation\Translator $instance */ return $instance->getLoader(); @@ -8105,8 +7792,7 @@ public static function getLoader() * * @return string * @static - */ - public static function locale() + */ public static function locale() { /** @var \Illuminate\Translation\Translator $instance */ return $instance->locale(); @@ -8116,8 +7802,7 @@ public static function locale() * * @return string * @static - */ - public static function getLocale() + */ public static function getLocale() { /** @var \Illuminate\Translation\Translator $instance */ return $instance->getLocale(); @@ -8129,8 +7814,7 @@ public static function getLocale() * @return void * @throws \InvalidArgumentException * @static - */ - public static function setLocale($locale) + */ public static function setLocale($locale) { /** @var \Illuminate\Translation\Translator $instance */ $instance->setLocale($locale); @@ -8140,8 +7824,7 @@ public static function setLocale($locale) * * @return string * @static - */ - public static function getFallback() + */ public static function getFallback() { /** @var \Illuminate\Translation\Translator $instance */ return $instance->getFallback(); @@ -8152,8 +7835,7 @@ public static function getFallback() * @param string $fallback * @return void * @static - */ - public static function setFallback($fallback) + */ public static function setFallback($fallback) { /** @var \Illuminate\Translation\Translator $instance */ $instance->setFallback($fallback); @@ -8164,8 +7846,7 @@ public static function setFallback($fallback) * @param array $loaded * @return void * @static - */ - public static function setLoaded($loaded) + */ public static function setLoaded($loaded) { /** @var \Illuminate\Translation\Translator $instance */ $instance->setLoaded($loaded); @@ -8177,8 +7858,7 @@ public static function setLoaded($loaded) * @param callable|null $handler * @return void * @static - */ - public static function stringable($class, $handler = null) + */ public static function stringable($class, $handler = null) { /** @var \Illuminate\Translation\Translator $instance */ $instance->stringable($class, $handler); @@ -8190,8 +7870,7 @@ public static function stringable($class, $handler = null) * @param array $parsed * @return void * @static - */ - public static function setParsedKey($key, $parsed) + */ public static function setParsedKey($key, $parsed) { //Method inherited from \Illuminate\Support\NamespacedItemResolver /** @var \Illuminate\Translation\Translator $instance */ $instance->setParsedKey($key, $parsed); @@ -8201,8 +7880,7 @@ public static function setParsedKey($key, $parsed) * * @return void * @static - */ - public static function flushParsedKeys() + */ public static function flushParsedKeys() { //Method inherited from \Illuminate\Support\NamespacedItemResolver /** @var \Illuminate\Translation\Translator $instance */ $instance->flushParsedKeys(); @@ -8214,8 +7892,7 @@ public static function flushParsedKeys() * @param object|callable $macro * @return void * @static - */ - public static function macro($name, $macro) + */ public static function macro($name, $macro) { \Illuminate\Translation\Translator::macro($name, $macro); } @@ -8227,8 +7904,7 @@ public static function macro($name, $macro) * @return void * @throws \ReflectionException * @static - */ - public static function mixin($mixin, $replace = true) + */ public static function mixin($mixin, $replace = true) { \Illuminate\Translation\Translator::mixin($mixin, $replace); } @@ -8238,8 +7914,7 @@ public static function mixin($mixin, $replace = true) * @param string $name * @return bool * @static - */ - public static function hasMacro($name) + */ public static function hasMacro($name) { return \Illuminate\Translation\Translator::hasMacro($name); } @@ -8248,34 +7923,31 @@ public static function hasMacro($name) * * @return void * @static - */ - public static function flushMacros() + */ public static function flushMacros() { \Illuminate\Translation\Translator::flushMacros(); } - - } + } /** * * * @method static void write(string $level, \Illuminate\Contracts\Support\Arrayable|\Illuminate\Contracts\Support\Jsonable|\Illuminate\Support\Stringable|array|string $message, array $context = []) * @method static \Illuminate\Log\Logger withContext(array $context = []) - * @method static \Illuminate\Log\Logger withoutContext() * @method static void listen(\Closure $callback) * @method static \Psr\Log\LoggerInterface getLogger() * @method static \Illuminate\Contracts\Events\Dispatcher getEventDispatcher() * @method static void setEventDispatcher(\Illuminate\Contracts\Events\Dispatcher $dispatcher) + * @method static \Illuminate\Log\Logger|mixed when(\Closure|mixed|null $value = null, callable|null $callback = null, callable|null $default = null) + * @method static \Illuminate\Log\Logger|mixed unless(\Closure|mixed|null $value = null, callable|null $callback = null, callable|null $default = null) * @see \Illuminate\Log\LogManager - */ - class Log { + */ class Log { /** * Build an on-demand log channel. * * @param array $config * @return \Psr\Log\LoggerInterface * @static - */ - public static function build($config) + */ public static function build($config) { /** @var \Illuminate\Log\LogManager $instance */ return $instance->build($config); @@ -8287,8 +7959,7 @@ public static function build($config) * @param string|null $channel * @return \Psr\Log\LoggerInterface * @static - */ - public static function stack($channels, $channel = null) + */ public static function stack($channels, $channel = null) { /** @var \Illuminate\Log\LogManager $instance */ return $instance->stack($channels, $channel); @@ -8299,8 +7970,7 @@ public static function stack($channels, $channel = null) * @param string|null $channel * @return \Psr\Log\LoggerInterface * @static - */ - public static function channel($channel = null) + */ public static function channel($channel = null) { /** @var \Illuminate\Log\LogManager $instance */ return $instance->channel($channel); @@ -8311,8 +7981,7 @@ public static function channel($channel = null) * @param string|null $driver * @return \Psr\Log\LoggerInterface * @static - */ - public static function driver($driver = null) + */ public static function driver($driver = null) { /** @var \Illuminate\Log\LogManager $instance */ return $instance->driver($driver); @@ -8323,8 +7992,7 @@ public static function driver($driver = null) * @param array $context * @return \Illuminate\Log\LogManager * @static - */ - public static function shareContext($context) + */ public static function shareContext($context) { /** @var \Illuminate\Log\LogManager $instance */ return $instance->shareContext($context); @@ -8334,19 +8002,27 @@ public static function shareContext($context) * * @return array * @static - */ - public static function sharedContext() + */ public static function sharedContext() { /** @var \Illuminate\Log\LogManager $instance */ return $instance->sharedContext(); + } + /** + * Flush the log context on all currently resolved channels. + * + * @return \Illuminate\Log\LogManager + * @static + */ public static function withoutContext() + { + /** @var \Illuminate\Log\LogManager $instance */ + return $instance->withoutContext(); } /** * Flush the shared context. * * @return \Illuminate\Log\LogManager * @static - */ - public static function flushSharedContext() + */ public static function flushSharedContext() { /** @var \Illuminate\Log\LogManager $instance */ return $instance->flushSharedContext(); @@ -8356,8 +8032,7 @@ public static function flushSharedContext() * * @return string|null * @static - */ - public static function getDefaultDriver() + */ public static function getDefaultDriver() { /** @var \Illuminate\Log\LogManager $instance */ return $instance->getDefaultDriver(); @@ -8368,8 +8043,7 @@ public static function getDefaultDriver() * @param string $name * @return void * @static - */ - public static function setDefaultDriver($name) + */ public static function setDefaultDriver($name) { /** @var \Illuminate\Log\LogManager $instance */ $instance->setDefaultDriver($name); @@ -8381,8 +8055,7 @@ public static function setDefaultDriver($name) * @param \Closure $callback * @return \Illuminate\Log\LogManager * @static - */ - public static function extend($driver, $callback) + */ public static function extend($driver, $callback) { /** @var \Illuminate\Log\LogManager $instance */ return $instance->extend($driver, $callback); @@ -8393,8 +8066,7 @@ public static function extend($driver, $callback) * @param string|null $driver * @return void * @static - */ - public static function forgetChannel($driver = null) + */ public static function forgetChannel($driver = null) { /** @var \Illuminate\Log\LogManager $instance */ $instance->forgetChannel($driver); @@ -8404,8 +8076,7 @@ public static function forgetChannel($driver = null) * * @return array * @static - */ - public static function getChannels() + */ public static function getChannels() { /** @var \Illuminate\Log\LogManager $instance */ return $instance->getChannels(); @@ -8413,12 +8084,11 @@ public static function getChannels() /** * System is unusable. * - * @param string $message + * @param string|\Stringable $message * @param array $context * @return void * @static - */ - public static function emergency($message, $context = []) + */ public static function emergency($message, $context = []) { /** @var \Illuminate\Log\LogManager $instance */ $instance->emergency($message, $context); @@ -8429,12 +8099,11 @@ public static function emergency($message, $context = []) * Example: Entire website down, database unavailable, etc. This should * trigger the SMS alerts and wake you up. * - * @param string $message + * @param string|\Stringable $message * @param array $context * @return void * @static - */ - public static function alert($message, $context = []) + */ public static function alert($message, $context = []) { /** @var \Illuminate\Log\LogManager $instance */ $instance->alert($message, $context); @@ -8444,12 +8113,11 @@ public static function alert($message, $context = []) * * Example: Application component unavailable, unexpected exception. * - * @param string $message + * @param string|\Stringable $message * @param array $context * @return void * @static - */ - public static function critical($message, $context = []) + */ public static function critical($message, $context = []) { /** @var \Illuminate\Log\LogManager $instance */ $instance->critical($message, $context); @@ -8458,12 +8126,11 @@ public static function critical($message, $context = []) * Runtime errors that do not require immediate action but should typically * be logged and monitored. * - * @param string $message + * @param string|\Stringable $message * @param array $context * @return void * @static - */ - public static function error($message, $context = []) + */ public static function error($message, $context = []) { /** @var \Illuminate\Log\LogManager $instance */ $instance->error($message, $context); @@ -8474,12 +8141,11 @@ public static function error($message, $context = []) * Example: Use of deprecated APIs, poor use of an API, undesirable things * that are not necessarily wrong. * - * @param string $message + * @param string|\Stringable $message * @param array $context * @return void * @static - */ - public static function warning($message, $context = []) + */ public static function warning($message, $context = []) { /** @var \Illuminate\Log\LogManager $instance */ $instance->warning($message, $context); @@ -8487,12 +8153,11 @@ public static function warning($message, $context = []) /** * Normal but significant events. * - * @param string $message + * @param string|\Stringable $message * @param array $context * @return void * @static - */ - public static function notice($message, $context = []) + */ public static function notice($message, $context = []) { /** @var \Illuminate\Log\LogManager $instance */ $instance->notice($message, $context); @@ -8502,12 +8167,11 @@ public static function notice($message, $context = []) * * Example: User logs in, SQL logs. * - * @param string $message + * @param string|\Stringable $message * @param array $context * @return void * @static - */ - public static function info($message, $context = []) + */ public static function info($message, $context = []) { /** @var \Illuminate\Log\LogManager $instance */ $instance->info($message, $context); @@ -8515,12 +8179,11 @@ public static function info($message, $context = []) /** * Detailed debug information. * - * @param string $message + * @param string|\Stringable $message * @param array $context * @return void * @static - */ - public static function debug($message, $context = []) + */ public static function debug($message, $context = []) { /** @var \Illuminate\Log\LogManager $instance */ $instance->debug($message, $context); @@ -8529,18 +8192,16 @@ public static function debug($message, $context = []) * Logs with an arbitrary level. * * @param mixed $level - * @param string $message + * @param string|\Stringable $message * @param array $context * @return void * @static - */ - public static function log($level, $message, $context = []) + */ public static function log($level, $message, $context = []) { /** @var \Illuminate\Log\LogManager $instance */ $instance->log($level, $message, $context); } - - } + } /** * * @@ -8564,16 +8225,14 @@ public static function log($level, $message, $context = []) * @method static void flushMacros() * @see \Illuminate\Mail\MailManager * @see \Illuminate\Support\Testing\Fakes\MailFake - */ - class Mail { + */ class Mail { /** * Get a mailer instance by name. * * @param string|null $name * @return \Illuminate\Contracts\Mail\Mailer * @static - */ - public static function mailer($name = null) + */ public static function mailer($name = null) { /** @var \Illuminate\Mail\MailManager $instance */ return $instance->mailer($name); @@ -8584,8 +8243,7 @@ public static function mailer($name = null) * @param string|null $driver * @return \Illuminate\Mail\Mailer * @static - */ - public static function driver($driver = null) + */ public static function driver($driver = null) { /** @var \Illuminate\Mail\MailManager $instance */ return $instance->driver($driver); @@ -8597,8 +8255,7 @@ public static function driver($driver = null) * @return \Symfony\Component\Mailer\Transport\TransportInterface * @throws \InvalidArgumentException * @static - */ - public static function createSymfonyTransport($config) + */ public static function createSymfonyTransport($config) { /** @var \Illuminate\Mail\MailManager $instance */ return $instance->createSymfonyTransport($config); @@ -8608,8 +8265,7 @@ public static function createSymfonyTransport($config) * * @return string * @static - */ - public static function getDefaultDriver() + */ public static function getDefaultDriver() { /** @var \Illuminate\Mail\MailManager $instance */ return $instance->getDefaultDriver(); @@ -8620,8 +8276,7 @@ public static function getDefaultDriver() * @param string $name * @return void * @static - */ - public static function setDefaultDriver($name) + */ public static function setDefaultDriver($name) { /** @var \Illuminate\Mail\MailManager $instance */ $instance->setDefaultDriver($name); @@ -8632,8 +8287,7 @@ public static function setDefaultDriver($name) * @param string|null $name * @return void * @static - */ - public static function purge($name = null) + */ public static function purge($name = null) { /** @var \Illuminate\Mail\MailManager $instance */ $instance->purge($name); @@ -8645,8 +8299,7 @@ public static function purge($name = null) * @param \Closure $callback * @return \Illuminate\Mail\MailManager * @static - */ - public static function extend($driver, $callback) + */ public static function extend($driver, $callback) { /** @var \Illuminate\Mail\MailManager $instance */ return $instance->extend($driver, $callback); @@ -8656,8 +8309,7 @@ public static function extend($driver, $callback) * * @return \Illuminate\Contracts\Foundation\Application * @static - */ - public static function getApplication() + */ public static function getApplication() { /** @var \Illuminate\Mail\MailManager $instance */ return $instance->getApplication(); @@ -8668,8 +8320,7 @@ public static function getApplication() * @param \Illuminate\Contracts\Foundation\Application $app * @return \Illuminate\Mail\MailManager * @static - */ - public static function setApplication($app) + */ public static function setApplication($app) { /** @var \Illuminate\Mail\MailManager $instance */ return $instance->setApplication($app); @@ -8679,8 +8330,7 @@ public static function setApplication($app) * * @return \Illuminate\Mail\MailManager * @static - */ - public static function forgetMailers() + */ public static function forgetMailers() { /** @var \Illuminate\Mail\MailManager $instance */ return $instance->forgetMailers(); @@ -8692,8 +8342,7 @@ public static function forgetMailers() * @param callable|int|null $callback * @return void * @static - */ - public static function assertSent($mailable, $callback = null) + */ public static function assertSent($mailable, $callback = null) { /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ $instance->assertSent($mailable, $callback); @@ -8705,8 +8354,7 @@ public static function assertSent($mailable, $callback = null) * @param callable|null $callback * @return void * @static - */ - public static function assertNotOutgoing($mailable, $callback = null) + */ public static function assertNotOutgoing($mailable, $callback = null) { /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ $instance->assertNotOutgoing($mailable, $callback); @@ -8718,8 +8366,7 @@ public static function assertNotOutgoing($mailable, $callback = null) * @param callable|null $callback * @return void * @static - */ - public static function assertNotSent($mailable, $callback = null) + */ public static function assertNotSent($mailable, $callback = null) { /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ $instance->assertNotSent($mailable, $callback); @@ -8729,8 +8376,7 @@ public static function assertNotSent($mailable, $callback = null) * * @return void * @static - */ - public static function assertNothingOutgoing() + */ public static function assertNothingOutgoing() { /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ $instance->assertNothingOutgoing(); @@ -8740,8 +8386,7 @@ public static function assertNothingOutgoing() * * @return void * @static - */ - public static function assertNothingSent() + */ public static function assertNothingSent() { /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ $instance->assertNothingSent(); @@ -8753,8 +8398,7 @@ public static function assertNothingSent() * @param callable|int|null $callback * @return void * @static - */ - public static function assertQueued($mailable, $callback = null) + */ public static function assertQueued($mailable, $callback = null) { /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ $instance->assertQueued($mailable, $callback); @@ -8766,8 +8410,7 @@ public static function assertQueued($mailable, $callback = null) * @param callable|null $callback * @return void * @static - */ - public static function assertNotQueued($mailable, $callback = null) + */ public static function assertNotQueued($mailable, $callback = null) { /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ $instance->assertNotQueued($mailable, $callback); @@ -8777,11 +8420,43 @@ public static function assertNotQueued($mailable, $callback = null) * * @return void * @static - */ - public static function assertNothingQueued() + */ public static function assertNothingQueued() { /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ $instance->assertNothingQueued(); + } + /** + * Assert the total number of mailables that were sent. + * + * @param int $count + * @return void + * @static + */ public static function assertSentCount($count) + { + /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ + $instance->assertSentCount($count); + } + /** + * Assert the total number of mailables that were queued. + * + * @param int $count + * @return void + * @static + */ public static function assertQueuedCount($count) + { + /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ + $instance->assertQueuedCount($count); + } + /** + * Assert the total number of mailables that were sent or queued. + * + * @param int $count + * @return void + * @static + */ public static function assertOutgoingCount($count) + { + /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ + $instance->assertOutgoingCount($count); } /** * Get all of the mailables matching a truth-test callback. @@ -8790,8 +8465,7 @@ public static function assertNothingQueued() * @param callable|null $callback * @return \Illuminate\Support\Collection * @static - */ - public static function sent($mailable, $callback = null) + */ public static function sent($mailable, $callback = null) { /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ return $instance->sent($mailable, $callback); @@ -8802,8 +8476,7 @@ public static function sent($mailable, $callback = null) * @param string $mailable * @return bool * @static - */ - public static function hasSent($mailable) + */ public static function hasSent($mailable) { /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ return $instance->hasSent($mailable); @@ -8815,8 +8488,7 @@ public static function hasSent($mailable) * @param callable|null $callback * @return \Illuminate\Support\Collection * @static - */ - public static function queued($mailable, $callback = null) + */ public static function queued($mailable, $callback = null) { /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ return $instance->queued($mailable, $callback); @@ -8827,8 +8499,7 @@ public static function queued($mailable, $callback = null) * @param string $mailable * @return bool * @static - */ - public static function hasQueued($mailable) + */ public static function hasQueued($mailable) { /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ return $instance->hasQueued($mailable); @@ -8839,8 +8510,7 @@ public static function hasQueued($mailable) * @param mixed $users * @return \Illuminate\Mail\PendingMail * @static - */ - public static function to($users) + */ public static function to($users) { /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ return $instance->to($users); @@ -8851,8 +8521,7 @@ public static function to($users) * @param mixed $users * @return \Illuminate\Mail\PendingMail * @static - */ - public static function cc($users) + */ public static function cc($users) { /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ return $instance->cc($users); @@ -8863,8 +8532,7 @@ public static function cc($users) * @param mixed $users * @return \Illuminate\Mail\PendingMail * @static - */ - public static function bcc($users) + */ public static function bcc($users) { /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ return $instance->bcc($users); @@ -8876,8 +8544,7 @@ public static function bcc($users) * @param \Closure|string $callback * @return void * @static - */ - public static function raw($text, $callback) + */ public static function raw($text, $callback) { /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ $instance->raw($text, $callback); @@ -8890,8 +8557,7 @@ public static function raw($text, $callback) * @param \Closure|string|null $callback * @return void * @static - */ - public static function send($view, $data = [], $callback = null) + */ public static function send($view, $data = [], $callback = null) { /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ $instance->send($view, $data, $callback); @@ -8903,8 +8569,7 @@ public static function send($view, $data = [], $callback = null) * @param string|null $queue * @return mixed * @static - */ - public static function queue($view, $queue = null) + */ public static function queue($view, $queue = null) { /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ return $instance->queue($view, $queue); @@ -8917,32 +8582,18 @@ public static function queue($view, $queue = null) * @param string|null $queue * @return mixed * @static - */ - public static function later($delay, $view, $queue = null) + */ public static function later($delay, $view, $queue = null) { /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ return $instance->later($delay, $view, $queue); } - /** - * Get the array of failed recipients. - * - * @return array - * @static - */ - public static function failures() - { - /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ - return $instance->failures(); - } - - } + } /** * * * @see \Illuminate\Notifications\ChannelManager * @see \Illuminate\Support\Testing\Fakes\NotificationFake - */ - class Notification { + */ class Notification { /** * Send the given notification to the given notifiable entities. * @@ -8950,8 +8601,7 @@ class Notification { * @param mixed $notification * @return void * @static - */ - public static function send($notifiables, $notification) + */ public static function send($notifiables, $notification) { /** @var \Illuminate\Notifications\ChannelManager $instance */ $instance->send($notifiables, $notification); @@ -8964,8 +8614,7 @@ public static function send($notifiables, $notification) * @param array|null $channels * @return void * @static - */ - public static function sendNow($notifiables, $notification, $channels = null) + */ public static function sendNow($notifiables, $notification, $channels = null) { /** @var \Illuminate\Notifications\ChannelManager $instance */ $instance->sendNow($notifiables, $notification, $channels); @@ -8976,8 +8625,7 @@ public static function sendNow($notifiables, $notification, $channels = null) * @param string|null $name * @return mixed * @static - */ - public static function channel($name = null) + */ public static function channel($name = null) { /** @var \Illuminate\Notifications\ChannelManager $instance */ return $instance->channel($name); @@ -8987,8 +8635,7 @@ public static function channel($name = null) * * @return string * @static - */ - public static function getDefaultDriver() + */ public static function getDefaultDriver() { /** @var \Illuminate\Notifications\ChannelManager $instance */ return $instance->getDefaultDriver(); @@ -8998,8 +8645,7 @@ public static function getDefaultDriver() * * @return string * @static - */ - public static function deliversVia() + */ public static function deliversVia() { /** @var \Illuminate\Notifications\ChannelManager $instance */ return $instance->deliversVia(); @@ -9010,8 +8656,7 @@ public static function deliversVia() * @param string $channel * @return void * @static - */ - public static function deliverVia($channel) + */ public static function deliverVia($channel) { /** @var \Illuminate\Notifications\ChannelManager $instance */ $instance->deliverVia($channel); @@ -9022,8 +8667,7 @@ public static function deliverVia($channel) * @param string $locale * @return \Illuminate\Notifications\ChannelManager * @static - */ - public static function locale($locale) + */ public static function locale($locale) { /** @var \Illuminate\Notifications\ChannelManager $instance */ return $instance->locale($locale); @@ -9035,8 +8679,7 @@ public static function locale($locale) * @return mixed * @throws \InvalidArgumentException * @static - */ - public static function driver($driver = null) + */ public static function driver($driver = null) { //Method inherited from \Illuminate\Support\Manager /** @var \Illuminate\Notifications\ChannelManager $instance */ return $instance->driver($driver); @@ -9048,8 +8691,7 @@ public static function driver($driver = null) * @param \Closure $callback * @return \Illuminate\Notifications\ChannelManager * @static - */ - public static function extend($driver, $callback) + */ public static function extend($driver, $callback) { //Method inherited from \Illuminate\Support\Manager /** @var \Illuminate\Notifications\ChannelManager $instance */ return $instance->extend($driver, $callback); @@ -9059,8 +8701,7 @@ public static function extend($driver, $callback) * * @return array * @static - */ - public static function getDrivers() + */ public static function getDrivers() { //Method inherited from \Illuminate\Support\Manager /** @var \Illuminate\Notifications\ChannelManager $instance */ return $instance->getDrivers(); @@ -9070,8 +8711,7 @@ public static function getDrivers() * * @return \Illuminate\Contracts\Container\Container * @static - */ - public static function getContainer() + */ public static function getContainer() { //Method inherited from \Illuminate\Support\Manager /** @var \Illuminate\Notifications\ChannelManager $instance */ return $instance->getContainer(); @@ -9082,8 +8722,7 @@ public static function getContainer() * @param \Illuminate\Contracts\Container\Container $container * @return \Illuminate\Notifications\ChannelManager * @static - */ - public static function setContainer($container) + */ public static function setContainer($container) { //Method inherited from \Illuminate\Support\Manager /** @var \Illuminate\Notifications\ChannelManager $instance */ return $instance->setContainer($container); @@ -9093,8 +8732,7 @@ public static function setContainer($container) * * @return \Illuminate\Notifications\ChannelManager * @static - */ - public static function forgetDrivers() + */ public static function forgetDrivers() { //Method inherited from \Illuminate\Support\Manager /** @var \Illuminate\Notifications\ChannelManager $instance */ return $instance->forgetDrivers(); @@ -9107,8 +8745,7 @@ public static function forgetDrivers() * @return void * @throws \Exception * @static - */ - public static function assertSentOnDemand($notification, $callback = null) + */ public static function assertSentOnDemand($notification, $callback = null) { /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ $instance->assertSentOnDemand($notification, $callback); @@ -9122,8 +8759,7 @@ public static function assertSentOnDemand($notification, $callback = null) * @return void * @throws \Exception * @static - */ - public static function assertSentTo($notifiable, $notification, $callback = null) + */ public static function assertSentTo($notifiable, $notification, $callback = null) { /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ $instance->assertSentTo($notifiable, $notification, $callback); @@ -9135,8 +8771,7 @@ public static function assertSentTo($notifiable, $notification, $callback = null * @param int $times * @return void * @static - */ - public static function assertSentOnDemandTimes($notification, $times = 1) + */ public static function assertSentOnDemandTimes($notification, $times = 1) { /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ $instance->assertSentOnDemandTimes($notification, $times); @@ -9149,8 +8784,7 @@ public static function assertSentOnDemandTimes($notification, $times = 1) * @param int $times * @return void * @static - */ - public static function assertSentToTimes($notifiable, $notification, $times = 1) + */ public static function assertSentToTimes($notifiable, $notification, $times = 1) { /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ $instance->assertSentToTimes($notifiable, $notification, $times); @@ -9164,8 +8798,7 @@ public static function assertSentToTimes($notifiable, $notification, $times = 1) * @return void * @throws \Exception * @static - */ - public static function assertNotSentTo($notifiable, $notification, $callback = null) + */ public static function assertNotSentTo($notifiable, $notification, $callback = null) { /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ $instance->assertNotSentTo($notifiable, $notification, $callback); @@ -9175,8 +8808,7 @@ public static function assertNotSentTo($notifiable, $notification, $callback = n * * @return void * @static - */ - public static function assertNothingSent() + */ public static function assertNothingSent() { /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ $instance->assertNothingSent(); @@ -9188,8 +8820,7 @@ public static function assertNothingSent() * @return void * @throws \Exception * @static - */ - public static function assertNothingSentTo($notifiable) + */ public static function assertNothingSentTo($notifiable) { /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ $instance->assertNothingSentTo($notifiable); @@ -9201,8 +8832,7 @@ public static function assertNothingSentTo($notifiable) * @param int $expectedCount * @return void * @static - */ - public static function assertSentTimes($notification, $expectedCount) + */ public static function assertSentTimes($notification, $expectedCount) { /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ $instance->assertSentTimes($notification, $expectedCount); @@ -9213,25 +8843,10 @@ public static function assertSentTimes($notification, $expectedCount) * @param int $expectedCount * @return void * @static - */ - public static function assertCount($expectedCount) + */ public static function assertCount($expectedCount) { /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ $instance->assertCount($expectedCount); - } - /** - * Assert the total amount of times a notification was sent. - * - * @param int $expectedCount - * @param string $notification - * @return void - * @deprecated Use the assertSentTimes method instead - * @static - */ - public static function assertTimesSent($expectedCount, $notification) - { - /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ - $instance->assertTimesSent($expectedCount, $notification); } /** * Get all of the notifications matching a truth-test callback. @@ -9241,8 +8856,7 @@ public static function assertTimesSent($expectedCount, $notification) * @param callable|null $callback * @return \Illuminate\Support\Collection * @static - */ - public static function sent($notifiable, $notification, $callback = null) + */ public static function sent($notifiable, $notification, $callback = null) { /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ return $instance->sent($notifiable, $notification, $callback); @@ -9254,8 +8868,7 @@ public static function sent($notifiable, $notification, $callback = null) * @param string $notification * @return bool * @static - */ - public static function hasSent($notifiable, $notification) + */ public static function hasSent($notifiable, $notification) { /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ return $instance->hasSent($notifiable, $notification); @@ -9265,8 +8878,7 @@ public static function hasSent($notifiable, $notification) * * @return array * @static - */ - public static function sentNotifications() + */ public static function sentNotifications() { /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ return $instance->sentNotifications(); @@ -9278,8 +8890,7 @@ public static function sentNotifications() * @param object|callable $macro * @return void * @static - */ - public static function macro($name, $macro) + */ public static function macro($name, $macro) { \Illuminate\Support\Testing\Fakes\NotificationFake::macro($name, $macro); } @@ -9291,8 +8902,7 @@ public static function macro($name, $macro) * @return void * @throws \ReflectionException * @static - */ - public static function mixin($mixin, $replace = true) + */ public static function mixin($mixin, $replace = true) { \Illuminate\Support\Testing\Fakes\NotificationFake::mixin($mixin, $replace); } @@ -9302,8 +8912,7 @@ public static function mixin($mixin, $replace = true) * @param string $name * @return bool * @static - */ - public static function hasMacro($name) + */ public static function hasMacro($name) { return \Illuminate\Support\Testing\Fakes\NotificationFake::hasMacro($name); } @@ -9312,13 +8921,11 @@ public static function hasMacro($name) * * @return void * @static - */ - public static function flushMacros() + */ public static function flushMacros() { \Illuminate\Support\Testing\Fakes\NotificationFake::flushMacros(); } - - } + } /** * * @@ -9331,16 +8938,14 @@ public static function flushMacros() * @method static \Illuminate\Auth\Passwords\TokenRepositoryInterface getRepository() * @see \Illuminate\Auth\Passwords\PasswordBrokerManager * @see \Illuminate\Auth\Passwords\PasswordBroker - */ - class Password { + */ class Password { /** * Attempt to get the broker from the local cache. * * @param string|null $name * @return \Illuminate\Contracts\Auth\PasswordBroker * @static - */ - public static function broker($name = null) + */ public static function broker($name = null) { /** @var \Illuminate\Auth\Passwords\PasswordBrokerManager $instance */ return $instance->broker($name); @@ -9350,8 +8955,7 @@ public static function broker($name = null) * * @return string * @static - */ - public static function getDefaultDriver() + */ public static function getDefaultDriver() { /** @var \Illuminate\Auth\Passwords\PasswordBrokerManager $instance */ return $instance->getDefaultDriver(); @@ -9362,3518 +8966,3270 @@ public static function getDefaultDriver() * @param string $name * @return void * @static - */ - public static function setDefaultDriver($name) + */ public static function setDefaultDriver($name) { /** @var \Illuminate\Auth\Passwords\PasswordBrokerManager $instance */ $instance->setDefaultDriver($name); } - - } + } /** * * - * @see \Illuminate\Queue\QueueManager - * @see \Illuminate\Queue\Queue - * @see \Illuminate\Support\Testing\Fakes\QueueFake - */ - class Queue { + * @method static \Illuminate\Process\PendingProcess command(array|string $command) + * @method static \Illuminate\Process\PendingProcess path(string $path) + * @method static \Illuminate\Process\PendingProcess timeout(int $timeout) + * @method static \Illuminate\Process\PendingProcess idleTimeout(int $timeout) + * @method static \Illuminate\Process\PendingProcess forever() + * @method static \Illuminate\Process\PendingProcess env(array $environment) + * @method static \Illuminate\Process\PendingProcess input(\Traversable|resource|string|int|float|bool|null $input) + * @method static \Illuminate\Process\PendingProcess quietly() + * @method static \Illuminate\Process\PendingProcess tty(bool $tty = true) + * @method static \Illuminate\Process\PendingProcess options(array $options) + * @method static \Illuminate\Contracts\Process\ProcessResult run(array|string|null $command = null, callable|null $output = null) + * @method static \Illuminate\Process\InvokedProcess start(array|string|null $command = null, callable|null $output = null) + * @method static \Illuminate\Process\PendingProcess withFakeHandlers(array $fakeHandlers) + * @method static \Illuminate\Process\PendingProcess|mixed when(\Closure|mixed|null $value = null, callable|null $callback = null, callable|null $default = null) + * @method static \Illuminate\Process\PendingProcess|mixed unless(\Closure|mixed|null $value = null, callable|null $callback = null, callable|null $default = null) + * @see \Illuminate\Process\PendingProcess + * @see \Illuminate\Process\Factory + */ class Process { /** - * Register an event listener for the before job event. + * Create a new fake process response for testing purposes. * - * @param mixed $callback - * @return void + * @param array|string $output + * @param array|string $errorOutput + * @param int $exitCode + * @return \Illuminate\Process\FakeProcessResult * @static - */ - public static function before($callback) + */ public static function result($output = '', $errorOutput = '', $exitCode = 0) { - /** @var \Illuminate\Queue\QueueManager $instance */ - $instance->before($callback); + /** @var \Illuminate\Process\Factory $instance */ + return $instance->result($output, $errorOutput, $exitCode); } /** - * Register an event listener for the after job event. + * Begin describing a fake process lifecycle. * - * @param mixed $callback - * @return void + * @return \Illuminate\Process\FakeProcessDescription * @static - */ - public static function after($callback) + */ public static function describe() { - /** @var \Illuminate\Queue\QueueManager $instance */ - $instance->after($callback); + /** @var \Illuminate\Process\Factory $instance */ + return $instance->describe(); } /** - * Register an event listener for the exception occurred job event. + * Begin describing a fake process sequence. * - * @param mixed $callback - * @return void + * @param array $processes + * @return \Illuminate\Process\FakeProcessSequence * @static - */ - public static function exceptionOccurred($callback) + */ public static function sequence($processes = []) { - /** @var \Illuminate\Queue\QueueManager $instance */ - $instance->exceptionOccurred($callback); + /** @var \Illuminate\Process\Factory $instance */ + return $instance->sequence($processes); } /** - * Register an event listener for the daemon queue loop. + * Indicate that the process factory should fake processes. * - * @param mixed $callback - * @return void + * @param \Closure|array|null $callback + * @return \Illuminate\Process\Factory * @static - */ - public static function looping($callback) + */ public static function fake($callback = null) { - /** @var \Illuminate\Queue\QueueManager $instance */ - $instance->looping($callback); + /** @var \Illuminate\Process\Factory $instance */ + return $instance->fake($callback); } /** - * Register an event listener for the failed job event. + * Determine if the process factory has fake process handlers and is recording processes. * - * @param mixed $callback - * @return void + * @return bool * @static - */ - public static function failing($callback) + */ public static function isRecording() { - /** @var \Illuminate\Queue\QueueManager $instance */ - $instance->failing($callback); + /** @var \Illuminate\Process\Factory $instance */ + return $instance->isRecording(); } /** - * Register an event listener for the daemon queue stopping. + * Record the given process if processes should be recorded. * - * @param mixed $callback - * @return void + * @param \Illuminate\Process\PendingProcess $process + * @param \Illuminate\Contracts\Process\ProcessResult $result + * @return \Illuminate\Process\Factory * @static - */ - public static function stopping($callback) + */ public static function recordIfRecording($process, $result) { - /** @var \Illuminate\Queue\QueueManager $instance */ - $instance->stopping($callback); + /** @var \Illuminate\Process\Factory $instance */ + return $instance->recordIfRecording($process, $result); } /** - * Determine if the driver is connected. + * Record the given process. * - * @param string|null $name - * @return bool + * @param \Illuminate\Process\PendingProcess $process + * @param \Illuminate\Contracts\Process\ProcessResult $result + * @return \Illuminate\Process\Factory * @static - */ - public static function connected($name = null) + */ public static function record($process, $result) { - /** @var \Illuminate\Queue\QueueManager $instance */ - return $instance->connected($name); + /** @var \Illuminate\Process\Factory $instance */ + return $instance->record($process, $result); } /** - * Resolve a queue connection instance. + * Indicate that an exception should be thrown if any process is not faked. * - * @param string|null $name - * @return \Illuminate\Contracts\Queue\Queue + * @param bool $prevent + * @return \Illuminate\Process\Factory * @static - */ - public static function connection($name = null) + */ public static function preventStrayProcesses($prevent = true) { - /** @var \Illuminate\Queue\QueueManager $instance */ - return $instance->connection($name); + /** @var \Illuminate\Process\Factory $instance */ + return $instance->preventStrayProcesses($prevent); } /** - * Add a queue connection resolver. + * Determine if stray processes are being prevented. * - * @param string $driver - * @param \Closure $resolver - * @return void + * @return bool * @static - */ - public static function extend($driver, $resolver) + */ public static function preventingStrayProcesses() { - /** @var \Illuminate\Queue\QueueManager $instance */ - $instance->extend($driver, $resolver); + /** @var \Illuminate\Process\Factory $instance */ + return $instance->preventingStrayProcesses(); } /** - * Add a queue connection resolver. + * Assert that a process was recorded matching a given truth test. * - * @param string $driver - * @param \Closure $resolver - * @return void + * @param \Closure|string $callback + * @return \Illuminate\Process\Factory * @static - */ - public static function addConnector($driver, $resolver) + */ public static function assertRan($callback) { - /** @var \Illuminate\Queue\QueueManager $instance */ - $instance->addConnector($driver, $resolver); + /** @var \Illuminate\Process\Factory $instance */ + return $instance->assertRan($callback); } /** - * Get the name of the default queue connection. + * Assert that a process was recorded a given number of times matching a given truth test. * - * @return string + * @param \Closure|string $callback + * @param int $times + * @return \Illuminate\Process\Factory * @static - */ - public static function getDefaultDriver() + */ public static function assertRanTimes($callback, $times = 1) { - /** @var \Illuminate\Queue\QueueManager $instance */ - return $instance->getDefaultDriver(); + /** @var \Illuminate\Process\Factory $instance */ + return $instance->assertRanTimes($callback, $times); } /** - * Set the name of the default queue connection. + * Assert that a process was not recorded matching a given truth test. * - * @param string $name - * @return void + * @param \Closure|string $callback + * @return \Illuminate\Process\Factory * @static - */ - public static function setDefaultDriver($name) + */ public static function assertNotRan($callback) { - /** @var \Illuminate\Queue\QueueManager $instance */ - $instance->setDefaultDriver($name); + /** @var \Illuminate\Process\Factory $instance */ + return $instance->assertNotRan($callback); } /** - * Get the full name for the given connection. + * Assert that a process was not recorded matching a given truth test. * - * @param string|null $connection - * @return string + * @param \Closure|string $callback + * @return \Illuminate\Process\Factory * @static - */ - public static function getName($connection = null) + */ public static function assertDidntRun($callback) { - /** @var \Illuminate\Queue\QueueManager $instance */ - return $instance->getName($connection); + /** @var \Illuminate\Process\Factory $instance */ + return $instance->assertDidntRun($callback); } /** - * Get the application instance used by the manager. + * Assert that no processes were recorded. * - * @return \Illuminate\Contracts\Foundation\Application + * @return \Illuminate\Process\Factory * @static - */ - public static function getApplication() + */ public static function assertNothingRan() { - /** @var \Illuminate\Queue\QueueManager $instance */ - return $instance->getApplication(); + /** @var \Illuminate\Process\Factory $instance */ + return $instance->assertNothingRan(); } /** - * Set the application instance used by the manager. + * Start defining a pool of processes. * - * @param \Illuminate\Contracts\Foundation\Application $app - * @return \Illuminate\Queue\QueueManager + * @param callable $callback + * @return \Illuminate\Process\Pool * @static - */ - public static function setApplication($app) + */ public static function pool($callback) { - /** @var \Illuminate\Queue\QueueManager $instance */ - return $instance->setApplication($app); + /** @var \Illuminate\Process\Factory $instance */ + return $instance->pool($callback); } /** - * Specify the jobs that should be queued instead of faked. + * Start defining a series of piped processes. * - * @param array|string $jobsToBeQueued - * @return \Illuminate\Support\Testing\Fakes\QueueFake + * @param callable|array $callback + * @return \Illuminate\Contracts\Process\ProcessResult * @static - */ - public static function except($jobsToBeQueued) + */ public static function pipe($callback, $output = null) { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - return $instance->except($jobsToBeQueued); + /** @var \Illuminate\Process\Factory $instance */ + return $instance->pipe($callback, $output); } /** - * Assert if a job was pushed based on a truth-test callback. + * Run a pool of processes and wait for them to finish executing. * - * @param string|\Closure $job - * @param callable|int|null $callback - * @return void + * @param callable $callback + * @param callable|null $output + * @return \Illuminate\Process\ProcessPoolResults * @static - */ - public static function assertPushed($job, $callback = null) + */ public static function concurrently($callback, $output = null) { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - $instance->assertPushed($job, $callback); + /** @var \Illuminate\Process\Factory $instance */ + return $instance->concurrently($callback, $output); } /** - * Assert if a job was pushed based on a truth-test callback. + * Create a new pending process associated with this factory. * - * @param string $queue - * @param string|\Closure $job - * @param callable|null $callback - * @return void + * @return \Illuminate\Process\PendingProcess * @static - */ - public static function assertPushedOn($queue, $job, $callback = null) + */ public static function newPendingProcess() { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - $instance->assertPushedOn($queue, $job, $callback); + /** @var \Illuminate\Process\Factory $instance */ + return $instance->newPendingProcess(); } /** - * Assert if a job was pushed with chained jobs based on a truth-test callback. + * Register a custom macro. * - * @param string $job - * @param array $expectedChain - * @param callable|null $callback + * @param string $name + * @param object|callable $macro * @return void * @static - */ - public static function assertPushedWithChain($job, $expectedChain = [], $callback = null) + */ public static function macro($name, $macro) { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - $instance->assertPushedWithChain($job, $expectedChain, $callback); + \Illuminate\Process\Factory::macro($name, $macro); } /** - * Assert if a job was pushed with an empty chain based on a truth-test callback. + * Mix another object into the class. * - * @param string $job - * @param callable|null $callback + * @param object $mixin + * @param bool $replace * @return void + * @throws \ReflectionException * @static - */ - public static function assertPushedWithoutChain($job, $callback = null) + */ public static function mixin($mixin, $replace = true) { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - $instance->assertPushedWithoutChain($job, $callback); + \Illuminate\Process\Factory::mixin($mixin, $replace); } /** - * Determine if a job was pushed based on a truth-test callback. + * Checks if macro is registered. * - * @param string|\Closure $job - * @param callable|null $callback - * @return void + * @param string $name + * @return bool * @static - */ - public static function assertNotPushed($job, $callback = null) + */ public static function hasMacro($name) { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - $instance->assertNotPushed($job, $callback); + return \Illuminate\Process\Factory::hasMacro($name); } /** - * Assert that no jobs were pushed. + * Flush the existing macros. * * @return void * @static - */ - public static function assertNothingPushed() + */ public static function flushMacros() { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - $instance->assertNothingPushed(); + \Illuminate\Process\Factory::flushMacros(); } /** - * Get all of the jobs matching a truth-test callback. + * Dynamically handle calls to the class. * - * @param string $job - * @param callable|null $callback - * @return \Illuminate\Support\Collection + * @param string $method + * @param array $parameters + * @return mixed + * @throws \BadMethodCallException * @static - */ - public static function pushed($job, $callback = null) + */ public static function macroCall($method, $parameters) { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - return $instance->pushed($job, $callback); + /** @var \Illuminate\Process\Factory $instance */ + return $instance->macroCall($method, $parameters); } + } + /** + * + * + * @see \Illuminate\Queue\QueueManager + * @see \Illuminate\Queue\Queue + * @see \Illuminate\Support\Testing\Fakes\QueueFake + */ class Queue { /** - * Determine if there are any stored jobs for a given class. + * Register an event listener for the before job event. * - * @param string $job - * @return bool + * @param mixed $callback + * @return void * @static - */ - public static function hasPushed($job) + */ public static function before($callback) { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - return $instance->hasPushed($job); + /** @var \Illuminate\Queue\QueueManager $instance */ + $instance->before($callback); } /** - * Get the size of the queue. + * Register an event listener for the after job event. * - * @param string|null $queue - * @return int + * @param mixed $callback + * @return void * @static - */ - public static function size($queue = null) + */ public static function after($callback) { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - return $instance->size($queue); + /** @var \Illuminate\Queue\QueueManager $instance */ + $instance->after($callback); } /** - * Push a new job onto the queue. + * Register an event listener for the exception occurred job event. * - * @param string|object $job - * @param mixed $data - * @param string|null $queue - * @return mixed + * @param mixed $callback + * @return void * @static - */ - public static function push($job, $data = '', $queue = null) + */ public static function exceptionOccurred($callback) { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - return $instance->push($job, $data, $queue); + /** @var \Illuminate\Queue\QueueManager $instance */ + $instance->exceptionOccurred($callback); } /** - * Determine if a job should be faked or actually dispatched. + * Register an event listener for the daemon queue loop. * - * @param object $job - * @return bool + * @param mixed $callback + * @return void * @static - */ - public static function shouldFakeJob($job) + */ public static function looping($callback) { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - return $instance->shouldFakeJob($job); + /** @var \Illuminate\Queue\QueueManager $instance */ + $instance->looping($callback); } /** - * Push a raw payload onto the queue. + * Register an event listener for the failed job event. * - * @param string $payload - * @param string|null $queue - * @param array $options - * @return mixed + * @param mixed $callback + * @return void * @static - */ - public static function pushRaw($payload, $queue = null, $options = []) + */ public static function failing($callback) { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - return $instance->pushRaw($payload, $queue, $options); + /** @var \Illuminate\Queue\QueueManager $instance */ + $instance->failing($callback); } /** - * Push a new job onto the queue after (n) seconds. + * Register an event listener for the daemon queue stopping. * - * @param \DateTimeInterface|\DateInterval|int $delay - * @param string|object $job - * @param mixed $data - * @param string|null $queue - * @return mixed + * @param mixed $callback + * @return void * @static - */ - public static function later($delay, $job, $data = '', $queue = null) + */ public static function stopping($callback) { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - return $instance->later($delay, $job, $data, $queue); + /** @var \Illuminate\Queue\QueueManager $instance */ + $instance->stopping($callback); } /** - * Push a new job onto the queue. + * Determine if the driver is connected. * - * @param string $queue - * @param string|object $job - * @param mixed $data - * @return mixed + * @param string|null $name + * @return bool * @static - */ - public static function pushOn($queue, $job, $data = '') + */ public static function connected($name = null) { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - return $instance->pushOn($queue, $job, $data); + /** @var \Illuminate\Queue\QueueManager $instance */ + return $instance->connected($name); } /** - * Push a new job onto a specific queue after (n) seconds. + * Resolve a queue connection instance. * - * @param string $queue - * @param \DateTimeInterface|\DateInterval|int $delay - * @param string|object $job - * @param mixed $data - * @return mixed + * @param string|null $name + * @return \Illuminate\Contracts\Queue\Queue * @static - */ - public static function laterOn($queue, $delay, $job, $data = '') + */ public static function connection($name = null) { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - return $instance->laterOn($queue, $delay, $job, $data); + /** @var \Illuminate\Queue\QueueManager $instance */ + return $instance->connection($name); } /** - * Pop the next job off of the queue. + * Add a queue connection resolver. * - * @param string|null $queue - * @return \Illuminate\Contracts\Queue\Job|null + * @param string $driver + * @param \Closure $resolver + * @return void * @static - */ - public static function pop($queue = null) + */ public static function extend($driver, $resolver) { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - return $instance->pop($queue); + /** @var \Illuminate\Queue\QueueManager $instance */ + $instance->extend($driver, $resolver); } /** - * Push an array of jobs onto the queue. + * Add a queue connection resolver. * - * @param array $jobs - * @param mixed $data - * @param string|null $queue - * @return mixed + * @param string $driver + * @param \Closure $resolver + * @return void * @static - */ - public static function bulk($jobs, $data = '', $queue = null) + */ public static function addConnector($driver, $resolver) { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - return $instance->bulk($jobs, $data, $queue); + /** @var \Illuminate\Queue\QueueManager $instance */ + $instance->addConnector($driver, $resolver); } /** - * Get the jobs that have been pushed. + * Get the name of the default queue connection. * - * @return array + * @return string * @static - */ - public static function pushedJobs() + */ public static function getDefaultDriver() { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - return $instance->pushedJobs(); + /** @var \Illuminate\Queue\QueueManager $instance */ + return $instance->getDefaultDriver(); } /** - * Get the connection name for the queue. + * Set the name of the default queue connection. + * + * @param string $name + * @return void + * @static + */ public static function setDefaultDriver($name) + { + /** @var \Illuminate\Queue\QueueManager $instance */ + $instance->setDefaultDriver($name); + } + /** + * Get the full name for the given connection. * + * @param string|null $connection * @return string * @static - */ - public static function getConnectionName() + */ public static function getName($connection = null) { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - return $instance->getConnectionName(); + /** @var \Illuminate\Queue\QueueManager $instance */ + return $instance->getName($connection); } /** - * Set the connection name for the queue. + * Get the application instance used by the manager. * - * @param string $name - * @return \Illuminate\Support\Testing\Fakes\QueueFake + * @return \Illuminate\Contracts\Foundation\Application * @static - */ - public static function setConnectionName($name) + */ public static function getApplication() { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - return $instance->setConnectionName($name); + /** @var \Illuminate\Queue\QueueManager $instance */ + return $instance->getApplication(); } /** - * Release a reserved job back onto the queue after (n) seconds. + * Set the application instance used by the manager. * - * @param string $queue - * @param \Illuminate\Queue\Jobs\DatabaseJobRecord $job - * @param int $delay - * @return mixed + * @param \Illuminate\Contracts\Foundation\Application $app + * @return \Illuminate\Queue\QueueManager * @static - */ - public static function release($queue, $job, $delay) + */ public static function setApplication($app) { - /** @var \Illuminate\Queue\DatabaseQueue $instance */ - return $instance->release($queue, $job, $delay); + /** @var \Illuminate\Queue\QueueManager $instance */ + return $instance->setApplication($app); } /** - * Delete a reserved job from the queue. + * Specify the jobs that should be queued instead of faked. * - * @param string $queue - * @param string $id - * @return void - * @throws \Throwable + * @param array|string $jobsToBeQueued + * @return \Illuminate\Support\Testing\Fakes\QueueFake * @static - */ - public static function deleteReserved($queue, $id) + */ public static function except($jobsToBeQueued) { - /** @var \Illuminate\Queue\DatabaseQueue $instance */ - $instance->deleteReserved($queue, $id); + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + return $instance->except($jobsToBeQueued); } /** - * Delete a reserved job from the reserved queue and release it. + * Assert if a job was pushed based on a truth-test callback. * - * @param string $queue - * @param \Illuminate\Queue\Jobs\DatabaseJob $job - * @param int $delay + * @param string|\Closure $job + * @param callable|int|null $callback * @return void * @static - */ - public static function deleteAndRelease($queue, $job, $delay) + */ public static function assertPushed($job, $callback = null) { - /** @var \Illuminate\Queue\DatabaseQueue $instance */ - $instance->deleteAndRelease($queue, $job, $delay); + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + $instance->assertPushed($job, $callback); } /** - * Delete all of the jobs from the queue. + * Assert if a job was pushed based on a truth-test callback. * * @param string $queue - * @return int + * @param string|\Closure $job + * @param callable|null $callback + * @return void * @static - */ - public static function clear($queue) + */ public static function assertPushedOn($queue, $job, $callback = null) { - /** @var \Illuminate\Queue\DatabaseQueue $instance */ - return $instance->clear($queue); + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + $instance->assertPushedOn($queue, $job, $callback); } /** - * Get the queue or return the default. + * Assert if a job was pushed with chained jobs based on a truth-test callback. * - * @param string|null $queue - * @return string + * @param string $job + * @param array $expectedChain + * @param callable|null $callback + * @return void * @static - */ - public static function getQueue($queue) + */ public static function assertPushedWithChain($job, $expectedChain = [], $callback = null) { - /** @var \Illuminate\Queue\DatabaseQueue $instance */ - return $instance->getQueue($queue); + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + $instance->assertPushedWithChain($job, $expectedChain, $callback); } /** - * Get the underlying database instance. + * Assert if a job was pushed with an empty chain based on a truth-test callback. * - * @return \Illuminate\Database\Connection + * @param string $job + * @param callable|null $callback + * @return void * @static - */ - public static function getDatabase() + */ public static function assertPushedWithoutChain($job, $callback = null) { - /** @var \Illuminate\Queue\DatabaseQueue $instance */ - return $instance->getDatabase(); + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + $instance->assertPushedWithoutChain($job, $callback); } /** - * Get the backoff for an object-based queue handler. + * Assert if a closure was pushed based on a truth-test callback. * - * @param mixed $job - * @return mixed + * @param callable|int|null $callback + * @return void * @static - */ - public static function getJobBackoff($job) - { //Method inherited from \Illuminate\Queue\Queue - /** @var \Illuminate\Queue\DatabaseQueue $instance */ - return $instance->getJobBackoff($job); + */ public static function assertClosurePushed($callback = null) + { + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + $instance->assertClosurePushed($callback); } /** - * Get the expiration timestamp for an object-based queue handler. + * Assert that a closure was not pushed based on a truth-test callback. * - * @param mixed $job - * @return mixed + * @param callable|null $callback + * @return void * @static - */ - public static function getJobExpiration($job) - { //Method inherited from \Illuminate\Queue\Queue - /** @var \Illuminate\Queue\DatabaseQueue $instance */ - return $instance->getJobExpiration($job); + */ public static function assertClosureNotPushed($callback = null) + { + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + $instance->assertClosureNotPushed($callback); } /** - * Register a callback to be executed when creating job payloads. + * Determine if a job was pushed based on a truth-test callback. * + * @param string|\Closure $job * @param callable|null $callback * @return void * @static - */ - public static function createPayloadUsing($callback) - { //Method inherited from \Illuminate\Queue\Queue - \Illuminate\Queue\DatabaseQueue::createPayloadUsing($callback); + */ public static function assertNotPushed($job, $callback = null) + { + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + $instance->assertNotPushed($job, $callback); } /** - * Get the container instance being used by the connection. + * Assert the total count of jobs that were pushed. * - * @return \Illuminate\Container\Container + * @param int $expectedCount + * @return void * @static - */ - public static function getContainer() - { //Method inherited from \Illuminate\Queue\Queue - /** @var \Illuminate\Queue\DatabaseQueue $instance */ - return $instance->getContainer(); + */ public static function assertCount($expectedCount) + { + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + $instance->assertCount($expectedCount); } /** - * Set the IoC container instance. + * Assert that no jobs were pushed. * - * @param \Illuminate\Container\Container $container * @return void * @static - */ - public static function setContainer($container) - { //Method inherited from \Illuminate\Queue\Queue - /** @var \Illuminate\Queue\DatabaseQueue $instance */ - $instance->setContainer($container); + */ public static function assertNothingPushed() + { + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + $instance->assertNothingPushed(); } - - } - /** - * - * - * @see \Illuminate\Cache\RateLimiter - */ - class RateLimiter { /** - * Register a named limiter configuration. + * Get all of the jobs matching a truth-test callback. * - * @param string $name - * @param \Closure $callback - * @return \Illuminate\Cache\RateLimiter + * @param string $job + * @param callable|null $callback + * @return \Illuminate\Support\Collection * @static - */ - public static function for($name, $callback) + */ public static function pushed($job, $callback = null) { - /** @var \Illuminate\Cache\RateLimiter $instance */ - return $instance->for($name, $callback); + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + return $instance->pushed($job, $callback); } /** - * Get the given named rate limiter. + * Determine if there are any stored jobs for a given class. * - * @param string $name - * @return \Closure + * @param string $job + * @return bool * @static - */ - public static function limiter($name) + */ public static function hasPushed($job) { - /** @var \Illuminate\Cache\RateLimiter $instance */ - return $instance->limiter($name); + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + return $instance->hasPushed($job); } /** - * Attempts to execute a callback if it's not limited. + * Get the size of the queue. * - * @param string $key - * @param int $maxAttempts - * @param \Closure $callback - * @param int $decaySeconds - * @return mixed + * @param string|null $queue + * @return int * @static - */ - public static function attempt($key, $maxAttempts, $callback, $decaySeconds = 60) + */ public static function size($queue = null) { - /** @var \Illuminate\Cache\RateLimiter $instance */ - return $instance->attempt($key, $maxAttempts, $callback, $decaySeconds); + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + return $instance->size($queue); } /** - * Determine if the given key has been "accessed" too many times. + * Push a new job onto the queue. * - * @param string $key - * @param int $maxAttempts - * @return bool + * @param string|object $job + * @param mixed $data + * @param string|null $queue + * @return mixed * @static - */ - public static function tooManyAttempts($key, $maxAttempts) + */ public static function push($job, $data = '', $queue = null) { - /** @var \Illuminate\Cache\RateLimiter $instance */ - return $instance->tooManyAttempts($key, $maxAttempts); + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + return $instance->push($job, $data, $queue); } /** - * Increment the counter for a given key for a given decay time. + * Determine if a job should be faked or actually dispatched. * - * @param string $key - * @param int $decaySeconds - * @return int + * @param object $job + * @return bool * @static - */ - public static function hit($key, $decaySeconds = 60) + */ public static function shouldFakeJob($job) { - /** @var \Illuminate\Cache\RateLimiter $instance */ - return $instance->hit($key, $decaySeconds); + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + return $instance->shouldFakeJob($job); } /** - * Get the number of attempts for the given key. + * Push a raw payload onto the queue. * - * @param string $key + * @param string $payload + * @param string|null $queue + * @param array $options * @return mixed * @static - */ - public static function attempts($key) + */ public static function pushRaw($payload, $queue = null, $options = []) { - /** @var \Illuminate\Cache\RateLimiter $instance */ - return $instance->attempts($key); + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + return $instance->pushRaw($payload, $queue, $options); } /** - * Reset the number of attempts for the given key. + * Push a new job onto the queue after (n) seconds. * - * @param string $key + * @param \DateTimeInterface|\DateInterval|int $delay + * @param string|object $job + * @param mixed $data + * @param string|null $queue * @return mixed * @static - */ - public static function resetAttempts($key) + */ public static function later($delay, $job, $data = '', $queue = null) { - /** @var \Illuminate\Cache\RateLimiter $instance */ - return $instance->resetAttempts($key); + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + return $instance->later($delay, $job, $data, $queue); } /** - * Get the number of retries left for the given key. + * Push a new job onto the queue. * - * @param string $key - * @param int $maxAttempts - * @return int + * @param string $queue + * @param string|object $job + * @param mixed $data + * @return mixed * @static - */ - public static function remaining($key, $maxAttempts) + */ public static function pushOn($queue, $job, $data = '') { - /** @var \Illuminate\Cache\RateLimiter $instance */ - return $instance->remaining($key, $maxAttempts); + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + return $instance->pushOn($queue, $job, $data); } /** - * Get the number of retries left for the given key. + * Push a new job onto a specific queue after (n) seconds. * - * @param string $key - * @param int $maxAttempts - * @return int + * @param string $queue + * @param \DateTimeInterface|\DateInterval|int $delay + * @param string|object $job + * @param mixed $data + * @return mixed * @static - */ - public static function retriesLeft($key, $maxAttempts) + */ public static function laterOn($queue, $delay, $job, $data = '') { - /** @var \Illuminate\Cache\RateLimiter $instance */ - return $instance->retriesLeft($key, $maxAttempts); + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + return $instance->laterOn($queue, $delay, $job, $data); } /** - * Clear the hits and lockout timer for the given key. + * Pop the next job off of the queue. * - * @param string $key - * @return void + * @param string|null $queue + * @return \Illuminate\Contracts\Queue\Job|null * @static - */ - public static function clear($key) + */ public static function pop($queue = null) { - /** @var \Illuminate\Cache\RateLimiter $instance */ - $instance->clear($key); + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + return $instance->pop($queue); } /** - * Get the number of seconds until the "key" is accessible again. + * Push an array of jobs onto the queue. * - * @param string $key - * @return int + * @param array $jobs + * @param mixed $data + * @param string|null $queue + * @return mixed * @static - */ - public static function availableIn($key) + */ public static function bulk($jobs, $data = '', $queue = null) { - /** @var \Illuminate\Cache\RateLimiter $instance */ - return $instance->availableIn($key); + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + return $instance->bulk($jobs, $data, $queue); } /** - * Clean the rate limiter key from unicode characters. + * Get the jobs that have been pushed. * - * @param string $key - * @return string + * @return array * @static - */ - public static function cleanRateLimiterKey($key) + */ public static function pushedJobs() { - /** @var \Illuminate\Cache\RateLimiter $instance */ - return $instance->cleanRateLimiterKey($key); + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + return $instance->pushedJobs(); } - - } - /** - * - * - * @see \Illuminate\Routing\Redirector - */ - class Redirect { /** - * Create a new redirect response to the "home" route. + * Specify if jobs should be serialized and restored when being "pushed" to the queue. * - * @param int $status - * @return \Illuminate\Http\RedirectResponse - * @deprecated Will be removed in a future Laravel version. + * @param bool $serializeAndRestore + * @return \Illuminate\Support\Testing\Fakes\QueueFake * @static - */ - public static function home($status = 302) + */ public static function serializeAndRestore($serializeAndRestore = true) { - /** @var \Illuminate\Routing\Redirector $instance */ - return $instance->home($status); + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + return $instance->serializeAndRestore($serializeAndRestore); } /** - * Create a new redirect response to the previous location. + * Get the connection name for the queue. * - * @param int $status - * @param array $headers - * @param mixed $fallback - * @return \Illuminate\Http\RedirectResponse + * @return string * @static - */ - public static function back($status = 302, $headers = [], $fallback = false) + */ public static function getConnectionName() { - /** @var \Illuminate\Routing\Redirector $instance */ - return $instance->back($status, $headers, $fallback); + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + return $instance->getConnectionName(); } /** - * Create a new redirect response to the current URI. + * Set the connection name for the queue. * - * @param int $status - * @param array $headers - * @return \Illuminate\Http\RedirectResponse + * @param string $name + * @return \Illuminate\Support\Testing\Fakes\QueueFake * @static - */ - public static function refresh($status = 302, $headers = []) + */ public static function setConnectionName($name) { - /** @var \Illuminate\Routing\Redirector $instance */ - return $instance->refresh($status, $headers); + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + return $instance->setConnectionName($name); } /** - * Create a new redirect response, while putting the current URL in the session. + * Release a reserved job back onto the queue after (n) seconds. * - * @param string $path - * @param int $status - * @param array $headers - * @param bool|null $secure - * @return \Illuminate\Http\RedirectResponse + * @param string $queue + * @param \Illuminate\Queue\Jobs\DatabaseJobRecord $job + * @param int $delay + * @return mixed * @static - */ - public static function guest($path, $status = 302, $headers = [], $secure = null) + */ public static function release($queue, $job, $delay) { - /** @var \Illuminate\Routing\Redirector $instance */ - return $instance->guest($path, $status, $headers, $secure); + /** @var \Illuminate\Queue\DatabaseQueue $instance */ + return $instance->release($queue, $job, $delay); } /** - * Create a new redirect response to the previously intended location. + * Delete a reserved job from the queue. * - * @param mixed $default - * @param int $status - * @param array $headers - * @param bool|null $secure - * @return \Illuminate\Http\RedirectResponse + * @param string $queue + * @param string $id + * @return void + * @throws \Throwable * @static - */ - public static function intended($default = '/', $status = 302, $headers = [], $secure = null) + */ public static function deleteReserved($queue, $id) { - /** @var \Illuminate\Routing\Redirector $instance */ - return $instance->intended($default, $status, $headers, $secure); + /** @var \Illuminate\Queue\DatabaseQueue $instance */ + $instance->deleteReserved($queue, $id); } /** - * Create a new redirect response to the given path. + * Delete a reserved job from the reserved queue and release it. * - * @param string $path - * @param int $status - * @param array $headers - * @param bool|null $secure - * @return \Illuminate\Http\RedirectResponse + * @param string $queue + * @param \Illuminate\Queue\Jobs\DatabaseJob $job + * @param int $delay + * @return void * @static - */ - public static function to($path, $status = 302, $headers = [], $secure = null) + */ public static function deleteAndRelease($queue, $job, $delay) { - /** @var \Illuminate\Routing\Redirector $instance */ - return $instance->to($path, $status, $headers, $secure); + /** @var \Illuminate\Queue\DatabaseQueue $instance */ + $instance->deleteAndRelease($queue, $job, $delay); } /** - * Create a new redirect response to an external URL (no validation). + * Delete all of the jobs from the queue. * - * @param string $path - * @param int $status - * @param array $headers - * @return \Illuminate\Http\RedirectResponse + * @param string $queue + * @return int * @static - */ - public static function away($path, $status = 302, $headers = []) + */ public static function clear($queue) { - /** @var \Illuminate\Routing\Redirector $instance */ - return $instance->away($path, $status, $headers); + /** @var \Illuminate\Queue\DatabaseQueue $instance */ + return $instance->clear($queue); } /** - * Create a new redirect response to the given HTTPS path. + * Get the queue or return the default. * - * @param string $path - * @param int $status - * @param array $headers - * @return \Illuminate\Http\RedirectResponse + * @param string|null $queue + * @return string * @static - */ - public static function secure($path, $status = 302, $headers = []) + */ public static function getQueue($queue) { - /** @var \Illuminate\Routing\Redirector $instance */ - return $instance->secure($path, $status, $headers); + /** @var \Illuminate\Queue\DatabaseQueue $instance */ + return $instance->getQueue($queue); } /** - * Create a new redirect response to a named route. + * Get the underlying database instance. * - * @param string $route - * @param mixed $parameters - * @param int $status - * @param array $headers - * @return \Illuminate\Http\RedirectResponse + * @return \Illuminate\Database\Connection * @static - */ - public static function route($route, $parameters = [], $status = 302, $headers = []) + */ public static function getDatabase() { - /** @var \Illuminate\Routing\Redirector $instance */ - return $instance->route($route, $parameters, $status, $headers); + /** @var \Illuminate\Queue\DatabaseQueue $instance */ + return $instance->getDatabase(); } /** - * Create a new redirect response to a signed named route. + * Get the maximum number of attempts for an object-based queue handler. * - * @param string $route - * @param mixed $parameters - * @param \DateTimeInterface|\DateInterval|int|null $expiration - * @param int $status - * @param array $headers - * @return \Illuminate\Http\RedirectResponse + * @param mixed $job + * @return mixed * @static - */ - public static function signedRoute($route, $parameters = [], $expiration = null, $status = 302, $headers = []) - { - /** @var \Illuminate\Routing\Redirector $instance */ - return $instance->signedRoute($route, $parameters, $expiration, $status, $headers); + */ public static function getJobTries($job) + { //Method inherited from \Illuminate\Queue\Queue + /** @var \Illuminate\Queue\DatabaseQueue $instance */ + return $instance->getJobTries($job); } /** - * Create a new redirect response to a signed named route. + * Get the backoff for an object-based queue handler. * - * @param string $route - * @param \DateTimeInterface|\DateInterval|int|null $expiration - * @param mixed $parameters - * @param int $status - * @param array $headers - * @return \Illuminate\Http\RedirectResponse + * @param mixed $job + * @return mixed * @static - */ - public static function temporarySignedRoute($route, $expiration, $parameters = [], $status = 302, $headers = []) - { - /** @var \Illuminate\Routing\Redirector $instance */ - return $instance->temporarySignedRoute($route, $expiration, $parameters, $status, $headers); + */ public static function getJobBackoff($job) + { //Method inherited from \Illuminate\Queue\Queue + /** @var \Illuminate\Queue\DatabaseQueue $instance */ + return $instance->getJobBackoff($job); } /** - * Create a new redirect response to a controller action. + * Get the expiration timestamp for an object-based queue handler. * - * @param string|array $action - * @param mixed $parameters - * @param int $status - * @param array $headers - * @return \Illuminate\Http\RedirectResponse + * @param mixed $job + * @return mixed * @static - */ - public static function action($action, $parameters = [], $status = 302, $headers = []) - { - /** @var \Illuminate\Routing\Redirector $instance */ - return $instance->action($action, $parameters, $status, $headers); + */ public static function getJobExpiration($job) + { //Method inherited from \Illuminate\Queue\Queue + /** @var \Illuminate\Queue\DatabaseQueue $instance */ + return $instance->getJobExpiration($job); } /** - * Get the URL generator instance. + * Register a callback to be executed when creating job payloads. * - * @return \Illuminate\Routing\UrlGenerator + * @param callable|null $callback + * @return void * @static - */ - public static function getUrlGenerator() - { - /** @var \Illuminate\Routing\Redirector $instance */ - return $instance->getUrlGenerator(); + */ public static function createPayloadUsing($callback) + { //Method inherited from \Illuminate\Queue\Queue + \Illuminate\Queue\DatabaseQueue::createPayloadUsing($callback); } /** - * Set the active session store. + * Get the container instance being used by the connection. * - * @param \Illuminate\Session\Store $session - * @return void + * @return \Illuminate\Container\Container * @static - */ - public static function setSession($session) - { - /** @var \Illuminate\Routing\Redirector $instance */ - $instance->setSession($session); + */ public static function getContainer() + { //Method inherited from \Illuminate\Queue\Queue + /** @var \Illuminate\Queue\DatabaseQueue $instance */ + return $instance->getContainer(); } /** - * Get the "intended" URL from the session. + * Set the IoC container instance. * - * @return string|null + * @param \Illuminate\Container\Container $container + * @return void * @static - */ - public static function getIntendedUrl() - { - /** @var \Illuminate\Routing\Redirector $instance */ - return $instance->getIntendedUrl(); + */ public static function setContainer($container) + { //Method inherited from \Illuminate\Queue\Queue + /** @var \Illuminate\Queue\DatabaseQueue $instance */ + $instance->setContainer($container); } + } + /** + * + * + * @see \Illuminate\Cache\RateLimiter + */ class RateLimiter { /** - * Set the "intended" URL in the session. + * Register a named limiter configuration. * - * @param string $url - * @return \Illuminate\Routing\Redirector + * @param string $name + * @param \Closure $callback + * @return \Illuminate\Cache\RateLimiter * @static - */ - public static function setIntendedUrl($url) + */ public static function for($name, $callback) { - /** @var \Illuminate\Routing\Redirector $instance */ - return $instance->setIntendedUrl($url); + /** @var \Illuminate\Cache\RateLimiter $instance */ + return $instance->for($name, $callback); } /** - * Register a custom macro. + * Get the given named rate limiter. * * @param string $name - * @param object|callable $macro - * @return void + * @return \Closure|null * @static - */ - public static function macro($name, $macro) + */ public static function limiter($name) { - \Illuminate\Routing\Redirector::macro($name, $macro); + /** @var \Illuminate\Cache\RateLimiter $instance */ + return $instance->limiter($name); } /** - * Mix another object into the class. + * Attempts to execute a callback if it's not limited. * - * @param object $mixin - * @param bool $replace - * @return void - * @throws \ReflectionException + * @param string $key + * @param int $maxAttempts + * @param \Closure $callback + * @param int $decaySeconds + * @return mixed * @static - */ - public static function mixin($mixin, $replace = true) + */ public static function attempt($key, $maxAttempts, $callback, $decaySeconds = 60) { - \Illuminate\Routing\Redirector::mixin($mixin, $replace); + /** @var \Illuminate\Cache\RateLimiter $instance */ + return $instance->attempt($key, $maxAttempts, $callback, $decaySeconds); } /** - * Checks if macro is registered. + * Determine if the given key has been "accessed" too many times. * - * @param string $name + * @param string $key + * @param int $maxAttempts * @return bool * @static - */ - public static function hasMacro($name) + */ public static function tooManyAttempts($key, $maxAttempts) { - return \Illuminate\Routing\Redirector::hasMacro($name); + /** @var \Illuminate\Cache\RateLimiter $instance */ + return $instance->tooManyAttempts($key, $maxAttempts); } /** - * Flush the existing macros. + * Increment (by 1) the counter for a given key for a given decay time. * - * @return void + * @param string $key + * @param int $decaySeconds + * @return int * @static - */ - public static function flushMacros() + */ public static function hit($key, $decaySeconds = 60) { - \Illuminate\Routing\Redirector::flushMacros(); + /** @var \Illuminate\Cache\RateLimiter $instance */ + return $instance->hit($key, $decaySeconds); } - - } - /** - * - * - * @see \Illuminate\Http\Request - */ - class Request { /** - * Create a new Illuminate HTTP request from server variables. + * Increment the counter for a given key for a given decay time by a given amount. * - * @return static + * @param string $key + * @param int $decaySeconds + * @param int $amount + * @return int * @static - */ - public static function capture() + */ public static function increment($key, $decaySeconds = 60, $amount = 1) { - return \Illuminate\Http\Request::capture(); + /** @var \Illuminate\Cache\RateLimiter $instance */ + return $instance->increment($key, $decaySeconds, $amount); } /** - * Return the Request instance. + * Get the number of attempts for the given key. * - * @return \Illuminate\Http\Request + * @param string $key + * @return mixed * @static - */ - public static function instance() + */ public static function attempts($key) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->instance(); + /** @var \Illuminate\Cache\RateLimiter $instance */ + return $instance->attempts($key); } /** - * Get the request method. + * Reset the number of attempts for the given key. * - * @return string + * @param string $key + * @return mixed * @static - */ - public static function method() + */ public static function resetAttempts($key) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->method(); + /** @var \Illuminate\Cache\RateLimiter $instance */ + return $instance->resetAttempts($key); } /** - * Get the root URL for the application. + * Get the number of retries left for the given key. * - * @return string + * @param string $key + * @param int $maxAttempts + * @return int * @static - */ - public static function root() + */ public static function remaining($key, $maxAttempts) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->root(); + /** @var \Illuminate\Cache\RateLimiter $instance */ + return $instance->remaining($key, $maxAttempts); } /** - * Get the URL (no query string) for the request. + * Get the number of retries left for the given key. * - * @return string + * @param string $key + * @param int $maxAttempts + * @return int * @static - */ - public static function url() + */ public static function retriesLeft($key, $maxAttempts) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->url(); + /** @var \Illuminate\Cache\RateLimiter $instance */ + return $instance->retriesLeft($key, $maxAttempts); } /** - * Get the full URL for the request. + * Clear the hits and lockout timer for the given key. * - * @return string + * @param string $key + * @return void * @static - */ - public static function fullUrl() + */ public static function clear($key) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->fullUrl(); + /** @var \Illuminate\Cache\RateLimiter $instance */ + $instance->clear($key); } /** - * Get the full URL for the request with the added query string parameters. + * Get the number of seconds until the "key" is accessible again. * - * @param array $query - * @return string + * @param string $key + * @return int * @static - */ - public static function fullUrlWithQuery($query) + */ public static function availableIn($key) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->fullUrlWithQuery($query); + /** @var \Illuminate\Cache\RateLimiter $instance */ + return $instance->availableIn($key); } /** - * Get the full URL for the request without the given query string parameters. + * Clean the rate limiter key from unicode characters. * - * @param array|string $keys + * @param string $key * @return string * @static - */ - public static function fullUrlWithoutQuery($keys) + */ public static function cleanRateLimiterKey($key) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->fullUrlWithoutQuery($keys); + /** @var \Illuminate\Cache\RateLimiter $instance */ + return $instance->cleanRateLimiterKey($key); } + } + /** + * + * + * @see \Illuminate\Routing\Redirector + */ class Redirect { /** - * Get the current path info for the request. + * Create a new redirect response to the previous location. * - * @return string + * @param int $status + * @param array $headers + * @param mixed $fallback + * @return \Illuminate\Http\RedirectResponse * @static - */ - public static function path() + */ public static function back($status = 302, $headers = [], $fallback = false) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->path(); - } + /** @var \Illuminate\Routing\Redirector $instance */ + return $instance->back($status, $headers, $fallback); + } /** - * Get the current decoded path info for the request. + * Create a new redirect response to the current URI. * - * @return string + * @param int $status + * @param array $headers + * @return \Illuminate\Http\RedirectResponse * @static - */ - public static function decodedPath() + */ public static function refresh($status = 302, $headers = []) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->decodedPath(); + /** @var \Illuminate\Routing\Redirector $instance */ + return $instance->refresh($status, $headers); } /** - * Get a segment from the URI (1 based index). + * Create a new redirect response, while putting the current URL in the session. * - * @param int $index - * @param string|null $default - * @return string|null + * @param string $path + * @param int $status + * @param array $headers + * @param bool|null $secure + * @return \Illuminate\Http\RedirectResponse * @static - */ - public static function segment($index, $default = null) + */ public static function guest($path, $status = 302, $headers = [], $secure = null) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->segment($index, $default); + /** @var \Illuminate\Routing\Redirector $instance */ + return $instance->guest($path, $status, $headers, $secure); } /** - * Get all of the segments for the request path. + * Create a new redirect response to the previously intended location. * - * @return array + * @param mixed $default + * @param int $status + * @param array $headers + * @param bool|null $secure + * @return \Illuminate\Http\RedirectResponse * @static - */ - public static function segments() + */ public static function intended($default = '/', $status = 302, $headers = [], $secure = null) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->segments(); + /** @var \Illuminate\Routing\Redirector $instance */ + return $instance->intended($default, $status, $headers, $secure); } /** - * Determine if the current request URI matches a pattern. + * Create a new redirect response to the given path. * - * @param mixed $patterns - * @return bool + * @param string $path + * @param int $status + * @param array $headers + * @param bool|null $secure + * @return \Illuminate\Http\RedirectResponse * @static - */ - public static function is(...$patterns) + */ public static function to($path, $status = 302, $headers = [], $secure = null) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->is(...$patterns); + /** @var \Illuminate\Routing\Redirector $instance */ + return $instance->to($path, $status, $headers, $secure); } /** - * Determine if the route name matches a given pattern. + * Create a new redirect response to an external URL (no validation). * - * @param mixed $patterns - * @return bool + * @param string $path + * @param int $status + * @param array $headers + * @return \Illuminate\Http\RedirectResponse * @static - */ - public static function routeIs(...$patterns) + */ public static function away($path, $status = 302, $headers = []) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->routeIs(...$patterns); + /** @var \Illuminate\Routing\Redirector $instance */ + return $instance->away($path, $status, $headers); } /** - * Determine if the current request URL and query string match a pattern. + * Create a new redirect response to the given HTTPS path. * - * @param mixed $patterns - * @return bool + * @param string $path + * @param int $status + * @param array $headers + * @return \Illuminate\Http\RedirectResponse * @static - */ - public static function fullUrlIs(...$patterns) + */ public static function secure($path, $status = 302, $headers = []) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->fullUrlIs(...$patterns); + /** @var \Illuminate\Routing\Redirector $instance */ + return $instance->secure($path, $status, $headers); } /** - * Get the host name. + * Create a new redirect response to a named route. * - * @return string + * @param string $route + * @param mixed $parameters + * @param int $status + * @param array $headers + * @return \Illuminate\Http\RedirectResponse * @static - */ - public static function host() + */ public static function route($route, $parameters = [], $status = 302, $headers = []) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->host(); + /** @var \Illuminate\Routing\Redirector $instance */ + return $instance->route($route, $parameters, $status, $headers); } /** - * Get the HTTP host being requested. + * Create a new redirect response to a signed named route. * - * @return string + * @param string $route + * @param mixed $parameters + * @param \DateTimeInterface|\DateInterval|int|null $expiration + * @param int $status + * @param array $headers + * @return \Illuminate\Http\RedirectResponse * @static - */ - public static function httpHost() + */ public static function signedRoute($route, $parameters = [], $expiration = null, $status = 302, $headers = []) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->httpHost(); + /** @var \Illuminate\Routing\Redirector $instance */ + return $instance->signedRoute($route, $parameters, $expiration, $status, $headers); } /** - * Get the scheme and HTTP host. + * Create a new redirect response to a signed named route. * - * @return string + * @param string $route + * @param \DateTimeInterface|\DateInterval|int|null $expiration + * @param mixed $parameters + * @param int $status + * @param array $headers + * @return \Illuminate\Http\RedirectResponse * @static - */ - public static function schemeAndHttpHost() + */ public static function temporarySignedRoute($route, $expiration, $parameters = [], $status = 302, $headers = []) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->schemeAndHttpHost(); + /** @var \Illuminate\Routing\Redirector $instance */ + return $instance->temporarySignedRoute($route, $expiration, $parameters, $status, $headers); } /** - * Determine if the request is the result of an AJAX call. + * Create a new redirect response to a controller action. * - * @return bool + * @param string|array $action + * @param mixed $parameters + * @param int $status + * @param array $headers + * @return \Illuminate\Http\RedirectResponse * @static - */ - public static function ajax() + */ public static function action($action, $parameters = [], $status = 302, $headers = []) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->ajax(); + /** @var \Illuminate\Routing\Redirector $instance */ + return $instance->action($action, $parameters, $status, $headers); } /** - * Determine if the request is the result of a PJAX call. + * Get the URL generator instance. * - * @return bool + * @return \Illuminate\Routing\UrlGenerator * @static - */ - public static function pjax() + */ public static function getUrlGenerator() { - /** @var \Illuminate\Http\Request $instance */ - return $instance->pjax(); + /** @var \Illuminate\Routing\Redirector $instance */ + return $instance->getUrlGenerator(); } /** - * Determine if the request is the result of a prefetch call. + * Set the active session store. * - * @return bool + * @param \Illuminate\Session\Store $session + * @return void * @static - */ - public static function prefetch() + */ public static function setSession($session) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->prefetch(); + /** @var \Illuminate\Routing\Redirector $instance */ + $instance->setSession($session); } /** - * Determine if the request is over HTTPS. + * Get the "intended" URL from the session. * - * @return bool + * @return string|null * @static - */ - public static function secure() + */ public static function getIntendedUrl() { - /** @var \Illuminate\Http\Request $instance */ - return $instance->secure(); + /** @var \Illuminate\Routing\Redirector $instance */ + return $instance->getIntendedUrl(); } /** - * Get the client IP address. + * Set the "intended" URL in the session. * - * @return string|null + * @param string $url + * @return \Illuminate\Routing\Redirector * @static - */ - public static function ip() + */ public static function setIntendedUrl($url) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->ip(); + /** @var \Illuminate\Routing\Redirector $instance */ + return $instance->setIntendedUrl($url); } /** - * Get the client IP addresses. + * Register a custom macro. * - * @return array + * @param string $name + * @param object|callable $macro + * @return void * @static - */ - public static function ips() + */ public static function macro($name, $macro) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->ips(); + \Illuminate\Routing\Redirector::macro($name, $macro); } /** - * Get the client user agent. + * Mix another object into the class. * - * @return string|null + * @param object $mixin + * @param bool $replace + * @return void + * @throws \ReflectionException * @static - */ - public static function userAgent() + */ public static function mixin($mixin, $replace = true) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->userAgent(); + \Illuminate\Routing\Redirector::mixin($mixin, $replace); } /** - * Merge new input into the current request's input array. + * Checks if macro is registered. * - * @param array $input - * @return \Illuminate\Http\Request + * @param string $name + * @return bool * @static - */ - public static function merge($input) + */ public static function hasMacro($name) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->merge($input); + return \Illuminate\Routing\Redirector::hasMacro($name); } /** - * Merge new input into the request's input, but only when that key is missing from the request. + * Flush the existing macros. * - * @param array $input - * @return \Illuminate\Http\Request + * @return void * @static - */ - public static function mergeIfMissing($input) + */ public static function flushMacros() { - /** @var \Illuminate\Http\Request $instance */ - return $instance->mergeIfMissing($input); + \Illuminate\Routing\Redirector::flushMacros(); } + } + /** + * + * + * @see \Illuminate\Http\Request + */ class Request { /** - * Replace the input for the current request. + * Create a new Illuminate HTTP request from server variables. * - * @param array $input - * @return \Illuminate\Http\Request + * @return static * @static - */ - public static function replace($input) + */ public static function capture() { - /** @var \Illuminate\Http\Request $instance */ - return $instance->replace($input); + return \Illuminate\Http\Request::capture(); } /** - * This method belongs to Symfony HttpFoundation and is not usually needed when using Laravel. - * - * Instead, you may use the "input" method. + * Return the Request instance. * - * @param string $key - * @param mixed $default - * @return mixed + * @return \Illuminate\Http\Request * @static - */ - public static function get($key, $default = null) + */ public static function instance() { /** @var \Illuminate\Http\Request $instance */ - return $instance->get($key, $default); + return $instance->instance(); } /** - * Get the JSON payload for the request. + * Get the request method. * - * @param string|null $key - * @param mixed $default - * @return \Symfony\Component\HttpFoundation\ParameterBag|mixed + * @return string * @static - */ - public static function json($key = null, $default = null) + */ public static function method() { /** @var \Illuminate\Http\Request $instance */ - return $instance->json($key, $default); + return $instance->method(); } /** - * Create a new request instance from the given Laravel request. + * Get the root URL for the application. * - * @param \Illuminate\Http\Request $from - * @param \Illuminate\Http\Request|null $to - * @return static + * @return string * @static - */ - public static function createFrom($from, $to = null) + */ public static function root() { - return \Illuminate\Http\Request::createFrom($from, $to); + /** @var \Illuminate\Http\Request $instance */ + return $instance->root(); } /** - * Create an Illuminate request from a Symfony instance. + * Get the URL (no query string) for the request. * - * @param \Symfony\Component\HttpFoundation\Request $request - * @return static + * @return string * @static - */ - public static function createFromBase($request) + */ public static function url() { - return \Illuminate\Http\Request::createFromBase($request); + /** @var \Illuminate\Http\Request $instance */ + return $instance->url(); } /** - * Clones a request and overrides some of its parameters. + * Get the full URL for the request. * - * @return static - * @param array|null $query The GET parameters - * @param array|null $request The POST parameters - * @param array|null $attributes The request attributes (parameters parsed from the PATH_INFO, ...) - * @param array|null $cookies The COOKIE parameters - * @param array|null $files The FILES parameters - * @param array|null $server The SERVER parameters + * @return string * @static - */ - public static function duplicate($query = null, $request = null, $attributes = null, $cookies = null, $files = null, $server = null) + */ public static function fullUrl() { /** @var \Illuminate\Http\Request $instance */ - return $instance->duplicate($query, $request, $attributes, $cookies, $files, $server); + return $instance->fullUrl(); } /** - * Whether the request contains a Session object. - * - * This method does not give any information about the state of the session object, - * like whether the session is started or not. It is just a way to check if this Request - * is associated with a Session instance. + * Get the full URL for the request with the added query string parameters. * - * @param bool $skipIfUninitialized When true, ignores factories injected by `setSessionFactory` + * @param array $query + * @return string * @static - */ - public static function hasSession($skipIfUninitialized = false) + */ public static function fullUrlWithQuery($query) { /** @var \Illuminate\Http\Request $instance */ - return $instance->hasSession($skipIfUninitialized); + return $instance->fullUrlWithQuery($query); } /** - * Gets the Session. + * Get the full URL for the request without the given query string parameters. * - * @throws SessionNotFoundException When session is not set properly + * @param array|string $keys + * @return string * @static - */ - public static function getSession() + */ public static function fullUrlWithoutQuery($keys) { /** @var \Illuminate\Http\Request $instance */ - return $instance->getSession(); + return $instance->fullUrlWithoutQuery($keys); } /** - * Get the session associated with the request. + * Get the current path info for the request. * - * @return \Illuminate\Contracts\Session\Session - * @throws \RuntimeException + * @return string * @static - */ - public static function session() + */ public static function path() { /** @var \Illuminate\Http\Request $instance */ - return $instance->session(); + return $instance->path(); } /** - * Set the session instance on the request. + * Get the current decoded path info for the request. * - * @param \Illuminate\Contracts\Session\Session $session - * @return void + * @return string * @static - */ - public static function setLaravelSession($session) + */ public static function decodedPath() { /** @var \Illuminate\Http\Request $instance */ - $instance->setLaravelSession($session); + return $instance->decodedPath(); } /** - * Set the locale for the request instance. + * Get a segment from the URI (1 based index). * - * @param string $locale - * @return void + * @param int $index + * @param string|null $default + * @return string|null * @static - */ - public static function setRequestLocale($locale) + */ public static function segment($index, $default = null) { /** @var \Illuminate\Http\Request $instance */ - $instance->setRequestLocale($locale); + return $instance->segment($index, $default); } /** - * Set the default locale for the request instance. + * Get all of the segments for the request path. * - * @param string $locale - * @return void + * @return array * @static - */ - public static function setDefaultRequestLocale($locale) + */ public static function segments() { /** @var \Illuminate\Http\Request $instance */ - $instance->setDefaultRequestLocale($locale); + return $instance->segments(); } /** - * Get the user making the request. + * Determine if the current request URI matches a pattern. * - * @param string|null $guard - * @return mixed + * @param mixed $patterns + * @return bool * @static - */ - public static function user($guard = null) + */ public static function is(...$patterns) { /** @var \Illuminate\Http\Request $instance */ - return $instance->user($guard); + return $instance->is(...$patterns); } /** - * Get the route handling the request. + * Determine if the route name matches a given pattern. * - * @param string|null $param - * @param mixed $default - * @return \Illuminate\Routing\Route|object|string|null + * @param mixed $patterns + * @return bool * @static - */ - public static function route($param = null, $default = null) + */ public static function routeIs(...$patterns) { /** @var \Illuminate\Http\Request $instance */ - return $instance->route($param, $default); + return $instance->routeIs(...$patterns); } /** - * Get a unique fingerprint for the request / route / IP address. + * Determine if the current request URL and query string match a pattern. * - * @return string - * @throws \RuntimeException + * @param mixed $patterns + * @return bool * @static - */ - public static function fingerprint() + */ public static function fullUrlIs(...$patterns) { /** @var \Illuminate\Http\Request $instance */ - return $instance->fingerprint(); + return $instance->fullUrlIs(...$patterns); } /** - * Set the JSON payload for the request. + * Get the host name. * - * @param \Symfony\Component\HttpFoundation\ParameterBag $json - * @return \Illuminate\Http\Request + * @return string * @static - */ - public static function setJson($json) + */ public static function host() { /** @var \Illuminate\Http\Request $instance */ - return $instance->setJson($json); + return $instance->host(); } /** - * Get the user resolver callback. + * Get the HTTP host being requested. * - * @return \Closure + * @return string * @static - */ - public static function getUserResolver() + */ public static function httpHost() { /** @var \Illuminate\Http\Request $instance */ - return $instance->getUserResolver(); + return $instance->httpHost(); } /** - * Set the user resolver callback. + * Get the scheme and HTTP host. * - * @param \Closure $callback - * @return \Illuminate\Http\Request + * @return string * @static - */ - public static function setUserResolver($callback) + */ public static function schemeAndHttpHost() { /** @var \Illuminate\Http\Request $instance */ - return $instance->setUserResolver($callback); + return $instance->schemeAndHttpHost(); } /** - * Get the route resolver callback. + * Determine if the request is the result of an AJAX call. * - * @return \Closure + * @return bool * @static - */ - public static function getRouteResolver() + */ public static function ajax() { /** @var \Illuminate\Http\Request $instance */ - return $instance->getRouteResolver(); + return $instance->ajax(); } /** - * Set the route resolver callback. + * Determine if the request is the result of a PJAX call. * - * @param \Closure $callback - * @return \Illuminate\Http\Request + * @return bool * @static - */ - public static function setRouteResolver($callback) + */ public static function pjax() { /** @var \Illuminate\Http\Request $instance */ - return $instance->setRouteResolver($callback); + return $instance->pjax(); } /** - * Get all of the input and files for the request. + * Determine if the request is the result of a prefetch call. * - * @return array + * @return bool * @static - */ - public static function toArray() + */ public static function prefetch() { /** @var \Illuminate\Http\Request $instance */ - return $instance->toArray(); + return $instance->prefetch(); } /** - * Determine if the given offset exists. + * Determine if the request is over HTTPS. * - * @param string $offset * @return bool * @static - */ - public static function offsetExists($offset) + */ public static function secure() { /** @var \Illuminate\Http\Request $instance */ - return $instance->offsetExists($offset); + return $instance->secure(); } /** - * Get the value at the given offset. + * Get the client IP address. * - * @param string $offset - * @return mixed + * @return string|null * @static - */ - public static function offsetGet($offset) + */ public static function ip() { /** @var \Illuminate\Http\Request $instance */ - return $instance->offsetGet($offset); + return $instance->ip(); } /** - * Set the value at the given offset. + * Get the client IP addresses. * - * @param string $offset - * @param mixed $value - * @return void + * @return array * @static - */ - public static function offsetSet($offset, $value) + */ public static function ips() { /** @var \Illuminate\Http\Request $instance */ - $instance->offsetSet($offset, $value); + return $instance->ips(); } /** - * Remove the value at the given offset. + * Get the client user agent. * - * @param string $offset - * @return void + * @return string|null * @static - */ - public static function offsetUnset($offset) + */ public static function userAgent() { /** @var \Illuminate\Http\Request $instance */ - $instance->offsetUnset($offset); + return $instance->userAgent(); } /** - * Sets the parameters for this request. - * - * This method also re-initializes all properties. + * Merge new input into the current request's input array. * - * @param array $query The GET parameters - * @param array $request The POST parameters - * @param array $attributes The request attributes (parameters parsed from the PATH_INFO, ...) - * @param array $cookies The COOKIE parameters - * @param array $files The FILES parameters - * @param array $server The SERVER parameters - * @param string|resource|null $content The raw body data - * @return void + * @param array $input + * @return \Illuminate\Http\Request * @static - */ - public static function initialize($query = [], $request = [], $attributes = [], $cookies = [], $files = [], $server = [], $content = null) - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function merge($input) + { /** @var \Illuminate\Http\Request $instance */ - $instance->initialize($query, $request, $attributes, $cookies, $files, $server, $content); + return $instance->merge($input); } /** - * Creates a new request with values from PHP's super globals. + * Merge new input into the request's input, but only when that key is missing from the request. * + * @param array $input + * @return \Illuminate\Http\Request * @static - */ - public static function createFromGlobals() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - return \Illuminate\Http\Request::createFromGlobals(); + */ public static function mergeIfMissing($input) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->mergeIfMissing($input); } /** - * Creates a Request based on a given URI and configuration. - * - * The information contained in the URI always take precedence - * over the other information (server and parameters). + * Replace the input for the current request. * - * @param string $uri The URI - * @param string $method The HTTP method - * @param array $parameters The query (GET) or request (POST) parameters - * @param array $cookies The request cookies ($_COOKIE) - * @param array $files The request files ($_FILES) - * @param array $server The server parameters ($_SERVER) - * @param string|resource|null $content The raw body data + * @param array $input + * @return \Illuminate\Http\Request * @static - */ - public static function create($uri, $method = 'GET', $parameters = [], $cookies = [], $files = [], $server = [], $content = null) - { //Method inherited from \Symfony\Component\HttpFoundation\Request - return \Illuminate\Http\Request::create($uri, $method, $parameters, $cookies, $files, $server, $content); + */ public static function replace($input) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->replace($input); } /** - * Sets a callable able to create a Request instance. + * This method belongs to Symfony HttpFoundation and is not usually needed when using Laravel. * - * This is mainly useful when you need to override the Request class - * to keep BC with an existing system. It should not be used for any - * other purpose. + * Instead, you may use the "input" method. * - * @return void + * @param string $key + * @param mixed $default + * @return mixed * @static - */ - public static function setFactory($callable) - { //Method inherited from \Symfony\Component\HttpFoundation\Request - \Illuminate\Http\Request::setFactory($callable); + */ public static function get($key, $default = null) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->get($key, $default); } /** - * Overrides the PHP global variables according to this request instance. - * - * It overrides $_GET, $_POST, $_REQUEST, $_SERVER, $_COOKIE. - * $_FILES is never overridden, see rfc1867 + * Get the JSON payload for the request. * - * @return void + * @param string|null $key + * @param mixed $default + * @return \Symfony\Component\HttpFoundation\InputBag|mixed * @static - */ - public static function overrideGlobals() - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function json($key = null, $default = null) + { /** @var \Illuminate\Http\Request $instance */ - $instance->overrideGlobals(); + return $instance->json($key, $default); } /** - * Sets a list of trusted proxies. - * - * You should only list the reverse proxies that you manage directly. + * Create a new request instance from the given Laravel request. * - * @param array $proxies A list of trusted proxies, the string 'REMOTE_ADDR' will be replaced with $_SERVER['REMOTE_ADDR'] - * @param int $trustedHeaderSet A bit field of Request::HEADER_*, to set which headers to trust from your proxies - * @return void + * @param \Illuminate\Http\Request $from + * @param \Illuminate\Http\Request|null $to + * @return static * @static - */ - public static function setTrustedProxies($proxies, $trustedHeaderSet) - { //Method inherited from \Symfony\Component\HttpFoundation\Request - \Illuminate\Http\Request::setTrustedProxies($proxies, $trustedHeaderSet); + */ public static function createFrom($from, $to = null) + { + return \Illuminate\Http\Request::createFrom($from, $to); } /** - * Gets the list of trusted proxies. + * Create an Illuminate request from a Symfony instance. * - * @return string[] + * @param \Symfony\Component\HttpFoundation\Request $request + * @return static * @static - */ - public static function getTrustedProxies() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - return \Illuminate\Http\Request::getTrustedProxies(); + */ public static function createFromBase($request) + { + return \Illuminate\Http\Request::createFromBase($request); } /** - * Gets the set of trusted headers from trusted proxies. + * Clones a request and overrides some of its parameters. * - * @return int A bit field of Request::HEADER_* that defines which headers are trusted from your proxies + * @return static + * @param array|null $query The GET parameters + * @param array|null $request The POST parameters + * @param array|null $attributes The request attributes (parameters parsed from the PATH_INFO, ...) + * @param array|null $cookies The COOKIE parameters + * @param array|null $files The FILES parameters + * @param array|null $server The SERVER parameters * @static - */ - public static function getTrustedHeaderSet() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - return \Illuminate\Http\Request::getTrustedHeaderSet(); + */ public static function duplicate($query = null, $request = null, $attributes = null, $cookies = null, $files = null, $server = null) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->duplicate($query, $request, $attributes, $cookies, $files, $server); } /** - * Sets a list of trusted host patterns. + * Whether the request contains a Session object. * - * You should only list the hosts you manage using regexs. + * This method does not give any information about the state of the session object, + * like whether the session is started or not. It is just a way to check if this Request + * is associated with a Session instance. * - * @param array $hostPatterns A list of trusted host patterns - * @return void + * @param bool $skipIfUninitialized When true, ignores factories injected by `setSessionFactory` * @static - */ - public static function setTrustedHosts($hostPatterns) - { //Method inherited from \Symfony\Component\HttpFoundation\Request - \Illuminate\Http\Request::setTrustedHosts($hostPatterns); + */ public static function hasSession($skipIfUninitialized = false) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->hasSession($skipIfUninitialized); } /** - * Gets the list of trusted host patterns. + * Gets the Session. * - * @return string[] + * @throws SessionNotFoundException When session is not set properly * @static - */ - public static function getTrustedHosts() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - return \Illuminate\Http\Request::getTrustedHosts(); + */ public static function getSession() + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->getSession(); } /** - * Normalizes a query string. - * - * It builds a normalized query string, where keys/value pairs are alphabetized, - * have consistent escaping and unneeded delimiters are removed. + * Get the session associated with the request. * + * @return \Illuminate\Contracts\Session\Session + * @throws \RuntimeException * @static - */ - public static function normalizeQueryString($qs) - { //Method inherited from \Symfony\Component\HttpFoundation\Request - return \Illuminate\Http\Request::normalizeQueryString($qs); + */ public static function session() + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->session(); } /** - * Enables support for the _method request parameter to determine the intended HTTP method. - * - * Be warned that enabling this feature might lead to CSRF issues in your code. - * Check that you are using CSRF tokens when required. - * If the HTTP method parameter override is enabled, an html-form with method "POST" can be altered - * and used to send a "PUT" or "DELETE" request via the _method request parameter. - * If these methods are not protected against CSRF, this presents a possible vulnerability. - * - * The HTTP method can only be overridden when the real HTTP method is POST. + * Set the session instance on the request. * + * @param \Illuminate\Contracts\Session\Session $session * @return void * @static - */ - public static function enableHttpMethodParameterOverride() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - \Illuminate\Http\Request::enableHttpMethodParameterOverride(); + */ public static function setLaravelSession($session) + { + /** @var \Illuminate\Http\Request $instance */ + $instance->setLaravelSession($session); } /** - * Checks whether support for the _method request parameter is enabled. + * Set the locale for the request instance. * + * @param string $locale + * @return void * @static - */ - public static function getHttpMethodParameterOverride() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - return \Illuminate\Http\Request::getHttpMethodParameterOverride(); + */ public static function setRequestLocale($locale) + { + /** @var \Illuminate\Http\Request $instance */ + $instance->setRequestLocale($locale); } /** - * Whether the request contains a Session which was started in one of the - * previous requests. + * Set the default locale for the request instance. * + * @param string $locale + * @return void * @static - */ - public static function hasPreviousSession() - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function setDefaultRequestLocale($locale) + { /** @var \Illuminate\Http\Request $instance */ - return $instance->hasPreviousSession(); + $instance->setDefaultRequestLocale($locale); } /** - * + * Get the user making the request. * - * @return void + * @param string|null $guard + * @return mixed * @static - */ - public static function setSession($session) - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function user($guard = null) + { /** @var \Illuminate\Http\Request $instance */ - $instance->setSession($session); + return $instance->user($guard); } /** - * + * Get the route handling the request. * - * @internal - * @param \Symfony\Component\HttpFoundation\callable(): SessionInterface $factory + * @param string|null $param + * @param mixed $default + * @return \Illuminate\Routing\Route|object|string|null * @static - */ - public static function setSessionFactory($factory) - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function route($param = null, $default = null) + { /** @var \Illuminate\Http\Request $instance */ - return $instance->setSessionFactory($factory); + return $instance->route($param, $default); } /** - * Returns the client IP addresses. - * - * In the returned array the most trusted IP address is first, and the - * least trusted one last. The "real" client IP address is the last one, - * but this is also the least trusted one. Trusted proxies are stripped. - * - * Use this method carefully; you should use getClientIp() instead. + * Get a unique fingerprint for the request / route / IP address. * - * @see getClientIp() + * @return string + * @throws \RuntimeException * @static - */ - public static function getClientIps() - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function fingerprint() + { /** @var \Illuminate\Http\Request $instance */ - return $instance->getClientIps(); + return $instance->fingerprint(); } /** - * Returns the client IP address. - * - * This method can read the client IP address from the "X-Forwarded-For" header - * when trusted proxies were set via "setTrustedProxies()". The "X-Forwarded-For" - * header value is a comma+space separated list of IP addresses, the left-most - * being the original client, and each successive proxy that passed the request - * adding the IP address where it received the request from. - * - * If your reverse proxy uses a different header name than "X-Forwarded-For", - * ("Client-Ip" for instance), configure it via the $trustedHeaderSet - * argument of the Request::setTrustedProxies() method instead. + * Set the JSON payload for the request. * - * @see getClientIps() - * @see https://wikipedia.org/wiki/X-Forwarded-For + * @param \Symfony\Component\HttpFoundation\InputBag $json + * @return \Illuminate\Http\Request * @static - */ - public static function getClientIp() - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function setJson($json) + { /** @var \Illuminate\Http\Request $instance */ - return $instance->getClientIp(); + return $instance->setJson($json); } /** - * Returns current script name. + * Get the user resolver callback. * + * @return \Closure * @static - */ - public static function getScriptName() - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function getUserResolver() + { /** @var \Illuminate\Http\Request $instance */ - return $instance->getScriptName(); + return $instance->getUserResolver(); } /** - * Returns the path being requested relative to the executed script. - * - * The path info always starts with a /. - * - * Suppose this request is instantiated from /mysite on localhost: - * - * * http://localhost/mysite returns an empty string - * * http://localhost/mysite/about returns '/about' - * * http://localhost/mysite/enco%20ded returns '/enco%20ded' - * * http://localhost/mysite/about?var=1 returns '/about' + * Set the user resolver callback. * - * @return string The raw path (i.e. not urldecoded) + * @param \Closure $callback + * @return \Illuminate\Http\Request * @static - */ - public static function getPathInfo() - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function setUserResolver($callback) + { /** @var \Illuminate\Http\Request $instance */ - return $instance->getPathInfo(); + return $instance->setUserResolver($callback); } /** - * Returns the root path from which this request is executed. - * - * Suppose that an index.php file instantiates this request object: - * - * * http://localhost/index.php returns an empty string - * * http://localhost/index.php/page returns an empty string - * * http://localhost/web/index.php returns '/web' - * * http://localhost/we%20b/index.php returns '/we%20b' + * Get the route resolver callback. * - * @return string The raw path (i.e. not urldecoded) + * @return \Closure * @static - */ - public static function getBasePath() - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function getRouteResolver() + { /** @var \Illuminate\Http\Request $instance */ - return $instance->getBasePath(); + return $instance->getRouteResolver(); } /** - * Returns the root URL from which this request is executed. - * - * The base URL never ends with a /. - * - * This is similar to getBasePath(), except that it also includes the - * script filename (e.g. index.php) if one exists. + * Set the route resolver callback. * - * @return string The raw URL (i.e. not urldecoded) + * @param \Closure $callback + * @return \Illuminate\Http\Request * @static - */ - public static function getBaseUrl() - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function setRouteResolver($callback) + { /** @var \Illuminate\Http\Request $instance */ - return $instance->getBaseUrl(); + return $instance->setRouteResolver($callback); } /** - * Gets the request's scheme. + * Get all of the input and files for the request. * + * @return array * @static - */ - public static function getScheme() - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function toArray() + { /** @var \Illuminate\Http\Request $instance */ - return $instance->getScheme(); + return $instance->toArray(); } /** - * Returns the port on which the request is made. - * - * This method can read the client port from the "X-Forwarded-Port" header - * when trusted proxies were set via "setTrustedProxies()". - * - * The "X-Forwarded-Port" header must contain the client port. + * Determine if the given offset exists. * - * @return int|string|null Can be a string if fetched from the server bag + * @param string $offset + * @return bool * @static - */ - public static function getPort() - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function offsetExists($offset) + { /** @var \Illuminate\Http\Request $instance */ - return $instance->getPort(); + return $instance->offsetExists($offset); } /** - * Returns the user. + * Get the value at the given offset. * + * @param string $offset + * @return mixed * @static - */ - public static function getUser() - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function offsetGet($offset) + { /** @var \Illuminate\Http\Request $instance */ - return $instance->getUser(); + return $instance->offsetGet($offset); } /** - * Returns the password. + * Set the value at the given offset. * + * @param string $offset + * @param mixed $value + * @return void * @static - */ - public static function getPassword() - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function offsetSet($offset, $value) + { /** @var \Illuminate\Http\Request $instance */ - return $instance->getPassword(); + $instance->offsetSet($offset, $value); } /** - * Gets the user info. + * Remove the value at the given offset. * - * @return string|null A user name if any and, optionally, scheme-specific information about how to gain authorization to access the server + * @param string $offset + * @return void * @static - */ - public static function getUserInfo() - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function offsetUnset($offset) + { /** @var \Illuminate\Http\Request $instance */ - return $instance->getUserInfo(); + $instance->offsetUnset($offset); } /** - * Returns the HTTP host being requested. + * Sets the parameters for this request. * - * The port name will be appended to the host if it's non-standard. + * This method also re-initializes all properties. * + * @param array $query The GET parameters + * @param array $request The POST parameters + * @param array $attributes The request attributes (parameters parsed from the PATH_INFO, ...) + * @param array $cookies The COOKIE parameters + * @param array $files The FILES parameters + * @param array $server The SERVER parameters + * @param string|resource|null $content The raw body data + * @return void * @static - */ - public static function getHttpHost() + */ public static function initialize($query = [], $request = [], $attributes = [], $cookies = [], $files = [], $server = [], $content = null) { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->getHttpHost(); + $instance->initialize($query, $request, $attributes, $cookies, $files, $server, $content); } /** - * Returns the requested URI (path and query string). + * Creates a new request with values from PHP's super globals. * - * @return string The raw URI (i.e. not URI decoded) * @static - */ - public static function getRequestUri() + */ public static function createFromGlobals() { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->getRequestUri(); + return \Illuminate\Http\Request::createFromGlobals(); } /** - * Gets the scheme and HTTP host. + * Creates a Request based on a given URI and configuration. * - * If the URL was called with basic authentication, the user - * and the password are not added to the generated string. + * The information contained in the URI always take precedence + * over the other information (server and parameters). * + * @param string $uri The URI + * @param string $method The HTTP method + * @param array $parameters The query (GET) or request (POST) parameters + * @param array $cookies The request cookies ($_COOKIE) + * @param array $files The request files ($_FILES) + * @param array $server The server parameters ($_SERVER) + * @param string|resource|null $content The raw body data * @static - */ - public static function getSchemeAndHttpHost() + */ public static function create($uri, $method = 'GET', $parameters = [], $cookies = [], $files = [], $server = [], $content = null) { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->getSchemeAndHttpHost(); + return \Illuminate\Http\Request::create($uri, $method, $parameters, $cookies, $files, $server, $content); } /** - * Generates a normalized URI (URL) for the Request. - * - * @see getQueryString() - * @static - */ - public static function getUri() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->getUri(); - } - /** - * Generates a normalized URI for the given path. + * Sets a callable able to create a Request instance. + * + * This is mainly useful when you need to override the Request class + * to keep BC with an existing system. It should not be used for any + * other purpose. * - * @param string $path A path to use instead of the current one + * @return void * @static - */ - public static function getUriForPath($path) + */ public static function setFactory($callable) { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->getUriForPath($path); + \Illuminate\Http\Request::setFactory($callable); } /** - * Returns the path as relative reference from the current Request path. - * - * Only the URIs path component (no schema, host etc.) is relevant and must be given. - * Both paths must be absolute and not contain relative parts. - * Relative URLs from one resource to another are useful when generating self-contained downloadable document archives. - * Furthermore, they can be used to reduce the link size in documents. + * Overrides the PHP global variables according to this request instance. * - * Example target paths, given a base path of "/a/b/c/d": - * - "/a/b/c/d" -> "" - * - "/a/b/c/" -> "./" - * - "/a/b/" -> "../" - * - "/a/b/c/other" -> "other" - * - "/a/x/y" -> "../../x/y" + * It overrides $_GET, $_POST, $_REQUEST, $_SERVER, $_COOKIE. + * $_FILES is never overridden, see rfc1867 * + * @return void * @static - */ - public static function getRelativeUriForPath($path) + */ public static function overrideGlobals() { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->getRelativeUriForPath($path); + $instance->overrideGlobals(); } /** - * Generates the normalized query string for the Request. + * Sets a list of trusted proxies. * - * It builds a normalized query string, where keys/value pairs are alphabetized - * and have consistent escaping. + * You should only list the reverse proxies that you manage directly. * + * @param array $proxies A list of trusted proxies, the string 'REMOTE_ADDR' will be replaced with $_SERVER['REMOTE_ADDR'] + * @param int $trustedHeaderSet A bit field of Request::HEADER_*, to set which headers to trust from your proxies + * @return void * @static - */ - public static function getQueryString() + */ public static function setTrustedProxies($proxies, $trustedHeaderSet) { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->getQueryString(); + \Illuminate\Http\Request::setTrustedProxies($proxies, $trustedHeaderSet); } /** - * Checks whether the request is secure or not. - * - * This method can read the client protocol from the "X-Forwarded-Proto" header - * when trusted proxies were set via "setTrustedProxies()". - * - * The "X-Forwarded-Proto" header must contain the protocol: "https" or "http". + * Gets the list of trusted proxies. * + * @return string[] * @static - */ - public static function isSecure() + */ public static function getTrustedProxies() { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->isSecure(); + return \Illuminate\Http\Request::getTrustedProxies(); } /** - * Returns the host name. - * - * This method can read the client host name from the "X-Forwarded-Host" header - * when trusted proxies were set via "setTrustedProxies()". - * - * The "X-Forwarded-Host" header must contain the client host name. + * Gets the set of trusted headers from trusted proxies. * - * @throws SuspiciousOperationException when the host name is invalid or not trusted + * @return int A bit field of Request::HEADER_* that defines which headers are trusted from your proxies * @static - */ - public static function getHost() + */ public static function getTrustedHeaderSet() { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->getHost(); + return \Illuminate\Http\Request::getTrustedHeaderSet(); } /** - * Sets the request method. + * Sets a list of trusted host patterns. + * + * You should only list the hosts you manage using regexs. * + * @param array $hostPatterns A list of trusted host patterns * @return void * @static - */ - public static function setMethod($method) + */ public static function setTrustedHosts($hostPatterns) { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - $instance->setMethod($method); + \Illuminate\Http\Request::setTrustedHosts($hostPatterns); } /** - * Gets the request "intended" method. - * - * If the X-HTTP-Method-Override header is set, and if the method is a POST, - * then it is used to determine the "real" intended HTTP method. - * - * The _method request parameter can also be used to determine the HTTP method, - * but only if enableHttpMethodParameterOverride() has been called. - * - * The method is always an uppercased string. + * Gets the list of trusted host patterns. * - * @see getRealMethod() + * @return string[] * @static - */ - public static function getMethod() + */ public static function getTrustedHosts() { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->getMethod(); + return \Illuminate\Http\Request::getTrustedHosts(); } /** - * Gets the "real" request method. + * Normalizes a query string. + * + * It builds a normalized query string, where keys/value pairs are alphabetized, + * have consistent escaping and unneeded delimiters are removed. * - * @see getMethod() * @static - */ - public static function getRealMethod() + */ public static function normalizeQueryString($qs) { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->getRealMethod(); + return \Illuminate\Http\Request::normalizeQueryString($qs); } /** - * Gets the mime type associated with the format. + * Enables support for the _method request parameter to determine the intended HTTP method. + * + * Be warned that enabling this feature might lead to CSRF issues in your code. + * Check that you are using CSRF tokens when required. + * If the HTTP method parameter override is enabled, an html-form with method "POST" can be altered + * and used to send a "PUT" or "DELETE" request via the _method request parameter. + * If these methods are not protected against CSRF, this presents a possible vulnerability. + * + * The HTTP method can only be overridden when the real HTTP method is POST. * + * @return void * @static - */ - public static function getMimeType($format) + */ public static function enableHttpMethodParameterOverride() { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->getMimeType($format); + \Illuminate\Http\Request::enableHttpMethodParameterOverride(); } /** - * Gets the mime types associated with the format. + * Checks whether support for the _method request parameter is enabled. * - * @return string[] * @static - */ - public static function getMimeTypes($format) + */ public static function getHttpMethodParameterOverride() { //Method inherited from \Symfony\Component\HttpFoundation\Request - return \Illuminate\Http\Request::getMimeTypes($format); + return \Illuminate\Http\Request::getHttpMethodParameterOverride(); } /** - * Gets the format associated with the mime type. + * Whether the request contains a Session which was started in one of the + * previous requests. * * @static - */ - public static function getFormat($mimeType) + */ public static function hasPreviousSession() { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->getFormat($mimeType); + return $instance->hasPreviousSession(); } /** - * Associates a format with mime types. + * * - * @param string|string[] $mimeTypes The associated mime types (the preferred one must be the first as it will be used as the content type) * @return void * @static - */ - public static function setFormat($format, $mimeTypes) + */ public static function setSession($session) { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - $instance->setFormat($format, $mimeTypes); + $instance->setSession($session); } /** - * Gets the request format. - * - * Here is the process to determine the format: * - * * format defined by the user (with setRequestFormat()) - * * _format request attribute - * * $default * - * @see getPreferredFormat + * @internal + * @param \Symfony\Component\HttpFoundation\callable(): SessionInterface $factory * @static - */ - public static function getRequestFormat($default = 'html') + */ public static function setSessionFactory($factory) { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->getRequestFormat($default); + return $instance->setSessionFactory($factory); } /** - * Sets the request format. + * Returns the client IP addresses. + * + * In the returned array the most trusted IP address is first, and the + * least trusted one last. The "real" client IP address is the last one, + * but this is also the least trusted one. Trusted proxies are stripped. + * + * Use this method carefully; you should use getClientIp() instead. * - * @return void + * @see getClientIp() * @static - */ - public static function setRequestFormat($format) + */ public static function getClientIps() { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - $instance->setRequestFormat($format); + return $instance->getClientIps(); } /** - * Gets the usual name of the format associated with the request's media type (provided in the Content-Type header). + * Returns the client IP address. + * + * This method can read the client IP address from the "X-Forwarded-For" header + * when trusted proxies were set via "setTrustedProxies()". The "X-Forwarded-For" + * header value is a comma+space separated list of IP addresses, the left-most + * being the original client, and each successive proxy that passed the request + * adding the IP address where it received the request from. + * + * If your reverse proxy uses a different header name than "X-Forwarded-For", + * ("Client-Ip" for instance), configure it via the $trustedHeaderSet + * argument of the Request::setTrustedProxies() method instead. * - * @deprecated since Symfony 6.2, use getContentTypeFormat() instead + * @see getClientIps() + * @see https://wikipedia.org/wiki/X-Forwarded-For * @static - */ - public static function getContentType() + */ public static function getClientIp() { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->getContentType(); + return $instance->getClientIp(); } /** - * Gets the usual name of the format associated with the request's media type (provided in the Content-Type header). + * Returns current script name. * - * @see Request::$formats * @static - */ - public static function getContentTypeFormat() + */ public static function getScriptName() { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->getContentTypeFormat(); + return $instance->getScriptName(); } /** - * Sets the default locale. + * Returns the path being requested relative to the executed script. + * + * The path info always starts with a /. + * + * Suppose this request is instantiated from /mysite on localhost: + * + * * http://localhost/mysite returns an empty string + * * http://localhost/mysite/about returns '/about' + * * http://localhost/mysite/enco%20ded returns '/enco%20ded' + * * http://localhost/mysite/about?var=1 returns '/about' * - * @return void + * @return string The raw path (i.e. not urldecoded) * @static - */ - public static function setDefaultLocale($locale) + */ public static function getPathInfo() { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - $instance->setDefaultLocale($locale); + return $instance->getPathInfo(); } /** - * Get the default locale. + * Returns the root path from which this request is executed. + * + * Suppose that an index.php file instantiates this request object: + * + * * http://localhost/index.php returns an empty string + * * http://localhost/index.php/page returns an empty string + * * http://localhost/web/index.php returns '/web' + * * http://localhost/we%20b/index.php returns '/we%20b' * + * @return string The raw path (i.e. not urldecoded) * @static - */ - public static function getDefaultLocale() + */ public static function getBasePath() { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->getDefaultLocale(); + return $instance->getBasePath(); } /** - * Sets the locale. + * Returns the root URL from which this request is executed. + * + * The base URL never ends with a /. + * + * This is similar to getBasePath(), except that it also includes the + * script filename (e.g. index.php) if one exists. * - * @return void + * @return string The raw URL (i.e. not urldecoded) * @static - */ - public static function setLocale($locale) + */ public static function getBaseUrl() { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - $instance->setLocale($locale); + return $instance->getBaseUrl(); } /** - * Get the locale. + * Gets the request's scheme. * * @static - */ - public static function getLocale() + */ public static function getScheme() { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->getLocale(); + return $instance->getScheme(); } /** - * Checks if the request method is of specified type. + * Returns the port on which the request is made. + * + * This method can read the client port from the "X-Forwarded-Port" header + * when trusted proxies were set via "setTrustedProxies()". + * + * The "X-Forwarded-Port" header must contain the client port. * - * @param string $method Uppercase request method (GET, POST etc) + * @return int|string|null Can be a string if fetched from the server bag * @static - */ - public static function isMethod($method) + */ public static function getPort() { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->isMethod($method); + return $instance->getPort(); } /** - * Checks whether or not the method is safe. + * Returns the user. * - * @see https://tools.ietf.org/html/rfc7231#section-4.2.1 * @static - */ - public static function isMethodSafe() + */ public static function getUser() { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->isMethodSafe(); + return $instance->getUser(); } /** - * Checks whether or not the method is idempotent. + * Returns the password. * * @static - */ - public static function isMethodIdempotent() + */ public static function getPassword() { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->isMethodIdempotent(); + return $instance->getPassword(); } /** - * Checks whether the method is cacheable or not. + * Gets the user info. * - * @see https://tools.ietf.org/html/rfc7231#section-4.2.3 + * @return string|null A user name if any and, optionally, scheme-specific information about how to gain authorization to access the server * @static - */ - public static function isMethodCacheable() + */ public static function getUserInfo() { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->isMethodCacheable(); + return $instance->getUserInfo(); } /** - * Returns the protocol version. + * Returns the HTTP host being requested. * - * If the application is behind a proxy, the protocol version used in the - * requests between the client and the proxy and between the proxy and the - * server might be different. This returns the former (from the "Via" header) - * if the proxy is trusted (see "setTrustedProxies()"), otherwise it returns - * the latter (from the "SERVER_PROTOCOL" server parameter). + * The port name will be appended to the host if it's non-standard. * * @static - */ - public static function getProtocolVersion() + */ public static function getHttpHost() { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->getProtocolVersion(); + return $instance->getHttpHost(); } /** - * Returns the request body content. + * Returns the requested URI (path and query string). * - * @param bool $asResource If true, a resource will be returned - * @return string|resource - * @psalm-return ($asResource is true ? resource : string) + * @return string The raw URI (i.e. not URI decoded) * @static - */ - public static function getContent($asResource = false) + */ public static function getRequestUri() { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->getContent($asResource); + return $instance->getRequestUri(); } /** - * Gets the decoded form or json request body. + * Gets the scheme and HTTP host. + * + * If the URL was called with basic authentication, the user + * and the password are not added to the generated string. * - * @throws JsonException When the body cannot be decoded to an array * @static - */ - public static function getPayload() + */ public static function getSchemeAndHttpHost() { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->getPayload(); + return $instance->getSchemeAndHttpHost(); } /** - * Gets the Etags. + * Generates a normalized URI (URL) for the Request. * + * @see getQueryString() * @static - */ - public static function getETags() + */ public static function getUri() { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->getETags(); + return $instance->getUri(); } /** - * + * Generates a normalized URI for the given path. * + * @param string $path A path to use instead of the current one * @static - */ - public static function isNoCache() + */ public static function getUriForPath($path) { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->isNoCache(); + return $instance->getUriForPath($path); } /** - * Gets the preferred format for the response by inspecting, in the following order: - * * the request format set using setRequestFormat; - * * the values of the Accept HTTP header. + * Returns the path as relative reference from the current Request path. * - * Note that if you use this method, you should send the "Vary: Accept" header - * in the response to prevent any issues with intermediary HTTP caches. + * Only the URIs path component (no schema, host etc.) is relevant and must be given. + * Both paths must be absolute and not contain relative parts. + * Relative URLs from one resource to another are useful when generating self-contained downloadable document archives. + * Furthermore, they can be used to reduce the link size in documents. + * + * Example target paths, given a base path of "/a/b/c/d": + * - "/a/b/c/d" -> "" + * - "/a/b/c/" -> "./" + * - "/a/b/" -> "../" + * - "/a/b/c/other" -> "other" + * - "/a/x/y" -> "../../x/y" * * @static - */ - public static function getPreferredFormat($default = 'html') + */ public static function getRelativeUriForPath($path) { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->getPreferredFormat($default); + return $instance->getRelativeUriForPath($path); } /** - * Returns the preferred language. + * Generates the normalized query string for the Request. + * + * It builds a normalized query string, where keys/value pairs are alphabetized + * and have consistent escaping. * - * @param string[] $locales An array of ordered available locales * @static - */ - public static function getPreferredLanguage($locales = null) + */ public static function getQueryString() { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->getPreferredLanguage($locales); + return $instance->getQueryString(); } /** - * Gets a list of languages acceptable by the client browser ordered in the user browser preferences. + * Checks whether the request is secure or not. + * + * This method can read the client protocol from the "X-Forwarded-Proto" header + * when trusted proxies were set via "setTrustedProxies()". + * + * The "X-Forwarded-Proto" header must contain the protocol: "https" or "http". * - * @return string[] * @static - */ - public static function getLanguages() + */ public static function isSecure() { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->getLanguages(); + return $instance->isSecure(); } /** - * Gets a list of charsets acceptable by the client browser in preferable order. + * Returns the host name. + * + * This method can read the client host name from the "X-Forwarded-Host" header + * when trusted proxies were set via "setTrustedProxies()". + * + * The "X-Forwarded-Host" header must contain the client host name. * - * @return string[] + * @throws SuspiciousOperationException when the host name is invalid or not trusted * @static - */ - public static function getCharsets() + */ public static function getHost() { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->getCharsets(); + return $instance->getHost(); } /** - * Gets a list of encodings acceptable by the client browser in preferable order. + * Sets the request method. * - * @return string[] + * @return void * @static - */ - public static function getEncodings() + */ public static function setMethod($method) { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->getEncodings(); + $instance->setMethod($method); } /** - * Gets a list of content types acceptable by the client browser in preferable order. + * Gets the request "intended" method. + * + * If the X-HTTP-Method-Override header is set, and if the method is a POST, + * then it is used to determine the "real" intended HTTP method. + * + * The _method request parameter can also be used to determine the HTTP method, + * but only if enableHttpMethodParameterOverride() has been called. + * + * The method is always an uppercased string. * - * @return string[] + * @see getRealMethod() * @static - */ - public static function getAcceptableContentTypes() + */ public static function getMethod() { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->getAcceptableContentTypes(); + return $instance->getMethod(); } /** - * Returns true if the request is an XMLHttpRequest. - * - * It works if your JavaScript library sets an X-Requested-With HTTP header. - * It is known to work with common JavaScript frameworks: + * Gets the "real" request method. * - * @see https://wikipedia.org/wiki/List_of_Ajax_frameworks#JavaScript + * @see getMethod() * @static - */ - public static function isXmlHttpRequest() + */ public static function getRealMethod() { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->isXmlHttpRequest(); + return $instance->getRealMethod(); } /** - * Checks whether the client browser prefers safe content or not according to RFC8674. + * Gets the mime type associated with the format. * - * @see https://tools.ietf.org/html/rfc8674 * @static - */ - public static function preferSafeContent() + */ public static function getMimeType($format) { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->preferSafeContent(); + return $instance->getMimeType($format); } /** - * Indicates whether this request originated from a trusted proxy. - * - * This can be useful to determine whether or not to trust the - * contents of a proxy-specific header. + * Gets the mime types associated with the format. * + * @return string[] * @static - */ - public static function isFromTrustedProxy() + */ public static function getMimeTypes($format) { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->isFromTrustedProxy(); + return \Illuminate\Http\Request::getMimeTypes($format); } /** - * Filter the given array of rules into an array of rules that are included in precognitive headers. + * Gets the format associated with the mime type. * - * @param array $rules - * @return array * @static - */ - public static function filterPrecognitiveRules($rules) - { + */ public static function getFormat($mimeType) + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->filterPrecognitiveRules($rules); + return $instance->getFormat($mimeType); } /** - * Determine if the request is attempting to be precognitive. + * Associates a format with mime types. * - * @return bool + * @param string|string[] $mimeTypes The associated mime types (the preferred one must be the first as it will be used as the content type) + * @return void * @static - */ - public static function isAttemptingPrecognition() - { + */ public static function setFormat($format, $mimeTypes) + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->isAttemptingPrecognition(); + $instance->setFormat($format, $mimeTypes); } /** - * Determine if the request is precognitive. + * Gets the request format. + * + * Here is the process to determine the format: + * + * * format defined by the user (with setRequestFormat()) + * * _format request attribute + * * $default * - * @return bool + * @see getPreferredFormat * @static - */ - public static function isPrecognitive() - { + */ public static function getRequestFormat($default = 'html') + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->isPrecognitive(); + return $instance->getRequestFormat($default); } /** - * Determine if the request is sending JSON. + * Sets the request format. * - * @return bool + * @return void * @static - */ - public static function isJson() - { + */ public static function setRequestFormat($format) + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->isJson(); + $instance->setRequestFormat($format); } /** - * Determine if the current request probably expects a JSON response. + * Gets the usual name of the format associated with the request's media type (provided in the Content-Type header). * - * @return bool + * @deprecated since Symfony 6.2, use getContentTypeFormat() instead * @static - */ - public static function expectsJson() - { + */ public static function getContentType() + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->expectsJson(); + return $instance->getContentType(); } /** - * Determine if the current request is asking for JSON. + * Gets the usual name of the format associated with the request's media type (provided in the Content-Type header). * - * @return bool + * @see Request::$formats * @static - */ - public static function wantsJson() - { + */ public static function getContentTypeFormat() + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->wantsJson(); + return $instance->getContentTypeFormat(); } /** - * Determines whether the current requests accepts a given content type. + * Sets the default locale. * - * @param string|array $contentTypes - * @return bool + * @return void * @static - */ - public static function accepts($contentTypes) - { + */ public static function setDefaultLocale($locale) + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->accepts($contentTypes); + $instance->setDefaultLocale($locale); } /** - * Return the most suitable content type from the given array based on content negotiation. + * Get the default locale. * - * @param string|array $contentTypes - * @return string|null * @static - */ - public static function prefers($contentTypes) - { + */ public static function getDefaultLocale() + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->prefers($contentTypes); + return $instance->getDefaultLocale(); } /** - * Determine if the current request accepts any content type. + * Sets the locale. * - * @return bool + * @return void * @static - */ - public static function acceptsAnyContentType() - { + */ public static function setLocale($locale) + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->acceptsAnyContentType(); + $instance->setLocale($locale); } /** - * Determines whether a request accepts JSON. + * Get the locale. * - * @return bool * @static - */ - public static function acceptsJson() - { + */ public static function getLocale() + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->acceptsJson(); + return $instance->getLocale(); } /** - * Determines whether a request accepts HTML. + * Checks if the request method is of specified type. * - * @return bool + * @param string $method Uppercase request method (GET, POST etc) * @static - */ - public static function acceptsHtml() - { + */ public static function isMethod($method) + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->acceptsHtml(); + return $instance->isMethod($method); } /** - * Determine if the given content types match. + * Checks whether or not the method is safe. * - * @param string $actual - * @param string $type - * @return bool + * @see https://tools.ietf.org/html/rfc7231#section-4.2.1 * @static - */ - public static function matchesType($actual, $type) - { - return \Illuminate\Http\Request::matchesType($actual, $type); + */ public static function isMethodSafe() + { //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->isMethodSafe(); } /** - * Get the data format expected in the response. + * Checks whether or not the method is idempotent. * - * @param string $default - * @return string * @static - */ - public static function format($default = 'html') - { + */ public static function isMethodIdempotent() + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->format($default); + return $instance->isMethodIdempotent(); } /** - * Retrieve an old input item. + * Checks whether the method is cacheable or not. * - * @param string|null $key - * @param \Illuminate\Database\Eloquent\Model|string|array|null $default - * @return string|array|null + * @see https://tools.ietf.org/html/rfc7231#section-4.2.3 * @static - */ - public static function old($key = null, $default = null) - { + */ public static function isMethodCacheable() + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->old($key, $default); + return $instance->isMethodCacheable(); } /** - * Flash the input for the current request to the session. + * Returns the protocol version. + * + * If the application is behind a proxy, the protocol version used in the + * requests between the client and the proxy and between the proxy and the + * server might be different. This returns the former (from the "Via" header) + * if the proxy is trusted (see "setTrustedProxies()"), otherwise it returns + * the latter (from the "SERVER_PROTOCOL" server parameter). * - * @return void * @static - */ - public static function flash() - { + */ public static function getProtocolVersion() + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - $instance->flash(); + return $instance->getProtocolVersion(); } /** - * Flash only some of the input to the session. + * Returns the request body content. * - * @param array|mixed $keys - * @return void - * @static - */ - public static function flashOnly($keys) - { + * @param bool $asResource If true, a resource will be returned + * @return string|resource + * @psalm-return ($asResource is true ? resource : string) + * @static + */ public static function getContent($asResource = false) + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - $instance->flashOnly($keys); + return $instance->getContent($asResource); } /** - * Flash only some of the input to the session. + * Gets the decoded form or json request body. * - * @param array|mixed $keys - * @return void + * @throws JsonException When the body cannot be decoded to an array * @static - */ - public static function flashExcept($keys) - { + */ public static function getPayload() + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - $instance->flashExcept($keys); + return $instance->getPayload(); } /** - * Flush all of the old input from the session. + * Gets the Etags. * - * @return void * @static - */ - public static function flush() - { + */ public static function getETags() + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - $instance->flush(); + return $instance->getETags(); } /** - * Retrieve a server variable from the request. + * * - * @param string|null $key - * @param string|array|null $default - * @return string|array|null * @static - */ - public static function server($key = null, $default = null) - { + */ public static function isNoCache() + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->server($key, $default); + return $instance->isNoCache(); } /** - * Determine if a header is set on the request. + * Gets the preferred format for the response by inspecting, in the following order: + * * the request format set using setRequestFormat; + * * the values of the Accept HTTP header. + * + * Note that if you use this method, you should send the "Vary: Accept" header + * in the response to prevent any issues with intermediary HTTP caches. * - * @param string $key - * @return bool * @static - */ - public static function hasHeader($key) - { + */ public static function getPreferredFormat($default = 'html') + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->hasHeader($key); + return $instance->getPreferredFormat($default); } /** - * Retrieve a header from the request. + * Returns the preferred language. * - * @param string|null $key - * @param string|array|null $default - * @return string|array|null + * @param string[] $locales An array of ordered available locales * @static - */ - public static function header($key = null, $default = null) - { + */ public static function getPreferredLanguage($locales = null) + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->header($key, $default); + return $instance->getPreferredLanguage($locales); } /** - * Get the bearer token from the request headers. + * Gets a list of languages acceptable by the client browser ordered in the user browser preferences. * - * @return string|null + * @return string[] * @static - */ - public static function bearerToken() - { + */ public static function getLanguages() + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->bearerToken(); + return $instance->getLanguages(); } /** - * Determine if the request contains a given input item key. + * Gets a list of charsets acceptable by the client browser in preferable order. * - * @param string|array $key - * @return bool + * @return string[] * @static - */ - public static function exists($key) - { + */ public static function getCharsets() + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->exists($key); + return $instance->getCharsets(); } /** - * Determine if the request contains a given input item key. + * Gets a list of encodings acceptable by the client browser in preferable order. * - * @param string|array $key - * @return bool + * @return string[] * @static - */ - public static function has($key) - { + */ public static function getEncodings() + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->has($key); + return $instance->getEncodings(); } /** - * Determine if the request contains any of the given inputs. + * Gets a list of content types acceptable by the client browser in preferable order. * - * @param string|array $keys - * @return bool + * @return string[] * @static - */ - public static function hasAny($keys) - { + */ public static function getAcceptableContentTypes() + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->hasAny($keys); + return $instance->getAcceptableContentTypes(); } /** - * Apply the callback if the request contains the given input item key. + * Returns true if the request is an XMLHttpRequest. + * + * It works if your JavaScript library sets an X-Requested-With HTTP header. + * It is known to work with common JavaScript frameworks: * - * @param string $key - * @param callable $callback - * @param callable|null $default - * @return $this|mixed + * @see https://wikipedia.org/wiki/List_of_Ajax_frameworks#JavaScript * @static - */ - public static function whenHas($key, $callback, $default = null) - { + */ public static function isXmlHttpRequest() + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->whenHas($key, $callback, $default); + return $instance->isXmlHttpRequest(); } /** - * Determine if the request contains a non-empty value for an input item. + * Checks whether the client browser prefers safe content or not according to RFC8674. * - * @param string|array $key - * @return bool + * @see https://tools.ietf.org/html/rfc8674 * @static - */ - public static function filled($key) - { + */ public static function preferSafeContent() + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->filled($key); + return $instance->preferSafeContent(); } /** - * Determine if the request contains an empty value for an input item. + * Indicates whether this request originated from a trusted proxy. + * + * This can be useful to determine whether or not to trust the + * contents of a proxy-specific header. * - * @param string|array $key - * @return bool * @static - */ - public static function isNotFilled($key) - { + */ public static function isFromTrustedProxy() + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->isNotFilled($key); + return $instance->isFromTrustedProxy(); } /** - * Determine if the request contains a non-empty value for any of the given inputs. + * Filter the given array of rules into an array of rules that are included in precognitive headers. * - * @param string|array $keys - * @return bool + * @param array $rules + * @return array * @static - */ - public static function anyFilled($keys) + */ public static function filterPrecognitiveRules($rules) { /** @var \Illuminate\Http\Request $instance */ - return $instance->anyFilled($keys); + return $instance->filterPrecognitiveRules($rules); } /** - * Apply the callback if the request contains a non-empty value for the given input item key. + * Determine if the request is attempting to be precognitive. * - * @param string $key - * @param callable $callback - * @param callable|null $default - * @return $this|mixed + * @return bool * @static - */ - public static function whenFilled($key, $callback, $default = null) + */ public static function isAttemptingPrecognition() { /** @var \Illuminate\Http\Request $instance */ - return $instance->whenFilled($key, $callback, $default); + return $instance->isAttemptingPrecognition(); } /** - * Determine if the request is missing a given input item key. + * Determine if the request is precognitive. * - * @param string|array $key * @return bool * @static - */ - public static function missing($key) + */ public static function isPrecognitive() { /** @var \Illuminate\Http\Request $instance */ - return $instance->missing($key); + return $instance->isPrecognitive(); } /** - * Apply the callback if the request is missing the given input item key. + * Determine if the request is sending JSON. * - * @param string $key - * @param callable $callback - * @param callable|null $default - * @return $this|mixed + * @return bool * @static - */ - public static function whenMissing($key, $callback, $default = null) + */ public static function isJson() { /** @var \Illuminate\Http\Request $instance */ - return $instance->whenMissing($key, $callback, $default); + return $instance->isJson(); } /** - * Get the keys for all of the input and files. + * Determine if the current request probably expects a JSON response. * - * @return array + * @return bool * @static - */ - public static function keys() + */ public static function expectsJson() { /** @var \Illuminate\Http\Request $instance */ - return $instance->keys(); + return $instance->expectsJson(); } /** - * Get all of the input and files for the request. + * Determine if the current request is asking for JSON. * - * @param array|mixed|null $keys - * @return array + * @return bool * @static - */ - public static function all($keys = null) + */ public static function wantsJson() { /** @var \Illuminate\Http\Request $instance */ - return $instance->all($keys); + return $instance->wantsJson(); } /** - * Retrieve an input item from the request. + * Determines whether the current requests accepts a given content type. * - * @param string|null $key - * @param mixed $default - * @return mixed + * @param string|array $contentTypes + * @return bool * @static - */ - public static function input($key = null, $default = null) + */ public static function accepts($contentTypes) { /** @var \Illuminate\Http\Request $instance */ - return $instance->input($key, $default); + return $instance->accepts($contentTypes); } /** - * Retrieve input from the request as a Stringable instance. + * Return the most suitable content type from the given array based on content negotiation. * - * @param string $key - * @param mixed $default - * @return \Illuminate\Support\Stringable + * @param string|array $contentTypes + * @return string|null * @static - */ - public static function str($key, $default = null) + */ public static function prefers($contentTypes) { /** @var \Illuminate\Http\Request $instance */ - return $instance->str($key, $default); + return $instance->prefers($contentTypes); } /** - * Retrieve input from the request as a Stringable instance. + * Determine if the current request accepts any content type. * - * @param string $key - * @param mixed $default - * @return \Illuminate\Support\Stringable + * @return bool * @static - */ - public static function string($key, $default = null) + */ public static function acceptsAnyContentType() { /** @var \Illuminate\Http\Request $instance */ - return $instance->string($key, $default); + return $instance->acceptsAnyContentType(); } /** - * Retrieve input as a boolean value. - * - * Returns true when value is "1", "true", "on", and "yes". Otherwise, returns false. + * Determines whether a request accepts JSON. * - * @param string|null $key - * @param bool $default * @return bool * @static - */ - public static function boolean($key = null, $default = false) + */ public static function acceptsJson() { /** @var \Illuminate\Http\Request $instance */ - return $instance->boolean($key, $default); + return $instance->acceptsJson(); } /** - * Retrieve input as an integer value. + * Determines whether a request accepts HTML. * - * @param string $key - * @param int $default - * @return int + * @return bool * @static - */ - public static function integer($key, $default = 0) + */ public static function acceptsHtml() { /** @var \Illuminate\Http\Request $instance */ - return $instance->integer($key, $default); + return $instance->acceptsHtml(); } /** - * Retrieve input as a float value. + * Determine if the given content types match. * - * @param string $key - * @param float $default - * @return float + * @param string $actual + * @param string $type + * @return bool * @static - */ - public static function float($key, $default = 0.0) + */ public static function matchesType($actual, $type) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->float($key, $default); + return \Illuminate\Http\Request::matchesType($actual, $type); } /** - * Retrieve input from the request as a Carbon instance. + * Get the data format expected in the response. * - * @param string $key - * @param string|null $format - * @param string|null $tz - * @return \Illuminate\Support\Carbon|null - * @throws \Carbon\Exceptions\InvalidFormatException + * @param string $default + * @return string * @static - */ - public static function date($key, $format = null, $tz = null) + */ public static function format($default = 'html') { /** @var \Illuminate\Http\Request $instance */ - return $instance->date($key, $format, $tz); + return $instance->format($default); } /** - * Retrieve input from the request as an enum. + * Retrieve an old input item. * - * @template TEnum - * @param string $key - * @param \Illuminate\Http\class-string $enumClass - * @return \Illuminate\Http\TEnum|null + * @param string|null $key + * @param \Illuminate\Database\Eloquent\Model|string|array|null $default + * @return string|array|null * @static - */ - public static function enum($key, $enumClass) + */ public static function old($key = null, $default = null) { /** @var \Illuminate\Http\Request $instance */ - return $instance->enum($key, $enumClass); + return $instance->old($key, $default); } /** - * Retrieve input from the request as a collection. + * Flash the input for the current request to the session. * - * @param array|string|null $key - * @return \Illuminate\Support\Collection + * @return void * @static - */ - public static function collect($key = null) + */ public static function flash() { /** @var \Illuminate\Http\Request $instance */ - return $instance->collect($key); + $instance->flash(); } /** - * Get a subset containing the provided keys with values from the input data. + * Flash only some of the input to the session. * * @param array|mixed $keys - * @return array + * @return void * @static - */ - public static function only($keys) + */ public static function flashOnly($keys) { /** @var \Illuminate\Http\Request $instance */ - return $instance->only($keys); + $instance->flashOnly($keys); } /** - * Get all of the input except for a specified array of items. + * Flash only some of the input to the session. * * @param array|mixed $keys - * @return array + * @return void * @static - */ - public static function except($keys) + */ public static function flashExcept($keys) { /** @var \Illuminate\Http\Request $instance */ - return $instance->except($keys); + $instance->flashExcept($keys); } /** - * Retrieve a query string item from the request. + * Flush all of the old input from the session. * - * @param string|null $key - * @param string|array|null $default - * @return string|array|null + * @return void * @static - */ - public static function query($key = null, $default = null) + */ public static function flush() { /** @var \Illuminate\Http\Request $instance */ - return $instance->query($key, $default); + $instance->flush(); } /** - * Retrieve a request payload item from the request. + * Retrieve a server variable from the request. * * @param string|null $key * @param string|array|null $default * @return string|array|null * @static - */ - public static function post($key = null, $default = null) + */ public static function server($key = null, $default = null) { /** @var \Illuminate\Http\Request $instance */ - return $instance->post($key, $default); + return $instance->server($key, $default); } /** - * Determine if a cookie is set on the request. + * Determine if a header is set on the request. * * @param string $key * @return bool * @static - */ - public static function hasCookie($key) + */ public static function hasHeader($key) { /** @var \Illuminate\Http\Request $instance */ - return $instance->hasCookie($key); + return $instance->hasHeader($key); } /** - * Retrieve a cookie from the request. + * Retrieve a header from the request. * * @param string|null $key * @param string|array|null $default * @return string|array|null * @static - */ - public static function cookie($key = null, $default = null) + */ public static function header($key = null, $default = null) { /** @var \Illuminate\Http\Request $instance */ - return $instance->cookie($key, $default); + return $instance->header($key, $default); } /** - * Get an array of all of the files on the request. + * Get the bearer token from the request headers. * - * @return array + * @return string|null * @static - */ - public static function allFiles() + */ public static function bearerToken() { /** @var \Illuminate\Http\Request $instance */ - return $instance->allFiles(); + return $instance->bearerToken(); } /** - * Determine if the uploaded data contains a file. + * Determine if the request contains a given input item key. * - * @param string $key + * @param string|array $key * @return bool * @static - */ - public static function hasFile($key) + */ public static function exists($key) { /** @var \Illuminate\Http\Request $instance */ - return $instance->hasFile($key); + return $instance->exists($key); } /** - * Retrieve a file from the request. + * Determine if the request contains a given input item key. * - * @param string|null $key - * @param mixed $default - * @return \Illuminate\Http\UploadedFile|\Illuminate\Http\UploadedFile[]|array|null + * @param string|array $key + * @return bool * @static - */ - public static function file($key = null, $default = null) + */ public static function has($key) { /** @var \Illuminate\Http\Request $instance */ - return $instance->file($key, $default); + return $instance->has($key); } /** - * Dump the request items and end the script. + * Determine if the request contains any of the given inputs. * - * @param mixed $keys - * @return \Illuminate\Http\never + * @param string|array $keys + * @return bool * @static - */ - public static function dd(...$keys) + */ public static function hasAny($keys) { /** @var \Illuminate\Http\Request $instance */ - return $instance->dd(...$keys); + return $instance->hasAny($keys); } /** - * Dump the items. + * Apply the callback if the request contains the given input item key. * - * @param mixed $keys - * @return \Illuminate\Http\Request + * @param string $key + * @param callable $callback + * @param callable|null $default + * @return $this|mixed * @static - */ - public static function dump($keys = []) + */ public static function whenHas($key, $callback, $default = null) { /** @var \Illuminate\Http\Request $instance */ - return $instance->dump($keys); + return $instance->whenHas($key, $callback, $default); } /** - * Register a custom macro. + * Determine if the request contains a non-empty value for an input item. * - * @param string $name - * @param object|callable $macro - * @return void + * @param string|array $key + * @return bool * @static - */ - public static function macro($name, $macro) + */ public static function filled($key) { - \Illuminate\Http\Request::macro($name, $macro); + /** @var \Illuminate\Http\Request $instance */ + return $instance->filled($key); } /** - * Mix another object into the class. + * Determine if the request contains an empty value for an input item. * - * @param object $mixin - * @param bool $replace - * @return void - * @throws \ReflectionException + * @param string|array $key + * @return bool * @static - */ - public static function mixin($mixin, $replace = true) + */ public static function isNotFilled($key) { - \Illuminate\Http\Request::mixin($mixin, $replace); + /** @var \Illuminate\Http\Request $instance */ + return $instance->isNotFilled($key); } /** - * Checks if macro is registered. + * Determine if the request contains a non-empty value for any of the given inputs. * - * @param string $name + * @param string|array $keys * @return bool * @static - */ - public static function hasMacro($name) + */ public static function anyFilled($keys) { - return \Illuminate\Http\Request::hasMacro($name); + /** @var \Illuminate\Http\Request $instance */ + return $instance->anyFilled($keys); } /** - * Flush the existing macros. + * Apply the callback if the request contains a non-empty value for the given input item key. * - * @return void + * @param string $key + * @param callable $callback + * @param callable|null $default + * @return $this|mixed * @static - */ - public static function flushMacros() + */ public static function whenFilled($key, $callback, $default = null) { - \Illuminate\Http\Request::flushMacros(); + /** @var \Illuminate\Http\Request $instance */ + return $instance->whenFilled($key, $callback, $default); } /** - * + * Determine if the request is missing a given input item key. * - * @see \Illuminate\Foundation\Providers\FoundationServiceProvider::registerRequestValidation() - * @param array $rules - * @param mixed $params + * @param string|array $key + * @return bool * @static - */ - public static function validate($rules, ...$params) + */ public static function missing($key) { - return \Illuminate\Http\Request::validate($rules, ...$params); + /** @var \Illuminate\Http\Request $instance */ + return $instance->missing($key); } /** - * + * Apply the callback if the request is missing the given input item key. * - * @see \Illuminate\Foundation\Providers\FoundationServiceProvider::registerRequestValidation() - * @param string $errorBag - * @param array $rules - * @param mixed $params + * @param string $key + * @param callable $callback + * @param callable|null $default + * @return $this|mixed * @static - */ - public static function validateWithBag($errorBag, $rules, ...$params) + */ public static function whenMissing($key, $callback, $default = null) { - return \Illuminate\Http\Request::validateWithBag($errorBag, $rules, ...$params); + /** @var \Illuminate\Http\Request $instance */ + return $instance->whenMissing($key, $callback, $default); } /** - * + * Get the keys for all of the input and files. * - * @see \Illuminate\Foundation\Providers\FoundationServiceProvider::registerRequestSignatureValidation() - * @param mixed $absolute + * @return array * @static - */ - public static function hasValidSignature($absolute = true) + */ public static function keys() { - return \Illuminate\Http\Request::hasValidSignature($absolute); + /** @var \Illuminate\Http\Request $instance */ + return $instance->keys(); } /** - * + * Get all of the input and files for the request. * - * @see \Illuminate\Foundation\Providers\FoundationServiceProvider::registerRequestSignatureValidation() + * @param array|mixed|null $keys + * @return array * @static - */ - public static function hasValidRelativeSignature() + */ public static function all($keys = null) { - return \Illuminate\Http\Request::hasValidRelativeSignature(); + /** @var \Illuminate\Http\Request $instance */ + return $instance->all($keys); } /** - * + * Retrieve an input item from the request. * - * @see \Illuminate\Foundation\Providers\FoundationServiceProvider::registerRequestSignatureValidation() - * @param mixed $ignoreQuery - * @param mixed $absolute + * @param string|null $key + * @param mixed $default + * @return mixed * @static - */ - public static function hasValidSignatureWhileIgnoring($ignoreQuery = [], $absolute = true) + */ public static function input($key = null, $default = null) { - return \Illuminate\Http\Request::hasValidSignatureWhileIgnoring($ignoreQuery, $absolute); + /** @var \Illuminate\Http\Request $instance */ + return $instance->input($key, $default); } - - } - /** - * - * - * @see \Illuminate\Routing\ResponseFactory - */ - class Response { /** - * Create a new response instance. + * Retrieve input from the request as a Stringable instance. * - * @param mixed $content - * @param int $status - * @param array $headers - * @return \Illuminate\Http\Response + * @param string $key + * @param mixed $default + * @return \Illuminate\Support\Stringable * @static - */ - public static function make($content = '', $status = 200, $headers = []) + */ public static function str($key, $default = null) { - /** @var \Illuminate\Routing\ResponseFactory $instance */ - return $instance->make($content, $status, $headers); + /** @var \Illuminate\Http\Request $instance */ + return $instance->str($key, $default); } /** - * Create a new "no content" response. + * Retrieve input from the request as a Stringable instance. * - * @param int $status - * @param array $headers - * @return \Illuminate\Http\Response + * @param string $key + * @param mixed $default + * @return \Illuminate\Support\Stringable * @static - */ - public static function noContent($status = 204, $headers = []) + */ public static function string($key, $default = null) { - /** @var \Illuminate\Routing\ResponseFactory $instance */ - return $instance->noContent($status, $headers); + /** @var \Illuminate\Http\Request $instance */ + return $instance->string($key, $default); } /** - * Create a new response for a given view. + * Retrieve input as a boolean value. + * + * Returns true when value is "1", "true", "on", and "yes". Otherwise, returns false. * - * @param string|array $view - * @param array $data - * @param int $status - * @param array $headers - * @return \Illuminate\Http\Response + * @param string|null $key + * @param bool $default + * @return bool * @static - */ - public static function view($view, $data = [], $status = 200, $headers = []) + */ public static function boolean($key = null, $default = false) { - /** @var \Illuminate\Routing\ResponseFactory $instance */ - return $instance->view($view, $data, $status, $headers); + /** @var \Illuminate\Http\Request $instance */ + return $instance->boolean($key, $default); } /** - * Create a new JSON response instance. + * Retrieve input as an integer value. * - * @param mixed $data - * @param int $status - * @param array $headers - * @param int $options - * @return \Illuminate\Http\JsonResponse + * @param string $key + * @param int $default + * @return int * @static - */ - public static function json($data = [], $status = 200, $headers = [], $options = 0) + */ public static function integer($key, $default = 0) { - /** @var \Illuminate\Routing\ResponseFactory $instance */ - return $instance->json($data, $status, $headers, $options); + /** @var \Illuminate\Http\Request $instance */ + return $instance->integer($key, $default); } /** - * Create a new JSONP response instance. + * Retrieve input as a float value. * - * @param string $callback - * @param mixed $data - * @param int $status - * @param array $headers - * @param int $options - * @return \Illuminate\Http\JsonResponse + * @param string $key + * @param float $default + * @return float * @static - */ - public static function jsonp($callback, $data = [], $status = 200, $headers = [], $options = 0) + */ public static function float($key, $default = 0.0) { - /** @var \Illuminate\Routing\ResponseFactory $instance */ - return $instance->jsonp($callback, $data, $status, $headers, $options); + /** @var \Illuminate\Http\Request $instance */ + return $instance->float($key, $default); } /** - * Create a new streamed response instance. + * Retrieve input from the request as a Carbon instance. * - * @param callable $callback - * @param int $status - * @param array $headers - * @return \Symfony\Component\HttpFoundation\StreamedResponse + * @param string $key + * @param string|null $format + * @param string|null $tz + * @return \Illuminate\Support\Carbon|null + * @throws \Carbon\Exceptions\InvalidFormatException * @static - */ - public static function stream($callback, $status = 200, $headers = []) + */ public static function date($key, $format = null, $tz = null) { - /** @var \Illuminate\Routing\ResponseFactory $instance */ - return $instance->stream($callback, $status, $headers); + /** @var \Illuminate\Http\Request $instance */ + return $instance->date($key, $format, $tz); } /** - * Create a new streamed response instance as a file download. + * Retrieve input from the request as an enum. * - * @param callable $callback - * @param string|null $name - * @param array $headers - * @param string|null $disposition - * @return \Symfony\Component\HttpFoundation\StreamedResponse + * @template TEnum + * @param string $key + * @param \Illuminate\Http\class-string $enumClass + * @return \Illuminate\Http\TEnum|null * @static - */ - public static function streamDownload($callback, $name = null, $headers = [], $disposition = 'attachment') + */ public static function enum($key, $enumClass) { - /** @var \Illuminate\Routing\ResponseFactory $instance */ - return $instance->streamDownload($callback, $name, $headers, $disposition); + /** @var \Illuminate\Http\Request $instance */ + return $instance->enum($key, $enumClass); } /** - * Create a new file download response. + * Retrieve input from the request as a collection. * - * @param \SplFileInfo|string $file - * @param string|null $name - * @param array $headers - * @param string|null $disposition - * @return \Symfony\Component\HttpFoundation\BinaryFileResponse + * @param array|string|null $key + * @return \Illuminate\Support\Collection * @static - */ - public static function download($file, $name = null, $headers = [], $disposition = 'attachment') + */ public static function collect($key = null) { - /** @var \Illuminate\Routing\ResponseFactory $instance */ - return $instance->download($file, $name, $headers, $disposition); + /** @var \Illuminate\Http\Request $instance */ + return $instance->collect($key); } /** - * Return the raw contents of a binary file. + * Get a subset containing the provided keys with values from the input data. * - * @param \SplFileInfo|string $file - * @param array $headers - * @return \Symfony\Component\HttpFoundation\BinaryFileResponse + * @param array|mixed $keys + * @return array * @static - */ - public static function file($file, $headers = []) + */ public static function only($keys) { - /** @var \Illuminate\Routing\ResponseFactory $instance */ - return $instance->file($file, $headers); + /** @var \Illuminate\Http\Request $instance */ + return $instance->only($keys); } /** - * Create a new redirect response to the given path. + * Get all of the input except for a specified array of items. * - * @param string $path - * @param int $status - * @param array $headers - * @param bool|null $secure - * @return \Illuminate\Http\RedirectResponse + * @param array|mixed $keys + * @return array * @static - */ - public static function redirectTo($path, $status = 302, $headers = [], $secure = null) + */ public static function except($keys) { - /** @var \Illuminate\Routing\ResponseFactory $instance */ - return $instance->redirectTo($path, $status, $headers, $secure); + /** @var \Illuminate\Http\Request $instance */ + return $instance->except($keys); } /** - * Create a new redirect response to a named route. + * Retrieve a query string item from the request. * - * @param string $route - * @param mixed $parameters - * @param int $status - * @param array $headers - * @return \Illuminate\Http\RedirectResponse + * @param string|null $key + * @param string|array|null $default + * @return string|array|null * @static - */ - public static function redirectToRoute($route, $parameters = [], $status = 302, $headers = []) + */ public static function query($key = null, $default = null) { - /** @var \Illuminate\Routing\ResponseFactory $instance */ - return $instance->redirectToRoute($route, $parameters, $status, $headers); + /** @var \Illuminate\Http\Request $instance */ + return $instance->query($key, $default); } /** - * Create a new redirect response to a controller action. + * Retrieve a request payload item from the request. * - * @param string $action - * @param mixed $parameters - * @param int $status - * @param array $headers - * @return \Illuminate\Http\RedirectResponse + * @param string|null $key + * @param string|array|null $default + * @return string|array|null * @static - */ - public static function redirectToAction($action, $parameters = [], $status = 302, $headers = []) + */ public static function post($key = null, $default = null) { - /** @var \Illuminate\Routing\ResponseFactory $instance */ - return $instance->redirectToAction($action, $parameters, $status, $headers); + /** @var \Illuminate\Http\Request $instance */ + return $instance->post($key, $default); } /** - * Create a new redirect response, while putting the current URL in the session. + * Determine if a cookie is set on the request. * - * @param string $path - * @param int $status - * @param array $headers - * @param bool|null $secure - * @return \Illuminate\Http\RedirectResponse + * @param string $key + * @return bool * @static - */ - public static function redirectGuest($path, $status = 302, $headers = [], $secure = null) + */ public static function hasCookie($key) { - /** @var \Illuminate\Routing\ResponseFactory $instance */ - return $instance->redirectGuest($path, $status, $headers, $secure); + /** @var \Illuminate\Http\Request $instance */ + return $instance->hasCookie($key); } /** - * Create a new redirect response to the previously intended location. + * Retrieve a cookie from the request. * - * @param string $default - * @param int $status - * @param array $headers - * @param bool|null $secure - * @return \Illuminate\Http\RedirectResponse + * @param string|null $key + * @param string|array|null $default + * @return string|array|null * @static - */ - public static function redirectToIntended($default = '/', $status = 302, $headers = [], $secure = null) + */ public static function cookie($key = null, $default = null) { - /** @var \Illuminate\Routing\ResponseFactory $instance */ - return $instance->redirectToIntended($default, $status, $headers, $secure); + /** @var \Illuminate\Http\Request $instance */ + return $instance->cookie($key, $default); + } + /** + * Get an array of all of the files on the request. + * + * @return array + * @static + */ public static function allFiles() + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->allFiles(); + } + /** + * Determine if the uploaded data contains a file. + * + * @param string $key + * @return bool + * @static + */ public static function hasFile($key) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->hasFile($key); + } + /** + * Retrieve a file from the request. + * + * @param string|null $key + * @param mixed $default + * @return \Illuminate\Http\UploadedFile|\Illuminate\Http\UploadedFile[]|array|null + * @static + */ public static function file($key = null, $default = null) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->file($key, $default); + } + /** + * Dump the request items and end the script. + * + * @param mixed $keys + * @return \Illuminate\Http\never + * @static + */ public static function dd(...$keys) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->dd(...$keys); + } + /** + * Dump the items. + * + * @param mixed $keys + * @return \Illuminate\Http\Request + * @static + */ public static function dump($keys = []) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->dump($keys); } /** * Register a custom macro. @@ -12882,10 +12238,9 @@ public static function redirectToIntended($default = '/', $status = 302, $header * @param object|callable $macro * @return void * @static - */ - public static function macro($name, $macro) + */ public static function macro($name, $macro) { - \Illuminate\Routing\ResponseFactory::macro($name, $macro); + \Illuminate\Http\Request::macro($name, $macro); } /** * Mix another object into the class. @@ -12895,10 +12250,9 @@ public static function macro($name, $macro) * @return void * @throws \ReflectionException * @static - */ - public static function mixin($mixin, $replace = true) + */ public static function mixin($mixin, $replace = true) { - \Illuminate\Routing\ResponseFactory::mixin($mixin, $replace); + \Illuminate\Http\Request::mixin($mixin, $replace); } /** * Checks if macro is registered. @@ -12906,726 +12260,987 @@ public static function mixin($mixin, $replace = true) * @param string $name * @return bool * @static - */ - public static function hasMacro($name) + */ public static function hasMacro($name) { - return \Illuminate\Routing\ResponseFactory::hasMacro($name); + return \Illuminate\Http\Request::hasMacro($name); } /** * Flush the existing macros. * * @return void * @static - */ - public static function flushMacros() + */ public static function flushMacros() { - \Illuminate\Routing\ResponseFactory::flushMacros(); + \Illuminate\Http\Request::flushMacros(); } - - } - /** - * - * - * @method static \Illuminate\Routing\RouteRegistrar attribute(string $key, mixed $value) - * @method static \Illuminate\Routing\RouteRegistrar whereAlpha(array|string $parameters) - * @method static \Illuminate\Routing\RouteRegistrar whereAlphaNumeric(array|string $parameters) - * @method static \Illuminate\Routing\RouteRegistrar whereNumber(array|string $parameters) - * @method static \Illuminate\Routing\RouteRegistrar whereUlid(array|string $parameters) - * @method static \Illuminate\Routing\RouteRegistrar whereUuid(array|string $parameters) - * @method static \Illuminate\Routing\RouteRegistrar whereIn(array|string $parameters, array $values) - * @method static \Illuminate\Routing\RouteRegistrar as(string $value) - * @method static \Illuminate\Routing\RouteRegistrar controller(string $controller) - * @method static \Illuminate\Routing\RouteRegistrar domain(string $value) - * @method static \Illuminate\Routing\RouteRegistrar middleware(array|string|null $middleware) - * @method static \Illuminate\Routing\RouteRegistrar name(string $value) - * @method static \Illuminate\Routing\RouteRegistrar namespace(string|null $value) - * @method static \Illuminate\Routing\RouteRegistrar prefix(string $prefix) - * @method static \Illuminate\Routing\RouteRegistrar scopeBindings() - * @method static \Illuminate\Routing\RouteRegistrar where(array $where) - * @method static \Illuminate\Routing\RouteRegistrar withoutMiddleware(array|string $middleware) - * @method static \Illuminate\Routing\RouteRegistrar withoutScopedBindings() - * @see \Illuminate\Routing\Router - */ - class Route { /** - * Register a new GET route with the router. + * * - * @param string $uri - * @param array|string|callable|null $action - * @return \Illuminate\Routing\Route + * @see \Illuminate\Foundation\Providers\FoundationServiceProvider::registerRequestValidation() + * @param array $rules + * @param mixed $params * @static - */ - public static function get($uri, $action = null) + */ public static function validate($rules, ...$params) { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->get($uri, $action); + return \Illuminate\Http\Request::validate($rules, ...$params); } /** - * Register a new POST route with the router. + * * - * @param string $uri - * @param array|string|callable|null $action - * @return \Illuminate\Routing\Route + * @see \Illuminate\Foundation\Providers\FoundationServiceProvider::registerRequestValidation() + * @param string $errorBag + * @param array $rules + * @param mixed $params * @static - */ - public static function post($uri, $action = null) + */ public static function validateWithBag($errorBag, $rules, ...$params) { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->post($uri, $action); + return \Illuminate\Http\Request::validateWithBag($errorBag, $rules, ...$params); } /** - * Register a new PUT route with the router. + * * - * @param string $uri - * @param array|string|callable|null $action - * @return \Illuminate\Routing\Route + * @see \Illuminate\Foundation\Providers\FoundationServiceProvider::registerRequestSignatureValidation() + * @param mixed $absolute * @static - */ - public static function put($uri, $action = null) + */ public static function hasValidSignature($absolute = true) { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->put($uri, $action); + return \Illuminate\Http\Request::hasValidSignature($absolute); } /** - * Register a new PATCH route with the router. + * * - * @param string $uri - * @param array|string|callable|null $action - * @return \Illuminate\Routing\Route + * @see \Illuminate\Foundation\Providers\FoundationServiceProvider::registerRequestSignatureValidation() * @static - */ - public static function patch($uri, $action = null) + */ public static function hasValidRelativeSignature() { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->patch($uri, $action); + return \Illuminate\Http\Request::hasValidRelativeSignature(); } /** - * Register a new DELETE route with the router. + * * - * @param string $uri - * @param array|string|callable|null $action - * @return \Illuminate\Routing\Route + * @see \Illuminate\Foundation\Providers\FoundationServiceProvider::registerRequestSignatureValidation() + * @param mixed $ignoreQuery + * @param mixed $absolute * @static - */ - public static function delete($uri, $action = null) + */ public static function hasValidSignatureWhileIgnoring($ignoreQuery = [], $absolute = true) { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->delete($uri, $action); + return \Illuminate\Http\Request::hasValidSignatureWhileIgnoring($ignoreQuery, $absolute); } + } + /** + * + * + * @see \Illuminate\Routing\ResponseFactory + */ class Response { /** - * Register a new OPTIONS route with the router. + * Create a new response instance. * - * @param string $uri - * @param array|string|callable|null $action - * @return \Illuminate\Routing\Route + * @param mixed $content + * @param int $status + * @param array $headers + * @return \Illuminate\Http\Response * @static - */ - public static function options($uri, $action = null) + */ public static function make($content = '', $status = 200, $headers = []) { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->options($uri, $action); + /** @var \Illuminate\Routing\ResponseFactory $instance */ + return $instance->make($content, $status, $headers); } /** - * Register a new route responding to all verbs. + * Create a new "no content" response. * - * @param string $uri - * @param array|string|callable|null $action - * @return \Illuminate\Routing\Route + * @param int $status + * @param array $headers + * @return \Illuminate\Http\Response * @static - */ - public static function any($uri, $action = null) + */ public static function noContent($status = 204, $headers = []) { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->any($uri, $action); + /** @var \Illuminate\Routing\ResponseFactory $instance */ + return $instance->noContent($status, $headers); } /** - * Register a new Fallback route with the router. + * Create a new response for a given view. * - * @param array|string|callable|null $action - * @return \Illuminate\Routing\Route + * @param string|array $view + * @param array $data + * @param int $status + * @param array $headers + * @return \Illuminate\Http\Response * @static - */ - public static function fallback($action) + */ public static function view($view, $data = [], $status = 200, $headers = []) { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->fallback($action); + /** @var \Illuminate\Routing\ResponseFactory $instance */ + return $instance->view($view, $data, $status, $headers); } /** - * Create a redirect from one URI to another. + * Create a new JSON response instance. * - * @param string $uri - * @param string $destination + * @param mixed $data * @param int $status - * @return \Illuminate\Routing\Route + * @param array $headers + * @param int $options + * @return \Illuminate\Http\JsonResponse * @static - */ - public static function redirect($uri, $destination, $status = 302) + */ public static function json($data = [], $status = 200, $headers = [], $options = 0) { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->redirect($uri, $destination, $status); + /** @var \Illuminate\Routing\ResponseFactory $instance */ + return $instance->json($data, $status, $headers, $options); } /** - * Create a permanent redirect from one URI to another. + * Create a new JSONP response instance. * - * @param string $uri - * @param string $destination - * @return \Illuminate\Routing\Route + * @param string $callback + * @param mixed $data + * @param int $status + * @param array $headers + * @param int $options + * @return \Illuminate\Http\JsonResponse * @static - */ - public static function permanentRedirect($uri, $destination) + */ public static function jsonp($callback, $data = [], $status = 200, $headers = [], $options = 0) { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->permanentRedirect($uri, $destination); + /** @var \Illuminate\Routing\ResponseFactory $instance */ + return $instance->jsonp($callback, $data, $status, $headers, $options); } /** - * Register a new route that returns a view. + * Create a new streamed response instance. + * + * @param callable $callback + * @param int $status + * @param array $headers + * @return \Symfony\Component\HttpFoundation\StreamedResponse + * @static + */ public static function stream($callback, $status = 200, $headers = []) + { + /** @var \Illuminate\Routing\ResponseFactory $instance */ + return $instance->stream($callback, $status, $headers); + } + /** + * Create a new streamed response instance. * - * @param string $uri - * @param string $view * @param array $data - * @param int|array $status + * @param int $status * @param array $headers - * @return \Illuminate\Routing\Route + * @param int $encodingOptions + * @return \Symfony\Component\HttpFoundation\StreamedJsonResponse * @static - */ - public static function view($uri, $view, $data = [], $status = 200, $headers = []) + */ public static function streamJson($data, $status = 200, $headers = [], $encodingOptions = 15) { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->view($uri, $view, $data, $status, $headers); + /** @var \Illuminate\Routing\ResponseFactory $instance */ + return $instance->streamJson($data, $status, $headers, $encodingOptions); } /** - * Register a new route with the given verbs. + * Create a new streamed response instance as a file download. * - * @param array|string $methods - * @param string $uri - * @param array|string|callable|null $action - * @return \Illuminate\Routing\Route + * @param callable $callback + * @param string|null $name + * @param array $headers + * @param string|null $disposition + * @return \Symfony\Component\HttpFoundation\StreamedResponse * @static - */ - public static function match($methods, $uri, $action = null) + */ public static function streamDownload($callback, $name = null, $headers = [], $disposition = 'attachment') { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->match($methods, $uri, $action); + /** @var \Illuminate\Routing\ResponseFactory $instance */ + return $instance->streamDownload($callback, $name, $headers, $disposition); } /** - * Register an array of resource controllers. + * Create a new file download response. * - * @param array $resources - * @param array $options - * @return void + * @param \SplFileInfo|string $file + * @param string|null $name + * @param array $headers + * @param string|null $disposition + * @return \Symfony\Component\HttpFoundation\BinaryFileResponse * @static - */ - public static function resources($resources, $options = []) + */ public static function download($file, $name = null, $headers = [], $disposition = 'attachment') { - /** @var \Illuminate\Routing\Router $instance */ - $instance->resources($resources, $options); + /** @var \Illuminate\Routing\ResponseFactory $instance */ + return $instance->download($file, $name, $headers, $disposition); } /** - * Route a resource to a controller. + * Return the raw contents of a binary file. * - * @param string $name - * @param string $controller - * @param array $options - * @return \Illuminate\Routing\PendingResourceRegistration + * @param \SplFileInfo|string $file + * @param array $headers + * @return \Symfony\Component\HttpFoundation\BinaryFileResponse * @static - */ - public static function resource($name, $controller, $options = []) + */ public static function file($file, $headers = []) { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->resource($name, $controller, $options); + /** @var \Illuminate\Routing\ResponseFactory $instance */ + return $instance->file($file, $headers); } /** - * Register an array of API resource controllers. + * Create a new redirect response to the given path. * - * @param array $resources - * @param array $options - * @return void + * @param string $path + * @param int $status + * @param array $headers + * @param bool|null $secure + * @return \Illuminate\Http\RedirectResponse * @static - */ - public static function apiResources($resources, $options = []) + */ public static function redirectTo($path, $status = 302, $headers = [], $secure = null) { - /** @var \Illuminate\Routing\Router $instance */ - $instance->apiResources($resources, $options); + /** @var \Illuminate\Routing\ResponseFactory $instance */ + return $instance->redirectTo($path, $status, $headers, $secure); } /** - * Route an API resource to a controller. + * Create a new redirect response to a named route. * - * @param string $name - * @param string $controller - * @param array $options - * @return \Illuminate\Routing\PendingResourceRegistration + * @param string $route + * @param mixed $parameters + * @param int $status + * @param array $headers + * @return \Illuminate\Http\RedirectResponse * @static - */ - public static function apiResource($name, $controller, $options = []) + */ public static function redirectToRoute($route, $parameters = [], $status = 302, $headers = []) { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->apiResource($name, $controller, $options); + /** @var \Illuminate\Routing\ResponseFactory $instance */ + return $instance->redirectToRoute($route, $parameters, $status, $headers); } /** - * Register an array of singleton resource controllers. + * Create a new redirect response to a controller action. * - * @param array $singletons - * @param array $options - * @return void + * @param array|string $action + * @param mixed $parameters + * @param int $status + * @param array $headers + * @return \Illuminate\Http\RedirectResponse * @static - */ - public static function singletons($singletons, $options = []) + */ public static function redirectToAction($action, $parameters = [], $status = 302, $headers = []) { - /** @var \Illuminate\Routing\Router $instance */ - $instance->singletons($singletons, $options); + /** @var \Illuminate\Routing\ResponseFactory $instance */ + return $instance->redirectToAction($action, $parameters, $status, $headers); } /** - * Route a singleton resource to a controller. + * Create a new redirect response, while putting the current URL in the session. * - * @param string $name - * @param string $controller - * @param array $options - * @return \Illuminate\Routing\PendingSingletonResourceRegistration + * @param string $path + * @param int $status + * @param array $headers + * @param bool|null $secure + * @return \Illuminate\Http\RedirectResponse * @static - */ - public static function singleton($name, $controller, $options = []) + */ public static function redirectGuest($path, $status = 302, $headers = [], $secure = null) { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->singleton($name, $controller, $options); + /** @var \Illuminate\Routing\ResponseFactory $instance */ + return $instance->redirectGuest($path, $status, $headers, $secure); } /** - * Register an array of API singleton resource controllers. + * Create a new redirect response to the previously intended location. * - * @param array $singletons - * @param array $options - * @return void + * @param string $default + * @param int $status + * @param array $headers + * @param bool|null $secure + * @return \Illuminate\Http\RedirectResponse * @static - */ - public static function apiSingletons($singletons, $options = []) + */ public static function redirectToIntended($default = '/', $status = 302, $headers = [], $secure = null) { - /** @var \Illuminate\Routing\Router $instance */ - $instance->apiSingletons($singletons, $options); + /** @var \Illuminate\Routing\ResponseFactory $instance */ + return $instance->redirectToIntended($default, $status, $headers, $secure); } /** - * Route an API singleton resource to a controller. + * Register a custom macro. * * @param string $name - * @param string $controller - * @param array $options - * @return \Illuminate\Routing\PendingSingletonResourceRegistration + * @param object|callable $macro + * @return void * @static - */ - public static function apiSingleton($name, $controller, $options = []) + */ public static function macro($name, $macro) { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->apiSingleton($name, $controller, $options); + \Illuminate\Routing\ResponseFactory::macro($name, $macro); } /** - * Create a route group with shared attributes. + * Mix another object into the class. * - * @param array $attributes - * @param \Closure|array|string $routes - * @return \Illuminate\Routing\Router + * @param object $mixin + * @param bool $replace + * @return void + * @throws \ReflectionException * @static - */ - public static function group($attributes, $routes) + */ public static function mixin($mixin, $replace = true) { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->group($attributes, $routes); + \Illuminate\Routing\ResponseFactory::mixin($mixin, $replace); } /** - * Merge the given array with the last group stack. + * Checks if macro is registered. * - * @param array $new - * @param bool $prependExistingPrefix - * @return array + * @param string $name + * @return bool * @static - */ - public static function mergeWithLastGroup($new, $prependExistingPrefix = true) + */ public static function hasMacro($name) { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->mergeWithLastGroup($new, $prependExistingPrefix); + return \Illuminate\Routing\ResponseFactory::hasMacro($name); } /** - * Get the prefix from the last group on the stack. + * Flush the existing macros. * - * @return string + * @return void * @static - */ - public static function getLastGroupPrefix() + */ public static function flushMacros() { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->getLastGroupPrefix(); + \Illuminate\Routing\ResponseFactory::flushMacros(); } + } + /** + * + * + * @method static \Illuminate\Routing\RouteRegistrar attribute(string $key, mixed $value) + * @method static \Illuminate\Routing\RouteRegistrar whereAlpha(array|string $parameters) + * @method static \Illuminate\Routing\RouteRegistrar whereAlphaNumeric(array|string $parameters) + * @method static \Illuminate\Routing\RouteRegistrar whereNumber(array|string $parameters) + * @method static \Illuminate\Routing\RouteRegistrar whereUlid(array|string $parameters) + * @method static \Illuminate\Routing\RouteRegistrar whereUuid(array|string $parameters) + * @method static \Illuminate\Routing\RouteRegistrar whereIn(array|string $parameters, array $values) + * @method static \Illuminate\Routing\RouteRegistrar as(string $value) + * @method static \Illuminate\Routing\RouteRegistrar controller(string $controller) + * @method static \Illuminate\Routing\RouteRegistrar domain(string $value) + * @method static \Illuminate\Routing\RouteRegistrar middleware(array|string|null $middleware) + * @method static \Illuminate\Routing\RouteRegistrar missing(\Closure $missing) + * @method static \Illuminate\Routing\RouteRegistrar name(string $value) + * @method static \Illuminate\Routing\RouteRegistrar namespace(string|null $value) + * @method static \Illuminate\Routing\RouteRegistrar prefix(string $prefix) + * @method static \Illuminate\Routing\RouteRegistrar scopeBindings() + * @method static \Illuminate\Routing\RouteRegistrar where(array $where) + * @method static \Illuminate\Routing\RouteRegistrar withoutMiddleware(array|string $middleware) + * @method static \Illuminate\Routing\RouteRegistrar withoutScopedBindings() + * @see \Illuminate\Routing\Router + */ class Route { /** - * Add a route to the underlying route collection. + * Register a new GET route with the router. * - * @param array|string $methods * @param string $uri * @param array|string|callable|null $action * @return \Illuminate\Routing\Route * @static - */ - public static function addRoute($methods, $uri, $action) + */ public static function get($uri, $action = null) { /** @var \Illuminate\Routing\Router $instance */ - return $instance->addRoute($methods, $uri, $action); + return $instance->get($uri, $action); } /** - * Create a new Route object. + * Register a new POST route with the router. * - * @param array|string $methods * @param string $uri - * @param mixed $action + * @param array|string|callable|null $action * @return \Illuminate\Routing\Route * @static - */ - public static function newRoute($methods, $uri, $action) + */ public static function post($uri, $action = null) { /** @var \Illuminate\Routing\Router $instance */ - return $instance->newRoute($methods, $uri, $action); + return $instance->post($uri, $action); } /** - * Return the response returned by the given route. + * Register a new PUT route with the router. * - * @param string $name - * @return \Symfony\Component\HttpFoundation\Response - * @static - */ - public static function respondWithRoute($name) + * @param string $uri + * @param array|string|callable|null $action + * @return \Illuminate\Routing\Route + * @static + */ public static function put($uri, $action = null) { /** @var \Illuminate\Routing\Router $instance */ - return $instance->respondWithRoute($name); + return $instance->put($uri, $action); } /** - * Dispatch the request to the application. + * Register a new PATCH route with the router. * - * @param \Illuminate\Http\Request $request - * @return \Symfony\Component\HttpFoundation\Response + * @param string $uri + * @param array|string|callable|null $action + * @return \Illuminate\Routing\Route * @static - */ - public static function dispatch($request) + */ public static function patch($uri, $action = null) { /** @var \Illuminate\Routing\Router $instance */ - return $instance->dispatch($request); + return $instance->patch($uri, $action); } /** - * Dispatch the request to a route and return the response. + * Register a new DELETE route with the router. * - * @param \Illuminate\Http\Request $request - * @return \Symfony\Component\HttpFoundation\Response + * @param string $uri + * @param array|string|callable|null $action + * @return \Illuminate\Routing\Route * @static - */ - public static function dispatchToRoute($request) + */ public static function delete($uri, $action = null) { /** @var \Illuminate\Routing\Router $instance */ - return $instance->dispatchToRoute($request); + return $instance->delete($uri, $action); } /** - * Gather the middleware for the given route with resolved class names. + * Register a new OPTIONS route with the router. * - * @param \Illuminate\Routing\Route $route - * @return array + * @param string $uri + * @param array|string|callable|null $action + * @return \Illuminate\Routing\Route * @static - */ - public static function gatherRouteMiddleware($route) + */ public static function options($uri, $action = null) { /** @var \Illuminate\Routing\Router $instance */ - return $instance->gatherRouteMiddleware($route); + return $instance->options($uri, $action); } /** - * Resolve a flat array of middleware classes from the provided array. + * Register a new route responding to all verbs. * - * @param array $middleware - * @param array $excluded - * @return array + * @param string $uri + * @param array|string|callable|null $action + * @return \Illuminate\Routing\Route * @static - */ - public static function resolveMiddleware($middleware, $excluded = []) + */ public static function any($uri, $action = null) { /** @var \Illuminate\Routing\Router $instance */ - return $instance->resolveMiddleware($middleware, $excluded); + return $instance->any($uri, $action); } /** - * Create a response instance from the given value. + * Register a new fallback route with the router. * - * @param \Symfony\Component\HttpFoundation\Request $request - * @param mixed $response - * @return \Symfony\Component\HttpFoundation\Response + * @param array|string|callable|null $action + * @return \Illuminate\Routing\Route * @static - */ - public static function prepareResponse($request, $response) + */ public static function fallback($action) { /** @var \Illuminate\Routing\Router $instance */ - return $instance->prepareResponse($request, $response); + return $instance->fallback($action); } /** - * Static version of prepareResponse. + * Create a redirect from one URI to another. * - * @param \Symfony\Component\HttpFoundation\Request $request - * @param mixed $response - * @return \Symfony\Component\HttpFoundation\Response + * @param string $uri + * @param string $destination + * @param int $status + * @return \Illuminate\Routing\Route * @static - */ - public static function toResponse($request, $response) + */ public static function redirect($uri, $destination, $status = 302) { - return \Illuminate\Routing\Router::toResponse($request, $response); + /** @var \Illuminate\Routing\Router $instance */ + return $instance->redirect($uri, $destination, $status); } /** - * Substitute the route bindings onto the route. + * Create a permanent redirect from one URI to another. * - * @param \Illuminate\Routing\Route $route + * @param string $uri + * @param string $destination * @return \Illuminate\Routing\Route - * @throws \Illuminate\Database\Eloquent\ModelNotFoundException<\Illuminate\Database\Eloquent\Model> - * @throws \Illuminate\Routing\Exceptions\BackedEnumCaseNotFoundException * @static - */ - public static function substituteBindings($route) + */ public static function permanentRedirect($uri, $destination) { /** @var \Illuminate\Routing\Router $instance */ - return $instance->substituteBindings($route); + return $instance->permanentRedirect($uri, $destination); } /** - * Substitute the implicit route bindings for the given route. + * Register a new route that returns a view. * - * @param \Illuminate\Routing\Route $route - * @return void - * @throws \Illuminate\Database\Eloquent\ModelNotFoundException<\Illuminate\Database\Eloquent\Model> - * @throws \Illuminate\Routing\Exceptions\BackedEnumCaseNotFoundException + * @param string $uri + * @param string $view + * @param array $data + * @param int|array $status + * @param array $headers + * @return \Illuminate\Routing\Route * @static - */ - public static function substituteImplicitBindings($route) + */ public static function view($uri, $view, $data = [], $status = 200, $headers = []) { /** @var \Illuminate\Routing\Router $instance */ - $instance->substituteImplicitBindings($route); + return $instance->view($uri, $view, $data, $status, $headers); } /** - * Register a route matched event listener. + * Register a new route with the given verbs. * - * @param string|callable $callback - * @return void + * @param array|string $methods + * @param string $uri + * @param array|string|callable|null $action + * @return \Illuminate\Routing\Route * @static - */ - public static function matched($callback) + */ public static function match($methods, $uri, $action = null) { /** @var \Illuminate\Routing\Router $instance */ - $instance->matched($callback); + return $instance->match($methods, $uri, $action); } /** - * Get all of the defined middleware short-hand names. + * Register an array of resource controllers. * - * @return array + * @param array $resources + * @param array $options + * @return void * @static - */ - public static function getMiddleware() + */ public static function resources($resources, $options = []) { /** @var \Illuminate\Routing\Router $instance */ - return $instance->getMiddleware(); + $instance->resources($resources, $options); } /** - * Register a short-hand name for a middleware. + * Route a resource to a controller. * * @param string $name - * @param string $class - * @return \Illuminate\Routing\Router + * @param string $controller + * @param array $options + * @return \Illuminate\Routing\PendingResourceRegistration * @static - */ - public static function aliasMiddleware($name, $class) + */ public static function resource($name, $controller, $options = []) { /** @var \Illuminate\Routing\Router $instance */ - return $instance->aliasMiddleware($name, $class); + return $instance->resource($name, $controller, $options); } /** - * Check if a middlewareGroup with the given name exists. + * Register an array of API resource controllers. * - * @param string $name - * @return bool + * @param array $resources + * @param array $options + * @return void * @static - */ - public static function hasMiddlewareGroup($name) + */ public static function apiResources($resources, $options = []) { /** @var \Illuminate\Routing\Router $instance */ - return $instance->hasMiddlewareGroup($name); + $instance->apiResources($resources, $options); } /** - * Get all of the defined middleware groups. + * Route an API resource to a controller. * - * @return array + * @param string $name + * @param string $controller + * @param array $options + * @return \Illuminate\Routing\PendingResourceRegistration * @static - */ - public static function getMiddlewareGroups() + */ public static function apiResource($name, $controller, $options = []) { /** @var \Illuminate\Routing\Router $instance */ - return $instance->getMiddlewareGroups(); + return $instance->apiResource($name, $controller, $options); } /** - * Register a group of middleware. + * Register an array of singleton resource controllers. * - * @param string $name - * @param array $middleware - * @return \Illuminate\Routing\Router + * @param array $singletons + * @param array $options + * @return void * @static - */ - public static function middlewareGroup($name, $middleware) + */ public static function singletons($singletons, $options = []) { /** @var \Illuminate\Routing\Router $instance */ - return $instance->middlewareGroup($name, $middleware); + $instance->singletons($singletons, $options); } /** - * Add a middleware to the beginning of a middleware group. - * - * If the middleware is already in the group, it will not be added again. + * Route a singleton resource to a controller. * - * @param string $group - * @param string $middleware - * @return \Illuminate\Routing\Router + * @param string $name + * @param string $controller + * @param array $options + * @return \Illuminate\Routing\PendingSingletonResourceRegistration * @static - */ - public static function prependMiddlewareToGroup($group, $middleware) + */ public static function singleton($name, $controller, $options = []) { /** @var \Illuminate\Routing\Router $instance */ - return $instance->prependMiddlewareToGroup($group, $middleware); + return $instance->singleton($name, $controller, $options); } /** - * Add a middleware to the end of a middleware group. - * - * If the middleware is already in the group, it will not be added again. + * Register an array of API singleton resource controllers. * - * @param string $group - * @param string $middleware - * @return \Illuminate\Routing\Router + * @param array $singletons + * @param array $options + * @return void * @static - */ - public static function pushMiddlewareToGroup($group, $middleware) + */ public static function apiSingletons($singletons, $options = []) { /** @var \Illuminate\Routing\Router $instance */ - return $instance->pushMiddlewareToGroup($group, $middleware); + $instance->apiSingletons($singletons, $options); } /** - * Remove the given middleware from the specified group. + * Route an API singleton resource to a controller. * - * @param string $group - * @param string $middleware - * @return \Illuminate\Routing\Router + * @param string $name + * @param string $controller + * @param array $options + * @return \Illuminate\Routing\PendingSingletonResourceRegistration * @static - */ - public static function removeMiddlewareFromGroup($group, $middleware) + */ public static function apiSingleton($name, $controller, $options = []) { /** @var \Illuminate\Routing\Router $instance */ - return $instance->removeMiddlewareFromGroup($group, $middleware); + return $instance->apiSingleton($name, $controller, $options); } /** - * Flush the router's middleware groups. + * Create a route group with shared attributes. * + * @param array $attributes + * @param \Closure|array|string $routes * @return \Illuminate\Routing\Router * @static - */ - public static function flushMiddlewareGroups() + */ public static function group($attributes, $routes) { /** @var \Illuminate\Routing\Router $instance */ - return $instance->flushMiddlewareGroups(); + return $instance->group($attributes, $routes); } /** - * Add a new route parameter binder. + * Merge the given array with the last group stack. * - * @param string $key - * @param string|callable $binder - * @return void + * @param array $new + * @param bool $prependExistingPrefix + * @return array * @static - */ - public static function bind($key, $binder) + */ public static function mergeWithLastGroup($new, $prependExistingPrefix = true) { /** @var \Illuminate\Routing\Router $instance */ - $instance->bind($key, $binder); + return $instance->mergeWithLastGroup($new, $prependExistingPrefix); } /** - * Register a model binder for a wildcard. + * Get the prefix from the last group on the stack. * - * @param string $key - * @param string $class - * @param \Closure|null $callback - * @return void + * @return string * @static - */ - public static function model($key, $class, $callback = null) + */ public static function getLastGroupPrefix() { /** @var \Illuminate\Routing\Router $instance */ - $instance->model($key, $class, $callback); + return $instance->getLastGroupPrefix(); } /** - * Get the binding callback for a given binding. + * Add a route to the underlying route collection. * - * @param string $key - * @return \Closure|null + * @param array|string $methods + * @param string $uri + * @param array|string|callable|null $action + * @return \Illuminate\Routing\Route * @static - */ - public static function getBindingCallback($key) + */ public static function addRoute($methods, $uri, $action) { /** @var \Illuminate\Routing\Router $instance */ - return $instance->getBindingCallback($key); + return $instance->addRoute($methods, $uri, $action); } /** - * Get the global "where" patterns. + * Create a new Route object. * - * @return array + * @param array|string $methods + * @param string $uri + * @param mixed $action + * @return \Illuminate\Routing\Route * @static - */ - public static function getPatterns() + */ public static function newRoute($methods, $uri, $action) { /** @var \Illuminate\Routing\Router $instance */ - return $instance->getPatterns(); + return $instance->newRoute($methods, $uri, $action); } /** - * Set a global where pattern on all routes. + * Return the response returned by the given route. * - * @param string $key - * @param string $pattern - * @return void + * @param string $name + * @return \Symfony\Component\HttpFoundation\Response * @static - */ - public static function pattern($key, $pattern) + */ public static function respondWithRoute($name) { /** @var \Illuminate\Routing\Router $instance */ - $instance->pattern($key, $pattern); + return $instance->respondWithRoute($name); } /** - * Set a group of global where patterns on all routes. + * Dispatch the request to the application. * - * @param array $patterns - * @return void + * @param \Illuminate\Http\Request $request + * @return \Symfony\Component\HttpFoundation\Response * @static - */ - public static function patterns($patterns) + */ public static function dispatch($request) { /** @var \Illuminate\Routing\Router $instance */ - $instance->patterns($patterns); + return $instance->dispatch($request); } /** - * Determine if the router currently has a group stack. + * Dispatch the request to a route and return the response. * - * @return bool + * @param \Illuminate\Http\Request $request + * @return \Symfony\Component\HttpFoundation\Response * @static - */ - public static function hasGroupStack() + */ public static function dispatchToRoute($request) { /** @var \Illuminate\Routing\Router $instance */ - return $instance->hasGroupStack(); + return $instance->dispatchToRoute($request); } /** - * Get the current group stack for the router. + * Gather the middleware for the given route with resolved class names. * + * @param \Illuminate\Routing\Route $route * @return array * @static - */ - public static function getGroupStack() + */ public static function gatherRouteMiddleware($route) { /** @var \Illuminate\Routing\Router $instance */ - return $instance->getGroupStack(); + return $instance->gatherRouteMiddleware($route); } /** - * Get a route parameter for the current route. + * Resolve a flat array of middleware classes from the provided array. * - * @param string $key - * @param string|null $default - * @return mixed - * @static - */ - public static function input($key, $default = null) + * @param array $middleware + * @param array $excluded + * @return array + * @static + */ public static function resolveMiddleware($middleware, $excluded = []) + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->resolveMiddleware($middleware, $excluded); + } + /** + * Create a response instance from the given value. + * + * @param \Symfony\Component\HttpFoundation\Request $request + * @param mixed $response + * @return \Symfony\Component\HttpFoundation\Response + * @static + */ public static function prepareResponse($request, $response) + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->prepareResponse($request, $response); + } + /** + * Static version of prepareResponse. + * + * @param \Symfony\Component\HttpFoundation\Request $request + * @param mixed $response + * @return \Symfony\Component\HttpFoundation\Response + * @static + */ public static function toResponse($request, $response) + { + return \Illuminate\Routing\Router::toResponse($request, $response); + } + /** + * Substitute the route bindings onto the route. + * + * @param \Illuminate\Routing\Route $route + * @return \Illuminate\Routing\Route + * @throws \Illuminate\Database\Eloquent\ModelNotFoundException<\Illuminate\Database\Eloquent\Model> + * @throws \Illuminate\Routing\Exceptions\BackedEnumCaseNotFoundException + * @static + */ public static function substituteBindings($route) + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->substituteBindings($route); + } + /** + * Substitute the implicit route bindings for the given route. + * + * @param \Illuminate\Routing\Route $route + * @return void + * @throws \Illuminate\Database\Eloquent\ModelNotFoundException<\Illuminate\Database\Eloquent\Model> + * @throws \Illuminate\Routing\Exceptions\BackedEnumCaseNotFoundException + * @static + */ public static function substituteImplicitBindings($route) + { + /** @var \Illuminate\Routing\Router $instance */ + $instance->substituteImplicitBindings($route); + } + /** + * Register a callback to to run after implicit bindings are substituted. + * + * @param callable $callback + * @return \Illuminate\Routing\Router + * @static + */ public static function substituteImplicitBindingsUsing($callback) + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->substituteImplicitBindingsUsing($callback); + } + /** + * Register a route matched event listener. + * + * @param string|callable $callback + * @return void + * @static + */ public static function matched($callback) + { + /** @var \Illuminate\Routing\Router $instance */ + $instance->matched($callback); + } + /** + * Get all of the defined middleware short-hand names. + * + * @return array + * @static + */ public static function getMiddleware() + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->getMiddleware(); + } + /** + * Register a short-hand name for a middleware. + * + * @param string $name + * @param string $class + * @return \Illuminate\Routing\Router + * @static + */ public static function aliasMiddleware($name, $class) + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->aliasMiddleware($name, $class); + } + /** + * Check if a middlewareGroup with the given name exists. + * + * @param string $name + * @return bool + * @static + */ public static function hasMiddlewareGroup($name) + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->hasMiddlewareGroup($name); + } + /** + * Get all of the defined middleware groups. + * + * @return array + * @static + */ public static function getMiddlewareGroups() + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->getMiddlewareGroups(); + } + /** + * Register a group of middleware. + * + * @param string $name + * @param array $middleware + * @return \Illuminate\Routing\Router + * @static + */ public static function middlewareGroup($name, $middleware) + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->middlewareGroup($name, $middleware); + } + /** + * Add a middleware to the beginning of a middleware group. + * + * If the middleware is already in the group, it will not be added again. + * + * @param string $group + * @param string $middleware + * @return \Illuminate\Routing\Router + * @static + */ public static function prependMiddlewareToGroup($group, $middleware) + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->prependMiddlewareToGroup($group, $middleware); + } + /** + * Add a middleware to the end of a middleware group. + * + * If the middleware is already in the group, it will not be added again. + * + * @param string $group + * @param string $middleware + * @return \Illuminate\Routing\Router + * @static + */ public static function pushMiddlewareToGroup($group, $middleware) + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->pushMiddlewareToGroup($group, $middleware); + } + /** + * Remove the given middleware from the specified group. + * + * @param string $group + * @param string $middleware + * @return \Illuminate\Routing\Router + * @static + */ public static function removeMiddlewareFromGroup($group, $middleware) + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->removeMiddlewareFromGroup($group, $middleware); + } + /** + * Flush the router's middleware groups. + * + * @return \Illuminate\Routing\Router + * @static + */ public static function flushMiddlewareGroups() + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->flushMiddlewareGroups(); + } + /** + * Add a new route parameter binder. + * + * @param string $key + * @param string|callable $binder + * @return void + * @static + */ public static function bind($key, $binder) + { + /** @var \Illuminate\Routing\Router $instance */ + $instance->bind($key, $binder); + } + /** + * Register a model binder for a wildcard. + * + * @param string $key + * @param string $class + * @param \Closure|null $callback + * @return void + * @static + */ public static function model($key, $class, $callback = null) + { + /** @var \Illuminate\Routing\Router $instance */ + $instance->model($key, $class, $callback); + } + /** + * Get the binding callback for a given binding. + * + * @param string $key + * @return \Closure|null + * @static + */ public static function getBindingCallback($key) + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->getBindingCallback($key); + } + /** + * Get the global "where" patterns. + * + * @return array + * @static + */ public static function getPatterns() + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->getPatterns(); + } + /** + * Set a global where pattern on all routes. + * + * @param string $key + * @param string $pattern + * @return void + * @static + */ public static function pattern($key, $pattern) + { + /** @var \Illuminate\Routing\Router $instance */ + $instance->pattern($key, $pattern); + } + /** + * Set a group of global where patterns on all routes. + * + * @param array $patterns + * @return void + * @static + */ public static function patterns($patterns) + { + /** @var \Illuminate\Routing\Router $instance */ + $instance->patterns($patterns); + } + /** + * Determine if the router currently has a group stack. + * + * @return bool + * @static + */ public static function hasGroupStack() + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->hasGroupStack(); + } + /** + * Get the current group stack for the router. + * + * @return array + * @static + */ public static function getGroupStack() + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->getGroupStack(); + } + /** + * Get a route parameter for the current route. + * + * @param string $key + * @param string|null $default + * @return mixed + * @static + */ public static function input($key, $default = null) { /** @var \Illuminate\Routing\Router $instance */ return $instance->input($key, $default); @@ -13635,8 +13250,7 @@ public static function input($key, $default = null) * * @return \Illuminate\Http\Request * @static - */ - public static function getCurrentRequest() + */ public static function getCurrentRequest() { /** @var \Illuminate\Routing\Router $instance */ return $instance->getCurrentRequest(); @@ -13646,8 +13260,7 @@ public static function getCurrentRequest() * * @return \Illuminate\Routing\Route|null * @static - */ - public static function getCurrentRoute() + */ public static function getCurrentRoute() { /** @var \Illuminate\Routing\Router $instance */ return $instance->getCurrentRoute(); @@ -13657,8 +13270,7 @@ public static function getCurrentRoute() * * @return \Illuminate\Routing\Route|null * @static - */ - public static function current() + */ public static function current() { /** @var \Illuminate\Routing\Router $instance */ return $instance->current(); @@ -13669,8 +13281,7 @@ public static function current() * @param string|array $name * @return bool * @static - */ - public static function has($name) + */ public static function has($name) { /** @var \Illuminate\Routing\Router $instance */ return $instance->has($name); @@ -13680,8 +13291,7 @@ public static function has($name) * * @return string|null * @static - */ - public static function currentRouteName() + */ public static function currentRouteName() { /** @var \Illuminate\Routing\Router $instance */ return $instance->currentRouteName(); @@ -13692,8 +13302,7 @@ public static function currentRouteName() * @param mixed $patterns * @return bool * @static - */ - public static function is(...$patterns) + */ public static function is(...$patterns) { /** @var \Illuminate\Routing\Router $instance */ return $instance->is(...$patterns); @@ -13704,8 +13313,7 @@ public static function is(...$patterns) * @param mixed $patterns * @return bool * @static - */ - public static function currentRouteNamed(...$patterns) + */ public static function currentRouteNamed(...$patterns) { /** @var \Illuminate\Routing\Router $instance */ return $instance->currentRouteNamed(...$patterns); @@ -13715,8 +13323,7 @@ public static function currentRouteNamed(...$patterns) * * @return string|null * @static - */ - public static function currentRouteAction() + */ public static function currentRouteAction() { /** @var \Illuminate\Routing\Router $instance */ return $instance->currentRouteAction(); @@ -13727,8 +13334,7 @@ public static function currentRouteAction() * @param array $patterns * @return bool * @static - */ - public static function uses(...$patterns) + */ public static function uses(...$patterns) { /** @var \Illuminate\Routing\Router $instance */ return $instance->uses(...$patterns); @@ -13739,8 +13345,7 @@ public static function uses(...$patterns) * @param string $action * @return bool * @static - */ - public static function currentRouteUses($action) + */ public static function currentRouteUses($action) { /** @var \Illuminate\Routing\Router $instance */ return $instance->currentRouteUses($action); @@ -13751,8 +13356,7 @@ public static function currentRouteUses($action) * @param bool $singular * @return void * @static - */ - public static function singularResourceParameters($singular = true) + */ public static function singularResourceParameters($singular = true) { /** @var \Illuminate\Routing\Router $instance */ $instance->singularResourceParameters($singular); @@ -13763,8 +13367,7 @@ public static function singularResourceParameters($singular = true) * @param array $parameters * @return void * @static - */ - public static function resourceParameters($parameters = []) + */ public static function resourceParameters($parameters = []) { /** @var \Illuminate\Routing\Router $instance */ $instance->resourceParameters($parameters); @@ -13775,8 +13378,7 @@ public static function resourceParameters($parameters = []) * @param array $verbs * @return array|null * @static - */ - public static function resourceVerbs($verbs = []) + */ public static function resourceVerbs($verbs = []) { /** @var \Illuminate\Routing\Router $instance */ return $instance->resourceVerbs($verbs); @@ -13786,8 +13388,7 @@ public static function resourceVerbs($verbs = []) * * @return \Illuminate\Routing\RouteCollectionInterface * @static - */ - public static function getRoutes() + */ public static function getRoutes() { /** @var \Illuminate\Routing\Router $instance */ return $instance->getRoutes(); @@ -13798,8 +13399,7 @@ public static function getRoutes() * @param \Illuminate\Routing\RouteCollection $routes * @return void * @static - */ - public static function setRoutes($routes) + */ public static function setRoutes($routes) { /** @var \Illuminate\Routing\Router $instance */ $instance->setRoutes($routes); @@ -13810,8 +13410,7 @@ public static function setRoutes($routes) * @param array $routes * @return void * @static - */ - public static function setCompiledRoutes($routes) + */ public static function setCompiledRoutes($routes) { /** @var \Illuminate\Routing\Router $instance */ $instance->setCompiledRoutes($routes); @@ -13822,8 +13421,7 @@ public static function setCompiledRoutes($routes) * @param array $middleware * @return array * @static - */ - public static function uniqueMiddleware($middleware) + */ public static function uniqueMiddleware($middleware) { return \Illuminate\Routing\Router::uniqueMiddleware($middleware); } @@ -13833,8 +13431,7 @@ public static function uniqueMiddleware($middleware) * @param \Illuminate\Container\Container $container * @return \Illuminate\Routing\Router * @static - */ - public static function setContainer($container) + */ public static function setContainer($container) { /** @var \Illuminate\Routing\Router $instance */ return $instance->setContainer($container); @@ -13846,8 +13443,7 @@ public static function setContainer($container) * @param object|callable $macro * @return void * @static - */ - public static function macro($name, $macro) + */ public static function macro($name, $macro) { \Illuminate\Routing\Router::macro($name, $macro); } @@ -13859,8 +13455,7 @@ public static function macro($name, $macro) * @return void * @throws \ReflectionException * @static - */ - public static function mixin($mixin, $replace = true) + */ public static function mixin($mixin, $replace = true) { \Illuminate\Routing\Router::mixin($mixin, $replace); } @@ -13870,8 +13465,7 @@ public static function mixin($mixin, $replace = true) * @param string $name * @return bool * @static - */ - public static function hasMacro($name) + */ public static function hasMacro($name) { return \Illuminate\Routing\Router::hasMacro($name); } @@ -13880,8 +13474,7 @@ public static function hasMacro($name) * * @return void * @static - */ - public static function flushMacros() + */ public static function flushMacros() { \Illuminate\Routing\Router::flushMacros(); } @@ -13893,28 +13486,24 @@ public static function flushMacros() * @return mixed * @throws \BadMethodCallException * @static - */ - public static function macroCall($method, $parameters) + */ public static function macroCall($method, $parameters) { /** @var \Illuminate\Routing\Router $instance */ return $instance->macroCall($method, $parameters); } - - } + } /** * * * @see \Illuminate\Database\Schema\Builder - */ - class Schema { + */ class Schema { /** * Create a database in the schema. * * @param string $name * @return bool * @static - */ - public static function createDatabase($name) + */ public static function createDatabase($name) { /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ return $instance->createDatabase($name); @@ -13925,79 +13514,105 @@ public static function createDatabase($name) * @param string $name * @return bool * @static - */ - public static function dropDatabaseIfExists($name) + */ public static function dropDatabaseIfExists($name) { /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ return $instance->dropDatabaseIfExists($name); } /** - * Determine if the given table exists. + * Get the tables for the database. * - * @param string $table - * @return bool + * @return array * @static - */ - public static function hasTable($table) + */ public static function getTables() { /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - return $instance->hasTable($table); + return $instance->getTables(); } /** - * Get the column listing for a given table. + * Get the views for the database. * - * @param string $table * @return array * @static - */ - public static function getColumnListing($table) + */ public static function getViews() { /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - return $instance->getColumnListing($table); + return $instance->getViews(); } /** - * Drop all tables from the database. + * Get all of the table names for the database. * - * @return void + * @deprecated Will be removed in a future Laravel version. + * @return array * @static - */ - public static function dropAllTables() + */ public static function getAllTables() { /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - $instance->dropAllTables(); + return $instance->getAllTables(); } /** - * Drop all views from the database. + * Get all of the view names for the database. * - * @return void + * @deprecated Will be removed in a future Laravel version. + * @return array * @static - */ - public static function dropAllViews() + */ public static function getAllViews() { /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - $instance->dropAllViews(); + return $instance->getAllViews(); } /** - * Get all of the table names for the database. + * Get the columns for a given table. * + * @param string $table * @return array * @static - */ - public static function getAllTables() + */ public static function getColumns($table) { /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - return $instance->getAllTables(); + return $instance->getColumns($table); } /** - * Get all of the view names for the database. + * Get the indexes for a given table. * + * @param string $table * @return array * @static - */ - public static function getAllViews() + */ public static function getIndexes($table) { /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - return $instance->getAllViews(); + return $instance->getIndexes($table); + } + /** + * Get the foreign keys for a given table. + * + * @param string $table + * @return array + * @static + */ public static function getForeignKeys($table) + { + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + return $instance->getForeignKeys($table); + } + /** + * Drop all tables from the database. + * + * @return void + * @static + */ public static function dropAllTables() + { + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + $instance->dropAllTables(); + } + /** + * Drop all views from the database. + * + * @return void + * @static + */ public static function dropAllViews() + { + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + $instance->dropAllViews(); } /** * Set the default string length for migrations. @@ -14005,8 +13620,7 @@ public static function getAllViews() * @param int $length * @return void * @static - */ - public static function defaultStringLength($length) + */ public static function defaultStringLength($length) { //Method inherited from \Illuminate\Database\Schema\Builder \Illuminate\Database\Schema\MySqlBuilder::defaultStringLength($length); } @@ -14017,8 +13631,7 @@ public static function defaultStringLength($length) * @return void * @throws \InvalidArgumentException * @static - */ - public static function defaultMorphKeyType($type) + */ public static function defaultMorphKeyType($type) { //Method inherited from \Illuminate\Database\Schema\Builder \Illuminate\Database\Schema\MySqlBuilder::defaultMorphKeyType($type); } @@ -14027,8 +13640,7 @@ public static function defaultMorphKeyType($type) * * @return void * @static - */ - public static function morphUsingUuids() + */ public static function morphUsingUuids() { //Method inherited from \Illuminate\Database\Schema\Builder \Illuminate\Database\Schema\MySqlBuilder::morphUsingUuids(); } @@ -14037,21 +13649,61 @@ public static function morphUsingUuids() * * @return void * @static - */ - public static function morphUsingUlids() + */ public static function morphUsingUlids() { //Method inherited from \Illuminate\Database\Schema\Builder \Illuminate\Database\Schema\MySqlBuilder::morphUsingUlids(); } /** - * Attempt to use native schema operations for dropping and renaming columns, even if Doctrine DBAL is installed. + * Attempt to use native schema operations for dropping, renaming, and modifying columns, even if Doctrine DBAL is installed. * * @param bool $value * @return void * @static - */ - public static function useNativeSchemaOperationsIfPossible($value = true) + */ public static function useNativeSchemaOperationsIfPossible($value = true) { //Method inherited from \Illuminate\Database\Schema\Builder \Illuminate\Database\Schema\MySqlBuilder::useNativeSchemaOperationsIfPossible($value); + } + /** + * Determine if the given table exists. + * + * @param string $table + * @return bool + * @static + */ public static function hasTable($table) + { //Method inherited from \Illuminate\Database\Schema\Builder + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + return $instance->hasTable($table); + } + /** + * Determine if the given view exists. + * + * @param string $view + * @return bool + * @static + */ public static function hasView($view) + { //Method inherited from \Illuminate\Database\Schema\Builder + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + return $instance->hasView($view); + } + /** + * Get the names of the tables that belong to the database. + * + * @return array + * @static + */ public static function getTableListing() + { //Method inherited from \Illuminate\Database\Schema\Builder + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + return $instance->getTableListing(); + } + /** + * Get the user-defined types that belong to the database. + * + * @return array + * @static + */ public static function getTypes() + { //Method inherited from \Illuminate\Database\Schema\Builder + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + return $instance->getTypes(); } /** * Determine if the given table has a given column. @@ -14060,8 +13712,7 @@ public static function useNativeSchemaOperationsIfPossible($value = true) * @param string $column * @return bool * @static - */ - public static function hasColumn($table, $column) + */ public static function hasColumn($table, $column) { //Method inherited from \Illuminate\Database\Schema\Builder /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ return $instance->hasColumn($table, $column); @@ -14073,8 +13724,7 @@ public static function hasColumn($table, $column) * @param array $columns * @return bool * @static - */ - public static function hasColumns($table, $columns) + */ public static function hasColumns($table, $columns) { //Method inherited from \Illuminate\Database\Schema\Builder /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ return $instance->hasColumns($table, $columns); @@ -14087,8 +13737,7 @@ public static function hasColumns($table, $columns) * @param \Closure $callback * @return void * @static - */ - public static function whenTableHasColumn($table, $column, $callback) + */ public static function whenTableHasColumn($table, $column, $callback) { //Method inherited from \Illuminate\Database\Schema\Builder /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ $instance->whenTableHasColumn($table, $column, $callback); @@ -14101,8 +13750,7 @@ public static function whenTableHasColumn($table, $column, $callback) * @param \Closure $callback * @return void * @static - */ - public static function whenTableDoesntHaveColumn($table, $column, $callback) + */ public static function whenTableDoesntHaveColumn($table, $column, $callback) { //Method inherited from \Illuminate\Database\Schema\Builder /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ $instance->whenTableDoesntHaveColumn($table, $column, $callback); @@ -14112,13 +13760,48 @@ public static function whenTableDoesntHaveColumn($table, $column, $callback) * * @param string $table * @param string $column + * @param bool $fullDefinition * @return string * @static - */ - public static function getColumnType($table, $column) + */ public static function getColumnType($table, $column, $fullDefinition = false) + { //Method inherited from \Illuminate\Database\Schema\Builder + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + return $instance->getColumnType($table, $column, $fullDefinition); + } + /** + * Get the column listing for a given table. + * + * @param string $table + * @return array + * @static + */ public static function getColumnListing($table) { //Method inherited from \Illuminate\Database\Schema\Builder /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - return $instance->getColumnType($table, $column); + return $instance->getColumnListing($table); + } + /** + * Get the names of the indexes for a given table. + * + * @param string $table + * @return array + * @static + */ public static function getIndexListing($table) + { //Method inherited from \Illuminate\Database\Schema\Builder + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + return $instance->getIndexListing($table); + } + /** + * Determine if the given table has a given index. + * + * @param string $table + * @param string|array $index + * @param string|null $type + * @return bool + * @static + */ public static function hasIndex($table, $index, $type = null) + { //Method inherited from \Illuminate\Database\Schema\Builder + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + return $instance->hasIndex($table, $index, $type); } /** * Modify a table on the schema. @@ -14127,8 +13810,7 @@ public static function getColumnType($table, $column) * @param \Closure $callback * @return void * @static - */ - public static function table($table, $callback) + */ public static function table($table, $callback) { //Method inherited from \Illuminate\Database\Schema\Builder /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ $instance->table($table, $callback); @@ -14140,8 +13822,7 @@ public static function table($table, $callback) * @param \Closure $callback * @return void * @static - */ - public static function create($table, $callback) + */ public static function create($table, $callback) { //Method inherited from \Illuminate\Database\Schema\Builder /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ $instance->create($table, $callback); @@ -14152,8 +13833,7 @@ public static function create($table, $callback) * @param string $table * @return void * @static - */ - public static function drop($table) + */ public static function drop($table) { //Method inherited from \Illuminate\Database\Schema\Builder /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ $instance->drop($table); @@ -14164,8 +13844,7 @@ public static function drop($table) * @param string $table * @return void * @static - */ - public static function dropIfExists($table) + */ public static function dropIfExists($table) { //Method inherited from \Illuminate\Database\Schema\Builder /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ $instance->dropIfExists($table); @@ -14177,8 +13856,7 @@ public static function dropIfExists($table) * @param string|array $columns * @return void * @static - */ - public static function dropColumns($table, $columns) + */ public static function dropColumns($table, $columns) { //Method inherited from \Illuminate\Database\Schema\Builder /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ $instance->dropColumns($table, $columns); @@ -14189,8 +13867,7 @@ public static function dropColumns($table, $columns) * @return void * @throws \LogicException * @static - */ - public static function dropAllTypes() + */ public static function dropAllTypes() { //Method inherited from \Illuminate\Database\Schema\Builder /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ $instance->dropAllTypes(); @@ -14202,8 +13879,7 @@ public static function dropAllTypes() * @param string $to * @return void * @static - */ - public static function rename($from, $to) + */ public static function rename($from, $to) { //Method inherited from \Illuminate\Database\Schema\Builder /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ $instance->rename($from, $to); @@ -14213,8 +13889,7 @@ public static function rename($from, $to) * * @return bool * @static - */ - public static function enableForeignKeyConstraints() + */ public static function enableForeignKeyConstraints() { //Method inherited from \Illuminate\Database\Schema\Builder /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ return $instance->enableForeignKeyConstraints(); @@ -14224,8 +13899,7 @@ public static function enableForeignKeyConstraints() * * @return bool * @static - */ - public static function disableForeignKeyConstraints() + */ public static function disableForeignKeyConstraints() { //Method inherited from \Illuminate\Database\Schema\Builder /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ return $instance->disableForeignKeyConstraints(); @@ -14236,8 +13910,7 @@ public static function disableForeignKeyConstraints() * @param \Closure $callback * @return mixed * @static - */ - public static function withoutForeignKeyConstraints($callback) + */ public static function withoutForeignKeyConstraints($callback) { //Method inherited from \Illuminate\Database\Schema\Builder /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ return $instance->withoutForeignKeyConstraints($callback); @@ -14247,8 +13920,7 @@ public static function withoutForeignKeyConstraints($callback) * * @return \Illuminate\Database\Connection * @static - */ - public static function getConnection() + */ public static function getConnection() { //Method inherited from \Illuminate\Database\Schema\Builder /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ return $instance->getConnection(); @@ -14259,8 +13931,7 @@ public static function getConnection() * @param \Illuminate\Database\Connection $connection * @return \Illuminate\Database\Schema\MySqlBuilder * @static - */ - public static function setConnection($connection) + */ public static function setConnection($connection) { //Method inherited from \Illuminate\Database\Schema\Builder /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ return $instance->setConnection($connection); @@ -14271,27 +13942,65 @@ public static function setConnection($connection) * @param \Closure $resolver * @return void * @static - */ - public static function blueprintResolver($resolver) + */ public static function blueprintResolver($resolver) { //Method inherited from \Illuminate\Database\Schema\Builder /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ $instance->blueprintResolver($resolver); } - - } + /** + * Register a custom macro. + * + * @param string $name + * @param object|callable $macro + * @return void + * @static + */ public static function macro($name, $macro) + { //Method inherited from \Illuminate\Database\Schema\Builder + \Illuminate\Database\Schema\MySqlBuilder::macro($name, $macro); + } + /** + * Mix another object into the class. + * + * @param object $mixin + * @param bool $replace + * @return void + * @throws \ReflectionException + * @static + */ public static function mixin($mixin, $replace = true) + { //Method inherited from \Illuminate\Database\Schema\Builder + \Illuminate\Database\Schema\MySqlBuilder::mixin($mixin, $replace); + } + /** + * Checks if macro is registered. + * + * @param string $name + * @return bool + * @static + */ public static function hasMacro($name) + { //Method inherited from \Illuminate\Database\Schema\Builder + return \Illuminate\Database\Schema\MySqlBuilder::hasMacro($name); + } + /** + * Flush the existing macros. + * + * @return void + * @static + */ public static function flushMacros() + { //Method inherited from \Illuminate\Database\Schema\Builder + \Illuminate\Database\Schema\MySqlBuilder::flushMacros(); + } + } /** * * * @see \Illuminate\Session\SessionManager - */ - class Session { + */ class Session { /** * Determine if requests for the same session should wait for each to finish before executing. * * @return bool * @static - */ - public static function shouldBlock() + */ public static function shouldBlock() { /** @var \Illuminate\Session\SessionManager $instance */ return $instance->shouldBlock(); @@ -14301,19 +14010,37 @@ public static function shouldBlock() * * @return string|null * @static - */ - public static function blockDriver() + */ public static function blockDriver() { /** @var \Illuminate\Session\SessionManager $instance */ return $instance->blockDriver(); + } + /** + * Get the maximum number of seconds the session lock should be held for. + * + * @return int + * @static + */ public static function defaultRouteBlockLockSeconds() + { + /** @var \Illuminate\Session\SessionManager $instance */ + return $instance->defaultRouteBlockLockSeconds(); + } + /** + * Get the maximum number of seconds to wait while attempting to acquire a route block session lock. + * + * @return int + * @static + */ public static function defaultRouteBlockWaitSeconds() + { + /** @var \Illuminate\Session\SessionManager $instance */ + return $instance->defaultRouteBlockWaitSeconds(); } /** * Get the session configuration. * * @return array * @static - */ - public static function getSessionConfig() + */ public static function getSessionConfig() { /** @var \Illuminate\Session\SessionManager $instance */ return $instance->getSessionConfig(); @@ -14323,8 +14050,7 @@ public static function getSessionConfig() * * @return string * @static - */ - public static function getDefaultDriver() + */ public static function getDefaultDriver() { /** @var \Illuminate\Session\SessionManager $instance */ return $instance->getDefaultDriver(); @@ -14335,8 +14061,7 @@ public static function getDefaultDriver() * @param string $name * @return void * @static - */ - public static function setDefaultDriver($name) + */ public static function setDefaultDriver($name) { /** @var \Illuminate\Session\SessionManager $instance */ $instance->setDefaultDriver($name); @@ -14348,8 +14073,7 @@ public static function setDefaultDriver($name) * @return mixed * @throws \InvalidArgumentException * @static - */ - public static function driver($driver = null) + */ public static function driver($driver = null) { //Method inherited from \Illuminate\Support\Manager /** @var \Illuminate\Session\SessionManager $instance */ return $instance->driver($driver); @@ -14361,8 +14085,7 @@ public static function driver($driver = null) * @param \Closure $callback * @return \Illuminate\Session\SessionManager * @static - */ - public static function extend($driver, $callback) + */ public static function extend($driver, $callback) { //Method inherited from \Illuminate\Support\Manager /** @var \Illuminate\Session\SessionManager $instance */ return $instance->extend($driver, $callback); @@ -14372,8 +14095,7 @@ public static function extend($driver, $callback) * * @return array * @static - */ - public static function getDrivers() + */ public static function getDrivers() { //Method inherited from \Illuminate\Support\Manager /** @var \Illuminate\Session\SessionManager $instance */ return $instance->getDrivers(); @@ -14383,8 +14105,7 @@ public static function getDrivers() * * @return \Illuminate\Contracts\Container\Container * @static - */ - public static function getContainer() + */ public static function getContainer() { //Method inherited from \Illuminate\Support\Manager /** @var \Illuminate\Session\SessionManager $instance */ return $instance->getContainer(); @@ -14395,8 +14116,7 @@ public static function getContainer() * @param \Illuminate\Contracts\Container\Container $container * @return \Illuminate\Session\SessionManager * @static - */ - public static function setContainer($container) + */ public static function setContainer($container) { //Method inherited from \Illuminate\Support\Manager /** @var \Illuminate\Session\SessionManager $instance */ return $instance->setContainer($container); @@ -14406,8 +14126,7 @@ public static function setContainer($container) * * @return \Illuminate\Session\SessionManager * @static - */ - public static function forgetDrivers() + */ public static function forgetDrivers() { //Method inherited from \Illuminate\Support\Manager /** @var \Illuminate\Session\SessionManager $instance */ return $instance->forgetDrivers(); @@ -14417,8 +14136,7 @@ public static function forgetDrivers() * * @return bool * @static - */ - public static function start() + */ public static function start() { /** @var \Illuminate\Session\Store $instance */ return $instance->start(); @@ -14428,8 +14146,7 @@ public static function start() * * @return void * @static - */ - public static function save() + */ public static function save() { /** @var \Illuminate\Session\Store $instance */ $instance->save(); @@ -14439,8 +14156,7 @@ public static function save() * * @return void * @static - */ - public static function ageFlashData() + */ public static function ageFlashData() { /** @var \Illuminate\Session\Store $instance */ $instance->ageFlashData(); @@ -14450,8 +14166,7 @@ public static function ageFlashData() * * @return array * @static - */ - public static function all() + */ public static function all() { /** @var \Illuminate\Session\Store $instance */ return $instance->all(); @@ -14462,11 +14177,21 @@ public static function all() * @param array $keys * @return array * @static - */ - public static function only($keys) + */ public static function only($keys) { /** @var \Illuminate\Session\Store $instance */ return $instance->only($keys); + } + /** + * Get all the session data except for a specified array of items. + * + * @param array $keys + * @return array + * @static + */ public static function except($keys) + { + /** @var \Illuminate\Session\Store $instance */ + return $instance->except($keys); } /** * Checks if a key exists. @@ -14474,8 +14199,7 @@ public static function only($keys) * @param string|array $key * @return bool * @static - */ - public static function exists($key) + */ public static function exists($key) { /** @var \Illuminate\Session\Store $instance */ return $instance->exists($key); @@ -14486,8 +14210,7 @@ public static function exists($key) * @param string|array $key * @return bool * @static - */ - public static function missing($key) + */ public static function missing($key) { /** @var \Illuminate\Session\Store $instance */ return $instance->missing($key); @@ -14498,8 +14221,7 @@ public static function missing($key) * @param string|array $key * @return bool * @static - */ - public static function has($key) + */ public static function has($key) { /** @var \Illuminate\Session\Store $instance */ return $instance->has($key); @@ -14511,8 +14233,7 @@ public static function has($key) * @param mixed $default * @return mixed * @static - */ - public static function get($key, $default = null) + */ public static function get($key, $default = null) { /** @var \Illuminate\Session\Store $instance */ return $instance->get($key, $default); @@ -14524,8 +14245,7 @@ public static function get($key, $default = null) * @param mixed $default * @return mixed * @static - */ - public static function pull($key, $default = null) + */ public static function pull($key, $default = null) { /** @var \Illuminate\Session\Store $instance */ return $instance->pull($key, $default); @@ -14536,8 +14256,7 @@ public static function pull($key, $default = null) * @param string|null $key * @return bool * @static - */ - public static function hasOldInput($key = null) + */ public static function hasOldInput($key = null) { /** @var \Illuminate\Session\Store $instance */ return $instance->hasOldInput($key); @@ -14549,8 +14268,7 @@ public static function hasOldInput($key = null) * @param mixed $default * @return mixed * @static - */ - public static function getOldInput($key = null, $default = null) + */ public static function getOldInput($key = null, $default = null) { /** @var \Illuminate\Session\Store $instance */ return $instance->getOldInput($key, $default); @@ -14561,8 +14279,7 @@ public static function getOldInput($key = null, $default = null) * @param array $attributes * @return void * @static - */ - public static function replace($attributes) + */ public static function replace($attributes) { /** @var \Illuminate\Session\Store $instance */ $instance->replace($attributes); @@ -14574,8 +14291,7 @@ public static function replace($attributes) * @param mixed $value * @return void * @static - */ - public static function put($key, $value = null) + */ public static function put($key, $value = null) { /** @var \Illuminate\Session\Store $instance */ $instance->put($key, $value); @@ -14587,8 +14303,7 @@ public static function put($key, $value = null) * @param \Closure $callback * @return mixed * @static - */ - public static function remember($key, $callback) + */ public static function remember($key, $callback) { /** @var \Illuminate\Session\Store $instance */ return $instance->remember($key, $callback); @@ -14600,8 +14315,7 @@ public static function remember($key, $callback) * @param mixed $value * @return void * @static - */ - public static function push($key, $value) + */ public static function push($key, $value) { /** @var \Illuminate\Session\Store $instance */ $instance->push($key, $value); @@ -14613,8 +14327,7 @@ public static function push($key, $value) * @param int $amount * @return mixed * @static - */ - public static function increment($key, $amount = 1) + */ public static function increment($key, $amount = 1) { /** @var \Illuminate\Session\Store $instance */ return $instance->increment($key, $amount); @@ -14626,8 +14339,7 @@ public static function increment($key, $amount = 1) * @param int $amount * @return int * @static - */ - public static function decrement($key, $amount = 1) + */ public static function decrement($key, $amount = 1) { /** @var \Illuminate\Session\Store $instance */ return $instance->decrement($key, $amount); @@ -14639,8 +14351,7 @@ public static function decrement($key, $amount = 1) * @param mixed $value * @return void * @static - */ - public static function flash($key, $value = true) + */ public static function flash($key, $value = true) { /** @var \Illuminate\Session\Store $instance */ $instance->flash($key, $value); @@ -14652,8 +14363,7 @@ public static function flash($key, $value = true) * @param mixed $value * @return void * @static - */ - public static function now($key, $value) + */ public static function now($key, $value) { /** @var \Illuminate\Session\Store $instance */ $instance->now($key, $value); @@ -14663,8 +14373,7 @@ public static function now($key, $value) * * @return void * @static - */ - public static function reflash() + */ public static function reflash() { /** @var \Illuminate\Session\Store $instance */ $instance->reflash(); @@ -14675,8 +14384,7 @@ public static function reflash() * @param array|mixed $keys * @return void * @static - */ - public static function keep($keys = null) + */ public static function keep($keys = null) { /** @var \Illuminate\Session\Store $instance */ $instance->keep($keys); @@ -14687,8 +14395,7 @@ public static function keep($keys = null) * @param array $value * @return void * @static - */ - public static function flashInput($value) + */ public static function flashInput($value) { /** @var \Illuminate\Session\Store $instance */ $instance->flashInput($value); @@ -14699,8 +14406,7 @@ public static function flashInput($value) * @param string $key * @return mixed * @static - */ - public static function remove($key) + */ public static function remove($key) { /** @var \Illuminate\Session\Store $instance */ return $instance->remove($key); @@ -14711,8 +14417,7 @@ public static function remove($key) * @param string|array $keys * @return void * @static - */ - public static function forget($keys) + */ public static function forget($keys) { /** @var \Illuminate\Session\Store $instance */ $instance->forget($keys); @@ -14722,8 +14427,7 @@ public static function forget($keys) * * @return void * @static - */ - public static function flush() + */ public static function flush() { /** @var \Illuminate\Session\Store $instance */ $instance->flush(); @@ -14733,8 +14437,7 @@ public static function flush() * * @return bool * @static - */ - public static function invalidate() + */ public static function invalidate() { /** @var \Illuminate\Session\Store $instance */ return $instance->invalidate(); @@ -14745,8 +14448,7 @@ public static function invalidate() * @param bool $destroy * @return bool * @static - */ - public static function regenerate($destroy = false) + */ public static function regenerate($destroy = false) { /** @var \Illuminate\Session\Store $instance */ return $instance->regenerate($destroy); @@ -14757,8 +14459,7 @@ public static function regenerate($destroy = false) * @param bool $destroy * @return bool * @static - */ - public static function migrate($destroy = false) + */ public static function migrate($destroy = false) { /** @var \Illuminate\Session\Store $instance */ return $instance->migrate($destroy); @@ -14768,8 +14469,7 @@ public static function migrate($destroy = false) * * @return bool * @static - */ - public static function isStarted() + */ public static function isStarted() { /** @var \Illuminate\Session\Store $instance */ return $instance->isStarted(); @@ -14779,8 +14479,7 @@ public static function isStarted() * * @return string * @static - */ - public static function getName() + */ public static function getName() { /** @var \Illuminate\Session\Store $instance */ return $instance->getName(); @@ -14791,8 +14490,7 @@ public static function getName() * @param string $name * @return void * @static - */ - public static function setName($name) + */ public static function setName($name) { /** @var \Illuminate\Session\Store $instance */ $instance->setName($name); @@ -14802,8 +14500,7 @@ public static function setName($name) * * @return string * @static - */ - public static function getId() + */ public static function getId() { /** @var \Illuminate\Session\Store $instance */ return $instance->getId(); @@ -14814,8 +14511,7 @@ public static function getId() * @param string|null $id * @return void * @static - */ - public static function setId($id) + */ public static function setId($id) { /** @var \Illuminate\Session\Store $instance */ $instance->setId($id); @@ -14826,8 +14522,7 @@ public static function setId($id) * @param string|null $id * @return bool * @static - */ - public static function isValidId($id) + */ public static function isValidId($id) { /** @var \Illuminate\Session\Store $instance */ return $instance->isValidId($id); @@ -14838,8 +14533,7 @@ public static function isValidId($id) * @param bool $value * @return void * @static - */ - public static function setExists($value) + */ public static function setExists($value) { /** @var \Illuminate\Session\Store $instance */ $instance->setExists($value); @@ -14849,8 +14543,7 @@ public static function setExists($value) * * @return string * @static - */ - public static function token() + */ public static function token() { /** @var \Illuminate\Session\Store $instance */ return $instance->token(); @@ -14860,8 +14553,7 @@ public static function token() * * @return void * @static - */ - public static function regenerateToken() + */ public static function regenerateToken() { /** @var \Illuminate\Session\Store $instance */ $instance->regenerateToken(); @@ -14871,8 +14563,7 @@ public static function regenerateToken() * * @return string|null * @static - */ - public static function previousUrl() + */ public static function previousUrl() { /** @var \Illuminate\Session\Store $instance */ return $instance->previousUrl(); @@ -14883,8 +14574,7 @@ public static function previousUrl() * @param string $url * @return void * @static - */ - public static function setPreviousUrl($url) + */ public static function setPreviousUrl($url) { /** @var \Illuminate\Session\Store $instance */ $instance->setPreviousUrl($url); @@ -14894,8 +14584,7 @@ public static function setPreviousUrl($url) * * @return void * @static - */ - public static function passwordConfirmed() + */ public static function passwordConfirmed() { /** @var \Illuminate\Session\Store $instance */ $instance->passwordConfirmed(); @@ -14905,8 +14594,7 @@ public static function passwordConfirmed() * * @return \SessionHandlerInterface * @static - */ - public static function getHandler() + */ public static function getHandler() { /** @var \Illuminate\Session\Store $instance */ return $instance->getHandler(); @@ -14917,8 +14605,7 @@ public static function getHandler() * @param \SessionHandlerInterface $handler * @return \SessionHandlerInterface * @static - */ - public static function setHandler($handler) + */ public static function setHandler($handler) { /** @var \Illuminate\Session\Store $instance */ return $instance->setHandler($handler); @@ -14928,8 +14615,7 @@ public static function setHandler($handler) * * @return bool * @static - */ - public static function handlerNeedsRequest() + */ public static function handlerNeedsRequest() { /** @var \Illuminate\Session\Store $instance */ return $instance->handlerNeedsRequest(); @@ -14940,8 +14626,7 @@ public static function handlerNeedsRequest() * @param \Illuminate\Http\Request $request * @return void * @static - */ - public static function setRequestOnHandler($request) + */ public static function setRequestOnHandler($request) { /** @var \Illuminate\Session\Store $instance */ $instance->setRequestOnHandler($request); @@ -14953,8 +14638,7 @@ public static function setRequestOnHandler($request) * @param object|callable $macro * @return void * @static - */ - public static function macro($name, $macro) + */ public static function macro($name, $macro) { \Illuminate\Session\Store::macro($name, $macro); } @@ -14966,8 +14650,7 @@ public static function macro($name, $macro) * @return void * @throws \ReflectionException * @static - */ - public static function mixin($mixin, $replace = true) + */ public static function mixin($mixin, $replace = true) { \Illuminate\Session\Store::mixin($mixin, $replace); } @@ -14977,8 +14660,7 @@ public static function mixin($mixin, $replace = true) * @param string $name * @return bool * @static - */ - public static function hasMacro($name) + */ public static function hasMacro($name) { return \Illuminate\Session\Store::hasMacro($name); } @@ -14987,13 +14669,11 @@ public static function hasMacro($name) * * @return void * @static - */ - public static function flushMacros() + */ public static function flushMacros() { \Illuminate\Session\Store::flushMacros(); } - - } + } /** * * @@ -15005,16 +14685,14 @@ public static function flushMacros() * @method static void write(string $location, string $contents, array $config = []) * @method static void createDirectory(string $location, array $config = []) * @see \Illuminate\Filesystem\FilesystemManager - */ - class Storage { + */ class Storage { /** * Get a filesystem instance. * * @param string|null $name * @return \Illuminate\Filesystem\FilesystemAdapter * @static - */ - public static function drive($name = null) + */ public static function drive($name = null) { /** @var \Illuminate\Filesystem\FilesystemManager $instance */ return $instance->drive($name); @@ -15025,8 +14703,7 @@ public static function drive($name = null) * @param string|null $name * @return \Illuminate\Filesystem\FilesystemAdapter * @static - */ - public static function disk($name = null) + */ public static function disk($name = null) { /** @var \Illuminate\Filesystem\FilesystemManager $instance */ return $instance->disk($name); @@ -15034,10 +14711,9 @@ public static function disk($name = null) /** * Get a default cloud filesystem instance. * - * @return \Illuminate\Filesystem\FilesystemAdapter + * @return \Illuminate\Contracts\Filesystem\Cloud * @static - */ - public static function cloud() + */ public static function cloud() { /** @var \Illuminate\Filesystem\FilesystemManager $instance */ return $instance->cloud(); @@ -15048,8 +14724,7 @@ public static function cloud() * @param string|array $config * @return \Illuminate\Filesystem\FilesystemAdapter * @static - */ - public static function build($config) + */ public static function build($config) { /** @var \Illuminate\Filesystem\FilesystemManager $instance */ return $instance->build($config); @@ -15060,8 +14735,7 @@ public static function build($config) * @param array $config * @return \Illuminate\Filesystem\FilesystemAdapter * @static - */ - public static function createLocalDriver($config) + */ public static function createLocalDriver($config) { /** @var \Illuminate\Filesystem\FilesystemManager $instance */ return $instance->createLocalDriver($config); @@ -15072,8 +14746,7 @@ public static function createLocalDriver($config) * @param array $config * @return \Illuminate\Filesystem\FilesystemAdapter * @static - */ - public static function createFtpDriver($config) + */ public static function createFtpDriver($config) { /** @var \Illuminate\Filesystem\FilesystemManager $instance */ return $instance->createFtpDriver($config); @@ -15084,8 +14757,7 @@ public static function createFtpDriver($config) * @param array $config * @return \Illuminate\Filesystem\FilesystemAdapter * @static - */ - public static function createSftpDriver($config) + */ public static function createSftpDriver($config) { /** @var \Illuminate\Filesystem\FilesystemManager $instance */ return $instance->createSftpDriver($config); @@ -15096,8 +14768,7 @@ public static function createSftpDriver($config) * @param array $config * @return \Illuminate\Contracts\Filesystem\Cloud * @static - */ - public static function createS3Driver($config) + */ public static function createS3Driver($config) { /** @var \Illuminate\Filesystem\FilesystemManager $instance */ return $instance->createS3Driver($config); @@ -15108,8 +14779,7 @@ public static function createS3Driver($config) * @param array $config * @return \Illuminate\Filesystem\FilesystemAdapter * @static - */ - public static function createScopedDriver($config) + */ public static function createScopedDriver($config) { /** @var \Illuminate\Filesystem\FilesystemManager $instance */ return $instance->createScopedDriver($config); @@ -15121,8 +14791,7 @@ public static function createScopedDriver($config) * @param mixed $disk * @return \Illuminate\Filesystem\FilesystemManager * @static - */ - public static function set($name, $disk) + */ public static function set($name, $disk) { /** @var \Illuminate\Filesystem\FilesystemManager $instance */ return $instance->set($name, $disk); @@ -15132,8 +14801,7 @@ public static function set($name, $disk) * * @return string * @static - */ - public static function getDefaultDriver() + */ public static function getDefaultDriver() { /** @var \Illuminate\Filesystem\FilesystemManager $instance */ return $instance->getDefaultDriver(); @@ -15143,8 +14811,7 @@ public static function getDefaultDriver() * * @return string * @static - */ - public static function getDefaultCloudDriver() + */ public static function getDefaultCloudDriver() { /** @var \Illuminate\Filesystem\FilesystemManager $instance */ return $instance->getDefaultCloudDriver(); @@ -15155,8 +14822,7 @@ public static function getDefaultCloudDriver() * @param array|string $disk * @return \Illuminate\Filesystem\FilesystemManager * @static - */ - public static function forgetDisk($disk) + */ public static function forgetDisk($disk) { /** @var \Illuminate\Filesystem\FilesystemManager $instance */ return $instance->forgetDisk($disk); @@ -15167,8 +14833,7 @@ public static function forgetDisk($disk) * @param string|null $name * @return void * @static - */ - public static function purge($name = null) + */ public static function purge($name = null) { /** @var \Illuminate\Filesystem\FilesystemManager $instance */ $instance->purge($name); @@ -15180,8 +14845,7 @@ public static function purge($name = null) * @param \Closure $callback * @return \Illuminate\Filesystem\FilesystemManager * @static - */ - public static function extend($driver, $callback) + */ public static function extend($driver, $callback) { /** @var \Illuminate\Filesystem\FilesystemManager $instance */ return $instance->extend($driver, $callback); @@ -15192,8 +14856,7 @@ public static function extend($driver, $callback) * @param \Illuminate\Contracts\Foundation\Application $app * @return \Illuminate\Filesystem\FilesystemManager * @static - */ - public static function setApplication($app) + */ public static function setApplication($app) { /** @var \Illuminate\Filesystem\FilesystemManager $instance */ return $instance->setApplication($app); @@ -15205,8 +14868,7 @@ public static function setApplication($app) * @param string|null $content * @return \Illuminate\Filesystem\FilesystemAdapter * @static - */ - public static function assertExists($path, $content = null) + */ public static function assertExists($path, $content = null) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->assertExists($path, $content); @@ -15217,8 +14879,7 @@ public static function assertExists($path, $content = null) * @param string|array $path * @return \Illuminate\Filesystem\FilesystemAdapter * @static - */ - public static function assertMissing($path) + */ public static function assertMissing($path) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->assertMissing($path); @@ -15229,8 +14890,7 @@ public static function assertMissing($path) * @param string $path * @return \Illuminate\Filesystem\FilesystemAdapter * @static - */ - public static function assertDirectoryEmpty($path) + */ public static function assertDirectoryEmpty($path) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->assertDirectoryEmpty($path); @@ -15241,8 +14901,7 @@ public static function assertDirectoryEmpty($path) * @param string $path * @return bool * @static - */ - public static function exists($path) + */ public static function exists($path) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->exists($path); @@ -15253,8 +14912,7 @@ public static function exists($path) * @param string $path * @return bool * @static - */ - public static function missing($path) + */ public static function missing($path) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->missing($path); @@ -15265,8 +14923,7 @@ public static function missing($path) * @param string $path * @return bool * @static - */ - public static function fileExists($path) + */ public static function fileExists($path) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->fileExists($path); @@ -15277,8 +14934,7 @@ public static function fileExists($path) * @param string $path * @return bool * @static - */ - public static function fileMissing($path) + */ public static function fileMissing($path) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->fileMissing($path); @@ -15289,8 +14945,7 @@ public static function fileMissing($path) * @param string $path * @return bool * @static - */ - public static function directoryExists($path) + */ public static function directoryExists($path) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->directoryExists($path); @@ -15301,8 +14956,7 @@ public static function directoryExists($path) * @param string $path * @return bool * @static - */ - public static function directoryMissing($path) + */ public static function directoryMissing($path) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->directoryMissing($path); @@ -15313,8 +14967,7 @@ public static function directoryMissing($path) * @param string $path * @return string * @static - */ - public static function path($path) + */ public static function path($path) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->path($path); @@ -15325,11 +14978,22 @@ public static function path($path) * @param string $path * @return string|null * @static - */ - public static function get($path) + */ public static function get($path) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->get($path); + } + /** + * Get the contents of a file as decoded JSON. + * + * @param string $path + * @param int $flags + * @return array|null + * @static + */ public static function json($path, $flags = 0) + { + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->json($path, $flags); } /** * Create a streamed response for a given file. @@ -15340,8 +15004,7 @@ public static function get($path) * @param string|null $disposition * @return \Symfony\Component\HttpFoundation\StreamedResponse * @static - */ - public static function response($path, $name = null, $headers = [], $disposition = 'inline') + */ public static function response($path, $name = null, $headers = [], $disposition = 'inline') { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->response($path, $name, $headers, $disposition); @@ -15353,8 +15016,7 @@ public static function response($path, $name = null, $headers = [], $disposition * @param string|null $name * @return \Symfony\Component\HttpFoundation\StreamedResponse * @static - */ - public static function download($path, $name = null, $headers = []) + */ public static function download($path, $name = null, $headers = []) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->download($path, $name, $headers); @@ -15367,8 +15029,7 @@ public static function download($path, $name = null, $headers = []) * @param mixed $options * @return string|bool * @static - */ - public static function put($path, $contents, $options = []) + */ public static function put($path, $contents, $options = []) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->put($path, $contents, $options); @@ -15376,13 +15037,12 @@ public static function put($path, $contents, $options = []) /** * Store the uploaded file on the disk. * - * @param string $path - * @param \Illuminate\Http\File|\Illuminate\Http\UploadedFile|string $file + * @param \Illuminate\Http\File|\Illuminate\Http\UploadedFile|string $path + * @param \Illuminate\Http\File|\Illuminate\Http\UploadedFile|string|array|null $file * @param mixed $options * @return string|false * @static - */ - public static function putFile($path, $file, $options = []) + */ public static function putFile($path, $file = null, $options = []) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->putFile($path, $file, $options); @@ -15390,14 +15050,13 @@ public static function putFile($path, $file, $options = []) /** * Store the uploaded file on the disk with a given name. * - * @param string $path - * @param \Illuminate\Http\File|\Illuminate\Http\UploadedFile|string $file - * @param string $name + * @param \Illuminate\Http\File|\Illuminate\Http\UploadedFile|string $path + * @param \Illuminate\Http\File|\Illuminate\Http\UploadedFile|string|array|null $file + * @param string|array|null $name * @param mixed $options * @return string|false * @static - */ - public static function putFileAs($path, $file, $name, $options = []) + */ public static function putFileAs($path, $file, $name = null, $options = []) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->putFileAs($path, $file, $name, $options); @@ -15408,8 +15067,7 @@ public static function putFileAs($path, $file, $name, $options = []) * @param string $path * @return string * @static - */ - public static function getVisibility($path) + */ public static function getVisibility($path) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->getVisibility($path); @@ -15421,8 +15079,7 @@ public static function getVisibility($path) * @param string $visibility * @return bool * @static - */ - public static function setVisibility($path, $visibility) + */ public static function setVisibility($path, $visibility) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->setVisibility($path, $visibility); @@ -15435,8 +15092,7 @@ public static function setVisibility($path, $visibility) * @param string $separator * @return bool * @static - */ - public static function prepend($path, $data, $separator = ' + */ public static function prepend($path, $data, $separator = ' ') { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ @@ -15450,8 +15106,7 @@ public static function prepend($path, $data, $separator = ' * @param string $separator * @return bool * @static - */ - public static function append($path, $data, $separator = ' + */ public static function append($path, $data, $separator = ' ') { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ @@ -15463,8 +15118,7 @@ public static function append($path, $data, $separator = ' * @param string|array $paths * @return bool * @static - */ - public static function delete($paths) + */ public static function delete($paths) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->delete($paths); @@ -15476,8 +15130,7 @@ public static function delete($paths) * @param string $to * @return bool * @static - */ - public static function copy($from, $to) + */ public static function copy($from, $to) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->copy($from, $to); @@ -15489,8 +15142,7 @@ public static function copy($from, $to) * @param string $to * @return bool * @static - */ - public static function move($from, $to) + */ public static function move($from, $to) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->move($from, $to); @@ -15501,8 +15153,7 @@ public static function move($from, $to) * @param string $path * @return int * @static - */ - public static function size($path) + */ public static function size($path) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->size($path); @@ -15513,8 +15164,7 @@ public static function size($path) * @return string|false * @throws UnableToProvideChecksum * @static - */ - public static function checksum($path, $options = []) + */ public static function checksum($path, $options = []) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->checksum($path, $options); @@ -15525,8 +15175,7 @@ public static function checksum($path, $options = []) * @param string $path * @return string|false * @static - */ - public static function mimeType($path) + */ public static function mimeType($path) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->mimeType($path); @@ -15537,8 +15186,7 @@ public static function mimeType($path) * @param string $path * @return int * @static - */ - public static function lastModified($path) + */ public static function lastModified($path) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->lastModified($path); @@ -15549,8 +15197,7 @@ public static function lastModified($path) * @param string $path * @return resource|null The path resource or null on failure. * @static - */ - public static function readStream($path) + */ public static function readStream($path) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->readStream($path); @@ -15563,8 +15210,7 @@ public static function readStream($path) * @param array $options * @return bool * @static - */ - public static function writeStream($path, $resource, $options = []) + */ public static function writeStream($path, $resource, $options = []) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->writeStream($path, $resource, $options); @@ -15576,8 +15222,7 @@ public static function writeStream($path, $resource, $options = []) * @return string * @throws \RuntimeException * @static - */ - public static function url($path) + */ public static function url($path) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->url($path); @@ -15587,8 +15232,7 @@ public static function url($path) * * @return bool * @static - */ - public static function providesTemporaryUrls() + */ public static function providesTemporaryUrls() { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->providesTemporaryUrls(); @@ -15602,8 +15246,7 @@ public static function providesTemporaryUrls() * @return string * @throws \RuntimeException * @static - */ - public static function temporaryUrl($path, $expiration, $options = []) + */ public static function temporaryUrl($path, $expiration, $options = []) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->temporaryUrl($path, $expiration, $options); @@ -15617,8 +15260,7 @@ public static function temporaryUrl($path, $expiration, $options = []) * @return array * @throws \RuntimeException * @static - */ - public static function temporaryUploadUrl($path, $expiration, $options = []) + */ public static function temporaryUploadUrl($path, $expiration, $options = []) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->temporaryUploadUrl($path, $expiration, $options); @@ -15630,8 +15272,7 @@ public static function temporaryUploadUrl($path, $expiration, $options = []) * @param bool $recursive * @return array * @static - */ - public static function files($directory = null, $recursive = false) + */ public static function files($directory = null, $recursive = false) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->files($directory, $recursive); @@ -15642,8 +15283,7 @@ public static function files($directory = null, $recursive = false) * @param string|null $directory * @return array * @static - */ - public static function allFiles($directory = null) + */ public static function allFiles($directory = null) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->allFiles($directory); @@ -15655,8 +15295,7 @@ public static function allFiles($directory = null) * @param bool $recursive * @return array * @static - */ - public static function directories($directory = null, $recursive = false) + */ public static function directories($directory = null, $recursive = false) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->directories($directory, $recursive); @@ -15667,8 +15306,7 @@ public static function directories($directory = null, $recursive = false) * @param string|null $directory * @return array * @static - */ - public static function allDirectories($directory = null) + */ public static function allDirectories($directory = null) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->allDirectories($directory); @@ -15679,8 +15317,7 @@ public static function allDirectories($directory = null) * @param string $path * @return bool * @static - */ - public static function makeDirectory($path) + */ public static function makeDirectory($path) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->makeDirectory($path); @@ -15691,8 +15328,7 @@ public static function makeDirectory($path) * @param string $directory * @return bool * @static - */ - public static function deleteDirectory($directory) + */ public static function deleteDirectory($directory) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->deleteDirectory($directory); @@ -15702,8 +15338,7 @@ public static function deleteDirectory($directory) * * @return \League\Flysystem\FilesystemOperator * @static - */ - public static function getDriver() + */ public static function getDriver() { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->getDriver(); @@ -15713,8 +15348,7 @@ public static function getDriver() * * @return \League\Flysystem\FilesystemAdapter * @static - */ - public static function getAdapter() + */ public static function getAdapter() { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->getAdapter(); @@ -15724,8 +15358,7 @@ public static function getAdapter() * * @return array * @static - */ - public static function getConfig() + */ public static function getConfig() { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->getConfig(); @@ -15736,8 +15369,7 @@ public static function getConfig() * @param \Closure $callback * @return void * @static - */ - public static function buildTemporaryUrlsUsing($callback) + */ public static function buildTemporaryUrlsUsing($callback) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ $instance->buildTemporaryUrlsUsing($callback); @@ -15752,8 +15384,7 @@ public static function buildTemporaryUrlsUsing($callback) * @param \Illuminate\Filesystem\(callable($this, TWhenParameter): TWhenReturnType)|null $default * @return $this|\Illuminate\Filesystem\TWhenReturnType * @static - */ - public static function when($value = null, $callback = null, $default = null) + */ public static function when($value = null, $callback = null, $default = null) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->when($value, $callback, $default); @@ -15768,8 +15399,7 @@ public static function when($value = null, $callback = null, $default = null) * @param \Illuminate\Filesystem\(callable($this, TUnlessParameter): TUnlessReturnType)|null $default * @return $this|\Illuminate\Filesystem\TUnlessReturnType * @static - */ - public static function unless($value = null, $callback = null, $default = null) + */ public static function unless($value = null, $callback = null, $default = null) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->unless($value, $callback, $default); @@ -15781,8 +15411,7 @@ public static function unless($value = null, $callback = null, $default = null) * @param object|callable $macro * @return void * @static - */ - public static function macro($name, $macro) + */ public static function macro($name, $macro) { \Illuminate\Filesystem\FilesystemAdapter::macro($name, $macro); } @@ -15794,8 +15423,7 @@ public static function macro($name, $macro) * @return void * @throws \ReflectionException * @static - */ - public static function mixin($mixin, $replace = true) + */ public static function mixin($mixin, $replace = true) { \Illuminate\Filesystem\FilesystemAdapter::mixin($mixin, $replace); } @@ -15805,8 +15433,7 @@ public static function mixin($mixin, $replace = true) * @param string $name * @return bool * @static - */ - public static function hasMacro($name) + */ public static function hasMacro($name) { return \Illuminate\Filesystem\FilesystemAdapter::hasMacro($name); } @@ -15815,8 +15442,7 @@ public static function hasMacro($name) * * @return void * @static - */ - public static function flushMacros() + */ public static function flushMacros() { \Illuminate\Filesystem\FilesystemAdapter::flushMacros(); } @@ -15828,27 +15454,23 @@ public static function flushMacros() * @return mixed * @throws \BadMethodCallException * @static - */ - public static function macroCall($method, $parameters) + */ public static function macroCall($method, $parameters) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->macroCall($method, $parameters); } - - } + } /** * * * @see \Illuminate\Routing\UrlGenerator - */ - class URL { + */ class URL { /** * Get the full URL for the current request. * * @return string * @static - */ - public static function full() + */ public static function full() { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->full(); @@ -15858,8 +15480,7 @@ public static function full() * * @return string * @static - */ - public static function current() + */ public static function current() { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->current(); @@ -15870,8 +15491,7 @@ public static function current() * @param mixed $fallback * @return string * @static - */ - public static function previous($fallback = false) + */ public static function previous($fallback = false) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->previous($fallback); @@ -15882,8 +15502,7 @@ public static function previous($fallback = false) * @param mixed $fallback * @return string * @static - */ - public static function previousPath($fallback = false) + */ public static function previousPath($fallback = false) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->previousPath($fallback); @@ -15896,8 +15515,7 @@ public static function previousPath($fallback = false) * @param bool|null $secure * @return string * @static - */ - public static function to($path, $extra = [], $secure = null) + */ public static function to($path, $extra = [], $secure = null) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->to($path, $extra, $secure); @@ -15909,8 +15527,7 @@ public static function to($path, $extra = [], $secure = null) * @param array $parameters * @return string * @static - */ - public static function secure($path, $parameters = []) + */ public static function secure($path, $parameters = []) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->secure($path, $parameters); @@ -15922,8 +15539,7 @@ public static function secure($path, $parameters = []) * @param bool|null $secure * @return string * @static - */ - public static function asset($path, $secure = null) + */ public static function asset($path, $secure = null) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->asset($path, $secure); @@ -15934,8 +15550,7 @@ public static function asset($path, $secure = null) * @param string $path * @return string * @static - */ - public static function secureAsset($path) + */ public static function secureAsset($path) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->secureAsset($path); @@ -15948,8 +15563,7 @@ public static function secureAsset($path) * @param bool|null $secure * @return string * @static - */ - public static function assetFrom($root, $path, $secure = null) + */ public static function assetFrom($root, $path, $secure = null) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->assetFrom($root, $path, $secure); @@ -15960,8 +15574,7 @@ public static function assetFrom($root, $path, $secure = null) * @param bool|null $secure * @return string * @static - */ - public static function formatScheme($secure = null) + */ public static function formatScheme($secure = null) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->formatScheme($secure); @@ -15976,8 +15589,7 @@ public static function formatScheme($secure = null) * @return string * @throws \InvalidArgumentException * @static - */ - public static function signedRoute($name, $parameters = [], $expiration = null, $absolute = true) + */ public static function signedRoute($name, $parameters = [], $expiration = null, $absolute = true) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->signedRoute($name, $parameters, $expiration, $absolute); @@ -15991,8 +15603,7 @@ public static function signedRoute($name, $parameters = [], $expiration = null, * @param bool $absolute * @return string * @static - */ - public static function temporarySignedRoute($name, $expiration, $parameters = [], $absolute = true) + */ public static function temporarySignedRoute($name, $expiration, $parameters = [], $absolute = true) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->temporarySignedRoute($name, $expiration, $parameters, $absolute); @@ -16005,8 +15616,7 @@ public static function temporarySignedRoute($name, $expiration, $parameters = [] * @param array $ignoreQuery * @return bool * @static - */ - public static function hasValidSignature($request, $absolute = true, $ignoreQuery = []) + */ public static function hasValidSignature($request, $absolute = true, $ignoreQuery = []) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->hasValidSignature($request, $absolute, $ignoreQuery); @@ -16018,8 +15628,7 @@ public static function hasValidSignature($request, $absolute = true, $ignoreQuer * @param array $ignoreQuery * @return bool * @static - */ - public static function hasValidRelativeSignature($request, $ignoreQuery = []) + */ public static function hasValidRelativeSignature($request, $ignoreQuery = []) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->hasValidRelativeSignature($request, $ignoreQuery); @@ -16032,8 +15641,7 @@ public static function hasValidRelativeSignature($request, $ignoreQuery = []) * @param array $ignoreQuery * @return bool * @static - */ - public static function hasCorrectSignature($request, $absolute = true, $ignoreQuery = []) + */ public static function hasCorrectSignature($request, $absolute = true, $ignoreQuery = []) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->hasCorrectSignature($request, $absolute, $ignoreQuery); @@ -16044,8 +15652,7 @@ public static function hasCorrectSignature($request, $absolute = true, $ignoreQu * @param \Illuminate\Http\Request $request * @return bool * @static - */ - public static function signatureHasNotExpired($request) + */ public static function signatureHasNotExpired($request) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->signatureHasNotExpired($request); @@ -16059,8 +15666,7 @@ public static function signatureHasNotExpired($request) * @return string * @throws \Symfony\Component\Routing\Exception\RouteNotFoundException * @static - */ - public static function route($name, $parameters = [], $absolute = true) + */ public static function route($name, $parameters = [], $absolute = true) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->route($name, $parameters, $absolute); @@ -16074,8 +15680,7 @@ public static function route($name, $parameters = [], $absolute = true) * @return string * @throws \Illuminate\Routing\Exceptions\UrlGenerationException * @static - */ - public static function toRoute($route, $parameters, $absolute) + */ public static function toRoute($route, $parameters, $absolute) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->toRoute($route, $parameters, $absolute); @@ -16089,8 +15694,7 @@ public static function toRoute($route, $parameters, $absolute) * @return string * @throws \InvalidArgumentException * @static - */ - public static function action($action, $parameters = [], $absolute = true) + */ public static function action($action, $parameters = [], $absolute = true) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->action($action, $parameters, $absolute); @@ -16101,8 +15705,7 @@ public static function action($action, $parameters = [], $absolute = true) * @param mixed|array $parameters * @return array * @static - */ - public static function formatParameters($parameters) + */ public static function formatParameters($parameters) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->formatParameters($parameters); @@ -16114,8 +15717,7 @@ public static function formatParameters($parameters) * @param string|null $root * @return string * @static - */ - public static function formatRoot($scheme, $root = null) + */ public static function formatRoot($scheme, $root = null) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->formatRoot($scheme, $root); @@ -16128,8 +15730,7 @@ public static function formatRoot($scheme, $root = null) * @param \Illuminate\Routing\Route|null $route * @return string * @static - */ - public static function format($root, $path, $route = null) + */ public static function format($root, $path, $route = null) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->format($root, $path, $route); @@ -16140,8 +15741,7 @@ public static function format($root, $path, $route = null) * @param string $path * @return bool * @static - */ - public static function isValidUrl($path) + */ public static function isValidUrl($path) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->isValidUrl($path); @@ -16152,8 +15752,7 @@ public static function isValidUrl($path) * @param array $defaults * @return void * @static - */ - public static function defaults($defaults) + */ public static function defaults($defaults) { /** @var \Illuminate\Routing\UrlGenerator $instance */ $instance->defaults($defaults); @@ -16163,8 +15762,7 @@ public static function defaults($defaults) * * @return array * @static - */ - public static function getDefaultParameters() + */ public static function getDefaultParameters() { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->getDefaultParameters(); @@ -16175,8 +15773,7 @@ public static function getDefaultParameters() * @param string|null $scheme * @return void * @static - */ - public static function forceScheme($scheme) + */ public static function forceScheme($scheme) { /** @var \Illuminate\Routing\UrlGenerator $instance */ $instance->forceScheme($scheme); @@ -16187,8 +15784,7 @@ public static function forceScheme($scheme) * @param string|null $root * @return void * @static - */ - public static function forceRootUrl($root) + */ public static function forceRootUrl($root) { /** @var \Illuminate\Routing\UrlGenerator $instance */ $instance->forceRootUrl($root); @@ -16199,8 +15795,7 @@ public static function forceRootUrl($root) * @param \Closure $callback * @return \Illuminate\Routing\UrlGenerator * @static - */ - public static function formatHostUsing($callback) + */ public static function formatHostUsing($callback) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->formatHostUsing($callback); @@ -16211,8 +15806,7 @@ public static function formatHostUsing($callback) * @param \Closure $callback * @return \Illuminate\Routing\UrlGenerator * @static - */ - public static function formatPathUsing($callback) + */ public static function formatPathUsing($callback) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->formatPathUsing($callback); @@ -16222,8 +15816,7 @@ public static function formatPathUsing($callback) * * @return \Closure * @static - */ - public static function pathFormatter() + */ public static function pathFormatter() { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->pathFormatter(); @@ -16233,8 +15826,7 @@ public static function pathFormatter() * * @return \Illuminate\Http\Request * @static - */ - public static function getRequest() + */ public static function getRequest() { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->getRequest(); @@ -16245,8 +15837,7 @@ public static function getRequest() * @param \Illuminate\Http\Request $request * @return void * @static - */ - public static function setRequest($request) + */ public static function setRequest($request) { /** @var \Illuminate\Routing\UrlGenerator $instance */ $instance->setRequest($request); @@ -16257,8 +15848,7 @@ public static function setRequest($request) * @param \Illuminate\Routing\RouteCollectionInterface $routes * @return \Illuminate\Routing\UrlGenerator * @static - */ - public static function setRoutes($routes) + */ public static function setRoutes($routes) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->setRoutes($routes); @@ -16269,8 +15859,7 @@ public static function setRoutes($routes) * @param callable $sessionResolver * @return \Illuminate\Routing\UrlGenerator * @static - */ - public static function setSessionResolver($sessionResolver) + */ public static function setSessionResolver($sessionResolver) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->setSessionResolver($sessionResolver); @@ -16281,8 +15870,7 @@ public static function setSessionResolver($sessionResolver) * @param callable $keyResolver * @return \Illuminate\Routing\UrlGenerator * @static - */ - public static function setKeyResolver($keyResolver) + */ public static function setKeyResolver($keyResolver) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->setKeyResolver($keyResolver); @@ -16293,19 +15881,28 @@ public static function setKeyResolver($keyResolver) * @param callable $keyResolver * @return \Illuminate\Routing\UrlGenerator * @static - */ - public static function withKeyResolver($keyResolver) + */ public static function withKeyResolver($keyResolver) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->withKeyResolver($keyResolver); + } + /** + * Set the callback that should be used to attempt to resolve missing named routes. + * + * @param callable $missingNamedRouteResolver + * @return \Illuminate\Routing\UrlGenerator + * @static + */ public static function resolveMissingNamedRoutesUsing($missingNamedRouteResolver) + { + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->resolveMissingNamedRoutesUsing($missingNamedRouteResolver); } /** * Get the root controller namespace. * * @return string * @static - */ - public static function getRootControllerNamespace() + */ public static function getRootControllerNamespace() { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->getRootControllerNamespace(); @@ -16316,8 +15913,7 @@ public static function getRootControllerNamespace() * @param string $rootNamespace * @return \Illuminate\Routing\UrlGenerator * @static - */ - public static function setRootControllerNamespace($rootNamespace) + */ public static function setRootControllerNamespace($rootNamespace) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->setRootControllerNamespace($rootNamespace); @@ -16329,8 +15925,7 @@ public static function setRootControllerNamespace($rootNamespace) * @param object|callable $macro * @return void * @static - */ - public static function macro($name, $macro) + */ public static function macro($name, $macro) { \Illuminate\Routing\UrlGenerator::macro($name, $macro); } @@ -16342,8 +15937,7 @@ public static function macro($name, $macro) * @return void * @throws \ReflectionException * @static - */ - public static function mixin($mixin, $replace = true) + */ public static function mixin($mixin, $replace = true) { \Illuminate\Routing\UrlGenerator::mixin($mixin, $replace); } @@ -16353,8 +15947,7 @@ public static function mixin($mixin, $replace = true) * @param string $name * @return bool * @static - */ - public static function hasMacro($name) + */ public static function hasMacro($name) { return \Illuminate\Routing\UrlGenerator::hasMacro($name); } @@ -16363,33 +15956,29 @@ public static function hasMacro($name) * * @return void * @static - */ - public static function flushMacros() + */ public static function flushMacros() { \Illuminate\Routing\UrlGenerator::flushMacros(); } - - } + } /** * * * @see \Illuminate\Validation\Factory - */ - class Validator { + */ class Validator { /** * Create a new Validator instance. * * @param array $data * @param array $rules * @param array $messages - * @param array $customAttributes + * @param array $attributes * @return \Illuminate\Validation\Validator * @static - */ - public static function make($data, $rules, $messages = [], $customAttributes = []) + */ public static function make($data, $rules, $messages = [], $attributes = []) { /** @var \Illuminate\Validation\Factory $instance */ - return $instance->make($data, $rules, $messages, $customAttributes); + return $instance->make($data, $rules, $messages, $attributes); } /** * Validate the given data against the provided rules. @@ -16397,15 +15986,14 @@ public static function make($data, $rules, $messages = [], $customAttributes = [ * @param array $data * @param array $rules * @param array $messages - * @param array $customAttributes + * @param array $attributes * @return array * @throws \Illuminate\Validation\ValidationException * @static - */ - public static function validate($data, $rules, $messages = [], $customAttributes = []) + */ public static function validate($data, $rules, $messages = [], $attributes = []) { /** @var \Illuminate\Validation\Factory $instance */ - return $instance->validate($data, $rules, $messages, $customAttributes); + return $instance->validate($data, $rules, $messages, $attributes); } /** * Register a custom validator extension. @@ -16415,8 +16003,7 @@ public static function validate($data, $rules, $messages = [], $customAttributes * @param string|null $message * @return void * @static - */ - public static function extend($rule, $extension, $message = null) + */ public static function extend($rule, $extension, $message = null) { /** @var \Illuminate\Validation\Factory $instance */ $instance->extend($rule, $extension, $message); @@ -16429,8 +16016,7 @@ public static function extend($rule, $extension, $message = null) * @param string|null $message * @return void * @static - */ - public static function extendImplicit($rule, $extension, $message = null) + */ public static function extendImplicit($rule, $extension, $message = null) { /** @var \Illuminate\Validation\Factory $instance */ $instance->extendImplicit($rule, $extension, $message); @@ -16443,8 +16029,7 @@ public static function extendImplicit($rule, $extension, $message = null) * @param string|null $message * @return void * @static - */ - public static function extendDependent($rule, $extension, $message = null) + */ public static function extendDependent($rule, $extension, $message = null) { /** @var \Illuminate\Validation\Factory $instance */ $instance->extendDependent($rule, $extension, $message); @@ -16456,8 +16041,7 @@ public static function extendDependent($rule, $extension, $message = null) * @param \Closure|string $replacer * @return void * @static - */ - public static function replacer($rule, $replacer) + */ public static function replacer($rule, $replacer) { /** @var \Illuminate\Validation\Factory $instance */ $instance->replacer($rule, $replacer); @@ -16467,8 +16051,7 @@ public static function replacer($rule, $replacer) * * @return void * @static - */ - public static function includeUnvalidatedArrayKeys() + */ public static function includeUnvalidatedArrayKeys() { /** @var \Illuminate\Validation\Factory $instance */ $instance->includeUnvalidatedArrayKeys(); @@ -16478,8 +16061,7 @@ public static function includeUnvalidatedArrayKeys() * * @return void * @static - */ - public static function excludeUnvalidatedArrayKeys() + */ public static function excludeUnvalidatedArrayKeys() { /** @var \Illuminate\Validation\Factory $instance */ $instance->excludeUnvalidatedArrayKeys(); @@ -16490,8 +16072,7 @@ public static function excludeUnvalidatedArrayKeys() * @param \Closure $resolver * @return void * @static - */ - public static function resolver($resolver) + */ public static function resolver($resolver) { /** @var \Illuminate\Validation\Factory $instance */ $instance->resolver($resolver); @@ -16501,8 +16082,7 @@ public static function resolver($resolver) * * @return \Illuminate\Contracts\Translation\Translator * @static - */ - public static function getTranslator() + */ public static function getTranslator() { /** @var \Illuminate\Validation\Factory $instance */ return $instance->getTranslator(); @@ -16512,8 +16092,7 @@ public static function getTranslator() * * @return \Illuminate\Validation\PresenceVerifierInterface * @static - */ - public static function getPresenceVerifier() + */ public static function getPresenceVerifier() { /** @var \Illuminate\Validation\Factory $instance */ return $instance->getPresenceVerifier(); @@ -16524,8 +16103,7 @@ public static function getPresenceVerifier() * @param \Illuminate\Validation\PresenceVerifierInterface $presenceVerifier * @return void * @static - */ - public static function setPresenceVerifier($presenceVerifier) + */ public static function setPresenceVerifier($presenceVerifier) { /** @var \Illuminate\Validation\Factory $instance */ $instance->setPresenceVerifier($presenceVerifier); @@ -16535,8 +16113,7 @@ public static function setPresenceVerifier($presenceVerifier) * * @return \Illuminate\Contracts\Container\Container|null * @static - */ - public static function getContainer() + */ public static function getContainer() { /** @var \Illuminate\Validation\Factory $instance */ return $instance->getContainer(); @@ -16547,20 +16124,17 @@ public static function getContainer() * @param \Illuminate\Contracts\Container\Container $container * @return \Illuminate\Validation\Factory * @static - */ - public static function setContainer($container) + */ public static function setContainer($container) { /** @var \Illuminate\Validation\Factory $instance */ return $instance->setContainer($container); } - - } + } /** * * * @see \Illuminate\View\Factory - */ - class View { + */ class View { /** * Get the evaluated view contents for the given view. * @@ -16569,8 +16143,7 @@ class View { * @param array $mergeData * @return \Illuminate\Contracts\View\View * @static - */ - public static function file($path, $data = [], $mergeData = []) + */ public static function file($path, $data = [], $mergeData = []) { /** @var \Illuminate\View\Factory $instance */ return $instance->file($path, $data, $mergeData); @@ -16583,8 +16156,7 @@ public static function file($path, $data = [], $mergeData = []) * @param array $mergeData * @return \Illuminate\Contracts\View\View * @static - */ - public static function make($view, $data = [], $mergeData = []) + */ public static function make($view, $data = [], $mergeData = []) { /** @var \Illuminate\View\Factory $instance */ return $instance->make($view, $data, $mergeData); @@ -16598,8 +16170,7 @@ public static function make($view, $data = [], $mergeData = []) * @return \Illuminate\Contracts\View\View * @throws \InvalidArgumentException * @static - */ - public static function first($views, $data = [], $mergeData = []) + */ public static function first($views, $data = [], $mergeData = []) { /** @var \Illuminate\View\Factory $instance */ return $instance->first($views, $data, $mergeData); @@ -16613,8 +16184,7 @@ public static function first($views, $data = [], $mergeData = []) * @param array $mergeData * @return string * @static - */ - public static function renderWhen($condition, $view, $data = [], $mergeData = []) + */ public static function renderWhen($condition, $view, $data = [], $mergeData = []) { /** @var \Illuminate\View\Factory $instance */ return $instance->renderWhen($condition, $view, $data, $mergeData); @@ -16628,8 +16198,7 @@ public static function renderWhen($condition, $view, $data = [], $mergeData = [] * @param array $mergeData * @return string * @static - */ - public static function renderUnless($condition, $view, $data = [], $mergeData = []) + */ public static function renderUnless($condition, $view, $data = [], $mergeData = []) { /** @var \Illuminate\View\Factory $instance */ return $instance->renderUnless($condition, $view, $data, $mergeData); @@ -16643,8 +16212,7 @@ public static function renderUnless($condition, $view, $data = [], $mergeData = * @param string $empty * @return string * @static - */ - public static function renderEach($view, $data, $iterator, $empty = 'raw|') + */ public static function renderEach($view, $data, $iterator, $empty = 'raw|') { /** @var \Illuminate\View\Factory $instance */ return $instance->renderEach($view, $data, $iterator, $empty); @@ -16655,8 +16223,7 @@ public static function renderEach($view, $data, $iterator, $empty = 'raw|') * @param string $view * @return bool * @static - */ - public static function exists($view) + */ public static function exists($view) { /** @var \Illuminate\View\Factory $instance */ return $instance->exists($view); @@ -16668,8 +16235,7 @@ public static function exists($view) * @return \Illuminate\Contracts\View\Engine * @throws \InvalidArgumentException * @static - */ - public static function getEngineFromPath($path) + */ public static function getEngineFromPath($path) { /** @var \Illuminate\View\Factory $instance */ return $instance->getEngineFromPath($path); @@ -16681,8 +16247,7 @@ public static function getEngineFromPath($path) * @param mixed|null $value * @return mixed * @static - */ - public static function share($key, $value = null) + */ public static function share($key, $value = null) { /** @var \Illuminate\View\Factory $instance */ return $instance->share($key, $value); @@ -16692,8 +16257,7 @@ public static function share($key, $value = null) * * @return void * @static - */ - public static function incrementRender() + */ public static function incrementRender() { /** @var \Illuminate\View\Factory $instance */ $instance->incrementRender(); @@ -16703,8 +16267,7 @@ public static function incrementRender() * * @return void * @static - */ - public static function decrementRender() + */ public static function decrementRender() { /** @var \Illuminate\View\Factory $instance */ $instance->decrementRender(); @@ -16714,8 +16277,7 @@ public static function decrementRender() * * @return bool * @static - */ - public static function doneRendering() + */ public static function doneRendering() { /** @var \Illuminate\View\Factory $instance */ return $instance->doneRendering(); @@ -16726,8 +16288,7 @@ public static function doneRendering() * @param string $id * @return bool * @static - */ - public static function hasRenderedOnce($id) + */ public static function hasRenderedOnce($id) { /** @var \Illuminate\View\Factory $instance */ return $instance->hasRenderedOnce($id); @@ -16738,8 +16299,7 @@ public static function hasRenderedOnce($id) * @param string $id * @return void * @static - */ - public static function markAsRenderedOnce($id) + */ public static function markAsRenderedOnce($id) { /** @var \Illuminate\View\Factory $instance */ $instance->markAsRenderedOnce($id); @@ -16750,8 +16310,7 @@ public static function markAsRenderedOnce($id) * @param string $location * @return void * @static - */ - public static function addLocation($location) + */ public static function addLocation($location) { /** @var \Illuminate\View\Factory $instance */ $instance->addLocation($location); @@ -16763,8 +16322,7 @@ public static function addLocation($location) * @param string|array $hints * @return \Illuminate\View\Factory * @static - */ - public static function addNamespace($namespace, $hints) + */ public static function addNamespace($namespace, $hints) { /** @var \Illuminate\View\Factory $instance */ return $instance->addNamespace($namespace, $hints); @@ -16776,8 +16334,7 @@ public static function addNamespace($namespace, $hints) * @param string|array $hints * @return \Illuminate\View\Factory * @static - */ - public static function prependNamespace($namespace, $hints) + */ public static function prependNamespace($namespace, $hints) { /** @var \Illuminate\View\Factory $instance */ return $instance->prependNamespace($namespace, $hints); @@ -16789,8 +16346,7 @@ public static function prependNamespace($namespace, $hints) * @param string|array $hints * @return \Illuminate\View\Factory * @static - */ - public static function replaceNamespace($namespace, $hints) + */ public static function replaceNamespace($namespace, $hints) { /** @var \Illuminate\View\Factory $instance */ return $instance->replaceNamespace($namespace, $hints); @@ -16803,8 +16359,7 @@ public static function replaceNamespace($namespace, $hints) * @param \Closure|null $resolver * @return void * @static - */ - public static function addExtension($extension, $engine, $resolver = null) + */ public static function addExtension($extension, $engine, $resolver = null) { /** @var \Illuminate\View\Factory $instance */ $instance->addExtension($extension, $engine, $resolver); @@ -16814,8 +16369,7 @@ public static function addExtension($extension, $engine, $resolver = null) * * @return void * @static - */ - public static function flushState() + */ public static function flushState() { /** @var \Illuminate\View\Factory $instance */ $instance->flushState(); @@ -16825,8 +16379,7 @@ public static function flushState() * * @return void * @static - */ - public static function flushStateIfDoneRendering() + */ public static function flushStateIfDoneRendering() { /** @var \Illuminate\View\Factory $instance */ $instance->flushStateIfDoneRendering(); @@ -16836,8 +16389,7 @@ public static function flushStateIfDoneRendering() * * @return array * @static - */ - public static function getExtensions() + */ public static function getExtensions() { /** @var \Illuminate\View\Factory $instance */ return $instance->getExtensions(); @@ -16847,8 +16399,7 @@ public static function getExtensions() * * @return \Illuminate\View\Engines\EngineResolver * @static - */ - public static function getEngineResolver() + */ public static function getEngineResolver() { /** @var \Illuminate\View\Factory $instance */ return $instance->getEngineResolver(); @@ -16858,8 +16409,7 @@ public static function getEngineResolver() * * @return \Illuminate\View\ViewFinderInterface * @static - */ - public static function getFinder() + */ public static function getFinder() { /** @var \Illuminate\View\Factory $instance */ return $instance->getFinder(); @@ -16870,8 +16420,7 @@ public static function getFinder() * @param \Illuminate\View\ViewFinderInterface $finder * @return void * @static - */ - public static function setFinder($finder) + */ public static function setFinder($finder) { /** @var \Illuminate\View\Factory $instance */ $instance->setFinder($finder); @@ -16881,8 +16430,7 @@ public static function setFinder($finder) * * @return void * @static - */ - public static function flushFinderCache() + */ public static function flushFinderCache() { /** @var \Illuminate\View\Factory $instance */ $instance->flushFinderCache(); @@ -16892,8 +16440,7 @@ public static function flushFinderCache() * * @return \Illuminate\Contracts\Events\Dispatcher * @static - */ - public static function getDispatcher() + */ public static function getDispatcher() { /** @var \Illuminate\View\Factory $instance */ return $instance->getDispatcher(); @@ -16904,8 +16451,7 @@ public static function getDispatcher() * @param \Illuminate\Contracts\Events\Dispatcher $events * @return void * @static - */ - public static function setDispatcher($events) + */ public static function setDispatcher($events) { /** @var \Illuminate\View\Factory $instance */ $instance->setDispatcher($events); @@ -16915,8 +16461,7 @@ public static function setDispatcher($events) * * @return \Illuminate\Contracts\Container\Container * @static - */ - public static function getContainer() + */ public static function getContainer() { /** @var \Illuminate\View\Factory $instance */ return $instance->getContainer(); @@ -16927,8 +16472,7 @@ public static function getContainer() * @param \Illuminate\Contracts\Container\Container $container * @return void * @static - */ - public static function setContainer($container) + */ public static function setContainer($container) { /** @var \Illuminate\View\Factory $instance */ $instance->setContainer($container); @@ -16940,8 +16484,7 @@ public static function setContainer($container) * @param mixed $default * @return mixed * @static - */ - public static function shared($key, $default = null) + */ public static function shared($key, $default = null) { /** @var \Illuminate\View\Factory $instance */ return $instance->shared($key, $default); @@ -16951,8 +16494,7 @@ public static function shared($key, $default = null) * * @return array * @static - */ - public static function getShared() + */ public static function getShared() { /** @var \Illuminate\View\Factory $instance */ return $instance->getShared(); @@ -16964,8 +16506,7 @@ public static function getShared() * @param object|callable $macro * @return void * @static - */ - public static function macro($name, $macro) + */ public static function macro($name, $macro) { \Illuminate\View\Factory::macro($name, $macro); } @@ -16977,8 +16518,7 @@ public static function macro($name, $macro) * @return void * @throws \ReflectionException * @static - */ - public static function mixin($mixin, $replace = true) + */ public static function mixin($mixin, $replace = true) { \Illuminate\View\Factory::mixin($mixin, $replace); } @@ -16988,8 +16528,7 @@ public static function mixin($mixin, $replace = true) * @param string $name * @return bool * @static - */ - public static function hasMacro($name) + */ public static function hasMacro($name) { return \Illuminate\View\Factory::hasMacro($name); } @@ -16998,8 +16537,7 @@ public static function hasMacro($name) * * @return void * @static - */ - public static function flushMacros() + */ public static function flushMacros() { \Illuminate\View\Factory::flushMacros(); } @@ -17010,8 +16548,7 @@ public static function flushMacros() * @param array $data * @return void * @static - */ - public static function startComponent($view, $data = []) + */ public static function startComponent($view, $data = []) { /** @var \Illuminate\View\Factory $instance */ $instance->startComponent($view, $data); @@ -17023,8 +16560,7 @@ public static function startComponent($view, $data = []) * @param array $data * @return void * @static - */ - public static function startComponentFirst($names, $data = []) + */ public static function startComponentFirst($names, $data = []) { /** @var \Illuminate\View\Factory $instance */ $instance->startComponentFirst($names, $data); @@ -17034,8 +16570,7 @@ public static function startComponentFirst($names, $data = []) * * @return string * @static - */ - public static function renderComponent() + */ public static function renderComponent() { /** @var \Illuminate\View\Factory $instance */ return $instance->renderComponent(); @@ -17047,8 +16582,7 @@ public static function renderComponent() * @param mixed $default * @return mixed|null * @static - */ - public static function getConsumableComponentData($key, $default = null) + */ public static function getConsumableComponentData($key, $default = null) { /** @var \Illuminate\View\Factory $instance */ return $instance->getConsumableComponentData($key, $default); @@ -17061,8 +16595,7 @@ public static function getConsumableComponentData($key, $default = null) * @param array $attributes * @return void * @static - */ - public static function slot($name, $content = null, $attributes = []) + */ public static function slot($name, $content = null, $attributes = []) { /** @var \Illuminate\View\Factory $instance */ $instance->slot($name, $content, $attributes); @@ -17072,8 +16605,7 @@ public static function slot($name, $content = null, $attributes = []) * * @return void * @static - */ - public static function endSlot() + */ public static function endSlot() { /** @var \Illuminate\View\Factory $instance */ $instance->endSlot(); @@ -17085,8 +16617,7 @@ public static function endSlot() * @param \Closure|string $callback * @return array * @static - */ - public static function creator($views, $callback) + */ public static function creator($views, $callback) { /** @var \Illuminate\View\Factory $instance */ return $instance->creator($views, $callback); @@ -17097,8 +16628,7 @@ public static function creator($views, $callback) * @param array $composers * @return array * @static - */ - public static function composers($composers) + */ public static function composers($composers) { /** @var \Illuminate\View\Factory $instance */ return $instance->composers($composers); @@ -17110,8 +16640,7 @@ public static function composers($composers) * @param \Closure|string $callback * @return array * @static - */ - public static function composer($views, $callback) + */ public static function composer($views, $callback) { /** @var \Illuminate\View\Factory $instance */ return $instance->composer($views, $callback); @@ -17122,8 +16651,7 @@ public static function composer($views, $callback) * @param \Illuminate\Contracts\View\View $view * @return void * @static - */ - public static function callComposer($view) + */ public static function callComposer($view) { /** @var \Illuminate\View\Factory $instance */ $instance->callComposer($view); @@ -17134,8 +16662,7 @@ public static function callComposer($view) * @param \Illuminate\Contracts\View\View $view * @return void * @static - */ - public static function callCreator($view) + */ public static function callCreator($view) { /** @var \Illuminate\View\Factory $instance */ $instance->callCreator($view); @@ -17146,8 +16673,7 @@ public static function callCreator($view) * @param string $fragment * @return void * @static - */ - public static function startFragment($fragment) + */ public static function startFragment($fragment) { /** @var \Illuminate\View\Factory $instance */ $instance->startFragment($fragment); @@ -17158,8 +16684,7 @@ public static function startFragment($fragment) * @return string * @throws \InvalidArgumentException * @static - */ - public static function stopFragment() + */ public static function stopFragment() { /** @var \Illuminate\View\Factory $instance */ return $instance->stopFragment(); @@ -17171,8 +16696,7 @@ public static function stopFragment() * @param string|null $default * @return mixed * @static - */ - public static function getFragment($name, $default = null) + */ public static function getFragment($name, $default = null) { /** @var \Illuminate\View\Factory $instance */ return $instance->getFragment($name, $default); @@ -17182,8 +16706,7 @@ public static function getFragment($name, $default = null) * * @return array * @static - */ - public static function getFragments() + */ public static function getFragments() { /** @var \Illuminate\View\Factory $instance */ return $instance->getFragments(); @@ -17193,8 +16716,7 @@ public static function getFragments() * * @return void * @static - */ - public static function flushFragments() + */ public static function flushFragments() { /** @var \Illuminate\View\Factory $instance */ $instance->flushFragments(); @@ -17206,8 +16728,7 @@ public static function flushFragments() * @param string|null $content * @return void * @static - */ - public static function startSection($section, $content = null) + */ public static function startSection($section, $content = null) { /** @var \Illuminate\View\Factory $instance */ $instance->startSection($section, $content); @@ -17219,8 +16740,7 @@ public static function startSection($section, $content = null) * @param string $content * @return void * @static - */ - public static function inject($section, $content) + */ public static function inject($section, $content) { /** @var \Illuminate\View\Factory $instance */ $instance->inject($section, $content); @@ -17230,8 +16750,7 @@ public static function inject($section, $content) * * @return string * @static - */ - public static function yieldSection() + */ public static function yieldSection() { /** @var \Illuminate\View\Factory $instance */ return $instance->yieldSection(); @@ -17243,8 +16762,7 @@ public static function yieldSection() * @return string * @throws \InvalidArgumentException * @static - */ - public static function stopSection($overwrite = false) + */ public static function stopSection($overwrite = false) { /** @var \Illuminate\View\Factory $instance */ return $instance->stopSection($overwrite); @@ -17255,8 +16773,7 @@ public static function stopSection($overwrite = false) * @return string * @throws \InvalidArgumentException * @static - */ - public static function appendSection() + */ public static function appendSection() { /** @var \Illuminate\View\Factory $instance */ return $instance->appendSection(); @@ -17268,8 +16785,7 @@ public static function appendSection() * @param string $default * @return string * @static - */ - public static function yieldContent($section, $default = '') + */ public static function yieldContent($section, $default = '') { /** @var \Illuminate\View\Factory $instance */ return $instance->yieldContent($section, $default); @@ -17280,8 +16796,7 @@ public static function yieldContent($section, $default = '') * @param string $section * @return string * @static - */ - public static function parentPlaceholder($section = '') + */ public static function parentPlaceholder($section = '') { return \Illuminate\View\Factory::parentPlaceholder($section); } @@ -17291,8 +16806,7 @@ public static function parentPlaceholder($section = '') * @param string $name * @return bool * @static - */ - public static function hasSection($name) + */ public static function hasSection($name) { /** @var \Illuminate\View\Factory $instance */ return $instance->hasSection($name); @@ -17303,8 +16817,7 @@ public static function hasSection($name) * @param string $name * @return bool * @static - */ - public static function sectionMissing($name) + */ public static function sectionMissing($name) { /** @var \Illuminate\View\Factory $instance */ return $instance->sectionMissing($name); @@ -17316,8 +16829,7 @@ public static function sectionMissing($name) * @param string|null $default * @return mixed * @static - */ - public static function getSection($name, $default = null) + */ public static function getSection($name, $default = null) { /** @var \Illuminate\View\Factory $instance */ return $instance->getSection($name, $default); @@ -17327,8 +16839,7 @@ public static function getSection($name, $default = null) * * @return array * @static - */ - public static function getSections() + */ public static function getSections() { /** @var \Illuminate\View\Factory $instance */ return $instance->getSections(); @@ -17338,8 +16849,7 @@ public static function getSections() * * @return void * @static - */ - public static function flushSections() + */ public static function flushSections() { /** @var \Illuminate\View\Factory $instance */ $instance->flushSections(); @@ -17350,8 +16860,7 @@ public static function flushSections() * @param \Countable|array $data * @return void * @static - */ - public static function addLoop($data) + */ public static function addLoop($data) { /** @var \Illuminate\View\Factory $instance */ $instance->addLoop($data); @@ -17361,8 +16870,7 @@ public static function addLoop($data) * * @return void * @static - */ - public static function incrementLoopIndices() + */ public static function incrementLoopIndices() { /** @var \Illuminate\View\Factory $instance */ $instance->incrementLoopIndices(); @@ -17372,8 +16880,7 @@ public static function incrementLoopIndices() * * @return void * @static - */ - public static function popLoop() + */ public static function popLoop() { /** @var \Illuminate\View\Factory $instance */ $instance->popLoop(); @@ -17383,8 +16890,7 @@ public static function popLoop() * * @return \stdClass|null * @static - */ - public static function getLastLoop() + */ public static function getLastLoop() { /** @var \Illuminate\View\Factory $instance */ return $instance->getLastLoop(); @@ -17394,8 +16900,7 @@ public static function getLastLoop() * * @return array * @static - */ - public static function getLoopStack() + */ public static function getLoopStack() { /** @var \Illuminate\View\Factory $instance */ return $instance->getLoopStack(); @@ -17407,8 +16912,7 @@ public static function getLoopStack() * @param string $content * @return void * @static - */ - public static function startPush($section, $content = '') + */ public static function startPush($section, $content = '') { /** @var \Illuminate\View\Factory $instance */ $instance->startPush($section, $content); @@ -17419,8 +16923,7 @@ public static function startPush($section, $content = '') * @return string * @throws \InvalidArgumentException * @static - */ - public static function stopPush() + */ public static function stopPush() { /** @var \Illuminate\View\Factory $instance */ return $instance->stopPush(); @@ -17432,8 +16935,7 @@ public static function stopPush() * @param string $content * @return void * @static - */ - public static function startPrepend($section, $content = '') + */ public static function startPrepend($section, $content = '') { /** @var \Illuminate\View\Factory $instance */ $instance->startPrepend($section, $content); @@ -17444,8 +16946,7 @@ public static function startPrepend($section, $content = '') * @return string * @throws \InvalidArgumentException * @static - */ - public static function stopPrepend() + */ public static function stopPrepend() { /** @var \Illuminate\View\Factory $instance */ return $instance->stopPrepend(); @@ -17457,8 +16958,7 @@ public static function stopPrepend() * @param string $default * @return string * @static - */ - public static function yieldPushContent($section, $default = '') + */ public static function yieldPushContent($section, $default = '') { /** @var \Illuminate\View\Factory $instance */ return $instance->yieldPushContent($section, $default); @@ -17468,8 +16968,7 @@ public static function yieldPushContent($section, $default = '') * * @return void * @static - */ - public static function flushStacks() + */ public static function flushStacks() { /** @var \Illuminate\View\Factory $instance */ $instance->flushStacks(); @@ -17480,8 +16979,7 @@ public static function flushStacks() * @param array $replacements * @return void * @static - */ - public static function startTranslation($replacements = []) + */ public static function startTranslation($replacements = []) { /** @var \Illuminate\View\Factory $instance */ $instance->startTranslation($replacements); @@ -17491,27 +16989,23 @@ public static function startTranslation($replacements = []) * * @return string * @static - */ - public static function renderTranslation() + */ public static function renderTranslation() { /** @var \Illuminate\View\Factory $instance */ return $instance->renderTranslation(); } - - } + } /** * * * @see \Illuminate\Foundation\Vite - */ - class Vite { + */ class Vite { /** * Get the preloaded assets. * * @return array * @static - */ - public static function preloadedAssets() + */ public static function preloadedAssets() { /** @var \Illuminate\Foundation\Vite $instance */ return $instance->preloadedAssets(); @@ -17521,8 +17015,7 @@ public static function preloadedAssets() * * @return string|null * @static - */ - public static function cspNonce() + */ public static function cspNonce() { /** @var \Illuminate\Foundation\Vite $instance */ return $instance->cspNonce(); @@ -17533,8 +17026,7 @@ public static function cspNonce() * @param string|null $nonce * @return string * @static - */ - public static function useCspNonce($nonce = null) + */ public static function useCspNonce($nonce = null) { /** @var \Illuminate\Foundation\Vite $instance */ return $instance->useCspNonce($nonce); @@ -17545,8 +17037,7 @@ public static function useCspNonce($nonce = null) * @param string|false $key * @return \Illuminate\Foundation\Vite * @static - */ - public static function useIntegrityKey($key) + */ public static function useIntegrityKey($key) { /** @var \Illuminate\Foundation\Vite $instance */ return $instance->useIntegrityKey($key); @@ -17557,8 +17048,7 @@ public static function useIntegrityKey($key) * @param array $entryPoints * @return \Illuminate\Foundation\Vite * @static - */ - public static function withEntryPoints($entryPoints) + */ public static function withEntryPoints($entryPoints) { /** @var \Illuminate\Foundation\Vite $instance */ return $instance->withEntryPoints($entryPoints); @@ -17569,660 +17059,990 @@ public static function withEntryPoints($entryPoints) * @param string $filename * @return \Illuminate\Foundation\Vite * @static - */ - public static function useManifestFilename($filename) + */ public static function useManifestFilename($filename) { /** @var \Illuminate\Foundation\Vite $instance */ return $instance->useManifestFilename($filename); + } + /** + * Resolve asset paths using the provided resolver. + * + * @param callable|null $urlResolver + * @return \Illuminate\Foundation\Vite + * @static + */ public static function createAssetPathsUsing($resolver) + { + /** @var \Illuminate\Foundation\Vite $instance */ + return $instance->createAssetPathsUsing($resolver); } /** * Get the Vite "hot" file path. * * @return string * @static - */ - public static function hotFile() + */ public static function hotFile() + { + /** @var \Illuminate\Foundation\Vite $instance */ + return $instance->hotFile(); + } + /** + * Set the Vite "hot" file path. + * + * @param string $path + * @return \Illuminate\Foundation\Vite + * @static + */ public static function useHotFile($path) + { + /** @var \Illuminate\Foundation\Vite $instance */ + return $instance->useHotFile($path); + } + /** + * Set the Vite build directory. + * + * @param string $path + * @return \Illuminate\Foundation\Vite + * @static + */ public static function useBuildDirectory($path) + { + /** @var \Illuminate\Foundation\Vite $instance */ + return $instance->useBuildDirectory($path); + } + /** + * Use the given callback to resolve attributes for script tags. + * + * @param \Illuminate\Foundation\(callable(string, string, ?array, ?array): array)|array $attributes + * @return \Illuminate\Foundation\Vite + * @static + */ public static function useScriptTagAttributes($attributes) + { + /** @var \Illuminate\Foundation\Vite $instance */ + return $instance->useScriptTagAttributes($attributes); + } + /** + * Use the given callback to resolve attributes for style tags. + * + * @param \Illuminate\Foundation\(callable(string, string, ?array, ?array): array)|array $attributes + * @return \Illuminate\Foundation\Vite + * @static + */ public static function useStyleTagAttributes($attributes) + { + /** @var \Illuminate\Foundation\Vite $instance */ + return $instance->useStyleTagAttributes($attributes); + } + /** + * Use the given callback to resolve attributes for preload tags. + * + * @param \Illuminate\Foundation\(callable(string, string, ?array, ?array): (array|false))|array|false $attributes + * @return \Illuminate\Foundation\Vite + * @static + */ public static function usePreloadTagAttributes($attributes) + { + /** @var \Illuminate\Foundation\Vite $instance */ + return $instance->usePreloadTagAttributes($attributes); + } + /** + * Generate React refresh runtime script. + * + * @return \Illuminate\Support\HtmlString|void + * @static + */ public static function reactRefresh() + { + /** @var \Illuminate\Foundation\Vite $instance */ + return $instance->reactRefresh(); + } + /** + * Get the URL for an asset. + * + * @param string $asset + * @param string|null $buildDirectory + * @return string + * @static + */ public static function asset($asset, $buildDirectory = null) + { + /** @var \Illuminate\Foundation\Vite $instance */ + return $instance->asset($asset, $buildDirectory); + } + /** + * Get the content of a given asset. + * + * @param string $asset + * @param string|null $buildDirectory + * @return string + * @throws \Exception + * @static + */ public static function content($asset, $buildDirectory = null) + { + /** @var \Illuminate\Foundation\Vite $instance */ + return $instance->content($asset, $buildDirectory); + } + /** + * Get a unique hash representing the current manifest, or null if there is no manifest. + * + * @param string|null $buildDirectory + * @return string|null + * @static + */ public static function manifestHash($buildDirectory = null) + { + /** @var \Illuminate\Foundation\Vite $instance */ + return $instance->manifestHash($buildDirectory); + } + /** + * Determine if the HMR server is running. + * + * @return bool + * @static + */ public static function isRunningHot() + { + /** @var \Illuminate\Foundation\Vite $instance */ + return $instance->isRunningHot(); + } + /** + * Get the Vite tag content as a string of HTML. + * + * @return string + * @static + */ public static function toHtml() + { + /** @var \Illuminate\Foundation\Vite $instance */ + return $instance->toHtml(); + } + /** + * Register a custom macro. + * + * @param string $name + * @param object|callable $macro + * @return void + * @static + */ public static function macro($name, $macro) + { + \Illuminate\Foundation\Vite::macro($name, $macro); + } + /** + * Mix another object into the class. + * + * @param object $mixin + * @param bool $replace + * @return void + * @throws \ReflectionException + * @static + */ public static function mixin($mixin, $replace = true) + { + \Illuminate\Foundation\Vite::mixin($mixin, $replace); + } + /** + * Checks if macro is registered. + * + * @param string $name + * @return bool + * @static + */ public static function hasMacro($name) + { + return \Illuminate\Foundation\Vite::hasMacro($name); + } + /** + * Flush the existing macros. + * + * @return void + * @static + */ public static function flushMacros() + { + \Illuminate\Foundation\Vite::flushMacros(); + } + } + } + +namespace App\Facades { + /** + * + * + */ class CdnHelperFacade { + /** + * Create a CDN invalidation for media. + * + * @param \App\Enums\MediaType $type + * @param string $invalidationPath + * @return void + * @static + */ public static function invalidateMedia($type, $invalidationPath) + { + /** @var \App\Helpers\CloudFrontHelper $instance */ + $instance->invalidateMedia($type, $invalidationPath); + } + /** + * Return whether the CDN is configured. + * + * @return bool + * @static + */ public static function isConfigured() + { + /** @var \App\Helpers\CloudFrontHelper $instance */ + return $instance->isConfigured(); + } + } + /** + * + * + */ class CloudStorageFacade { + /** + * Returns the configuration for opening data from the cloud storage. + * + * @param string $key + * @return array + * @static + */ public static function getOpenConfiguration($key) + { + /** @var \App\Helpers\PhpFfmpegVideoStreaming\S3Helper $instance */ + return $instance->getOpenConfiguration($key); + } + /** + * Returns the configuration for saving data to the cloud storage. + * + * @param string $destinationPath + * @param string $fileName + * @return array + * @static + */ public static function getSaveConfiguration($destinationPath, $fileName) + { + /** @var \App\Helpers\PhpFfmpegVideoStreaming\S3Helper $instance */ + return $instance->getSaveConfiguration($destinationPath, $fileName); + } + } + /** + * + * + */ class FilePathHelperFacade { + /** + * Get the path to an (existing) image derivative. + * + * Path structure: {username}/{identifier}/{versionKey}/{width}x_{height}y_{quality}q_{derivativeHash}.{format} + * + * @param \App\Models\Version $version + * @param array|null $transformations + * @return string + * @static + */ public static function toImageDerivativeFile($version, $transformations = null) + { + /** @var \App\Helpers\FilePathHelper $instance */ + return $instance->toImageDerivativeFile($version, $transformations); + } + /** + * Get the path to the directory of an image derivative version. + * + * Path structure: {username}/{identifier}/{versionKey} + * + * @param \App\Models\Version $version + * @return string + * @static + */ public static function toImageDerivativeVersionDirectory($version) + { + /** @var \App\Helpers\FilePathHelper $instance */ + return $instance->toImageDerivativeVersionDirectory($version); + } + /** + * Get the path to an original. + * + * Path structure: {username}/{identifier}/{filename} + * + * @param \App\Models\Version $version + * @return string + * @static + */ public static function toOriginalFile($version) + { + /** @var \App\Helpers\FilePathHelper $instance */ + return $instance->toOriginalFile($version); + } + /** + * Get the path to a video derivative. + * + * Path structure: {username}/{identifier}/{format}/{filename} + * + * @param \App\Models\Media $media + * @param string $format + * @param string|null $fileName + * @return string + * @static + */ public static function toVideoDerivativeFile($media, $format, $fileName = null) + { + /** @var \App\Helpers\FilePathHelper $instance */ + return $instance->toVideoDerivativeFile($media, $format, $fileName); + } + /** + * Get the path to a temporary video derivative. + * + * Path structure: {username}/{identifier}-{versionKey}-temp/{format}/{filename} + * + * @param \App\Models\Version $version + * @param string $format + * @param string|null $fileName + * @return string + * @static + */ public static function toTempVideoDerivativeFile($version, $format, $fileName = null) + { + /** @var \App\Helpers\FilePathHelper $instance */ + return $instance->toTempVideoDerivativeFile($version, $format, $fileName); + } + /** + * Get the path to the temporary video derivatives directory. + * + * Path structure: {username}/{identifier}-{versionKey}-temp + * + * @param \App\Models\Version $version + * @return string + * @static + */ public static function toTempVideoDerivativesDirectory($version) + { + /** @var \App\Helpers\FilePathHelper $instance */ + return $instance->toTempVideoDerivativesDirectory($version); + } + /** + * Get the base path for media. + * + * Path structure: {username}/{identifier}/ + * + * @param \App\Models\Media $media + * @return string + * @static + */ public static function toBaseDirectory($media) + { + /** @var \App\Helpers\FilePathHelper $instance */ + return $instance->toBaseDirectory($media); + } + /** + * Create the filename for an original. + * + * Filename structure: {versionKey}-{filename} + * + * @param \App\Models\Version $version + * @param string $fileName + * @return string + * @static + */ public static function createOriginalFileName($version, $fileName) + { + /** @var \App\Helpers\FilePathHelper $instance */ + return $instance->createOriginalFileName($version, $fileName); + } + } + /** + * + * + */ class TranscodeFacade { + /** + * Creates a job which handles the transcoding of a video. + * + * @param string $originalFilePath + * @param \App\Models\Version $version + * @param \App\Models\UploadSlot $uploadSlot + * @return bool + * @static + */ public static function createJob($originalFilePath, $version, $uploadSlot) + { + /** @var \App\Classes\Transcode $instance */ + return $instance->createJob($originalFilePath, $version, $uploadSlot); + } + /** + * Creates a job which handles the transcoding of a video when a version number is updated. + * + * @param string $originalFilePath + * @param \App\Models\Version $version + * @param \App\Models\UploadSlot $uploadSlot + * @param int $oldVersionNumber + * @param bool $wasProcessed + * @return bool + * @static + */ public static function createJobForVersionUpdate($originalFilePath, $version, $uploadSlot, $oldVersionNumber, $wasProcessed) + { + /** @var \App\Classes\Transcode $instance */ + return $instance->createJobForVersionUpdate($originalFilePath, $version, $uploadSlot, $oldVersionNumber, $wasProcessed); + } + /** + * Inform client package about the transcoding result. + * + * @param \App\Enums\ResponseState $responseState + * @param string $callbackUrl + * @param string $uploadToken + * @param \App\Models\Media $media + * @param int $versionNumber + * @return void + * @static + */ public static function callback($responseState, $callbackUrl, $uploadToken, $media, $versionNumber) + { + /** @var \App\Classes\Transcode $instance */ + $instance->callback($responseState, $callbackUrl, $uploadToken, $media, $versionNumber); + } + } + /** + * + * + */ class TransformFacade { + /** + * Transmorph image based on specified transformations. + * + * @param string $pathToOriginalImage + * @param array|null $transformations + * @return string Binary string of the image. + * @throws FileNotFoundException + * @static + */ public static function transform($pathToOriginalImage, $transformations = null) + { + /** @var \App\Classes\Intervention\Transform $instance */ + return $instance->transform($pathToOriginalImage, $transformations); + } + /** + * Resize an image based on specified width and height. + * + * Keeps the aspect ratio and prevents upsizing. + * + * @param $image + * @param int $width + * @param int $height + * @static + */ public static function resize($image, $width, $height) + { + /** @var \App\Classes\Intervention\Transform $instance */ + return $instance->resize($image, $width, $height); + } + /** + * Use a converter class to encode the image to given format and quality. + * + * @param $image + * @param string $format + * @param int|null $quality + * @return \App\Interfaces\ConvertedImageInterface + * @static + */ public static function format($image, $format, $quality = null) + { + /** @var \App\Classes\Intervention\Transform $instance */ + return $instance->format($image, $format, $quality); + } + /** + * + * + * @return string[] + * @static + */ public static function getSupportedFormats() + { + /** @var \App\Classes\Intervention\Transform $instance */ + return $instance->getSupportedFormats(); + } + } + } + +namespace Intervention\Image\Facades { + /** + * + * + */ class Image { + /** + * Overrides configuration settings + * + * @param array $config + * @return self + * @static + */ public static function configure($config = []) + { + /** @var \Intervention\Image\ImageManager $instance */ + return $instance->configure($config); + } + /** + * Initiates an Image instance from different input types + * + * @param mixed $data + * @return \Intervention\Image\Image + * @static + */ public static function make($data) + { + /** @var \Intervention\Image\ImageManager $instance */ + return $instance->make($data); + } + /** + * Creates an empty image canvas + * + * @param int $width + * @param int $height + * @param mixed $background + * @return \Intervention\Image\Image + * @static + */ public static function canvas($width, $height, $background = null) + { + /** @var \Intervention\Image\ImageManager $instance */ + return $instance->canvas($width, $height, $background); + } + /** + * Create new cached image and run callback + * (requires additional package intervention/imagecache) + * + * @param \Closure $callback + * @param int $lifetime + * @param boolean $returnObj + * @return \Image + * @static + */ public static function cache($callback, $lifetime = null, $returnObj = false) + { + /** @var \Intervention\Image\ImageManager $instance */ + return $instance->cache($callback, $lifetime, $returnObj); + } + } + /** + * + * + */ class Image { + /** + * Overrides configuration settings + * + * @param array $config + * @return self + * @static + */ public static function configure($config = []) + { + /** @var \Intervention\Image\ImageManager $instance */ + return $instance->configure($config); + } + /** + * Initiates an Image instance from different input types + * + * @param mixed $data + * @return \Intervention\Image\Image + * @static + */ public static function make($data) + { + /** @var \Intervention\Image\ImageManager $instance */ + return $instance->make($data); + } + /** + * Creates an empty image canvas + * + * @param int $width + * @param int $height + * @param mixed $background + * @return \Intervention\Image\Image + * @static + */ public static function canvas($width, $height, $background = null) + { + /** @var \Intervention\Image\ImageManager $instance */ + return $instance->canvas($width, $height, $background); + } + /** + * Create new cached image and run callback + * (requires additional package intervention/imagecache) + * + * @param \Closure $callback + * @param int $lifetime + * @param boolean $returnObj + * @return \Image + * @static + */ public static function cache($callback, $lifetime = null, $returnObj = false) { - /** @var \Illuminate\Foundation\Vite $instance */ - return $instance->hotFile(); + /** @var \Intervention\Image\ImageManager $instance */ + return $instance->cache($callback, $lifetime, $returnObj); } + } + } + +namespace Cybex\Protector { + /** + * + * + * @see \Cybex\Protector\Skeleton\SkeletonClass + */ class ProtectorFacade { /** - * Set the Vite "hot" file path. + * Imports a specific SQL dump. * - * @param string $path - * @return \Illuminate\Foundation\Vite + * @throws FailedMysqlCommandException + * @throws InvalidEnvironmentException + * @throws InvalidConnectionException + * @throws FileNotFoundException + * @throws InvalidConfigurationException * @static - */ - public static function useHotFile($path) + */ public static function importDump($sourceFilePath, $options = []) { - /** @var \Illuminate\Foundation\Vite $instance */ - return $instance->useHotFile($path); + /** @var \Cybex\Protector\Protector $instance */ + return $instance->importDump($sourceFilePath, $options); } /** - * Set the Vite build directory. + * Public function to create the Destination File Path for the dump. * - * @param string $path - * @return \Illuminate\Foundation\Vite * @static - */ - public static function useBuildDirectory($path) + */ public static function createDestinationFilePath($fileName, $subFolder = null) { - /** @var \Illuminate\Foundation\Vite $instance */ - return $instance->useBuildDirectory($path); + /** @var \Cybex\Protector\Protector $instance */ + return $instance->createDestinationFilePath($fileName, $subFolder); } /** - * Use the given callback to resolve attributes for script tags. + * Public function to create a dump for the given configuration. * - * @param \Illuminate\Foundation\(callable(string, string, ?array, ?array): array)|array $attributes - * @return \Illuminate\Foundation\Vite + * @throws FailedDumpGenerationException + * @throws InvalidConnectionException * @static - */ - public static function useScriptTagAttributes($attributes) + */ public static function createDump($options = []) { - /** @var \Illuminate\Foundation\Vite $instance */ - return $instance->useScriptTagAttributes($attributes); + /** @var \Cybex\Protector\Protector $instance */ + return $instance->createDump($options); } /** - * Use the given callback to resolve attributes for style tags. + * Returns the appended Meta-Data from a file. * - * @param \Illuminate\Foundation\(callable(string, string, ?array, ?array): array)|array $attributes - * @return \Illuminate\Foundation\Vite * @static - */ - public static function useStyleTagAttributes($attributes) + */ public static function getDumpMetaData($dumpFile) { - /** @var \Illuminate\Foundation\Vite $instance */ - return $instance->useStyleTagAttributes($attributes); + /** @var \Cybex\Protector\Protector $instance */ + return $instance->getDumpMetaData($dumpFile); } /** - * Use the given callback to resolve attributes for preload tags. + * Deletes all dumps except an optional given file. * - * @param \Illuminate\Foundation\(callable(string, string, ?array, ?array): (array|false))|array|false $attributes - * @return \Illuminate\Foundation\Vite * @static - */ - public static function usePreloadTagAttributes($attributes) + */ public static function flush($excludeFile = null) { - /** @var \Illuminate\Foundation\Vite $instance */ - return $instance->usePreloadTagAttributes($attributes); + /** @var \Cybex\Protector\Protector $instance */ + return $instance->flush($excludeFile); } /** - * Generate React refresh runtime script. + * Reads the remote dump file and stores it on the client disk. * - * @return \Illuminate\Support\HtmlString|void + * @throws FailedRemoteDatabaseFetchingException + * @throws InvalidConfigurationException + * @throws InvalidEnvironmentException * @static - */ - public static function reactRefresh() + */ public static function getRemoteDump() { - /** @var \Illuminate\Foundation\Vite $instance */ - return $instance->reactRefresh(); + /** @var \Cybex\Protector\Protector $instance */ + return $instance->getRemoteDump(); } /** - * Get the URL for an asset. + * Returns whether the app is under git version control based on a filesystem check. * - * @param string $asset - * @param string|null $buildDirectory - * @return string * @static - */ - public static function asset($asset, $buildDirectory = null) + */ public static function isUnderGitVersionControl() { - /** @var \Illuminate\Foundation\Vite $instance */ - return $instance->asset($asset, $buildDirectory); + /** @var \Cybex\Protector\Protector $instance */ + return $instance->isUnderGitVersionControl(); } /** - * Get a unique hash representing the current manifest, or null if there is no manifest. + * Creates a filename for the dump file. * - * @param string|null $buildDirectory - * @return string|null * @static - */ - public static function manifestHash($buildDirectory = null) + */ public static function createFilename() { - /** @var \Illuminate\Foundation\Vite $instance */ - return $instance->manifestHash($buildDirectory); + /** @var \Cybex\Protector\Protector $instance */ + return $instance->createFilename(); } /** - * Determine if the HMR server is running. + * Returns the existing Meta-Data for a new dump. * - * @return bool * @static - */ - public static function isRunningHot() + */ public static function getMetaData($refresh = false) { - /** @var \Illuminate\Foundation\Vite $instance */ - return $instance->isRunningHot(); + /** @var \Cybex\Protector\Protector $instance */ + return $instance->getMetaData($refresh); } /** - * Get the Vite tag content as a string of HTML. + * Returns the config value for the baseDirectory key. * - * @return string * @static - */ - public static function toHtml() + */ public static function getBaseDirectory() { - /** @var \Illuminate\Foundation\Vite $instance */ - return $instance->toHtml(); + /** @var \Cybex\Protector\Protector $instance */ + return $instance->getBaseDirectory(); } /** - * Register a custom macro. + * Prepares the file download response. + * + * Prevents the exposure of the connectionName parameter to routing. * - * @param string $name - * @param object|callable $macro - * @return void * @static - */ - public static function macro($name, $macro) + */ public static function prepareFileDownloadResponse($request) { - \Illuminate\Foundation\Vite::macro($name, $macro); + /** @var \Cybex\Protector\Protector $instance */ + return $instance->prepareFileDownloadResponse($request); } /** - * Mix another object into the class. + * Generates a response which allows downloading the dump file. * - * @param object $mixin - * @param bool $replace - * @return void - * @throws \ReflectionException * @static - */ - public static function mixin($mixin, $replace = true) + */ public static function generateFileDownloadResponse($request, $connectionName = null) { - \Illuminate\Foundation\Vite::mixin($mixin, $replace); + /** @var \Cybex\Protector\Protector $instance */ + return $instance->generateFileDownloadResponse($request, $connectionName); } /** - * Checks if macro is registered. + * Returns the disk which is stated in the config. If no disk is stated the default filesystem disk will be returned. * - * @param string $name - * @return bool * @static - */ - public static function hasMacro($name) + */ public static function getDisk($diskName = null) { - return \Illuminate\Foundation\Vite::hasMacro($name); + /** @var \Cybex\Protector\Protector $instance */ + return $instance->getDisk($diskName); } /** - * Flush the existing macros. + * Returns the name of the most recent dump. * - * @return void + * @throws FileNotFoundException * @static - */ - public static function flushMacros() + */ public static function getLatestDumpName() { - \Illuminate\Foundation\Vite::flushMacros(); + /** @var \Cybex\Protector\Protector $instance */ + return $instance->getLatestDumpName(); } - - } - -} - - namespace Illuminate\Support { - /** - * - * - */ - class Arr { - - } - /** - * - * - */ - class Js { - - } - /** - * - * - */ - class Str { - - } - -} - - namespace App\Facades { - /** - * - * - */ - class CdnHelperFacade { /** - * Create a CDN invalidation for media. + * * - * @param \App\Enums\MediaType $type - * @param string $invalidationPath - * @return void + * @throws InvalidConfigurationException * @static - */ - public static function invalidateMedia($type, $invalidationPath) + */ public static function decryptString($encryptedString) { - /** @var \App\Helpers\CloudFrontHelper $instance */ - $instance->invalidateMedia($type, $invalidationPath); + /** @var \Cybex\Protector\Protector $instance */ + return $instance->decryptString($encryptedString); } /** - * Return whether the CDN is configured. + * * - * @return bool * @static - */ - public static function isConfigured() + */ public static function createTempFilePath($diskFilePath) { - /** @var \App\Helpers\CloudFrontHelper $instance */ - return $instance->isConfigured(); + /** @var \Cybex\Protector\Protector $instance */ + return $instance->createTempFilePath($diskFilePath); } - - } - /** - * - * - */ - class CloudStorageFacade { /** - * Returns the configuration for opening data from the cloud storage. + * * - * @param string $key - * @return array * @static - */ - public static function getOpenConfiguration($key) + */ public static function getDumpFiles($excludeFile = null) { - /** @var \App\Helpers\PhpFfmpegVideoStreaming\S3Helper $instance */ - return $instance->getOpenConfiguration($key); + /** @var \Cybex\Protector\Protector $instance */ + return $instance->getDumpFiles($excludeFile); } /** - * Returns the configuration for saving data to the cloud storage. + * Throws an exception if Exec is deactivated. * - * @param string $destinationPath - * @param string $fileName - * @return array + * @throws ShellAccessDeniedException * @static - */ - public static function getSaveConfiguration($destinationPath, $fileName) + */ public static function guardExecEnabled() { - /** @var \App\Helpers\PhpFfmpegVideoStreaming\S3Helper $instance */ - return $instance->getSaveConfiguration($destinationPath, $fileName); + /** @var \Cybex\Protector\Protector $instance */ + return $instance->guardExecEnabled(); } - - } - /** - * - * - */ - class FilePathHelperFacade { /** - * Get the path to an (existing) image derivative. - * - * Path structure: {username}/{identifier}/{versionKey}/{width}x_{height}y_{quality}q_{derivativeHash}.{format} + * Sets the auth token for Laravel Sanctum authentication. * - * @param \App\Models\Version $version - * @param array|null $transformations - * @return string * @static - */ - public static function toImageDerivativeFile($version, $transformations = null) + */ public static function withAuthToken($authToken) { - /** @var \App\Helpers\FilePathHelper $instance */ - return $instance->toImageDerivativeFile($version, $transformations); + /** @var \Cybex\Protector\Protector $instance */ + return $instance->withAuthToken($authToken); } /** - * Get the path to the directory of an image derivative version. - * - * Path structure: {username}/{identifier}/{versionKey} + * Sets the name of the .env key for the Protector DB Token. * - * @param \App\Models\Version $version - * @return string * @static - */ - public static function toImageDerivativeVersionDirectory($version) + */ public static function withAuthTokenKeyName($authTokenKeyName) { - /** @var \App\Helpers\FilePathHelper $instance */ - return $instance->toImageDerivativeVersionDirectory($version); + /** @var \Cybex\Protector\Protector $instance */ + return $instance->withAuthTokenKeyName($authTokenKeyName); } /** - * Get the path to an original. * - * Path structure: {username}/{identifier}/{filename} * - * @param \App\Models\Version $version - * @return string * @static - */ - public static function toOriginalFile($version) + */ public static function withoutAutoIncrementingState() { - /** @var \App\Helpers\FilePathHelper $instance */ - return $instance->toOriginalFile($version); + /** @var \Cybex\Protector\Protector $instance */ + return $instance->withoutAutoIncrementingState(); } /** - * Get the path to a video derivative. * - * Path structure: {username}/{identifier}/{format}/{filename} * - * @param \App\Models\Media $media - * @param string $format - * @param string|null $fileName - * @return string * @static - */ - public static function toVideoDerivativeFile($media, $format, $fileName = null) + */ public static function withoutCharsets() { - /** @var \App\Helpers\FilePathHelper $instance */ - return $instance->toVideoDerivativeFile($media, $format, $fileName); + /** @var \Cybex\Protector\Protector $instance */ + return $instance->withoutCharsets(); } /** - * Get the path to a temporary video derivative. * - * Path structure: {username}/{identifier}-{versionKey}-temp/{format}/{filename} * - * @param \App\Models\Version $version - * @param string $format - * @param string|null $fileName - * @return string * @static - */ - public static function toTempVideoDerivativeFile($version, $format, $fileName = null) + */ public static function withoutComments() { - /** @var \App\Helpers\FilePathHelper $instance */ - return $instance->toTempVideoDerivativeFile($version, $format, $fileName); + /** @var \Cybex\Protector\Protector $instance */ + return $instance->withoutComments(); } /** - * Get the path to the temporary video derivatives directory. * - * Path structure: {username}/{identifier}-{versionKey}-temp * - * @param \App\Models\Version $version - * @return string * @static - */ - public static function toTempVideoDerivativesDirectory($version) + */ public static function withoutData() { - /** @var \App\Helpers\FilePathHelper $instance */ - return $instance->toTempVideoDerivativesDirectory($version); + /** @var \Cybex\Protector\Protector $instance */ + return $instance->withoutData(); } /** - * Get the base path for media. * - * Path structure: {username}/{identifier}/ * - * @param \App\Models\Media $media - * @return string + * @throws InvalidConnectionException * @static - */ - public static function toBaseDirectory($media) + */ public static function withConnectionName($connectionName = null) { - /** @var \App\Helpers\FilePathHelper $instance */ - return $instance->toBaseDirectory($media); + /** @var \Cybex\Protector\Protector $instance */ + return $instance->withConnectionName($connectionName); } /** - * Create the filename for an original. * - * Filename structure: {versionKey}-{filename} * - * @param \App\Models\Version $version - * @param string $fileName - * @return string * @static - */ - public static function createOriginalFileName($version, $fileName) + */ public static function withoutCreateDb() { - /** @var \App\Helpers\FilePathHelper $instance */ - return $instance->createOriginalFileName($version, $fileName); + /** @var \Cybex\Protector\Protector $instance */ + return $instance->withoutCreateDb(); } - - } - /** - * - * - */ - class TranscodeFacade { /** - * Creates a job which handles the transcoding of a video. + * * - * @param string $originalFilePath - * @param \App\Models\Version $version - * @param \App\Models\UploadSlot $uploadSlot - * @return bool * @static - */ - public static function createJob($originalFilePath, $version, $uploadSlot) + */ public static function withoutTablespaces() { - /** @var \App\Classes\Transcode $instance */ - return $instance->createJob($originalFilePath, $version, $uploadSlot); + /** @var \Cybex\Protector\Protector $instance */ + return $instance->withoutTablespaces(); } /** - * Creates a job which handles the transcoding of a video when a version number is updated. + * * - * @param string $originalFilePath - * @param \App\Models\Version $version - * @param \App\Models\UploadSlot $uploadSlot - * @param int $oldVersionNumber - * @param bool $wasProcessed - * @return bool * @static - */ - public static function createJobForVersionUpdate($originalFilePath, $version, $uploadSlot, $oldVersionNumber, $wasProcessed) + */ public static function withMaxPacketLength($maxPacketLength) { - /** @var \App\Classes\Transcode $instance */ - return $instance->createJobForVersionUpdate($originalFilePath, $version, $uploadSlot, $oldVersionNumber, $wasProcessed); + /** @var \Cybex\Protector\Protector $instance */ + return $instance->withMaxPacketLength($maxPacketLength); } /** - * Inform client package about the transcoding result. + * * - * @param \App\Enums\ResponseState $responseState - * @param string $callbackUrl - * @param string $uploadToken - * @param \App\Models\Media $media - * @param int $versionNumber - * @return void * @static - */ - public static function callback($responseState, $callbackUrl, $uploadToken, $media, $versionNumber) + */ public static function withDefaultMaxPacketLength() { - /** @var \App\Classes\Transcode $instance */ - $instance->callback($responseState, $callbackUrl, $uploadToken, $media, $versionNumber); + /** @var \Cybex\Protector\Protector $instance */ + return $instance->withDefaultMaxPacketLength(); } - - } - /** - * - * - */ - class TransformFacade { /** - * Transmorph image based on specified transformations. + * Sets the name of the .env key for the Protector Crypto Key. * - * @param string $pathToOriginalImage - * @param array|null $transformations - * @return string Binary string of the image. - * @throws FileNotFoundException * @static - */ - public static function transform($pathToOriginalImage, $transformations = null) + */ public static function withPrivateKeyName($privateKeyName) { - /** @var \App\Classes\Intervention\Transform $instance */ - return $instance->transform($pathToOriginalImage, $transformations); + /** @var \Cybex\Protector\Protector $instance */ + return $instance->withPrivateKeyName($privateKeyName); } /** - * Resize an image based on specified width and height. - * - * Keeps the aspect ratio and prevents upsizing. + * Sets the server url of the dump endpoint. * - * @param $image - * @param int $width - * @param int $height * @static - */ - public static function resize($image, $width, $height) + */ public static function withServerUrl($serverUrl) { - /** @var \App\Classes\Intervention\Transform $instance */ - return $instance->resize($image, $width, $height); + /** @var \Cybex\Protector\Protector $instance */ + return $instance->withServerUrl($serverUrl); } /** - * Use a converter class to encode the image to given format and quality. + * Gets the name of the .env key for the Protector DB Token. * - * @param $image - * @param string $format - * @param int|null $quality - * @return \App\Interfaces\ConvertedImageInterface * @static - */ - public static function format($image, $format, $quality = null) + */ public static function getAuthTokenKeyName() { - /** @var \App\Classes\Intervention\Transform $instance */ - return $instance->format($image, $format, $quality); + /** @var \Cybex\Protector\Protector $instance */ + return $instance->getAuthTokenKeyName(); } /** - * + * Returns the database name specified in the connectionConfig array. * - * @return string[] * @static - */ - public static function getSupportedFormats() + */ public static function getDatabaseName() { - /** @var \App\Classes\Intervention\Transform $instance */ - return $instance->getSupportedFormats(); + /** @var \Cybex\Protector\Protector $instance */ + return $instance->getDatabaseName(); } - - } - -} - - namespace Intervention\Image\Facades { - /** - * - * - */ - class Image { /** - * Overrides configuration settings + * * - * @param array $config - * @return self * @static - */ - public static function configure($config = []) + */ public static function getMaxPacketLength() { - /** @var \Intervention\Image\ImageManager $instance */ - return $instance->configure($config); + /** @var \Cybex\Protector\Protector $instance */ + return $instance->getMaxPacketLength(); } /** - * Initiates an Image instance from different input types + * Sets the name of the .env key for the Protector Crypto Key. * - * @param mixed $data - * @return \Intervention\Image\Image * @static - */ - public static function make($data) + */ public static function getPrivateKeyName() { - /** @var \Intervention\Image\ImageManager $instance */ - return $instance->make($data); + /** @var \Cybex\Protector\Protector $instance */ + return $instance->getPrivateKeyName(); } /** - * Creates an empty image canvas + * Retrieves the server url of the dump endpoint. * - * @param int $width - * @param int $height - * @param mixed $background - * @return \Intervention\Image\Image * @static - */ - public static function canvas($width, $height, $background = null) + */ public static function getServerUrl() { - /** @var \Intervention\Image\ImageManager $instance */ - return $instance->canvas($width, $height, $background); + /** @var \Cybex\Protector\Protector $instance */ + return $instance->getServerUrl(); } /** - * Create new cached image and run callback - * (requires additional package intervention/imagecache) + * * - * @param \Closure $callback - * @param int $lifetime - * @param boolean $returnObj - * @return \Image * @static - */ - public static function cache($callback, $lifetime = null, $returnObj = false) + */ public static function shouldDumpCharsets() { - /** @var \Intervention\Image\ImageManager $instance */ - return $instance->cache($callback, $lifetime, $returnObj); + /** @var \Cybex\Protector\Protector $instance */ + return $instance->shouldDumpCharsets(); } - - } - /** - * - * - */ - class Image { /** - * Overrides configuration settings + * * - * @param array $config - * @return self * @static - */ - public static function configure($config = []) + */ public static function shouldDumpComments() { - /** @var \Intervention\Image\ImageManager $instance */ - return $instance->configure($config); + /** @var \Cybex\Protector\Protector $instance */ + return $instance->shouldDumpComments(); } /** - * Initiates an Image instance from different input types + * * - * @param mixed $data - * @return \Intervention\Image\Image * @static - */ - public static function make($data) + */ public static function shouldCreateDb() { - /** @var \Intervention\Image\ImageManager $instance */ - return $instance->make($data); + /** @var \Cybex\Protector\Protector $instance */ + return $instance->shouldCreateDb(); } /** - * Creates an empty image canvas + * * - * @param int $width - * @param int $height - * @param mixed $background - * @return \Intervention\Image\Image * @static - */ - public static function canvas($width, $height, $background = null) + */ public static function shouldDumpData() { - /** @var \Intervention\Image\ImageManager $instance */ - return $instance->canvas($width, $height, $background); + /** @var \Cybex\Protector\Protector $instance */ + return $instance->shouldDumpData(); } /** - * Create new cached image and run callback - * (requires additional package intervention/imagecache) + * * - * @param \Closure $callback - * @param int $lifetime - * @param boolean $returnObj - * @return \Image * @static - */ - public static function cache($callback, $lifetime = null, $returnObj = false) + */ public static function shouldRemoveAutoIncrementingState() { - /** @var \Intervention\Image\ImageManager $instance */ - return $instance->cache($callback, $lifetime, $returnObj); + /** @var \Cybex\Protector\Protector $instance */ + return $instance->shouldRemoveAutoIncrementingState(); } - + } } - -} - namespace Spatie\LaravelIgnition\Facades { +namespace Spatie\LaravelIgnition\Facades { /** * * * @see \Spatie\FlareClient\Flare - */ - class Flare { + */ class Flare { /** * * * @static - */ - public static function make($apiKey = null, $contextDetector = null) + */ public static function make($apiKey = null, $contextDetector = null) { return \Spatie\FlareClient\Flare::make($apiKey, $contextDetector); } @@ -18230,8 +18050,7 @@ public static function make($apiKey = null, $contextDetector = null) * * * @static - */ - public static function setApiToken($apiToken) + */ public static function setApiToken($apiToken) { /** @var \Spatie\FlareClient\Flare $instance */ return $instance->setApiToken($apiToken); @@ -18240,8 +18059,7 @@ public static function setApiToken($apiToken) * * * @static - */ - public static function apiTokenSet() + */ public static function apiTokenSet() { /** @var \Spatie\FlareClient\Flare $instance */ return $instance->apiTokenSet(); @@ -18250,8 +18068,7 @@ public static function apiTokenSet() * * * @static - */ - public static function setBaseUrl($baseUrl) + */ public static function setBaseUrl($baseUrl) { /** @var \Spatie\FlareClient\Flare $instance */ return $instance->setBaseUrl($baseUrl); @@ -18260,8 +18077,7 @@ public static function setBaseUrl($baseUrl) * * * @static - */ - public static function setStage($stage) + */ public static function setStage($stage) { /** @var \Spatie\FlareClient\Flare $instance */ return $instance->setStage($stage); @@ -18270,8 +18086,7 @@ public static function setStage($stage) * * * @static - */ - public static function sendReportsImmediately() + */ public static function sendReportsImmediately() { /** @var \Spatie\FlareClient\Flare $instance */ return $instance->sendReportsImmediately(); @@ -18280,8 +18095,7 @@ public static function sendReportsImmediately() * * * @static - */ - public static function determineVersionUsing($determineVersionCallable) + */ public static function determineVersionUsing($determineVersionCallable) { /** @var \Spatie\FlareClient\Flare $instance */ return $instance->determineVersionUsing($determineVersionCallable); @@ -18290,8 +18104,7 @@ public static function determineVersionUsing($determineVersionCallable) * * * @static - */ - public static function reportErrorLevels($reportErrorLevels) + */ public static function reportErrorLevels($reportErrorLevels) { /** @var \Spatie\FlareClient\Flare $instance */ return $instance->reportErrorLevels($reportErrorLevels); @@ -18300,8 +18113,7 @@ public static function reportErrorLevels($reportErrorLevels) * * * @static - */ - public static function filterExceptionsUsing($filterExceptionsCallable) + */ public static function filterExceptionsUsing($filterExceptionsCallable) { /** @var \Spatie\FlareClient\Flare $instance */ return $instance->filterExceptionsUsing($filterExceptionsCallable); @@ -18310,8 +18122,7 @@ public static function filterExceptionsUsing($filterExceptionsCallable) * * * @static - */ - public static function filterReportsUsing($filterReportsCallable) + */ public static function filterReportsUsing($filterReportsCallable) { /** @var \Spatie\FlareClient\Flare $instance */ return $instance->filterReportsUsing($filterReportsCallable); @@ -18321,8 +18132,7 @@ public static function filterReportsUsing($filterReportsCallable) * * @param array|ArgumentReducer>|\Spatie\Backtrace\Arguments\ArgumentReducers|null $argumentReducers * @static - */ - public static function argumentReducers($argumentReducers) + */ public static function argumentReducers($argumentReducers) { /** @var \Spatie\FlareClient\Flare $instance */ return $instance->argumentReducers($argumentReducers); @@ -18331,8 +18141,7 @@ public static function argumentReducers($argumentReducers) * * * @static - */ - public static function withStackFrameArguments($withStackFrameArguments = true) + */ public static function withStackFrameArguments($withStackFrameArguments = true) { /** @var \Spatie\FlareClient\Flare $instance */ return $instance->withStackFrameArguments($withStackFrameArguments); @@ -18341,8 +18150,7 @@ public static function withStackFrameArguments($withStackFrameArguments = true) * * * @static - */ - public static function version() + */ public static function version() { /** @var \Spatie\FlareClient\Flare $instance */ return $instance->version(); @@ -18352,8 +18160,7 @@ public static function version() * * @return array> * @static - */ - public static function getMiddleware() + */ public static function getMiddleware() { /** @var \Spatie\FlareClient\Flare $instance */ return $instance->getMiddleware(); @@ -18362,8 +18169,7 @@ public static function getMiddleware() * * * @static - */ - public static function setContextProviderDetector($contextDetector) + */ public static function setContextProviderDetector($contextDetector) { /** @var \Spatie\FlareClient\Flare $instance */ return $instance->setContextProviderDetector($contextDetector); @@ -18372,8 +18178,7 @@ public static function setContextProviderDetector($contextDetector) * * * @static - */ - public static function setContainer($container) + */ public static function setContainer($container) { /** @var \Spatie\FlareClient\Flare $instance */ return $instance->setContainer($container); @@ -18382,8 +18187,7 @@ public static function setContainer($container) * * * @static - */ - public static function registerFlareHandlers() + */ public static function registerFlareHandlers() { /** @var \Spatie\FlareClient\Flare $instance */ return $instance->registerFlareHandlers(); @@ -18392,8 +18196,7 @@ public static function registerFlareHandlers() * * * @static - */ - public static function registerExceptionHandler() + */ public static function registerExceptionHandler() { /** @var \Spatie\FlareClient\Flare $instance */ return $instance->registerExceptionHandler(); @@ -18402,8 +18205,7 @@ public static function registerExceptionHandler() * * * @static - */ - public static function registerErrorHandler() + */ public static function registerErrorHandler() { /** @var \Spatie\FlareClient\Flare $instance */ return $instance->registerErrorHandler(); @@ -18414,8 +18216,7 @@ public static function registerErrorHandler() * @param \Spatie\FlareClient\FlareMiddleware\FlareMiddleware|array|\Spatie\FlareClient\class-string|callable $middleware * @return \Spatie\FlareClient\Flare * @static - */ - public static function registerMiddleware($middleware) + */ public static function registerMiddleware($middleware) { /** @var \Spatie\FlareClient\Flare $instance */ return $instance->registerMiddleware($middleware); @@ -18425,8 +18226,7 @@ public static function registerMiddleware($middleware) * * @return array> * @static - */ - public static function getMiddlewares() + */ public static function getMiddlewares() { /** @var \Spatie\FlareClient\Flare $instance */ return $instance->getMiddlewares(); @@ -18439,8 +18239,7 @@ public static function getMiddlewares() * @param array $metaData * @return \Spatie\FlareClient\Flare * @static - */ - public static function glow($name, $messageLevel = 'info', $metaData = []) + */ public static function glow($name, $messageLevel = 'info', $metaData = []) { /** @var \Spatie\FlareClient\Flare $instance */ return $instance->glow($name, $messageLevel, $metaData); @@ -18449,8 +18248,7 @@ public static function glow($name, $messageLevel = 'info', $metaData = []) * * * @static - */ - public static function handleException($throwable) + */ public static function handleException($throwable) { /** @var \Spatie\FlareClient\Flare $instance */ return $instance->handleException($throwable); @@ -18460,8 +18258,7 @@ public static function handleException($throwable) * * @return mixed * @static - */ - public static function handleError($code, $message, $file = '', $line = 0) + */ public static function handleError($code, $message, $file = '', $line = 0) { /** @var \Spatie\FlareClient\Flare $instance */ return $instance->handleError($code, $message, $file, $line); @@ -18470,8 +18267,7 @@ public static function handleError($code, $message, $file = '', $line = 0) * * * @static - */ - public static function applicationPath($applicationPath) + */ public static function applicationPath($applicationPath) { /** @var \Spatie\FlareClient\Flare $instance */ return $instance->applicationPath($applicationPath); @@ -18480,8 +18276,7 @@ public static function applicationPath($applicationPath) * * * @static - */ - public static function report($throwable, $callback = null, $report = null) + */ public static function report($throwable, $callback = null, $report = null) { /** @var \Spatie\FlareClient\Flare $instance */ return $instance->report($throwable, $callback, $report); @@ -18490,8 +18285,7 @@ public static function report($throwable, $callback = null, $report = null) * * * @static - */ - public static function reportMessage($message, $logLevel, $callback = null) + */ public static function reportMessage($message, $logLevel, $callback = null) { /** @var \Spatie\FlareClient\Flare $instance */ return $instance->reportMessage($message, $logLevel, $callback); @@ -18500,8 +18294,7 @@ public static function reportMessage($message, $logLevel, $callback = null) * * * @static - */ - public static function sendTestReport($throwable) + */ public static function sendTestReport($throwable) { /** @var \Spatie\FlareClient\Flare $instance */ return $instance->sendTestReport($throwable); @@ -18510,8 +18303,7 @@ public static function sendTestReport($throwable) * * * @static - */ - public static function reset() + */ public static function reset() { /** @var \Spatie\FlareClient\Flare $instance */ return $instance->reset(); @@ -18520,8 +18312,7 @@ public static function reset() * * * @static - */ - public static function anonymizeIp() + */ public static function anonymizeIp() { /** @var \Spatie\FlareClient\Flare $instance */ return $instance->anonymizeIp(); @@ -18532,8 +18323,7 @@ public static function anonymizeIp() * @param array $fieldNames * @return \Spatie\FlareClient\Flare * @static - */ - public static function censorRequestBodyFields($fieldNames) + */ public static function censorRequestBodyFields($fieldNames) { /** @var \Spatie\FlareClient\Flare $instance */ return $instance->censorRequestBodyFields($fieldNames); @@ -18542,8 +18332,7 @@ public static function censorRequestBodyFields($fieldNames) * * * @static - */ - public static function createReport($throwable) + */ public static function createReport($throwable) { /** @var \Spatie\FlareClient\Flare $instance */ return $instance->createReport($throwable); @@ -18552,8 +18341,7 @@ public static function createReport($throwable) * * * @static - */ - public static function createReportFromMessage($message, $logLevel) + */ public static function createReportFromMessage($message, $logLevel) { /** @var \Spatie\FlareClient\Flare $instance */ return $instance->createReportFromMessage($message, $logLevel); @@ -18562,8 +18350,7 @@ public static function createReportFromMessage($message, $logLevel) * * * @static - */ - public static function stage($stage) + */ public static function stage($stage) { /** @var \Spatie\FlareClient\Flare $instance */ return $instance->stage($stage); @@ -18572,8 +18359,7 @@ public static function stage($stage) * * * @static - */ - public static function messageLevel($messageLevel) + */ public static function messageLevel($messageLevel) { /** @var \Spatie\FlareClient\Flare $instance */ return $instance->messageLevel($messageLevel); @@ -18585,8 +18371,7 @@ public static function messageLevel($messageLevel) * @param mixed $default * @return array * @static - */ - public static function getGroup($groupName = 'context', $default = []) + */ public static function getGroup($groupName = 'context', $default = []) { /** @var \Spatie\FlareClient\Flare $instance */ return $instance->getGroup($groupName, $default); @@ -18595,8 +18380,7 @@ public static function getGroup($groupName = 'context', $default = []) * * * @static - */ - public static function context($key, $value) + */ public static function context($key, $value) { /** @var \Spatie\FlareClient\Flare $instance */ return $instance->context($key, $value); @@ -18608,29 +18392,24 @@ public static function context($key, $value) * @param array $properties * @return \Spatie\FlareClient\Flare * @static - */ - public static function group($groupName, $properties) + */ public static function group($groupName, $properties) { /** @var \Spatie\FlareClient\Flare $instance */ return $instance->group($groupName, $properties); } - + } } - -} - namespace Spatie\LaravelImageOptimizer\Facades { +namespace Spatie\LaravelImageOptimizer\Facades { /** * * - */ - class ImageOptimizer { + */ class ImageOptimizer { /** * * * @static - */ - public static function getOptimizers() + */ public static function getOptimizers() { /** @var \Spatie\ImageOptimizer\OptimizerChain $instance */ return $instance->getOptimizers(); @@ -18639,8 +18418,7 @@ public static function getOptimizers() * * * @static - */ - public static function addOptimizer($optimizer) + */ public static function addOptimizer($optimizer) { /** @var \Spatie\ImageOptimizer\OptimizerChain $instance */ return $instance->addOptimizer($optimizer); @@ -18649,8 +18427,7 @@ public static function addOptimizer($optimizer) * * * @static - */ - public static function setOptimizers($optimizers) + */ public static function setOptimizers($optimizers) { /** @var \Spatie\ImageOptimizer\OptimizerChain $instance */ return $instance->setOptimizers($optimizers); @@ -18659,8 +18436,7 @@ public static function setOptimizers($optimizers) * * * @static - */ - public static function setTimeout($timeoutInSeconds) + */ public static function setTimeout($timeoutInSeconds) { /** @var \Spatie\ImageOptimizer\OptimizerChain $instance */ return $instance->setTimeout($timeoutInSeconds); @@ -18669,8 +18445,7 @@ public static function setTimeout($timeoutInSeconds) * * * @static - */ - public static function useLogger($log) + */ public static function useLogger($log) { /** @var \Spatie\ImageOptimizer\OptimizerChain $instance */ return $instance->useLogger($log); @@ -18679,23 +18454,19 @@ public static function useLogger($log) * * * @static - */ - public static function optimize($pathToImage, $pathToOutput = null) + */ public static function optimize($pathToImage, $pathToOutput = null) { /** @var \Spatie\ImageOptimizer\OptimizerChain $instance */ return $instance->optimize($pathToImage, $pathToOutput); } - + } } - -} - namespace Illuminate\Http { +namespace Illuminate\Http { /** * * - */ - class Request { + */ class Request { /** * * @@ -18703,8 +18474,7 @@ class Request { * @param array $rules * @param mixed $params * @static - */ - public static function validate($rules, ...$params) + */ public static function validate($rules, ...$params) { return \Illuminate\Http\Request::validate($rules, ...$params); } @@ -18716,8 +18486,7 @@ public static function validate($rules, ...$params) * @param array $rules * @param mixed $params * @static - */ - public static function validateWithBag($errorBag, $rules, ...$params) + */ public static function validateWithBag($errorBag, $rules, ...$params) { return \Illuminate\Http\Request::validateWithBag($errorBag, $rules, ...$params); } @@ -18727,8 +18496,7 @@ public static function validateWithBag($errorBag, $rules, ...$params) * @see \Illuminate\Foundation\Providers\FoundationServiceProvider::registerRequestSignatureValidation() * @param mixed $absolute * @static - */ - public static function hasValidSignature($absolute = true) + */ public static function hasValidSignature($absolute = true) { return \Illuminate\Http\Request::hasValidSignature($absolute); } @@ -18737,8 +18505,7 @@ public static function hasValidSignature($absolute = true) * * @see \Illuminate\Foundation\Providers\FoundationServiceProvider::registerRequestSignatureValidation() * @static - */ - public static function hasValidRelativeSignature() + */ public static function hasValidRelativeSignature() { return \Illuminate\Http\Request::hasValidRelativeSignature(); } @@ -18749,18 +18516,15 @@ public static function hasValidRelativeSignature() * @param mixed $ignoreQuery * @param mixed $absolute * @static - */ - public static function hasValidSignatureWhileIgnoring($ignoreQuery = [], $absolute = true) + */ public static function hasValidSignatureWhileIgnoring($ignoreQuery = [], $absolute = true) { return \Illuminate\Http\Request::hasValidSignatureWhileIgnoring($ignoreQuery, $absolute); } - + } } - -} -namespace { +namespace { class App extends \Illuminate\Support\Facades\App {} class Arr extends \Illuminate\Support\Arr {} class Artisan extends \Illuminate\Support\Facades\Artisan {} @@ -18774,258 +18538,221 @@ class Cookie extends \Illuminate\Support\Facades\Cookie {} class Crypt extends \Illuminate\Support\Facades\Crypt {} class Date extends \Illuminate\Support\Facades\Date {} class DB extends \Illuminate\Support\Facades\DB {} - class Eloquent extends \Illuminate\Database\Eloquent\Model { - /** + class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Create and return an un-saved model instance. * * @param array $attributes * @return \Illuminate\Database\Eloquent\Model|static * @static - */ - public static function make($attributes = []) + */ public static function make($attributes = []) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->make($attributes); } - - /** + /** * Register a new global scope. * * @param string $identifier * @param \Illuminate\Database\Eloquent\Scope|\Closure $scope * @return \Illuminate\Database\Eloquent\Builder|static * @static - */ - public static function withGlobalScope($identifier, $scope) + */ public static function withGlobalScope($identifier, $scope) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->withGlobalScope($identifier, $scope); } - - /** + /** * Remove a registered global scope. * * @param \Illuminate\Database\Eloquent\Scope|string $scope * @return \Illuminate\Database\Eloquent\Builder|static * @static - */ - public static function withoutGlobalScope($scope) + */ public static function withoutGlobalScope($scope) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->withoutGlobalScope($scope); } - - /** + /** * Remove all or passed registered global scopes. * * @param array|null $scopes * @return \Illuminate\Database\Eloquent\Builder|static * @static - */ - public static function withoutGlobalScopes($scopes = null) + */ public static function withoutGlobalScopes($scopes = null) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->withoutGlobalScopes($scopes); } - - /** + /** * Get an array of global scopes that were removed from the query. * * @return array * @static - */ - public static function removedScopes() + */ public static function removedScopes() { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->removedScopes(); } - - /** + /** * Add a where clause on the primary key to the query. * * @param mixed $id * @return \Illuminate\Database\Eloquent\Builder|static * @static - */ - public static function whereKey($id) + */ public static function whereKey($id) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->whereKey($id); } - - /** + /** * Add a where clause on the primary key to the query. * * @param mixed $id * @return \Illuminate\Database\Eloquent\Builder|static * @static - */ - public static function whereKeyNot($id) + */ public static function whereKeyNot($id) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->whereKeyNot($id); } - - /** + /** * Add a basic where clause to the query. * - * @param \Closure|string|array|\Illuminate\Database\Query\Expression $column + * @param \Closure|string|array|\Illuminate\Contracts\Database\Query\Expression $column * @param mixed $operator * @param mixed $value * @param string $boolean * @return \Illuminate\Database\Eloquent\Builder|static * @static - */ - public static function where($column, $operator = null, $value = null, $boolean = 'and') + */ public static function where($column, $operator = null, $value = null, $boolean = 'and') { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->where($column, $operator, $value, $boolean); } - - /** + /** * Add a basic where clause to the query, and return the first result. * - * @param \Closure|string|array|\Illuminate\Database\Query\Expression $column + * @param \Closure|string|array|\Illuminate\Contracts\Database\Query\Expression $column * @param mixed $operator * @param mixed $value * @param string $boolean * @return \Illuminate\Database\Eloquent\Model|static|null * @static - */ - public static function firstWhere($column, $operator = null, $value = null, $boolean = 'and') + */ public static function firstWhere($column, $operator = null, $value = null, $boolean = 'and') { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->firstWhere($column, $operator, $value, $boolean); } - - /** + /** * Add an "or where" clause to the query. * - * @param \Closure|array|string|\Illuminate\Database\Query\Expression $column + * @param \Closure|array|string|\Illuminate\Contracts\Database\Query\Expression $column * @param mixed $operator * @param mixed $value * @return \Illuminate\Database\Eloquent\Builder|static * @static - */ - public static function orWhere($column, $operator = null, $value = null) + */ public static function orWhere($column, $operator = null, $value = null) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->orWhere($column, $operator, $value); } - - /** + /** * Add a basic "where not" clause to the query. * - * @param \Closure|string|array|\Illuminate\Database\Query\Expression $column + * @param \Closure|string|array|\Illuminate\Contracts\Database\Query\Expression $column * @param mixed $operator * @param mixed $value * @param string $boolean * @return \Illuminate\Database\Eloquent\Builder|static * @static - */ - public static function whereNot($column, $operator = null, $value = null, $boolean = 'and') + */ public static function whereNot($column, $operator = null, $value = null, $boolean = 'and') { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->whereNot($column, $operator, $value, $boolean); } - - /** + /** * Add an "or where not" clause to the query. * - * @param \Closure|array|string|\Illuminate\Database\Query\Expression $column + * @param \Closure|array|string|\Illuminate\Contracts\Database\Query\Expression $column * @param mixed $operator * @param mixed $value * @return \Illuminate\Database\Eloquent\Builder|static * @static - */ - public static function orWhereNot($column, $operator = null, $value = null) + */ public static function orWhereNot($column, $operator = null, $value = null) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->orWhereNot($column, $operator, $value); } - - /** + /** * Add an "order by" clause for a timestamp to the query. * - * @param string|\Illuminate\Database\Query\Expression $column + * @param string|\Illuminate\Contracts\Database\Query\Expression $column * @return \Illuminate\Database\Eloquent\Builder|static * @static - */ - public static function latest($column = null) + */ public static function latest($column = null) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->latest($column); } - - /** + /** * Add an "order by" clause for a timestamp to the query. * - * @param string|\Illuminate\Database\Query\Expression $column + * @param string|\Illuminate\Contracts\Database\Query\Expression $column * @return \Illuminate\Database\Eloquent\Builder|static * @static - */ - public static function oldest($column = null) + */ public static function oldest($column = null) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->oldest($column); } - - /** + /** * Create a collection of models from plain arrays. * * @param array $items * @return \Illuminate\Database\Eloquent\Collection * @static - */ - public static function hydrate($items) + */ public static function hydrate($items) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->hydrate($items); } - - /** + /** * Create a collection of models from a raw query. * * @param string $query * @param array $bindings * @return \Illuminate\Database\Eloquent\Collection * @static - */ - public static function fromQuery($query, $bindings = []) + */ public static function fromQuery($query, $bindings = []) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->fromQuery($query, $bindings); } - - /** + /** * Find a model by its primary key. * * @param mixed $id * @param array|string $columns * @return \Illuminate\Database\Eloquent\Model|\Illuminate\Database\Eloquent\Collection|static[]|static|null * @static - */ - public static function find($id, $columns = []) + */ public static function find($id, $columns = []) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->find($id, $columns); } - - /** + /** * Find multiple models by their primary keys. * * @param \Illuminate\Contracts\Support\Arrayable|array $ids * @param array|string $columns * @return \Illuminate\Database\Eloquent\Collection * @static - */ - public static function findMany($ids, $columns = []) + */ public static function findMany($ids, $columns = []) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->findMany($ids, $columns); } - - /** + /** * Find a model by its primary key or throw an exception. * * @param mixed $id @@ -19033,28 +18760,24 @@ public static function findMany($ids, $columns = []) * @return \Illuminate\Database\Eloquent\Model|\Illuminate\Database\Eloquent\Collection|static|static[] * @throws \Illuminate\Database\Eloquent\ModelNotFoundException<\Illuminate\Database\Eloquent\Model> * @static - */ - public static function findOrFail($id, $columns = []) + */ public static function findOrFail($id, $columns = []) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->findOrFail($id, $columns); } - - /** + /** * Find a model by its primary key or return fresh model instance. * * @param mixed $id * @param array|string $columns * @return \Illuminate\Database\Eloquent\Model|static * @static - */ - public static function findOrNew($id, $columns = []) + */ public static function findOrNew($id, $columns = []) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->findOrNew($id, $columns); } - - /** + /** * Find a model by its primary key or call a callback. * * @param mixed $id @@ -19062,84 +18785,84 @@ public static function findOrNew($id, $columns = []) * @param \Closure|null $callback * @return \Illuminate\Database\Eloquent\Model|\Illuminate\Database\Eloquent\Collection|static[]|static|mixed * @static - */ - public static function findOr($id, $columns = [], $callback = null) + */ public static function findOr($id, $columns = [], $callback = null) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->findOr($id, $columns, $callback); } - - /** + /** * Get the first record matching the attributes or instantiate it. * * @param array $attributes * @param array $values * @return \Illuminate\Database\Eloquent\Model|static * @static - */ - public static function firstOrNew($attributes = [], $values = []) + */ public static function firstOrNew($attributes = [], $values = []) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->firstOrNew($attributes, $values); } - - /** - * Get the first record matching the attributes or create it. + /** + * Get the first record matching the attributes. If the record is not found, create it. * * @param array $attributes * @param array $values * @return \Illuminate\Database\Eloquent\Model|static * @static - */ - public static function firstOrCreate($attributes = [], $values = []) + */ public static function firstOrCreate($attributes = [], $values = []) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->firstOrCreate($attributes, $values); } - - /** + /** + * Attempt to create the record. If a unique constraint violation occurs, attempt to find the matching record. + * + * @param array $attributes + * @param array $values + * @return \Illuminate\Database\Eloquent\Model|static + * @static + */ public static function createOrFirst($attributes = [], $values = []) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->createOrFirst($attributes, $values); + } + /** * Create or update a record matching the attributes, and fill it with values. * * @param array $attributes * @param array $values * @return \Illuminate\Database\Eloquent\Model|static * @static - */ - public static function updateOrCreate($attributes, $values = []) + */ public static function updateOrCreate($attributes, $values = []) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->updateOrCreate($attributes, $values); } - - /** + /** * Execute the query and get the first result or throw an exception. * * @param array|string $columns * @return \Illuminate\Database\Eloquent\Model|static * @throws \Illuminate\Database\Eloquent\ModelNotFoundException<\Illuminate\Database\Eloquent\Model> * @static - */ - public static function firstOrFail($columns = []) + */ public static function firstOrFail($columns = []) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->firstOrFail($columns); } - - /** + /** * Execute the query and get the first result or call a callback. * * @param \Closure|array|string $columns * @param \Closure|null $callback * @return \Illuminate\Database\Eloquent\Model|static|mixed * @static - */ - public static function firstOr($columns = [], $callback = null) + */ public static function firstOr($columns = [], $callback = null) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->firstOr($columns, $callback); } - - /** + /** * Execute the query and get the first result if it's the sole matching record. * * @param array|string $columns @@ -19147,138 +18870,119 @@ public static function firstOr($columns = [], $callback = null) * @throws \Illuminate\Database\Eloquent\ModelNotFoundException<\Illuminate\Database\Eloquent\Model> * @throws \Illuminate\Database\MultipleRecordsFoundException * @static - */ - public static function sole($columns = []) + */ public static function sole($columns = []) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->sole($columns); } - - /** + /** * Get a single column's value from the first result of a query. * - * @param string|\Illuminate\Database\Query\Expression $column + * @param string|\Illuminate\Contracts\Database\Query\Expression $column * @return mixed * @static - */ - public static function value($column) + */ public static function value($column) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->value($column); } - - /** + /** * Get a single column's value from the first result of a query if it's the sole matching record. * - * @param string|\Illuminate\Database\Query\Expression $column + * @param string|\Illuminate\Contracts\Database\Query\Expression $column * @return mixed * @throws \Illuminate\Database\Eloquent\ModelNotFoundException<\Illuminate\Database\Eloquent\Model> * @throws \Illuminate\Database\MultipleRecordsFoundException * @static - */ - public static function soleValue($column) + */ public static function soleValue($column) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->soleValue($column); } - - /** + /** * Get a single column's value from the first result of the query or throw an exception. * - * @param string|\Illuminate\Database\Query\Expression $column + * @param string|\Illuminate\Contracts\Database\Query\Expression $column * @return mixed * @throws \Illuminate\Database\Eloquent\ModelNotFoundException<\Illuminate\Database\Eloquent\Model> * @static - */ - public static function valueOrFail($column) + */ public static function valueOrFail($column) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->valueOrFail($column); } - - /** + /** * Execute the query as a "select" statement. * * @param array|string $columns * @return \Illuminate\Database\Eloquent\Collection|static[] * @static - */ - public static function get($columns = []) + */ public static function get($columns = []) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->get($columns); } - - /** + /** * Get the hydrated models without eager loading. * * @param array|string $columns * @return \Illuminate\Database\Eloquent\Model[]|static[] * @static - */ - public static function getModels($columns = []) + */ public static function getModels($columns = []) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->getModels($columns); } - - /** + /** * Eager load the relationships for the models. * * @param array $models * @return array * @static - */ - public static function eagerLoadRelations($models) + */ public static function eagerLoadRelations($models) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->eagerLoadRelations($models); } - - /** + /** * Get a lazy collection for the given query. * * @return \Illuminate\Support\LazyCollection * @static - */ - public static function cursor() + */ public static function cursor() { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->cursor(); } - - /** + /** * Get a collection with the values of a given column. * - * @param string|\Illuminate\Database\Query\Expression $column + * @param string|\Illuminate\Contracts\Database\Query\Expression $column * @param string|null $key * @return \Illuminate\Support\Collection * @static - */ - public static function pluck($column, $key = null) + */ public static function pluck($column, $key = null) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->pluck($column, $key); } - - /** + /** * Paginate the given query. * * @param int|null|\Closure $perPage * @param array|string $columns * @param string $pageName * @param int|null $page + * @param \Closure|int|null $total * @return \Illuminate\Contracts\Pagination\LengthAwarePaginator * @throws \InvalidArgumentException * @static - */ - public static function paginate($perPage = null, $columns = [], $pageName = 'page', $page = null) + */ public static function paginate($perPage = null, $columns = [], $pageName = 'page', $page = null) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->paginate($perPage, $columns, $pageName, $page); } - - /** + /** * Paginate the given query into a simple paginator. * * @param int|null $perPage @@ -19287,14 +18991,12 @@ public static function paginate($perPage = null, $columns = [], $pageName = 'pag * @param int|null $page * @return \Illuminate\Contracts\Pagination\Paginator * @static - */ - public static function simplePaginate($perPage = null, $columns = [], $pageName = 'page', $page = null) + */ public static function simplePaginate($perPage = null, $columns = [], $pageName = 'page', $page = null) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->simplePaginate($perPage, $columns, $pageName, $page); } - - /** + /** * Paginate the given query into a cursor paginator. * * @param int|null $perPage @@ -19303,40 +19005,45 @@ public static function simplePaginate($perPage = null, $columns = [], $pageName * @param \Illuminate\Pagination\Cursor|string|null $cursor * @return \Illuminate\Contracts\Pagination\CursorPaginator * @static - */ - public static function cursorPaginate($perPage = null, $columns = [], $cursorName = 'cursor', $cursor = null) + */ public static function cursorPaginate($perPage = null, $columns = [], $cursorName = 'cursor', $cursor = null) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->cursorPaginate($perPage, $columns, $cursorName, $cursor); } - - /** + /** * Save a new model and return the instance. * * @param array $attributes * @return \Illuminate\Database\Eloquent\Model|$this * @static - */ - public static function create($attributes = []) + */ public static function create($attributes = []) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->create($attributes); } - - /** + /** * Save a new model and return the instance. Allow mass-assignment. * * @param array $attributes * @return \Illuminate\Database\Eloquent\Model|$this * @static - */ - public static function forceCreate($attributes) + */ public static function forceCreate($attributes) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->forceCreate($attributes); } - - /** + /** + * Save a new model instance with mass assignment without raising model events. + * + * @param array $attributes + * @return \Illuminate\Database\Eloquent\Model|$this + * @static + */ public static function forceCreateQuietly($attributes = []) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->forceCreateQuietly($attributes); + } + /** * Insert new records or update the existing ones. * * @param array $values @@ -19344,306 +19051,270 @@ public static function forceCreate($attributes) * @param array|null $update * @return int * @static - */ - public static function upsert($values, $uniqueBy, $update = null) + */ public static function upsert($values, $uniqueBy, $update = null) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->upsert($values, $uniqueBy, $update); } - - /** + /** * Register a replacement for the default delete function. * * @param \Closure $callback * @return void * @static - */ - public static function onDelete($callback) + */ public static function onDelete($callback) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ $instance->onDelete($callback); } - - /** + /** * Call the given local model scopes. * * @param array|string $scopes * @return static|mixed * @static - */ - public static function scopes($scopes) + */ public static function scopes($scopes) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->scopes($scopes); } - - /** + /** * Apply the scopes to the Eloquent builder instance and return it. * * @return static * @static - */ - public static function applyScopes() + */ public static function applyScopes() { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->applyScopes(); } - - /** + /** * Prevent the specified relations from being eager loaded. * * @param mixed $relations * @return \Illuminate\Database\Eloquent\Builder|static * @static - */ - public static function without($relations) + */ public static function without($relations) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->without($relations); } - - /** + /** * Set the relationships that should be eager loaded while removing any previously added eager loading specifications. * * @param mixed $relations * @return \Illuminate\Database\Eloquent\Builder|static * @static - */ - public static function withOnly($relations) + */ public static function withOnly($relations) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->withOnly($relations); } - - /** + /** * Create a new instance of the model being queried. * * @param array $attributes * @return \Illuminate\Database\Eloquent\Model|static * @static - */ - public static function newModelInstance($attributes = []) + */ public static function newModelInstance($attributes = []) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->newModelInstance($attributes); } - - /** + /** * Apply query-time casts to the model instance. * * @param array $casts * @return \Illuminate\Database\Eloquent\Builder|static * @static - */ - public static function withCasts($casts) + */ public static function withCasts($casts) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->withCasts($casts); } - - /** + /** + * Execute the given Closure within a transaction savepoint if needed. + * + * @template TModelValue + * @param \Closure(): TModelValue $scope + * @return \Illuminate\Database\Eloquent\TModelValue + * @static + */ public static function withSavepointIfNeeded($scope) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->withSavepointIfNeeded($scope); + } + /** * Get the underlying query builder instance. * * @return \Illuminate\Database\Query\Builder * @static - */ - public static function getQuery() + */ public static function getQuery() { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->getQuery(); } - - /** + /** * Set the underlying query builder instance. * * @param \Illuminate\Database\Query\Builder $query * @return \Illuminate\Database\Eloquent\Builder|static * @static - */ - public static function setQuery($query) + */ public static function setQuery($query) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->setQuery($query); } - - /** + /** * Get a base query builder instance. * * @return \Illuminate\Database\Query\Builder * @static - */ - public static function toBase() + */ public static function toBase() { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->toBase(); } - - /** + /** * Get the relationships being eagerly loaded. * * @return array * @static - */ - public static function getEagerLoads() + */ public static function getEagerLoads() { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->getEagerLoads(); } - - /** + /** * Set the relationships being eagerly loaded. * * @param array $eagerLoad * @return \Illuminate\Database\Eloquent\Builder|static * @static - */ - public static function setEagerLoads($eagerLoad) + */ public static function setEagerLoads($eagerLoad) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->setEagerLoads($eagerLoad); } - - /** + /** * Indicate that the given relationships should not be eagerly loaded. * * @param array $relations * @return \Illuminate\Database\Eloquent\Builder|static * @static - */ - public static function withoutEagerLoad($relations) + */ public static function withoutEagerLoad($relations) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->withoutEagerLoad($relations); } - - /** + /** * Flush the relationships being eagerly loaded. * * @return \Illuminate\Database\Eloquent\Builder|static * @static - */ - public static function withoutEagerLoads() + */ public static function withoutEagerLoads() { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->withoutEagerLoads(); } - - /** + /** * Get the model instance being queried. * * @return \Illuminate\Database\Eloquent\Model|static * @static - */ - public static function getModel() + */ public static function getModel() { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->getModel(); } - - /** + /** * Set a model instance for the model being queried. * * @param \Illuminate\Database\Eloquent\Model $model * @return \Illuminate\Database\Eloquent\Builder|static * @static - */ - public static function setModel($model) + */ public static function setModel($model) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->setModel($model); } - - /** + /** * Get the given macro by name. * * @param string $name * @return \Closure * @static - */ - public static function getMacro($name) + */ public static function getMacro($name) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->getMacro($name); } - - /** + /** * Checks if a macro is registered. * * @param string $name * @return bool * @static - */ - public static function hasMacro($name) + */ public static function hasMacro($name) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->hasMacro($name); } - - /** + /** * Get the given global macro by name. * * @param string $name * @return \Closure * @static - */ - public static function getGlobalMacro($name) + */ public static function getGlobalMacro($name) { return \Illuminate\Database\Eloquent\Builder::getGlobalMacro($name); } - - /** + /** * Checks if a global macro is registered. * * @param string $name * @return bool * @static - */ - public static function hasGlobalMacro($name) + */ public static function hasGlobalMacro($name) { return \Illuminate\Database\Eloquent\Builder::hasGlobalMacro($name); } - - /** + /** * Clone the Eloquent query builder. * * @return static * @static - */ - public static function clone() + */ public static function clone() { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->clone(); } - - /** + /** * Chunk the results of the query. * * @param int $count * @param callable $callback * @return bool * @static - */ - public static function chunk($count, $callback) + */ public static function chunk($count, $callback) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->chunk($count, $callback); } - - /** + /** * Run a map over each item while chunking. * * @param callable $callback * @param int $count * @return \Illuminate\Support\Collection * @static - */ - public static function chunkMap($callback, $count = 1000) + */ public static function chunkMap($callback, $count = 1000) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->chunkMap($callback, $count); } - - /** + /** * Execute a callback over each item while chunking. * * @param callable $callback @@ -19651,14 +19322,12 @@ public static function chunkMap($callback, $count = 1000) * @return bool * @throws \RuntimeException * @static - */ - public static function each($callback, $count = 1000) + */ public static function each($callback, $count = 1000) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->each($callback, $count); } - - /** + /** * Chunk the results of a query by comparing IDs. * * @param int $count @@ -19667,14 +19336,41 @@ public static function each($callback, $count = 1000) * @param string|null $alias * @return bool * @static - */ - public static function chunkById($count, $callback, $column = null, $alias = null) + */ public static function chunkById($count, $callback, $column = null, $alias = null) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->chunkById($count, $callback, $column, $alias); } - - /** + /** + * Chunk the results of a query by comparing IDs in descending order. + * + * @param int $count + * @param callable $callback + * @param string|null $column + * @param string|null $alias + * @return bool + * @static + */ public static function chunkByIdDesc($count, $callback, $column = null, $alias = null) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->chunkByIdDesc($count, $callback, $column, $alias); + } + /** + * Chunk the results of a query by comparing IDs in a given order. + * + * @param int $count + * @param callable $callback + * @param string|null $column + * @param string|null $alias + * @param bool $descending + * @return bool + * @static + */ public static function orderedChunkById($count, $callback, $column = null, $alias = null, $descending = false) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->orderedChunkById($count, $callback, $column, $alias, $descending); + } + /** * Execute a callback over each item while chunking by ID. * * @param callable $callback @@ -19683,28 +19379,24 @@ public static function chunkById($count, $callback, $column = null, $alias = nul * @param string|null $alias * @return bool * @static - */ - public static function eachById($callback, $count = 1000, $column = null, $alias = null) + */ public static function eachById($callback, $count = 1000, $column = null, $alias = null) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->eachById($callback, $count, $column, $alias); } - - /** + /** * Query lazily, by chunks of the given size. * * @param int $chunkSize * @return \Illuminate\Support\LazyCollection * @throws \InvalidArgumentException * @static - */ - public static function lazy($chunkSize = 1000) + */ public static function lazy($chunkSize = 1000) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->lazy($chunkSize); } - - /** + /** * Query lazily, by chunking the results of a query by comparing IDs. * * @param int $chunkSize @@ -19713,14 +19405,12 @@ public static function lazy($chunkSize = 1000) * @return \Illuminate\Support\LazyCollection * @throws \InvalidArgumentException * @static - */ - public static function lazyById($chunkSize = 1000, $column = null, $alias = null) + */ public static function lazyById($chunkSize = 1000, $column = null, $alias = null) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->lazyById($chunkSize, $column, $alias); } - - /** + /** * Query lazily, by chunking the results of a query by comparing IDs in descending order. * * @param int $chunkSize @@ -19729,27 +19419,23 @@ public static function lazyById($chunkSize = 1000, $column = null, $alias = null * @return \Illuminate\Support\LazyCollection * @throws \InvalidArgumentException * @static - */ - public static function lazyByIdDesc($chunkSize = 1000, $column = null, $alias = null) + */ public static function lazyByIdDesc($chunkSize = 1000, $column = null, $alias = null) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->lazyByIdDesc($chunkSize, $column, $alias); } - - /** + /** * Execute the query and get the first result. * * @param array|string $columns * @return \Illuminate\Database\Eloquent\Model|object|static|null * @static - */ - public static function first($columns = []) + */ public static function first($columns = []) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->first($columns); } - - /** + /** * Execute the query and get the first result if it's the sole matching record. * * @param array|string $columns @@ -19757,27 +19443,23 @@ public static function first($columns = []) * @throws \Illuminate\Database\RecordsNotFoundException * @throws \Illuminate\Database\MultipleRecordsFoundException * @static - */ - public static function baseSole($columns = []) + */ public static function baseSole($columns = []) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->baseSole($columns); } - - /** + /** * Pass the query to a given callback. * * @param callable $callback * @return \Illuminate\Database\Eloquent\Builder|static * @static - */ - public static function tap($callback) + */ public static function tap($callback) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->tap($callback); } - - /** + /** * Apply the callback if the given "value" is (or resolves to) truthy. * * @template TWhenParameter @@ -19787,14 +19469,12 @@ public static function tap($callback) * @param \Illuminate\Database\Eloquent\(callable($this, TWhenParameter): TWhenReturnType)|null $default * @return $this|\Illuminate\Database\Eloquent\TWhenReturnType * @static - */ - public static function when($value = null, $callback = null, $default = null) + */ public static function when($value = null, $callback = null, $default = null) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->when($value, $callback, $default); } - - /** + /** * Apply the callback if the given "value" is (or resolves to) falsy. * * @template TUnlessParameter @@ -19804,14 +19484,12 @@ public static function when($value = null, $callback = null, $default = null) * @param \Illuminate\Database\Eloquent\(callable($this, TUnlessParameter): TUnlessReturnType)|null $default * @return $this|\Illuminate\Database\Eloquent\TUnlessReturnType * @static - */ - public static function unless($value = null, $callback = null, $default = null) + */ public static function unless($value = null, $callback = null, $default = null) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->unless($value, $callback, $default); } - - /** + /** * Add a relationship count / exists condition to the query. * * @param \Illuminate\Database\Eloquent\Relations\Relation|string $relation @@ -19822,14 +19500,12 @@ public static function unless($value = null, $callback = null, $default = null) * @return \Illuminate\Database\Eloquent\Builder|static * @throws \RuntimeException * @static - */ - public static function has($relation, $operator = '>=', $count = 1, $boolean = 'and', $callback = null) + */ public static function has($relation, $operator = '>=', $count = 1, $boolean = 'and', $callback = null) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->has($relation, $operator, $count, $boolean, $callback); } - - /** + /** * Add a relationship count / exists condition to the query with an "or". * * @param string $relation @@ -19837,14 +19513,12 @@ public static function has($relation, $operator = '>=', $count = 1, $boolean = ' * @param int $count * @return \Illuminate\Database\Eloquent\Builder|static * @static - */ - public static function orHas($relation, $operator = '>=', $count = 1) + */ public static function orHas($relation, $operator = '>=', $count = 1) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->orHas($relation, $operator, $count); } - - /** + /** * Add a relationship count / exists condition to the query. * * @param string $relation @@ -19852,27 +19526,23 @@ public static function orHas($relation, $operator = '>=', $count = 1) * @param \Closure|null $callback * @return \Illuminate\Database\Eloquent\Builder|static * @static - */ - public static function doesntHave($relation, $boolean = 'and', $callback = null) + */ public static function doesntHave($relation, $boolean = 'and', $callback = null) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->doesntHave($relation, $boolean, $callback); } - - /** + /** * Add a relationship count / exists condition to the query with an "or". * * @param string $relation * @return \Illuminate\Database\Eloquent\Builder|static * @static - */ - public static function orDoesntHave($relation) + */ public static function orDoesntHave($relation) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->orDoesntHave($relation); } - - /** + /** * Add a relationship count / exists condition to the query with where clauses. * * @param string $relation @@ -19881,14 +19551,12 @@ public static function orDoesntHave($relation) * @param int $count * @return \Illuminate\Database\Eloquent\Builder|static * @static - */ - public static function whereHas($relation, $callback = null, $operator = '>=', $count = 1) + */ public static function whereHas($relation, $callback = null, $operator = '>=', $count = 1) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->whereHas($relation, $callback, $operator, $count); } - - /** + /** * Add a relationship count / exists condition to the query with where clauses. * * Also load the relationship with same condition. @@ -19899,14 +19567,12 @@ public static function whereHas($relation, $callback = null, $operator = '>=', $ * @param int $count * @return \Illuminate\Database\Eloquent\Builder|static * @static - */ - public static function withWhereHas($relation, $callback = null, $operator = '>=', $count = 1) + */ public static function withWhereHas($relation, $callback = null, $operator = '>=', $count = 1) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->withWhereHas($relation, $callback, $operator, $count); } - - /** + /** * Add a relationship count / exists condition to the query with where clauses and an "or". * * @param string $relation @@ -19915,42 +19581,36 @@ public static function withWhereHas($relation, $callback = null, $operator = '>= * @param int $count * @return \Illuminate\Database\Eloquent\Builder|static * @static - */ - public static function orWhereHas($relation, $callback = null, $operator = '>=', $count = 1) + */ public static function orWhereHas($relation, $callback = null, $operator = '>=', $count = 1) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->orWhereHas($relation, $callback, $operator, $count); } - - /** + /** * Add a relationship count / exists condition to the query with where clauses. * * @param string $relation * @param \Closure|null $callback * @return \Illuminate\Database\Eloquent\Builder|static * @static - */ - public static function whereDoesntHave($relation, $callback = null) + */ public static function whereDoesntHave($relation, $callback = null) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->whereDoesntHave($relation, $callback); } - - /** + /** * Add a relationship count / exists condition to the query with where clauses and an "or". * * @param string $relation * @param \Closure|null $callback * @return \Illuminate\Database\Eloquent\Builder|static * @static - */ - public static function orWhereDoesntHave($relation, $callback = null) + */ public static function orWhereDoesntHave($relation, $callback = null) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->orWhereDoesntHave($relation, $callback); } - - /** + /** * Add a polymorphic relationship count / exists condition to the query. * * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation @@ -19961,14 +19621,12 @@ public static function orWhereDoesntHave($relation, $callback = null) * @param \Closure|null $callback * @return \Illuminate\Database\Eloquent\Builder|static * @static - */ - public static function hasMorph($relation, $types, $operator = '>=', $count = 1, $boolean = 'and', $callback = null) + */ public static function hasMorph($relation, $types, $operator = '>=', $count = 1, $boolean = 'and', $callback = null) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->hasMorph($relation, $types, $operator, $count, $boolean, $callback); } - - /** + /** * Add a polymorphic relationship count / exists condition to the query with an "or". * * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation @@ -19977,14 +19635,12 @@ public static function hasMorph($relation, $types, $operator = '>=', $count = 1, * @param int $count * @return \Illuminate\Database\Eloquent\Builder|static * @static - */ - public static function orHasMorph($relation, $types, $operator = '>=', $count = 1) + */ public static function orHasMorph($relation, $types, $operator = '>=', $count = 1) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->orHasMorph($relation, $types, $operator, $count); } - - /** + /** * Add a polymorphic relationship count / exists condition to the query. * * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation @@ -19993,28 +19649,24 @@ public static function orHasMorph($relation, $types, $operator = '>=', $count = * @param \Closure|null $callback * @return \Illuminate\Database\Eloquent\Builder|static * @static - */ - public static function doesntHaveMorph($relation, $types, $boolean = 'and', $callback = null) + */ public static function doesntHaveMorph($relation, $types, $boolean = 'and', $callback = null) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->doesntHaveMorph($relation, $types, $boolean, $callback); } - - /** + /** * Add a polymorphic relationship count / exists condition to the query with an "or". * * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation * @param string|array $types * @return \Illuminate\Database\Eloquent\Builder|static * @static - */ - public static function orDoesntHaveMorph($relation, $types) + */ public static function orDoesntHaveMorph($relation, $types) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->orDoesntHaveMorph($relation, $types); } - - /** + /** * Add a polymorphic relationship count / exists condition to the query with where clauses. * * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation @@ -20024,14 +19676,12 @@ public static function orDoesntHaveMorph($relation, $types) * @param int $count * @return \Illuminate\Database\Eloquent\Builder|static * @static - */ - public static function whereHasMorph($relation, $types, $callback = null, $operator = '>=', $count = 1) + */ public static function whereHasMorph($relation, $types, $callback = null, $operator = '>=', $count = 1) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->whereHasMorph($relation, $types, $callback, $operator, $count); } - - /** + /** * Add a polymorphic relationship count / exists condition to the query with where clauses and an "or". * * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation @@ -20041,14 +19691,12 @@ public static function whereHasMorph($relation, $types, $callback = null, $opera * @param int $count * @return \Illuminate\Database\Eloquent\Builder|static * @static - */ - public static function orWhereHasMorph($relation, $types, $callback = null, $operator = '>=', $count = 1) + */ public static function orWhereHasMorph($relation, $types, $callback = null, $operator = '>=', $count = 1) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->orWhereHasMorph($relation, $types, $callback, $operator, $count); } - - /** + /** * Add a polymorphic relationship count / exists condition to the query with where clauses. * * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation @@ -20056,14 +19704,12 @@ public static function orWhereHasMorph($relation, $types, $callback = null, $ope * @param \Closure|null $callback * @return \Illuminate\Database\Eloquent\Builder|static * @static - */ - public static function whereDoesntHaveMorph($relation, $types, $callback = null) + */ public static function whereDoesntHaveMorph($relation, $types, $callback = null) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->whereDoesntHaveMorph($relation, $types, $callback); } - - /** + /** * Add a polymorphic relationship count / exists condition to the query with where clauses and an "or". * * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation @@ -20071,136 +19717,118 @@ public static function whereDoesntHaveMorph($relation, $types, $callback = null) * @param \Closure|null $callback * @return \Illuminate\Database\Eloquent\Builder|static * @static - */ - public static function orWhereDoesntHaveMorph($relation, $types, $callback = null) + */ public static function orWhereDoesntHaveMorph($relation, $types, $callback = null) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->orWhereDoesntHaveMorph($relation, $types, $callback); } - - /** + /** * Add a basic where clause to a relationship query. * * @param string $relation - * @param \Closure|string|array|\Illuminate\Database\Query\Expression $column + * @param \Closure|string|array|\Illuminate\Contracts\Database\Query\Expression $column * @param mixed $operator * @param mixed $value * @return \Illuminate\Database\Eloquent\Builder|static * @static - */ - public static function whereRelation($relation, $column, $operator = null, $value = null) + */ public static function whereRelation($relation, $column, $operator = null, $value = null) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->whereRelation($relation, $column, $operator, $value); } - - /** + /** * Add an "or where" clause to a relationship query. * * @param string $relation - * @param \Closure|string|array|\Illuminate\Database\Query\Expression $column + * @param \Closure|string|array|\Illuminate\Contracts\Database\Query\Expression $column * @param mixed $operator * @param mixed $value * @return \Illuminate\Database\Eloquent\Builder|static * @static - */ - public static function orWhereRelation($relation, $column, $operator = null, $value = null) + */ public static function orWhereRelation($relation, $column, $operator = null, $value = null) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->orWhereRelation($relation, $column, $operator, $value); } - - /** + /** * Add a polymorphic relationship condition to the query with a where clause. * * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation * @param string|array $types - * @param \Closure|string|array|\Illuminate\Database\Query\Expression $column + * @param \Closure|string|array|\Illuminate\Contracts\Database\Query\Expression $column * @param mixed $operator * @param mixed $value * @return \Illuminate\Database\Eloquent\Builder|static * @static - */ - public static function whereMorphRelation($relation, $types, $column, $operator = null, $value = null) + */ public static function whereMorphRelation($relation, $types, $column, $operator = null, $value = null) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->whereMorphRelation($relation, $types, $column, $operator, $value); } - - /** + /** * Add a polymorphic relationship condition to the query with an "or where" clause. * * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation * @param string|array $types - * @param \Closure|string|array|\Illuminate\Database\Query\Expression $column + * @param \Closure|string|array|\Illuminate\Contracts\Database\Query\Expression $column * @param mixed $operator * @param mixed $value * @return \Illuminate\Database\Eloquent\Builder|static * @static - */ - public static function orWhereMorphRelation($relation, $types, $column, $operator = null, $value = null) + */ public static function orWhereMorphRelation($relation, $types, $column, $operator = null, $value = null) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->orWhereMorphRelation($relation, $types, $column, $operator, $value); } - - /** + /** * Add a morph-to relationship condition to the query. * * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation - * @param \Illuminate\Database\Eloquent\Model|string $model + * @param \Illuminate\Database\Eloquent\Model|string|null $model * @return \Illuminate\Database\Eloquent\Builder|static * @static - */ - public static function whereMorphedTo($relation, $model, $boolean = 'and') + */ public static function whereMorphedTo($relation, $model, $boolean = 'and') { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->whereMorphedTo($relation, $model, $boolean); } - - /** + /** * Add a not morph-to relationship condition to the query. * * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation * @param \Illuminate\Database\Eloquent\Model|string $model * @return \Illuminate\Database\Eloquent\Builder|static * @static - */ - public static function whereNotMorphedTo($relation, $model, $boolean = 'and') + */ public static function whereNotMorphedTo($relation, $model, $boolean = 'and') { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->whereNotMorphedTo($relation, $model, $boolean); } - - /** + /** * Add a morph-to relationship condition to the query with an "or where" clause. * * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation - * @param \Illuminate\Database\Eloquent\Model|string $model + * @param \Illuminate\Database\Eloquent\Model|string|null $model * @return \Illuminate\Database\Eloquent\Builder|static * @static - */ - public static function orWhereMorphedTo($relation, $model) + */ public static function orWhereMorphedTo($relation, $model) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->orWhereMorphedTo($relation, $model); } - - /** + /** * Add a not morph-to relationship condition to the query with an "or where" clause. * * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation * @param \Illuminate\Database\Eloquent\Model|string $model * @return \Illuminate\Database\Eloquent\Builder|static * @static - */ - public static function orWhereNotMorphedTo($relation, $model) + */ public static function orWhereNotMorphedTo($relation, $model) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->orWhereNotMorphedTo($relation, $model); } - - /** + /** * Add a "belongs to" relationship where clause to the query. * * @param \Illuminate\Database\Eloquent\Model|\Illuminate\Database\Eloquent\Collection<\Illuminate\Database\Eloquent\Model> $related @@ -20209,14 +19837,12 @@ public static function orWhereNotMorphedTo($relation, $model) * @return \Illuminate\Database\Eloquent\Builder|static * @throws \Illuminate\Database\Eloquent\RelationNotFoundException * @static - */ - public static function whereBelongsTo($related, $relationshipName = null, $boolean = 'and') + */ public static function whereBelongsTo($related, $relationshipName = null, $boolean = 'and') { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->whereBelongsTo($related, $relationshipName, $boolean); } - - /** + /** * Add an "BelongsTo" relationship with an "or where" clause to the query. * * @param \Illuminate\Database\Eloquent\Model $related @@ -20224,137 +19850,117 @@ public static function whereBelongsTo($related, $relationshipName = null, $boole * @return \Illuminate\Database\Eloquent\Builder|static * @throws \RuntimeException * @static - */ - public static function orWhereBelongsTo($related, $relationshipName = null) + */ public static function orWhereBelongsTo($related, $relationshipName = null) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->orWhereBelongsTo($related, $relationshipName); } - - /** + /** * Add subselect queries to include an aggregate value for a relationship. * * @param mixed $relations - * @param string $column + * @param \Illuminate\Contracts\Database\Query\Expression|string $column * @param string $function * @return \Illuminate\Database\Eloquent\Builder|static * @static - */ - public static function withAggregate($relations, $column, $function = null) + */ public static function withAggregate($relations, $column, $function = null) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->withAggregate($relations, $column, $function); } - - /** + /** * Add subselect queries to count the relations. * * @param mixed $relations * @return \Illuminate\Database\Eloquent\Builder|static * @static - */ - public static function withCount($relations) + */ public static function withCount($relations) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->withCount($relations); } - - /** + /** * Add subselect queries to include the max of the relation's column. * * @param string|array $relation - * @param string $column + * @param \Illuminate\Contracts\Database\Query\Expression|string $column * @return \Illuminate\Database\Eloquent\Builder|static * @static - */ - public static function withMax($relation, $column) + */ public static function withMax($relation, $column) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->withMax($relation, $column); } - - /** + /** * Add subselect queries to include the min of the relation's column. * * @param string|array $relation - * @param string $column + * @param \Illuminate\Contracts\Database\Query\Expression|string $column * @return \Illuminate\Database\Eloquent\Builder|static * @static - */ - public static function withMin($relation, $column) + */ public static function withMin($relation, $column) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->withMin($relation, $column); } - - /** + /** * Add subselect queries to include the sum of the relation's column. * * @param string|array $relation - * @param string $column + * @param \Illuminate\Contracts\Database\Query\Expression|string $column * @return \Illuminate\Database\Eloquent\Builder|static * @static - */ - public static function withSum($relation, $column) + */ public static function withSum($relation, $column) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->withSum($relation, $column); } - - /** + /** * Add subselect queries to include the average of the relation's column. * * @param string|array $relation - * @param string $column + * @param \Illuminate\Contracts\Database\Query\Expression|string $column * @return \Illuminate\Database\Eloquent\Builder|static * @static - */ - public static function withAvg($relation, $column) + */ public static function withAvg($relation, $column) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->withAvg($relation, $column); } - - /** + /** * Add subselect queries to include the existence of related models. * * @param string|array $relation * @return \Illuminate\Database\Eloquent\Builder|static * @static - */ - public static function withExists($relation) + */ public static function withExists($relation) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->withExists($relation); } - - /** + /** * Merge the where constraints from another query to the current query. * * @param \Illuminate\Database\Eloquent\Builder $from * @return \Illuminate\Database\Eloquent\Builder|static * @static - */ - public static function mergeConstraintsFrom($from) + */ public static function mergeConstraintsFrom($from) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->mergeConstraintsFrom($from); } - - /** + /** * Set the columns to be selected. * * @param array|mixed $columns * @return \Illuminate\Database\Query\Builder * @static - */ - public static function select($columns = []) + */ public static function select($columns = []) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->select($columns); } - - /** + /** * Add a subselect expression to the query. * * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|string $query @@ -20362,28 +19968,24 @@ public static function select($columns = []) * @return \Illuminate\Database\Query\Builder * @throws \InvalidArgumentException * @static - */ - public static function selectSub($query, $as) + */ public static function selectSub($query, $as) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->selectSub($query, $as); } - - /** + /** * Add a new "raw" select expression to the query. * * @param string $expression * @param array $bindings * @return \Illuminate\Database\Query\Builder * @static - */ - public static function selectRaw($expression, $bindings = []) + */ public static function selectRaw($expression, $bindings = []) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->selectRaw($expression, $bindings); } - - /** + /** * Makes "from" fetch from a subquery. * * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|string $query @@ -20391,303 +19993,288 @@ public static function selectRaw($expression, $bindings = []) * @return \Illuminate\Database\Query\Builder * @throws \InvalidArgumentException * @static - */ - public static function fromSub($query, $as) + */ public static function fromSub($query, $as) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->fromSub($query, $as); } - - /** + /** * Add a raw from clause to the query. * * @param string $expression * @param mixed $bindings * @return \Illuminate\Database\Query\Builder * @static - */ - public static function fromRaw($expression, $bindings = []) + */ public static function fromRaw($expression, $bindings = []) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->fromRaw($expression, $bindings); } - - /** + /** * Add a new select column to the query. * * @param array|mixed $column * @return \Illuminate\Database\Query\Builder * @static - */ - public static function addSelect($column) + */ public static function addSelect($column) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->addSelect($column); } - - /** + /** * Force the query to only return distinct results. * * @return \Illuminate\Database\Query\Builder * @static - */ - public static function distinct() + */ public static function distinct() { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->distinct(); } - - /** + /** * Set the table which the query is targeting. * * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|string $table * @param string|null $as * @return \Illuminate\Database\Query\Builder * @static - */ - public static function from($table, $as = null) + */ public static function from($table, $as = null) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->from($table, $as); } - - /** + /** * Add an index hint to suggest a query index. * * @param string $index * @return \Illuminate\Database\Query\Builder * @static - */ - public static function useIndex($index) + */ public static function useIndex($index) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->useIndex($index); } - - /** + /** * Add an index hint to force a query index. * * @param string $index * @return \Illuminate\Database\Query\Builder * @static - */ - public static function forceIndex($index) + */ public static function forceIndex($index) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->forceIndex($index); } - - /** + /** * Add an index hint to ignore a query index. * * @param string $index * @return \Illuminate\Database\Query\Builder * @static - */ - public static function ignoreIndex($index) + */ public static function ignoreIndex($index) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->ignoreIndex($index); } - - /** + /** * Add a join clause to the query. * - * @param string $table - * @param \Closure|string $first + * @param \Illuminate\Contracts\Database\Query\Expression|string $table + * @param \Closure|\Illuminate\Contracts\Database\Query\Expression|string $first * @param string|null $operator - * @param string|null $second + * @param \Illuminate\Contracts\Database\Query\Expression|string|null $second * @param string $type * @param bool $where * @return \Illuminate\Database\Query\Builder * @static - */ - public static function join($table, $first, $operator = null, $second = null, $type = 'inner', $where = false) + */ public static function join($table, $first, $operator = null, $second = null, $type = 'inner', $where = false) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->join($table, $first, $operator, $second, $type, $where); } - - /** + /** * Add a "join where" clause to the query. * - * @param string $table - * @param \Closure|string $first + * @param \Illuminate\Contracts\Database\Query\Expression|string $table + * @param \Closure|\Illuminate\Contracts\Database\Query\Expression|string $first * @param string $operator - * @param string $second + * @param \Illuminate\Contracts\Database\Query\Expression|string $second * @param string $type * @return \Illuminate\Database\Query\Builder * @static - */ - public static function joinWhere($table, $first, $operator, $second, $type = 'inner') + */ public static function joinWhere($table, $first, $operator, $second, $type = 'inner') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->joinWhere($table, $first, $operator, $second, $type); } - - /** + /** * Add a subquery join clause to the query. * * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|string $query * @param string $as - * @param \Closure|string $first + * @param \Closure|\Illuminate\Contracts\Database\Query\Expression|string $first * @param string|null $operator - * @param string|null $second + * @param \Illuminate\Contracts\Database\Query\Expression|string|null $second * @param string $type * @param bool $where * @return \Illuminate\Database\Query\Builder * @throws \InvalidArgumentException * @static - */ - public static function joinSub($query, $as, $first, $operator = null, $second = null, $type = 'inner', $where = false) + */ public static function joinSub($query, $as, $first, $operator = null, $second = null, $type = 'inner', $where = false) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->joinSub($query, $as, $first, $operator, $second, $type, $where); } - - /** + /** + * Add a lateral join clause to the query. + * + * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|string $query + * @param string $as + * @param string $type + * @return \Illuminate\Database\Query\Builder + * @static + */ public static function joinLateral($query, $as, $type = 'inner') + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->joinLateral($query, $as, $type); + } + /** + * Add a lateral left join to the query. + * + * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|string $query + * @param string $as + * @return \Illuminate\Database\Query\Builder + * @static + */ public static function leftJoinLateral($query, $as) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->leftJoinLateral($query, $as); + } + /** * Add a left join to the query. * - * @param string $table - * @param \Closure|string $first + * @param \Illuminate\Contracts\Database\Query\Expression|string $table + * @param \Closure|\Illuminate\Contracts\Database\Query\Expression|string $first * @param string|null $operator - * @param string|null $second + * @param \Illuminate\Contracts\Database\Query\Expression|string|null $second * @return \Illuminate\Database\Query\Builder * @static - */ - public static function leftJoin($table, $first, $operator = null, $second = null) + */ public static function leftJoin($table, $first, $operator = null, $second = null) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->leftJoin($table, $first, $operator, $second); } - - /** + /** * Add a "join where" clause to the query. * - * @param string $table - * @param \Closure|string $first + * @param \Illuminate\Contracts\Database\Query\Expression|string $table + * @param \Closure|\Illuminate\Contracts\Database\Query\Expression|string $first * @param string $operator - * @param string $second + * @param \Illuminate\Contracts\Database\Query\Expression|string|null $second * @return \Illuminate\Database\Query\Builder * @static - */ - public static function leftJoinWhere($table, $first, $operator, $second) + */ public static function leftJoinWhere($table, $first, $operator, $second) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->leftJoinWhere($table, $first, $operator, $second); } - - /** + /** * Add a subquery left join to the query. * * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|string $query * @param string $as - * @param \Closure|string $first + * @param \Closure|\Illuminate\Contracts\Database\Query\Expression|string $first * @param string|null $operator - * @param string|null $second + * @param \Illuminate\Contracts\Database\Query\Expression|string|null $second * @return \Illuminate\Database\Query\Builder * @static - */ - public static function leftJoinSub($query, $as, $first, $operator = null, $second = null) + */ public static function leftJoinSub($query, $as, $first, $operator = null, $second = null) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->leftJoinSub($query, $as, $first, $operator, $second); } - - /** + /** * Add a right join to the query. * - * @param string $table + * @param \Illuminate\Contracts\Database\Query\Expression|string $table * @param \Closure|string $first * @param string|null $operator - * @param string|null $second + * @param \Illuminate\Contracts\Database\Query\Expression|string|null $second * @return \Illuminate\Database\Query\Builder * @static - */ - public static function rightJoin($table, $first, $operator = null, $second = null) + */ public static function rightJoin($table, $first, $operator = null, $second = null) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->rightJoin($table, $first, $operator, $second); } - - /** + /** * Add a "right join where" clause to the query. * - * @param string $table - * @param \Closure|string $first + * @param \Illuminate\Contracts\Database\Query\Expression|string $table + * @param \Closure|\Illuminate\Contracts\Database\Query\Expression|string $first * @param string $operator - * @param string $second + * @param \Illuminate\Contracts\Database\Query\Expression|string $second * @return \Illuminate\Database\Query\Builder * @static - */ - public static function rightJoinWhere($table, $first, $operator, $second) + */ public static function rightJoinWhere($table, $first, $operator, $second) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->rightJoinWhere($table, $first, $operator, $second); } - - /** + /** * Add a subquery right join to the query. * * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|string $query * @param string $as - * @param \Closure|string $first + * @param \Closure|\Illuminate\Contracts\Database\Query\Expression|string $first * @param string|null $operator - * @param string|null $second + * @param \Illuminate\Contracts\Database\Query\Expression|string|null $second * @return \Illuminate\Database\Query\Builder * @static - */ - public static function rightJoinSub($query, $as, $first, $operator = null, $second = null) + */ public static function rightJoinSub($query, $as, $first, $operator = null, $second = null) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->rightJoinSub($query, $as, $first, $operator, $second); } - - /** + /** * Add a "cross join" clause to the query. * - * @param string $table - * @param \Closure|string|null $first + * @param \Illuminate\Contracts\Database\Query\Expression|string $table + * @param \Closure|\Illuminate\Contracts\Database\Query\Expression|string|null $first * @param string|null $operator - * @param string|null $second + * @param \Illuminate\Contracts\Database\Query\Expression|string|null $second * @return \Illuminate\Database\Query\Builder * @static - */ - public static function crossJoin($table, $first = null, $operator = null, $second = null) + */ public static function crossJoin($table, $first = null, $operator = null, $second = null) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->crossJoin($table, $first, $operator, $second); } - - /** + /** * Add a subquery cross join to the query. * * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|string $query * @param string $as * @return \Illuminate\Database\Query\Builder * @static - */ - public static function crossJoinSub($query, $as) + */ public static function crossJoinSub($query, $as) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->crossJoinSub($query, $as); } - - /** + /** * Merge an array of where clauses and bindings. * * @param array $wheres * @param array $bindings * @return \Illuminate\Database\Query\Builder * @static - */ - public static function mergeWheres($wheres, $bindings) + */ public static function mergeWheres($wheres, $bindings) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->mergeWheres($wheres, $bindings); } - - /** + /** * Prepare the value and operator for a where clause. * * @param string $value @@ -20696,45 +20283,39 @@ public static function mergeWheres($wheres, $bindings) * @return array * @throws \InvalidArgumentException * @static - */ - public static function prepareValueAndOperator($value, $operator, $useDefault = false) + */ public static function prepareValueAndOperator($value, $operator, $useDefault = false) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->prepareValueAndOperator($value, $operator, $useDefault); } - - /** + /** * Add a "where" clause comparing two columns to the query. * - * @param string|array $first + * @param \Illuminate\Contracts\Database\Query\Expression|string|array $first * @param string|null $operator * @param string|null $second * @param string|null $boolean * @return \Illuminate\Database\Query\Builder * @static - */ - public static function whereColumn($first, $operator = null, $second = null, $boolean = 'and') + */ public static function whereColumn($first, $operator = null, $second = null, $boolean = 'and') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->whereColumn($first, $operator, $second, $boolean); } - - /** + /** * Add an "or where" clause comparing two columns to the query. * - * @param string|array $first + * @param \Illuminate\Contracts\Database\Query\Expression|string|array $first * @param string|null $operator * @param string|null $second * @return \Illuminate\Database\Query\Builder * @static - */ - public static function orWhereColumn($first, $operator = null, $second = null) + */ public static function orWhereColumn($first, $operator = null, $second = null) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orWhereColumn($first, $operator, $second); } - - /** + /** * Add a raw where clause to the query. * * @param string $sql @@ -20742,87 +20323,75 @@ public static function orWhereColumn($first, $operator = null, $second = null) * @param string $boolean * @return \Illuminate\Database\Query\Builder * @static - */ - public static function whereRaw($sql, $bindings = [], $boolean = 'and') + */ public static function whereRaw($sql, $bindings = [], $boolean = 'and') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->whereRaw($sql, $bindings, $boolean); } - - /** + /** * Add a raw or where clause to the query. * * @param string $sql * @param mixed $bindings * @return \Illuminate\Database\Query\Builder * @static - */ - public static function orWhereRaw($sql, $bindings = []) + */ public static function orWhereRaw($sql, $bindings = []) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orWhereRaw($sql, $bindings); } - - /** + /** * Add a "where in" clause to the query. * - * @param string $column + * @param \Illuminate\Contracts\Database\Query\Expression|string $column * @param mixed $values * @param string $boolean * @param bool $not * @return \Illuminate\Database\Query\Builder * @static - */ - public static function whereIn($column, $values, $boolean = 'and', $not = false) + */ public static function whereIn($column, $values, $boolean = 'and', $not = false) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->whereIn($column, $values, $boolean, $not); } - - /** + /** * Add an "or where in" clause to the query. * - * @param string $column + * @param \Illuminate\Contracts\Database\Query\Expression|string $column * @param mixed $values * @return \Illuminate\Database\Query\Builder * @static - */ - public static function orWhereIn($column, $values) + */ public static function orWhereIn($column, $values) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orWhereIn($column, $values); } - - /** + /** * Add a "where not in" clause to the query. * - * @param string $column + * @param \Illuminate\Contracts\Database\Query\Expression|string $column * @param mixed $values * @param string $boolean * @return \Illuminate\Database\Query\Builder * @static - */ - public static function whereNotIn($column, $values, $boolean = 'and') + */ public static function whereNotIn($column, $values, $boolean = 'and') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->whereNotIn($column, $values, $boolean); } - - /** + /** * Add an "or where not in" clause to the query. * - * @param string $column + * @param \Illuminate\Contracts\Database\Query\Expression|string $column * @param mixed $values * @return \Illuminate\Database\Query\Builder * @static - */ - public static function orWhereNotIn($column, $values) + */ public static function orWhereNotIn($column, $values) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orWhereNotIn($column, $values); } - - /** + /** * Add a "where in raw" clause for integer values to the query. * * @param string $column @@ -20831,28 +20400,24 @@ public static function orWhereNotIn($column, $values) * @param bool $not * @return \Illuminate\Database\Query\Builder * @static - */ - public static function whereIntegerInRaw($column, $values, $boolean = 'and', $not = false) + */ public static function whereIntegerInRaw($column, $values, $boolean = 'and', $not = false) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->whereIntegerInRaw($column, $values, $boolean, $not); } - - /** + /** * Add an "or where in raw" clause for integer values to the query. * * @param string $column * @param \Illuminate\Contracts\Support\Arrayable|array $values * @return \Illuminate\Database\Query\Builder * @static - */ - public static function orWhereIntegerInRaw($column, $values) + */ public static function orWhereIntegerInRaw($column, $values) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orWhereIntegerInRaw($column, $values); } - - /** + /** * Add a "where not in raw" clause for integer values to the query. * * @param string $column @@ -20860,452 +20425,390 @@ public static function orWhereIntegerInRaw($column, $values) * @param string $boolean * @return \Illuminate\Database\Query\Builder * @static - */ - public static function whereIntegerNotInRaw($column, $values, $boolean = 'and') + */ public static function whereIntegerNotInRaw($column, $values, $boolean = 'and') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->whereIntegerNotInRaw($column, $values, $boolean); } - - /** + /** * Add an "or where not in raw" clause for integer values to the query. * * @param string $column * @param \Illuminate\Contracts\Support\Arrayable|array $values * @return \Illuminate\Database\Query\Builder * @static - */ - public static function orWhereIntegerNotInRaw($column, $values) + */ public static function orWhereIntegerNotInRaw($column, $values) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orWhereIntegerNotInRaw($column, $values); } - - /** + /** * Add a "where null" clause to the query. * - * @param string|array $columns + * @param string|array|\Illuminate\Contracts\Database\Query\Expression $columns * @param string $boolean * @param bool $not * @return \Illuminate\Database\Query\Builder * @static - */ - public static function whereNull($columns, $boolean = 'and', $not = false) + */ public static function whereNull($columns, $boolean = 'and', $not = false) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->whereNull($columns, $boolean, $not); } - - /** + /** * Add an "or where null" clause to the query. * - * @param string|array $column + * @param string|array|\Illuminate\Contracts\Database\Query\Expression $column * @return \Illuminate\Database\Query\Builder * @static - */ - public static function orWhereNull($column) + */ public static function orWhereNull($column) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orWhereNull($column); } - - /** + /** * Add a "where not null" clause to the query. * - * @param string|array $columns + * @param string|array|\Illuminate\Contracts\Database\Query\Expression $columns * @param string $boolean * @return \Illuminate\Database\Query\Builder * @static - */ - public static function whereNotNull($columns, $boolean = 'and') + */ public static function whereNotNull($columns, $boolean = 'and') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->whereNotNull($columns, $boolean); } - - /** + /** * Add a where between statement to the query. * - * @param string|\Illuminate\Database\Query\Expression $column + * @param \Illuminate\Contracts\Database\Query\Expression|string $column * @param \Illuminate\Database\Query\iterable $values * @param string $boolean * @param bool $not * @return \Illuminate\Database\Query\Builder * @static - */ - public static function whereBetween($column, $values, $boolean = 'and', $not = false) + */ public static function whereBetween($column, $values, $boolean = 'and', $not = false) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->whereBetween($column, $values, $boolean, $not); } - - /** + /** * Add a where between statement using columns to the query. * - * @param string $column + * @param \Illuminate\Contracts\Database\Query\Expression|string $column * @param array $values * @param string $boolean * @param bool $not * @return \Illuminate\Database\Query\Builder * @static - */ - public static function whereBetweenColumns($column, $values, $boolean = 'and', $not = false) + */ public static function whereBetweenColumns($column, $values, $boolean = 'and', $not = false) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->whereBetweenColumns($column, $values, $boolean, $not); } - - /** + /** * Add an or where between statement to the query. * - * @param string $column + * @param \Illuminate\Contracts\Database\Query\Expression|string $column * @param \Illuminate\Database\Query\iterable $values * @return \Illuminate\Database\Query\Builder * @static - */ - public static function orWhereBetween($column, $values) + */ public static function orWhereBetween($column, $values) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orWhereBetween($column, $values); } - - /** + /** * Add an or where between statement using columns to the query. * - * @param string $column + * @param \Illuminate\Contracts\Database\Query\Expression|string $column * @param array $values * @return \Illuminate\Database\Query\Builder * @static - */ - public static function orWhereBetweenColumns($column, $values) + */ public static function orWhereBetweenColumns($column, $values) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orWhereBetweenColumns($column, $values); } - - /** + /** * Add a where not between statement to the query. * - * @param string $column + * @param \Illuminate\Contracts\Database\Query\Expression|string $column * @param \Illuminate\Database\Query\iterable $values * @param string $boolean * @return \Illuminate\Database\Query\Builder * @static - */ - public static function whereNotBetween($column, $values, $boolean = 'and') + */ public static function whereNotBetween($column, $values, $boolean = 'and') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->whereNotBetween($column, $values, $boolean); } - - /** + /** * Add a where not between statement using columns to the query. * - * @param string $column + * @param \Illuminate\Contracts\Database\Query\Expression|string $column * @param array $values * @param string $boolean * @return \Illuminate\Database\Query\Builder * @static - */ - public static function whereNotBetweenColumns($column, $values, $boolean = 'and') + */ public static function whereNotBetweenColumns($column, $values, $boolean = 'and') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->whereNotBetweenColumns($column, $values, $boolean); } - - /** + /** * Add an or where not between statement to the query. * - * @param string $column + * @param \Illuminate\Contracts\Database\Query\Expression|string $column * @param \Illuminate\Database\Query\iterable $values * @return \Illuminate\Database\Query\Builder * @static - */ - public static function orWhereNotBetween($column, $values) + */ public static function orWhereNotBetween($column, $values) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orWhereNotBetween($column, $values); } - - /** + /** * Add an or where not between statement using columns to the query. * - * @param string $column + * @param \Illuminate\Contracts\Database\Query\Expression|string $column * @param array $values * @return \Illuminate\Database\Query\Builder * @static - */ - public static function orWhereNotBetweenColumns($column, $values) + */ public static function orWhereNotBetweenColumns($column, $values) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orWhereNotBetweenColumns($column, $values); } - - /** + /** * Add an "or where not null" clause to the query. * - * @param string $column + * @param \Illuminate\Contracts\Database\Query\Expression|string $column * @return \Illuminate\Database\Query\Builder * @static - */ - public static function orWhereNotNull($column) + */ public static function orWhereNotNull($column) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orWhereNotNull($column); } - - /** + /** * Add a "where date" statement to the query. * - * @param string $column - * @param string $operator + * @param \Illuminate\Contracts\Database\Query\Expression|string $column + * @param \DateTimeInterface|string|null $operator * @param \DateTimeInterface|string|null $value * @param string $boolean * @return \Illuminate\Database\Query\Builder * @static - */ - public static function whereDate($column, $operator, $value = null, $boolean = 'and') + */ public static function whereDate($column, $operator, $value = null, $boolean = 'and') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->whereDate($column, $operator, $value, $boolean); } - - /** + /** * Add an "or where date" statement to the query. * - * @param string $column - * @param string $operator + * @param \Illuminate\Contracts\Database\Query\Expression|string $column + * @param \DateTimeInterface|string|null $operator * @param \DateTimeInterface|string|null $value * @return \Illuminate\Database\Query\Builder * @static - */ - public static function orWhereDate($column, $operator, $value = null) + */ public static function orWhereDate($column, $operator, $value = null) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orWhereDate($column, $operator, $value); } - - /** + /** * Add a "where time" statement to the query. * - * @param string $column - * @param string $operator + * @param \Illuminate\Contracts\Database\Query\Expression|string $column + * @param \DateTimeInterface|string|null $operator * @param \DateTimeInterface|string|null $value * @param string $boolean * @return \Illuminate\Database\Query\Builder * @static - */ - public static function whereTime($column, $operator, $value = null, $boolean = 'and') + */ public static function whereTime($column, $operator, $value = null, $boolean = 'and') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->whereTime($column, $operator, $value, $boolean); } - - /** + /** * Add an "or where time" statement to the query. * - * @param string $column - * @param string $operator + * @param \Illuminate\Contracts\Database\Query\Expression|string $column + * @param \DateTimeInterface|string|null $operator * @param \DateTimeInterface|string|null $value * @return \Illuminate\Database\Query\Builder * @static - */ - public static function orWhereTime($column, $operator, $value = null) + */ public static function orWhereTime($column, $operator, $value = null) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orWhereTime($column, $operator, $value); } - - /** + /** * Add a "where day" statement to the query. * - * @param string $column - * @param string $operator + * @param \Illuminate\Contracts\Database\Query\Expression|string $column + * @param \DateTimeInterface|string|int|null $operator * @param \DateTimeInterface|string|int|null $value * @param string $boolean * @return \Illuminate\Database\Query\Builder * @static - */ - public static function whereDay($column, $operator, $value = null, $boolean = 'and') + */ public static function whereDay($column, $operator, $value = null, $boolean = 'and') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->whereDay($column, $operator, $value, $boolean); } - - /** + /** * Add an "or where day" statement to the query. * - * @param string $column - * @param string $operator + * @param \Illuminate\Contracts\Database\Query\Expression|string $column + * @param \DateTimeInterface|string|int|null $operator * @param \DateTimeInterface|string|int|null $value * @return \Illuminate\Database\Query\Builder * @static - */ - public static function orWhereDay($column, $operator, $value = null) + */ public static function orWhereDay($column, $operator, $value = null) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orWhereDay($column, $operator, $value); } - - /** + /** * Add a "where month" statement to the query. * - * @param string $column - * @param string $operator + * @param \Illuminate\Contracts\Database\Query\Expression|string $column + * @param \DateTimeInterface|string|int|null $operator * @param \DateTimeInterface|string|int|null $value * @param string $boolean * @return \Illuminate\Database\Query\Builder * @static - */ - public static function whereMonth($column, $operator, $value = null, $boolean = 'and') + */ public static function whereMonth($column, $operator, $value = null, $boolean = 'and') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->whereMonth($column, $operator, $value, $boolean); } - - /** + /** * Add an "or where month" statement to the query. * - * @param string $column - * @param string $operator + * @param \Illuminate\Contracts\Database\Query\Expression|string $column + * @param \DateTimeInterface|string|int|null $operator * @param \DateTimeInterface|string|int|null $value * @return \Illuminate\Database\Query\Builder * @static - */ - public static function orWhereMonth($column, $operator, $value = null) + */ public static function orWhereMonth($column, $operator, $value = null) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orWhereMonth($column, $operator, $value); } - - /** + /** * Add a "where year" statement to the query. * - * @param string $column - * @param string $operator + * @param \Illuminate\Contracts\Database\Query\Expression|string $column + * @param \DateTimeInterface|string|int|null $operator * @param \DateTimeInterface|string|int|null $value * @param string $boolean * @return \Illuminate\Database\Query\Builder * @static - */ - public static function whereYear($column, $operator, $value = null, $boolean = 'and') + */ public static function whereYear($column, $operator, $value = null, $boolean = 'and') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->whereYear($column, $operator, $value, $boolean); } - - /** + /** * Add an "or where year" statement to the query. * - * @param string $column - * @param string $operator + * @param \Illuminate\Contracts\Database\Query\Expression|string $column + * @param \DateTimeInterface|string|int|null $operator * @param \DateTimeInterface|string|int|null $value * @return \Illuminate\Database\Query\Builder * @static - */ - public static function orWhereYear($column, $operator, $value = null) + */ public static function orWhereYear($column, $operator, $value = null) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orWhereYear($column, $operator, $value); } - - /** + /** * Add a nested where statement to the query. * * @param \Closure $callback * @param string $boolean * @return \Illuminate\Database\Query\Builder * @static - */ - public static function whereNested($callback, $boolean = 'and') + */ public static function whereNested($callback, $boolean = 'and') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->whereNested($callback, $boolean); } - - /** + /** * Create a new query instance for nested where condition. * * @return \Illuminate\Database\Query\Builder * @static - */ - public static function forNestedWhere() + */ public static function forNestedWhere() { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->forNestedWhere(); } - - /** + /** * Add another query builder as a nested where to the query builder. * * @param \Illuminate\Database\Query\Builder $query * @param string $boolean * @return \Illuminate\Database\Query\Builder * @static - */ - public static function addNestedWhereQuery($query, $boolean = 'and') + */ public static function addNestedWhereQuery($query, $boolean = 'and') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->addNestedWhereQuery($query, $boolean); } - - /** + /** * Add an exists clause to the query. * - * @param \Closure $callback + * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder $callback * @param string $boolean * @param bool $not * @return \Illuminate\Database\Query\Builder * @static - */ - public static function whereExists($callback, $boolean = 'and', $not = false) + */ public static function whereExists($callback, $boolean = 'and', $not = false) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->whereExists($callback, $boolean, $not); } - - /** + /** * Add an or exists clause to the query. * - * @param \Closure $callback + * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder $callback * @param bool $not * @return \Illuminate\Database\Query\Builder * @static - */ - public static function orWhereExists($callback, $not = false) + */ public static function orWhereExists($callback, $not = false) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orWhereExists($callback, $not); } - - /** + /** * Add a where not exists clause to the query. * - * @param \Closure $callback + * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder $callback * @param string $boolean * @return \Illuminate\Database\Query\Builder * @static - */ - public static function whereNotExists($callback, $boolean = 'and') + */ public static function whereNotExists($callback, $boolean = 'and') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->whereNotExists($callback, $boolean); } - - /** + /** * Add a where not exists clause to the query. * - * @param \Closure $callback + * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder $callback * @return \Illuminate\Database\Query\Builder * @static - */ - public static function orWhereNotExists($callback) + */ public static function orWhereNotExists($callback) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orWhereNotExists($callback); } - - /** + /** * Add an exists clause to the query. * * @param \Illuminate\Database\Query\Builder $query @@ -21313,14 +20816,12 @@ public static function orWhereNotExists($callback) * @param bool $not * @return \Illuminate\Database\Query\Builder * @static - */ - public static function addWhereExistsQuery($query, $boolean = 'and', $not = false) + */ public static function addWhereExistsQuery($query, $boolean = 'and', $not = false) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->addWhereExistsQuery($query, $boolean, $not); } - - /** + /** * Adds a where condition using row values. * * @param array $columns @@ -21330,14 +20831,12 @@ public static function addWhereExistsQuery($query, $boolean = 'and', $not = fals * @return \Illuminate\Database\Query\Builder * @throws \InvalidArgumentException * @static - */ - public static function whereRowValues($columns, $operator, $values, $boolean = 'and') + */ public static function whereRowValues($columns, $operator, $values, $boolean = 'and') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->whereRowValues($columns, $operator, $values, $boolean); } - - /** + /** * Adds an or where condition using row values. * * @param array $columns @@ -21345,14 +20844,12 @@ public static function whereRowValues($columns, $operator, $values, $boolean = ' * @param array $values * @return \Illuminate\Database\Query\Builder * @static - */ - public static function orWhereRowValues($columns, $operator, $values) + */ public static function orWhereRowValues($columns, $operator, $values) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orWhereRowValues($columns, $operator, $values); } - - /** + /** * Add a "where JSON contains" clause to the query. * * @param string $column @@ -21361,28 +20858,24 @@ public static function orWhereRowValues($columns, $operator, $values) * @param bool $not * @return \Illuminate\Database\Query\Builder * @static - */ - public static function whereJsonContains($column, $value, $boolean = 'and', $not = false) + */ public static function whereJsonContains($column, $value, $boolean = 'and', $not = false) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->whereJsonContains($column, $value, $boolean, $not); } - - /** + /** * Add an "or where JSON contains" clause to the query. * * @param string $column * @param mixed $value * @return \Illuminate\Database\Query\Builder * @static - */ - public static function orWhereJsonContains($column, $value) + */ public static function orWhereJsonContains($column, $value) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orWhereJsonContains($column, $value); } - - /** + /** * Add a "where JSON not contains" clause to the query. * * @param string $column @@ -21390,28 +20883,24 @@ public static function orWhereJsonContains($column, $value) * @param string $boolean * @return \Illuminate\Database\Query\Builder * @static - */ - public static function whereJsonDoesntContain($column, $value, $boolean = 'and') + */ public static function whereJsonDoesntContain($column, $value, $boolean = 'and') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->whereJsonDoesntContain($column, $value, $boolean); } - - /** + /** * Add an "or where JSON not contains" clause to the query. * * @param string $column * @param mixed $value * @return \Illuminate\Database\Query\Builder * @static - */ - public static function orWhereJsonDoesntContain($column, $value) + */ public static function orWhereJsonDoesntContain($column, $value) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orWhereJsonDoesntContain($column, $value); } - - /** + /** * Add a clause that determines if a JSON path exists to the query. * * @param string $column @@ -21419,54 +20908,46 @@ public static function orWhereJsonDoesntContain($column, $value) * @param bool $not * @return \Illuminate\Database\Query\Builder * @static - */ - public static function whereJsonContainsKey($column, $boolean = 'and', $not = false) + */ public static function whereJsonContainsKey($column, $boolean = 'and', $not = false) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->whereJsonContainsKey($column, $boolean, $not); } - - /** + /** * Add an "or" clause that determines if a JSON path exists to the query. * * @param string $column * @return \Illuminate\Database\Query\Builder * @static - */ - public static function orWhereJsonContainsKey($column) + */ public static function orWhereJsonContainsKey($column) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orWhereJsonContainsKey($column); } - - /** + /** * Add a clause that determines if a JSON path does not exist to the query. * * @param string $column * @param string $boolean * @return \Illuminate\Database\Query\Builder * @static - */ - public static function whereJsonDoesntContainKey($column, $boolean = 'and') + */ public static function whereJsonDoesntContainKey($column, $boolean = 'and') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->whereJsonDoesntContainKey($column, $boolean); } - - /** + /** * Add an "or" clause that determines if a JSON path does not exist to the query. * * @param string $column * @return \Illuminate\Database\Query\Builder * @static - */ - public static function orWhereJsonDoesntContainKey($column) + */ public static function orWhereJsonDoesntContainKey($column) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orWhereJsonDoesntContainKey($column); } - - /** + /** * Add a "where JSON length" clause to the query. * * @param string $column @@ -21475,14 +20956,12 @@ public static function orWhereJsonDoesntContainKey($column) * @param string $boolean * @return \Illuminate\Database\Query\Builder * @static - */ - public static function whereJsonLength($column, $operator, $value = null, $boolean = 'and') + */ public static function whereJsonLength($column, $operator, $value = null, $boolean = 'and') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->whereJsonLength($column, $operator, $value, $boolean); } - - /** + /** * Add an "or where JSON length" clause to the query. * * @param string $column @@ -21490,28 +20969,24 @@ public static function whereJsonLength($column, $operator, $value = null, $boole * @param mixed $value * @return \Illuminate\Database\Query\Builder * @static - */ - public static function orWhereJsonLength($column, $operator, $value = null) + */ public static function orWhereJsonLength($column, $operator, $value = null) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orWhereJsonLength($column, $operator, $value); } - - /** + /** * Handles dynamic "where" clauses to the query. * * @param string $method * @param array $parameters * @return \Illuminate\Database\Query\Builder * @static - */ - public static function dynamicWhere($method, $parameters) + */ public static function dynamicWhere($method, $parameters) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->dynamicWhere($method, $parameters); } - - /** + /** * Add a "where fulltext" clause to the query. * * @param string|string[] $columns @@ -21519,114 +20994,152 @@ public static function dynamicWhere($method, $parameters) * @param string $boolean * @return \Illuminate\Database\Query\Builder * @static - */ - public static function whereFullText($columns, $value, $options = [], $boolean = 'and') + */ public static function whereFullText($columns, $value, $options = [], $boolean = 'and') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->whereFullText($columns, $value, $options, $boolean); } - - /** + /** * Add a "or where fulltext" clause to the query. * * @param string|string[] $columns * @param string $value * @return \Illuminate\Database\Query\Builder * @static - */ - public static function orWhereFullText($columns, $value, $options = []) + */ public static function orWhereFullText($columns, $value, $options = []) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orWhereFullText($columns, $value, $options); } - - /** + /** + * Add a "where" clause to the query for multiple columns with "and" conditions between them. + * + * @param string[] $columns + * @param mixed $operator + * @param mixed $value + * @param string $boolean + * @return \Illuminate\Database\Query\Builder + * @static + */ public static function whereAll($columns, $operator = null, $value = null, $boolean = 'and') + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->whereAll($columns, $operator, $value, $boolean); + } + /** + * Add an "or where" clause to the query for multiple columns with "and" conditions between them. + * + * @param string[] $columns + * @param string $operator + * @param mixed $value + * @return \Illuminate\Database\Query\Builder + * @static + */ public static function orWhereAll($columns, $operator = null, $value = null) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->orWhereAll($columns, $operator, $value); + } + /** + * Add an "where" clause to the query for multiple columns with "or" conditions between them. + * + * @param string[] $columns + * @param string $operator + * @param mixed $value + * @param string $boolean + * @return \Illuminate\Database\Query\Builder + * @static + */ public static function whereAny($columns, $operator = null, $value = null, $boolean = 'and') + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->whereAny($columns, $operator, $value, $boolean); + } + /** + * Add an "or where" clause to the query for multiple columns with "or" conditions between them. + * + * @param string[] $columns + * @param string $operator + * @param mixed $value + * @return \Illuminate\Database\Query\Builder + * @static + */ public static function orWhereAny($columns, $operator = null, $value = null) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->orWhereAny($columns, $operator, $value); + } + /** * Add a "group by" clause to the query. * - * @param array|string $groups + * @param array|\Illuminate\Contracts\Database\Query\Expression|string $groups * @return \Illuminate\Database\Query\Builder * @static - */ - public static function groupBy(...$groups) + */ public static function groupBy(...$groups) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->groupBy(...$groups); } - - /** + /** * Add a raw groupBy clause to the query. * * @param string $sql * @param array $bindings * @return \Illuminate\Database\Query\Builder * @static - */ - public static function groupByRaw($sql, $bindings = []) + */ public static function groupByRaw($sql, $bindings = []) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->groupByRaw($sql, $bindings); } - - /** + /** * Add a "having" clause to the query. * - * @param \Closure|string $column + * @param \Illuminate\Contracts\Database\Query\Expression|\Closure|string $column * @param string|int|float|null $operator * @param string|int|float|null $value * @param string $boolean * @return \Illuminate\Database\Query\Builder * @static - */ - public static function having($column, $operator = null, $value = null, $boolean = 'and') + */ public static function having($column, $operator = null, $value = null, $boolean = 'and') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->having($column, $operator, $value, $boolean); } - - /** + /** * Add an "or having" clause to the query. * - * @param \Closure|string $column + * @param \Illuminate\Contracts\Database\Query\Expression|\Closure|string $column * @param string|int|float|null $operator * @param string|int|float|null $value * @return \Illuminate\Database\Query\Builder * @static - */ - public static function orHaving($column, $operator = null, $value = null) + */ public static function orHaving($column, $operator = null, $value = null) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orHaving($column, $operator, $value); } - - /** + /** * Add a nested having statement to the query. * * @param \Closure $callback * @param string $boolean * @return \Illuminate\Database\Query\Builder * @static - */ - public static function havingNested($callback, $boolean = 'and') + */ public static function havingNested($callback, $boolean = 'and') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->havingNested($callback, $boolean); } - - /** + /** * Add another query builder as a nested having to the query builder. * * @param \Illuminate\Database\Query\Builder $query * @param string $boolean * @return \Illuminate\Database\Query\Builder * @static - */ - public static function addNestedHavingQuery($query, $boolean = 'and') + */ public static function addNestedHavingQuery($query, $boolean = 'and') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->addNestedHavingQuery($query, $boolean); } - - /** + /** * Add a "having null" clause to the query. * * @param string|array $columns @@ -21634,70 +21147,60 @@ public static function addNestedHavingQuery($query, $boolean = 'and') * @param bool $not * @return \Illuminate\Database\Query\Builder * @static - */ - public static function havingNull($columns, $boolean = 'and', $not = false) + */ public static function havingNull($columns, $boolean = 'and', $not = false) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->havingNull($columns, $boolean, $not); } - - /** + /** * Add an "or having null" clause to the query. * * @param string $column * @return \Illuminate\Database\Query\Builder * @static - */ - public static function orHavingNull($column) + */ public static function orHavingNull($column) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orHavingNull($column); } - - /** + /** * Add a "having not null" clause to the query. * * @param string|array $columns * @param string $boolean * @return \Illuminate\Database\Query\Builder * @static - */ - public static function havingNotNull($columns, $boolean = 'and') + */ public static function havingNotNull($columns, $boolean = 'and') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->havingNotNull($columns, $boolean); } - - /** + /** * Add an "or having not null" clause to the query. * * @param string $column * @return \Illuminate\Database\Query\Builder * @static - */ - public static function orHavingNotNull($column) + */ public static function orHavingNotNull($column) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orHavingNotNull($column); } - - /** + /** * Add a "having between " clause to the query. * * @param string $column - * @param array $values + * @param \Illuminate\Database\Query\iterable $values * @param string $boolean * @param bool $not * @return \Illuminate\Database\Query\Builder * @static - */ - public static function havingBetween($column, $values, $boolean = 'and', $not = false) + */ public static function havingBetween($column, $values, $boolean = 'and', $not = false) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->havingBetween($column, $values, $boolean, $not); } - - /** + /** * Add a raw having clause to the query. * * @param string $sql @@ -21705,149 +21208,127 @@ public static function havingBetween($column, $values, $boolean = 'and', $not = * @param string $boolean * @return \Illuminate\Database\Query\Builder * @static - */ - public static function havingRaw($sql, $bindings = [], $boolean = 'and') + */ public static function havingRaw($sql, $bindings = [], $boolean = 'and') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->havingRaw($sql, $bindings, $boolean); } - - /** + /** * Add a raw or having clause to the query. * * @param string $sql * @param array $bindings * @return \Illuminate\Database\Query\Builder * @static - */ - public static function orHavingRaw($sql, $bindings = []) + */ public static function orHavingRaw($sql, $bindings = []) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orHavingRaw($sql, $bindings); } - - /** + /** * Add an "order by" clause to the query. * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|\Illuminate\Database\Query\Expression|string $column + * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|\Illuminate\Contracts\Database\Query\Expression|string $column * @param string $direction * @return \Illuminate\Database\Query\Builder * @throws \InvalidArgumentException * @static - */ - public static function orderBy($column, $direction = 'asc') + */ public static function orderBy($column, $direction = 'asc') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orderBy($column, $direction); } - - /** + /** * Add a descending "order by" clause to the query. * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|\Illuminate\Database\Query\Expression|string $column + * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|\Illuminate\Contracts\Database\Query\Expression|string $column * @return \Illuminate\Database\Query\Builder * @static - */ - public static function orderByDesc($column) + */ public static function orderByDesc($column) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orderByDesc($column); } - - /** + /** * Put the query's results in random order. * * @param string|int $seed * @return \Illuminate\Database\Query\Builder * @static - */ - public static function inRandomOrder($seed = '') + */ public static function inRandomOrder($seed = '') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->inRandomOrder($seed); } - - /** + /** * Add a raw "order by" clause to the query. * * @param string $sql * @param array $bindings * @return \Illuminate\Database\Query\Builder * @static - */ - public static function orderByRaw($sql, $bindings = []) + */ public static function orderByRaw($sql, $bindings = []) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orderByRaw($sql, $bindings); } - - /** + /** * Alias to set the "offset" value of the query. * * @param int $value * @return \Illuminate\Database\Query\Builder * @static - */ - public static function skip($value) + */ public static function skip($value) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->skip($value); } - - /** + /** * Set the "offset" value of the query. * * @param int $value * @return \Illuminate\Database\Query\Builder * @static - */ - public static function offset($value) + */ public static function offset($value) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->offset($value); } - - /** + /** * Alias to set the "limit" value of the query. * * @param int $value * @return \Illuminate\Database\Query\Builder * @static - */ - public static function take($value) + */ public static function take($value) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->take($value); } - - /** + /** * Set the "limit" value of the query. * * @param int $value * @return \Illuminate\Database\Query\Builder * @static - */ - public static function limit($value) + */ public static function limit($value) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->limit($value); } - - /** + /** * Set the limit and offset for a given page. * * @param int $page * @param int $perPage * @return \Illuminate\Database\Query\Builder * @static - */ - public static function forPage($page, $perPage = 15) + */ public static function forPage($page, $perPage = 15) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->forPage($page, $perPage); } - - /** + /** * Constrain the query to the previous "page" of results before a given ID. * * @param int $perPage @@ -21855,14 +21336,12 @@ public static function forPage($page, $perPage = 15) * @param string $column * @return \Illuminate\Database\Query\Builder * @static - */ - public static function forPageBeforeId($perPage = 15, $lastId = 0, $column = 'id') + */ public static function forPageBeforeId($perPage = 15, $lastId = 0, $column = 'id') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->forPageBeforeId($perPage, $lastId, $column); } - - /** + /** * Constrain the query to the next "page" of results after a given ID. * * @param int $perPage @@ -21870,407 +21349,367 @@ public static function forPageBeforeId($perPage = 15, $lastId = 0, $column = 'id * @param string $column * @return \Illuminate\Database\Query\Builder * @static - */ - public static function forPageAfterId($perPage = 15, $lastId = 0, $column = 'id') + */ public static function forPageAfterId($perPage = 15, $lastId = 0, $column = 'id') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->forPageAfterId($perPage, $lastId, $column); } - - /** + /** * Remove all existing orders and optionally add a new order. * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Query\Expression|string|null $column + * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Contracts\Database\Query\Expression|string|null $column * @param string $direction * @return \Illuminate\Database\Query\Builder * @static - */ - public static function reorder($column = null, $direction = 'asc') + */ public static function reorder($column = null, $direction = 'asc') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->reorder($column, $direction); } - - /** + /** * Add a union statement to the query. * * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder $query * @param bool $all * @return \Illuminate\Database\Query\Builder * @static - */ - public static function union($query, $all = false) + */ public static function union($query, $all = false) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->union($query, $all); } - - /** + /** * Add a union all statement to the query. * * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder $query * @return \Illuminate\Database\Query\Builder * @static - */ - public static function unionAll($query) + */ public static function unionAll($query) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->unionAll($query); } - - /** + /** * Lock the selected rows in the table. * * @param string|bool $value * @return \Illuminate\Database\Query\Builder * @static - */ - public static function lock($value = true) + */ public static function lock($value = true) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->lock($value); } - - /** + /** * Lock the selected rows in the table for updating. * * @return \Illuminate\Database\Query\Builder * @static - */ - public static function lockForUpdate() + */ public static function lockForUpdate() { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->lockForUpdate(); } - - /** + /** * Share lock the selected rows in the table. * * @return \Illuminate\Database\Query\Builder * @static - */ - public static function sharedLock() + */ public static function sharedLock() { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->sharedLock(); } - - /** + /** * Register a closure to be invoked before the query is executed. * * @param callable $callback * @return \Illuminate\Database\Query\Builder * @static - */ - public static function beforeQuery($callback) + */ public static function beforeQuery($callback) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->beforeQuery($callback); } - - /** + /** * Invoke the "before query" modification callbacks. * * @return void * @static - */ - public static function applyBeforeQueryCallbacks() + */ public static function applyBeforeQueryCallbacks() { /** @var \Illuminate\Database\Query\Builder $instance */ $instance->applyBeforeQueryCallbacks(); } - - /** + /** * Get the SQL representation of the query. * * @return string * @static - */ - public static function toSql() + */ public static function toSql() { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->toSql(); } - - /** + /** + * Get the raw SQL representation of the query with embedded bindings. + * + * @return string + * @static + */ public static function toRawSql() + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->toRawSql(); + } + /** * Get a single expression value from the first result of a query. * * @param string $expression * @param array $bindings * @return mixed * @static - */ - public static function rawValue($expression, $bindings = []) + */ public static function rawValue($expression, $bindings = []) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->rawValue($expression, $bindings); } - - /** + /** * Get the count of the total records for the paginator. * * @param array $columns * @return int * @static - */ - public static function getCountForPagination($columns = []) + */ public static function getCountForPagination($columns = []) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->getCountForPagination($columns); } - - /** + /** * Concatenate values of a given column as a string. * * @param string $column * @param string $glue * @return string * @static - */ - public static function implode($column, $glue = '') + */ public static function implode($column, $glue = '') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->implode($column, $glue); } - - /** + /** * Determine if any rows exist for the current query. * * @return bool * @static - */ - public static function exists() + */ public static function exists() { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->exists(); } - - /** + /** * Determine if no rows exist for the current query. * * @return bool * @static - */ - public static function doesntExist() + */ public static function doesntExist() { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->doesntExist(); } - - /** + /** * Execute the given callback if no rows exist for the current query. * * @param \Closure $callback * @return mixed * @static - */ - public static function existsOr($callback) + */ public static function existsOr($callback) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->existsOr($callback); } - - /** + /** * Execute the given callback if rows exist for the current query. * * @param \Closure $callback * @return mixed * @static - */ - public static function doesntExistOr($callback) + */ public static function doesntExistOr($callback) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->doesntExistOr($callback); } - - /** + /** * Retrieve the "count" result of the query. * - * @param string $columns + * @param \Illuminate\Contracts\Database\Query\Expression|string $columns * @return int * @static - */ - public static function count($columns = '*') + */ public static function count($columns = '*') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->count($columns); } - - /** + /** * Retrieve the minimum value of a given column. * - * @param string $column + * @param \Illuminate\Contracts\Database\Query\Expression|string $column * @return mixed * @static - */ - public static function min($column) + */ public static function min($column) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->min($column); } - - /** + /** * Retrieve the maximum value of a given column. * - * @param string $column + * @param \Illuminate\Contracts\Database\Query\Expression|string $column * @return mixed * @static - */ - public static function max($column) + */ public static function max($column) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->max($column); } - - /** + /** * Retrieve the sum of the values of a given column. * - * @param string $column + * @param \Illuminate\Contracts\Database\Query\Expression|string $column * @return mixed * @static - */ - public static function sum($column) + */ public static function sum($column) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->sum($column); } - - /** + /** * Retrieve the average of the values of a given column. * - * @param string $column + * @param \Illuminate\Contracts\Database\Query\Expression|string $column * @return mixed * @static - */ - public static function avg($column) + */ public static function avg($column) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->avg($column); } - - /** + /** * Alias for the "avg" method. * - * @param string $column + * @param \Illuminate\Contracts\Database\Query\Expression|string $column * @return mixed * @static - */ - public static function average($column) + */ public static function average($column) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->average($column); } - - /** + /** * Execute an aggregate function on the database. * * @param string $function * @param array $columns * @return mixed * @static - */ - public static function aggregate($function, $columns = []) + */ public static function aggregate($function, $columns = []) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->aggregate($function, $columns); } - - /** + /** * Execute a numeric aggregate function on the database. * * @param string $function * @param array $columns * @return float|int * @static - */ - public static function numericAggregate($function, $columns = []) + */ public static function numericAggregate($function, $columns = []) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->numericAggregate($function, $columns); } - - /** + /** * Insert new records into the database. * * @param array $values * @return bool * @static - */ - public static function insert($values) + */ public static function insert($values) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->insert($values); } - - /** + /** * Insert new records into the database while ignoring errors. * * @param array $values * @return int * @static - */ - public static function insertOrIgnore($values) + */ public static function insertOrIgnore($values) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->insertOrIgnore($values); } - - /** + /** * Insert a new record and get the value of the primary key. * * @param array $values * @param string|null $sequence * @return int * @static - */ - public static function insertGetId($values, $sequence = null) + */ public static function insertGetId($values, $sequence = null) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->insertGetId($values, $sequence); } - - /** + /** * Insert new records into the table using a subquery. * * @param array $columns * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|string $query * @return int * @static - */ - public static function insertUsing($columns, $query) + */ public static function insertUsing($columns, $query) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->insertUsing($columns, $query); } - - /** + /** + * Insert new records into the table using a subquery while ignoring errors. + * + * @param array $columns + * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|string $query + * @return int + * @static + */ public static function insertOrIgnoreUsing($columns, $query) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->insertOrIgnoreUsing($columns, $query); + } + /** * Update records in a PostgreSQL database using the update from syntax. * * @param array $values * @return int * @static - */ - public static function updateFrom($values) + */ public static function updateFrom($values) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->updateFrom($values); } - - /** + /** * Insert or update a record matching the attributes, and fill it with values. * * @param array $attributes * @param array $values * @return bool * @static - */ - public static function updateOrInsert($attributes, $values = []) + */ public static function updateOrInsert($attributes, $values = []) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->updateOrInsert($attributes, $values); } - - /** + /** * Increment the given column's values by the given amounts. * * @param array $columns @@ -22278,14 +21717,12 @@ public static function updateOrInsert($attributes, $values = []) * @return int * @throws \InvalidArgumentException * @static - */ - public static function incrementEach($columns, $extra = []) + */ public static function incrementEach($columns, $extra = []) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->incrementEach($columns, $extra); } - - /** + /** * Decrement the given column's values by the given amounts. * * @param array $columns @@ -22293,63 +21730,63 @@ public static function incrementEach($columns, $extra = []) * @return int * @throws \InvalidArgumentException * @static - */ - public static function decrementEach($columns, $extra = []) + */ public static function decrementEach($columns, $extra = []) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->decrementEach($columns, $extra); } - - /** + /** * Run a truncate statement on the table. * * @return void * @static - */ - public static function truncate() + */ public static function truncate() { /** @var \Illuminate\Database\Query\Builder $instance */ $instance->truncate(); } - - /** + /** + * Get all of the query builder's columns in a text-only array with all expressions evaluated. + * + * @return array + * @static + */ public static function getColumns() + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->getColumns(); + } + /** * Create a raw database expression. * * @param mixed $value - * @return \Illuminate\Database\Query\Expression + * @return \Illuminate\Contracts\Database\Query\Expression * @static - */ - public static function raw($value) + */ public static function raw($value) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->raw($value); } - - /** + /** * Get the current query value bindings in a flattened array. * * @return array * @static - */ - public static function getBindings() + */ public static function getBindings() { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->getBindings(); } - - /** + /** * Get the raw array of bindings. * * @return array * @static - */ - public static function getRawBindings() + */ public static function getRawBindings() { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->getRawBindings(); } - - /** + /** * Set the bindings on the query builder. * * @param array $bindings @@ -22357,14 +21794,12 @@ public static function getRawBindings() * @return \Illuminate\Database\Query\Builder * @throws \InvalidArgumentException * @static - */ - public static function setBindings($bindings, $type = 'where') + */ public static function setBindings($bindings, $type = 'where') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->setBindings($bindings, $type); } - - /** + /** * Add a binding to the query. * * @param mixed $value @@ -22372,164 +21807,158 @@ public static function setBindings($bindings, $type = 'where') * @return \Illuminate\Database\Query\Builder * @throws \InvalidArgumentException * @static - */ - public static function addBinding($value, $type = 'where') + */ public static function addBinding($value, $type = 'where') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->addBinding($value, $type); } - - /** + /** * Cast the given binding value. * * @param mixed $value * @return mixed * @static - */ - public static function castBinding($value) + */ public static function castBinding($value) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->castBinding($value); } - - /** + /** * Merge an array of bindings into our bindings. * * @param \Illuminate\Database\Query\Builder $query * @return \Illuminate\Database\Query\Builder * @static - */ - public static function mergeBindings($query) + */ public static function mergeBindings($query) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->mergeBindings($query); } - - /** + /** * Remove all of the expressions from a list of bindings. * * @param array $bindings * @return array * @static - */ - public static function cleanBindings($bindings) + */ public static function cleanBindings($bindings) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->cleanBindings($bindings); } - - /** + /** * Get the database query processor instance. * * @return \Illuminate\Database\Query\Processors\Processor * @static - */ - public static function getProcessor() + */ public static function getProcessor() { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->getProcessor(); } - - /** + /** * Get the query grammar instance. * * @return \Illuminate\Database\Query\Grammars\Grammar * @static - */ - public static function getGrammar() + */ public static function getGrammar() { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->getGrammar(); } - - /** + /** * Use the "write" PDO connection when executing the query. * * @return \Illuminate\Database\Query\Builder * @static - */ - public static function useWritePdo() + */ public static function useWritePdo() { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->useWritePdo(); } - - /** + /** * Clone the query without the given properties. * * @param array $properties * @return static * @static - */ - public static function cloneWithout($properties) + */ public static function cloneWithout($properties) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->cloneWithout($properties); } - - /** + /** * Clone the query without the given bindings. * * @param array $except * @return static * @static - */ - public static function cloneWithoutBindings($except) + */ public static function cloneWithoutBindings($except) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->cloneWithoutBindings($except); } - - /** + /** * Dump the current SQL and bindings. * * @return \Illuminate\Database\Query\Builder * @static - */ - public static function dump() + */ public static function dump() { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->dump(); } - - /** + /** + * Dump the raw current SQL with embedded bindings. + * + * @return \Illuminate\Database\Query\Builder + * @static + */ public static function dumpRawSql() + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->dumpRawSql(); + } + /** * Die and dump the current SQL and bindings. * * @return \Illuminate\Database\Query\never * @static - */ - public static function dd() + */ public static function dd() { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->dd(); } - - /** + /** + * Die and dump the current SQL with embedded bindings. + * + * @return \Illuminate\Database\Query\never + * @static + */ public static function ddRawSql() + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->ddRawSql(); + } + /** * Explains the query. * * @return \Illuminate\Support\Collection * @static - */ - public static function explain() + */ public static function explain() { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->explain(); } - - /** + /** * Register a custom macro. * * @param string $name * @param object|callable $macro * @return void * @static - */ - public static function macro($name, $macro) + */ public static function macro($name, $macro) { \Illuminate\Database\Query\Builder::macro($name, $macro); } - - /** + /** * Mix another object into the class. * * @param object $mixin @@ -22537,24 +21966,20 @@ public static function macro($name, $macro) * @return void * @throws \ReflectionException * @static - */ - public static function mixin($mixin, $replace = true) + */ public static function mixin($mixin, $replace = true) { \Illuminate\Database\Query\Builder::mixin($mixin, $replace); } - - /** + /** * Flush the existing macros. * * @return void * @static - */ - public static function flushMacros() + */ public static function flushMacros() { \Illuminate\Database\Query\Builder::flushMacros(); } - - /** + /** * Dynamically handle calls to the class. * * @param string $method @@ -22562,8 +21987,7 @@ public static function flushMacros() * @return mixed * @throws \BadMethodCallException * @static - */ - public static function macroCall($method, $parameters) + */ public static function macroCall($method, $parameters) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->macroCall($method, $parameters); @@ -22579,7 +22003,9 @@ class Lang extends \Illuminate\Support\Facades\Lang {} class Log extends \Illuminate\Support\Facades\Log {} class Mail extends \Illuminate\Support\Facades\Mail {} class Notification extends \Illuminate\Support\Facades\Notification {} + class Number extends \Illuminate\Support\Number {} class Password extends \Illuminate\Support\Facades\Password {} + class Process extends \Illuminate\Support\Facades\Process {} class Queue extends \Illuminate\Support\Facades\Queue {} class RateLimiter extends \Illuminate\Support\Facades\RateLimiter {} class Redirect extends \Illuminate\Support\Facades\Redirect {} @@ -22600,11 +22026,12 @@ class FilePathHelper extends \App\Facades\FilePathHelperFacade {} class InterventionImage extends \Intervention\Image\Facades\Image {} class Transcode extends \App\Facades\TranscodeFacade {} class Transform extends \App\Facades\TransformFacade {} + class Protector extends \Cybex\Protector\ProtectorFacade {} class Image extends \Intervention\Image\Facades\Image {} class Flare extends \Spatie\LaravelIgnition\Facades\Flare {} class ImageOptimizer extends \Spatie\LaravelImageOptimizer\Facades\ImageOptimizer {} - -} + } + diff --git a/app/Console/Commands/DeleteFfmpegTempFolders.php b/app/Console/Commands/DeleteFfmpegTempFolders.php deleted file mode 100644 index 37355558..00000000 --- a/app/Console/Commands/DeleteFfmpegTempFolders.php +++ /dev/null @@ -1,53 +0,0 @@ -directoryShouldBeDeleted($directory)) { - File::deleteDirectory($directory) ? $directoriesDeleted++ : $this->error(sprintf('Could not delete directory "%s".', $directory)); - } - } - - $this->info(sprintf('Deleted %d directories.', $directoriesDeleted)); - - return Command::SUCCESS; - } - - /** - * @param string $directory - * @return bool - */ - public function directoryShouldBeDeleted(string $directory): bool - { - return File::isDirectory($directory) && File::lastModified($directory) <= now()->subDay()->timestamp; - } -} diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index 13664664..87f46b24 100644 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -2,7 +2,6 @@ namespace App\Console; -use App\Console\Commands\DeleteFfmpegTempFolders; use Illuminate\Console\Scheduling\Schedule; use Illuminate\Foundation\Console\Kernel as ConsoleKernel; @@ -16,7 +15,6 @@ class Kernel extends ConsoleKernel */ protected function schedule(Schedule $schedule): void { - $schedule->command(DeleteFfmpegTempFolders::class)->daily(); } /** @@ -26,7 +24,7 @@ protected function schedule(Schedule $schedule): void */ protected function commands(): void { - $this->load(__DIR__.'/Commands'); + $this->load(__DIR__ . '/Commands'); require base_path('routes/console.php'); } diff --git a/app/Jobs/TranscodeVideo.php b/app/Jobs/TranscodeVideo.php index fda42e7b..08ee2a20 100644 --- a/app/Jobs/TranscodeVideo.php +++ b/app/Jobs/TranscodeVideo.php @@ -5,7 +5,6 @@ use App\Enums\MediaStorage; use App\Enums\ResponseState; use App\Enums\StreamingFormat; -use App\Models\Media; use App\Models\UploadSlot; use App\Models\Version; use CdnHelper; @@ -31,17 +30,17 @@ class TranscodeVideo implements ShouldQueue use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; /** - * The number of times the job may be attempted. - * - * @var int - */ + * The number of times the job may be attempted. + * + * @var int + */ public int $tries = 1; /** - * The number of seconds the job can run before timing out. - * - * @var int - */ + * The number of seconds the job can run before timing out. + * + * @var int + */ public int $timeout = 60 * 60 * 3; protected Filesystem $originalsDisk; @@ -51,11 +50,13 @@ class TranscodeVideo implements ShouldQueue protected string $callbackUrl; protected string $uploadToken; - protected string $tempPath; - protected string $tempMp4FileName; - protected string $tempLocalOriginal; - protected string $destinationBasePath; - protected string $fileName; + // Derivatives are saved to a temporary folder first, else race conditions could cause newer versions to be overwritten. + protected string $tempDerivativesDirectoryPath; + // Mp4 needs to be saved locally after transcoding, before being streamed to the configured disk. + protected string $tempMp4Filename; + // Videos stored in the cloud have to be downloaded for transcoding. + protected string $tempOriginalFilename; + protected string $derivativesDestinationPath; protected ResponseState $responseState; @@ -84,23 +85,23 @@ public function __construct( */ public function handle(): void { - // Check if this version is still the current version, also check if the upload slot is still valid. + // Check for newer versions and validity of upload slot. if ($this->isMostRecentVersion()) { $this->originalsDisk = MediaStorage::ORIGINALS->getDisk(); $this->derivativesDisk = MediaStorage::VIDEO_DERIVATIVES->getDisk(); $this->localDisk = Storage::disk('local'); - $this->tempMp4FileName = $this->getTempMp4FileName(); - $this->tempLocalOriginal = $this->getTempLocalOriginal(); + $this->tempMp4Filename = $this->getTempMp4Filename(); + $this->tempOriginalFilename = $this->getTempOriginalFilename(); $this->transcodeVideo(); - - if ($this->responseState === ResponseState::TRANSCODING_SUCCESSFUL) { - Transcode::callback($this->responseState, $this->callbackUrl, $this->uploadToken, $this->version->Media, $this->version->number); - } } else { $this->responseState = ResponseState::TRANSCODING_ABORTED; - $this->failed(null); } + + match ($this->responseState) { + ResponseState::TRANSCODING_SUCCESSFUL => Transcode::callback($this->responseState, $this->callbackUrl, $this->uploadToken, $this->version->Media, $this->version->number), + ResponseState::TRANSCODING_ABORTED => $this->failed(null), + }; } /** @@ -111,13 +112,15 @@ public function handle(): void */ public function failed(?Throwable $exception): void { - // Properties are not initialized here. - $tempPath = FilePathHelper::toTempVideoDerivativesDirectory($this->version); + // All properties have not yet been initialized, because failed jobs use a new instance. + + $tempDerivativesDirectoryPath = FilePathHelper::toTempVideoDerivativesDirectory($this->version); $localDisk = Storage::disk('local'); - MediaStorage::VIDEO_DERIVATIVES->getDisk()->deleteDirectory($tempPath); - $localDisk->delete($this->getTempMp4FileName()); - $localDisk->delete($this->getTempLocalOriginal()); + MediaStorage::VIDEO_DERIVATIVES->getDisk()->deleteDirectory($tempDerivativesDirectoryPath); + $localDisk->delete($this->getTempMp4Filename()); + $localDisk->delete($this->getTempOriginalFilename()); + $localDisk->deleteDirectory($this->getFfmpegTempDirectory()); if (!$this->oldVersionNumber) { MediaStorage::ORIGINALS->getDisk()->delete($this->originalFilePath); @@ -138,22 +141,28 @@ public function failed(?Throwable $exception): void */ protected function transcodeVideo(): void { - $ffmpeg = FFMpeg::create(['timeout' => $this->timeout]); - $video = $this->loadVideo($ffmpeg); + $ffmpeg = FFMpeg::create([ + 'timeout' => $this->timeout, + 'temporary_directory' => $this->localDisk->path($this->getFfmpegTempDirectory()) + ]); + + $video = $this->loadVideo($ffmpeg); - // Set necessary file path information. + // Set the necessary file path information. $this->setFilePaths(); - // Generate MP4. Has to be saved locally first since the php-ffmpeg-video-streaming library only offers cloud support for DASH and HLS. + // Generate MP4. $this->generateMp4($video); // Generate HLS $this->saveVideo(StreamingFormat::HLS->configure($video), StreamingFormat::HLS->value); // Generate DASH $this->saveVideo(StreamingFormat::DASH->configure($video), StreamingFormat::DASH->value); - $this->localDisk->delete($this->tempLocalOriginal); + + $this->localDisk->delete($this->tempOriginalFilename); + $this->localDisk->deleteDirectory($this->getFfmpegTempDirectory()); // Derivatives are generated at this point of time and located in the temporary folder. - $this->moveToDestinationPath(); + $this->moveDerivativesToDestinationPath(); } /** @@ -169,7 +178,7 @@ protected function loadVideo(FFMpeg $ffmpeg): StreamingMedia $ffmpeg->open($this->originalsDisk->path($this->originalFilePath)) : $ffmpeg->openFromCloud( CloudStorage::getOpenConfiguration($this->originalsDisk->path($this->originalFilePath)), - $this->localDisk->path($this->tempLocalOriginal) + $this->localDisk->path($this->tempOriginalFilename) ); } @@ -192,15 +201,15 @@ protected function isLocalFilesystem(Filesystem $disk): bool */ protected function setFilePaths(): void { - $this->destinationBasePath = FilePathHelper::toBaseDirectory($this->version->Media); - $this->tempPath = FilePathHelper::toTempVideoDerivativesDirectory($this->version); + $this->derivativesDestinationPath = FilePathHelper::toBaseDirectory($this->version->Media); + $this->tempDerivativesDirectoryPath = FilePathHelper::toTempVideoDerivativesDirectory($this->version); } /** * Saves the transcoded video to storage. * * @param Streaming $video - * @param string $format + * @param string $format * * @return void */ @@ -211,15 +220,15 @@ protected function saveVideo(Streaming $video, string $format): void $video->save($this->derivativesDisk->path(FilePathHelper::toTempVideoDerivativeFile($this->version, $format))) : $video->save(null, CloudStorage::getSaveConfiguration( - sprintf('%s/%s', $this->derivativesDisk->path($this->tempPath), $format), $this->version->Media->identifier + sprintf('%s/%s', $this->derivativesDisk->path($this->tempDerivativesDirectoryPath), $format), $this->version->Media->identifier ) ); } /** * Generates MP4 video. - * The php-ffmpeg-video-streaming package only offers support for DASH and HLS. - * Therefore, the basic PHP FFmpeg package has to be used which means the mp4 file has to be saved locally first, since saving directly to cloud is not supported. + * The basic PHP-FFmpeg package is used for this, since the php-ffmpeg-video-streaming package only offers support for DASH and HLS. + * Therefore, the mp4 file has to be saved locally first, since saving directly to cloud is not supported. * * @param StreamingMedia $video * @@ -227,15 +236,15 @@ protected function saveVideo(Streaming $video, string $format): void */ protected function generateMp4(StreamingMedia $video): void { - $video->save((new X264())->setAdditionalParameters(config('transmorpher.additional_transcoding_parameters')), $this->localDisk->path($this->tempMp4FileName)); + $video->save((new X264())->setAdditionalParameters(config('transmorpher.additional_transcoding_parameters')), $this->localDisk->path($this->tempMp4Filename)); $derivativePath = FilePathHelper::toTempVideoDerivativeFile($this->version, 'mp4'); $this->derivativesDisk->writeStream( sprintf('%s.%s', $derivativePath, 'mp4'), - $this->localDisk->readStream($this->tempMp4FileName) + $this->localDisk->readStream($this->tempMp4Filename) ); - $this->localDisk->delete($this->tempMp4FileName); + $this->localDisk->delete($this->tempMp4Filename); } /** @@ -243,15 +252,15 @@ protected function generateMp4(StreamingMedia $video): void * * @return void */ - protected function moveToDestinationPath(): void + protected function moveDerivativesToDestinationPath(): void { - // Check if this version is still the current version, also check if the upload slot is still valid. + // Check for newer versions and validity of upload slot. if ($this->isMostRecentVersion()) { // This will make sure we can invalidate the cache before the current derivative gets deleted. - // If this fails, the job will stop and cleanup will be done in the failed() method. + // If this fails, the job will stop and cleanup will be done in the 'failed()'-method. $this->invalidateCdnCache(); - $this->derivativesDisk->deleteDirectory($this->destinationBasePath); + $this->derivativesDisk->deleteDirectory($this->derivativesDestinationPath); $this->moveFromTempDirectory(); // Invalidate the cache again for the newly generated derivative. @@ -261,7 +270,6 @@ protected function moveToDestinationPath(): void $this->responseState = ResponseState::TRANSCODING_SUCCESSFUL; } else { $this->responseState = ResponseState::TRANSCODING_ABORTED; - $this->failed(null); } } @@ -273,7 +281,7 @@ protected function moveToDestinationPath(): void protected function moveFromTempDirectory(): void { if ($this->isLocalFilesystem($this->derivativesDisk)) { - $this->derivativesDisk->move($this->tempPath, $this->destinationBasePath); + $this->derivativesDisk->move($this->tempDerivativesDirectoryPath, $this->derivativesDestinationPath); } else { $this->moveFromCloudTempDirectory(); } @@ -287,8 +295,8 @@ protected function moveFromTempDirectory(): void */ protected function moveFromCloudTempDirectory(): void { - $hlsFiles = $this->derivativesDisk->allFiles(sprintf('%s/%s/', $this->tempPath, StreamingFormat::HLS->value)); - $dashFiles = $this->derivativesDisk->allFiles(sprintf('%s/%s/', $this->tempPath, StreamingFormat::DASH->value)); + $hlsFiles = $this->derivativesDisk->allFiles(sprintf('%s/%s/', $this->tempDerivativesDirectoryPath, StreamingFormat::HLS->value)); + $dashFiles = $this->derivativesDisk->allFiles(sprintf('%s/%s/', $this->tempDerivativesDirectoryPath, StreamingFormat::DASH->value)); foreach ($hlsFiles as $file) { $this->derivativesDisk->move($file, FilePathHelper::toVideoDerivativeFile($this->version->Media, StreamingFormat::HLS->value, basename($file))); @@ -301,8 +309,8 @@ protected function moveFromCloudTempDirectory(): void $tempDerivativePath = FilePathHelper::toTempVideoDerivativeFile($this->version, 'mp4'); // Move MP4 file. $this->derivativesDisk->move( - sprintf('%s.%s', $tempDerivativePath, 'mp4'), - sprintf('%s.%s', FilePathHelper::toVideoDerivativeFile($this->version->Media, 'mp4'), 'mp4') + sprintf('%s.mp4', $tempDerivativePath), + sprintf('%s.mp4', FilePathHelper::toVideoDerivativeFile($this->version->Media, 'mp4')) ); } @@ -315,14 +323,14 @@ protected function invalidateCdnCache(): void { if (CdnHelper::isConfigured()) { // If this fails, the 'failed()'-method will handle the cleanup. - CdnHelper::invalidateMedia($this->version->Media->type, $this->destinationBasePath); + CdnHelper::invalidateMedia($this->version->Media->type, $this->derivativesDestinationPath); } } /** * @return string */ - protected function getTempMp4FileName(): string + protected function getTempMp4Filename(): string { return sprintf('temp-derivative-%s-%s.mp4', $this->version->Media->identifier, $this->version->getKey()); } @@ -330,11 +338,19 @@ protected function getTempMp4FileName(): string /** * @return string */ - protected function getTempLocalOriginal(): string + protected function getTempOriginalFilename(): string { return sprintf('temp-original-%s-%s', $this->version->Media->identifier, $this->version->getKey()); } + /** + * @return string + */ + protected function getFfmpegTempDirectory(): string + { + return sprintf('ffmpeg-temp%s%s-%s', DIRECTORY_SEPARATOR, $this->version->Media->identifier, $this->version->getKey()); + } + /** * @return bool */ diff --git a/app/Models/Media.php b/app/Models/Media.php index dfd49c63..b43244ba 100644 --- a/app/Models/Media.php +++ b/app/Models/Media.php @@ -25,6 +25,7 @@ * @property-read \App\Models\User $User * @property-read \Illuminate\Database\Eloquent\Collection $Versions * @property-read int|null $versions_count + * @property-read \App\Models\Version $current_version * @method static \Illuminate\Database\Eloquent\Builder|Media newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|Media newQuery() * @method static \Illuminate\Database\Eloquent\Builder|Media query() diff --git a/app/Models/UploadSlot.php b/app/Models/UploadSlot.php index 788e2450..aa852daa 100644 --- a/app/Models/UploadSlot.php +++ b/app/Models/UploadSlot.php @@ -24,6 +24,7 @@ * @property \Illuminate\Support\Carbon|null $created_at * @property \Illuminate\Support\Carbon|null $updated_at * @property-read \App\Models\User $User + * @property-read mixed $is_valid * @method static Builder|UploadSlot newModelQuery() * @method static Builder|UploadSlot newQuery() * @method static Builder|UploadSlot query() diff --git a/app/Models/User.php b/app/Models/User.php index c0cfa215..961f071f 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -15,10 +15,11 @@ * @property string $name * @property string $email * @property \Illuminate\Support\Carbon|null $email_verified_at - * @property string $password + * @property mixed $password * @property string|null $remember_token * @property \Illuminate\Support\Carbon|null $created_at * @property \Illuminate\Support\Carbon|null $updated_at + * @property string|null $protector_public_key The sodium public key for the Protector package. * @property-read \Illuminate\Database\Eloquent\Collection $Media * @property-read int|null $media_count * @property-read \Illuminate\Database\Eloquent\Collection $UploadSlots @@ -37,6 +38,7 @@ * @method static \Illuminate\Database\Eloquent\Builder|User whereId($value) * @method static \Illuminate\Database\Eloquent\Builder|User whereName($value) * @method static \Illuminate\Database\Eloquent\Builder|User wherePassword($value) + * @method static \Illuminate\Database\Eloquent\Builder|User whereProtectorPublicKey($value) * @method static \Illuminate\Database\Eloquent\Builder|User whereRememberToken($value) * @method static \Illuminate\Database\Eloquent\Builder|User whereUpdatedAt($value) * @mixin \Eloquent diff --git a/composer.json b/composer.json index 53dddd69..7d3bf9c0 100644 --- a/composer.json +++ b/composer.json @@ -8,7 +8,7 @@ "php": "^8.1", "ext-fileinfo": "*", "ext-sodium": "*", - "aminyazdanpanah/php-ffmpeg-video-streaming": "^1.2", + "aminyazdanpanah/php-ffmpeg-video-streaming": "^1.2.17", "cybex/laravel-protector": "^2.0", "guzzlehttp/guzzle": "^7.2", "intervention/image": "^2.7", diff --git a/composer.lock b/composer.lock index 11a84c26..27540854 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": "e598a947523275a88373598a577cf766", + "content-hash": "db725f510c6414bba2f7f4a84db14cb1", "packages": [ { "name": "aminyazdanpanah/php-ffmpeg-video-streaming", diff --git a/docker/Dockerfile b/docker/Dockerfile index 18f67875..b440d5b6 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -24,7 +24,4 @@ RUN php /var/www/html/artisan storage:link RUN apt update RUN apt install -y imagemagick jpegoptim optipng pngquant gifsicle webp ffmpeg -RUN docker-service-enable cron -RUN docker-cronjob '0 2 * * * application php /var/www/html/artisan ffmpeg:delete-temp' - ENTRYPOINT ["/var/www/html/docker/entryfile.sh"] diff --git a/tests/Unit/DeleteFfmpegFoldersCommandTest.php b/tests/Unit/DeleteFfmpegFoldersCommandTest.php deleted file mode 100644 index 4fd640ba..00000000 --- a/tests/Unit/DeleteFfmpegFoldersCommandTest.php +++ /dev/null @@ -1,64 +0,0 @@ -travelTo(Carbon::create(2000, 01, 01)); - touch($path, Carbon::parse($creationDate)->timestamp); - - $this->assertEquals( - $expectation, - app(DeleteFfmpegTempFolders::class)->directoryShouldBeDeleted($path) - ); - } - - /** - * @test - */ - public function ensureNonExistentPathDoesNotCauseProblems() - { - $this->assertEquals( - false, - app(DeleteFfmpegTempFolders::class)->directoryShouldBeDeleted(base_path('tests/data/ffmpeg-folders/ffmpeg-passes_nonExistent')) - ); - } - - public static function folderDataProvider(): array - { - return [ - 'directoryOlderThanADay' => [ - 'directory' => 'ffmpeg-passes_directoryOlderThanADay', - 'creationDate' => '1999-12-31', - 'expectation' => true - ], - 'directoryYoungerThanADay' => [ - 'directory' => 'ffmpeg-passes_directoryYoungerThanADay', - 'creationDate' => '2000-01-01', - 'expectation' => false - ], - 'fileOlderThanADay' => [ - 'directory' => 'ffmpeg-passes_fileOlderThanADay', - 'creationDate' => '2000-01-01', - 'expectation' => false - ], - 'fileYoungerThanADay' => [ - 'directory' => 'ffmpeg-passes_fileYoungerThanADay', - 'creationDate' => '2000-01-01', - 'expectation' => false - ], - ]; - } -} From 6b44b22b54295407c3baf39f29e39eb83da700de Mon Sep 17 00:00:00 2001 From: mszulik <69617961+mszulik@users.noreply.github.com> Date: Wed, 3 Apr 2024 08:51:01 +0200 Subject: [PATCH 04/15] fix docker worker issues (#42) --- docker/Dockerfile | 2 +- docker/workers.conf | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index b440d5b6..26be30a1 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -22,6 +22,6 @@ RUN chown -R application:application /var/www/html/storage RUN php /var/www/html/artisan storage:link RUN apt update -RUN apt install -y imagemagick jpegoptim optipng pngquant gifsicle webp ffmpeg +RUN apt install -y default-mysql-client imagemagick jpegoptim optipng pngquant gifsicle webp ffmpeg ENTRYPOINT ["/var/www/html/docker/entryfile.sh"] diff --git a/docker/workers.conf b/docker/workers.conf index d3b47bad..69b87f64 100644 --- a/docker/workers.conf +++ b/docker/workers.conf @@ -1,5 +1,8 @@ [program:video-transcoding-worker] process_name=%(program_name)s_%(process_num)02d +; Supervisor starts programs as root by default, which might lead to permission problems when the webserver tries to access files or similar. +user=application +environment=HOME="/home/application",USER="application" command=php /var/www/html/artisan queue:work --queue=video-transcoding autostart=true autorestart=true @@ -8,4 +11,5 @@ killasgroup=true numprocs=%(ENV_VIDEO_TRANSCODING_WORKERS_AMOUNT)s redirect_stderr=true stdout_logfile=/dev/stdout -stopwaitsecs=10801 +; Timeout of the longest running job (video transcoding with 10800) plus 30. +stopwaitsecs=10830 From 8ad86b1f4976fd85da681c725b57b6b3d5918cb2 Mon Sep 17 00:00:00 2001 From: mszulik <69617961+mszulik@users.noreply.github.com> Date: Thu, 4 Apr 2024 12:26:23 +0200 Subject: [PATCH 05/15] update to laravel 11 (#43) --- .env.example | 3 +- .env.testing | 2 +- .github/workflows/tests.yml | 4 +- .phpstorm.meta.php | 132 ++- _ide_helper.php | 1031 +++++++++++++---- app/Http/Controllers/Controller.php | 8 +- app/Models/Media.php | 13 +- app/Models/UploadSlot.php | 13 +- app/Models/User.php | 15 +- artisan | 50 +- bootstrap/app.php | 69 +- composer.json | 24 +- composer.lock | 1564 ++++++++++++++------------ config/app.php | 40 +- config/auth.php | 34 +- config/cache.php | 22 +- config/database.php | 74 +- config/filesystems.php | 8 +- config/logging.php | 27 +- config/mail.php | 28 +- config/queue.php | 37 +- config/sanctum.php | 4 +- config/services.php | 7 + config/session.php | 59 +- docker-compose.pullpreview.yml | 4 + docker-compose.yml | 8 +- docker/8.1/Dockerfile | 66 -- docker/8.1/php.ini | 4 - docker/8.1/start-container | 17 - docker/8.1/supervisord.conf | 14 - docker/8.2/Dockerfile | 39 +- docker/8.2/php.ini | 4 + docker/8.2/start-container | 11 +- docker/8.2/supervisord.conf | 4 +- package.json | 4 +- public/index.php | 11 +- tests/CreatesApplication.php | 23 - tests/TestCase.php | 1 - tests/Unit/CreateUserCommandTest.php | 28 +- tests/Unit/ImageTest.php | 43 +- tests/Unit/VideoTest.php | 12 +- 41 files changed, 2105 insertions(+), 1456 deletions(-) delete mode 100644 docker/8.1/Dockerfile delete mode 100644 docker/8.1/php.ini delete mode 100644 docker/8.1/start-container delete mode 100644 docker/8.1/supervisord.conf delete mode 100644 tests/CreatesApplication.php diff --git a/.env.example b/.env.example index 110e0715..5a87eeb1 100644 --- a/.env.example +++ b/.env.example @@ -7,7 +7,7 @@ APP_URL=http://transmorpher.test # Docker APP_SERVICE=app DOCKER_CONTAINER_NAME=transmorpher -#DOCKER_PHP_VERSION=8.1 +#DOCKER_PHP_VERSION=8.2 # Use different DB ports if you need to expose more than one DB container #FORWARD_DB_PORT=3306 @@ -53,6 +53,7 @@ BROADCAST_DRIVER=log CACHE_DRIVER=file FILESYSTEM_DISK=local QUEUE_CONNECTION=database +DB_QUEUE_CONNECTION=mysql SESSION_DRIVER=file SESSION_LIFETIME=120 diff --git a/.env.testing b/.env.testing index 38ea950a..abd407a9 100644 --- a/.env.testing +++ b/.env.testing @@ -7,7 +7,7 @@ APP_URL=http://transmorpher.test # Docker APP_SERVICE=app DOCKER_CONTAINER_NAME=transmorpher -#DOCKER_PHP_VERSION=8.1 +#DOCKER_PHP_VERSION=8.2 # Use different DB ports if you need to expose more than one DB container #FORWARD_DB_PORT=3306 diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index ce69600d..b5ed79b6 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -23,8 +23,8 @@ jobs: strategy: fail-fast: true matrix: - php: [ 8.1, 8.2 ] - laravel: [ 10.* ] + php: [ 8.2, 8.3 ] + laravel: [ 11.* ] dependency-version: [ prefer-stable ] name: PHP ${{ matrix.php }} with Laravel ${{ matrix.laravel }} (${{ matrix.dependency-version }}) diff --git a/.phpstorm.meta.php b/.phpstorm.meta.php index 944410c7..7fea47aa 100644 --- a/.phpstorm.meta.php +++ b/.phpstorm.meta.php @@ -34,11 +34,11 @@ 'Illuminate\Console\Scheduling\ScheduleWorkCommand' => \Illuminate\Console\Scheduling\ScheduleWorkCommand::class, 'Illuminate\Contracts\Auth\Access\Gate' => \Illuminate\Auth\Access\Gate::class, 'Illuminate\Contracts\Broadcasting\Broadcaster' => \Illuminate\Broadcasting\Broadcasters\LogBroadcaster::class, - 'Illuminate\Contracts\Console\Kernel' => \App\Console\Kernel::class, + 'Illuminate\Contracts\Console\Kernel' => \Illuminate\Foundation\Console\Kernel::class, 'Illuminate\Contracts\Debug\ExceptionHandler' => \NunoMaduro\Collision\Adapters\Laravel\ExceptionHandler::class, 'Illuminate\Contracts\Foundation\ExceptionRenderer' => \Spatie\LaravelIgnition\Renderers\IgnitionExceptionRenderer::class, 'Illuminate\Contracts\Foundation\MaintenanceMode' => \Illuminate\Foundation\FileBasedMaintenanceMode::class, - 'Illuminate\Contracts\Http\Kernel' => \App\Http\Kernel::class, + 'Illuminate\Contracts\Http\Kernel' => \Illuminate\Foundation\Http\Kernel::class, 'Illuminate\Contracts\Pipeline\Hub' => \Illuminate\Pipeline\Hub::class, 'Illuminate\Contracts\Queue\EntityResolver' => \Illuminate\Database\Eloquent\QueueEntityResolver::class, 'Illuminate\Contracts\Routing\ResponseFactory' => \Illuminate\Routing\ResponseFactory::class, @@ -63,17 +63,22 @@ 'Illuminate\Database\Console\TableCommand' => \Illuminate\Database\Console\TableCommand::class, 'Illuminate\Database\Console\WipeCommand' => \Illuminate\Database\Console\WipeCommand::class, 'Illuminate\Foundation\Console\AboutCommand' => \Illuminate\Foundation\Console\AboutCommand::class, + 'Illuminate\Foundation\Console\ApiInstallCommand' => \Illuminate\Foundation\Console\ApiInstallCommand::class, + 'Illuminate\Foundation\Console\BroadcastingInstallCommand' => \Illuminate\Foundation\Console\BroadcastingInstallCommand::class, 'Illuminate\Foundation\Console\CastMakeCommand' => \Illuminate\Foundation\Console\CastMakeCommand::class, 'Illuminate\Foundation\Console\ChannelListCommand' => \Illuminate\Foundation\Console\ChannelListCommand::class, 'Illuminate\Foundation\Console\ChannelMakeCommand' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, + 'Illuminate\Foundation\Console\ClassMakeCommand' => \Illuminate\Foundation\Console\ClassMakeCommand::class, 'Illuminate\Foundation\Console\ClearCompiledCommand' => \Illuminate\Foundation\Console\ClearCompiledCommand::class, 'Illuminate\Foundation\Console\ComponentMakeCommand' => \Illuminate\Foundation\Console\ComponentMakeCommand::class, 'Illuminate\Foundation\Console\ConfigCacheCommand' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, 'Illuminate\Foundation\Console\ConfigClearCommand' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'Illuminate\Foundation\Console\ConfigPublishCommand' => \Illuminate\Foundation\Console\ConfigPublishCommand::class, 'Illuminate\Foundation\Console\ConfigShowCommand' => \Illuminate\Foundation\Console\ConfigShowCommand::class, 'Illuminate\Foundation\Console\ConsoleMakeCommand' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, 'Illuminate\Foundation\Console\DocsCommand' => \Illuminate\Foundation\Console\DocsCommand::class, 'Illuminate\Foundation\Console\DownCommand' => \Illuminate\Foundation\Console\DownCommand::class, + 'Illuminate\Foundation\Console\EnumMakeCommand' => \Illuminate\Foundation\Console\EnumMakeCommand::class, 'Illuminate\Foundation\Console\EnvironmentCommand' => \Illuminate\Foundation\Console\EnvironmentCommand::class, 'Illuminate\Foundation\Console\EnvironmentDecryptCommand' => \Illuminate\Foundation\Console\EnvironmentDecryptCommand::class, 'Illuminate\Foundation\Console\EnvironmentEncryptCommand' => \Illuminate\Foundation\Console\EnvironmentEncryptCommand::class, @@ -83,6 +88,7 @@ 'Illuminate\Foundation\Console\EventListCommand' => \Illuminate\Foundation\Console\EventListCommand::class, 'Illuminate\Foundation\Console\EventMakeCommand' => \Illuminate\Foundation\Console\EventMakeCommand::class, 'Illuminate\Foundation\Console\ExceptionMakeCommand' => \Illuminate\Foundation\Console\ExceptionMakeCommand::class, + 'Illuminate\Foundation\Console\InterfaceMakeCommand' => \Illuminate\Foundation\Console\InterfaceMakeCommand::class, 'Illuminate\Foundation\Console\JobMakeCommand' => \Illuminate\Foundation\Console\JobMakeCommand::class, 'Illuminate\Foundation\Console\KeyGenerateCommand' => \Illuminate\Foundation\Console\KeyGenerateCommand::class, 'Illuminate\Foundation\Console\LangPublishCommand' => \Illuminate\Foundation\Console\LangPublishCommand::class, @@ -108,6 +114,7 @@ 'Illuminate\Foundation\Console\StorageUnlinkCommand' => \Illuminate\Foundation\Console\StorageUnlinkCommand::class, 'Illuminate\Foundation\Console\StubPublishCommand' => \Illuminate\Foundation\Console\StubPublishCommand::class, 'Illuminate\Foundation\Console\TestMakeCommand' => \Illuminate\Foundation\Console\TestMakeCommand::class, + 'Illuminate\Foundation\Console\TraitMakeCommand' => \Illuminate\Foundation\Console\TraitMakeCommand::class, 'Illuminate\Foundation\Console\UpCommand' => \Illuminate\Foundation\Console\UpCommand::class, 'Illuminate\Foundation\Console\VendorPublishCommand' => \Illuminate\Foundation\Console\VendorPublishCommand::class, 'Illuminate\Foundation\Console\ViewCacheCommand' => \Illuminate\Foundation\Console\ViewCacheCommand::class, @@ -118,6 +125,7 @@ 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, 'Illuminate\Foundation\Vite' => \Illuminate\Foundation\Vite::class, 'Illuminate\Http\Client\Factory' => \Illuminate\Http\Client\Factory::class, + 'Illuminate\Log\Context\Repository' => \Illuminate\Log\Context\Repository::class, 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, 'Illuminate\Notifications\Console\NotificationTableCommand' => \Illuminate\Notifications\Console\NotificationTableCommand::class, @@ -245,11 +253,11 @@ 'Illuminate\Console\Scheduling\ScheduleWorkCommand' => \Illuminate\Console\Scheduling\ScheduleWorkCommand::class, 'Illuminate\Contracts\Auth\Access\Gate' => \Illuminate\Auth\Access\Gate::class, 'Illuminate\Contracts\Broadcasting\Broadcaster' => \Illuminate\Broadcasting\Broadcasters\LogBroadcaster::class, - 'Illuminate\Contracts\Console\Kernel' => \App\Console\Kernel::class, + 'Illuminate\Contracts\Console\Kernel' => \Illuminate\Foundation\Console\Kernel::class, 'Illuminate\Contracts\Debug\ExceptionHandler' => \NunoMaduro\Collision\Adapters\Laravel\ExceptionHandler::class, 'Illuminate\Contracts\Foundation\ExceptionRenderer' => \Spatie\LaravelIgnition\Renderers\IgnitionExceptionRenderer::class, 'Illuminate\Contracts\Foundation\MaintenanceMode' => \Illuminate\Foundation\FileBasedMaintenanceMode::class, - 'Illuminate\Contracts\Http\Kernel' => \App\Http\Kernel::class, + 'Illuminate\Contracts\Http\Kernel' => \Illuminate\Foundation\Http\Kernel::class, 'Illuminate\Contracts\Pipeline\Hub' => \Illuminate\Pipeline\Hub::class, 'Illuminate\Contracts\Queue\EntityResolver' => \Illuminate\Database\Eloquent\QueueEntityResolver::class, 'Illuminate\Contracts\Routing\ResponseFactory' => \Illuminate\Routing\ResponseFactory::class, @@ -274,17 +282,22 @@ 'Illuminate\Database\Console\TableCommand' => \Illuminate\Database\Console\TableCommand::class, 'Illuminate\Database\Console\WipeCommand' => \Illuminate\Database\Console\WipeCommand::class, 'Illuminate\Foundation\Console\AboutCommand' => \Illuminate\Foundation\Console\AboutCommand::class, + 'Illuminate\Foundation\Console\ApiInstallCommand' => \Illuminate\Foundation\Console\ApiInstallCommand::class, + 'Illuminate\Foundation\Console\BroadcastingInstallCommand' => \Illuminate\Foundation\Console\BroadcastingInstallCommand::class, 'Illuminate\Foundation\Console\CastMakeCommand' => \Illuminate\Foundation\Console\CastMakeCommand::class, 'Illuminate\Foundation\Console\ChannelListCommand' => \Illuminate\Foundation\Console\ChannelListCommand::class, 'Illuminate\Foundation\Console\ChannelMakeCommand' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, + 'Illuminate\Foundation\Console\ClassMakeCommand' => \Illuminate\Foundation\Console\ClassMakeCommand::class, 'Illuminate\Foundation\Console\ClearCompiledCommand' => \Illuminate\Foundation\Console\ClearCompiledCommand::class, 'Illuminate\Foundation\Console\ComponentMakeCommand' => \Illuminate\Foundation\Console\ComponentMakeCommand::class, 'Illuminate\Foundation\Console\ConfigCacheCommand' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, 'Illuminate\Foundation\Console\ConfigClearCommand' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'Illuminate\Foundation\Console\ConfigPublishCommand' => \Illuminate\Foundation\Console\ConfigPublishCommand::class, 'Illuminate\Foundation\Console\ConfigShowCommand' => \Illuminate\Foundation\Console\ConfigShowCommand::class, 'Illuminate\Foundation\Console\ConsoleMakeCommand' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, 'Illuminate\Foundation\Console\DocsCommand' => \Illuminate\Foundation\Console\DocsCommand::class, 'Illuminate\Foundation\Console\DownCommand' => \Illuminate\Foundation\Console\DownCommand::class, + 'Illuminate\Foundation\Console\EnumMakeCommand' => \Illuminate\Foundation\Console\EnumMakeCommand::class, 'Illuminate\Foundation\Console\EnvironmentCommand' => \Illuminate\Foundation\Console\EnvironmentCommand::class, 'Illuminate\Foundation\Console\EnvironmentDecryptCommand' => \Illuminate\Foundation\Console\EnvironmentDecryptCommand::class, 'Illuminate\Foundation\Console\EnvironmentEncryptCommand' => \Illuminate\Foundation\Console\EnvironmentEncryptCommand::class, @@ -294,6 +307,7 @@ 'Illuminate\Foundation\Console\EventListCommand' => \Illuminate\Foundation\Console\EventListCommand::class, 'Illuminate\Foundation\Console\EventMakeCommand' => \Illuminate\Foundation\Console\EventMakeCommand::class, 'Illuminate\Foundation\Console\ExceptionMakeCommand' => \Illuminate\Foundation\Console\ExceptionMakeCommand::class, + 'Illuminate\Foundation\Console\InterfaceMakeCommand' => \Illuminate\Foundation\Console\InterfaceMakeCommand::class, 'Illuminate\Foundation\Console\JobMakeCommand' => \Illuminate\Foundation\Console\JobMakeCommand::class, 'Illuminate\Foundation\Console\KeyGenerateCommand' => \Illuminate\Foundation\Console\KeyGenerateCommand::class, 'Illuminate\Foundation\Console\LangPublishCommand' => \Illuminate\Foundation\Console\LangPublishCommand::class, @@ -319,6 +333,7 @@ 'Illuminate\Foundation\Console\StorageUnlinkCommand' => \Illuminate\Foundation\Console\StorageUnlinkCommand::class, 'Illuminate\Foundation\Console\StubPublishCommand' => \Illuminate\Foundation\Console\StubPublishCommand::class, 'Illuminate\Foundation\Console\TestMakeCommand' => \Illuminate\Foundation\Console\TestMakeCommand::class, + 'Illuminate\Foundation\Console\TraitMakeCommand' => \Illuminate\Foundation\Console\TraitMakeCommand::class, 'Illuminate\Foundation\Console\UpCommand' => \Illuminate\Foundation\Console\UpCommand::class, 'Illuminate\Foundation\Console\VendorPublishCommand' => \Illuminate\Foundation\Console\VendorPublishCommand::class, 'Illuminate\Foundation\Console\ViewCacheCommand' => \Illuminate\Foundation\Console\ViewCacheCommand::class, @@ -329,6 +344,7 @@ 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, 'Illuminate\Foundation\Vite' => \Illuminate\Foundation\Vite::class, 'Illuminate\Http\Client\Factory' => \Illuminate\Http\Client\Factory::class, + 'Illuminate\Log\Context\Repository' => \Illuminate\Log\Context\Repository::class, 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, 'Illuminate\Notifications\Console\NotificationTableCommand' => \Illuminate\Notifications\Console\NotificationTableCommand::class, @@ -456,11 +472,11 @@ 'Illuminate\Console\Scheduling\ScheduleWorkCommand' => \Illuminate\Console\Scheduling\ScheduleWorkCommand::class, 'Illuminate\Contracts\Auth\Access\Gate' => \Illuminate\Auth\Access\Gate::class, 'Illuminate\Contracts\Broadcasting\Broadcaster' => \Illuminate\Broadcasting\Broadcasters\LogBroadcaster::class, - 'Illuminate\Contracts\Console\Kernel' => \App\Console\Kernel::class, + 'Illuminate\Contracts\Console\Kernel' => \Illuminate\Foundation\Console\Kernel::class, 'Illuminate\Contracts\Debug\ExceptionHandler' => \NunoMaduro\Collision\Adapters\Laravel\ExceptionHandler::class, 'Illuminate\Contracts\Foundation\ExceptionRenderer' => \Spatie\LaravelIgnition\Renderers\IgnitionExceptionRenderer::class, 'Illuminate\Contracts\Foundation\MaintenanceMode' => \Illuminate\Foundation\FileBasedMaintenanceMode::class, - 'Illuminate\Contracts\Http\Kernel' => \App\Http\Kernel::class, + 'Illuminate\Contracts\Http\Kernel' => \Illuminate\Foundation\Http\Kernel::class, 'Illuminate\Contracts\Pipeline\Hub' => \Illuminate\Pipeline\Hub::class, 'Illuminate\Contracts\Queue\EntityResolver' => \Illuminate\Database\Eloquent\QueueEntityResolver::class, 'Illuminate\Contracts\Routing\ResponseFactory' => \Illuminate\Routing\ResponseFactory::class, @@ -485,17 +501,22 @@ 'Illuminate\Database\Console\TableCommand' => \Illuminate\Database\Console\TableCommand::class, 'Illuminate\Database\Console\WipeCommand' => \Illuminate\Database\Console\WipeCommand::class, 'Illuminate\Foundation\Console\AboutCommand' => \Illuminate\Foundation\Console\AboutCommand::class, + 'Illuminate\Foundation\Console\ApiInstallCommand' => \Illuminate\Foundation\Console\ApiInstallCommand::class, + 'Illuminate\Foundation\Console\BroadcastingInstallCommand' => \Illuminate\Foundation\Console\BroadcastingInstallCommand::class, 'Illuminate\Foundation\Console\CastMakeCommand' => \Illuminate\Foundation\Console\CastMakeCommand::class, 'Illuminate\Foundation\Console\ChannelListCommand' => \Illuminate\Foundation\Console\ChannelListCommand::class, 'Illuminate\Foundation\Console\ChannelMakeCommand' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, + 'Illuminate\Foundation\Console\ClassMakeCommand' => \Illuminate\Foundation\Console\ClassMakeCommand::class, 'Illuminate\Foundation\Console\ClearCompiledCommand' => \Illuminate\Foundation\Console\ClearCompiledCommand::class, 'Illuminate\Foundation\Console\ComponentMakeCommand' => \Illuminate\Foundation\Console\ComponentMakeCommand::class, 'Illuminate\Foundation\Console\ConfigCacheCommand' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, 'Illuminate\Foundation\Console\ConfigClearCommand' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'Illuminate\Foundation\Console\ConfigPublishCommand' => \Illuminate\Foundation\Console\ConfigPublishCommand::class, 'Illuminate\Foundation\Console\ConfigShowCommand' => \Illuminate\Foundation\Console\ConfigShowCommand::class, 'Illuminate\Foundation\Console\ConsoleMakeCommand' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, 'Illuminate\Foundation\Console\DocsCommand' => \Illuminate\Foundation\Console\DocsCommand::class, 'Illuminate\Foundation\Console\DownCommand' => \Illuminate\Foundation\Console\DownCommand::class, + 'Illuminate\Foundation\Console\EnumMakeCommand' => \Illuminate\Foundation\Console\EnumMakeCommand::class, 'Illuminate\Foundation\Console\EnvironmentCommand' => \Illuminate\Foundation\Console\EnvironmentCommand::class, 'Illuminate\Foundation\Console\EnvironmentDecryptCommand' => \Illuminate\Foundation\Console\EnvironmentDecryptCommand::class, 'Illuminate\Foundation\Console\EnvironmentEncryptCommand' => \Illuminate\Foundation\Console\EnvironmentEncryptCommand::class, @@ -505,6 +526,7 @@ 'Illuminate\Foundation\Console\EventListCommand' => \Illuminate\Foundation\Console\EventListCommand::class, 'Illuminate\Foundation\Console\EventMakeCommand' => \Illuminate\Foundation\Console\EventMakeCommand::class, 'Illuminate\Foundation\Console\ExceptionMakeCommand' => \Illuminate\Foundation\Console\ExceptionMakeCommand::class, + 'Illuminate\Foundation\Console\InterfaceMakeCommand' => \Illuminate\Foundation\Console\InterfaceMakeCommand::class, 'Illuminate\Foundation\Console\JobMakeCommand' => \Illuminate\Foundation\Console\JobMakeCommand::class, 'Illuminate\Foundation\Console\KeyGenerateCommand' => \Illuminate\Foundation\Console\KeyGenerateCommand::class, 'Illuminate\Foundation\Console\LangPublishCommand' => \Illuminate\Foundation\Console\LangPublishCommand::class, @@ -530,6 +552,7 @@ 'Illuminate\Foundation\Console\StorageUnlinkCommand' => \Illuminate\Foundation\Console\StorageUnlinkCommand::class, 'Illuminate\Foundation\Console\StubPublishCommand' => \Illuminate\Foundation\Console\StubPublishCommand::class, 'Illuminate\Foundation\Console\TestMakeCommand' => \Illuminate\Foundation\Console\TestMakeCommand::class, + 'Illuminate\Foundation\Console\TraitMakeCommand' => \Illuminate\Foundation\Console\TraitMakeCommand::class, 'Illuminate\Foundation\Console\UpCommand' => \Illuminate\Foundation\Console\UpCommand::class, 'Illuminate\Foundation\Console\VendorPublishCommand' => \Illuminate\Foundation\Console\VendorPublishCommand::class, 'Illuminate\Foundation\Console\ViewCacheCommand' => \Illuminate\Foundation\Console\ViewCacheCommand::class, @@ -540,6 +563,7 @@ 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, 'Illuminate\Foundation\Vite' => \Illuminate\Foundation\Vite::class, 'Illuminate\Http\Client\Factory' => \Illuminate\Http\Client\Factory::class, + 'Illuminate\Log\Context\Repository' => \Illuminate\Log\Context\Repository::class, 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, 'Illuminate\Notifications\Console\NotificationTableCommand' => \Illuminate\Notifications\Console\NotificationTableCommand::class, @@ -667,11 +691,11 @@ 'Illuminate\Console\Scheduling\ScheduleWorkCommand' => \Illuminate\Console\Scheduling\ScheduleWorkCommand::class, 'Illuminate\Contracts\Auth\Access\Gate' => \Illuminate\Auth\Access\Gate::class, 'Illuminate\Contracts\Broadcasting\Broadcaster' => \Illuminate\Broadcasting\Broadcasters\LogBroadcaster::class, - 'Illuminate\Contracts\Console\Kernel' => \App\Console\Kernel::class, + 'Illuminate\Contracts\Console\Kernel' => \Illuminate\Foundation\Console\Kernel::class, 'Illuminate\Contracts\Debug\ExceptionHandler' => \NunoMaduro\Collision\Adapters\Laravel\ExceptionHandler::class, 'Illuminate\Contracts\Foundation\ExceptionRenderer' => \Spatie\LaravelIgnition\Renderers\IgnitionExceptionRenderer::class, 'Illuminate\Contracts\Foundation\MaintenanceMode' => \Illuminate\Foundation\FileBasedMaintenanceMode::class, - 'Illuminate\Contracts\Http\Kernel' => \App\Http\Kernel::class, + 'Illuminate\Contracts\Http\Kernel' => \Illuminate\Foundation\Http\Kernel::class, 'Illuminate\Contracts\Pipeline\Hub' => \Illuminate\Pipeline\Hub::class, 'Illuminate\Contracts\Queue\EntityResolver' => \Illuminate\Database\Eloquent\QueueEntityResolver::class, 'Illuminate\Contracts\Routing\ResponseFactory' => \Illuminate\Routing\ResponseFactory::class, @@ -696,17 +720,22 @@ 'Illuminate\Database\Console\TableCommand' => \Illuminate\Database\Console\TableCommand::class, 'Illuminate\Database\Console\WipeCommand' => \Illuminate\Database\Console\WipeCommand::class, 'Illuminate\Foundation\Console\AboutCommand' => \Illuminate\Foundation\Console\AboutCommand::class, + 'Illuminate\Foundation\Console\ApiInstallCommand' => \Illuminate\Foundation\Console\ApiInstallCommand::class, + 'Illuminate\Foundation\Console\BroadcastingInstallCommand' => \Illuminate\Foundation\Console\BroadcastingInstallCommand::class, 'Illuminate\Foundation\Console\CastMakeCommand' => \Illuminate\Foundation\Console\CastMakeCommand::class, 'Illuminate\Foundation\Console\ChannelListCommand' => \Illuminate\Foundation\Console\ChannelListCommand::class, 'Illuminate\Foundation\Console\ChannelMakeCommand' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, + 'Illuminate\Foundation\Console\ClassMakeCommand' => \Illuminate\Foundation\Console\ClassMakeCommand::class, 'Illuminate\Foundation\Console\ClearCompiledCommand' => \Illuminate\Foundation\Console\ClearCompiledCommand::class, 'Illuminate\Foundation\Console\ComponentMakeCommand' => \Illuminate\Foundation\Console\ComponentMakeCommand::class, 'Illuminate\Foundation\Console\ConfigCacheCommand' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, 'Illuminate\Foundation\Console\ConfigClearCommand' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'Illuminate\Foundation\Console\ConfigPublishCommand' => \Illuminate\Foundation\Console\ConfigPublishCommand::class, 'Illuminate\Foundation\Console\ConfigShowCommand' => \Illuminate\Foundation\Console\ConfigShowCommand::class, 'Illuminate\Foundation\Console\ConsoleMakeCommand' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, 'Illuminate\Foundation\Console\DocsCommand' => \Illuminate\Foundation\Console\DocsCommand::class, 'Illuminate\Foundation\Console\DownCommand' => \Illuminate\Foundation\Console\DownCommand::class, + 'Illuminate\Foundation\Console\EnumMakeCommand' => \Illuminate\Foundation\Console\EnumMakeCommand::class, 'Illuminate\Foundation\Console\EnvironmentCommand' => \Illuminate\Foundation\Console\EnvironmentCommand::class, 'Illuminate\Foundation\Console\EnvironmentDecryptCommand' => \Illuminate\Foundation\Console\EnvironmentDecryptCommand::class, 'Illuminate\Foundation\Console\EnvironmentEncryptCommand' => \Illuminate\Foundation\Console\EnvironmentEncryptCommand::class, @@ -716,6 +745,7 @@ 'Illuminate\Foundation\Console\EventListCommand' => \Illuminate\Foundation\Console\EventListCommand::class, 'Illuminate\Foundation\Console\EventMakeCommand' => \Illuminate\Foundation\Console\EventMakeCommand::class, 'Illuminate\Foundation\Console\ExceptionMakeCommand' => \Illuminate\Foundation\Console\ExceptionMakeCommand::class, + 'Illuminate\Foundation\Console\InterfaceMakeCommand' => \Illuminate\Foundation\Console\InterfaceMakeCommand::class, 'Illuminate\Foundation\Console\JobMakeCommand' => \Illuminate\Foundation\Console\JobMakeCommand::class, 'Illuminate\Foundation\Console\KeyGenerateCommand' => \Illuminate\Foundation\Console\KeyGenerateCommand::class, 'Illuminate\Foundation\Console\LangPublishCommand' => \Illuminate\Foundation\Console\LangPublishCommand::class, @@ -741,6 +771,7 @@ 'Illuminate\Foundation\Console\StorageUnlinkCommand' => \Illuminate\Foundation\Console\StorageUnlinkCommand::class, 'Illuminate\Foundation\Console\StubPublishCommand' => \Illuminate\Foundation\Console\StubPublishCommand::class, 'Illuminate\Foundation\Console\TestMakeCommand' => \Illuminate\Foundation\Console\TestMakeCommand::class, + 'Illuminate\Foundation\Console\TraitMakeCommand' => \Illuminate\Foundation\Console\TraitMakeCommand::class, 'Illuminate\Foundation\Console\UpCommand' => \Illuminate\Foundation\Console\UpCommand::class, 'Illuminate\Foundation\Console\VendorPublishCommand' => \Illuminate\Foundation\Console\VendorPublishCommand::class, 'Illuminate\Foundation\Console\ViewCacheCommand' => \Illuminate\Foundation\Console\ViewCacheCommand::class, @@ -751,6 +782,7 @@ 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, 'Illuminate\Foundation\Vite' => \Illuminate\Foundation\Vite::class, 'Illuminate\Http\Client\Factory' => \Illuminate\Http\Client\Factory::class, + 'Illuminate\Log\Context\Repository' => \Illuminate\Log\Context\Repository::class, 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, 'Illuminate\Notifications\Console\NotificationTableCommand' => \Illuminate\Notifications\Console\NotificationTableCommand::class, @@ -878,11 +910,11 @@ 'Illuminate\Console\Scheduling\ScheduleWorkCommand' => \Illuminate\Console\Scheduling\ScheduleWorkCommand::class, 'Illuminate\Contracts\Auth\Access\Gate' => \Illuminate\Auth\Access\Gate::class, 'Illuminate\Contracts\Broadcasting\Broadcaster' => \Illuminate\Broadcasting\Broadcasters\LogBroadcaster::class, - 'Illuminate\Contracts\Console\Kernel' => \App\Console\Kernel::class, + 'Illuminate\Contracts\Console\Kernel' => \Illuminate\Foundation\Console\Kernel::class, 'Illuminate\Contracts\Debug\ExceptionHandler' => \NunoMaduro\Collision\Adapters\Laravel\ExceptionHandler::class, 'Illuminate\Contracts\Foundation\ExceptionRenderer' => \Spatie\LaravelIgnition\Renderers\IgnitionExceptionRenderer::class, 'Illuminate\Contracts\Foundation\MaintenanceMode' => \Illuminate\Foundation\FileBasedMaintenanceMode::class, - 'Illuminate\Contracts\Http\Kernel' => \App\Http\Kernel::class, + 'Illuminate\Contracts\Http\Kernel' => \Illuminate\Foundation\Http\Kernel::class, 'Illuminate\Contracts\Pipeline\Hub' => \Illuminate\Pipeline\Hub::class, 'Illuminate\Contracts\Queue\EntityResolver' => \Illuminate\Database\Eloquent\QueueEntityResolver::class, 'Illuminate\Contracts\Routing\ResponseFactory' => \Illuminate\Routing\ResponseFactory::class, @@ -907,17 +939,22 @@ 'Illuminate\Database\Console\TableCommand' => \Illuminate\Database\Console\TableCommand::class, 'Illuminate\Database\Console\WipeCommand' => \Illuminate\Database\Console\WipeCommand::class, 'Illuminate\Foundation\Console\AboutCommand' => \Illuminate\Foundation\Console\AboutCommand::class, + 'Illuminate\Foundation\Console\ApiInstallCommand' => \Illuminate\Foundation\Console\ApiInstallCommand::class, + 'Illuminate\Foundation\Console\BroadcastingInstallCommand' => \Illuminate\Foundation\Console\BroadcastingInstallCommand::class, 'Illuminate\Foundation\Console\CastMakeCommand' => \Illuminate\Foundation\Console\CastMakeCommand::class, 'Illuminate\Foundation\Console\ChannelListCommand' => \Illuminate\Foundation\Console\ChannelListCommand::class, 'Illuminate\Foundation\Console\ChannelMakeCommand' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, + 'Illuminate\Foundation\Console\ClassMakeCommand' => \Illuminate\Foundation\Console\ClassMakeCommand::class, 'Illuminate\Foundation\Console\ClearCompiledCommand' => \Illuminate\Foundation\Console\ClearCompiledCommand::class, 'Illuminate\Foundation\Console\ComponentMakeCommand' => \Illuminate\Foundation\Console\ComponentMakeCommand::class, 'Illuminate\Foundation\Console\ConfigCacheCommand' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, 'Illuminate\Foundation\Console\ConfigClearCommand' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'Illuminate\Foundation\Console\ConfigPublishCommand' => \Illuminate\Foundation\Console\ConfigPublishCommand::class, 'Illuminate\Foundation\Console\ConfigShowCommand' => \Illuminate\Foundation\Console\ConfigShowCommand::class, 'Illuminate\Foundation\Console\ConsoleMakeCommand' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, 'Illuminate\Foundation\Console\DocsCommand' => \Illuminate\Foundation\Console\DocsCommand::class, 'Illuminate\Foundation\Console\DownCommand' => \Illuminate\Foundation\Console\DownCommand::class, + 'Illuminate\Foundation\Console\EnumMakeCommand' => \Illuminate\Foundation\Console\EnumMakeCommand::class, 'Illuminate\Foundation\Console\EnvironmentCommand' => \Illuminate\Foundation\Console\EnvironmentCommand::class, 'Illuminate\Foundation\Console\EnvironmentDecryptCommand' => \Illuminate\Foundation\Console\EnvironmentDecryptCommand::class, 'Illuminate\Foundation\Console\EnvironmentEncryptCommand' => \Illuminate\Foundation\Console\EnvironmentEncryptCommand::class, @@ -927,6 +964,7 @@ 'Illuminate\Foundation\Console\EventListCommand' => \Illuminate\Foundation\Console\EventListCommand::class, 'Illuminate\Foundation\Console\EventMakeCommand' => \Illuminate\Foundation\Console\EventMakeCommand::class, 'Illuminate\Foundation\Console\ExceptionMakeCommand' => \Illuminate\Foundation\Console\ExceptionMakeCommand::class, + 'Illuminate\Foundation\Console\InterfaceMakeCommand' => \Illuminate\Foundation\Console\InterfaceMakeCommand::class, 'Illuminate\Foundation\Console\JobMakeCommand' => \Illuminate\Foundation\Console\JobMakeCommand::class, 'Illuminate\Foundation\Console\KeyGenerateCommand' => \Illuminate\Foundation\Console\KeyGenerateCommand::class, 'Illuminate\Foundation\Console\LangPublishCommand' => \Illuminate\Foundation\Console\LangPublishCommand::class, @@ -952,6 +990,7 @@ 'Illuminate\Foundation\Console\StorageUnlinkCommand' => \Illuminate\Foundation\Console\StorageUnlinkCommand::class, 'Illuminate\Foundation\Console\StubPublishCommand' => \Illuminate\Foundation\Console\StubPublishCommand::class, 'Illuminate\Foundation\Console\TestMakeCommand' => \Illuminate\Foundation\Console\TestMakeCommand::class, + 'Illuminate\Foundation\Console\TraitMakeCommand' => \Illuminate\Foundation\Console\TraitMakeCommand::class, 'Illuminate\Foundation\Console\UpCommand' => \Illuminate\Foundation\Console\UpCommand::class, 'Illuminate\Foundation\Console\VendorPublishCommand' => \Illuminate\Foundation\Console\VendorPublishCommand::class, 'Illuminate\Foundation\Console\ViewCacheCommand' => \Illuminate\Foundation\Console\ViewCacheCommand::class, @@ -962,6 +1001,7 @@ 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, 'Illuminate\Foundation\Vite' => \Illuminate\Foundation\Vite::class, 'Illuminate\Http\Client\Factory' => \Illuminate\Http\Client\Factory::class, + 'Illuminate\Log\Context\Repository' => \Illuminate\Log\Context\Repository::class, 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, 'Illuminate\Notifications\Console\NotificationTableCommand' => \Illuminate\Notifications\Console\NotificationTableCommand::class, @@ -1089,11 +1129,11 @@ 'Illuminate\Console\Scheduling\ScheduleWorkCommand' => \Illuminate\Console\Scheduling\ScheduleWorkCommand::class, 'Illuminate\Contracts\Auth\Access\Gate' => \Illuminate\Auth\Access\Gate::class, 'Illuminate\Contracts\Broadcasting\Broadcaster' => \Illuminate\Broadcasting\Broadcasters\LogBroadcaster::class, - 'Illuminate\Contracts\Console\Kernel' => \App\Console\Kernel::class, + 'Illuminate\Contracts\Console\Kernel' => \Illuminate\Foundation\Console\Kernel::class, 'Illuminate\Contracts\Debug\ExceptionHandler' => \NunoMaduro\Collision\Adapters\Laravel\ExceptionHandler::class, 'Illuminate\Contracts\Foundation\ExceptionRenderer' => \Spatie\LaravelIgnition\Renderers\IgnitionExceptionRenderer::class, 'Illuminate\Contracts\Foundation\MaintenanceMode' => \Illuminate\Foundation\FileBasedMaintenanceMode::class, - 'Illuminate\Contracts\Http\Kernel' => \App\Http\Kernel::class, + 'Illuminate\Contracts\Http\Kernel' => \Illuminate\Foundation\Http\Kernel::class, 'Illuminate\Contracts\Pipeline\Hub' => \Illuminate\Pipeline\Hub::class, 'Illuminate\Contracts\Queue\EntityResolver' => \Illuminate\Database\Eloquent\QueueEntityResolver::class, 'Illuminate\Contracts\Routing\ResponseFactory' => \Illuminate\Routing\ResponseFactory::class, @@ -1118,17 +1158,22 @@ 'Illuminate\Database\Console\TableCommand' => \Illuminate\Database\Console\TableCommand::class, 'Illuminate\Database\Console\WipeCommand' => \Illuminate\Database\Console\WipeCommand::class, 'Illuminate\Foundation\Console\AboutCommand' => \Illuminate\Foundation\Console\AboutCommand::class, + 'Illuminate\Foundation\Console\ApiInstallCommand' => \Illuminate\Foundation\Console\ApiInstallCommand::class, + 'Illuminate\Foundation\Console\BroadcastingInstallCommand' => \Illuminate\Foundation\Console\BroadcastingInstallCommand::class, 'Illuminate\Foundation\Console\CastMakeCommand' => \Illuminate\Foundation\Console\CastMakeCommand::class, 'Illuminate\Foundation\Console\ChannelListCommand' => \Illuminate\Foundation\Console\ChannelListCommand::class, 'Illuminate\Foundation\Console\ChannelMakeCommand' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, + 'Illuminate\Foundation\Console\ClassMakeCommand' => \Illuminate\Foundation\Console\ClassMakeCommand::class, 'Illuminate\Foundation\Console\ClearCompiledCommand' => \Illuminate\Foundation\Console\ClearCompiledCommand::class, 'Illuminate\Foundation\Console\ComponentMakeCommand' => \Illuminate\Foundation\Console\ComponentMakeCommand::class, 'Illuminate\Foundation\Console\ConfigCacheCommand' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, 'Illuminate\Foundation\Console\ConfigClearCommand' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'Illuminate\Foundation\Console\ConfigPublishCommand' => \Illuminate\Foundation\Console\ConfigPublishCommand::class, 'Illuminate\Foundation\Console\ConfigShowCommand' => \Illuminate\Foundation\Console\ConfigShowCommand::class, 'Illuminate\Foundation\Console\ConsoleMakeCommand' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, 'Illuminate\Foundation\Console\DocsCommand' => \Illuminate\Foundation\Console\DocsCommand::class, 'Illuminate\Foundation\Console\DownCommand' => \Illuminate\Foundation\Console\DownCommand::class, + 'Illuminate\Foundation\Console\EnumMakeCommand' => \Illuminate\Foundation\Console\EnumMakeCommand::class, 'Illuminate\Foundation\Console\EnvironmentCommand' => \Illuminate\Foundation\Console\EnvironmentCommand::class, 'Illuminate\Foundation\Console\EnvironmentDecryptCommand' => \Illuminate\Foundation\Console\EnvironmentDecryptCommand::class, 'Illuminate\Foundation\Console\EnvironmentEncryptCommand' => \Illuminate\Foundation\Console\EnvironmentEncryptCommand::class, @@ -1138,6 +1183,7 @@ 'Illuminate\Foundation\Console\EventListCommand' => \Illuminate\Foundation\Console\EventListCommand::class, 'Illuminate\Foundation\Console\EventMakeCommand' => \Illuminate\Foundation\Console\EventMakeCommand::class, 'Illuminate\Foundation\Console\ExceptionMakeCommand' => \Illuminate\Foundation\Console\ExceptionMakeCommand::class, + 'Illuminate\Foundation\Console\InterfaceMakeCommand' => \Illuminate\Foundation\Console\InterfaceMakeCommand::class, 'Illuminate\Foundation\Console\JobMakeCommand' => \Illuminate\Foundation\Console\JobMakeCommand::class, 'Illuminate\Foundation\Console\KeyGenerateCommand' => \Illuminate\Foundation\Console\KeyGenerateCommand::class, 'Illuminate\Foundation\Console\LangPublishCommand' => \Illuminate\Foundation\Console\LangPublishCommand::class, @@ -1163,6 +1209,7 @@ 'Illuminate\Foundation\Console\StorageUnlinkCommand' => \Illuminate\Foundation\Console\StorageUnlinkCommand::class, 'Illuminate\Foundation\Console\StubPublishCommand' => \Illuminate\Foundation\Console\StubPublishCommand::class, 'Illuminate\Foundation\Console\TestMakeCommand' => \Illuminate\Foundation\Console\TestMakeCommand::class, + 'Illuminate\Foundation\Console\TraitMakeCommand' => \Illuminate\Foundation\Console\TraitMakeCommand::class, 'Illuminate\Foundation\Console\UpCommand' => \Illuminate\Foundation\Console\UpCommand::class, 'Illuminate\Foundation\Console\VendorPublishCommand' => \Illuminate\Foundation\Console\VendorPublishCommand::class, 'Illuminate\Foundation\Console\ViewCacheCommand' => \Illuminate\Foundation\Console\ViewCacheCommand::class, @@ -1173,6 +1220,7 @@ 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, 'Illuminate\Foundation\Vite' => \Illuminate\Foundation\Vite::class, 'Illuminate\Http\Client\Factory' => \Illuminate\Http\Client\Factory::class, + 'Illuminate\Log\Context\Repository' => \Illuminate\Log\Context\Repository::class, 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, 'Illuminate\Notifications\Console\NotificationTableCommand' => \Illuminate\Notifications\Console\NotificationTableCommand::class, @@ -1300,11 +1348,11 @@ 'Illuminate\Console\Scheduling\ScheduleWorkCommand' => \Illuminate\Console\Scheduling\ScheduleWorkCommand::class, 'Illuminate\Contracts\Auth\Access\Gate' => \Illuminate\Auth\Access\Gate::class, 'Illuminate\Contracts\Broadcasting\Broadcaster' => \Illuminate\Broadcasting\Broadcasters\LogBroadcaster::class, - 'Illuminate\Contracts\Console\Kernel' => \App\Console\Kernel::class, + 'Illuminate\Contracts\Console\Kernel' => \Illuminate\Foundation\Console\Kernel::class, 'Illuminate\Contracts\Debug\ExceptionHandler' => \NunoMaduro\Collision\Adapters\Laravel\ExceptionHandler::class, 'Illuminate\Contracts\Foundation\ExceptionRenderer' => \Spatie\LaravelIgnition\Renderers\IgnitionExceptionRenderer::class, 'Illuminate\Contracts\Foundation\MaintenanceMode' => \Illuminate\Foundation\FileBasedMaintenanceMode::class, - 'Illuminate\Contracts\Http\Kernel' => \App\Http\Kernel::class, + 'Illuminate\Contracts\Http\Kernel' => \Illuminate\Foundation\Http\Kernel::class, 'Illuminate\Contracts\Pipeline\Hub' => \Illuminate\Pipeline\Hub::class, 'Illuminate\Contracts\Queue\EntityResolver' => \Illuminate\Database\Eloquent\QueueEntityResolver::class, 'Illuminate\Contracts\Routing\ResponseFactory' => \Illuminate\Routing\ResponseFactory::class, @@ -1329,17 +1377,22 @@ 'Illuminate\Database\Console\TableCommand' => \Illuminate\Database\Console\TableCommand::class, 'Illuminate\Database\Console\WipeCommand' => \Illuminate\Database\Console\WipeCommand::class, 'Illuminate\Foundation\Console\AboutCommand' => \Illuminate\Foundation\Console\AboutCommand::class, + 'Illuminate\Foundation\Console\ApiInstallCommand' => \Illuminate\Foundation\Console\ApiInstallCommand::class, + 'Illuminate\Foundation\Console\BroadcastingInstallCommand' => \Illuminate\Foundation\Console\BroadcastingInstallCommand::class, 'Illuminate\Foundation\Console\CastMakeCommand' => \Illuminate\Foundation\Console\CastMakeCommand::class, 'Illuminate\Foundation\Console\ChannelListCommand' => \Illuminate\Foundation\Console\ChannelListCommand::class, 'Illuminate\Foundation\Console\ChannelMakeCommand' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, + 'Illuminate\Foundation\Console\ClassMakeCommand' => \Illuminate\Foundation\Console\ClassMakeCommand::class, 'Illuminate\Foundation\Console\ClearCompiledCommand' => \Illuminate\Foundation\Console\ClearCompiledCommand::class, 'Illuminate\Foundation\Console\ComponentMakeCommand' => \Illuminate\Foundation\Console\ComponentMakeCommand::class, 'Illuminate\Foundation\Console\ConfigCacheCommand' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, 'Illuminate\Foundation\Console\ConfigClearCommand' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'Illuminate\Foundation\Console\ConfigPublishCommand' => \Illuminate\Foundation\Console\ConfigPublishCommand::class, 'Illuminate\Foundation\Console\ConfigShowCommand' => \Illuminate\Foundation\Console\ConfigShowCommand::class, 'Illuminate\Foundation\Console\ConsoleMakeCommand' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, 'Illuminate\Foundation\Console\DocsCommand' => \Illuminate\Foundation\Console\DocsCommand::class, 'Illuminate\Foundation\Console\DownCommand' => \Illuminate\Foundation\Console\DownCommand::class, + 'Illuminate\Foundation\Console\EnumMakeCommand' => \Illuminate\Foundation\Console\EnumMakeCommand::class, 'Illuminate\Foundation\Console\EnvironmentCommand' => \Illuminate\Foundation\Console\EnvironmentCommand::class, 'Illuminate\Foundation\Console\EnvironmentDecryptCommand' => \Illuminate\Foundation\Console\EnvironmentDecryptCommand::class, 'Illuminate\Foundation\Console\EnvironmentEncryptCommand' => \Illuminate\Foundation\Console\EnvironmentEncryptCommand::class, @@ -1349,6 +1402,7 @@ 'Illuminate\Foundation\Console\EventListCommand' => \Illuminate\Foundation\Console\EventListCommand::class, 'Illuminate\Foundation\Console\EventMakeCommand' => \Illuminate\Foundation\Console\EventMakeCommand::class, 'Illuminate\Foundation\Console\ExceptionMakeCommand' => \Illuminate\Foundation\Console\ExceptionMakeCommand::class, + 'Illuminate\Foundation\Console\InterfaceMakeCommand' => \Illuminate\Foundation\Console\InterfaceMakeCommand::class, 'Illuminate\Foundation\Console\JobMakeCommand' => \Illuminate\Foundation\Console\JobMakeCommand::class, 'Illuminate\Foundation\Console\KeyGenerateCommand' => \Illuminate\Foundation\Console\KeyGenerateCommand::class, 'Illuminate\Foundation\Console\LangPublishCommand' => \Illuminate\Foundation\Console\LangPublishCommand::class, @@ -1374,6 +1428,7 @@ 'Illuminate\Foundation\Console\StorageUnlinkCommand' => \Illuminate\Foundation\Console\StorageUnlinkCommand::class, 'Illuminate\Foundation\Console\StubPublishCommand' => \Illuminate\Foundation\Console\StubPublishCommand::class, 'Illuminate\Foundation\Console\TestMakeCommand' => \Illuminate\Foundation\Console\TestMakeCommand::class, + 'Illuminate\Foundation\Console\TraitMakeCommand' => \Illuminate\Foundation\Console\TraitMakeCommand::class, 'Illuminate\Foundation\Console\UpCommand' => \Illuminate\Foundation\Console\UpCommand::class, 'Illuminate\Foundation\Console\VendorPublishCommand' => \Illuminate\Foundation\Console\VendorPublishCommand::class, 'Illuminate\Foundation\Console\ViewCacheCommand' => \Illuminate\Foundation\Console\ViewCacheCommand::class, @@ -1384,6 +1439,7 @@ 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, 'Illuminate\Foundation\Vite' => \Illuminate\Foundation\Vite::class, 'Illuminate\Http\Client\Factory' => \Illuminate\Http\Client\Factory::class, + 'Illuminate\Log\Context\Repository' => \Illuminate\Log\Context\Repository::class, 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, 'Illuminate\Notifications\Console\NotificationTableCommand' => \Illuminate\Notifications\Console\NotificationTableCommand::class, @@ -1511,11 +1567,11 @@ 'Illuminate\Console\Scheduling\ScheduleWorkCommand' => \Illuminate\Console\Scheduling\ScheduleWorkCommand::class, 'Illuminate\Contracts\Auth\Access\Gate' => \Illuminate\Auth\Access\Gate::class, 'Illuminate\Contracts\Broadcasting\Broadcaster' => \Illuminate\Broadcasting\Broadcasters\LogBroadcaster::class, - 'Illuminate\Contracts\Console\Kernel' => \App\Console\Kernel::class, + 'Illuminate\Contracts\Console\Kernel' => \Illuminate\Foundation\Console\Kernel::class, 'Illuminate\Contracts\Debug\ExceptionHandler' => \NunoMaduro\Collision\Adapters\Laravel\ExceptionHandler::class, 'Illuminate\Contracts\Foundation\ExceptionRenderer' => \Spatie\LaravelIgnition\Renderers\IgnitionExceptionRenderer::class, 'Illuminate\Contracts\Foundation\MaintenanceMode' => \Illuminate\Foundation\FileBasedMaintenanceMode::class, - 'Illuminate\Contracts\Http\Kernel' => \App\Http\Kernel::class, + 'Illuminate\Contracts\Http\Kernel' => \Illuminate\Foundation\Http\Kernel::class, 'Illuminate\Contracts\Pipeline\Hub' => \Illuminate\Pipeline\Hub::class, 'Illuminate\Contracts\Queue\EntityResolver' => \Illuminate\Database\Eloquent\QueueEntityResolver::class, 'Illuminate\Contracts\Routing\ResponseFactory' => \Illuminate\Routing\ResponseFactory::class, @@ -1540,17 +1596,22 @@ 'Illuminate\Database\Console\TableCommand' => \Illuminate\Database\Console\TableCommand::class, 'Illuminate\Database\Console\WipeCommand' => \Illuminate\Database\Console\WipeCommand::class, 'Illuminate\Foundation\Console\AboutCommand' => \Illuminate\Foundation\Console\AboutCommand::class, + 'Illuminate\Foundation\Console\ApiInstallCommand' => \Illuminate\Foundation\Console\ApiInstallCommand::class, + 'Illuminate\Foundation\Console\BroadcastingInstallCommand' => \Illuminate\Foundation\Console\BroadcastingInstallCommand::class, 'Illuminate\Foundation\Console\CastMakeCommand' => \Illuminate\Foundation\Console\CastMakeCommand::class, 'Illuminate\Foundation\Console\ChannelListCommand' => \Illuminate\Foundation\Console\ChannelListCommand::class, 'Illuminate\Foundation\Console\ChannelMakeCommand' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, + 'Illuminate\Foundation\Console\ClassMakeCommand' => \Illuminate\Foundation\Console\ClassMakeCommand::class, 'Illuminate\Foundation\Console\ClearCompiledCommand' => \Illuminate\Foundation\Console\ClearCompiledCommand::class, 'Illuminate\Foundation\Console\ComponentMakeCommand' => \Illuminate\Foundation\Console\ComponentMakeCommand::class, 'Illuminate\Foundation\Console\ConfigCacheCommand' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, 'Illuminate\Foundation\Console\ConfigClearCommand' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'Illuminate\Foundation\Console\ConfigPublishCommand' => \Illuminate\Foundation\Console\ConfigPublishCommand::class, 'Illuminate\Foundation\Console\ConfigShowCommand' => \Illuminate\Foundation\Console\ConfigShowCommand::class, 'Illuminate\Foundation\Console\ConsoleMakeCommand' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, 'Illuminate\Foundation\Console\DocsCommand' => \Illuminate\Foundation\Console\DocsCommand::class, 'Illuminate\Foundation\Console\DownCommand' => \Illuminate\Foundation\Console\DownCommand::class, + 'Illuminate\Foundation\Console\EnumMakeCommand' => \Illuminate\Foundation\Console\EnumMakeCommand::class, 'Illuminate\Foundation\Console\EnvironmentCommand' => \Illuminate\Foundation\Console\EnvironmentCommand::class, 'Illuminate\Foundation\Console\EnvironmentDecryptCommand' => \Illuminate\Foundation\Console\EnvironmentDecryptCommand::class, 'Illuminate\Foundation\Console\EnvironmentEncryptCommand' => \Illuminate\Foundation\Console\EnvironmentEncryptCommand::class, @@ -1560,6 +1621,7 @@ 'Illuminate\Foundation\Console\EventListCommand' => \Illuminate\Foundation\Console\EventListCommand::class, 'Illuminate\Foundation\Console\EventMakeCommand' => \Illuminate\Foundation\Console\EventMakeCommand::class, 'Illuminate\Foundation\Console\ExceptionMakeCommand' => \Illuminate\Foundation\Console\ExceptionMakeCommand::class, + 'Illuminate\Foundation\Console\InterfaceMakeCommand' => \Illuminate\Foundation\Console\InterfaceMakeCommand::class, 'Illuminate\Foundation\Console\JobMakeCommand' => \Illuminate\Foundation\Console\JobMakeCommand::class, 'Illuminate\Foundation\Console\KeyGenerateCommand' => \Illuminate\Foundation\Console\KeyGenerateCommand::class, 'Illuminate\Foundation\Console\LangPublishCommand' => \Illuminate\Foundation\Console\LangPublishCommand::class, @@ -1585,6 +1647,7 @@ 'Illuminate\Foundation\Console\StorageUnlinkCommand' => \Illuminate\Foundation\Console\StorageUnlinkCommand::class, 'Illuminate\Foundation\Console\StubPublishCommand' => \Illuminate\Foundation\Console\StubPublishCommand::class, 'Illuminate\Foundation\Console\TestMakeCommand' => \Illuminate\Foundation\Console\TestMakeCommand::class, + 'Illuminate\Foundation\Console\TraitMakeCommand' => \Illuminate\Foundation\Console\TraitMakeCommand::class, 'Illuminate\Foundation\Console\UpCommand' => \Illuminate\Foundation\Console\UpCommand::class, 'Illuminate\Foundation\Console\VendorPublishCommand' => \Illuminate\Foundation\Console\VendorPublishCommand::class, 'Illuminate\Foundation\Console\ViewCacheCommand' => \Illuminate\Foundation\Console\ViewCacheCommand::class, @@ -1595,6 +1658,7 @@ 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, 'Illuminate\Foundation\Vite' => \Illuminate\Foundation\Vite::class, 'Illuminate\Http\Client\Factory' => \Illuminate\Http\Client\Factory::class, + 'Illuminate\Log\Context\Repository' => \Illuminate\Log\Context\Repository::class, 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, 'Illuminate\Notifications\Console\NotificationTableCommand' => \Illuminate\Notifications\Console\NotificationTableCommand::class, @@ -1722,11 +1786,11 @@ 'Illuminate\Console\Scheduling\ScheduleWorkCommand' => \Illuminate\Console\Scheduling\ScheduleWorkCommand::class, 'Illuminate\Contracts\Auth\Access\Gate' => \Illuminate\Auth\Access\Gate::class, 'Illuminate\Contracts\Broadcasting\Broadcaster' => \Illuminate\Broadcasting\Broadcasters\LogBroadcaster::class, - 'Illuminate\Contracts\Console\Kernel' => \App\Console\Kernel::class, + 'Illuminate\Contracts\Console\Kernel' => \Illuminate\Foundation\Console\Kernel::class, 'Illuminate\Contracts\Debug\ExceptionHandler' => \NunoMaduro\Collision\Adapters\Laravel\ExceptionHandler::class, 'Illuminate\Contracts\Foundation\ExceptionRenderer' => \Spatie\LaravelIgnition\Renderers\IgnitionExceptionRenderer::class, 'Illuminate\Contracts\Foundation\MaintenanceMode' => \Illuminate\Foundation\FileBasedMaintenanceMode::class, - 'Illuminate\Contracts\Http\Kernel' => \App\Http\Kernel::class, + 'Illuminate\Contracts\Http\Kernel' => \Illuminate\Foundation\Http\Kernel::class, 'Illuminate\Contracts\Pipeline\Hub' => \Illuminate\Pipeline\Hub::class, 'Illuminate\Contracts\Queue\EntityResolver' => \Illuminate\Database\Eloquent\QueueEntityResolver::class, 'Illuminate\Contracts\Routing\ResponseFactory' => \Illuminate\Routing\ResponseFactory::class, @@ -1751,17 +1815,22 @@ 'Illuminate\Database\Console\TableCommand' => \Illuminate\Database\Console\TableCommand::class, 'Illuminate\Database\Console\WipeCommand' => \Illuminate\Database\Console\WipeCommand::class, 'Illuminate\Foundation\Console\AboutCommand' => \Illuminate\Foundation\Console\AboutCommand::class, + 'Illuminate\Foundation\Console\ApiInstallCommand' => \Illuminate\Foundation\Console\ApiInstallCommand::class, + 'Illuminate\Foundation\Console\BroadcastingInstallCommand' => \Illuminate\Foundation\Console\BroadcastingInstallCommand::class, 'Illuminate\Foundation\Console\CastMakeCommand' => \Illuminate\Foundation\Console\CastMakeCommand::class, 'Illuminate\Foundation\Console\ChannelListCommand' => \Illuminate\Foundation\Console\ChannelListCommand::class, 'Illuminate\Foundation\Console\ChannelMakeCommand' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, + 'Illuminate\Foundation\Console\ClassMakeCommand' => \Illuminate\Foundation\Console\ClassMakeCommand::class, 'Illuminate\Foundation\Console\ClearCompiledCommand' => \Illuminate\Foundation\Console\ClearCompiledCommand::class, 'Illuminate\Foundation\Console\ComponentMakeCommand' => \Illuminate\Foundation\Console\ComponentMakeCommand::class, 'Illuminate\Foundation\Console\ConfigCacheCommand' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, 'Illuminate\Foundation\Console\ConfigClearCommand' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'Illuminate\Foundation\Console\ConfigPublishCommand' => \Illuminate\Foundation\Console\ConfigPublishCommand::class, 'Illuminate\Foundation\Console\ConfigShowCommand' => \Illuminate\Foundation\Console\ConfigShowCommand::class, 'Illuminate\Foundation\Console\ConsoleMakeCommand' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, 'Illuminate\Foundation\Console\DocsCommand' => \Illuminate\Foundation\Console\DocsCommand::class, 'Illuminate\Foundation\Console\DownCommand' => \Illuminate\Foundation\Console\DownCommand::class, + 'Illuminate\Foundation\Console\EnumMakeCommand' => \Illuminate\Foundation\Console\EnumMakeCommand::class, 'Illuminate\Foundation\Console\EnvironmentCommand' => \Illuminate\Foundation\Console\EnvironmentCommand::class, 'Illuminate\Foundation\Console\EnvironmentDecryptCommand' => \Illuminate\Foundation\Console\EnvironmentDecryptCommand::class, 'Illuminate\Foundation\Console\EnvironmentEncryptCommand' => \Illuminate\Foundation\Console\EnvironmentEncryptCommand::class, @@ -1771,6 +1840,7 @@ 'Illuminate\Foundation\Console\EventListCommand' => \Illuminate\Foundation\Console\EventListCommand::class, 'Illuminate\Foundation\Console\EventMakeCommand' => \Illuminate\Foundation\Console\EventMakeCommand::class, 'Illuminate\Foundation\Console\ExceptionMakeCommand' => \Illuminate\Foundation\Console\ExceptionMakeCommand::class, + 'Illuminate\Foundation\Console\InterfaceMakeCommand' => \Illuminate\Foundation\Console\InterfaceMakeCommand::class, 'Illuminate\Foundation\Console\JobMakeCommand' => \Illuminate\Foundation\Console\JobMakeCommand::class, 'Illuminate\Foundation\Console\KeyGenerateCommand' => \Illuminate\Foundation\Console\KeyGenerateCommand::class, 'Illuminate\Foundation\Console\LangPublishCommand' => \Illuminate\Foundation\Console\LangPublishCommand::class, @@ -1796,6 +1866,7 @@ 'Illuminate\Foundation\Console\StorageUnlinkCommand' => \Illuminate\Foundation\Console\StorageUnlinkCommand::class, 'Illuminate\Foundation\Console\StubPublishCommand' => \Illuminate\Foundation\Console\StubPublishCommand::class, 'Illuminate\Foundation\Console\TestMakeCommand' => \Illuminate\Foundation\Console\TestMakeCommand::class, + 'Illuminate\Foundation\Console\TraitMakeCommand' => \Illuminate\Foundation\Console\TraitMakeCommand::class, 'Illuminate\Foundation\Console\UpCommand' => \Illuminate\Foundation\Console\UpCommand::class, 'Illuminate\Foundation\Console\VendorPublishCommand' => \Illuminate\Foundation\Console\VendorPublishCommand::class, 'Illuminate\Foundation\Console\ViewCacheCommand' => \Illuminate\Foundation\Console\ViewCacheCommand::class, @@ -1806,6 +1877,7 @@ 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, 'Illuminate\Foundation\Vite' => \Illuminate\Foundation\Vite::class, 'Illuminate\Http\Client\Factory' => \Illuminate\Http\Client\Factory::class, + 'Illuminate\Log\Context\Repository' => \Illuminate\Log\Context\Repository::class, 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, 'Illuminate\Notifications\Console\NotificationTableCommand' => \Illuminate\Notifications\Console\NotificationTableCommand::class, @@ -1933,11 +2005,11 @@ 'Illuminate\Console\Scheduling\ScheduleWorkCommand' => \Illuminate\Console\Scheduling\ScheduleWorkCommand::class, 'Illuminate\Contracts\Auth\Access\Gate' => \Illuminate\Auth\Access\Gate::class, 'Illuminate\Contracts\Broadcasting\Broadcaster' => \Illuminate\Broadcasting\Broadcasters\LogBroadcaster::class, - 'Illuminate\Contracts\Console\Kernel' => \App\Console\Kernel::class, + 'Illuminate\Contracts\Console\Kernel' => \Illuminate\Foundation\Console\Kernel::class, 'Illuminate\Contracts\Debug\ExceptionHandler' => \NunoMaduro\Collision\Adapters\Laravel\ExceptionHandler::class, 'Illuminate\Contracts\Foundation\ExceptionRenderer' => \Spatie\LaravelIgnition\Renderers\IgnitionExceptionRenderer::class, 'Illuminate\Contracts\Foundation\MaintenanceMode' => \Illuminate\Foundation\FileBasedMaintenanceMode::class, - 'Illuminate\Contracts\Http\Kernel' => \App\Http\Kernel::class, + 'Illuminate\Contracts\Http\Kernel' => \Illuminate\Foundation\Http\Kernel::class, 'Illuminate\Contracts\Pipeline\Hub' => \Illuminate\Pipeline\Hub::class, 'Illuminate\Contracts\Queue\EntityResolver' => \Illuminate\Database\Eloquent\QueueEntityResolver::class, 'Illuminate\Contracts\Routing\ResponseFactory' => \Illuminate\Routing\ResponseFactory::class, @@ -1962,17 +2034,22 @@ 'Illuminate\Database\Console\TableCommand' => \Illuminate\Database\Console\TableCommand::class, 'Illuminate\Database\Console\WipeCommand' => \Illuminate\Database\Console\WipeCommand::class, 'Illuminate\Foundation\Console\AboutCommand' => \Illuminate\Foundation\Console\AboutCommand::class, + 'Illuminate\Foundation\Console\ApiInstallCommand' => \Illuminate\Foundation\Console\ApiInstallCommand::class, + 'Illuminate\Foundation\Console\BroadcastingInstallCommand' => \Illuminate\Foundation\Console\BroadcastingInstallCommand::class, 'Illuminate\Foundation\Console\CastMakeCommand' => \Illuminate\Foundation\Console\CastMakeCommand::class, 'Illuminate\Foundation\Console\ChannelListCommand' => \Illuminate\Foundation\Console\ChannelListCommand::class, 'Illuminate\Foundation\Console\ChannelMakeCommand' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, + 'Illuminate\Foundation\Console\ClassMakeCommand' => \Illuminate\Foundation\Console\ClassMakeCommand::class, 'Illuminate\Foundation\Console\ClearCompiledCommand' => \Illuminate\Foundation\Console\ClearCompiledCommand::class, 'Illuminate\Foundation\Console\ComponentMakeCommand' => \Illuminate\Foundation\Console\ComponentMakeCommand::class, 'Illuminate\Foundation\Console\ConfigCacheCommand' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, 'Illuminate\Foundation\Console\ConfigClearCommand' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'Illuminate\Foundation\Console\ConfigPublishCommand' => \Illuminate\Foundation\Console\ConfigPublishCommand::class, 'Illuminate\Foundation\Console\ConfigShowCommand' => \Illuminate\Foundation\Console\ConfigShowCommand::class, 'Illuminate\Foundation\Console\ConsoleMakeCommand' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, 'Illuminate\Foundation\Console\DocsCommand' => \Illuminate\Foundation\Console\DocsCommand::class, 'Illuminate\Foundation\Console\DownCommand' => \Illuminate\Foundation\Console\DownCommand::class, + 'Illuminate\Foundation\Console\EnumMakeCommand' => \Illuminate\Foundation\Console\EnumMakeCommand::class, 'Illuminate\Foundation\Console\EnvironmentCommand' => \Illuminate\Foundation\Console\EnvironmentCommand::class, 'Illuminate\Foundation\Console\EnvironmentDecryptCommand' => \Illuminate\Foundation\Console\EnvironmentDecryptCommand::class, 'Illuminate\Foundation\Console\EnvironmentEncryptCommand' => \Illuminate\Foundation\Console\EnvironmentEncryptCommand::class, @@ -1982,6 +2059,7 @@ 'Illuminate\Foundation\Console\EventListCommand' => \Illuminate\Foundation\Console\EventListCommand::class, 'Illuminate\Foundation\Console\EventMakeCommand' => \Illuminate\Foundation\Console\EventMakeCommand::class, 'Illuminate\Foundation\Console\ExceptionMakeCommand' => \Illuminate\Foundation\Console\ExceptionMakeCommand::class, + 'Illuminate\Foundation\Console\InterfaceMakeCommand' => \Illuminate\Foundation\Console\InterfaceMakeCommand::class, 'Illuminate\Foundation\Console\JobMakeCommand' => \Illuminate\Foundation\Console\JobMakeCommand::class, 'Illuminate\Foundation\Console\KeyGenerateCommand' => \Illuminate\Foundation\Console\KeyGenerateCommand::class, 'Illuminate\Foundation\Console\LangPublishCommand' => \Illuminate\Foundation\Console\LangPublishCommand::class, @@ -2007,6 +2085,7 @@ 'Illuminate\Foundation\Console\StorageUnlinkCommand' => \Illuminate\Foundation\Console\StorageUnlinkCommand::class, 'Illuminate\Foundation\Console\StubPublishCommand' => \Illuminate\Foundation\Console\StubPublishCommand::class, 'Illuminate\Foundation\Console\TestMakeCommand' => \Illuminate\Foundation\Console\TestMakeCommand::class, + 'Illuminate\Foundation\Console\TraitMakeCommand' => \Illuminate\Foundation\Console\TraitMakeCommand::class, 'Illuminate\Foundation\Console\UpCommand' => \Illuminate\Foundation\Console\UpCommand::class, 'Illuminate\Foundation\Console\VendorPublishCommand' => \Illuminate\Foundation\Console\VendorPublishCommand::class, 'Illuminate\Foundation\Console\ViewCacheCommand' => \Illuminate\Foundation\Console\ViewCacheCommand::class, @@ -2017,6 +2096,7 @@ 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, 'Illuminate\Foundation\Vite' => \Illuminate\Foundation\Vite::class, 'Illuminate\Http\Client\Factory' => \Illuminate\Http\Client\Factory::class, + 'Illuminate\Log\Context\Repository' => \Illuminate\Log\Context\Repository::class, 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, 'Illuminate\Notifications\Console\NotificationTableCommand' => \Illuminate\Notifications\Console\NotificationTableCommand::class, @@ -2144,11 +2224,11 @@ 'Illuminate\Console\Scheduling\ScheduleWorkCommand' => \Illuminate\Console\Scheduling\ScheduleWorkCommand::class, 'Illuminate\Contracts\Auth\Access\Gate' => \Illuminate\Auth\Access\Gate::class, 'Illuminate\Contracts\Broadcasting\Broadcaster' => \Illuminate\Broadcasting\Broadcasters\LogBroadcaster::class, - 'Illuminate\Contracts\Console\Kernel' => \App\Console\Kernel::class, + 'Illuminate\Contracts\Console\Kernel' => \Illuminate\Foundation\Console\Kernel::class, 'Illuminate\Contracts\Debug\ExceptionHandler' => \NunoMaduro\Collision\Adapters\Laravel\ExceptionHandler::class, 'Illuminate\Contracts\Foundation\ExceptionRenderer' => \Spatie\LaravelIgnition\Renderers\IgnitionExceptionRenderer::class, 'Illuminate\Contracts\Foundation\MaintenanceMode' => \Illuminate\Foundation\FileBasedMaintenanceMode::class, - 'Illuminate\Contracts\Http\Kernel' => \App\Http\Kernel::class, + 'Illuminate\Contracts\Http\Kernel' => \Illuminate\Foundation\Http\Kernel::class, 'Illuminate\Contracts\Pipeline\Hub' => \Illuminate\Pipeline\Hub::class, 'Illuminate\Contracts\Queue\EntityResolver' => \Illuminate\Database\Eloquent\QueueEntityResolver::class, 'Illuminate\Contracts\Routing\ResponseFactory' => \Illuminate\Routing\ResponseFactory::class, @@ -2173,17 +2253,22 @@ 'Illuminate\Database\Console\TableCommand' => \Illuminate\Database\Console\TableCommand::class, 'Illuminate\Database\Console\WipeCommand' => \Illuminate\Database\Console\WipeCommand::class, 'Illuminate\Foundation\Console\AboutCommand' => \Illuminate\Foundation\Console\AboutCommand::class, + 'Illuminate\Foundation\Console\ApiInstallCommand' => \Illuminate\Foundation\Console\ApiInstallCommand::class, + 'Illuminate\Foundation\Console\BroadcastingInstallCommand' => \Illuminate\Foundation\Console\BroadcastingInstallCommand::class, 'Illuminate\Foundation\Console\CastMakeCommand' => \Illuminate\Foundation\Console\CastMakeCommand::class, 'Illuminate\Foundation\Console\ChannelListCommand' => \Illuminate\Foundation\Console\ChannelListCommand::class, 'Illuminate\Foundation\Console\ChannelMakeCommand' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, + 'Illuminate\Foundation\Console\ClassMakeCommand' => \Illuminate\Foundation\Console\ClassMakeCommand::class, 'Illuminate\Foundation\Console\ClearCompiledCommand' => \Illuminate\Foundation\Console\ClearCompiledCommand::class, 'Illuminate\Foundation\Console\ComponentMakeCommand' => \Illuminate\Foundation\Console\ComponentMakeCommand::class, 'Illuminate\Foundation\Console\ConfigCacheCommand' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, 'Illuminate\Foundation\Console\ConfigClearCommand' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'Illuminate\Foundation\Console\ConfigPublishCommand' => \Illuminate\Foundation\Console\ConfigPublishCommand::class, 'Illuminate\Foundation\Console\ConfigShowCommand' => \Illuminate\Foundation\Console\ConfigShowCommand::class, 'Illuminate\Foundation\Console\ConsoleMakeCommand' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, 'Illuminate\Foundation\Console\DocsCommand' => \Illuminate\Foundation\Console\DocsCommand::class, 'Illuminate\Foundation\Console\DownCommand' => \Illuminate\Foundation\Console\DownCommand::class, + 'Illuminate\Foundation\Console\EnumMakeCommand' => \Illuminate\Foundation\Console\EnumMakeCommand::class, 'Illuminate\Foundation\Console\EnvironmentCommand' => \Illuminate\Foundation\Console\EnvironmentCommand::class, 'Illuminate\Foundation\Console\EnvironmentDecryptCommand' => \Illuminate\Foundation\Console\EnvironmentDecryptCommand::class, 'Illuminate\Foundation\Console\EnvironmentEncryptCommand' => \Illuminate\Foundation\Console\EnvironmentEncryptCommand::class, @@ -2193,6 +2278,7 @@ 'Illuminate\Foundation\Console\EventListCommand' => \Illuminate\Foundation\Console\EventListCommand::class, 'Illuminate\Foundation\Console\EventMakeCommand' => \Illuminate\Foundation\Console\EventMakeCommand::class, 'Illuminate\Foundation\Console\ExceptionMakeCommand' => \Illuminate\Foundation\Console\ExceptionMakeCommand::class, + 'Illuminate\Foundation\Console\InterfaceMakeCommand' => \Illuminate\Foundation\Console\InterfaceMakeCommand::class, 'Illuminate\Foundation\Console\JobMakeCommand' => \Illuminate\Foundation\Console\JobMakeCommand::class, 'Illuminate\Foundation\Console\KeyGenerateCommand' => \Illuminate\Foundation\Console\KeyGenerateCommand::class, 'Illuminate\Foundation\Console\LangPublishCommand' => \Illuminate\Foundation\Console\LangPublishCommand::class, @@ -2218,6 +2304,7 @@ 'Illuminate\Foundation\Console\StorageUnlinkCommand' => \Illuminate\Foundation\Console\StorageUnlinkCommand::class, 'Illuminate\Foundation\Console\StubPublishCommand' => \Illuminate\Foundation\Console\StubPublishCommand::class, 'Illuminate\Foundation\Console\TestMakeCommand' => \Illuminate\Foundation\Console\TestMakeCommand::class, + 'Illuminate\Foundation\Console\TraitMakeCommand' => \Illuminate\Foundation\Console\TraitMakeCommand::class, 'Illuminate\Foundation\Console\UpCommand' => \Illuminate\Foundation\Console\UpCommand::class, 'Illuminate\Foundation\Console\VendorPublishCommand' => \Illuminate\Foundation\Console\VendorPublishCommand::class, 'Illuminate\Foundation\Console\ViewCacheCommand' => \Illuminate\Foundation\Console\ViewCacheCommand::class, @@ -2228,6 +2315,7 @@ 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, 'Illuminate\Foundation\Vite' => \Illuminate\Foundation\Vite::class, 'Illuminate\Http\Client\Factory' => \Illuminate\Http\Client\Factory::class, + 'Illuminate\Log\Context\Repository' => \Illuminate\Log\Context\Repository::class, 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, 'Illuminate\Notifications\Console\NotificationTableCommand' => \Illuminate\Notifications\Console\NotificationTableCommand::class, diff --git a/_ide_helper.php b/_ide_helper.php index 20d52930..a67a47a5 100644 --- a/_ide_helper.php +++ b/_ide_helper.php @@ -5,7 +5,7 @@ /** * A helper file for Laravel, to provide autocomplete information to your IDE - * Generated for Laravel 10.48.3. + * Generated for Laravel 11.2.0. * * This file should not be included in your code, only analyzed by your IDE! * @@ -20,6 +20,25 @@ * @see \Illuminate\Foundation\Application */ class App { /** + * Begin configuring a new Laravel application instance. + * + * @param string|null $basePath + * @return \Illuminate\Foundation\Configuration\ApplicationBuilder + * @static + */ public static function configure($basePath = null) + { + return \Illuminate\Foundation\Application::configure($basePath); + } + /** + * Infer the application's base directory from the environment. + * + * @return string + * @static + */ public static function inferBasePath() + { + return \Illuminate\Foundation\Application::inferBasePath(); + } + /** * Get the version number of the application. * * @return string @@ -139,6 +158,16 @@ { /** @var \Illuminate\Foundation\Application $instance */ return $instance->bootstrapPath($path); + } + /** + * Get the path to the service provider list in the bootstrap directory. + * + * @return string + * @static + */ public static function getBootstrapProvidersPath() + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->getBootstrapProvidersPath(); } /** * Set the bootstrap file directory. @@ -431,6 +460,17 @@ { /** @var \Illuminate\Foundation\Application $instance */ return $instance->hasDebugModeEnabled(); + } + /** + * Register a new registered listener. + * + * @param callable $callback + * @return void + * @static + */ public static function registered($callback) + { + /** @var \Illuminate\Foundation\Application $instance */ + $instance->registered($callback); } /** * Register all of the configured providers. @@ -594,6 +634,28 @@ { /** @var \Illuminate\Foundation\Application $instance */ return $instance->handle($request, $type, $catch); + } + /** + * Handle the incoming HTTP request and send the response to the browser. + * + * @param \Illuminate\Http\Request $request + * @return void + * @static + */ public static function handleRequest($request) + { + /** @var \Illuminate\Foundation\Application $instance */ + $instance->handleRequest($request); + } + /** + * Handle the incoming Artisan command. + * + * @param \Symfony\Component\Console\Input\InputInterface $input + * @return int + * @static + */ public static function handleCommand($input) + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->handleCommand($input); } /** * Determine if middleware has been disabled for the application. @@ -1483,11 +1545,11 @@ * Re-route the Symfony command events to their Laravel counterparts. * * @internal - * @return \App\Console\Kernel + * @return \Illuminate\Foundation\Console\Kernel * @static */ public static function rerouteSymfonyCommandEvents() - { //Method inherited from \Illuminate\Foundation\Console\Kernel - /** @var \App\Console\Kernel $instance */ + { + /** @var \Illuminate\Foundation\Console\Kernel $instance */ return $instance->rerouteSymfonyCommandEvents(); } /** @@ -1498,8 +1560,8 @@ * @return int * @static */ public static function handle($input, $output = null) - { //Method inherited from \Illuminate\Foundation\Console\Kernel - /** @var \App\Console\Kernel $instance */ + { + /** @var \Illuminate\Foundation\Console\Kernel $instance */ return $instance->handle($input, $output); } /** @@ -1510,8 +1572,8 @@ * @return void * @static */ public static function terminate($input, $status) - { //Method inherited from \Illuminate\Foundation\Console\Kernel - /** @var \App\Console\Kernel $instance */ + { + /** @var \Illuminate\Foundation\Console\Kernel $instance */ $instance->terminate($input, $status); } /** @@ -1522,8 +1584,8 @@ * @return void * @static */ public static function whenCommandLifecycleIsLongerThan($threshold, $handler) - { //Method inherited from \Illuminate\Foundation\Console\Kernel - /** @var \App\Console\Kernel $instance */ + { + /** @var \Illuminate\Foundation\Console\Kernel $instance */ $instance->whenCommandLifecycleIsLongerThan($threshold, $handler); } /** @@ -1532,9 +1594,19 @@ * @return \Illuminate\Support\Carbon|null * @static */ public static function commandStartedAt() - { //Method inherited from \Illuminate\Foundation\Console\Kernel - /** @var \App\Console\Kernel $instance */ + { + /** @var \Illuminate\Foundation\Console\Kernel $instance */ return $instance->commandStartedAt(); + } + /** + * Resolve a console schedule instance. + * + * @return \Illuminate\Console\Scheduling\Schedule + * @static + */ public static function resolveConsoleSchedule() + { + /** @var \Illuminate\Foundation\Console\Kernel $instance */ + return $instance->resolveConsoleSchedule(); } /** * Register a Closure based command with the application. @@ -1544,8 +1616,8 @@ * @return \Illuminate\Foundation\Console\ClosureCommand * @static */ public static function command($signature, $callback) - { //Method inherited from \Illuminate\Foundation\Console\Kernel - /** @var \App\Console\Kernel $instance */ + { + /** @var \Illuminate\Foundation\Console\Kernel $instance */ return $instance->command($signature, $callback); } /** @@ -1555,8 +1627,8 @@ * @return void * @static */ public static function registerCommand($command) - { //Method inherited from \Illuminate\Foundation\Console\Kernel - /** @var \App\Console\Kernel $instance */ + { + /** @var \Illuminate\Foundation\Console\Kernel $instance */ $instance->registerCommand($command); } /** @@ -1569,8 +1641,8 @@ * @throws \Symfony\Component\Console\Exception\CommandNotFoundException * @static */ public static function call($command, $parameters = [], $outputBuffer = null) - { //Method inherited from \Illuminate\Foundation\Console\Kernel - /** @var \App\Console\Kernel $instance */ + { + /** @var \Illuminate\Foundation\Console\Kernel $instance */ return $instance->call($command, $parameters, $outputBuffer); } /** @@ -1581,8 +1653,8 @@ * @return \Illuminate\Foundation\Bus\PendingDispatch * @static */ public static function queue($command, $parameters = []) - { //Method inherited from \Illuminate\Foundation\Console\Kernel - /** @var \App\Console\Kernel $instance */ + { + /** @var \Illuminate\Foundation\Console\Kernel $instance */ return $instance->queue($command, $parameters); } /** @@ -1591,8 +1663,8 @@ * @return array * @static */ public static function all() - { //Method inherited from \Illuminate\Foundation\Console\Kernel - /** @var \App\Console\Kernel $instance */ + { + /** @var \Illuminate\Foundation\Console\Kernel $instance */ return $instance->all(); } /** @@ -1601,8 +1673,8 @@ * @return string * @static */ public static function output() - { //Method inherited from \Illuminate\Foundation\Console\Kernel - /** @var \App\Console\Kernel $instance */ + { + /** @var \Illuminate\Foundation\Console\Kernel $instance */ return $instance->output(); } /** @@ -1611,8 +1683,8 @@ * @return void * @static */ public static function bootstrap() - { //Method inherited from \Illuminate\Foundation\Console\Kernel - /** @var \App\Console\Kernel $instance */ + { + /** @var \Illuminate\Foundation\Console\Kernel $instance */ $instance->bootstrap(); } /** @@ -1621,8 +1693,8 @@ * @return void * @static */ public static function bootstrapWithoutBootingProviders() - { //Method inherited from \Illuminate\Foundation\Console\Kernel - /** @var \App\Console\Kernel $instance */ + { + /** @var \Illuminate\Foundation\Console\Kernel $instance */ $instance->bootstrapWithoutBootingProviders(); } /** @@ -1632,9 +1704,42 @@ * @return void * @static */ public static function setArtisan($artisan) - { //Method inherited from \Illuminate\Foundation\Console\Kernel - /** @var \App\Console\Kernel $instance */ + { + /** @var \Illuminate\Foundation\Console\Kernel $instance */ $instance->setArtisan($artisan); + } + /** + * Set the Artisan commands provided by the application. + * + * @param array $commands + * @return \Illuminate\Foundation\Console\Kernel + * @static + */ public static function addCommands($commands) + { + /** @var \Illuminate\Foundation\Console\Kernel $instance */ + return $instance->addCommands($commands); + } + /** + * Set the paths that should have their Artisan commands automatically discovered. + * + * @param array $paths + * @return \Illuminate\Foundation\Console\Kernel + * @static + */ public static function addCommandPaths($paths) + { + /** @var \Illuminate\Foundation\Console\Kernel $instance */ + return $instance->addCommandPaths($paths); + } + /** + * Set the paths that should have their Artisan "routes" automatically discovered. + * + * @param array $paths + * @return \Illuminate\Foundation\Console\Kernel + * @static + */ public static function addCommandRoutePaths($paths) + { + /** @var \Illuminate\Foundation\Console\Kernel $instance */ + return $instance->addCommandRoutePaths($paths); } } /** @@ -1976,14 +2081,13 @@ * The application must be using the AuthenticateSession middleware. * * @param string $password - * @param string $attribute * @return \App\Models\User|null * @throws \Illuminate\Auth\AuthenticationException * @static - */ public static function logoutOtherDevices($password, $attribute = 'password') + */ public static function logoutOtherDevices($password) { /** @var \Illuminate\Auth\SessionGuard $instance */ - return $instance->logoutOtherDevices($password, $attribute); + return $instance->logoutOtherDevices($password); } /** * Register an authentication attempt event listener. @@ -3425,12 +3529,13 @@ * Create a new cache repository with the given implementation. * * @param \Illuminate\Contracts\Cache\Store $store + * @param array $config * @return \Illuminate\Cache\Repository * @static - */ public static function repository($store) + */ public static function repository($store, $config = []) { /** @var \Illuminate\Cache\CacheManager $instance */ - return $instance->repository($store); + return $instance->repository($store, $config); } /** * Re-set the event dispatcher on all resolved cache repositories. @@ -4097,6 +4202,66 @@ { /** @var \Illuminate\Config\Repository $instance */ return $instance->getMany($keys); + } + /** + * Get the specified string configuration value. + * + * @param string $key + * @param \Illuminate\Config\(\Closure():(string|\Illuminate\Config\null))|string|null $default + * @return string + * @static + */ public static function string($key, $default = null) + { + /** @var \Illuminate\Config\Repository $instance */ + return $instance->string($key, $default); + } + /** + * Get the specified integer configuration value. + * + * @param string $key + * @param \Illuminate\Config\(\Closure():(int|\Illuminate\Config\null))|int|null $default + * @return int + * @static + */ public static function integer($key, $default = null) + { + /** @var \Illuminate\Config\Repository $instance */ + return $instance->integer($key, $default); + } + /** + * Get the specified float configuration value. + * + * @param string $key + * @param \Illuminate\Config\(\Closure():(float|\Illuminate\Config\null))|float|null $default + * @return float + * @static + */ public static function float($key, $default = null) + { + /** @var \Illuminate\Config\Repository $instance */ + return $instance->float($key, $default); + } + /** + * Get the specified boolean configuration value. + * + * @param string $key + * @param \Illuminate\Config\(\Closure():(bool|\Illuminate\Config\null))|bool|null $default + * @return bool + * @static + */ public static function boolean($key, $default = null) + { + /** @var \Illuminate\Config\Repository $instance */ + return $instance->boolean($key, $default); + } + /** + * Get the specified array configuration value. + * + * @param string $key + * @param \Illuminate\Config\(\Closure():(array|\Illuminate\Config\null))|\Illuminate\Config\array|null $default + * @return array + * @static + */ public static function array($key, $default = null) + { + /** @var \Illuminate\Config\Repository $instance */ + return $instance->array($key, $default); } /** * Set a given configuration value. @@ -4235,6 +4400,356 @@ /** * * + * @see \Illuminate\Log\Context\Repository + */ class Context { + /** + * Determine if the given key exists. + * + * @param string $key + * @return bool + * @static + */ public static function has($key) + { + /** @var \Illuminate\Log\Context\Repository $instance */ + return $instance->has($key); + } + /** + * Determine if the given key exists within the hidden context data. + * + * @param string $key + * @return bool + * @static + */ public static function hasHidden($key) + { + /** @var \Illuminate\Log\Context\Repository $instance */ + return $instance->hasHidden($key); + } + /** + * Retrieve all the context data. + * + * @return array + * @static + */ public static function all() + { + /** @var \Illuminate\Log\Context\Repository $instance */ + return $instance->all(); + } + /** + * Retrieve all the hidden context data. + * + * @return array + * @static + */ public static function allHidden() + { + /** @var \Illuminate\Log\Context\Repository $instance */ + return $instance->allHidden(); + } + /** + * Retrieve the given key's value. + * + * @param string $key + * @param mixed $default + * @return mixed + * @static + */ public static function get($key, $default = null) + { + /** @var \Illuminate\Log\Context\Repository $instance */ + return $instance->get($key, $default); + } + /** + * Retrieve the given key's hidden value. + * + * @param string $key + * @param mixed $default + * @return mixed + * @static + */ public static function getHidden($key, $default = null) + { + /** @var \Illuminate\Log\Context\Repository $instance */ + return $instance->getHidden($key, $default); + } + /** + * Retrieve only the values of the given keys. + * + * @param array $keys + * @return array + * @static + */ public static function only($keys) + { + /** @var \Illuminate\Log\Context\Repository $instance */ + return $instance->only($keys); + } + /** + * Retrieve only the hidden values of the given keys. + * + * @param array $keys + * @return array + * @static + */ public static function onlyHidden($keys) + { + /** @var \Illuminate\Log\Context\Repository $instance */ + return $instance->onlyHidden($keys); + } + /** + * Add a context value. + * + * @param string|array $key + * @param mixed $value + * @return \Illuminate\Log\Context\Repository + * @static + */ public static function add($key, $value = null) + { + /** @var \Illuminate\Log\Context\Repository $instance */ + return $instance->add($key, $value); + } + /** + * Add a hidden context value. + * + * @param string|array $key + * @param mixed $value + * @return \Illuminate\Log\Context\Repository + * @static + */ public static function addHidden($key, $value = null) + { + /** @var \Illuminate\Log\Context\Repository $instance */ + return $instance->addHidden($key, $value); + } + /** + * Forget the given context key. + * + * @param string|array $key + * @return \Illuminate\Log\Context\Repository + * @static + */ public static function forget($key) + { + /** @var \Illuminate\Log\Context\Repository $instance */ + return $instance->forget($key); + } + /** + * Forget the given hidden context key. + * + * @param string|array $key + * @return \Illuminate\Log\Context\Repository + * @static + */ public static function forgetHidden($key) + { + /** @var \Illuminate\Log\Context\Repository $instance */ + return $instance->forgetHidden($key); + } + /** + * Add a context value if it does not exist yet. + * + * @param string $key + * @param mixed $value + * @return \Illuminate\Log\Context\Repository + * @static + */ public static function addIf($key, $value) + { + /** @var \Illuminate\Log\Context\Repository $instance */ + return $instance->addIf($key, $value); + } + /** + * Add a hidden context value if it does not exist yet. + * + * @param string $key + * @param mixed $value + * @return \Illuminate\Log\Context\Repository + * @static + */ public static function addHiddenIf($key, $value) + { + /** @var \Illuminate\Log\Context\Repository $instance */ + return $instance->addHiddenIf($key, $value); + } + /** + * Push the given values onto the key's stack. + * + * @param string $key + * @param mixed $values + * @return \Illuminate\Log\Context\Repository + * @throws \RuntimeException + * @static + */ public static function push($key, ...$values) + { + /** @var \Illuminate\Log\Context\Repository $instance */ + return $instance->push($key, ...$values); + } + /** + * Push the given hidden values onto the key's stack. + * + * @param string $key + * @param mixed $values + * @return \Illuminate\Log\Context\Repository + * @throws \RuntimeException + * @static + */ public static function pushHidden($key, ...$values) + { + /** @var \Illuminate\Log\Context\Repository $instance */ + return $instance->pushHidden($key, ...$values); + } + /** + * Determine if the repository is empty. + * + * @return bool + * @static + */ public static function isEmpty() + { + /** @var \Illuminate\Log\Context\Repository $instance */ + return $instance->isEmpty(); + } + /** + * Execute the given callback when context is about to be dehydrated. + * + * @param callable $callback + * @return \Illuminate\Log\Context\Repository + * @static + */ public static function dehydrating($callback) + { + /** @var \Illuminate\Log\Context\Repository $instance */ + return $instance->dehydrating($callback); + } + /** + * Execute the given callback when context has been hydrated. + * + * @param callable $callback + * @return \Illuminate\Log\Context\Repository + * @static + */ public static function hydrated($callback) + { + /** @var \Illuminate\Log\Context\Repository $instance */ + return $instance->hydrated($callback); + } + /** + * Handle unserialize exceptions using the given callback. + * + * @param callable|null $callback + * @return static + * @static + */ public static function handleUnserializeExceptionsUsing($callback) + { + /** @var \Illuminate\Log\Context\Repository $instance */ + return $instance->handleUnserializeExceptionsUsing($callback); + } + /** + * Flush all context data. + * + * @return \Illuminate\Log\Context\Repository + * @static + */ public static function flush() + { + /** @var \Illuminate\Log\Context\Repository $instance */ + return $instance->flush(); + } + /** + * Dehydrate the context data. + * + * @internal + * @return \Illuminate\Log\Context\?array + * @static + */ public static function dehydrate() + { + /** @var \Illuminate\Log\Context\Repository $instance */ + return $instance->dehydrate(); + } + /** + * Hydrate the context instance. + * + * @internal + * @param \Illuminate\Log\Context\?array $context + * @return \Illuminate\Log\Context\Repository + * @throws \RuntimeException + * @static + */ public static function hydrate($context) + { + /** @var \Illuminate\Log\Context\Repository $instance */ + return $instance->hydrate($context); + } + /** + * Apply the callback if the given "value" is (or resolves to) truthy. + * + * @template TWhenParameter + * @template TWhenReturnType + * @param \Illuminate\Log\Context\(\Closure($this): TWhenParameter)|TWhenParameter|null $value + * @param \Illuminate\Log\Context\(callable($this, TWhenParameter): TWhenReturnType)|null $callback + * @param \Illuminate\Log\Context\(callable($this, TWhenParameter): TWhenReturnType)|null $default + * @return $this|\Illuminate\Log\Context\TWhenReturnType + * @static + */ public static function when($value = null, $callback = null, $default = null) + { + /** @var \Illuminate\Log\Context\Repository $instance */ + return $instance->when($value, $callback, $default); + } + /** + * Apply the callback if the given "value" is (or resolves to) falsy. + * + * @template TUnlessParameter + * @template TUnlessReturnType + * @param \Illuminate\Log\Context\(\Closure($this): TUnlessParameter)|TUnlessParameter|null $value + * @param \Illuminate\Log\Context\(callable($this, TUnlessParameter): TUnlessReturnType)|null $callback + * @param \Illuminate\Log\Context\(callable($this, TUnlessParameter): TUnlessReturnType)|null $default + * @return $this|\Illuminate\Log\Context\TUnlessReturnType + * @static + */ public static function unless($value = null, $callback = null, $default = null) + { + /** @var \Illuminate\Log\Context\Repository $instance */ + return $instance->unless($value, $callback, $default); + } + /** + * Register a custom macro. + * + * @param string $name + * @param object|callable $macro + * @return void + * @static + */ public static function macro($name, $macro) + { + \Illuminate\Log\Context\Repository::macro($name, $macro); + } + /** + * Mix another object into the class. + * + * @param object $mixin + * @param bool $replace + * @return void + * @throws \ReflectionException + * @static + */ public static function mixin($mixin, $replace = true) + { + \Illuminate\Log\Context\Repository::mixin($mixin, $replace); + } + /** + * Checks if macro is registered. + * + * @param string $name + * @return bool + * @static + */ public static function hasMacro($name) + { + return \Illuminate\Log\Context\Repository::hasMacro($name); + } + /** + * Flush the existing macros. + * + * @return void + * @static + */ public static function flushMacros() + { + \Illuminate\Log\Context\Repository::flushMacros(); + } + /** + * Restore the model from the model identifier instance. + * + * @param \Illuminate\Contracts\Database\ModelIdentifier $value + * @return \Illuminate\Database\Eloquent\Model + * @static + */ public static function restoreModel($value) + { + /** @var \Illuminate\Log\Context\Repository $instance */ + return $instance->restoreModel($value); + } + } + /** + * + * * @see \Illuminate\Cookie\CookieJar */ class Cookie { /** @@ -4506,10 +5021,41 @@ * * @return string * @static - */ public static function getKey() + */ public static function getKey() + { + /** @var \Illuminate\Encryption\Encrypter $instance */ + return $instance->getKey(); + } + /** + * Get the current encryption key and all previous encryption keys. + * + * @return array + * @static + */ public static function getAllKeys() + { + /** @var \Illuminate\Encryption\Encrypter $instance */ + return $instance->getAllKeys(); + } + /** + * Get the previous encryption keys. + * + * @return array + * @static + */ public static function getPreviousKeys() + { + /** @var \Illuminate\Encryption\Encrypter $instance */ + return $instance->getPreviousKeys(); + } + /** + * Set the previous / legacy encryption keys that should be utilized if decryption fails. + * + * @param array $keys + * @return \Illuminate\Encryption\Encrypter + * @static + */ public static function previousKeys($keys) { /** @var \Illuminate\Encryption\Encrypter $instance */ - return $instance->getKey(); + return $instance->previousKeys($keys); } } /** @@ -4669,21 +5215,6 @@ { /** @var \Illuminate\Database\DatabaseManager $instance */ return $instance->connectUsing($name, $config, $force); - } - /** - * Register a custom Doctrine type. - * - * @param string $class - * @param string $name - * @param string $type - * @return void - * @throws \Doctrine\DBAL\Exception - * @throws \RuntimeException - * @static - */ public static function registerDoctrineType($class, $name, $type) - { - /** @var \Illuminate\Database\DatabaseManager $instance */ - $instance->registerDoctrineType($class, $name, $type); } /** * Disconnect from the given database and remove from local cache. @@ -4752,7 +5283,7 @@ $instance->setDefaultConnection($name); } /** - * Get all of the support drivers. + * Get all of the supported drivers. * * @return string[] * @static @@ -4890,6 +5421,16 @@ { /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->isMaria(); + } + /** + * Get the server version for the connection. + * + * @return string + * @static + */ public static function getServerVersion() + { + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->getServerVersion(); } /** * Get a schema builder instance for the connection. @@ -5332,58 +5873,6 @@ { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->useWriteConnectionWhenReading($value); - } - /** - * Is Doctrine available? - * - * @return bool - * @static - */ public static function isDoctrineAvailable() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->isDoctrineAvailable(); - } - /** - * Indicates whether native alter operations will be used when dropping, renaming, or modifying columns, even if Doctrine DBAL is installed. - * - * @return bool - * @static - */ public static function usingNativeSchemaOperations() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->usingNativeSchemaOperations(); - } - /** - * Get a Doctrine Schema Column instance. - * - * @param string $table - * @param string $column - * @return \Doctrine\DBAL\Schema\Column - * @static - */ public static function getDoctrineColumn($table, $column) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->getDoctrineColumn($table, $column); - } - /** - * Get the Doctrine DBAL schema manager for the connection. - * - * @return \Doctrine\DBAL\Schema\AbstractSchemaManager - * @static - */ public static function getDoctrineSchemaManager() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->getDoctrineSchemaManager(); - } - /** - * Get the Doctrine DBAL database connection instance. - * - * @return \Doctrine\DBAL\Connection - * @static - */ public static function getDoctrineConnection() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->getDoctrineConnection(); } /** * Get the current PDO connection. @@ -7367,7 +7856,7 @@ /** * Set the options to apply to every request. * - * @param array $options + * @param \Closure|array $options * @return \Illuminate\Http\Client\Factory * @static */ public static function globalOptions($options) @@ -8200,6 +8689,17 @@ { /** @var \Illuminate\Log\LogManager $instance */ $instance->log($level, $message, $context); + } + /** + * Set the application instance used by the manager. + * + * @param \Illuminate\Contracts\Foundation\Application $app + * @return \Illuminate\Log\LogManager + * @static + */ public static function setApplication($app) + { + /** @var \Illuminate\Log\LogManager $instance */ + return $instance->setApplication($app); } } /** @@ -8555,15 +9055,28 @@ * @param \Illuminate\Contracts\Mail\Mailable|string|array $view * @param array $data * @param \Closure|string|null $callback - * @return void + * @return mixed|void * @static */ public static function send($view, $data = [], $callback = null) { /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ - $instance->send($view, $data, $callback); + return $instance->send($view, $data, $callback); + } + /** + * Send a new message synchronously using a view. + * + * @param \Illuminate\Contracts\Mail\Mailable|string|array $mailable + * @param array $data + * @param \Closure|string|null $callback + * @return void + * @static + */ public static function sendNow($mailable, $data = [], $callback = null) + { + /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ + $instance->sendNow($mailable, $data, $callback); } /** - * Queue a new e-mail message for sending. + * Queue a new message for sending. * * @param \Illuminate\Contracts\Mail\Mailable|string|array $view * @param string|null $queue @@ -10829,12 +11342,11 @@ * @param array $files The FILES parameters * @param array $server The SERVER parameters * @param string|resource|null $content The raw body data - * @return void * @static */ public static function initialize($query = [], $request = [], $attributes = [], $cookies = [], $files = [], $server = [], $content = null) { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - $instance->initialize($query, $request, $attributes, $cookies, $files, $server, $content); + return $instance->initialize($query, $request, $attributes, $cookies, $files, $server, $content); } /** * Creates a new request with values from PHP's super globals. @@ -10869,11 +11381,10 @@ * to keep BC with an existing system. It should not be used for any * other purpose. * - * @return void * @static */ public static function setFactory($callable) { //Method inherited from \Symfony\Component\HttpFoundation\Request - \Illuminate\Http\Request::setFactory($callable); + return \Illuminate\Http\Request::setFactory($callable); } /** * Overrides the PHP global variables according to this request instance. @@ -10881,12 +11392,11 @@ * It overrides $_GET, $_POST, $_REQUEST, $_SERVER, $_COOKIE. * $_FILES is never overridden, see rfc1867 * - * @return void * @static */ public static function overrideGlobals() { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - $instance->overrideGlobals(); + return $instance->overrideGlobals(); } /** * Sets a list of trusted proxies. @@ -10895,11 +11405,10 @@ * * @param array $proxies A list of trusted proxies, the string 'REMOTE_ADDR' will be replaced with $_SERVER['REMOTE_ADDR'] * @param int $trustedHeaderSet A bit field of Request::HEADER_*, to set which headers to trust from your proxies - * @return void * @static */ public static function setTrustedProxies($proxies, $trustedHeaderSet) { //Method inherited from \Symfony\Component\HttpFoundation\Request - \Illuminate\Http\Request::setTrustedProxies($proxies, $trustedHeaderSet); + return \Illuminate\Http\Request::setTrustedProxies($proxies, $trustedHeaderSet); } /** * Gets the list of trusted proxies. @@ -10925,11 +11434,10 @@ * You should only list the hosts you manage using regexs. * * @param array $hostPatterns A list of trusted host patterns - * @return void * @static */ public static function setTrustedHosts($hostPatterns) { //Method inherited from \Symfony\Component\HttpFoundation\Request - \Illuminate\Http\Request::setTrustedHosts($hostPatterns); + return \Illuminate\Http\Request::setTrustedHosts($hostPatterns); } /** * Gets the list of trusted host patterns. @@ -10962,11 +11470,10 @@ * * The HTTP method can only be overridden when the real HTTP method is POST. * - * @return void * @static */ public static function enableHttpMethodParameterOverride() { //Method inherited from \Symfony\Component\HttpFoundation\Request - \Illuminate\Http\Request::enableHttpMethodParameterOverride(); + return \Illuminate\Http\Request::enableHttpMethodParameterOverride(); } /** * Checks whether support for the _method request parameter is enabled. @@ -10989,12 +11496,11 @@ /** * * - * @return void * @static */ public static function setSession($session) { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - $instance->setSession($session); + return $instance->setSession($session); } /** * @@ -11274,12 +11780,11 @@ /** * Sets the request method. * - * @return void * @static */ public static function setMethod($method) { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - $instance->setMethod($method); + return $instance->setMethod($method); } /** * Gets the request "intended" method. @@ -11340,12 +11845,11 @@ * Associates a format with mime types. * * @param string|string[] $mimeTypes The associated mime types (the preferred one must be the first as it will be used as the content type) - * @return void * @static */ public static function setFormat($format, $mimeTypes) { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - $instance->setFormat($format, $mimeTypes); + return $instance->setFormat($format, $mimeTypes); } /** * Gets the request format. @@ -11366,22 +11870,11 @@ /** * Sets the request format. * - * @return void * @static */ public static function setRequestFormat($format) { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - $instance->setRequestFormat($format); - } - /** - * Gets the usual name of the format associated with the request's media type (provided in the Content-Type header). - * - * @deprecated since Symfony 6.2, use getContentTypeFormat() instead - * @static - */ public static function getContentType() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->getContentType(); + return $instance->setRequestFormat($format); } /** * Gets the usual name of the format associated with the request's media type (provided in the Content-Type header). @@ -11396,12 +11889,11 @@ /** * Sets the default locale. * - * @return void * @static */ public static function setDefaultLocale($locale) { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - $instance->setDefaultLocale($locale); + return $instance->setDefaultLocale($locale); } /** * Get the default locale. @@ -11415,12 +11907,11 @@ /** * Sets the locale. * - * @return void * @static */ public static function setLocale($locale) { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - $instance->setLocale($locale); + return $instance->setLocale($locale); } /** * Get the locale. @@ -12210,26 +12701,26 @@ return $instance->file($key, $default); } /** - * Dump the request items and end the script. + * Dump the items. * * @param mixed $keys - * @return \Illuminate\Http\never + * @return \Illuminate\Http\Request * @static - */ public static function dd(...$keys) + */ public static function dump($keys = []) { /** @var \Illuminate\Http\Request $instance */ - return $instance->dd(...$keys); + return $instance->dump($keys); } /** - * Dump the items. + * Dump the given arguments and terminate execution. * - * @param mixed $keys - * @return \Illuminate\Http\Request + * @param mixed $args + * @return \Illuminate\Http\never * @static - */ public static function dump($keys = []) + */ public static function dd(...$args) { /** @var \Illuminate\Http\Request $instance */ - return $instance->dump($keys); + return $instance->dd(...$args); } /** * Register a custom macro. @@ -12325,6 +12816,16 @@ */ public static function hasValidSignatureWhileIgnoring($ignoreQuery = [], $absolute = true) { return \Illuminate\Http\Request::hasValidSignatureWhileIgnoring($ignoreQuery, $absolute); + } + /** + * + * + * @see \Illuminate\Foundation\Providers\FoundationServiceProvider::registerRequestSignatureValidation() + * @param mixed $ignoreQuery + * @static + */ public static function hasValidRelativeSignatureWhileIgnoring($ignoreQuery = []) + { + return \Illuminate\Http\Request::hasValidRelativeSignatureWhileIgnoring($ignoreQuery); } } /** @@ -13495,6 +13996,159 @@ /** * * + * @see \Illuminate\Console\Scheduling\Schedule + */ class Schedule { + /** + * Add a new callback event to the schedule. + * + * @param string|callable $callback + * @param array $parameters + * @return \Illuminate\Console\Scheduling\CallbackEvent + * @static + */ public static function call($callback, $parameters = []) + { + /** @var \Illuminate\Console\Scheduling\Schedule $instance */ + return $instance->call($callback, $parameters); + } + /** + * Add a new Artisan command event to the schedule. + * + * @param string $command + * @param array $parameters + * @return \Illuminate\Console\Scheduling\Event + * @static + */ public static function command($command, $parameters = []) + { + /** @var \Illuminate\Console\Scheduling\Schedule $instance */ + return $instance->command($command, $parameters); + } + /** + * Add a new job callback event to the schedule. + * + * @param object|string $job + * @param string|null $queue + * @param string|null $connection + * @return \Illuminate\Console\Scheduling\CallbackEvent + * @static + */ public static function job($job, $queue = null, $connection = null) + { + /** @var \Illuminate\Console\Scheduling\Schedule $instance */ + return $instance->job($job, $queue, $connection); + } + /** + * Add a new command event to the schedule. + * + * @param string $command + * @param array $parameters + * @return \Illuminate\Console\Scheduling\Event + * @static + */ public static function exec($command, $parameters = []) + { + /** @var \Illuminate\Console\Scheduling\Schedule $instance */ + return $instance->exec($command, $parameters); + } + /** + * Compile array input for a command. + * + * @param string|int $key + * @param array $value + * @return string + * @static + */ public static function compileArrayInput($key, $value) + { + /** @var \Illuminate\Console\Scheduling\Schedule $instance */ + return $instance->compileArrayInput($key, $value); + } + /** + * Determine if the server is allowed to run this event. + * + * @param \Illuminate\Console\Scheduling\Event $event + * @param \DateTimeInterface $time + * @return bool + * @static + */ public static function serverShouldRun($event, $time) + { + /** @var \Illuminate\Console\Scheduling\Schedule $instance */ + return $instance->serverShouldRun($event, $time); + } + /** + * Get all of the events on the schedule that are due. + * + * @param \Illuminate\Contracts\Foundation\Application $app + * @return \Illuminate\Support\Collection + * @static + */ public static function dueEvents($app) + { + /** @var \Illuminate\Console\Scheduling\Schedule $instance */ + return $instance->dueEvents($app); + } + /** + * Get all of the events on the schedule. + * + * @return \Illuminate\Console\Scheduling\Event[] + * @static + */ public static function events() + { + /** @var \Illuminate\Console\Scheduling\Schedule $instance */ + return $instance->events(); + } + /** + * Specify the cache store that should be used to store mutexes. + * + * @param string $store + * @return \Illuminate\Console\Scheduling\Schedule + * @static + */ public static function useCache($store) + { + /** @var \Illuminate\Console\Scheduling\Schedule $instance */ + return $instance->useCache($store); + } + /** + * Register a custom macro. + * + * @param string $name + * @param object|callable $macro + * @return void + * @static + */ public static function macro($name, $macro) + { + \Illuminate\Console\Scheduling\Schedule::macro($name, $macro); + } + /** + * Mix another object into the class. + * + * @param object $mixin + * @param bool $replace + * @return void + * @throws \ReflectionException + * @static + */ public static function mixin($mixin, $replace = true) + { + \Illuminate\Console\Scheduling\Schedule::mixin($mixin, $replace); + } + /** + * Checks if macro is registered. + * + * @param string $name + * @return bool + * @static + */ public static function hasMacro($name) + { + return \Illuminate\Console\Scheduling\Schedule::hasMacro($name); + } + /** + * Flush the existing macros. + * + * @return void + * @static + */ public static function flushMacros() + { + \Illuminate\Console\Scheduling\Schedule::flushMacros(); + } + } + /** + * + * * @see \Illuminate\Database\Schema\Builder */ class Schema { /** @@ -13538,28 +14192,6 @@ { /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ return $instance->getViews(); - } - /** - * Get all of the table names for the database. - * - * @deprecated Will be removed in a future Laravel version. - * @return array - * @static - */ public static function getAllTables() - { - /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - return $instance->getAllTables(); - } - /** - * Get all of the view names for the database. - * - * @deprecated Will be removed in a future Laravel version. - * @return array - * @static - */ public static function getAllViews() - { - /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - return $instance->getAllViews(); } /** * Get the columns for a given table. @@ -13652,16 +14284,6 @@ */ public static function morphUsingUlids() { //Method inherited from \Illuminate\Database\Schema\Builder \Illuminate\Database\Schema\MySqlBuilder::morphUsingUlids(); - } - /** - * Attempt to use native schema operations for dropping, renaming, and modifying columns, even if Doctrine DBAL is installed. - * - * @param bool $value - * @return void - * @static - */ public static function useNativeSchemaOperationsIfPossible($value = true) - { //Method inherited from \Illuminate\Database\Schema\Builder - \Illuminate\Database\Schema\MySqlBuilder::useNativeSchemaOperationsIfPossible($value); } /** * Determine if the given table exists. @@ -14962,7 +15584,7 @@ return $instance->directoryMissing($path); } /** - * Get the full path for the file at the given "short" path. + * Get the full path to the file that exists at the given relative path. * * @param string $path * @return string @@ -17067,7 +17689,7 @@ /** * Resolve asset paths using the provided resolver. * - * @param callable|null $urlResolver + * @param callable|null $resolver * @return \Illuminate\Foundation\Vite * @static */ public static function createAssetPathsUsing($resolver) @@ -17794,8 +18416,10 @@ return $instance->decryptString($encryptedString); } /** - * + * Copies the specified dump to a local temporary file, in case the dump is stored remotely. * + * @throws Exception + * @throws FileNotFoundException * @static */ public static function createTempFilePath($diskFilePath) { @@ -18519,6 +19143,16 @@ */ public static function hasValidSignatureWhileIgnoring($ignoreQuery = [], $absolute = true) { return \Illuminate\Http\Request::hasValidSignatureWhileIgnoring($ignoreQuery, $absolute); + } + /** + * + * + * @see \Illuminate\Foundation\Providers\FoundationServiceProvider::registerRequestSignatureValidation() + * @param mixed $ignoreQuery + * @static + */ public static function hasValidRelativeSignatureWhileIgnoring($ignoreQuery = []) + { + return \Illuminate\Http\Request::hasValidRelativeSignatureWhileIgnoring($ignoreQuery); } } } @@ -18534,6 +19168,7 @@ class Broadcast extends \Illuminate\Support\Facades\Broadcast {} class Bus extends \Illuminate\Support\Facades\Bus {} class Cache extends \Illuminate\Support\Facades\Cache {} class Config extends \Illuminate\Support\Facades\Config {} + class Context extends \Illuminate\Support\Facades\Context {} class Cookie extends \Illuminate\Support\Facades\Cookie {} class Crypt extends \Illuminate\Support\Facades\Crypt {} class Date extends \Illuminate\Support\Facades\Date {} @@ -18977,10 +19612,10 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { * @return \Illuminate\Contracts\Pagination\LengthAwarePaginator * @throws \InvalidArgumentException * @static - */ public static function paginate($perPage = null, $columns = [], $pageName = 'page', $page = null) + */ public static function paginate($perPage = null, $columns = [], $pageName = 'page', $page = null, $total = null) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->paginate($perPage, $columns, $pageName, $page); + return $instance->paginate($perPage, $columns, $pageName, $page, $total); } /** * Paginate the given query into a simple paginator. @@ -21315,6 +21950,18 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->limit($value); + } + /** + * Add a "group limit" clause to the query. + * + * @param int $value + * @param string $column + * @return \Illuminate\Database\Query\Builder + * @static + */ public static function groupLimit($value, $column) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->groupLimit($value, $column); } /** * Set the limit and offset for a given page. @@ -21900,12 +22547,13 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { /** * Dump the current SQL and bindings. * + * @param mixed $args * @return \Illuminate\Database\Query\Builder * @static - */ public static function dump() + */ public static function dump(...$args) { /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->dump(); + return $instance->dump(...$args); } /** * Dump the raw current SQL with embedded bindings. @@ -22012,6 +22660,7 @@ class Redirect extends \Illuminate\Support\Facades\Redirect {} class Request extends \Illuminate\Support\Facades\Request {} class Response extends \Illuminate\Support\Facades\Response {} class Route extends \Illuminate\Support\Facades\Route {} + class Schedule extends \Illuminate\Support\Facades\Schedule {} class Schema extends \Illuminate\Support\Facades\Schema {} class Session extends \Illuminate\Support\Facades\Session {} class Storage extends \Illuminate\Support\Facades\Storage {} diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php index 77ec359a..8677cd5c 100644 --- a/app/Http/Controllers/Controller.php +++ b/app/Http/Controllers/Controller.php @@ -2,11 +2,7 @@ namespace App\Http\Controllers; -use Illuminate\Foundation\Auth\Access\AuthorizesRequests; -use Illuminate\Foundation\Validation\ValidatesRequests; -use Illuminate\Routing\Controller as BaseController; - -class Controller extends BaseController +abstract class Controller { - use AuthorizesRequests, ValidatesRequests; + // } diff --git a/app/Models/Media.php b/app/Models/Media.php index b43244ba..8dd58bb8 100644 --- a/app/Models/Media.php +++ b/app/Models/Media.php @@ -52,13 +52,16 @@ class Media extends Model ]; /** - * The attributes that should be cast. + * Get the attributes that should be cast. * - * @var array + * @return array */ - protected $casts = [ - 'type' => MediaType::class, - ]; + protected function casts(): array + { + return [ + 'type' => MediaType::class, + ]; + } /** * Returns the user that owns the media. diff --git a/app/Models/UploadSlot.php b/app/Models/UploadSlot.php index aa852daa..e9d8a4af 100644 --- a/app/Models/UploadSlot.php +++ b/app/Models/UploadSlot.php @@ -57,13 +57,16 @@ class UploadSlot extends Model ]; /** - * The attributes that should be cast. + * Get the attributes that should be cast. * - * @var array + * @return array */ - protected $casts = [ - 'media_type' => MediaType::class, - ]; + protected function casts(): array + { + return [ + 'media_type' => MediaType::class, + ]; + } /** * The "booted" method of the model. diff --git a/app/Models/User.php b/app/Models/User.php index 961f071f..1df25a1c 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -69,14 +69,17 @@ class User extends Authenticatable ]; /** - * The attributes that should be cast. + * Get the attributes that should be cast. * - * @var array + * @return array */ - protected $casts = [ - 'email_verified_at' => 'datetime', - 'password' => 'hashed', - ]; + protected function casts(): array + { + return [ + 'email_verified_at' => 'datetime', + 'password' => 'hashed', + ]; + } /** * Returns media for the user. diff --git a/artisan b/artisan index 67a3329b..8e04b422 100755 --- a/artisan +++ b/artisan @@ -1,53 +1,15 @@ #!/usr/bin/env php make(Illuminate\Contracts\Console\Kernel::class); - -$status = $kernel->handle( - $input = new Symfony\Component\Console\Input\ArgvInput, - new Symfony\Component\Console\Output\ConsoleOutput -); - -/* -|-------------------------------------------------------------------------- -| Shutdown The Application -|-------------------------------------------------------------------------- -| -| Once Artisan has finished running, we will fire off the shutdown events -| so that any final work may be done by the application before we shut -| down the process. This is the last thing to happen to the request. -| -*/ - -$kernel->terminate($input, $status); +// Bootstrap Laravel and handle the command... +$status = (require_once __DIR__.'/bootstrap/app.php') + ->handleCommand(new ArgvInput); exit($status); diff --git a/bootstrap/app.php b/bootstrap/app.php index 037e17df..7b162dac 100644 --- a/bootstrap/app.php +++ b/bootstrap/app.php @@ -1,55 +1,18 @@ singleton( - Illuminate\Contracts\Http\Kernel::class, - App\Http\Kernel::class -); - -$app->singleton( - Illuminate\Contracts\Console\Kernel::class, - App\Console\Kernel::class -); - -$app->singleton( - Illuminate\Contracts\Debug\ExceptionHandler::class, - App\Exceptions\Handler::class -); - -/* -|-------------------------------------------------------------------------- -| Return The Application -|-------------------------------------------------------------------------- -| -| This script returns the application instance. The instance is given to -| the calling script so we can separate the building of the instances -| from the actual running of the application and sending responses. -| -*/ - -return $app; +use Illuminate\Foundation\Application; +use Illuminate\Foundation\Configuration\Exceptions; +use Illuminate\Foundation\Configuration\Middleware; + +return Application::configure(basePath: dirname(__DIR__)) + ->withRouting( + web: __DIR__.'/../routes/web.php', + commands: __DIR__.'/../routes/console.php', + health: '/up', + ) + ->withMiddleware(function (Middleware $middleware) { + // + }) + ->withExceptions(function (Exceptions $exceptions) { + // + })->create(); diff --git a/composer.json b/composer.json index 7d3bf9c0..1a2ed565 100644 --- a/composer.json +++ b/composer.json @@ -5,29 +5,27 @@ "keywords": ["framework", "laravel"], "license": "MIT", "require": { - "php": "^8.1", + "php": "^8.2", "ext-fileinfo": "*", "ext-sodium": "*", "aminyazdanpanah/php-ffmpeg-video-streaming": "^1.2.17", - "cybex/laravel-protector": "^2.0", - "guzzlehttp/guzzle": "^7.2", + "cybex/laravel-protector": "^3.0", "intervention/image": "^2.7", - "laravel/framework": "^10.0", - "laravel/sanctum": "^3.2", - "laravel/tinker": "^2.7", + "laravel/framework": "^11.0", + "laravel/tinker": "^2.9", "league/flysystem-aws-s3-v3": "^3.12", "pion/laravel-chunk-upload": "^1.5", "spatie/laravel-image-optimizer": "^1.7" }, "require-dev": { "barryvdh/laravel-ide-helper": "^3.0", - "fakerphp/faker": "^1.9.1", - "laravel/pint": "^1.0", - "laravel/sail": "^1.0.1", - "mockery/mockery": "^1.4.4", - "nunomaduro/collision": "^7.0", - "phpunit/phpunit": "^10.0", - "spatie/laravel-ignition": "^2.0" + "fakerphp/faker": "^1.23", + "laravel/pint": "^1.13", + "laravel/sail": "^1.26", + "mockery/mockery": "^1.6", + "nunomaduro/collision": "^8.1", + "phpunit/phpunit": "^11.0.1", + "spatie/laravel-ignition": "^2.4" }, "autoload": { "psr-4": { diff --git a/composer.lock b/composer.lock index 27540854..5f3e849d 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": "db725f510c6414bba2f7f4a84db14cb1", + "content-hash": "19bc47efd723eb3f28c00bc1291e7877", "packages": [ { "name": "aminyazdanpanah/php-ffmpeg-video-streaming", @@ -162,16 +162,16 @@ }, { "name": "aws/aws-sdk-php", - "version": "3.301.2", + "version": "3.303.1", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "7f8180275e624cb566d8af77d2f1c958bf5be35b" + "reference": "e695623e9f6f278bed69172fddb932de3705030f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/7f8180275e624cb566d8af77d2f1c958bf5be35b", - "reference": "7f8180275e624cb566d8af77d2f1c958bf5be35b", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/e695623e9f6f278bed69172fddb932de3705030f", + "reference": "e695623e9f6f278bed69172fddb932de3705030f", "shasum": "" }, "require": { @@ -251,9 +251,9 @@ "support": { "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80", "issues": "https://github.com/aws/aws-sdk-php/issues", - "source": "https://github.com/aws/aws-sdk-php/tree/3.301.2" + "source": "https://github.com/aws/aws-sdk-php/tree/3.303.1" }, - "time": "2024-03-18T18:06:18+00:00" + "time": "2024-04-02T18:09:38+00:00" }, { "name": "brick/math", @@ -312,26 +312,26 @@ }, { "name": "carbonphp/carbon-doctrine-types", - "version": "2.1.0", + "version": "3.2.0", "source": { "type": "git", "url": "https://github.com/CarbonPHP/carbon-doctrine-types.git", - "reference": "99f76ffa36cce3b70a4a6abce41dba15ca2e84cb" + "reference": "18ba5ddfec8976260ead6e866180bd5d2f71aa1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/99f76ffa36cce3b70a4a6abce41dba15ca2e84cb", - "reference": "99f76ffa36cce3b70a4a6abce41dba15ca2e84cb", + "url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/18ba5ddfec8976260ead6e866180bd5d2f71aa1d", + "reference": "18ba5ddfec8976260ead6e866180bd5d2f71aa1d", "shasum": "" }, "require": { - "php": "^7.4 || ^8.0" + "php": "^8.1" }, "conflict": { - "doctrine/dbal": "<3.7.0 || >=4.0.0" + "doctrine/dbal": "<4.0.0 || >=5.0.0" }, "require-dev": { - "doctrine/dbal": "^3.7.0", + "doctrine/dbal": "^4.0.0", "nesbot/carbon": "^2.71.0 || ^3.0.0", "phpunit/phpunit": "^10.3" }, @@ -361,7 +361,7 @@ ], "support": { "issues": "https://github.com/CarbonPHP/carbon-doctrine-types/issues", - "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/2.1.0" + "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/3.2.0" }, "funding": [ { @@ -377,20 +377,20 @@ "type": "tidelift" } ], - "time": "2023-12-11T17:09:12+00:00" + "time": "2024-02-09T16:56:22+00:00" }, { "name": "cybex/laravel-protector", - "version": "v2.2.0", + "version": "v3.0.0", "source": { "type": "git", "url": "https://github.com/cybex-gmbh/laravel-protector.git", - "reference": "29ee0e8f1a93dad1db80f1e57449e96cdd17520a" + "reference": "1b3a2092b398528be884ffe6370df8e2f4da3616" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cybex-gmbh/laravel-protector/zipball/29ee0e8f1a93dad1db80f1e57449e96cdd17520a", - "reference": "29ee0e8f1a93dad1db80f1e57449e96cdd17520a", + "url": "https://api.github.com/repos/cybex-gmbh/laravel-protector/zipball/1b3a2092b398528be884ffe6370df8e2f4da3616", + "reference": "1b3a2092b398528be884ffe6370df8e2f4da3616", "shasum": "" }, "require": { @@ -400,15 +400,15 @@ "ext-pdo": "*", "ext-sodium": "*", "guzzlehttp/guzzle": "^7.4", - "illuminate/support": "^9.0|^10.0", - "laravel/framework": "^9.0|^10.0", - "laravel/sanctum": "^3.2", - "php": "^8.1" + "illuminate/support": "^11.0", + "laravel/framework": "^11.0", + "laravel/sanctum": "^4.0", + "php": "^8.2" }, "require-dev": { - "laravel/sail": "^1.18", - "orchestra/testbench": "^7.0|^8.0", - "phpunit/phpunit": "^9.5" + "laravel/sail": "^1.26", + "orchestra/testbench": "^9.0", + "phpunit/phpunit": "^10.5" }, "type": "library", "extra": { @@ -450,9 +450,9 @@ ], "support": { "issues": "https://github.com/cybex-gmbh/laravel-protector/issues", - "source": "https://github.com/cybex-gmbh/laravel-protector/tree/v2.2.0" + "source": "https://github.com/cybex-gmbh/laravel-protector/tree/v3.0.0" }, - "time": "2024-03-12T15:33:26+00:00" + "time": "2024-03-15T15:46:00+00:00" }, { "name": "dflydev/dot-access-data", @@ -1502,16 +1502,16 @@ }, { "name": "laravel/framework", - "version": "v10.48.3", + "version": "v11.2.0", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "5791c052b41c6b593556adc687076bfbdd13c501" + "reference": "a1750156b671f37cba702380107e2d22161c31e3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/5791c052b41c6b593556adc687076bfbdd13c501", - "reference": "5791c052b41c6b593556adc687076bfbdd13c501", + "url": "https://api.github.com/repos/laravel/framework/zipball/a1750156b671f37cba702380107e2d22161c31e3", + "reference": "a1750156b671f37cba702380107e2d22161c31e3", "shasum": "" }, "require": { @@ -1527,40 +1527,39 @@ "ext-openssl": "*", "ext-session": "*", "ext-tokenizer": "*", - "fruitcake/php-cors": "^1.2", + "fruitcake/php-cors": "^1.3", + "guzzlehttp/guzzle": "^7.8", "guzzlehttp/uri-template": "^1.0", - "laravel/prompts": "^0.1.9", + "laravel/prompts": "^0.1.15", "laravel/serializable-closure": "^1.3", "league/commonmark": "^2.2.1", "league/flysystem": "^3.8.0", "monolog/monolog": "^3.0", - "nesbot/carbon": "^2.67", - "nunomaduro/termwind": "^1.13", - "php": "^8.1", + "nesbot/carbon": "^2.72.2|^3.0", + "nunomaduro/termwind": "^2.0", + "php": "^8.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.7", - "symfony/console": "^6.2", - "symfony/error-handler": "^6.2", - "symfony/finder": "^6.2", - "symfony/http-foundation": "^6.4", - "symfony/http-kernel": "^6.2", - "symfony/mailer": "^6.2", - "symfony/mime": "^6.2", - "symfony/process": "^6.2", - "symfony/routing": "^6.2", - "symfony/uid": "^6.2", - "symfony/var-dumper": "^6.2", + "symfony/console": "^7.0", + "symfony/error-handler": "^7.0", + "symfony/finder": "^7.0", + "symfony/http-foundation": "^7.0", + "symfony/http-kernel": "^7.0", + "symfony/mailer": "^7.0", + "symfony/mime": "^7.0", + "symfony/polyfill-php83": "^1.28", + "symfony/process": "^7.0", + "symfony/routing": "^7.0", + "symfony/uid": "^7.0", + "symfony/var-dumper": "^7.0", "tijsverkoyen/css-to-inline-styles": "^2.2.5", "vlucas/phpdotenv": "^5.4.1", "voku/portable-ascii": "^2.0" }, "conflict": { - "carbonphp/carbon-doctrine-types": ">=3.0", - "doctrine/dbal": ">=4.0", "mockery/mockery": "1.6.8", - "phpunit/phpunit": ">=11.0.0", "tightenco/collect": "<5.5.33" }, "provide": { @@ -1600,36 +1599,35 @@ "illuminate/testing": "self.version", "illuminate/translation": "self.version", "illuminate/validation": "self.version", - "illuminate/view": "self.version" + "illuminate/view": "self.version", + "spatie/once": "*" }, "require-dev": { "ably/ably-php": "^1.0", "aws/aws-sdk-php": "^3.235.5", - "doctrine/dbal": "^3.5.1", "ext-gmp": "*", - "fakerphp/faker": "^1.21", - "guzzlehttp/guzzle": "^7.5", + "fakerphp/faker": "^1.23", "league/flysystem-aws-s3-v3": "^3.0", "league/flysystem-ftp": "^3.0", "league/flysystem-path-prefixing": "^3.3", "league/flysystem-read-only": "^3.3", "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.5.1", + "mockery/mockery": "^1.6", "nyholm/psr7": "^1.2", - "orchestra/testbench-core": "^8.18", - "pda/pheanstalk": "^4.0", + "orchestra/testbench-core": "^9.0.6", + "pda/pheanstalk": "^5.0", "phpstan/phpstan": "^1.4.7", - "phpunit/phpunit": "^10.0.7", + "phpunit/phpunit": "^10.5|^11.0", "predis/predis": "^2.0.2", - "symfony/cache": "^6.2", - "symfony/http-client": "^6.2.4", - "symfony/psr-http-message-bridge": "^2.0" + "resend/resend-php": "^0.10.0", + "symfony/cache": "^7.0", + "symfony/http-client": "^7.0", + "symfony/psr-http-message-bridge": "^7.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.235.5).", - "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^3.5.1).", + "brianium/paratest": "Required to run tests in parallel (^7.0|^8.0).", "ext-apcu": "Required to use the APC cache driver.", "ext-fileinfo": "Required to use the Filesystem class.", "ext-ftp": "Required to use the Flysystem FTP driver.", @@ -1641,31 +1639,31 @@ "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 and the ping methods on schedules (^7.5).", "laravel/tinker": "Required to use the tinker console command (^2.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-path-prefixing": "Required to use the scoped driver (^3.3).", "league/flysystem-read-only": "Required to use read-only disks (^3.3)", "league/flysystem-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", - "mockery/mockery": "Required to use mocking (^1.5.1).", + "mockery/mockery": "Required to use mocking (^1.6).", "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 (^9.5.8|^10.0.7).", + "pda/pheanstalk": "Required to use the beanstalk queue driver (^5.0).", + "phpunit/phpunit": "Required to use assertions and run tests (^10.5|^11.0).", "predis/predis": "Required to use the predis connector (^2.0.2).", "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 (^6.0|^7.0).", - "symfony/cache": "Required to PSR-6 cache bridge (^6.2).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.2).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.2).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.2).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.2).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." + "resend/resend-php": "Required to enable support for the Resend mail transport (^0.10.0).", + "symfony/cache": "Required to PSR-6 cache bridge (^7.0).", + "symfony/filesystem": "Required to enable support for relative symbolic links (^7.0).", + "symfony/http-client": "Required to enable support for the Symfony API mail transports (^7.0).", + "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^7.0).", + "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^7.0).", + "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^7.0)." }, "type": "library", "extra": { "branch-alias": { - "dev-master": "10.x-dev" + "dev-master": "11.x-dev" } }, "autoload": { @@ -1705,20 +1703,20 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2024-03-15T10:17:07+00:00" + "time": "2024-04-02T14:01:33+00:00" }, { "name": "laravel/prompts", - "version": "v0.1.16", + "version": "v0.1.17", "source": { "type": "git", "url": "https://github.com/laravel/prompts.git", - "reference": "ca6872ab6aec3ab61db3a61f83a6caf764ec7781" + "reference": "8ee9f87f7f9eadcbe21e9e72cd4176b2f06cd5b5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/prompts/zipball/ca6872ab6aec3ab61db3a61f83a6caf764ec7781", - "reference": "ca6872ab6aec3ab61db3a61f83a6caf764ec7781", + "url": "https://api.github.com/repos/laravel/prompts/zipball/8ee9f87f7f9eadcbe21e9e72cd4176b2f06cd5b5", + "reference": "8ee9f87f7f9eadcbe21e9e72cd4176b2f06cd5b5", "shasum": "" }, "require": { @@ -1760,43 +1758,41 @@ ], "support": { "issues": "https://github.com/laravel/prompts/issues", - "source": "https://github.com/laravel/prompts/tree/v0.1.16" + "source": "https://github.com/laravel/prompts/tree/v0.1.17" }, - "time": "2024-02-21T19:25:27+00:00" + "time": "2024-03-13T16:05:43+00:00" }, { "name": "laravel/sanctum", - "version": "v3.3.3", + "version": "v4.0.1", "source": { "type": "git", "url": "https://github.com/laravel/sanctum.git", - "reference": "8c104366459739f3ada0e994bcd3e6fd681ce3d5" + "reference": "d1de99bf8d31199aaf93881561622489ab91ba58" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/8c104366459739f3ada0e994bcd3e6fd681ce3d5", - "reference": "8c104366459739f3ada0e994bcd3e6fd681ce3d5", + "url": "https://api.github.com/repos/laravel/sanctum/zipball/d1de99bf8d31199aaf93881561622489ab91ba58", + "reference": "d1de99bf8d31199aaf93881561622489ab91ba58", "shasum": "" }, "require": { "ext-json": "*", - "illuminate/console": "^9.21|^10.0", - "illuminate/contracts": "^9.21|^10.0", - "illuminate/database": "^9.21|^10.0", - "illuminate/support": "^9.21|^10.0", - "php": "^8.0.2" + "illuminate/console": "^11.0", + "illuminate/contracts": "^11.0", + "illuminate/database": "^11.0", + "illuminate/support": "^11.0", + "php": "^8.2", + "symfony/console": "^7.0" }, "require-dev": { - "mockery/mockery": "^1.0", - "orchestra/testbench": "^7.28.2|^8.8.3", + "mockery/mockery": "^1.6", + "orchestra/testbench": "^9.0", "phpstan/phpstan": "^1.10", - "phpunit/phpunit": "^9.6" + "phpunit/phpunit": "^10.5" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - }, "laravel": { "providers": [ "Laravel\\Sanctum\\SanctumServiceProvider" @@ -1828,7 +1824,7 @@ "issues": "https://github.com/laravel/sanctum/issues", "source": "https://github.com/laravel/sanctum" }, - "time": "2023-12-19T18:44:48+00:00" + "time": "2024-03-19T20:09:38+00:00" }, { "name": "laravel/serializable-closure", @@ -2146,16 +2142,16 @@ }, { "name": "league/flysystem", - "version": "3.25.1", + "version": "3.26.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "abbd664eb4381102c559d358420989f835208f18" + "reference": "072735c56cc0da00e10716dd90d5a7f7b40b36be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/abbd664eb4381102c559d358420989f835208f18", - "reference": "abbd664eb4381102c559d358420989f835208f18", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/072735c56cc0da00e10716dd90d5a7f7b40b36be", + "reference": "072735c56cc0da00e10716dd90d5a7f7b40b36be", "shasum": "" }, "require": { @@ -2220,7 +2216,7 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/3.25.1" + "source": "https://github.com/thephpleague/flysystem/tree/3.26.0" }, "funding": [ { @@ -2232,20 +2228,20 @@ "type": "github" } ], - "time": "2024-03-16T12:53:19+00:00" + "time": "2024-03-25T11:49:53+00:00" }, { "name": "league/flysystem-aws-s3-v3", - "version": "3.25.1", + "version": "3.26.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem-aws-s3-v3.git", - "reference": "6a5be0e6d6a93574e80805c9cc108a4b63c824d8" + "reference": "885d0a758c71ae3cd6c503544573a1fdb8dc754f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/6a5be0e6d6a93574e80805c9cc108a4b63c824d8", - "reference": "6a5be0e6d6a93574e80805c9cc108a4b63c824d8", + "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/885d0a758c71ae3cd6c503544573a1fdb8dc754f", + "reference": "885d0a758c71ae3cd6c503544573a1fdb8dc754f", "shasum": "" }, "require": { @@ -2285,7 +2281,7 @@ "storage" ], "support": { - "source": "https://github.com/thephpleague/flysystem-aws-s3-v3/tree/3.25.1" + "source": "https://github.com/thephpleague/flysystem-aws-s3-v3/tree/3.26.0" }, "funding": [ { @@ -2297,7 +2293,7 @@ "type": "github" } ], - "time": "2024-03-15T19:58:44+00:00" + "time": "2024-03-24T21:11:18+00:00" }, { "name": "league/flysystem-local", @@ -2583,42 +2579,41 @@ }, { "name": "nesbot/carbon", - "version": "2.72.3", + "version": "3.2.3", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "0c6fd108360c562f6e4fd1dedb8233b423e91c83" + "reference": "4d599a6e2351d6b6bf21737accdfe1a4ce3fdbb1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/0c6fd108360c562f6e4fd1dedb8233b423e91c83", - "reference": "0c6fd108360c562f6e4fd1dedb8233b423e91c83", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/4d599a6e2351d6b6bf21737accdfe1a4ce3fdbb1", + "reference": "4d599a6e2351d6b6bf21737accdfe1a4ce3fdbb1", "shasum": "" }, "require": { "carbonphp/carbon-doctrine-types": "*", "ext-json": "*", - "php": "^7.1.8 || ^8.0", + "php": "^8.1", "psr/clock": "^1.0", + "symfony/clock": "^6.3 || ^7.0", "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" + "symfony/translation": "^4.4.18 || ^5.2.1|| ^6.0 || ^7.0" }, "provide": { "psr/clock-implementation": "1.0" }, "require-dev": { - "doctrine/dbal": "^2.0 || ^3.1.4 || ^4.0", - "doctrine/orm": "^2.7 || ^3.0", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "ondrejmirtes/better-reflection": "*", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.99 || ^1.7.14", - "phpunit/php-file-iterator": "^2.0.5 || ^3.0.6", - "phpunit/phpunit": "^7.5.20 || ^8.5.26 || ^9.5.20", - "squizlabs/php_codesniffer": "^3.4" + "doctrine/dbal": "^3.6.3 || ^4.0", + "doctrine/orm": "^2.15.2 || ^3.0", + "friendsofphp/php-cs-fixer": "^3.52.1", + "kylekatarnls/multi-tester": "^2.5.3", + "ondrejmirtes/better-reflection": "^6.25.0.4", + "phpmd/phpmd": "^2.15.0", + "phpstan/extension-installer": "^1.3.1", + "phpstan/phpstan": "^1.10.65", + "phpunit/phpunit": "^10.5.15", + "squizlabs/php_codesniffer": "^3.9.0" }, "bin": [ "bin/carbon" @@ -2626,8 +2621,8 @@ "type": "library", "extra": { "branch-alias": { - "dev-3.x": "3.x-dev", - "dev-master": "2.x-dev" + "dev-master": "3.x-dev", + "dev-2.x": "2.x-dev" }, "laravel": { "providers": [ @@ -2686,7 +2681,7 @@ "type": "tidelift" } ], - "time": "2024-01-25T10:35:09+00:00" + "time": "2024-03-30T18:22:00+00:00" }, { "name": "nette/schema", @@ -2896,33 +2891,32 @@ }, { "name": "nunomaduro/termwind", - "version": "v1.15.1", + "version": "v2.0.1", "source": { "type": "git", "url": "https://github.com/nunomaduro/termwind.git", - "reference": "8ab0b32c8caa4a2e09700ea32925441385e4a5dc" + "reference": "58c4c58cf23df7f498daeb97092e34f5259feb6a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/8ab0b32c8caa4a2e09700ea32925441385e4a5dc", - "reference": "8ab0b32c8caa4a2e09700ea32925441385e4a5dc", + "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/58c4c58cf23df7f498daeb97092e34f5259feb6a", + "reference": "58c4c58cf23df7f498daeb97092e34f5259feb6a", "shasum": "" }, "require": { "ext-mbstring": "*", - "php": "^8.0", - "symfony/console": "^5.3.0|^6.0.0" + "php": "^8.2", + "symfony/console": "^7.0.4" }, "require-dev": { - "ergebnis/phpstan-rules": "^1.0.", - "illuminate/console": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "laravel/pint": "^1.0.0", - "pestphp/pest": "^1.21.0", - "pestphp/pest-plugin-mock": "^1.0", - "phpstan/phpstan": "^1.4.6", - "phpstan/phpstan-strict-rules": "^1.1.0", - "symfony/var-dumper": "^5.2.7|^6.0.0", + "ergebnis/phpstan-rules": "^2.2.0", + "illuminate/console": "^11.0.0", + "laravel/pint": "^1.14.0", + "mockery/mockery": "^1.6.7", + "pestphp/pest": "^2.34.1", + "phpstan/phpstan": "^1.10.59", + "phpstan/phpstan-strict-rules": "^1.5.2", + "symfony/var-dumper": "^7.0.4", "thecodingmachine/phpstan-strict-rules": "^1.0.0" }, "type": "library", @@ -2931,6 +2925,9 @@ "providers": [ "Termwind\\Laravel\\TermwindServiceProvider" ] + }, + "branch-alias": { + "dev-2.x": "2.x-dev" } }, "autoload": { @@ -2962,7 +2959,7 @@ ], "support": { "issues": "https://github.com/nunomaduro/termwind/issues", - "source": "https://github.com/nunomaduro/termwind/tree/v1.15.1" + "source": "https://github.com/nunomaduro/termwind/tree/v2.0.1" }, "funding": [ { @@ -2978,7 +2975,7 @@ "type": "github" } ], - "time": "2023-02-08T01:06:31+00:00" + "time": "2024-03-06T16:17:14+00:00" }, { "name": "php-ffmpeg/php-ffmpeg", @@ -3146,29 +3143,29 @@ }, { "name": "pion/laravel-chunk-upload", - "version": "v1.5.2", + "version": "v1.5.4", "source": { "type": "git", "url": "https://github.com/pionl/laravel-chunk-upload.git", - "reference": "dcf5cf42059910242c31fc34d0ea147d07478473" + "reference": "cfbc4292ddcace51308a4f2f446d310aa04e6133" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pionl/laravel-chunk-upload/zipball/dcf5cf42059910242c31fc34d0ea147d07478473", - "reference": "dcf5cf42059910242c31fc34d0ea147d07478473", + "url": "https://api.github.com/repos/pionl/laravel-chunk-upload/zipball/cfbc4292ddcace51308a4f2f446d310aa04e6133", + "reference": "cfbc4292ddcace51308a4f2f446d310aa04e6133", "shasum": "" }, "require": { - "illuminate/console": "5.2 - 5.8 | ^6.0 | ^7.0 | ^8.0 | ^9.0 | ^10.0", - "illuminate/filesystem": "5.2 - 5.8 | ^6.0 | ^7.0 | ^8.0 | ^9.0 | ^10.0", - "illuminate/http": "5.2 - 5.8 | ^6.0 | ^7.0 | ^8.0 | ^9.0 | ^10.0", - "illuminate/support": "5.2 - 5.8 | ^6.0 | ^7.0 | ^8.0 | ^9.0 | ^10.0" + "illuminate/console": "5.2 - 5.8 | ^6.0 | ^7.0 | ^8.0 | ^9.0 | ^10.0 | ^11.0", + "illuminate/filesystem": "5.2 - 5.8 | ^6.0 | ^7.0 | ^8.0 | ^9.0 | ^10.0 | ^11.0", + "illuminate/http": "5.2 - 5.8 | ^6.0 | ^7.0 | ^8.0 | ^9.0 | ^10.0 | ^11.0", + "illuminate/support": "5.2 - 5.8 | ^6.0 | ^7.0 | ^8.0 | ^9.0 | ^10.0 | ^11.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^2.16.0", - "mockery/mockery": "^1.1.0 | ^1.3.0", - "overtrue/phplint": "^1.1 | ^2.0", - "phpunit/phpunit": "5.7 | 6.0 | 7.0 | 7.5 | 8.4 | ^8.5 | ^9.3 | ^10.0" + "friendsofphp/php-cs-fixer": "^2.16.0 | ^3.52.0", + "mockery/mockery": "^1.1.0 | ^1.3.0 | ^1.6.0", + "overtrue/phplint": "^1.1 | ^2.0 | ^9.1", + "phpunit/phpunit": "5.7 | 6.0 | 7.0 | 7.5 | 8.4 | ^8.5 | ^9.3 | ^10.0 | ^11.0" }, "type": "library", "extra": { @@ -3196,7 +3193,7 @@ "description": "Service for chunked upload with several js providers", "support": { "issues": "https://github.com/pionl/laravel-chunk-upload/issues", - "source": "https://github.com/pionl/laravel-chunk-upload/tree/v1.5.2" + "source": "https://github.com/pionl/laravel-chunk-upload/tree/v1.5.4" }, "funding": [ { @@ -3208,7 +3205,7 @@ "type": "github" } ], - "time": "2023-03-15T21:02:42+00:00" + "time": "2024-03-25T15:50:07+00:00" }, { "name": "psr/cache", @@ -3673,16 +3670,16 @@ }, { "name": "psy/psysh", - "version": "v0.12.2", + "version": "v0.12.3", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "9185c66c2165bbf4d71de78a69dccf4974f9538d" + "reference": "b6b6cce7d3ee8fbf31843edce5e8f5a72eff4a73" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/9185c66c2165bbf4d71de78a69dccf4974f9538d", - "reference": "9185c66c2165bbf4d71de78a69dccf4974f9538d", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/b6b6cce7d3ee8fbf31843edce5e8f5a72eff4a73", + "reference": "b6b6cce7d3ee8fbf31843edce5e8f5a72eff4a73", "shasum": "" }, "require": { @@ -3746,9 +3743,9 @@ ], "support": { "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/v0.12.2" + "source": "https://github.com/bobthecow/psysh/tree/v0.12.3" }, - "time": "2024-03-17T01:53:00+00:00" + "time": "2024-04-02T15:57:53+00:00" }, { "name": "ralouphie/getallheaders", @@ -4161,31 +4158,31 @@ }, { "name": "symfony/cache", - "version": "v6.4.4", + "version": "v7.0.6", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "0ef36534694c572ff526d91c7181f3edede176e7" + "reference": "2d0d3f92c74c445410d05374908b03e0a1131e2b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/0ef36534694c572ff526d91c7181f3edede176e7", - "reference": "0ef36534694c572ff526d91c7181f3edede176e7", + "url": "https://api.github.com/repos/symfony/cache/zipball/2d0d3f92c74c445410d05374908b03e0a1131e2b", + "reference": "2d0d3f92c74c445410d05374908b03e0a1131e2b", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "psr/cache": "^2.0|^3.0", "psr/log": "^1.1|^2|^3", "symfony/cache-contracts": "^2.5|^3", "symfony/service-contracts": "^2.5|^3", - "symfony/var-exporter": "^6.3.6|^7.0" + "symfony/var-exporter": "^6.4|^7.0" }, "conflict": { - "doctrine/dbal": "<2.13.1", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/var-dumper": "<5.4" + "doctrine/dbal": "<3.6", + "symfony/dependency-injection": "<6.4", + "symfony/http-kernel": "<6.4", + "symfony/var-dumper": "<6.4" }, "provide": { "psr/cache-implementation": "2.0|3.0", @@ -4194,15 +4191,15 @@ }, "require-dev": { "cache/integration-tests": "dev-master", - "doctrine/dbal": "^2.13.1|^3|^4", + "doctrine/dbal": "^3.6|^4", "predis/predis": "^1.1|^2.0", "psr/simple-cache": "^1.0|^2.0|^3.0", - "symfony/config": "^5.4|^6.0|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/filesystem": "^5.4|^6.0|^7.0", - "symfony/http-kernel": "^5.4|^6.0|^7.0", - "symfony/messenger": "^5.4|^6.0|^7.0", - "symfony/var-dumper": "^5.4|^6.0|^7.0" + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/filesystem": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", + "symfony/var-dumper": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -4237,7 +4234,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v6.4.4" + "source": "https://github.com/symfony/cache/tree/v7.0.6" }, "funding": [ { @@ -4253,20 +4250,20 @@ "type": "tidelift" } ], - "time": "2024-02-22T20:27:10+00:00" + "time": "2024-03-27T19:55:25+00:00" }, { "name": "symfony/cache-contracts", - "version": "v3.4.0", + "version": "v3.4.2", "source": { "type": "git", "url": "https://github.com/symfony/cache-contracts.git", - "reference": "1d74b127da04ffa87aa940abe15446fa89653778" + "reference": "2c9db6509a1b21dad229606897639d3284f54b2a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/1d74b127da04ffa87aa940abe15446fa89653778", - "reference": "1d74b127da04ffa87aa940abe15446fa89653778", + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/2c9db6509a1b21dad229606897639d3284f54b2a", + "reference": "2c9db6509a1b21dad229606897639d3284f54b2a", "shasum": "" }, "require": { @@ -4313,7 +4310,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/cache-contracts/tree/v3.4.0" + "source": "https://github.com/symfony/cache-contracts/tree/v3.4.2" }, "funding": [ { @@ -4329,51 +4326,124 @@ "type": "tidelift" } ], - "time": "2023-09-25T12:52:38+00:00" + "time": "2024-01-23T14:51:35+00:00" + }, + { + "name": "symfony/clock", + "version": "v7.0.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/clock.git", + "reference": "8b9d08887353d627d5f6c3bf3373b398b49051c2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/clock/zipball/8b9d08887353d627d5f6c3bf3373b398b49051c2", + "reference": "8b9d08887353d627d5f6c3bf3373b398b49051c2", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/clock": "^1.0", + "symfony/polyfill-php83": "^1.28" + }, + "provide": { + "psr/clock-implementation": "1.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/now.php" + ], + "psr-4": { + "Symfony\\Component\\Clock\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "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": "Decouples applications from the system clock", + "homepage": "https://symfony.com", + "keywords": [ + "clock", + "psr20", + "time" + ], + "support": { + "source": "https://github.com/symfony/clock/tree/v7.0.5" + }, + "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": "2024-03-02T12:46:12+00:00" }, { "name": "symfony/console", - "version": "v6.4.4", + "version": "v7.0.6", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "0d9e4eb5ad413075624378f474c4167ea202de78" + "reference": "fde915cd8e7eb99b3d531d3d5c09531429c3f9e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/0d9e4eb5ad413075624378f474c4167ea202de78", - "reference": "0d9e4eb5ad413075624378f474c4167ea202de78", + "url": "https://api.github.com/repos/symfony/console/zipball/fde915cd8e7eb99b3d531d3d5c09531429c3f9e5", + "reference": "fde915cd8e7eb99b3d531d3d5c09531429c3f9e5", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", + "php": ">=8.2", "symfony/polyfill-mbstring": "~1.0", "symfony/service-contracts": "^2.5|^3", - "symfony/string": "^5.4|^6.0|^7.0" + "symfony/string": "^6.4|^7.0" }, "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" + "symfony/dependency-injection": "<6.4", + "symfony/dotenv": "<6.4", + "symfony/event-dispatcher": "<6.4", + "symfony/lock": "<6.4", + "symfony/process": "<6.4" }, "provide": { "psr/log-implementation": "1.0|2.0|3.0" }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0", "symfony/http-foundation": "^6.4|^7.0", "symfony/http-kernel": "^6.4|^7.0", - "symfony/lock": "^5.4|^6.0|^7.0", - "symfony/messenger": "^5.4|^6.0|^7.0", - "symfony/process": "^5.4|^6.0|^7.0", - "symfony/stopwatch": "^5.4|^6.0|^7.0", - "symfony/var-dumper": "^5.4|^6.0|^7.0" + "symfony/lock": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/stopwatch": "^6.4|^7.0", + "symfony/var-dumper": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -4407,7 +4477,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.4.4" + "source": "https://github.com/symfony/console/tree/v7.0.6" }, "funding": [ { @@ -4423,24 +4493,24 @@ "type": "tidelift" } ], - "time": "2024-02-22T20:27:10+00:00" + "time": "2024-04-01T11:04:53+00:00" }, { "name": "symfony/css-selector", - "version": "v6.4.3", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "ee0f7ed5cf298cc019431bb3b3977ebc52b86229" + "reference": "ec60a4edf94e63b0556b6a0888548bb400a3a3be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/ee0f7ed5cf298cc019431bb3b3977ebc52b86229", - "reference": "ee0f7ed5cf298cc019431bb3b3977ebc52b86229", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/ec60a4edf94e63b0556b6a0888548bb400a3a3be", + "reference": "ec60a4edf94e63b0556b6a0888548bb400a3a3be", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "type": "library", "autoload": { @@ -4472,7 +4542,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v6.4.3" + "source": "https://github.com/symfony/css-selector/tree/v7.0.3" }, "funding": [ { @@ -4488,7 +4558,7 @@ "type": "tidelift" } ], - "time": "2024-01-23T14:51:35+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "symfony/deprecation-contracts", @@ -4559,22 +4629,22 @@ }, { "name": "symfony/error-handler", - "version": "v6.4.4", + "version": "v7.0.6", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "c725219bdf2afc59423c32793d5019d2a904e13a" + "reference": "46a4cc138f799886d4bd70477c55c699d3e9dfc8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/c725219bdf2afc59423c32793d5019d2a904e13a", - "reference": "c725219bdf2afc59423c32793d5019d2a904e13a", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/46a4cc138f799886d4bd70477c55c699d3e9dfc8", + "reference": "46a4cc138f799886d4bd70477c55c699d3e9dfc8", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0|^7.0" + "symfony/var-dumper": "^6.4|^7.0" }, "conflict": { "symfony/deprecation-contracts": "<2.5", @@ -4583,7 +4653,7 @@ "require-dev": { "symfony/deprecation-contracts": "^2.5|^3", "symfony/http-kernel": "^6.4|^7.0", - "symfony/serializer": "^5.4|^6.0|^7.0" + "symfony/serializer": "^6.4|^7.0" }, "bin": [ "Resources/bin/patch-type-declarations" @@ -4614,7 +4684,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/v6.4.4" + "source": "https://github.com/symfony/error-handler/tree/v7.0.6" }, "funding": [ { @@ -4630,28 +4700,28 @@ "type": "tidelift" } ], - "time": "2024-02-22T20:27:10+00:00" + "time": "2024-03-19T11:57:22+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v6.4.3", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "ae9d3a6f3003a6caf56acd7466d8d52378d44fef" + "reference": "834c28d533dd0636f910909d01b9ff45cc094b5e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/ae9d3a6f3003a6caf56acd7466d8d52378d44fef", - "reference": "ae9d3a6f3003a6caf56acd7466d8d52378d44fef", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/834c28d533dd0636f910909d01b9ff45cc094b5e", + "reference": "834c28d533dd0636f910909d01b9ff45cc094b5e", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/event-dispatcher-contracts": "^2.5|^3" }, "conflict": { - "symfony/dependency-injection": "<5.4", + "symfony/dependency-injection": "<6.4", "symfony/service-contracts": "<2.5" }, "provide": { @@ -4660,13 +4730,13 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/error-handler": "^5.4|^6.0|^7.0", - "symfony/expression-language": "^5.4|^6.0|^7.0", - "symfony/http-foundation": "^5.4|^6.0|^7.0", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/error-handler": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", "symfony/service-contracts": "^2.5|^3", - "symfony/stopwatch": "^5.4|^6.0|^7.0" + "symfony/stopwatch": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -4694,7 +4764,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/v6.4.3" + "source": "https://github.com/symfony/event-dispatcher/tree/v7.0.3" }, "funding": [ { @@ -4710,20 +4780,20 @@ "type": "tidelift" } ], - "time": "2024-01-23T14:51:35+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.4.0", + "version": "v3.4.2", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "a76aed96a42d2b521153fb382d418e30d18b59df" + "reference": "4e64b49bf370ade88e567de29465762e316e4224" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/a76aed96a42d2b521153fb382d418e30d18b59df", - "reference": "a76aed96a42d2b521153fb382d418e30d18b59df", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/4e64b49bf370ade88e567de29465762e316e4224", + "reference": "4e64b49bf370ade88e567de29465762e316e4224", "shasum": "" }, "require": { @@ -4770,7 +4840,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.4.0" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.4.2" }, "funding": [ { @@ -4786,20 +4856,20 @@ "type": "tidelift" } ], - "time": "2023-05-23T14:45:45+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/filesystem", - "version": "v6.4.3", + "version": "v6.4.6", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "7f3b1755eb49297a0827a7575d5d2b2fd11cc9fb" + "reference": "9919b5509ada52cc7f66f9a35c86a4a29955c9d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/7f3b1755eb49297a0827a7575d5d2b2fd11cc9fb", - "reference": "7f3b1755eb49297a0827a7575d5d2b2fd11cc9fb", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/9919b5509ada52cc7f66f9a35c86a4a29955c9d3", + "reference": "9919b5509ada52cc7f66f9a35c86a4a29955c9d3", "shasum": "" }, "require": { @@ -4833,7 +4903,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v6.4.3" + "source": "https://github.com/symfony/filesystem/tree/v6.4.6" }, "funding": [ { @@ -4849,27 +4919,27 @@ "type": "tidelift" } ], - "time": "2024-01-23T14:51:35+00:00" + "time": "2024-03-21T19:36:20+00:00" }, { "name": "symfony/finder", - "version": "v6.4.0", + "version": "v7.0.0", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "11d736e97f116ac375a81f96e662911a34cd50ce" + "reference": "6e5688d69f7cfc4ed4a511e96007e06c2d34ce56" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/11d736e97f116ac375a81f96e662911a34cd50ce", - "reference": "11d736e97f116ac375a81f96e662911a34cd50ce", + "url": "https://api.github.com/repos/symfony/finder/zipball/6e5688d69f7cfc4ed4a511e96007e06c2d34ce56", + "reference": "6e5688d69f7cfc4ed4a511e96007e06c2d34ce56", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "require-dev": { - "symfony/filesystem": "^6.0|^7.0" + "symfony/filesystem": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -4897,7 +4967,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v6.4.0" + "source": "https://github.com/symfony/finder/tree/v7.0.0" }, "funding": [ { @@ -4913,40 +4983,40 @@ "type": "tidelift" } ], - "time": "2023-10-31T17:30:12+00:00" + "time": "2023-10-31T17:59:56+00:00" }, { "name": "symfony/http-foundation", - "version": "v6.4.4", + "version": "v7.0.6", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "ebc713bc6e6f4b53f46539fc158be85dfcd77304" + "reference": "8789625dcf36e5fbf753014678a1e090f1bc759c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ebc713bc6e6f4b53f46539fc158be85dfcd77304", - "reference": "ebc713bc6e6f4b53f46539fc158be85dfcd77304", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/8789625dcf36e5fbf753014678a1e090f1bc759c", + "reference": "8789625dcf36e5fbf753014678a1e090f1bc759c", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", + "php": ">=8.2", "symfony/polyfill-mbstring": "~1.1", "symfony/polyfill-php83": "^1.27" }, "conflict": { - "symfony/cache": "<6.3" + "doctrine/dbal": "<3.6", + "symfony/cache": "<6.4" }, "require-dev": { - "doctrine/dbal": "^2.13.1|^3|^4", + "doctrine/dbal": "^3.6|^4", "predis/predis": "^1.1|^2.0", - "symfony/cache": "^6.3|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/expression-language": "^5.4|^6.0|^7.0", - "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4|^7.0", - "symfony/mime": "^5.4|^6.0|^7.0", - "symfony/rate-limiter": "^5.4|^6.0|^7.0" + "symfony/cache": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/mime": "^6.4|^7.0", + "symfony/rate-limiter": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -4974,7 +5044,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.4.4" + "source": "https://github.com/symfony/http-foundation/tree/v7.0.6" }, "funding": [ { @@ -4990,76 +5060,75 @@ "type": "tidelift" } ], - "time": "2024-02-08T15:01:18+00:00" + "time": "2024-03-19T11:46:48+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.4.5", + "version": "v7.0.6", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "f6947cb939d8efee137797382cb4db1af653ef75" + "reference": "34c872391046d59af804af62d4573b829cfe4824" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/f6947cb939d8efee137797382cb4db1af653ef75", - "reference": "f6947cb939d8efee137797382cb4db1af653ef75", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/34c872391046d59af804af62d4573b829cfe4824", + "reference": "34c872391046d59af804af62d4573b829cfe4824", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "psr/log": "^1|^2|^3", - "symfony/deprecation-contracts": "^2.5|^3", "symfony/error-handler": "^6.4|^7.0", - "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0", "symfony/http-foundation": "^6.4|^7.0", "symfony/polyfill-ctype": "^1.8" }, "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<6.1", - "symfony/console": "<5.4", + "symfony/browser-kit": "<6.4", + "symfony/cache": "<6.4", + "symfony/config": "<6.4", + "symfony/console": "<6.4", "symfony/dependency-injection": "<6.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", + "symfony/doctrine-bridge": "<6.4", + "symfony/form": "<6.4", + "symfony/http-client": "<6.4", "symfony/http-client-contracts": "<2.5", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", + "symfony/mailer": "<6.4", + "symfony/messenger": "<6.4", + "symfony/translation": "<6.4", "symfony/translation-contracts": "<2.5", - "symfony/twig-bridge": "<5.4", + "symfony/twig-bridge": "<6.4", "symfony/validator": "<6.4", - "symfony/var-dumper": "<6.3", - "twig/twig": "<2.13" + "symfony/var-dumper": "<6.4", + "twig/twig": "<3.0.4" }, "provide": { "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|^7.0", - "symfony/clock": "^6.2|^7.0", - "symfony/config": "^6.1|^7.0", - "symfony/console": "^5.4|^6.0|^7.0", - "symfony/css-selector": "^5.4|^6.0|^7.0", + "symfony/browser-kit": "^6.4|^7.0", + "symfony/clock": "^6.4|^7.0", + "symfony/config": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0", + "symfony/css-selector": "^6.4|^7.0", "symfony/dependency-injection": "^6.4|^7.0", - "symfony/dom-crawler": "^5.4|^6.0|^7.0", - "symfony/expression-language": "^5.4|^6.0|^7.0", - "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/dom-crawler": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/finder": "^6.4|^7.0", "symfony/http-client-contracts": "^2.5|^3", - "symfony/process": "^5.4|^6.0|^7.0", - "symfony/property-access": "^5.4.5|^6.0.5|^7.0", - "symfony/routing": "^5.4|^6.0|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/property-access": "^6.4|^7.0", + "symfony/routing": "^6.4|^7.0", "symfony/serializer": "^6.4.4|^7.0.4", - "symfony/stopwatch": "^5.4|^6.0|^7.0", - "symfony/translation": "^5.4|^6.0|^7.0", + "symfony/stopwatch": "^6.4|^7.0", + "symfony/translation": "^6.4|^7.0", "symfony/translation-contracts": "^2.5|^3", - "symfony/uid": "^5.4|^6.0|^7.0", + "symfony/uid": "^6.4|^7.0", "symfony/validator": "^6.4|^7.0", - "symfony/var-exporter": "^6.2|^7.0", - "twig/twig": "^2.13|^3.0.4" + "symfony/var-exporter": "^6.4|^7.0", + "twig/twig": "^3.0.4" }, "type": "library", "autoload": { @@ -5087,7 +5156,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/v6.4.5" + "source": "https://github.com/symfony/http-kernel/tree/v7.0.6" }, "funding": [ { @@ -5103,43 +5172,43 @@ "type": "tidelift" } ], - "time": "2024-03-04T21:00:47+00:00" + "time": "2024-04-03T06:12:25+00:00" }, { "name": "symfony/mailer", - "version": "v6.4.4", + "version": "v7.0.6", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "791c5d31a8204cf3db0c66faab70282307f4376b" + "reference": "eb0c3187c7ddfde12d8aa0e1fa5fb29e730a41e0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/791c5d31a8204cf3db0c66faab70282307f4376b", - "reference": "791c5d31a8204cf3db0c66faab70282307f4376b", + "url": "https://api.github.com/repos/symfony/mailer/zipball/eb0c3187c7ddfde12d8aa0e1fa5fb29e730a41e0", + "reference": "eb0c3187c7ddfde12d8aa0e1fa5fb29e730a41e0", "shasum": "" }, "require": { "egulias/email-validator": "^2.1.10|^3|^4", - "php": ">=8.1", + "php": ">=8.2", "psr/event-dispatcher": "^1", "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0|^7.0", - "symfony/mime": "^6.2|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/mime": "^6.4|^7.0", "symfony/service-contracts": "^2.5|^3" }, "conflict": { "symfony/http-client-contracts": "<2.5", - "symfony/http-kernel": "<5.4", - "symfony/messenger": "<6.2", - "symfony/mime": "<6.2", - "symfony/twig-bridge": "<6.2.1" + "symfony/http-kernel": "<6.4", + "symfony/messenger": "<6.4", + "symfony/mime": "<6.4", + "symfony/twig-bridge": "<6.4" }, "require-dev": { - "symfony/console": "^5.4|^6.0|^7.0", - "symfony/http-client": "^5.4|^6.0|^7.0", - "symfony/messenger": "^6.2|^7.0", - "symfony/twig-bridge": "^6.2|^7.0" + "symfony/console": "^6.4|^7.0", + "symfony/http-client": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", + "symfony/twig-bridge": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -5167,7 +5236,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v6.4.4" + "source": "https://github.com/symfony/mailer/tree/v7.0.6" }, "funding": [ { @@ -5183,25 +5252,24 @@ "type": "tidelift" } ], - "time": "2024-02-03T21:33:47+00:00" + "time": "2024-03-28T09:20:36+00:00" }, { "name": "symfony/mime", - "version": "v6.4.3", + "version": "v7.0.6", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "5017e0a9398c77090b7694be46f20eb796262a34" + "reference": "99362408c9abdf8c7cadcf0529b6fc8b16f5ace2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/5017e0a9398c77090b7694be46f20eb796262a34", - "reference": "5017e0a9398c77090b7694be46f20eb796262a34", + "url": "https://api.github.com/repos/symfony/mime/zipball/99362408c9abdf8c7cadcf0529b6fc8b16f5ace2", + "reference": "99362408c9abdf8c7cadcf0529b6fc8b16f5ace2", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", + "php": ">=8.2", "symfony/polyfill-intl-idn": "^1.10", "symfony/polyfill-mbstring": "^1.0" }, @@ -5209,17 +5277,18 @@ "egulias/email-validator": "~3.0.0", "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", - "symfony/mailer": "<5.4", - "symfony/serializer": "<6.3.2" + "symfony/mailer": "<6.4", + "symfony/serializer": "<6.4" }, "require-dev": { "egulias/email-validator": "^2.1.10|^3.1|^4", "league/html-to-markdown": "^5.0", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/property-access": "^5.4|^6.0|^7.0", - "symfony/property-info": "^5.4|^6.0|^7.0", - "symfony/serializer": "^6.3.2|^7.0" + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/property-access": "^6.4|^7.0", + "symfony/property-info": "^6.4|^7.0", + "symfony/serializer": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -5251,7 +5320,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v6.4.3" + "source": "https://github.com/symfony/mime/tree/v7.0.6" }, "funding": [ { @@ -5267,7 +5336,7 @@ "type": "tidelift" } ], - "time": "2024-01-30T08:32:12+00:00" + "time": "2024-03-21T19:37:36+00:00" }, { "name": "symfony/polyfill-ctype", @@ -5982,20 +6051,20 @@ }, { "name": "symfony/process", - "version": "v6.4.4", + "version": "v7.0.4", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "710e27879e9be3395de2b98da3f52a946039f297" + "reference": "0e7727191c3b71ebec6d529fa0e50a01ca5679e9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/710e27879e9be3395de2b98da3f52a946039f297", - "reference": "710e27879e9be3395de2b98da3f52a946039f297", + "url": "https://api.github.com/repos/symfony/process/zipball/0e7727191c3b71ebec6d529fa0e50a01ca5679e9", + "reference": "0e7727191c3b71ebec6d529fa0e50a01ca5679e9", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "type": "library", "autoload": { @@ -6023,7 +6092,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v6.4.4" + "source": "https://github.com/symfony/process/tree/v7.0.4" }, "funding": [ { @@ -6039,40 +6108,38 @@ "type": "tidelift" } ], - "time": "2024-02-20T12:31:00+00:00" + "time": "2024-02-22T20:27:20+00:00" }, { "name": "symfony/routing", - "version": "v6.4.5", + "version": "v7.0.6", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "7fe30068e207d9c31c0138501ab40358eb2d49a4" + "reference": "cded64e5bbf9f31786f1055fcc76718fdd77519c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/7fe30068e207d9c31c0138501ab40358eb2d49a4", - "reference": "7fe30068e207d9c31c0138501ab40358eb2d49a4", + "url": "https://api.github.com/repos/symfony/routing/zipball/cded64e5bbf9f31786f1055fcc76718fdd77519c", + "reference": "cded64e5bbf9f31786f1055fcc76718fdd77519c", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3" }, "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<6.2", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" + "symfony/config": "<6.4", + "symfony/dependency-injection": "<6.4", + "symfony/yaml": "<6.4" }, "require-dev": { - "doctrine/annotations": "^1.12|^2", "psr/log": "^1|^2|^3", - "symfony/config": "^6.2|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/expression-language": "^5.4|^6.0|^7.0", - "symfony/http-foundation": "^5.4|^6.0|^7.0", - "symfony/yaml": "^5.4|^6.0|^7.0" + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/yaml": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -6106,7 +6173,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v6.4.5" + "source": "https://github.com/symfony/routing/tree/v7.0.6" }, "funding": [ { @@ -6122,20 +6189,20 @@ "type": "tidelift" } ], - "time": "2024-02-27T12:33:30+00:00" + "time": "2024-03-28T21:02:11+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.4.1", + "version": "v3.4.2", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0" + "reference": "11bbf19a0fb7b36345861e85c5768844c552906e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/fe07cbc8d837f60caf7018068e350cc5163681a0", - "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/11bbf19a0fb7b36345861e85c5768844c552906e", + "reference": "11bbf19a0fb7b36345861e85c5768844c552906e", "shasum": "" }, "require": { @@ -6188,7 +6255,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.4.1" + "source": "https://github.com/symfony/service-contracts/tree/v3.4.2" }, "funding": [ { @@ -6204,24 +6271,24 @@ "type": "tidelift" } ], - "time": "2023-12-26T14:02:43+00:00" + "time": "2023-12-19T21:51:00+00:00" }, { "name": "symfony/string", - "version": "v6.4.4", + "version": "v7.0.4", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "4e465a95bdc32f49cf4c7f07f751b843bbd6dcd9" + "reference": "f5832521b998b0bec40bee688ad5de98d4cf111b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/4e465a95bdc32f49cf4c7f07f751b843bbd6dcd9", - "reference": "4e465a95bdc32f49cf4c7f07f751b843bbd6dcd9", + "url": "https://api.github.com/repos/symfony/string/zipball/f5832521b998b0bec40bee688ad5de98d4cf111b", + "reference": "f5832521b998b0bec40bee688ad5de98d4cf111b", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-intl-grapheme": "~1.0", "symfony/polyfill-intl-normalizer": "~1.0", @@ -6231,11 +6298,11 @@ "symfony/translation-contracts": "<2.5" }, "require-dev": { - "symfony/error-handler": "^5.4|^6.0|^7.0", - "symfony/http-client": "^5.4|^6.0|^7.0", - "symfony/intl": "^6.2|^7.0", + "symfony/error-handler": "^6.4|^7.0", + "symfony/http-client": "^6.4|^7.0", + "symfony/intl": "^6.4|^7.0", "symfony/translation-contracts": "^2.5|^3.0", - "symfony/var-exporter": "^5.4|^6.0|^7.0" + "symfony/var-exporter": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -6274,7 +6341,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.4.4" + "source": "https://github.com/symfony/string/tree/v7.0.4" }, "funding": [ { @@ -6290,37 +6357,36 @@ "type": "tidelift" } ], - "time": "2024-02-01T13:16:41+00:00" + "time": "2024-02-01T13:17:36+00:00" }, { "name": "symfony/translation", - "version": "v6.4.4", + "version": "v7.0.4", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "bce6a5a78e94566641b2594d17e48b0da3184a8e" + "reference": "5b75e872f7d135d7abb4613809fadc8d9f3d30a0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/bce6a5a78e94566641b2594d17e48b0da3184a8e", - "reference": "bce6a5a78e94566641b2594d17e48b0da3184a8e", + "url": "https://api.github.com/repos/symfony/translation/zipball/5b75e872f7d135d7abb4613809fadc8d9f3d30a0", + "reference": "5b75e872f7d135d7abb4613809fadc8d9f3d30a0", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", + "php": ">=8.2", "symfony/polyfill-mbstring": "~1.0", "symfony/translation-contracts": "^2.5|^3.0" }, "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", + "symfony/config": "<6.4", + "symfony/console": "<6.4", + "symfony/dependency-injection": "<6.4", "symfony/http-client-contracts": "<2.5", - "symfony/http-kernel": "<5.4", + "symfony/http-kernel": "<6.4", "symfony/service-contracts": "<2.5", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" + "symfony/twig-bundle": "<6.4", + "symfony/yaml": "<6.4" }, "provide": { "symfony/translation-implementation": "2.3|3.0" @@ -6328,17 +6394,17 @@ "require-dev": { "nikic/php-parser": "^4.18|^5.0", "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0|^7.0", - "symfony/console": "^5.4|^6.0|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/config": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/finder": "^6.4|^7.0", "symfony/http-client-contracts": "^2.5|^3.0", - "symfony/http-kernel": "^5.4|^6.0|^7.0", - "symfony/intl": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/intl": "^6.4|^7.0", "symfony/polyfill-intl-icu": "^1.21", - "symfony/routing": "^5.4|^6.0|^7.0", + "symfony/routing": "^6.4|^7.0", "symfony/service-contracts": "^2.5|^3", - "symfony/yaml": "^5.4|^6.0|^7.0" + "symfony/yaml": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -6369,7 +6435,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v6.4.4" + "source": "https://github.com/symfony/translation/tree/v7.0.4" }, "funding": [ { @@ -6385,20 +6451,20 @@ "type": "tidelift" } ], - "time": "2024-02-20T13:16:58+00:00" + "time": "2024-02-22T20:27:20+00:00" }, { "name": "symfony/translation-contracts", - "version": "v3.4.1", + "version": "v3.4.2", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "06450585bf65e978026bda220cdebca3f867fde7" + "reference": "43810bdb2ddb5400e5c5e778e27b210a0ca83b6b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/06450585bf65e978026bda220cdebca3f867fde7", - "reference": "06450585bf65e978026bda220cdebca3f867fde7", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/43810bdb2ddb5400e5c5e778e27b210a0ca83b6b", + "reference": "43810bdb2ddb5400e5c5e778e27b210a0ca83b6b", "shasum": "" }, "require": { @@ -6447,7 +6513,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.4.1" + "source": "https://github.com/symfony/translation-contracts/tree/v3.4.2" }, "funding": [ { @@ -6463,28 +6529,28 @@ "type": "tidelift" } ], - "time": "2023-12-26T14:02:43+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/uid", - "version": "v6.4.3", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/uid.git", - "reference": "1d31267211cc3a2fff32bcfc7c1818dac41b6fc0" + "reference": "87cedaf3fabd7b733859d4d77aa4ca598259054b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/uid/zipball/1d31267211cc3a2fff32bcfc7c1818dac41b6fc0", - "reference": "1d31267211cc3a2fff32bcfc7c1818dac41b6fc0", + "url": "https://api.github.com/repos/symfony/uid/zipball/87cedaf3fabd7b733859d4d77aa4ca598259054b", + "reference": "87cedaf3fabd7b733859d4d77aa4ca598259054b", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/polyfill-uuid": "^1.15" }, "require-dev": { - "symfony/console": "^5.4|^6.0|^7.0" + "symfony/console": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -6521,7 +6587,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/uid/tree/v6.4.3" + "source": "https://github.com/symfony/uid/tree/v7.0.3" }, "funding": [ { @@ -6537,38 +6603,36 @@ "type": "tidelift" } ], - "time": "2024-01-23T14:51:35+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "symfony/var-dumper", - "version": "v6.4.4", + "version": "v7.0.6", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "b439823f04c98b84d4366c79507e9da6230944b1" + "reference": "66d13dc207d5dab6b4f4c2b5460efe1bea29dbfb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/b439823f04c98b84d4366c79507e9da6230944b1", - "reference": "b439823f04c98b84d4366c79507e9da6230944b1", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/66d13dc207d5dab6b4f4c2b5460efe1bea29dbfb", + "reference": "66d13dc207d5dab6b4f4c2b5460efe1bea29dbfb", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", + "php": ">=8.2", "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "symfony/console": "<5.4" + "symfony/console": "<6.4" }, "require-dev": { "ext-iconv": "*", - "symfony/console": "^5.4|^6.0|^7.0", - "symfony/error-handler": "^6.3|^7.0", - "symfony/http-kernel": "^5.4|^6.0|^7.0", - "symfony/process": "^5.4|^6.0|^7.0", - "symfony/uid": "^5.4|^6.0|^7.0", - "twig/twig": "^2.13|^3.0.4" + "symfony/console": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/uid": "^6.4|^7.0", + "twig/twig": "^3.0.4" }, "bin": [ "Resources/bin/var-dump-server" @@ -6606,7 +6670,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.4.4" + "source": "https://github.com/symfony/var-dumper/tree/v7.0.6" }, "funding": [ { @@ -6622,28 +6686,29 @@ "type": "tidelift" } ], - "time": "2024-02-15T11:23:52+00:00" + "time": "2024-03-19T11:57:22+00:00" }, { "name": "symfony/var-exporter", - "version": "v6.4.4", + "version": "v7.0.6", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "0bd342e24aef49fc82a21bd4eedd3e665d177e5b" + "reference": "c74c568d2a15a1d407cf40d61ea82bc2d521e27b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/0bd342e24aef49fc82a21bd4eedd3e665d177e5b", - "reference": "0bd342e24aef49fc82a21bd4eedd3e665d177e5b", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/c74c568d2a15a1d407cf40d61ea82bc2d521e27b", + "reference": "c74c568d2a15a1d407cf40d61ea82bc2d521e27b", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3" + "php": ">=8.2" }, "require-dev": { - "symfony/var-dumper": "^5.4|^6.0|^7.0" + "symfony/property-access": "^6.4|^7.0", + "symfony/serializer": "^6.4|^7.0", + "symfony/var-dumper": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -6681,7 +6746,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v6.4.4" + "source": "https://github.com/symfony/var-exporter/tree/v7.0.6" }, "funding": [ { @@ -6697,7 +6762,7 @@ "type": "tidelift" } ], - "time": "2024-02-26T08:37:45+00:00" + "time": "2024-03-20T21:25:22+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", @@ -7494,16 +7559,16 @@ }, { "name": "laravel/pint", - "version": "v1.14.0", + "version": "v1.15.1", "source": { "type": "git", "url": "https://github.com/laravel/pint.git", - "reference": "6b127276e3f263f7bb17d5077e9e0269e61b2a0e" + "reference": "5f288b5e79938cc72f5c298d384e639de87507c6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/pint/zipball/6b127276e3f263f7bb17d5077e9e0269e61b2a0e", - "reference": "6b127276e3f263f7bb17d5077e9e0269e61b2a0e", + "url": "https://api.github.com/repos/laravel/pint/zipball/5f288b5e79938cc72f5c298d384e639de87507c6", + "reference": "5f288b5e79938cc72f5c298d384e639de87507c6", "shasum": "" }, "require": { @@ -7514,13 +7579,13 @@ "php": "^8.1.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^3.49.0", - "illuminate/view": "^10.43.0", - "larastan/larastan": "^2.8.1", + "friendsofphp/php-cs-fixer": "^3.52.1", + "illuminate/view": "^10.48.4", + "larastan/larastan": "^2.9.2", "laravel-zero/framework": "^10.3.0", - "mockery/mockery": "^1.6.7", + "mockery/mockery": "^1.6.11", "nunomaduro/termwind": "^1.15.1", - "pestphp/pest": "^2.33.6" + "pestphp/pest": "^2.34.5" }, "bin": [ "builds/pint" @@ -7556,20 +7621,20 @@ "issues": "https://github.com/laravel/pint/issues", "source": "https://github.com/laravel/pint" }, - "time": "2024-02-20T17:38:05+00:00" + "time": "2024-04-02T14:28:47+00:00" }, { "name": "laravel/sail", - "version": "v1.29.0", + "version": "v1.29.1", "source": { "type": "git", "url": "https://github.com/laravel/sail.git", - "reference": "e40cc7ffb5186c45698dbd47e9477e0e429396d0" + "reference": "8be4a31150eab3b46af11a2e7b2c4632eefaad7e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/e40cc7ffb5186c45698dbd47e9477e0e429396d0", - "reference": "e40cc7ffb5186c45698dbd47e9477e0e429396d0", + "url": "https://api.github.com/repos/laravel/sail/zipball/8be4a31150eab3b46af11a2e7b2c4632eefaad7e", + "reference": "8be4a31150eab3b46af11a2e7b2c4632eefaad7e", "shasum": "" }, "require": { @@ -7577,6 +7642,7 @@ "illuminate/contracts": "^9.52.16|^10.0|^11.0", "illuminate/support": "^9.52.16|^10.0|^11.0", "php": "^8.0", + "symfony/console": "^6.0|^7.0", "symfony/yaml": "^6.0|^7.0" }, "require-dev": { @@ -7618,20 +7684,20 @@ "issues": "https://github.com/laravel/sail/issues", "source": "https://github.com/laravel/sail" }, - "time": "2024-03-08T16:32:33+00:00" + "time": "2024-03-20T20:09:31+00:00" }, { "name": "mockery/mockery", - "version": "1.6.9", + "version": "1.6.11", "source": { "type": "git", "url": "https://github.com/mockery/mockery.git", - "reference": "0cc058854b3195ba21dc6b1f7b1f60f4ef3a9c06" + "reference": "81a161d0b135df89951abd52296adf97deb0723d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/0cc058854b3195ba21dc6b1f7b1f60f4ef3a9c06", - "reference": "0cc058854b3195ba21dc6b1f7b1f60f4ef3a9c06", + "url": "https://api.github.com/repos/mockery/mockery/zipball/81a161d0b135df89951abd52296adf97deb0723d", + "reference": "81a161d0b135df89951abd52296adf97deb0723d", "shasum": "" }, "require": { @@ -7643,8 +7709,8 @@ "phpunit/phpunit": "<8.0" }, "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.6.10", - "symplify/easy-coding-standard": "^12.0.8" + "phpunit/phpunit": "^8.5 || ^9.6.17", + "symplify/easy-coding-standard": "^12.1.14" }, "type": "library", "autoload": { @@ -7701,7 +7767,7 @@ "security": "https://github.com/mockery/mockery/security/advisories", "source": "https://github.com/mockery/mockery" }, - "time": "2023-12-10T02:24:34+00:00" + "time": "2024-03-21T18:34:15+00:00" }, { "name": "myclabs/deep-copy", @@ -7764,40 +7830,38 @@ }, { "name": "nunomaduro/collision", - "version": "v7.10.0", + "version": "v8.1.1", "source": { "type": "git", "url": "https://github.com/nunomaduro/collision.git", - "reference": "49ec67fa7b002712da8526678abd651c09f375b2" + "reference": "13e5d538b95a744d85f447a321ce10adb28e9af9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/49ec67fa7b002712da8526678abd651c09f375b2", - "reference": "49ec67fa7b002712da8526678abd651c09f375b2", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/13e5d538b95a744d85f447a321ce10adb28e9af9", + "reference": "13e5d538b95a744d85f447a321ce10adb28e9af9", "shasum": "" }, "require": { - "filp/whoops": "^2.15.3", - "nunomaduro/termwind": "^1.15.1", - "php": "^8.1.0", - "symfony/console": "^6.3.4" + "filp/whoops": "^2.15.4", + "nunomaduro/termwind": "^2.0.1", + "php": "^8.2.0", + "symfony/console": "^7.0.4" }, "conflict": { - "laravel/framework": ">=11.0.0" + "laravel/framework": "<11.0.0 || >=12.0.0", + "phpunit/phpunit": "<10.5.1 || >=12.0.0" }, "require-dev": { - "brianium/paratest": "^7.3.0", - "laravel/framework": "^10.28.0", - "laravel/pint": "^1.13.3", - "laravel/sail": "^1.25.0", - "laravel/sanctum": "^3.3.1", - "laravel/tinker": "^2.8.2", - "nunomaduro/larastan": "^2.6.4", - "orchestra/testbench-core": "^8.13.0", - "pestphp/pest": "^2.23.2", - "phpunit/phpunit": "^10.4.1", - "sebastian/environment": "^6.0.1", - "spatie/laravel-ignition": "^2.3.1" + "larastan/larastan": "^2.9.2", + "laravel/framework": "^11.0.0", + "laravel/pint": "^1.14.0", + "laravel/sail": "^1.28.2", + "laravel/sanctum": "^4.0.0", + "laravel/tinker": "^2.9.0", + "orchestra/testbench-core": "^9.0.0", + "pestphp/pest": "^2.34.1 || ^3.0.0", + "sebastian/environment": "^6.0.1 || ^7.0.0" }, "type": "library", "extra": { @@ -7805,6 +7869,9 @@ "providers": [ "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" ] + }, + "branch-alias": { + "dev-8.x": "8.x-dev" } }, "autoload": { @@ -7856,7 +7923,7 @@ "type": "patreon" } ], - "time": "2023-10-11T15:45:01+00:00" + "time": "2024-03-06T16:20:09+00:00" }, { "name": "phar-io/manifest", @@ -8089,16 +8156,16 @@ }, { "name": "phpstan/phpdoc-parser", - "version": "1.26.0", + "version": "1.27.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "231e3186624c03d7e7c890ec662b81e6b0405227" + "reference": "86e4d5a4b036f8f0be1464522f4c6b584c452757" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/231e3186624c03d7e7c890ec662b81e6b0405227", - "reference": "231e3186624c03d7e7c890ec662b81e6b0405227", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/86e4d5a4b036f8f0be1464522f4c6b584c452757", + "reference": "86e4d5a4b036f8f0be1464522f4c6b584c452757", "shasum": "" }, "require": { @@ -8130,41 +8197,41 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.26.0" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.27.0" }, - "time": "2024-02-23T16:05:55+00:00" + "time": "2024-03-21T13:14:53+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "10.1.14", + "version": "11.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "e3f51450ebffe8e0efdf7346ae966a656f7d5e5b" + "reference": "7e35a2cbcabac0e6865fd373742ea432a3c34f92" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/e3f51450ebffe8e0efdf7346ae966a656f7d5e5b", - "reference": "e3f51450ebffe8e0efdf7346ae966a656f7d5e5b", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/7e35a2cbcabac0e6865fd373742ea432a3c34f92", + "reference": "7e35a2cbcabac0e6865fd373742ea432a3c34f92", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.18 || ^5.0", - "php": ">=8.1", - "phpunit/php-file-iterator": "^4.0", - "phpunit/php-text-template": "^3.0", - "sebastian/code-unit-reverse-lookup": "^3.0", - "sebastian/complexity": "^3.0", - "sebastian/environment": "^6.0", - "sebastian/lines-of-code": "^2.0", - "sebastian/version": "^4.0", + "nikic/php-parser": "^5.0", + "php": ">=8.2", + "phpunit/php-file-iterator": "^5.0", + "phpunit/php-text-template": "^4.0", + "sebastian/code-unit-reverse-lookup": "^4.0", + "sebastian/complexity": "^4.0", + "sebastian/environment": "^7.0", + "sebastian/lines-of-code": "^3.0", + "sebastian/version": "^5.0", "theseer/tokenizer": "^1.2.0" }, "require-dev": { - "phpunit/phpunit": "^10.1" + "phpunit/phpunit": "^11.0" }, "suggest": { "ext-pcov": "PHP extension that provides line coverage", @@ -8173,7 +8240,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "10.1-dev" + "dev-main": "11.0-dev" } }, "autoload": { @@ -8202,7 +8269,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.14" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/11.0.3" }, "funding": [ { @@ -8210,32 +8277,32 @@ "type": "github" } ], - "time": "2024-03-12T15:33:41+00:00" + "time": "2024-03-12T15:35:40+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "4.1.0", + "version": "5.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c" + "reference": "99e95c94ad9500daca992354fa09d7b99abe2210" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a95037b6d9e608ba092da1b23931e537cadc3c3c", - "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/99e95c94ad9500daca992354fa09d7b99abe2210", + "reference": "99e95c94ad9500daca992354fa09d7b99abe2210", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "4.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -8263,7 +8330,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.1.0" + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/5.0.0" }, "funding": [ { @@ -8271,28 +8338,28 @@ "type": "github" } ], - "time": "2023-08-31T06:24:48+00:00" + "time": "2024-02-02T06:05:04+00:00" }, { "name": "phpunit/php-invoker", - "version": "4.0.0", + "version": "5.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7" + "reference": "5d8d9355a16d8cc5a1305b0a85342cfa420612be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", - "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5d8d9355a16d8cc5a1305b0a85342cfa420612be", + "reference": "5d8d9355a16d8cc5a1305b0a85342cfa420612be", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "require-dev": { "ext-pcntl": "*", - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^11.0" }, "suggest": { "ext-pcntl": "*" @@ -8300,7 +8367,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "4.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -8326,7 +8393,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-invoker/issues", - "source": "https://github.com/sebastianbergmann/php-invoker/tree/4.0.0" + "security": "https://github.com/sebastianbergmann/php-invoker/security/policy", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/5.0.0" }, "funding": [ { @@ -8334,32 +8402,32 @@ "type": "github" } ], - "time": "2023-02-03T06:56:09+00:00" + "time": "2024-02-02T06:05:50+00:00" }, { "name": "phpunit/php-text-template", - "version": "3.0.1", + "version": "4.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748" + "reference": "d38f6cbff1cdb6f40b03c9811421561668cc133e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/0c7b06ff49e3d5072f057eb1fa59258bf287a748", - "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/d38f6cbff1cdb6f40b03c9811421561668cc133e", + "reference": "d38f6cbff1cdb6f40b03c9811421561668cc133e", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.0-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -8386,7 +8454,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-text-template/issues", "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.1" + "source": "https://github.com/sebastianbergmann/php-text-template/tree/4.0.0" }, "funding": [ { @@ -8394,32 +8462,32 @@ "type": "github" } ], - "time": "2023-08-31T14:07:24+00:00" + "time": "2024-02-02T06:06:56+00:00" }, { "name": "phpunit/php-timer", - "version": "6.0.0", + "version": "7.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d" + "reference": "8a59d9e25720482ee7fcdf296595e08795b84dc5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/e2a2d67966e740530f4a3343fe2e030ffdc1161d", - "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/8a59d9e25720482ee7fcdf296595e08795b84dc5", + "reference": "8a59d9e25720482ee7fcdf296595e08795b84dc5", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "6.0-dev" + "dev-main": "7.0-dev" } }, "autoload": { @@ -8445,7 +8513,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/6.0.0" + "security": "https://github.com/sebastianbergmann/php-timer/security/policy", + "source": "https://github.com/sebastianbergmann/php-timer/tree/7.0.0" }, "funding": [ { @@ -8453,20 +8522,20 @@ "type": "github" } ], - "time": "2023-02-03T06:57:52+00:00" + "time": "2024-02-02T06:08:01+00:00" }, { "name": "phpunit/phpunit", - "version": "10.5.13", + "version": "11.0.9", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "20a63fc1c6db29b15da3bd02d4b6cf59900088a7" + "reference": "591bbfe416400385527d5086b346b92c06de404b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/20a63fc1c6db29b15da3bd02d4b6cf59900088a7", - "reference": "20a63fc1c6db29b15da3bd02d4b6cf59900088a7", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/591bbfe416400385527d5086b346b92c06de404b", + "reference": "591bbfe416400385527d5086b346b92c06de404b", "shasum": "" }, "require": { @@ -8479,23 +8548,22 @@ "myclabs/deep-copy": "^1.10.1", "phar-io/manifest": "^2.0.3", "phar-io/version": "^3.0.2", - "php": ">=8.1", - "phpunit/php-code-coverage": "^10.1.5", - "phpunit/php-file-iterator": "^4.0", - "phpunit/php-invoker": "^4.0", - "phpunit/php-text-template": "^3.0", - "phpunit/php-timer": "^6.0", - "sebastian/cli-parser": "^2.0", - "sebastian/code-unit": "^2.0", - "sebastian/comparator": "^5.0", - "sebastian/diff": "^5.0", - "sebastian/environment": "^6.0", - "sebastian/exporter": "^5.1", - "sebastian/global-state": "^6.0.1", - "sebastian/object-enumerator": "^5.0", - "sebastian/recursion-context": "^5.0", - "sebastian/type": "^4.0", - "sebastian/version": "^4.0" + "php": ">=8.2", + "phpunit/php-code-coverage": "^11.0", + "phpunit/php-file-iterator": "^5.0", + "phpunit/php-invoker": "^5.0", + "phpunit/php-text-template": "^4.0", + "phpunit/php-timer": "^7.0", + "sebastian/cli-parser": "^3.0", + "sebastian/code-unit": "^3.0", + "sebastian/comparator": "^6.0", + "sebastian/diff": "^6.0", + "sebastian/environment": "^7.0", + "sebastian/exporter": "^6.0", + "sebastian/global-state": "^7.0", + "sebastian/object-enumerator": "^6.0", + "sebastian/type": "^5.0", + "sebastian/version": "^5.0" }, "suggest": { "ext-soap": "To be able to generate mocks based on WSDL files" @@ -8506,7 +8574,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "10.5-dev" + "dev-main": "11.0-dev" } }, "autoload": { @@ -8538,7 +8606,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.13" + "source": "https://github.com/sebastianbergmann/phpunit/tree/11.0.9" }, "funding": [ { @@ -8554,32 +8622,32 @@ "type": "tidelift" } ], - "time": "2024-03-12T15:37:41+00:00" + "time": "2024-03-28T10:09:42+00:00" }, { "name": "sebastian/cli-parser", - "version": "2.0.1", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084" + "reference": "00a74d5568694711f0222e54fb281e1d15fdf04a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/c34583b87e7b7a8055bf6c450c2c77ce32a24084", - "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/00a74d5568694711f0222e54fb281e1d15fdf04a", + "reference": "00a74d5568694711f0222e54fb281e1d15fdf04a", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "2.0-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -8603,7 +8671,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/cli-parser/issues", "security": "https://github.com/sebastianbergmann/cli-parser/security/policy", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/2.0.1" + "source": "https://github.com/sebastianbergmann/cli-parser/tree/3.0.1" }, "funding": [ { @@ -8611,32 +8679,32 @@ "type": "github" } ], - "time": "2024-03-02T07:12:49+00:00" + "time": "2024-03-02T07:26:58+00:00" }, { "name": "sebastian/code-unit", - "version": "2.0.0", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "a81fee9eef0b7a76af11d121767abc44c104e503" + "reference": "6634549cb8d702282a04a774e36a7477d2bd9015" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/a81fee9eef0b7a76af11d121767abc44c104e503", - "reference": "a81fee9eef0b7a76af11d121767abc44c104e503", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/6634549cb8d702282a04a774e36a7477d2bd9015", + "reference": "6634549cb8d702282a04a774e36a7477d2bd9015", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "2.0-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -8659,7 +8727,8 @@ "homepage": "https://github.com/sebastianbergmann/code-unit", "support": { "issues": "https://github.com/sebastianbergmann/code-unit/issues", - "source": "https://github.com/sebastianbergmann/code-unit/tree/2.0.0" + "security": "https://github.com/sebastianbergmann/code-unit/security/policy", + "source": "https://github.com/sebastianbergmann/code-unit/tree/3.0.0" }, "funding": [ { @@ -8667,32 +8736,32 @@ "type": "github" } ], - "time": "2023-02-03T06:58:43+00:00" + "time": "2024-02-02T05:50:41+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", - "version": "3.0.0", + "version": "4.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d" + "reference": "df80c875d3e459b45c6039e4d9b71d4fbccae25d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", - "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/df80c875d3e459b45c6039e4d9b71d4fbccae25d", + "reference": "df80c875d3e459b45c6039e4d9b71d4fbccae25d", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.0-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -8714,7 +8783,8 @@ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", "support": { "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/3.0.0" + "security": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/security/policy", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/4.0.0" }, "funding": [ { @@ -8722,36 +8792,36 @@ "type": "github" } ], - "time": "2023-02-03T06:59:15+00:00" + "time": "2024-02-02T05:52:17+00:00" }, { "name": "sebastian/comparator", - "version": "5.0.1", + "version": "6.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "2db5010a484d53ebf536087a70b4a5423c102372" + "reference": "bd0f2fa5b9257c69903537b266ccb80fcf940db8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2db5010a484d53ebf536087a70b4a5423c102372", - "reference": "2db5010a484d53ebf536087a70b4a5423c102372", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/bd0f2fa5b9257c69903537b266ccb80fcf940db8", + "reference": "bd0f2fa5b9257c69903537b266ccb80fcf940db8", "shasum": "" }, "require": { "ext-dom": "*", "ext-mbstring": "*", - "php": ">=8.1", - "sebastian/diff": "^5.0", - "sebastian/exporter": "^5.0" + "php": ">=8.2", + "sebastian/diff": "^6.0", + "sebastian/exporter": "^6.0" }, "require-dev": { - "phpunit/phpunit": "^10.3" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "5.0-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -8791,7 +8861,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", "security": "https://github.com/sebastianbergmann/comparator/security/policy", - "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.1" + "source": "https://github.com/sebastianbergmann/comparator/tree/6.0.0" }, "funding": [ { @@ -8799,33 +8869,33 @@ "type": "github" } ], - "time": "2023-08-14T13:18:12+00:00" + "time": "2024-02-02T05:53:45+00:00" }, { "name": "sebastian/complexity", - "version": "3.2.0", + "version": "4.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "68ff824baeae169ec9f2137158ee529584553799" + "reference": "88a434ad86150e11a606ac4866b09130712671f0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68ff824baeae169ec9f2137158ee529584553799", - "reference": "68ff824baeae169ec9f2137158ee529584553799", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/88a434ad86150e11a606ac4866b09130712671f0", + "reference": "88a434ad86150e11a606ac4866b09130712671f0", "shasum": "" }, "require": { - "nikic/php-parser": "^4.18 || ^5.0", - "php": ">=8.1" + "nikic/php-parser": "^5.0", + "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.2-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -8849,7 +8919,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/complexity/issues", "security": "https://github.com/sebastianbergmann/complexity/security/policy", - "source": "https://github.com/sebastianbergmann/complexity/tree/3.2.0" + "source": "https://github.com/sebastianbergmann/complexity/tree/4.0.0" }, "funding": [ { @@ -8857,33 +8927,33 @@ "type": "github" } ], - "time": "2023-12-21T08:37:17+00:00" + "time": "2024-02-02T05:55:19+00:00" }, { "name": "sebastian/diff", - "version": "5.1.1", + "version": "6.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e" + "reference": "ab83243ecc233de5655b76f577711de9f842e712" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/c41e007b4b62af48218231d6c2275e4c9b975b2e", - "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/ab83243ecc233de5655b76f577711de9f842e712", + "reference": "ab83243ecc233de5655b76f577711de9f842e712", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^10.0", - "symfony/process": "^6.4" + "phpunit/phpunit": "^11.0", + "symfony/process": "^4.2 || ^5" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "5.1-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -8916,7 +8986,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", "security": "https://github.com/sebastianbergmann/diff/security/policy", - "source": "https://github.com/sebastianbergmann/diff/tree/5.1.1" + "source": "https://github.com/sebastianbergmann/diff/tree/6.0.1" }, "funding": [ { @@ -8924,27 +8994,27 @@ "type": "github" } ], - "time": "2024-03-02T07:15:17+00:00" + "time": "2024-03-02T07:30:33+00:00" }, { "name": "sebastian/environment", - "version": "6.0.1", + "version": "7.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951" + "reference": "4eb3a442574d0e9d141aab209cd4aaf25701b09a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/43c751b41d74f96cbbd4e07b7aec9675651e2951", - "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/4eb3a442574d0e9d141aab209cd4aaf25701b09a", + "reference": "4eb3a442574d0e9d141aab209cd4aaf25701b09a", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^11.0" }, "suggest": { "ext-posix": "*" @@ -8952,7 +9022,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "6.0-dev" + "dev-main": "7.1-dev" } }, "autoload": { @@ -8980,7 +9050,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", "security": "https://github.com/sebastianbergmann/environment/security/policy", - "source": "https://github.com/sebastianbergmann/environment/tree/6.0.1" + "source": "https://github.com/sebastianbergmann/environment/tree/7.1.0" }, "funding": [ { @@ -8988,34 +9058,34 @@ "type": "github" } ], - "time": "2023-04-11T05:39:26+00:00" + "time": "2024-03-23T08:56:34+00:00" }, { "name": "sebastian/exporter", - "version": "5.1.2", + "version": "6.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "955288482d97c19a372d3f31006ab3f37da47adf" + "reference": "f291e5a317c321c0381fa9ecc796fa2d21b186da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/955288482d97c19a372d3f31006ab3f37da47adf", - "reference": "955288482d97c19a372d3f31006ab3f37da47adf", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/f291e5a317c321c0381fa9ecc796fa2d21b186da", + "reference": "f291e5a317c321c0381fa9ecc796fa2d21b186da", "shasum": "" }, "require": { "ext-mbstring": "*", - "php": ">=8.1", - "sebastian/recursion-context": "^5.0" + "php": ">=8.2", + "sebastian/recursion-context": "^6.0" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "5.1-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -9058,7 +9128,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", "security": "https://github.com/sebastianbergmann/exporter/security/policy", - "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.2" + "source": "https://github.com/sebastianbergmann/exporter/tree/6.0.1" }, "funding": [ { @@ -9066,35 +9136,35 @@ "type": "github" } ], - "time": "2024-03-02T07:17:12+00:00" + "time": "2024-03-02T07:28:20+00:00" }, { "name": "sebastian/global-state", - "version": "6.0.2", + "version": "7.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9" + "reference": "c3a307e832f2e69c7ef869e31fc644fde0e7cb3e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", - "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/c3a307e832f2e69c7ef869e31fc644fde0e7cb3e", + "reference": "c3a307e832f2e69c7ef869e31fc644fde0e7cb3e", "shasum": "" }, "require": { - "php": ">=8.1", - "sebastian/object-reflector": "^3.0", - "sebastian/recursion-context": "^5.0" + "php": ">=8.2", + "sebastian/object-reflector": "^4.0", + "sebastian/recursion-context": "^6.0" }, "require-dev": { "ext-dom": "*", - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "6.0-dev" + "dev-main": "7.0-dev" } }, "autoload": { @@ -9120,7 +9190,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", "security": "https://github.com/sebastianbergmann/global-state/security/policy", - "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.2" + "source": "https://github.com/sebastianbergmann/global-state/tree/7.0.1" }, "funding": [ { @@ -9128,33 +9198,33 @@ "type": "github" } ], - "time": "2024-03-02T07:19:19+00:00" + "time": "2024-03-02T07:32:10+00:00" }, { "name": "sebastian/lines-of-code", - "version": "2.0.2", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0" + "reference": "376c5b3f6b43c78fdc049740bca76a7c846706c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/856e7f6a75a84e339195d48c556f23be2ebf75d0", - "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/376c5b3f6b43c78fdc049740bca76a7c846706c0", + "reference": "376c5b3f6b43c78fdc049740bca76a7c846706c0", "shasum": "" }, "require": { - "nikic/php-parser": "^4.18 || ^5.0", - "php": ">=8.1" + "nikic/php-parser": "^5.0", + "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "2.0-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -9178,7 +9248,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.2" + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/3.0.0" }, "funding": [ { @@ -9186,34 +9256,34 @@ "type": "github" } ], - "time": "2023-12-21T08:38:20+00:00" + "time": "2024-02-02T06:00:36+00:00" }, { "name": "sebastian/object-enumerator", - "version": "5.0.0", + "version": "6.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906" + "reference": "f75f6c460da0bbd9668f43a3dde0ec0ba7faa678" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/202d0e344a580d7f7d04b3fafce6933e59dae906", - "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/f75f6c460da0bbd9668f43a3dde0ec0ba7faa678", + "reference": "f75f6c460da0bbd9668f43a3dde0ec0ba7faa678", "shasum": "" }, "require": { - "php": ">=8.1", - "sebastian/object-reflector": "^3.0", - "sebastian/recursion-context": "^5.0" + "php": ">=8.2", + "sebastian/object-reflector": "^4.0", + "sebastian/recursion-context": "^6.0" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "5.0-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -9235,7 +9305,8 @@ "homepage": "https://github.com/sebastianbergmann/object-enumerator/", "support": { "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/5.0.0" + "security": "https://github.com/sebastianbergmann/object-enumerator/security/policy", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/6.0.0" }, "funding": [ { @@ -9243,32 +9314,32 @@ "type": "github" } ], - "time": "2023-02-03T07:08:32+00:00" + "time": "2024-02-02T06:01:29+00:00" }, { "name": "sebastian/object-reflector", - "version": "3.0.0", + "version": "4.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "24ed13d98130f0e7122df55d06c5c4942a577957" + "reference": "bb2a6255d30853425fd38f032eb64ced9f7f132d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/24ed13d98130f0e7122df55d06c5c4942a577957", - "reference": "24ed13d98130f0e7122df55d06c5c4942a577957", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/bb2a6255d30853425fd38f032eb64ced9f7f132d", + "reference": "bb2a6255d30853425fd38f032eb64ced9f7f132d", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.0-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -9290,7 +9361,8 @@ "homepage": "https://github.com/sebastianbergmann/object-reflector/", "support": { "issues": "https://github.com/sebastianbergmann/object-reflector/issues", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/3.0.0" + "security": "https://github.com/sebastianbergmann/object-reflector/security/policy", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/4.0.0" }, "funding": [ { @@ -9298,32 +9370,32 @@ "type": "github" } ], - "time": "2023-02-03T07:06:18+00:00" + "time": "2024-02-02T06:02:18+00:00" }, { "name": "sebastian/recursion-context", - "version": "5.0.0", + "version": "6.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "05909fb5bc7df4c52992396d0116aed689f93712" + "reference": "b75224967b5a466925c6d54e68edd0edf8dd4ed4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/05909fb5bc7df4c52992396d0116aed689f93712", - "reference": "05909fb5bc7df4c52992396d0116aed689f93712", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/b75224967b5a466925c6d54e68edd0edf8dd4ed4", + "reference": "b75224967b5a466925c6d54e68edd0edf8dd4ed4", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "5.0-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -9353,7 +9425,8 @@ "homepage": "https://github.com/sebastianbergmann/recursion-context", "support": { "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/5.0.0" + "security": "https://github.com/sebastianbergmann/recursion-context/security/policy", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/6.0.0" }, "funding": [ { @@ -9361,32 +9434,32 @@ "type": "github" } ], - "time": "2023-02-03T07:05:40+00:00" + "time": "2024-02-02T06:08:48+00:00" }, { "name": "sebastian/type", - "version": "4.0.0", + "version": "5.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "462699a16464c3944eefc02ebdd77882bd3925bf" + "reference": "b8502785eb3523ca0dd4afe9ca62235590020f3f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/462699a16464c3944eefc02ebdd77882bd3925bf", - "reference": "462699a16464c3944eefc02ebdd77882bd3925bf", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8502785eb3523ca0dd4afe9ca62235590020f3f", + "reference": "b8502785eb3523ca0dd4afe9ca62235590020f3f", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "4.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -9409,7 +9482,8 @@ "homepage": "https://github.com/sebastianbergmann/type", "support": { "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/4.0.0" + "security": "https://github.com/sebastianbergmann/type/security/policy", + "source": "https://github.com/sebastianbergmann/type/tree/5.0.0" }, "funding": [ { @@ -9417,29 +9491,29 @@ "type": "github" } ], - "time": "2023-02-03T07:10:45+00:00" + "time": "2024-02-02T06:09:34+00:00" }, { "name": "sebastian/version", - "version": "4.0.1", + "version": "5.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17" + "reference": "13999475d2cb1ab33cb73403ba356a814fdbb001" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c51fa83a5d8f43f1402e3f32a005e6262244ef17", - "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/13999475d2cb1ab33cb73403ba356a814fdbb001", + "reference": "13999475d2cb1ab33cb73403ba356a814fdbb001", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "4.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -9462,7 +9536,8 @@ "homepage": "https://github.com/sebastianbergmann/version", "support": { "issues": "https://github.com/sebastianbergmann/version/issues", - "source": "https://github.com/sebastianbergmann/version/tree/4.0.1" + "security": "https://github.com/sebastianbergmann/version/security/policy", + "source": "https://github.com/sebastianbergmann/version/tree/5.0.0" }, "funding": [ { @@ -9470,7 +9545,7 @@ "type": "github" } ], - "time": "2023-02-07T11:34:05+00:00" + "time": "2024-02-02T06:10:47+00:00" }, { "name": "spatie/backtrace", @@ -9605,16 +9680,16 @@ }, { "name": "spatie/ignition", - "version": "1.12.0", + "version": "1.13.1", "source": { "type": "git", "url": "https://github.com/spatie/ignition.git", - "reference": "5b6f801c605a593106b623e45ca41496a6e7d56d" + "reference": "889bf1dfa59e161590f677728b47bf4a6893983b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/5b6f801c605a593106b623e45ca41496a6e7d56d", - "reference": "5b6f801c605a593106b623e45ca41496a6e7d56d", + "url": "https://api.github.com/repos/spatie/ignition/zipball/889bf1dfa59e161590f677728b47bf4a6893983b", + "reference": "889bf1dfa59e161590f677728b47bf4a6893983b", "shasum": "" }, "require": { @@ -9684,20 +9759,20 @@ "type": "github" } ], - "time": "2024-01-03T15:49:39+00:00" + "time": "2024-03-29T14:03:47+00:00" }, { "name": "spatie/laravel-ignition", - "version": "2.4.2", + "version": "2.5.1", "source": { "type": "git", "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "351504f4570e32908839fc5a2dc53bf77d02f85e" + "reference": "0c864b3cbd66ce67a2096c5f743e07ce8f1d6ab9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/351504f4570e32908839fc5a2dc53bf77d02f85e", - "reference": "351504f4570e32908839fc5a2dc53bf77d02f85e", + "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/0c864b3cbd66ce67a2096c5f743e07ce8f1d6ab9", + "reference": "0c864b3cbd66ce67a2096c5f743e07ce8f1d6ab9", "shasum": "" }, "require": { @@ -9707,7 +9782,7 @@ "illuminate/support": "^10.0|^11.0", "php": "^8.1", "spatie/flare-client-php": "^1.3.5", - "spatie/ignition": "^1.9", + "spatie/ignition": "^1.13", "symfony/console": "^6.2.3|^7.0", "symfony/var-dumper": "^6.2.3|^7.0" }, @@ -9776,32 +9851,31 @@ "type": "github" } ], - "time": "2024-02-09T16:08:40+00:00" + "time": "2024-04-02T06:30:22+00:00" }, { "name": "symfony/yaml", - "version": "v6.4.3", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "d75715985f0f94f978e3a8fa42533e10db921b90" + "reference": "2d4fca631c00700597e9442a0b2451ce234513d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/d75715985f0f94f978e3a8fa42533e10db921b90", - "reference": "d75715985f0f94f978e3a8fa42533e10db921b90", + "url": "https://api.github.com/repos/symfony/yaml/zipball/2d4fca631c00700597e9442a0b2451ce234513d3", + "reference": "2d4fca631c00700597e9442a0b2451ce234513d3", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", + "php": ">=8.2", "symfony/polyfill-ctype": "^1.8" }, "conflict": { - "symfony/console": "<5.4" + "symfony/console": "<6.4" }, "require-dev": { - "symfony/console": "^5.4|^6.0|^7.0" + "symfony/console": "^6.4|^7.0" }, "bin": [ "Resources/bin/yaml-lint" @@ -9832,7 +9906,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v6.4.3" + "source": "https://github.com/symfony/yaml/tree/v7.0.3" }, "funding": [ { @@ -9848,7 +9922,7 @@ "type": "tidelift" } ], - "time": "2024-01-23T14:51:35+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "theseer/tokenizer", @@ -9907,7 +9981,7 @@ "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": "^8.1", + "php": "^8.2", "ext-fileinfo": "*", "ext-sodium": "*" }, diff --git a/config/app.php b/config/app.php index 9ca0e9df..f346daf2 100644 --- a/config/app.php +++ b/config/app.php @@ -10,9 +10,9 @@ | Application Name |-------------------------------------------------------------------------- | - | This value is the name of your application. This value is used when the + | This value is the name of your application, which will be used when the | framework needs to place the application's name in a notification or - | any other location as required by the application or its packages. + | other UI elements where an application name needs to be displayed. | */ @@ -51,7 +51,7 @@ | | This URL is used by the console to properly generate URLs when using | the Artisan command line tool. You should set this to the root of - | your application so that it is used when running Artisan tasks. + | the application so that it is available within Artisan commands. | */ @@ -65,12 +65,12 @@ |-------------------------------------------------------------------------- | | Here you may specify the default timezone for your application, which - | will be used by the PHP date and date-time functions. We have gone - | ahead and set this to a sensible default for you out of the box. + | will be used by the PHP date and date-time functions. The timezone + | is set to "UTC" by default as it is suitable for most use cases. | */ - 'timezone' => 'UTC', + 'timezone' => env('APP_TIMEZONE', 'UTC'), /* |-------------------------------------------------------------------------- @@ -78,12 +78,12 @@ |-------------------------------------------------------------------------- | | The application locale determines the default locale that will be used - | by the translation service provider. You are free to set this value - | to any of the locales which will be supported by the application. + | by Laravel's translation / localization methods. This option can be + | set to any locale for which you plan to have translation strings. | */ - 'locale' => 'en', + 'locale' => env('APP_LOCALE', 'en'), /* |-------------------------------------------------------------------------- @@ -96,7 +96,7 @@ | */ - 'fallback_locale' => 'en', + 'fallback_locale' => env('APP_FALLBACK_LOCALE', 'en'), /* |-------------------------------------------------------------------------- @@ -109,22 +109,28 @@ | */ - 'faker_locale' => 'en_US', + 'faker_locale' => env('APP_FAKER_LOCALE', 'en_US'), /* |-------------------------------------------------------------------------- | Encryption Key |-------------------------------------------------------------------------- | - | This key is used by the Illuminate encrypter service and should be set - | to a random, 32 character string, otherwise these encrypted strings - | will not be safe. Please do this before deploying an application! + | This key is utilized by Laravel's encryption services and should be set + | to a random, 32 character string to ensure that all encrypted values + | are secure. You should do this prior to deploying the application. | */ + 'cipher' => 'AES-256-CBC', + 'key' => env('APP_KEY'), - 'cipher' => 'AES-256-CBC', + 'previous_keys' => [ + ...array_filter( + explode(',', env('APP_PREVIOUS_KEYS', '')) + ), + ], /* |-------------------------------------------------------------------------- @@ -140,8 +146,8 @@ */ 'maintenance' => [ - 'driver' => 'file', - // 'store' => 'redis', + 'driver' => env('APP_MAINTENANCE_DRIVER', 'file'), + 'store' => env('APP_MAINTENANCE_STORE', 'database'), ], /* diff --git a/config/auth.php b/config/auth.php index f3b3deb6..097635ce 100644 --- a/config/auth.php +++ b/config/auth.php @@ -7,15 +7,15 @@ | Authentication Defaults |-------------------------------------------------------------------------- | - | This option controls the default authentication "guard" and password - | reset options for your application. You may change these defaults + | This option defines the default authentication "guard" and password + | reset "broker" for your application. You may change these values | as required, but they're a perfect start for most applications. | */ 'defaults' => [ - 'guard' => 'web', - 'passwords' => 'users', + 'guard' => env('AUTH_GUARD', 'web'), + 'passwords' => env('AUTH_PASSWORD_BROKER', 'users'), ], /* @@ -25,11 +25,11 @@ | | Next, you may define every authentication guard for your application. | Of course, a great default configuration has been defined for you - | here which uses session storage and the Eloquent user provider. + | which utilizes session storage plus the Eloquent user provider. | - | All authentication drivers have a user provider. This defines how the + | All authentication guards have a user provider, which defines how the | users are actually retrieved out of your database or other storage - | mechanisms used by this application to persist your user's data. + | system used by the application. Typically, Eloquent is utilized. | | Supported: "session" | @@ -47,12 +47,12 @@ | User Providers |-------------------------------------------------------------------------- | - | All authentication drivers have a user provider. This defines how the + | All authentication guards have a user provider, which defines how the | users are actually retrieved out of your database or other storage - | mechanisms used by this application to persist your user's data. + | system used by the application. Typically, Eloquent is utilized. | | If you have multiple user tables or models you may configure multiple - | sources which represent each model / table. These sources may then + | providers to represent the model / table. These providers may then | be assigned to any extra authentication guards you have defined. | | Supported: "database", "eloquent" @@ -62,7 +62,7 @@ 'providers' => [ 'users' => [ 'driver' => 'eloquent', - 'model' => App\Models\User::class, + 'model' => env('AUTH_MODEL', App\Models\User::class), ], // 'users' => [ @@ -76,9 +76,9 @@ | Resetting Passwords |-------------------------------------------------------------------------- | - | You may specify multiple password reset configurations if you have more - | than one user table or model in the application and you want to have - | separate password reset settings based on the specific user types. + | These configuration options specify the behavior of Laravel's password + | reset functionality, including the table utilized for token storage + | and the user provider that is invoked to actually retrieve users. | | The expiry time is the number of minutes that each reset token will be | considered valid. This security feature keeps tokens short-lived so @@ -89,7 +89,7 @@ 'passwords' => [ 'users' => [ 'provider' => 'users', - 'table' => 'password_resets', + 'table' => env('AUTH_PASSWORD_RESET_TOKEN_TABLE', 'password_reset_tokens'), 'expire' => 60, 'throttle' => 60, ], @@ -101,11 +101,11 @@ |-------------------------------------------------------------------------- | | 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 + | window expires and users are asked to re-enter their password via the | confirmation screen. By default, the timeout lasts for three hours. | */ - 'password_timeout' => 10800, + 'password_timeout' => env('AUTH_PASSWORD_TIMEOUT', 10800), ]; diff --git a/config/cache.php b/config/cache.php index d4171e22..ab3a706a 100644 --- a/config/cache.php +++ b/config/cache.php @@ -9,13 +9,13 @@ | Default Cache Store |-------------------------------------------------------------------------- | - | This option controls the default cache connection that gets used while - | using this caching library. This connection is used when another is - | not explicitly specified when executing a given caching function. + | This option controls the default cache store that will be used by the + | framework. This connection is utilized if another isn't explicitly + | specified when running a cache operation inside the application. | */ - 'default' => env('CACHE_DRIVER', 'file'), + 'default' => env('CACHE_STORE', 'file'), /* |-------------------------------------------------------------------------- @@ -26,8 +26,8 @@ | 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" + | Supported drivers: "apc", "array", "database", "file", "memcached", + | "redis", "dynamodb", "octane", "null" | */ @@ -44,9 +44,9 @@ 'database' => [ 'driver' => 'database', - 'table' => 'cache', - 'connection' => null, - 'lock_connection' => null, + 'table' => env('DB_CACHE_TABLE', 'cache'), + 'connection' => env('DB_CACHE_CONNECTION'), + 'lock_connection' => env('DB_CACHE_LOCK_CONNECTION'), ], 'file' => [ @@ -76,8 +76,8 @@ 'redis' => [ 'driver' => 'redis', - 'connection' => 'cache', - 'lock_connection' => 'default', + 'connection' => env('REDIS_CACHE_CONNECTION', 'cache'), + 'lock_connection' => env('REDIS_CACHE_LOCK_CONNECTION', 'default'), ], 'dynamodb' => [ diff --git a/config/database.php b/config/database.php index 137ad18c..04cec06d 100644 --- a/config/database.php +++ b/config/database.php @@ -9,9 +9,9 @@ | Default Database Connection Name |-------------------------------------------------------------------------- | - | Here you may specify which of the database connections below you wish - | to use as your default connection for all database work. Of course - | you may use many connections at once using the Database library. + | to use as your default connection for database operations. This is + | the connection which will be utilized unless another connection + | is explicitly specified when you execute a query / statement. | */ @@ -22,14 +22,9 @@ | Database Connections |-------------------------------------------------------------------------- | - | Here are each of the database connections setup for your application. - | Of course, examples of configuring each database platform that is - | supported by Laravel is shown below to make development simple. - | - | - | All database work in Laravel is done through the PHP PDO facilities - | so make sure you have the driver for your particular database of - | choice installed on your machine before you begin development. + | Below are all of the database connections defined for your application. + | An example configuration is provided for each database system which + | is supported by Laravel. You're free to add / remove connections. | */ @@ -37,7 +32,7 @@ 'sqlite' => [ 'driver' => 'sqlite', - 'url' => env('DATABASE_URL'), + 'url' => env('DB_URL'), 'database' => env('DB_DATABASE', database_path('database.sqlite')), 'prefix' => '', 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), @@ -45,15 +40,35 @@ 'mysql' => [ 'driver' => 'mysql', - 'url' => env('DATABASE_URL'), + 'url' => env('DB_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '3306'), + 'database' => env('DB_DATABASE', 'laravel'), + 'username' => env('DB_USERNAME', 'root'), + 'password' => env('DB_PASSWORD', ''), + 'unix_socket' => env('DB_SOCKET', ''), + 'charset' => env('DB_CHARSET', 'utf8mb4'), + 'collation' => env('DB_COLLATION', 'utf8mb4_unicode_ci'), + 'prefix' => '', + 'prefix_indexes' => true, + 'strict' => true, + 'engine' => null, + 'options' => extension_loaded('pdo_mysql') ? array_filter([ + PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), + ]) : [], + ], + + 'mariadb' => [ + 'driver' => 'mariadb', + 'url' => env('DB_URL'), 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), + 'database' => env('DB_DATABASE', 'laravel'), + 'username' => env('DB_USERNAME', 'root'), 'password' => env('DB_PASSWORD', ''), 'unix_socket' => env('DB_SOCKET', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', + 'charset' => env('DB_CHARSET', 'utf8mb4'), + 'collation' => env('DB_COLLATION', 'utf8mb4_unicode_ci'), 'prefix' => '', 'prefix_indexes' => true, 'strict' => true, @@ -65,13 +80,13 @@ 'pgsql' => [ 'driver' => 'pgsql', - 'url' => env('DATABASE_URL'), + 'url' => env('DB_URL'), 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', '5432'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), + 'database' => env('DB_DATABASE', 'laravel'), + 'username' => env('DB_USERNAME', 'root'), 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', + 'charset' => env('DB_CHARSET', 'utf8'), 'prefix' => '', 'prefix_indexes' => true, 'search_path' => 'public', @@ -80,13 +95,13 @@ 'sqlsrv' => [ 'driver' => 'sqlsrv', - 'url' => env('DATABASE_URL'), + 'url' => env('DB_URL'), 'host' => env('DB_HOST', 'localhost'), 'port' => env('DB_PORT', '1433'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), + 'database' => env('DB_DATABASE', 'laravel'), + 'username' => env('DB_USERNAME', 'root'), 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', + 'charset' => env('DB_CHARSET', 'utf8'), 'prefix' => '', 'prefix_indexes' => true, // 'encrypt' => env('DB_ENCRYPT', 'yes'), @@ -102,11 +117,14 @@ | | This table keeps track of all the migrations that have already run for | your application. Using this information, we can determine which of - | the migrations on disk haven't actually been run in the database. + | the migrations on disk haven't actually been run on the database. | */ - 'migrations' => 'migrations', + 'migrations' => [ + 'table' => 'migrations', + 'update_date_on_publish' => true, + ], /* |-------------------------------------------------------------------------- @@ -115,7 +133,7 @@ | | Redis is an open source, fast, and advanced key-value store that also | 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. + | such as Memcached. You may define your connection settings here. | */ diff --git a/config/filesystems.php b/config/filesystems.php index 3cb3e9fa..8234ca05 100644 --- a/config/filesystems.php +++ b/config/filesystems.php @@ -11,7 +11,7 @@ | | Here you may specify the default filesystem disk that should be used | by the framework. The "local" disk, as well as a variety of cloud - | based disks are available to your application. Just store away! + | based disks are available to your application for file storage. | */ @@ -22,9 +22,9 @@ | Filesystem Disks |-------------------------------------------------------------------------- | - | 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 set up for each driver as an example of the required values. + | Below you may configure as many filesystem disks as necessary, and you + | may even configure multiple disks for the same driver. Examples for + | most supported storage drivers are configured here for reference. | | Supported Drivers: "local", "ftp", "sftp", "s3" | diff --git a/config/logging.php b/config/logging.php index f8c5ef49..5f23465e 100644 --- a/config/logging.php +++ b/config/logging.php @@ -12,9 +12,9 @@ | Default Log Channel |-------------------------------------------------------------------------- | - | This option defines the default log channel that gets used when writing - | messages to the logs. The name specified in this option should match - | one of the channels defined in the "channels" configuration array. + | This option defines the default log channel that is utilized to write + | messages to your logs. The value provided here should match one of + | the channels present in the list of "channels" configured below. | */ @@ -33,7 +33,7 @@ 'deprecations' => [ 'channel' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), - 'trace' => false, + 'trace' => env('LOG_DEPRECATIONS_TRACE', false), ], /* @@ -41,20 +41,19 @@ | Log Channels |-------------------------------------------------------------------------- | - | Here you may configure the log channels for your application. Out of - | the box, Laravel uses the Monolog PHP logging library. This gives - | you a variety of powerful log handlers / formatters to utilize. + | Here you may configure the log channels for your application. Laravel + | utilizes the Monolog PHP logging library, which includes a variety + | of powerful log handlers and formatters that you're free to use. | | Available Drivers: "single", "daily", "slack", "syslog", - | "errorlog", "monolog", - | "custom", "stack" + | "errorlog", "monolog", "custom", "stack" | */ 'channels' => [ 'stack' => [ 'driver' => 'stack', - 'channels' => ['single'], + 'channels' => explode(',', env('LOG_STACK', 'single')), 'ignore_exceptions' => false, ], @@ -69,15 +68,15 @@ 'driver' => 'daily', 'path' => storage_path(sprintf('logs/%s/laravel.log', env('LOG_FOLDER'))), 'level' => env('LOG_LEVEL', 'debug'), - 'days' => 14, + 'days' => env('LOG_DAILY_DAYS', 14), 'replace_placeholders' => true, ], 'slack' => [ 'driver' => 'slack', 'url' => env('LOG_SLACK_WEBHOOK_URL'), - 'username' => 'Laravel Log', - 'emoji' => ':boom:', + 'username' => env('LOG_SLACK_USERNAME', 'Laravel Log'), + 'emoji' => env('LOG_SLACK_EMOJI', ':boom:'), 'level' => env('LOG_LEVEL', 'critical'), 'replace_placeholders' => true, ], @@ -108,7 +107,7 @@ 'syslog' => [ 'driver' => 'syslog', 'level' => env('LOG_LEVEL', 'debug'), - 'facility' => LOG_USER, + 'facility' => env('LOG_SYSLOG_FACILITY', LOG_USER), 'replace_placeholders' => true, ], diff --git a/config/mail.php b/config/mail.php index e894b2e5..55304674 100644 --- a/config/mail.php +++ b/config/mail.php @@ -7,13 +7,14 @@ | Default Mailer |-------------------------------------------------------------------------- | - | 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. + | This option controls the default mailer that is used to send all email + | messages unless another mailer is explicitly specified when sending + | the message. All additional mailers can be configured within the + | "mailers" array. Examples of each type of mailer are provided. | */ - 'default' => env('MAIL_MAILER', 'smtp'), + 'default' => env('MAIL_MAILER', 'log'), /* |-------------------------------------------------------------------------- @@ -24,9 +25,9 @@ | their respective settings. Several examples have been configured for | you and you are free to add your own as your application requires. | - | 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. + | Laravel supports a variety of mail "transport" drivers that can be used + | when delivering an email. You may specify which one you're using for + | your mailers below. You may also add additional mailers if needed. | | Supported: "smtp", "sendmail", "mailgun", "ses", "ses-v2", | "postmark", "log", "array", "failover", "roundrobin" @@ -34,11 +35,12 @@ */ 'mailers' => [ + 'smtp' => [ 'transport' => 'smtp', 'url' => env('MAIL_URL'), - 'host' => env('MAIL_HOST', 'smtp.mailgun.org'), - 'port' => env('MAIL_PORT', 587), + 'host' => env('MAIL_HOST', '127.0.0.1'), + 'port' => env('MAIL_PORT', 2525), 'encryption' => env('MAIL_ENCRYPTION', 'tls'), 'username' => env('MAIL_USERNAME'), 'password' => env('MAIL_PASSWORD'), @@ -52,7 +54,7 @@ 'postmark' => [ 'transport' => 'postmark', - // 'message_stream_id' => null, + // 'message_stream_id' => env('POSTMARK_MESSAGE_STREAM_ID'), // 'client' => [ // 'timeout' => 5, // ], @@ -101,9 +103,9 @@ | Global "From" Address |-------------------------------------------------------------------------- | - | You may wish for all e-mails sent by your application to be sent from - | the same address. Here, you may specify a name and address that is - | used globally for all e-mails that are sent by your application. + | You may wish for all emails sent by your application to be sent from + | the same address. Here you may specify a name and address that is + | used globally for all emails that are sent by your application. | */ diff --git a/config/queue.php b/config/queue.php index 0d880dae..e5488ea6 100644 --- a/config/queue.php +++ b/config/queue.php @@ -7,22 +7,22 @@ | Default Queue Connection Name |-------------------------------------------------------------------------- | - | Laravel's queue API supports an assortment of back-ends via a single - | API, giving you convenient access to each back-end using the same - | syntax for every one. Here you may define a default connection. + | Laravel's queue supports a variety of backends via a single, unified + | API, giving you convenient access to each backend using identical + | syntax for each. The default queue connection is defined below. | */ - 'default' => env('QUEUE_CONNECTION', 'sync'), + 'default' => env('QUEUE_CONNECTION', 'database'), /* |-------------------------------------------------------------------------- | Queue Connections |-------------------------------------------------------------------------- | - | Here you may configure the connection information for each server that - | is used by your application. A default configuration has been added - | for each back-end shipped with Laravel. You are free to add more. + | Here you may configure the connection options for every queue backend + | used by your application. An example configuration is provided for + | each backend supported by Laravel. You're also free to add more. | | Drivers: "sync", "database", "beanstalkd", "sqs", "redis", "null" | @@ -36,17 +36,18 @@ 'database' => [ 'driver' => 'database', - 'table' => 'jobs', - 'queue' => 'default', - 'retry_after' => 90, + 'connection' => env('DB_QUEUE_CONNECTION', 'mysql'), + 'table' => env('DB_QUEUE_TABLE', 'jobs'), + 'queue' => env('DB_QUEUE', 'default'), + 'retry_after' => (int) env('DB_QUEUE_RETRY_AFTER', 90), 'after_commit' => false, ], 'beanstalkd' => [ 'driver' => 'beanstalkd', - 'host' => 'localhost', - 'queue' => 'default', - 'retry_after' => 90, + 'host' => env('BEANSTALKD_QUEUE_HOST', 'localhost'), + 'queue' => env('BEANSTALKD_QUEUE', 'default'), + 'retry_after' => (int) env('BEANSTALKD_QUEUE_RETRY_AFTER', 90), 'block_for' => 0, 'after_commit' => false, ], @@ -76,9 +77,9 @@ 'redis' => [ 'driver' => 'redis', - 'connection' => 'default', + 'connection' => env('REDIS_QUEUE_CONNECTION', 'default'), 'queue' => env('REDIS_QUEUE', 'default'), - 'retry_after' => 90, + 'retry_after' => (int) env('REDIS_QUEUE_RETRY_AFTER', 90), 'block_for' => null, 'after_commit' => false, ], @@ -107,8 +108,10 @@ |-------------------------------------------------------------------------- | | These options configure the behavior of failed queue job logging so you - | can control which database and table are used to store the jobs that - | have failed. You may change them to any database / table you wish. + | can control how and where failed jobs are stored. Laravel ships with + | support for storing failed jobs in a simple file or in a database. + | + | Supported drivers: "database-uuids", "dynamodb", "file", "null" | */ diff --git a/config/sanctum.php b/config/sanctum.php index 35d75b31..764a82fa 100644 --- a/config/sanctum.php +++ b/config/sanctum.php @@ -76,8 +76,8 @@ 'middleware' => [ 'authenticate_session' => Laravel\Sanctum\Http\Middleware\AuthenticateSession::class, - 'encrypt_cookies' => App\Http\Middleware\EncryptCookies::class, - 'verify_csrf_token' => App\Http\Middleware\VerifyCsrfToken::class, + 'encrypt_cookies' => Illuminate\Cookie\Middleware\EncryptCookies::class, + 'validate_csrf_token' => Illuminate\Foundation\Http\Middleware\ValidateCsrfToken::class, ], ]; diff --git a/config/services.php b/config/services.php index 0ace530e..a12fbb26 100644 --- a/config/services.php +++ b/config/services.php @@ -31,4 +31,11 @@ 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), ], + 'slack' => [ + 'notifications' => [ + 'bot_user_oauth_token' => env('SLACK_BOT_USER_OAUTH_TOKEN'), + 'channel' => env('SLACK_BOT_USER_DEFAULT_CHANNEL'), + ], + ], + ]; diff --git a/config/session.php b/config/session.php index e738cb3e..36bce09f 100644 --- a/config/session.php +++ b/config/session.php @@ -27,13 +27,14 @@ | | Here you may specify the number of minutes that you wish the session | to be allowed to remain idle before it expires. If you want them - | to immediately expire on the browser closing, set that option. + | to expire immediately when the browser is closed then you may + | indicate that via the expire_on_close configuration option. | */ 'lifetime' => env('SESSION_LIFETIME', 120), - 'expire_on_close' => false, + 'expire_on_close' => env('SESSION_EXPIRE_ON_CLOSE', false), /* |-------------------------------------------------------------------------- @@ -41,21 +42,21 @@ |-------------------------------------------------------------------------- | | This option allows you to easily specify that all of your session data - | should be encrypted before it is stored. All encryption will be run - | automatically by Laravel and you can use the Session like normal. + | should be encrypted before it's stored. All encryption is performed + | automatically by Laravel and you may use the session like normal. | */ - 'encrypt' => false, + 'encrypt' => env('SESSION_ENCRYPT', false), /* |-------------------------------------------------------------------------- | Session File Location |-------------------------------------------------------------------------- | - | When using the native session driver, we need a location where session - | files may be stored. A default has been set for you but a different - | location may be specified. This is only needed for file sessions. + | When utilizing the "file" session driver, the session files are placed + | on disk. The default storage location is defined here; however, you + | are free to provide another location where they should be stored. | */ @@ -79,22 +80,22 @@ | Session Database Table |-------------------------------------------------------------------------- | - | When using the "database" session driver, you may specify the table we - | should use to manage the sessions. Of course, a sensible default is - | provided for you; however, you are free to change this as needed. + | When using the "database" session driver, you may specify the table to + | be used to store sessions. Of course, a sensible default is defined + | for you; however, you're welcome to change this to another table. | */ - 'table' => 'sessions', + 'table' => env('SESSION_TABLE', 'sessions'), /* |-------------------------------------------------------------------------- | Session Cache Store |-------------------------------------------------------------------------- | - | 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". + | When using one of the framework's cache driven session backends, you may + | define the cache store which should be used to store the session data + | between requests. This must match one of your defined cache stores. | | Affects: "apc", "dynamodb", "memcached", "redis" | @@ -120,9 +121,9 @@ | Session Cookie Name |-------------------------------------------------------------------------- | - | Here you may change the name of the cookie used to identify a session - | instance by ID. The name specified here will get used every time a - | new session cookie is created by the framework for every driver. + | Here you may change the name of the session cookie that is created by + | the framework. Typically, you should not need to change this value + | since doing so does not grant a meaningful security improvement. | */ @@ -138,20 +139,20 @@ | | The session cookie path determines the path for which the cookie will | be regarded as available. Typically, this will be the root path of - | your application but you are free to change this when necessary. + | your application, but you're free to change this when necessary. | */ - 'path' => '/', + 'path' => env('SESSION_PATH', '/'), /* |-------------------------------------------------------------------------- | Session Cookie Domain |-------------------------------------------------------------------------- | - | Here you may change the domain of the cookie used to identify a session - | in your application. This will determine which domains the cookie is - | available to in your application. A sensible default has been set. + | This value determines the domain and subdomains the session cookie is + | available to. By default, the cookie will be available to the root + | domain and all subdomains. Typically, this shouldn't be changed. | */ @@ -177,11 +178,11 @@ | | Setting this value to true will prevent JavaScript from accessing the | value of the cookie and the cookie will only be accessible through - | the HTTP protocol. You are free to modify this option if needed. + | the HTTP protocol. It's unlikely you should disable this option. | */ - 'http_only' => true, + 'http_only' => env('SESSION_HTTP_ONLY', true), /* |-------------------------------------------------------------------------- @@ -190,13 +191,15 @@ | | This option determines how your cookies behave when cross-site requests | take place, and can be used to mitigate CSRF attacks. By default, we - | will set this value to "lax" since this is a secure default value. + | will set this value to "lax" to permit secure cross-site requests. + | + | See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#samesitesamesite-value | | Supported: "lax", "strict", "none", null | */ - 'same_site' => 'lax', + 'same_site' => env('SESSION_SAME_SITE', 'lax'), /* |-------------------------------------------------------------------------- @@ -209,6 +212,6 @@ | */ - 'partitioned' => false, + 'partitioned' => env('SESSION_PARTITIONED_COOKIE', false), ]; diff --git a/docker-compose.pullpreview.yml b/docker-compose.pullpreview.yml index 2e80f6c2..d567d54b 100644 --- a/docker-compose.pullpreview.yml +++ b/docker-compose.pullpreview.yml @@ -17,6 +17,8 @@ services: PULLPREVIEW: true PULLPREVIEW_FIRST_RUN: ${PULLPREVIEW_FIRST_RUN} VIDEO_TRANSCODING_WORKERS_AMOUNT: ${VIDEO_TRANSCODING_WORKERS_AMOUNT:-1} + volumes: + - 'app-storage:/var/www/html/storage' labels: - 'traefik.enable=true' - 'traefik.http.routers.${APP_CONTAINER_NAME:-transmorpher}.rule=Host(`${PULLPREVIEW_PUBLIC_DNS}`)' @@ -83,3 +85,5 @@ networks: volumes: mysql: driver: local + app-storage: + driver: local diff --git a/docker-compose.yml b/docker-compose.yml index 056c50e0..9f04b10d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4,11 +4,11 @@ services: app: container_name: ${DOCKER_CONTAINER_NAME:-transmorpher} build: - context: ./docker/${DOCKER_PHP_VERSION:-8.1} + context: ./docker/${DOCKER_PHP_VERSION:-8.2} dockerfile: Dockerfile args: WWWGROUP: '${WWWGROUP}' - image: sail-${DOCKER_PHP_VERSION:-8.1}/app + image: sail-${DOCKER_PHP_VERSION:-8.2}/app extra_hosts: - 'host.docker.internal:host-gateway' environment: @@ -24,6 +24,10 @@ services: depends_on: - mysql - mysql_testing + labels: + - 'traefik.enable=true' + - 'traefik.http.routers.${DOCKER_CONTAINER_NAME:-transmorpher}.rule=Host(`${DOCKER_CONTAINER_DOMAIN:-transmorpher.test}`)' + - 'traefik.http.services.${DOCKER_CONTAINER_NAME:-transmorpher}.loadbalancer.server.port=80' mysql: image: 'mysql/mysql-server:8.0' ports: diff --git a/docker/8.1/Dockerfile b/docker/8.1/Dockerfile deleted file mode 100644 index 8f5e1ca1..00000000 --- a/docker/8.1/Dockerfile +++ /dev/null @@ -1,66 +0,0 @@ -FROM ubuntu:22.04 - -LABEL maintainer="Taylor Otwell" - -ARG WWWGROUP -ARG NODE_VERSION=18 -ARG POSTGRES_VERSION=14 - -WORKDIR /var/www/html - -ENV DEBIAN_FRONTEND noninteractive -ENV TZ=UTC - -RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone - -RUN apt-get update \ - && apt-get install -y gnupg gosu curl ca-certificates zip unzip git supervisor sqlite3 libcap2-bin libpng-dev python2 dnsutils \ - && curl -sS 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x14aa40ec0831756756d7f66c4f4ea0aae5267a6c' | gpg --dearmor | tee /usr/share/keyrings/ppa_ondrej_php.gpg > /dev/null \ - && echo "deb [signed-by=/usr/share/keyrings/ppa_ondrej_php.gpg] https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy main" > /etc/apt/sources.list.d/ppa_ondrej_php.list \ - && apt-get update \ - && apt-get install -y php8.1-cli php8.1-dev \ - php8.1-pgsql php8.1-sqlite3 php8.1-gd \ - php8.1-curl \ - php8.1-imap php8.1-mysql php8.1-mbstring \ - php8.1-xml php8.1-zip php8.1-bcmath php8.1-soap \ - php8.1-intl php8.1-readline \ - php8.1-ldap \ - php8.1-msgpack php8.1-igbinary php8.1-redis php8.1-swoole \ - php8.1-memcached php8.1-pcov php8.1-xdebug \ - && php -r "readfile('https://getcomposer.org/installer');" | php -- --install-dir=/usr/bin/ --filename=composer \ - && curl -sLS https://deb.nodesource.com/setup_$NODE_VERSION.x | bash - \ - && apt-get install -y nodejs \ - && npm install -g npm \ - && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | tee /usr/share/keyrings/yarn.gpg >/dev/null \ - && echo "deb [signed-by=/usr/share/keyrings/yarn.gpg] https://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \ - && curl -sS https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | tee /usr/share/keyrings/pgdg.gpg >/dev/null \ - && echo "deb [signed-by=/usr/share/keyrings/pgdg.gpg] http://apt.postgresql.org/pub/repos/apt jammy-pgdg main" > /etc/apt/sources.list.d/pgdg.list \ - && apt-get update \ - && apt-get install -y yarn \ - && apt-get install -y mysql-client \ - && apt-get install -y postgresql-client-$POSTGRES_VERSION \ - && apt-get install -y imagemagick \ - && apt-get install -y php8.1-imagick \ - && apt-get install -y jpegoptim \ - && apt-get install -y optipng \ - && apt-get install -y pngquant \ - && apt-get install -y gifsicle \ - && apt-get install -y webp \ - && apt-get install -y ffmpeg \ - && apt-get -y autoremove \ - && apt-get clean \ - && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* - -RUN setcap "cap_net_bind_service=+ep" /usr/bin/php8.1 - -RUN groupadd --force -g $WWWGROUP sail -RUN useradd -ms /bin/bash --no-user-group -g $WWWGROUP -u 1337 sail - -COPY start-container /usr/local/bin/start-container -COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf -COPY php.ini /etc/php/8.1/cli/conf.d/99-sail.ini -RUN chmod +x /usr/local/bin/start-container - -EXPOSE 8000 - -ENTRYPOINT ["start-container"] diff --git a/docker/8.1/php.ini b/docker/8.1/php.ini deleted file mode 100644 index 66d04d5b..00000000 --- a/docker/8.1/php.ini +++ /dev/null @@ -1,4 +0,0 @@ -[PHP] -post_max_size = 100M -upload_max_filesize = 100M -variables_order = EGPCS diff --git a/docker/8.1/start-container b/docker/8.1/start-container deleted file mode 100644 index b8643990..00000000 --- a/docker/8.1/start-container +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env bash - -if [ ! -z "$WWWUSER" ]; then - usermod -u $WWWUSER sail -fi - -if [ ! -d /.composer ]; then - mkdir /.composer -fi - -chmod -R ugo+rw /.composer - -if [ $# -gt 0 ]; then - exec gosu $WWWUSER "$@" -else - exec /usr/bin/supervisord -c /etc/supervisor/conf.d/supervisord.conf -fi diff --git a/docker/8.1/supervisord.conf b/docker/8.1/supervisord.conf deleted file mode 100644 index 9d284795..00000000 --- a/docker/8.1/supervisord.conf +++ /dev/null @@ -1,14 +0,0 @@ -[supervisord] -nodaemon=true -user=root -logfile=/var/log/supervisor/supervisord.log -pidfile=/var/run/supervisord.pid - -[program:php] -command=/usr/bin/php -d variables_order=EGPCS /var/www/html/artisan serve --host=0.0.0.0 --port=80 -user=sail -environment=LARAVEL_SAIL="1" -stdout_logfile=/dev/stdout -stdout_logfile_maxbytes=0 -stderr_logfile=/dev/stderr -stderr_logfile_maxbytes=0 diff --git a/docker/8.2/Dockerfile b/docker/8.2/Dockerfile index 632995e4..e6225d3a 100644 --- a/docker/8.2/Dockerfile +++ b/docker/8.2/Dockerfile @@ -3,23 +3,26 @@ FROM ubuntu:22.04 LABEL maintainer="Taylor Otwell" ARG WWWGROUP -ARG NODE_VERSION=18 -ARG POSTGRES_VERSION=14 +ARG NODE_VERSION=20 +ARG POSTGRES_VERSION=15 WORKDIR /var/www/html ENV DEBIAN_FRONTEND noninteractive ENV TZ=UTC +ENV SUPERVISOR_PHP_COMMAND="/usr/bin/php -d variables_order=EGPCS /var/www/html/artisan serve --host=0.0.0.0 --port=80" +ENV SUPERVISOR_PHP_USER="sail" RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone RUN apt-get update \ - && apt-get install -y gnupg gosu curl ca-certificates zip unzip git supervisor sqlite3 libcap2-bin libpng-dev python2 dnsutils \ - && curl -sS 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x14aa40ec0831756756d7f66c4f4ea0aae5267a6c' | gpg --dearmor | tee /usr/share/keyrings/ppa_ondrej_php.gpg > /dev/null \ - && echo "deb [signed-by=/usr/share/keyrings/ppa_ondrej_php.gpg] https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy main" > /etc/apt/sources.list.d/ppa_ondrej_php.list \ + && mkdir -p /etc/apt/keyrings \ + && apt-get install -y gnupg gosu curl ca-certificates zip unzip git supervisor sqlite3 libcap2-bin libpng-dev python2 dnsutils librsvg2-bin fswatch ffmpeg \ + && curl -sS 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x14aa40ec0831756756d7f66c4f4ea0aae5267a6c' | gpg --dearmor | tee /etc/apt/keyrings/ppa_ondrej_php.gpg > /dev/null \ + && echo "deb [signed-by=/etc/apt/keyrings/ppa_ondrej_php.gpg] https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy main" > /etc/apt/sources.list.d/ppa_ondrej_php.list \ && apt-get update \ && apt-get install -y php8.2-cli php8.2-dev \ - php8.2-pgsql php8.2-sqlite3 php8.2-gd \ + php8.2-pgsql php8.2-sqlite3 php8.2-gd php8.2-imagick \ php8.2-curl \ php8.2-imap php8.2-mysql php8.2-mbstring \ php8.2-xml php8.2-zip php8.2-bcmath php8.2-soap \ @@ -27,26 +30,22 @@ RUN apt-get update \ php8.2-ldap \ php8.2-msgpack php8.2-igbinary php8.2-redis php8.2-swoole \ php8.2-memcached php8.2-pcov php8.2-xdebug \ - && php -r "readfile('https://getcomposer.org/installer');" | php -- --install-dir=/usr/bin/ --filename=composer \ - && curl -sLS https://deb.nodesource.com/setup_$NODE_VERSION.x | bash - \ + && curl -sLS https://getcomposer.org/installer | php -- --install-dir=/usr/bin/ --filename=composer \ + && curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \ + && echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_VERSION.x nodistro main" > /etc/apt/sources.list.d/nodesource.list \ + && apt-get update \ && apt-get install -y nodejs \ && npm install -g npm \ - && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | tee /usr/share/keyrings/yarn.gpg >/dev/null \ - && echo "deb [signed-by=/usr/share/keyrings/yarn.gpg] https://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \ - && curl -sS https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | tee /usr/share/keyrings/pgdg.gpg >/dev/null \ - && echo "deb [signed-by=/usr/share/keyrings/pgdg.gpg] http://apt.postgresql.org/pub/repos/apt jammy-pgdg main" > /etc/apt/sources.list.d/pgdg.list \ + && npm install -g pnpm \ + && npm install -g bun \ + && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | tee /etc/apt/keyrings/yarn.gpg >/dev/null \ + && echo "deb [signed-by=/etc/apt/keyrings/yarn.gpg] https://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \ + && curl -sS https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | tee /etc/apt/keyrings/pgdg.gpg >/dev/null \ + && echo "deb [signed-by=/etc/apt/keyrings/pgdg.gpg] http://apt.postgresql.org/pub/repos/apt jammy-pgdg main" > /etc/apt/sources.list.d/pgdg.list \ && apt-get update \ && apt-get install -y yarn \ && apt-get install -y mysql-client \ && apt-get install -y postgresql-client-$POSTGRES_VERSION \ - && apt-get install -y imagemagick \ - && apt-get install -y php-imagick \ - && apt-get install -y jpegoptim \ - && apt-get install -y optipng \ - && apt-get install -y pngquant \ - && apt-get install -y gifsicle \ - && apt-get install -y webp \ - && apt-get install -y ffmpeg \ && apt-get -y autoremove \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* diff --git a/docker/8.2/php.ini b/docker/8.2/php.ini index 66d04d5b..0320d71c 100644 --- a/docker/8.2/php.ini +++ b/docker/8.2/php.ini @@ -2,3 +2,7 @@ post_max_size = 100M upload_max_filesize = 100M variables_order = EGPCS +pcov.directory = . + +[opcache] +opcache.enable_cli=1 diff --git a/docker/8.2/start-container b/docker/8.2/start-container index b8643990..40c55dfe 100644 --- a/docker/8.2/start-container +++ b/docker/8.2/start-container @@ -1,5 +1,10 @@ #!/usr/bin/env bash +if [ "$SUPERVISOR_PHP_USER" != "root" ] && [ "$SUPERVISOR_PHP_USER" != "sail" ]; then + echo "You should set SUPERVISOR_PHP_USER to either 'sail' or 'root'." + exit 1 +fi + if [ ! -z "$WWWUSER" ]; then usermod -u $WWWUSER sail fi @@ -11,7 +16,11 @@ fi chmod -R ugo+rw /.composer if [ $# -gt 0 ]; then - exec gosu $WWWUSER "$@" + if [ "$SUPERVISOR_PHP_USER" = "root" ]; then + exec "$@" + else + exec gosu $WWWUSER "$@" + fi else exec /usr/bin/supervisord -c /etc/supervisor/conf.d/supervisord.conf fi diff --git a/docker/8.2/supervisord.conf b/docker/8.2/supervisord.conf index 9d284795..656da8a9 100644 --- a/docker/8.2/supervisord.conf +++ b/docker/8.2/supervisord.conf @@ -5,8 +5,8 @@ logfile=/var/log/supervisor/supervisord.log pidfile=/var/run/supervisord.pid [program:php] -command=/usr/bin/php -d variables_order=EGPCS /var/www/html/artisan serve --host=0.0.0.0 --port=80 -user=sail +command=%(ENV_SUPERVISOR_PHP_COMMAND)s +user=%(ENV_SUPERVISOR_PHP_USER)s environment=LARAVEL_SAIL="1" stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 diff --git a/package.json b/package.json index 56f5ddcc..4e934caa 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ }, "devDependencies": { "axios": "^1.6.4", - "laravel-vite-plugin": "^1.0.0", - "vite": "^5.0.0" + "laravel-vite-plugin": "^1.0", + "vite": "^5.0" } } diff --git a/public/index.php b/public/index.php index 1d69f3a2..1255587a 100644 --- a/public/index.php +++ b/public/index.php @@ -44,12 +44,5 @@ | */ -$app = require_once __DIR__.'/../bootstrap/app.php'; - -$kernel = $app->make(Kernel::class); - -$response = $kernel->handle( - $request = Request::capture() -)->send(); - -$kernel->terminate($request, $response); +(require_once __DIR__.'/../bootstrap/app.php') + ->handleRequest(Request::capture()); diff --git a/tests/CreatesApplication.php b/tests/CreatesApplication.php deleted file mode 100644 index e3a47be4..00000000 --- a/tests/CreatesApplication.php +++ /dev/null @@ -1,23 +0,0 @@ -make(Kernel::class)->bootstrap(); - - return $app; - } -} diff --git a/tests/TestCase.php b/tests/TestCase.php index 2932d4a6..539c7dde 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -6,5 +6,4 @@ abstract class TestCase extends BaseTestCase { - use CreatesApplication; } diff --git a/tests/Unit/CreateUserCommandTest.php b/tests/Unit/CreateUserCommandTest.php index aba9e968..823b609a 100644 --- a/tests/Unit/CreateUserCommandTest.php +++ b/tests/Unit/CreateUserCommandTest.php @@ -7,6 +7,8 @@ use Artisan; use Illuminate\Console\Command; use Illuminate\Foundation\Testing\RefreshDatabase; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use RuntimeException; use Tests\TestCase; @@ -17,9 +19,7 @@ class CreateUserCommandTest extends TestCase protected const NAME = 'Oswald'; protected const EMAIL = 'oswald@example.com'; - /** - * @test - */ + #[Test] public function ensureUserCanBeCreated() { $this->assertDatabaseMissing(User::getModel()->getTable(), ['name' => self::NAME, 'email' => self::EMAIL]); @@ -30,9 +30,7 @@ public function ensureUserCanBeCreated() $this->assertDatabaseHas(User::getModel()->getTable(), ['name' => self::NAME, 'email' => self::EMAIL]); } - /** - * @test - */ + #[Test] public function ensureUserHasSanctumToken() { Artisan::call(CreateUser::class, ['name' => self::NAME, 'email' => self::EMAIL]); @@ -40,10 +38,8 @@ public function ensureUserHasSanctumToken() $this->assertNotEmpty(User::whereName(self::NAME)->first()->tokens); } - /** - * @test - * @dataProvider duplicateEntryDataProvider - */ + #[Test] + #[DataProvider('duplicateEntryDataProvider')] public function failOnDuplicateEntry(string $name, string $email) { Artisan::call(CreateUser::class, ['name' => self::NAME, 'email' => self::EMAIL]); @@ -52,10 +48,8 @@ public function failOnDuplicateEntry(string $name, string $email) $this->assertEquals(Command::INVALID, $exitStatus); } - /** - * @test - * @dataProvider missingArgumentsDataProvider - */ + #[Test] + #[DataProvider('missingArgumentsDataProvider')] public function failOnMissingArguments(?string $name, ?string $email) { $arguments = []; @@ -66,10 +60,8 @@ public function failOnMissingArguments(?string $name, ?string $email) Artisan::call(CreateUser::class, $arguments); } - /** - * @test - * @dataProvider invalidArgumentsDataProvider - */ + #[Test] + #[DataProvider('invalidArgumentsDataProvider')] public function failOnInvalidArguments(string $name, string $email) { $exitStatus = Artisan::call(CreateUser::class, ['name' => $name, 'email' => $email]); diff --git a/tests/Unit/ImageTest.php b/tests/Unit/ImageTest.php index 2f2c14fc..01464d73 100644 --- a/tests/Unit/ImageTest.php +++ b/tests/Unit/ImageTest.php @@ -9,6 +9,9 @@ use App\Models\Media; use FilePathHelper; use Illuminate\Http\UploadedFile; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Depends; +use PHPUnit\Framework\Attributes\Test; use Storage; use Tests\MediaTest; @@ -24,9 +27,7 @@ protected function setUp(): void Storage::persistentFake(config('transmorpher.disks.imageDerivatives')); } - /** - * @test - */ + #[Test] public function ensureImageUploadSlotCanBeReserved() { $reserveUploadSlotResponse = $this->json('POST', route('v1.reserveImageUploadSlot'), [ @@ -37,10 +38,8 @@ public function ensureImageUploadSlotCanBeReserved() return $reserveUploadSlotResponse->json()['upload_token']; } - /** - * @test - * @depends ensureImageUploadSlotCanBeReserved - */ + #[Test] + #[Depends('ensureImageUploadSlotCanBeReserved')] public function ensureImageCanBeUploaded(string $uploadToken) { $uploadResponse = $this->json('POST', route('v1.upload', [$uploadToken]), [ @@ -55,10 +54,8 @@ public function ensureImageCanBeUploaded(string $uploadToken) ); } - /** - * @test - * @depends ensureImageCanBeUploaded - */ + #[Test] + #[Depends('ensureImageCanBeUploaded')] public function ensureProcessedFilesAreAvailable() { $media = self::$user->Media()->whereIdentifier(self::IDENTIFIER)->first(); @@ -69,10 +66,8 @@ public function ensureProcessedFilesAreAvailable() return $media; } - /** - * @test - * @depends ensureProcessedFilesAreAvailable - */ + #[Test] + #[Depends('ensureProcessedFilesAreAvailable')] public function ensureUnprocessedFilesAreNotAvailable(Media $media) { $media->Versions()->first()->update(['processed' => 0]); @@ -249,41 +244,39 @@ public static function provideTransformationStrings(): array 'empty' => [ 'input' => '', - 'exceptedException' => null, + 'expectedException' => null, 'expectedArray' => null ], 'invalid_ValueFloat' => [ 'input' => 'q-1.5', - 'exceptedException' => InvalidTransformationValueException::class, + 'expectedException' => InvalidTransformationValueException::class, ], 'invalid_ValueLeadingZero' => [ 'input' => 'q-0005', - 'exceptedException' => InvalidTransformationValueException::class, + 'expectedException' => InvalidTransformationValueException::class, ], 'invalid_ValueContainingExponent' => [ 'input' => 'w-1337e0', - 'exceptedException' => InvalidTransformationValueException::class, + 'expectedException' => InvalidTransformationValueException::class, ], 'invalid_ValueHex' => [ 'input' => 'h-0x539', - 'exceptedException' => InvalidTransformationValueException::class, + 'expectedException' => InvalidTransformationValueException::class, ], 'invalid_ValueUnderscore' => [ 'input' => 'h-10_1', - 'exceptedException' => InvalidTransformationValueException::class, + 'expectedException' => InvalidTransformationValueException::class, ], ]; } - /** - * @test - * @dataProvider provideTransformationStrings - */ + #[Test] + #[DataProvider('provideTransformationStrings')] public function ensureTransformationStringsAreProperlyParsed(string $input, ?string $expectedException, ?array $expectedArray = null) { if ($expectedException) { diff --git a/tests/Unit/VideoTest.php b/tests/Unit/VideoTest.php index bad7fed5..3694af31 100644 --- a/tests/Unit/VideoTest.php +++ b/tests/Unit/VideoTest.php @@ -8,6 +8,8 @@ use App\Models\UploadSlot; use FilePathHelper; use Http; +use PHPUnit\Framework\Attributes\Depends; +use PHPUnit\Framework\Attributes\Test; use Storage; use Tests\MediaTest; @@ -24,9 +26,7 @@ protected function setUp(): void Storage::persistentFake(config('transmorpher.disks.videoDerivatives')); } - /** - * @test - */ + #[Test] public function ensureVideoUploadSlotCanBeReserved() { $reserveUploadSlotResponse = $this->json('POST', route('v1.reserveVideoUploadSlot'), [ @@ -39,10 +39,8 @@ public function ensureVideoUploadSlotCanBeReserved() return $reserveUploadSlotResponse->json()['upload_token']; } - /** - * @test - * @depends ensureVideoUploadSlotCanBeReserved - */ + #[Test] + #[Depends('ensureVideoUploadSlotCanBeReserved')] public function ensureTranscodingIsAbortedWhenNewerVersionExists(string $uploadToken) { Http::fake(); From d36958ac64e122fd06a600c8d836495db2eed27d Mon Sep 17 00:00:00 2001 From: mszulik <69617961+mszulik@users.noreply.github.com> Date: Wed, 17 Apr 2024 11:49:03 +0200 Subject: [PATCH 06/15] fix an issue where users could not be created in some cases (#48) --- app/Console/Commands/CreateUser.php | 3 +- composer.json | 2 +- docker/8.3/Dockerfile | 65 +++++++++++++++++++++++++++++ docker/8.3/php.ini | 5 +++ docker/8.3/start-container | 26 ++++++++++++ docker/8.3/supervisord.conf | 14 +++++++ 6 files changed, 113 insertions(+), 2 deletions(-) create mode 100644 docker/8.3/Dockerfile create mode 100644 docker/8.3/php.ini create mode 100644 docker/8.3/start-container create mode 100644 docker/8.3/supervisord.conf diff --git a/app/Console/Commands/CreateUser.php b/app/Console/Commands/CreateUser.php index 665c4c40..1a0b38fe 100644 --- a/app/Console/Commands/CreateUser.php +++ b/app/Console/Commands/CreateUser.php @@ -60,8 +60,9 @@ public function handle(): int * Laravel passwords are usually not nullable, so we will need to set something when creating the user. * Since we do not want to create a Password for the user, but need to store something secure, * we will just generate a string of random bytes. + * This needs to be encoded to base64 because null bytes are not accepted anymore (PHP 8.3). */ - $user = User::create(['name' => $name, 'email' => $email, 'password' => Hash::make(random_bytes(300))]); + $user = User::create(['name' => $name, 'email' => $email, 'password' => Hash::make(base64_encode(random_bytes(300)))]); $this->info(sprintf('Successfully created new user %s: %s (%s)', $user->getKey(), $user->name, $user->email)); $this->newLine(); diff --git a/composer.json b/composer.json index 1a2ed565..d69d3b7d 100644 --- a/composer.json +++ b/composer.json @@ -5,7 +5,7 @@ "keywords": ["framework", "laravel"], "license": "MIT", "require": { - "php": "^8.2", + "php": "8.2.*|8.3.*", "ext-fileinfo": "*", "ext-sodium": "*", "aminyazdanpanah/php-ffmpeg-video-streaming": "^1.2.17", diff --git a/docker/8.3/Dockerfile b/docker/8.3/Dockerfile new file mode 100644 index 00000000..7f0acdd7 --- /dev/null +++ b/docker/8.3/Dockerfile @@ -0,0 +1,65 @@ +FROM ubuntu:22.04 + +LABEL maintainer="Taylor Otwell" + +ARG WWWGROUP +ARG NODE_VERSION=20 +ARG POSTGRES_VERSION=15 + +WORKDIR /var/www/html + +ENV DEBIAN_FRONTEND noninteractive +ENV TZ=UTC +ENV SUPERVISOR_PHP_COMMAND="/usr/bin/php -d variables_order=EGPCS /var/www/html/artisan serve --host=0.0.0.0 --port=80" +ENV SUPERVISOR_PHP_USER="sail" + +RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone + +RUN apt-get update \ + && mkdir -p /etc/apt/keyrings \ + && apt-get install -y gnupg gosu curl ca-certificates zip unzip git supervisor sqlite3 libcap2-bin libpng-dev python2 dnsutils librsvg2-bin fswatch ffmpeg nano \ + && curl -sS 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x14aa40ec0831756756d7f66c4f4ea0aae5267a6c' | gpg --dearmor | tee /etc/apt/keyrings/ppa_ondrej_php.gpg > /dev/null \ + && echo "deb [signed-by=/etc/apt/keyrings/ppa_ondrej_php.gpg] https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy main" > /etc/apt/sources.list.d/ppa_ondrej_php.list \ + && apt-get update \ + && apt-get install -y php8.3-cli php8.3-dev \ + php8.3-pgsql php8.3-sqlite3 php8.3-gd \ + php8.3-curl \ + php8.3-imap php8.3-mysql php8.3-mbstring \ + php8.3-xml php8.3-zip php8.3-bcmath php8.3-soap \ + php8.3-intl php8.3-readline \ + php8.3-ldap \ + php8.3-msgpack php8.3-igbinary php8.3-redis php8.3-swoole \ + php8.3-memcached php8.3-pcov php8.3-imagick php8.3-xdebug \ + && curl -sLS https://getcomposer.org/installer | php -- --install-dir=/usr/bin/ --filename=composer \ + && curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \ + && echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_VERSION.x nodistro main" > /etc/apt/sources.list.d/nodesource.list \ + && apt-get update \ + && apt-get install -y nodejs \ + && npm install -g npm \ + && npm install -g pnpm \ + && npm install -g bun \ + && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | tee /etc/apt/keyrings/yarn.gpg >/dev/null \ + && echo "deb [signed-by=/etc/apt/keyrings/yarn.gpg] https://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \ + && curl -sS https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | tee /etc/apt/keyrings/pgdg.gpg >/dev/null \ + && echo "deb [signed-by=/etc/apt/keyrings/pgdg.gpg] http://apt.postgresql.org/pub/repos/apt jammy-pgdg main" > /etc/apt/sources.list.d/pgdg.list \ + && apt-get update \ + && apt-get install -y yarn \ + && apt-get install -y mysql-client \ + && apt-get install -y postgresql-client-$POSTGRES_VERSION \ + && apt-get -y autoremove \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* + +RUN setcap "cap_net_bind_service=+ep" /usr/bin/php8.3 + +RUN groupadd --force -g $WWWGROUP sail +RUN useradd -ms /bin/bash --no-user-group -g $WWWGROUP -u 1337 sail + +COPY start-container /usr/local/bin/start-container +COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf +COPY php.ini /etc/php/8.3/cli/conf.d/99-sail.ini +RUN chmod +x /usr/local/bin/start-container + +EXPOSE 8000 + +ENTRYPOINT ["start-container"] diff --git a/docker/8.3/php.ini b/docker/8.3/php.ini new file mode 100644 index 00000000..0d8ce9e2 --- /dev/null +++ b/docker/8.3/php.ini @@ -0,0 +1,5 @@ +[PHP] +post_max_size = 100M +upload_max_filesize = 100M +variables_order = EGPCS +pcov.directory = . diff --git a/docker/8.3/start-container b/docker/8.3/start-container new file mode 100644 index 00000000..40c55dfe --- /dev/null +++ b/docker/8.3/start-container @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +if [ "$SUPERVISOR_PHP_USER" != "root" ] && [ "$SUPERVISOR_PHP_USER" != "sail" ]; then + echo "You should set SUPERVISOR_PHP_USER to either 'sail' or 'root'." + exit 1 +fi + +if [ ! -z "$WWWUSER" ]; then + usermod -u $WWWUSER sail +fi + +if [ ! -d /.composer ]; then + mkdir /.composer +fi + +chmod -R ugo+rw /.composer + +if [ $# -gt 0 ]; then + if [ "$SUPERVISOR_PHP_USER" = "root" ]; then + exec "$@" + else + exec gosu $WWWUSER "$@" + fi +else + exec /usr/bin/supervisord -c /etc/supervisor/conf.d/supervisord.conf +fi diff --git a/docker/8.3/supervisord.conf b/docker/8.3/supervisord.conf new file mode 100644 index 00000000..656da8a9 --- /dev/null +++ b/docker/8.3/supervisord.conf @@ -0,0 +1,14 @@ +[supervisord] +nodaemon=true +user=root +logfile=/var/log/supervisor/supervisord.log +pidfile=/var/run/supervisord.pid + +[program:php] +command=%(ENV_SUPERVISOR_PHP_COMMAND)s +user=%(ENV_SUPERVISOR_PHP_USER)s +environment=LARAVEL_SAIL="1" +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 +stderr_logfile=/dev/stderr +stderr_logfile_maxbytes=0 From 516905a500dccd7c7b46192006c25c67ffcccf59 Mon Sep 17 00:00:00 2001 From: mszulik <69617961+mszulik@users.noreply.github.com> Date: Wed, 17 Apr 2024 14:09:39 +0200 Subject: [PATCH 07/15] use reusable GitHub workflows (#44) --- .github/workflows/docker.yml | 39 ++++----------------- .github/workflows/pullpreview.yml | 44 +++++++++--------------- .github/workflows/tests.yml | 56 +++++-------------------------- README.md | 11 ++---- 4 files changed, 32 insertions(+), 118 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 5ce24163..4aa3212f 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -2,39 +2,12 @@ name: Docker Image CI on: release: - types: [published] + types: [ published ] jobs: build-push-docker-image: - runs-on: ubuntu-latest - steps: - - name: Login to Docker Hub - uses: docker/login-action@v3 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - - name: Checkout code - uses: actions/checkout@v4 - - - name: Docker metadata - id: meta - uses: docker/metadata-action@v5 - with: - images: | - cybexwebdev/transmorpher - flavor: | - latest=auto - tags: | - type=semver,pattern={{major}} - type=semver,pattern={{major}}.{{minor}} - type=semver,pattern={{version}} - type=sha - - - name: Build and push - uses: docker/build-push-action@v5 - with: - push: true - file: ./docker/Dockerfile - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} + name: Build, test and push docker image + uses: cybex-gmbh/github-workflows/.github/workflows/docker-build-push.yml@main + with: + DOCKER_REPOSITORY: cybexwebdev/transmorpher + secrets: inherit diff --git a/.github/workflows/pullpreview.yml b/.github/workflows/pullpreview.yml index 58b441d7..d05af41f 100644 --- a/.github/workflows/pullpreview.yml +++ b/.github/workflows/pullpreview.yml @@ -1,40 +1,26 @@ name: PullPreview + on: pull_request: - types: [labeled, unlabeled, synchronize, closed, reopened] + types: [ labeled, unlabeled, synchronize, closed, reopened ] jobs: - deploy: - runs-on: ubuntu-latest - timeout-minutes: 30 + deploy-staging-environment: permissions: contents: read # to fetch code (actions/checkout) deployments: write # to delete deployments pull-requests: write # to remove labels statuses: write # to create commit status - steps: - - uses: actions/checkout@v4 - - - name: Generate .env file - env: - SECRETS_APP_KEY: ${{ secrets.APP_KEY }} - SECRETS_TRANSMORPHER_SIGNING_KEYPAIR: ${{ secrets.TRANSMORPHER_SIGNING_KEYPAIR }} - SECRETS_PULLPREVIEW_TRANSMORPHER_AUTH_TOKEN_HASH: ${{ secrets.PULLPREVIEW_TRANSMORPHER_AUTH_TOKEN_HASH }} - run: | - cp .env.example .env - echo "APP_KEY=$SECRETS_APP_KEY" >> .env - echo "TRANSMORPHER_SIGNING_KEYPAIR=$SECRETS_TRANSMORPHER_SIGNING_KEYPAIR" >> .env - echo "PULLPREVIEW_TRANSMORPHER_AUTH_TOKEN_HASH=$SECRETS_PULLPREVIEW_TRANSMORPHER_AUTH_TOKEN_HASH" >> .env - - uses: pullpreview/action@v5 - with: - admins: jheusinger, gael-connan-cybex, holyfabi, lupinitylabs, mszulik - cidrs: "0.0.0.0/0" - compose_files: docker-compose.pullpreview.yml - default_port: 80 - instance_type: medium - ports: 80, 443 - env: - AWS_ACCESS_KEY_ID: "${{ secrets.PULLPREVIEW_AWS_ACCESS_KEY_ID }}" - AWS_SECRET_ACCESS_KEY: "${{ secrets.PULLPREVIEW_AWS_SECRET_ACCESS_KEY }}" - AWS_REGION: "eu-central-1" + name: Deploy PullPreview staging environment + uses: cybex-gmbh/github-workflows/.github/workflows/pullpreview.yml@main + with: + PULLPREVIEW_ADMINS: jheusinger, gael-connan-cybex, holyfabi, lupinitylabs, mszulik + INSTANCE_TYPE: medium + secrets: + ENV_VARS: | + APP_KEY="${{ secrets.APP_KEY }}" + TRANSMORPHER_SIGNING_KEYPAIR="${{ secrets.TRANSMORPHER_SIGNING_KEYPAIR }}" + PULLPREVIEW_TRANSMORPHER_AUTH_TOKEN_HASH="${{ secrets.PULLPREVIEW_TRANSMORPHER_AUTH_TOKEN_HASH }}" + PULLPREVIEW_AWS_ACCESS_KEY_ID: ${{ secrets.PULLPREVIEW_AWS_ACCESS_KEY_ID }} + PULLPREVIEW_AWS_SECRET_ACCESS_KEY: ${{ secrets.PULLPREVIEW_AWS_SECRET_ACCESS_KEY }} diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index b5ed79b6..800d2646 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -9,57 +9,17 @@ on: workflow_dispatch: jobs: - linux_tests: - runs-on: ubuntu-latest - services: - mysql: - image: mysql:8.0 - env: - MYSQL_ALLOW_EMPTY_PASSWORD: yes - MYSQL_DATABASE: transmorpher_test - ports: - - 3306 - options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3 + execute-tests: + name: Setup testing environment and execute tests + uses: cybex-gmbh/github-workflows/.github/workflows/tests.yml@main strategy: fail-fast: true matrix: php: [ 8.2, 8.3 ] laravel: [ 11.* ] dependency-version: [ prefer-stable ] - - name: PHP ${{ matrix.php }} with Laravel ${{ matrix.laravel }} (${{ matrix.dependency-version }}) - - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Setup PHP - uses: shivammathur/setup-php@v2 - with: - php-version: ${{ matrix.php }} - extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, gd - tools: composer:v2 - coverage: none - - - name: Get composer cache directory - id: composer-cache - run: echo "::set-output name=dir::$(composer config cache-files-dir)" - - - name: Cache composer dependencies - uses: actions/cache@v2 - with: - path: ${{ steps.composer-cache.outputs.dir }} - key: dependencies-laravel-${{ matrix.laravel }}-php-${{ matrix.php }}-composer-${{ hashFiles('composer.json') }} - restore-keys: dependencies-laravel-${{ matrix.laravel }}-php-${{ matrix.php }}-composer- - - - name: Install dependencies - run: | - composer require "laravel/framework:${{ matrix.laravel }}" --no-interaction --no-update --dev --no-progress - composer update --${{ matrix.dependency-version }} --prefer-dist --no-interaction --no-progress - - - name: Execute tests - run: | - php artisan migrate:fresh --env=ci - php artisan test --env=ci --no-coverage - env: - DB_PORT: ${{ job.services.mysql.ports[3306] }} + with: + PHP_VERSION: ${{ matrix.php }} + LARAVEL_VERSION: ${{ matrix.laravel }} + DEPENDENCY_VERSION: ${{ matrix.dependency-version }} + MYSQL_DATABASE: transmorpher_test diff --git a/README.md b/README.md index a7f68720..c7d8e62e 100644 --- a/README.md +++ b/README.md @@ -422,13 +422,13 @@ You will also have to adjust the configuration value: ### [Pullpreview](https://github.com/pullpreview/action) -When labeling a pull request with the "pullpreview" label, a staging environment is booted. To make this functional, some environment variables have to be stored in GitHub secrets: +For more information take a look at the PullPreview section of the [github-workflow repository](https://github.com/cybex-gmbh/github-workflows#pullpreview). + +App specific GitHub Secrets: - APP_KEY - TRANSMORPHER_SIGNING_KEYPAIR - PULLPREVIEW_TRANSMORPHER_AUTH_TOKEN_HASH -- PULLPREVIEW_AWS_ACCESS_KEY_ID -- PULLPREVIEW_AWS_SECRET_ACCESS_KEY #### Auth Token Hash @@ -441,11 +441,6 @@ php artisan create:user pullpreview pullpreview@example.com Take the hash of the token from the `personal_access_tokens` table and save it to GitHub secrets. The command also provides a `TRANSMORPHER_AUTH_TOKEN`, which should be stored securely to use in client systems. -#### AWS Credentials - -You need credentials of an IAM user that can manage AWS Lightsail. For a recommended configuration take a look at -the [Pullpreview wiki](https://github.com/pullpreview/action/wiki/Recommended-AWS-Configuration). - ## License The Transmorpher media server is licensed under the [MIT license](https://opensource.org/licenses/MIT). From 127e390cdee5a1306dc9996fedfb066ca9b587aa Mon Sep 17 00:00:00 2001 From: mszulik <69617961+mszulik@users.noreply.github.com> Date: Thu, 18 Apr 2024 22:13:30 +0200 Subject: [PATCH 08/15] handle deletions by listening to eloquent events (#45) --- .../Controllers/V1/UploadSlotController.php | 11 +- app/Http/Controllers/V1/VersionController.php | 7 +- app/Jobs/TranscodeVideo.php | 3 +- app/Models/Media.php | 54 ++++-- app/Models/User.php | 27 +++ app/Models/Version.php | 19 ++ composer.lock | 166 +++++++++--------- docker/8.2/Dockerfile | 8 + docker/8.3/Dockerfile | 8 + tests/MediaTest.php | 5 +- tests/TestCase.php | 27 +++ tests/Unit/ImageTest.php | 159 +++++++++++++++-- tests/Unit/VideoTest.php | 5 +- .../.gitignore | 0 .../.gitignore | 0 .../ffmpeg-passes_fileOlderThanADay | 0 .../ffmpeg-passes_fileYoungerThanADay | 0 17 files changed, 370 insertions(+), 129 deletions(-) delete mode 100644 tests/data/ffmpeg-folders/ffmpeg-passes_directoryOlderThanADay/.gitignore delete mode 100644 tests/data/ffmpeg-folders/ffmpeg-passes_directoryYoungerThanADay/.gitignore delete mode 100644 tests/data/ffmpeg-folders/ffmpeg-passes_fileOlderThanADay delete mode 100644 tests/data/ffmpeg-folders/ffmpeg-passes_fileYoungerThanADay diff --git a/app/Http/Controllers/V1/UploadSlotController.php b/app/Http/Controllers/V1/UploadSlotController.php index 14a9c07e..08dc58ef 100644 --- a/app/Http/Controllers/V1/UploadSlotController.php +++ b/app/Http/Controllers/V1/UploadSlotController.php @@ -89,7 +89,7 @@ protected function saveFile(UploadedFile $uploadedFile, UploadSlot $uploadSlot, $uploadSlot->invalidate(); $media = $uploadSlot->User->Media()->firstOrNew(['identifier' => $uploadSlot->identifier, 'type' => $type]); - $media->validateUploadFile($uploadedFile, $type->handler()->getValidationRules(), $uploadSlot); + $media->validateUploadFile($uploadedFile, $type->handler()->getValidationRules()); $media->save(); $versionNumber = $media->Versions()->max('number') + 1; @@ -97,10 +97,10 @@ protected function saveFile(UploadedFile $uploadedFile, UploadSlot $uploadSlot, $basePath = FilePathHelper::toBaseDirectory($media); $fileName = FilePathHelper::createOriginalFileName($version, $uploadedFile->getClientOriginalName()); - $originalsDisk = MediaStorage::ORIGINALS->getDisk(); - if ($filePath = $originalsDisk->putFileAs($basePath, $uploadedFile, $fileName)) { - $version->update(['filename' => $fileName]); + $version->update(['filename' => $fileName]); + + if ($filePath = MediaStorage::ORIGINALS->getDisk()->putFileAs($basePath, $uploadedFile, $version->filename)) { $responseState = $type->handler()->handleSavedFile($basePath, $uploadSlot, $filePath, $version); } else { $responseState = ResponseState::WRITE_FAILED; @@ -108,8 +108,7 @@ protected function saveFile(UploadedFile $uploadedFile, UploadSlot $uploadSlot, if ($responseState->getState() === UploadState::ERROR) { $versionNumber -= 1; - $originalsDisk->delete($filePath); - $version?->delete(); + $version->delete(); } // Delete local file. diff --git a/app/Http/Controllers/V1/VersionController.php b/app/Http/Controllers/V1/VersionController.php index b26b4489..39d02b51 100644 --- a/app/Http/Controllers/V1/VersionController.php +++ b/app/Http/Controllers/V1/VersionController.php @@ -2,12 +2,10 @@ namespace App\Http\Controllers\V1; -use App\Enums\MediaStorage; -use App\Enums\MediaType; use App\Enums\ResponseState; +use App\Enums\UploadState; use App\Http\Controllers\Controller; use App\Http\Requests\V1\SetVersionRequest; -use App\Enums\UploadState; use App\Models\Media; use App\Models\Version; use FilePathHelper; @@ -81,9 +79,6 @@ public function delete(Request $request, Media $media): JsonResponse $basePath = FilePathHelper::toBaseDirectory($media); if ($media->type->handler()->invalidateCdnCache($basePath)) { - $media->Versions()->delete(); - $media->type->handler()->getDerivativesDisk()->deleteDirectory($basePath); - MediaStorage::ORIGINALS->getDisk()->deleteDirectory($basePath); $media->delete(); $responseState = $media->type->handler()->invalidateCdnCache($basePath) ? ResponseState::DELETION_SUCCESSFUL : ResponseState::CDN_INVALIDATION_FAILED; diff --git a/app/Jobs/TranscodeVideo.php b/app/Jobs/TranscodeVideo.php index 08ee2a20..77247246 100644 --- a/app/Jobs/TranscodeVideo.php +++ b/app/Jobs/TranscodeVideo.php @@ -123,10 +123,11 @@ public function failed(?Throwable $exception): void $localDisk->deleteDirectory($this->getFfmpegTempDirectory()); if (!$this->oldVersionNumber) { - MediaStorage::ORIGINALS->getDisk()->delete($this->originalFilePath); + // A failed upload must not create a version. $this->version->delete(); $versionNumber = $this->version->number - 1; } else { + // Restoring an old version has failed, therefore we restore its previous state. $this->version->update(['number' => $this->oldVersionNumber, 'processed' => $this->wasProcessed]); $versionNumber = $this->oldVersionNumber; } diff --git a/app/Models/Media.php b/app/Models/Media.php index 8dd58bb8..221e27e4 100644 --- a/app/Models/Media.php +++ b/app/Models/Media.php @@ -2,8 +2,11 @@ namespace App\Models; +use App\Enums\MediaStorage; use App\Enums\MediaType; +use DB; use File; +use FilePathHelper; use Illuminate\Database\Eloquent\Casts\Attribute; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; @@ -51,6 +54,17 @@ class Media extends Model 'type', ]; + /** + * The "booted" method of the model. + */ + protected static function booted(): void + { + static::deleting(function (Media $media) { + $media->deleteRelatedModels(); + $media->deleteBaseDirectories(); + }); + } + /** * Get the attributes that should be cast. * @@ -63,6 +77,21 @@ protected function casts(): array ]; } + protected function deleteRelatedModels(): void + { + DB::transaction(function () { + $this->Versions()->get()->each->delete(); + $this->User->UploadSlots()->withoutGlobalScopes()->firstWhere('identifier', $this->identifier)?->delete(); + }); + } + + protected function deleteBaseDirectories(): void + { + $fileBasePath = FilePathHelper::toBaseDirectory($this); + $this->type->handler()->getDerivativesDisk()->deleteDirectory($fileBasePath); + MediaStorage::ORIGINALS->getDisk()->deleteDirectory($fileBasePath); + } + /** * Returns the user that owns the media. */ @@ -79,6 +108,16 @@ public function Versions(): HasMany return $this->hasMany(Version::class); } + /** + * Get the route key for the model. + * + * @return string + */ + public function getRouteKeyName(): string + { + return 'identifier'; + } + /** * Validates an uploaded file after the chunks have been combined successfully. * This has to be done after all chunks have been received, because the mime type of the received chunks is 'application/octet-stream'. @@ -93,12 +132,11 @@ public function Versions(): HasMany * * @param UploadedFile $file * @param string $mimeTypes - * @param UploadSlot $uploadSlot * * @return void * @throws ValidationException */ - public function validateUploadFile(UploadedFile $file, string $mimeTypes, UploadSlot $uploadSlot): void + public function validateUploadFile(UploadedFile $file, string $mimeTypes): void { $validator = Validator::make(['file' => $file], ['file' => [ 'required', @@ -109,23 +147,13 @@ public function validateUploadFile(UploadedFile $file, string $mimeTypes, Upload $failed = $validator->fails(); - $validator->after(function () use ($file, $failed, $uploadSlot) { + $validator->after(function () use ($file, $failed) { if ($failed) { File::delete($file); } }); } - /** - * Get the route key for the model. - * - * @return string - */ - public function getRouteKeyName(): string - { - return 'identifier'; - } - public function currentVersion(): Attribute { return Attribute::make( diff --git a/app/Models/User.php b/app/Models/User.php index 1df25a1c..9fa2502f 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -2,6 +2,8 @@ namespace App\Models; +use App\Enums\MediaStorage; +use DB; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Foundation\Auth\User as Authenticatable; @@ -68,6 +70,31 @@ class User extends Authenticatable 'remember_token', ]; + /** + * The "booted" method of the model. + */ + protected static function booted(): void + { + static::deleting(function (User $user) { + $user->deleteRelatedModels(); + $user->deleteMediaDirectories(); + }); + } + + protected function deleteRelatedModels(): void + { + DB::transaction(function () { + $this->Media()->get()->each->delete(); + }); + } + + protected function deleteMediaDirectories(): void + { + foreach (MediaStorage::cases() as $mediaStorage) { + $mediaStorage->getDisk()->deleteDirectory($this->name); + } + } + /** * Get the attributes that should be cast. * diff --git a/app/Models/Version.php b/app/Models/Version.php index 1d81a813..22a2118f 100644 --- a/app/Models/Version.php +++ b/app/Models/Version.php @@ -2,6 +2,8 @@ namespace App\Models; +use App\Enums\MediaStorage; +use FilePathHelper; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -47,6 +49,23 @@ class Version extends Model 'processed', ]; + /** + * The "booted" method of the model. + */ + protected static function booted(): void + { + static::deleting(function (Version $version) { + $version->deleteFiles(); + }); + } + + protected function deleteFiles(): void + { + MediaStorage::ORIGINALS->getDisk()->delete(FilePathHelper::toOriginalFile($this)); + MediaStorage::IMAGE_DERIVATIVES->getDisk()->deleteDirectory(FilePathHelper::toImageDerivativeVersionDirectory($this)); + // Video derivatives may not be deleted here, otherwise failed jobs would delete the only existing video derivative. + } + /** * Returns the media that the version belongs to. */ diff --git a/composer.lock b/composer.lock index 5f3e849d..500c76e1 100644 --- a/composer.lock +++ b/composer.lock @@ -4,25 +4,25 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "19bc47efd723eb3f28c00bc1291e7877", + "content-hash": "a4ccc5fc608c608d41a096d29b3a7e7b", "packages": [ { "name": "aminyazdanpanah/php-ffmpeg-video-streaming", - "version": "v1.2.17", + "version": "v1.2.18", "source": { "type": "git", - "url": "https://github.com/hadronepoch/PHP-FFmpeg-video-streaming.git", - "reference": "52c2742117f9b224df70cd0497071f8785ac446e" + "url": "https://github.com/quasarstream/PHP-FFmpeg-video-streaming.git", + "reference": "bc887130c7613196e7b099bc2459083972a2e144" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/hadronepoch/PHP-FFmpeg-video-streaming/zipball/52c2742117f9b224df70cd0497071f8785ac446e", - "reference": "52c2742117f9b224df70cd0497071f8785ac446e", + "url": "https://api.github.com/repos/quasarstream/PHP-FFmpeg-video-streaming/zipball/bc887130c7613196e7b099bc2459083972a2e144", + "reference": "bc887130c7613196e7b099bc2459083972a2e144", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0", - "php-ffmpeg/php-ffmpeg": "^0.15 || 0.16 || 0.17 || 0.18 || 0.19 || ^1.0 || ^1.1", + "php": "^7.2 || ^8.0 || ^8.1 || ^8.2 || ^8.3", + "php-ffmpeg/php-ffmpeg": "^0.15 || 0.16 || 0.17 || 0.18 || 0.19 || ^1.0 || ^1.1 || ^1.2", "symfony/filesystem": "^4.0 || ^5.0 || ^6.0" }, "require-dev": { @@ -87,8 +87,8 @@ "video-streaming" ], "support": { - "issues": "https://github.com/hadronepoch/PHP-FFmpeg-video-streaming/issues", - "source": "https://github.com/hadronepoch/PHP-FFmpeg-video-streaming/tree/v1.2.17" + "issues": "https://github.com/quasarstream/PHP-FFmpeg-video-streaming/issues", + "source": "https://github.com/quasarstream/PHP-FFmpeg-video-streaming/tree/v1.2.18" }, "funding": [ { @@ -104,7 +104,7 @@ "type": "patreon" } ], - "time": "2023-11-13T22:03:13+00:00" + "time": "2024-04-08T23:56:25+00:00" }, { "name": "aws/aws-crt-php", @@ -162,16 +162,16 @@ }, { "name": "aws/aws-sdk-php", - "version": "3.303.1", + "version": "3.304.6", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "e695623e9f6f278bed69172fddb932de3705030f" + "reference": "02abf9b8e2afbdf281e28757c582049d3db16df7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/e695623e9f6f278bed69172fddb932de3705030f", - "reference": "e695623e9f6f278bed69172fddb932de3705030f", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/02abf9b8e2afbdf281e28757c582049d3db16df7", + "reference": "02abf9b8e2afbdf281e28757c582049d3db16df7", "shasum": "" }, "require": { @@ -251,9 +251,9 @@ "support": { "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80", "issues": "https://github.com/aws/aws-sdk-php/issues", - "source": "https://github.com/aws/aws-sdk-php/tree/3.303.1" + "source": "https://github.com/aws/aws-sdk-php/tree/3.304.6" }, - "time": "2024-04-02T18:09:38+00:00" + "time": "2024-04-17T18:27:31+00:00" }, { "name": "brick/math", @@ -1502,16 +1502,16 @@ }, { "name": "laravel/framework", - "version": "v11.2.0", + "version": "v11.4.0", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "a1750156b671f37cba702380107e2d22161c31e3" + "reference": "c1dc67c28811dc5be524a30b18f29ce62126716a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/a1750156b671f37cba702380107e2d22161c31e3", - "reference": "a1750156b671f37cba702380107e2d22161c31e3", + "url": "https://api.github.com/repos/laravel/framework/zipball/c1dc67c28811dc5be524a30b18f29ce62126716a", + "reference": "c1dc67c28811dc5be524a30b18f29ce62126716a", "shasum": "" }, "require": { @@ -1530,7 +1530,7 @@ "fruitcake/php-cors": "^1.3", "guzzlehttp/guzzle": "^7.8", "guzzlehttp/uri-template": "^1.0", - "laravel/prompts": "^0.1.15", + "laravel/prompts": "^0.1.18", "laravel/serializable-closure": "^1.3", "league/commonmark": "^2.2.1", "league/flysystem": "^3.8.0", @@ -1703,20 +1703,20 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2024-04-02T14:01:33+00:00" + "time": "2024-04-16T14:38:51+00:00" }, { "name": "laravel/prompts", - "version": "v0.1.17", + "version": "v0.1.19", "source": { "type": "git", "url": "https://github.com/laravel/prompts.git", - "reference": "8ee9f87f7f9eadcbe21e9e72cd4176b2f06cd5b5" + "reference": "0ab75ac3434d9f610c5691758a6146a3d1940c18" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/prompts/zipball/8ee9f87f7f9eadcbe21e9e72cd4176b2f06cd5b5", - "reference": "8ee9f87f7f9eadcbe21e9e72cd4176b2f06cd5b5", + "url": "https://api.github.com/repos/laravel/prompts/zipball/0ab75ac3434d9f610c5691758a6146a3d1940c18", + "reference": "0ab75ac3434d9f610c5691758a6146a3d1940c18", "shasum": "" }, "require": { @@ -1758,22 +1758,22 @@ ], "support": { "issues": "https://github.com/laravel/prompts/issues", - "source": "https://github.com/laravel/prompts/tree/v0.1.17" + "source": "https://github.com/laravel/prompts/tree/v0.1.19" }, - "time": "2024-03-13T16:05:43+00:00" + "time": "2024-04-16T14:20:35+00:00" }, { "name": "laravel/sanctum", - "version": "v4.0.1", + "version": "v4.0.2", "source": { "type": "git", "url": "https://github.com/laravel/sanctum.git", - "reference": "d1de99bf8d31199aaf93881561622489ab91ba58" + "reference": "9cfc0ce80cabad5334efff73ec856339e8ec1ac1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/d1de99bf8d31199aaf93881561622489ab91ba58", - "reference": "d1de99bf8d31199aaf93881561622489ab91ba58", + "url": "https://api.github.com/repos/laravel/sanctum/zipball/9cfc0ce80cabad5334efff73ec856339e8ec1ac1", + "reference": "9cfc0ce80cabad5334efff73ec856339e8ec1ac1", "shasum": "" }, "require": { @@ -1824,7 +1824,7 @@ "issues": "https://github.com/laravel/sanctum/issues", "source": "https://github.com/laravel/sanctum" }, - "time": "2024-03-19T20:09:38+00:00" + "time": "2024-04-10T19:39:58+00:00" }, { "name": "laravel/serializable-closure", @@ -2142,16 +2142,16 @@ }, { "name": "league/flysystem", - "version": "3.26.0", + "version": "3.27.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "072735c56cc0da00e10716dd90d5a7f7b40b36be" + "reference": "4729745b1ab737908c7d055148c9a6b3e959832f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/072735c56cc0da00e10716dd90d5a7f7b40b36be", - "reference": "072735c56cc0da00e10716dd90d5a7f7b40b36be", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/4729745b1ab737908c7d055148c9a6b3e959832f", + "reference": "4729745b1ab737908c7d055148c9a6b3e959832f", "shasum": "" }, "require": { @@ -2216,7 +2216,7 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/3.26.0" + "source": "https://github.com/thephpleague/flysystem/tree/3.27.0" }, "funding": [ { @@ -2228,20 +2228,20 @@ "type": "github" } ], - "time": "2024-03-25T11:49:53+00:00" + "time": "2024-04-07T19:17:50+00:00" }, { "name": "league/flysystem-aws-s3-v3", - "version": "3.26.0", + "version": "3.27.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem-aws-s3-v3.git", - "reference": "885d0a758c71ae3cd6c503544573a1fdb8dc754f" + "reference": "3e6ce2f972f1470db779f04d29c289dcd2c32837" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/885d0a758c71ae3cd6c503544573a1fdb8dc754f", - "reference": "885d0a758c71ae3cd6c503544573a1fdb8dc754f", + "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/3e6ce2f972f1470db779f04d29c289dcd2c32837", + "reference": "3e6ce2f972f1470db779f04d29c289dcd2c32837", "shasum": "" }, "require": { @@ -2281,7 +2281,7 @@ "storage" ], "support": { - "source": "https://github.com/thephpleague/flysystem-aws-s3-v3/tree/3.26.0" + "source": "https://github.com/thephpleague/flysystem-aws-s3-v3/tree/3.27.0" }, "funding": [ { @@ -2293,7 +2293,7 @@ "type": "github" } ], - "time": "2024-03-24T21:11:18+00:00" + "time": "2024-04-07T19:16:54+00:00" }, { "name": "league/flysystem-local", @@ -2412,16 +2412,16 @@ }, { "name": "monolog/monolog", - "version": "3.5.0", + "version": "3.6.0", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "c915e2634718dbc8a4a15c61b0e62e7a44e14448" + "reference": "4b18b21a5527a3d5ffdac2fd35d3ab25a9597654" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/c915e2634718dbc8a4a15c61b0e62e7a44e14448", - "reference": "c915e2634718dbc8a4a15c61b0e62e7a44e14448", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/4b18b21a5527a3d5ffdac2fd35d3ab25a9597654", + "reference": "4b18b21a5527a3d5ffdac2fd35d3ab25a9597654", "shasum": "" }, "require": { @@ -2444,7 +2444,7 @@ "phpstan/phpstan": "^1.9", "phpstan/phpstan-deprecation-rules": "^1.0", "phpstan/phpstan-strict-rules": "^1.4", - "phpunit/phpunit": "^10.1", + "phpunit/phpunit": "^10.5.17", "predis/predis": "^1.1 || ^2", "ruflin/elastica": "^7", "symfony/mailer": "^5.4 || ^6", @@ -2497,7 +2497,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/3.5.0" + "source": "https://github.com/Seldaek/monolog/tree/3.6.0" }, "funding": [ { @@ -2509,7 +2509,7 @@ "type": "tidelift" } ], - "time": "2023-10-27T15:32:31+00:00" + "time": "2024-04-12T21:02:21+00:00" }, { "name": "mtdowling/jmespath.php", @@ -2579,16 +2579,16 @@ }, { "name": "nesbot/carbon", - "version": "3.2.3", + "version": "3.2.4", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "4d599a6e2351d6b6bf21737accdfe1a4ce3fdbb1" + "reference": "82c28278c1c8f7b82dcdab25692237f052ffc8d8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/4d599a6e2351d6b6bf21737accdfe1a4ce3fdbb1", - "reference": "4d599a6e2351d6b6bf21737accdfe1a4ce3fdbb1", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/82c28278c1c8f7b82dcdab25692237f052ffc8d8", + "reference": "82c28278c1c8f7b82dcdab25692237f052ffc8d8", "shasum": "" }, "require": { @@ -2681,7 +2681,7 @@ "type": "tidelift" } ], - "time": "2024-03-30T18:22:00+00:00" + "time": "2024-04-05T09:58:10+00:00" }, { "name": "nette/schema", @@ -8156,16 +8156,16 @@ }, { "name": "phpstan/phpdoc-parser", - "version": "1.27.0", + "version": "1.28.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "86e4d5a4b036f8f0be1464522f4c6b584c452757" + "reference": "cd06d6b1a1b3c75b0b83f97577869fd85a3cd4fb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/86e4d5a4b036f8f0be1464522f4c6b584c452757", - "reference": "86e4d5a4b036f8f0be1464522f4c6b584c452757", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/cd06d6b1a1b3c75b0b83f97577869fd85a3cd4fb", + "reference": "cd06d6b1a1b3c75b0b83f97577869fd85a3cd4fb", "shasum": "" }, "require": { @@ -8197,9 +8197,9 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.27.0" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.28.0" }, - "time": "2024-03-21T13:14:53+00:00" + "time": "2024-04-03T18:51:33+00:00" }, { "name": "phpunit/php-code-coverage", @@ -8526,16 +8526,16 @@ }, { "name": "phpunit/phpunit", - "version": "11.0.9", + "version": "11.1.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "591bbfe416400385527d5086b346b92c06de404b" + "reference": "51e342a0bc987e0ea8418105d0711f08ae116de3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/591bbfe416400385527d5086b346b92c06de404b", - "reference": "591bbfe416400385527d5086b346b92c06de404b", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/51e342a0bc987e0ea8418105d0711f08ae116de3", + "reference": "51e342a0bc987e0ea8418105d0711f08ae116de3", "shasum": "" }, "require": { @@ -8574,7 +8574,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "11.0-dev" + "dev-main": "11.1-dev" } }, "autoload": { @@ -8606,7 +8606,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/11.0.9" + "source": "https://github.com/sebastianbergmann/phpunit/tree/11.1.2" }, "funding": [ { @@ -8622,7 +8622,7 @@ "type": "tidelift" } ], - "time": "2024-03-28T10:09:42+00:00" + "time": "2024-04-14T07:13:56+00:00" }, { "name": "sebastian/cli-parser", @@ -9680,16 +9680,16 @@ }, { "name": "spatie/ignition", - "version": "1.13.1", + "version": "1.13.2", "source": { "type": "git", "url": "https://github.com/spatie/ignition.git", - "reference": "889bf1dfa59e161590f677728b47bf4a6893983b" + "reference": "952798e239d9969e4e694b124c2cc222798dbb28" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/889bf1dfa59e161590f677728b47bf4a6893983b", - "reference": "889bf1dfa59e161590f677728b47bf4a6893983b", + "url": "https://api.github.com/repos/spatie/ignition/zipball/952798e239d9969e4e694b124c2cc222798dbb28", + "reference": "952798e239d9969e4e694b124c2cc222798dbb28", "shasum": "" }, "require": { @@ -9759,20 +9759,20 @@ "type": "github" } ], - "time": "2024-03-29T14:03:47+00:00" + "time": "2024-04-16T08:49:17+00:00" }, { "name": "spatie/laravel-ignition", - "version": "2.5.1", + "version": "2.5.2", "source": { "type": "git", "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "0c864b3cbd66ce67a2096c5f743e07ce8f1d6ab9" + "reference": "c93fcadcc4629775c839ac9a90916f07a660266f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/0c864b3cbd66ce67a2096c5f743e07ce8f1d6ab9", - "reference": "0c864b3cbd66ce67a2096c5f743e07ce8f1d6ab9", + "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/c93fcadcc4629775c839ac9a90916f07a660266f", + "reference": "c93fcadcc4629775c839ac9a90916f07a660266f", "shasum": "" }, "require": { @@ -9782,7 +9782,7 @@ "illuminate/support": "^10.0|^11.0", "php": "^8.1", "spatie/flare-client-php": "^1.3.5", - "spatie/ignition": "^1.13", + "spatie/ignition": "^1.13.2", "symfony/console": "^6.2.3|^7.0", "symfony/var-dumper": "^6.2.3|^7.0" }, @@ -9851,7 +9851,7 @@ "type": "github" } ], - "time": "2024-04-02T06:30:22+00:00" + "time": "2024-04-16T08:57:16+00:00" }, { "name": "symfony/yaml", @@ -9981,7 +9981,7 @@ "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": "^8.2", + "php": "8.2.*|8.3.*", "ext-fileinfo": "*", "ext-sodium": "*" }, diff --git a/docker/8.2/Dockerfile b/docker/8.2/Dockerfile index e6225d3a..89ca4665 100644 --- a/docker/8.2/Dockerfile +++ b/docker/8.2/Dockerfile @@ -46,6 +46,14 @@ RUN apt-get update \ && apt-get install -y yarn \ && apt-get install -y mysql-client \ && apt-get install -y postgresql-client-$POSTGRES_VERSION \ + && apt-get install -y imagemagick \ + && apt-get install -y php8.2-imagick \ + && apt-get install -y jpegoptim \ + && apt-get install -y optipng \ + && apt-get install -y pngquant \ + && apt-get install -y gifsicle \ + && apt-get install -y webp \ + && apt-get install -y ffmpeg \ && apt-get -y autoremove \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* diff --git a/docker/8.3/Dockerfile b/docker/8.3/Dockerfile index 7f0acdd7..d8a6f740 100644 --- a/docker/8.3/Dockerfile +++ b/docker/8.3/Dockerfile @@ -46,6 +46,14 @@ RUN apt-get update \ && apt-get install -y yarn \ && apt-get install -y mysql-client \ && apt-get install -y postgresql-client-$POSTGRES_VERSION \ + && apt-get install -y imagemagick \ + && apt-get install -y php8.3-imagick \ + && apt-get install -y jpegoptim \ + && apt-get install -y optipng \ + && apt-get install -y pngquant \ + && apt-get install -y gifsicle \ + && apt-get install -y webp \ + && apt-get install -y ffmpeg \ && apt-get -y autoremove \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* diff --git a/tests/MediaTest.php b/tests/MediaTest.php index 1faac6c6..332bd464 100644 --- a/tests/MediaTest.php +++ b/tests/MediaTest.php @@ -2,19 +2,22 @@ namespace Tests; +use App\Enums\MediaStorage; use App\Models\User; +use Illuminate\Contracts\Filesystem\Filesystem; use Laravel\Sanctum\Sanctum; use Storage; class MediaTest extends TestCase { protected static User $user; + protected Filesystem $originalsDisk; protected function setUp(): void { parent::setUp(); - Storage::persistentFake(config('transmorpher.disks.originals')); + $this->originalsDisk ??= Storage::persistentFake(config(sprintf('transmorpher.disks.%s', MediaStorage::ORIGINALS->value))); Sanctum::actingAs( self::$user ??= User::factory()->create(), diff --git a/tests/TestCase.php b/tests/TestCase.php index 539c7dde..1850fed0 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -2,8 +2,35 @@ namespace Tests; +use Illuminate\Database\Eloquent\Model; use Illuminate\Foundation\Testing\TestCase as BaseTestCase; +use ReflectionClass; +use ReflectionMethod; abstract class TestCase extends BaseTestCase { + protected function getAccessibleReflectionMethod(Model $model, string $method): ReflectionMethod + { + $reflectionProtector = new ReflectionClass($model); + $method = $reflectionProtector->getMethod($method); + + $method->setAccessible(true); + + return $method; + } + + /** + * Allows a test to call a protected method. + * + * @param Model $model + * @param string $methodName + * @param array $params + * @return mixed + */ + protected function runProtectedMethod(Model $model, string $methodName, array $params = []): mixed + { + $method = $this->getAccessibleReflectionMethod($model, $methodName); + + return $method->invoke($model, ...$params); + } } diff --git a/tests/Unit/ImageTest.php b/tests/Unit/ImageTest.php index 01464d73..3c94e9c6 100644 --- a/tests/Unit/ImageTest.php +++ b/tests/Unit/ImageTest.php @@ -2,13 +2,18 @@ namespace Tests\Unit; +use App\Enums\MediaStorage; use App\Enums\Transformation; use App\Exceptions\InvalidTransformationFormatException; use App\Exceptions\InvalidTransformationValueException; use App\Exceptions\TransformationNotFoundException; use App\Models\Media; +use App\Models\UploadSlot; +use App\Models\Version; use FilePathHelper; +use Illuminate\Contracts\Filesystem\Filesystem; use Illuminate\Http\UploadedFile; +use Illuminate\Testing\TestResponse; use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\Attributes\Depends; use PHPUnit\Framework\Attributes\Test; @@ -19,63 +24,181 @@ class ImageTest extends MediaTest { protected const IDENTIFIER = 'testImage'; protected const IMAGE_NAME = 'image.jpg'; + protected Filesystem $imageDerivativesDisk; + protected string $uploadToken; + protected Version $version; + protected Media $media; + protected UploadSlot $uploadSlot; protected function setUp(): void { parent::setUp(); - Storage::persistentFake(config('transmorpher.disks.imageDerivatives')); + $this->imageDerivativesDisk ??= Storage::persistentFake(config(sprintf('transmorpher.disks.%s', MediaStorage::IMAGE_DERIVATIVES->value))); } - #[Test] - public function ensureImageUploadSlotCanBeReserved() + protected function reserveUploadSlot(): TestResponse { - $reserveUploadSlotResponse = $this->json('POST', route('v1.reserveImageUploadSlot'), [ + return $this->json('POST', route('v1.reserveImageUploadSlot'), [ 'identifier' => self::IDENTIFIER ]); + } + + #[Test] + public function ensureImageUploadSlotCanBeReserved() + { + $reserveUploadSlotResponse = $this->reserveUploadSlot(); + $reserveUploadSlotResponse->assertOk(); return $reserveUploadSlotResponse->json()['upload_token']; } - #[Test] - #[Depends('ensureImageUploadSlotCanBeReserved')] - public function ensureImageCanBeUploaded(string $uploadToken) + protected function uploadImage(string $uploadToken): TestResponse { - $uploadResponse = $this->json('POST', route('v1.upload', [$uploadToken]), [ + return $this->json('POST', route('v1.upload', [$uploadToken]), [ 'file' => UploadedFile::fake()->image(self::IMAGE_NAME), 'identifier' => self::IDENTIFIER ]); + } + + #[Test] + #[Depends('ensureImageUploadSlotCanBeReserved')] + public function ensureImageCanBeUploaded(string $uploadToken) + { + $uploadResponse = $this->uploadImage($uploadToken); $uploadResponse->assertCreated(); + $media = Media::whereIdentifier(self::IDENTIFIER)->first(); + $version = $media->Versions()->whereNumber($uploadResponse['version'])->first(); + Storage::disk(config('transmorpher.disks.originals'))->assertExists( - FilePathHelper::toOriginalFile(Media::whereIdentifier(self::IDENTIFIER)->first()->Versions()->whereNumber($uploadResponse['version'])->first()), + FilePathHelper::toOriginalFile($version), ); + + return $version; + } + + protected function createDerivativeForVersion(Version $version): TestResponse + { + return $this->get(route('getDerivative', [self::$user->name, $version->Media])); } #[Test] #[Depends('ensureImageCanBeUploaded')] - public function ensureProcessedFilesAreAvailable() + public function ensureProcessedFilesAreAvailable(Version $version) { - $media = self::$user->Media()->whereIdentifier(self::IDENTIFIER)->first(); - $getDerivativeResponse = $this->get(route('getDerivative', [self::$user->name, $media])); + $this->createDerivativeForVersion($version)->assertOk(); - $getDerivativeResponse->assertOk(); - - return $media; + return $version; } #[Test] #[Depends('ensureProcessedFilesAreAvailable')] - public function ensureUnprocessedFilesAreNotAvailable(Media $media) + public function ensureUnprocessedFilesAreNotAvailable(Version $version) { - $media->Versions()->first()->update(['processed' => 0]); - $getDerivativeResponse = $this->get(route('getDerivative', [self::$user->name, $media])); + $version->update(['processed' => 0]); + $getDerivativeResponse = $this->get(route('getDerivative', [self::$user->name, $version->Media])); $getDerivativeResponse->assertNotFound(); } + protected function assertVersionFilesExist(Version $version): void + { + $this->originalsDisk->assertExists(FilePathHelper::toOriginalFile($version)); + $this->imageDerivativesDisk->assertExists(FilePathHelper::toImageDerivativeFile($version)); + } + + protected function assertMediaDirectoryExists($media): void + { + $this->originalsDisk->assertExists(FilePathHelper::toBaseDirectory($media)); + } + + protected function assertUserDirectoryExists(): void + { + $this->originalsDisk->assertExists(self::$user->name); + $this->imageDerivativesDisk->assertExists(self::$user->name); + } + + protected function assertVersionFilesMissing(Version $version): void + { + $this->originalsDisk->assertMissing(FilePathHelper::toOriginalFile($version)); + $this->imageDerivativesDisk->assertMissing(FilePathHelper::toImageDerivativeFile($version)); + } + + protected function assertMediaDirectoryMissing($media): void + { + $this->originalsDisk->assertMissing(FilePathHelper::toBaseDirectory($media)); + $this->imageDerivativesDisk->assertMissing(FilePathHelper::toBaseDirectory($media)); + } + + protected function assertUserDirectoryMissing(): void + { + $this->originalsDisk->assertMissing(self::$user->name); + $this->imageDerivativesDisk->assertMissing(self::$user->name); + } + + protected function setupDeletionTest(): void + { + $this->uploadToken = $this->reserveUploadSlot()->json()['upload_token']; + $this->version = Media::whereIdentifier(self::IDENTIFIER)->first()->Versions()->whereNumber($this->uploadImage($this->uploadToken)['version'])->first(); + $this->createDerivativeForVersion($this->version); + $this->media = $this->version->Media; + $this->uploadSlot = UploadSlot::whereToken($this->uploadToken)->withoutGlobalScopes()->first(); + } + + #[Test] + public function ensureVersionDeletionMethodsWork() + { + $this->setupDeletionTest(); + + $this->assertVersionFilesExist($this->version); + + $this->runProtectedMethod($this->version, 'deleteFiles'); + + $this->assertVersionFilesMissing($this->version); + } + + #[Test] + public function ensureMediaDeletionMethodsWork() + { + $this->setupDeletionTest(); + + $this->assertVersionFilesExist($this->version); + $this->assertMediaDirectoryExists($this->media); + + $this->runProtectedMethod($this->media, 'deleteRelatedModels'); + $this->runProtectedMethod($this->media, 'deleteBaseDirectories'); + + $this->assertVersionFilesMissing($this->version); + $this->assertMediaDirectoryMissing($this->media); + + $this->assertModelMissing($this->version); + $this->assertModelMissing($this->uploadSlot); + } + + #[Test] + public function ensureUserDeletionMethodsWork() + { + $this->setupDeletionTest(); + + $this->assertVersionFilesExist($this->version); + $this->assertMediaDirectoryExists($this->media); + $this->assertUserDirectoryExists(); + + $this->runProtectedMethod(self::$user, 'deleteRelatedModels'); + $this->runProtectedMethod(self::$user, 'deleteMediaDirectories'); + + $this->assertVersionFilesMissing($this->version); + $this->assertMediaDirectoryMissing($this->media); + $this->assertUserDirectoryMissing(); + + $this->assertModelMissing($this->version); + $this->assertModelMissing($this->media); + $this->assertModelMissing($this->uploadSlot); + } + /** * Provides Transformation string scenarios. contextually used in web requests for retrieving derivatives. * diff --git a/tests/Unit/VideoTest.php b/tests/Unit/VideoTest.php index 3694af31..e374bb53 100644 --- a/tests/Unit/VideoTest.php +++ b/tests/Unit/VideoTest.php @@ -2,12 +2,14 @@ namespace Tests\Unit; +use App\Enums\MediaStorage; use App\Enums\ResponseState; use App\Helpers\SodiumHelper; use App\Jobs\TranscodeVideo; use App\Models\UploadSlot; use FilePathHelper; use Http; +use Illuminate\Contracts\Filesystem\Filesystem; use PHPUnit\Framework\Attributes\Depends; use PHPUnit\Framework\Attributes\Test; use Storage; @@ -18,12 +20,13 @@ class VideoTest extends MediaTest protected const IDENTIFIER = 'testVideo'; protected const VIDEO_NAME = 'video.mp4'; protected const CALLBACK_URL = 'http://example.com/callback'; + protected Filesystem $videoDerivativesDisk; protected function setUp(): void { parent::setUp(); - Storage::persistentFake(config('transmorpher.disks.videoDerivatives')); + $this->videoDerivativesDisk ??= Storage::persistentFake(config(sprintf('transmorpher.disks.%s', MediaStorage::VIDEO_DERIVATIVES->value))); } #[Test] diff --git a/tests/data/ffmpeg-folders/ffmpeg-passes_directoryOlderThanADay/.gitignore b/tests/data/ffmpeg-folders/ffmpeg-passes_directoryOlderThanADay/.gitignore deleted file mode 100644 index e69de29b..00000000 diff --git a/tests/data/ffmpeg-folders/ffmpeg-passes_directoryYoungerThanADay/.gitignore b/tests/data/ffmpeg-folders/ffmpeg-passes_directoryYoungerThanADay/.gitignore deleted file mode 100644 index e69de29b..00000000 diff --git a/tests/data/ffmpeg-folders/ffmpeg-passes_fileOlderThanADay b/tests/data/ffmpeg-folders/ffmpeg-passes_fileOlderThanADay deleted file mode 100644 index e69de29b..00000000 diff --git a/tests/data/ffmpeg-folders/ffmpeg-passes_fileYoungerThanADay b/tests/data/ffmpeg-folders/ffmpeg-passes_fileYoungerThanADay deleted file mode 100644 index e69de29b..00000000 From cffc3b5c70be273bc4fd02478ae3227dc4af5f2d Mon Sep 17 00:00:00 2001 From: mszulik <69617961+mszulik@users.noreply.github.com> Date: Fri, 19 Apr 2024 13:18:43 +0200 Subject: [PATCH 09/15] remove file path helper (#46) --- .phpstorm.meta.php | 11 - _ide_helper.php | 235 ++++++++---------- app/Classes/MediaHandler/ImageHandler.php | 6 +- app/Classes/MediaHandler/VideoHandler.php | 10 +- app/Classes/Transcode.php | 13 +- app/Facades/FilePathHelperFacade.php | 18 -- app/Helpers/FilePathHelper.php | 127 ---------- app/Http/Controllers/V1/ImageController.php | 11 +- .../Controllers/V1/UploadSlotController.php | 11 +- app/Http/Controllers/V1/VersionController.php | 7 +- app/Interfaces/MediaHandlerInterface.php | 3 +- app/Interfaces/TranscodeInterface.php | 7 +- app/Jobs/TranscodeVideo.php | 54 ++-- app/Models/Media.php | 28 ++- app/Models/Version.php | 65 ++++- .../FilePathHelperServiceProvider.php | 29 --- app/Providers/RouteServiceProvider.php | 6 +- config/app.php | 2 - tests/Unit/ImageTest.php | 23 +- tests/Unit/VideoTest.php | 3 +- 20 files changed, 275 insertions(+), 394 deletions(-) delete mode 100644 app/Facades/FilePathHelperFacade.php delete mode 100644 app/Helpers/FilePathHelper.php delete mode 100644 app/Providers/FilePathHelperServiceProvider.php diff --git a/.phpstorm.meta.php b/.phpstorm.meta.php index 7fea47aa..b46c7636 100644 --- a/.phpstorm.meta.php +++ b/.phpstorm.meta.php @@ -191,7 +191,6 @@ 'db.transactions' => \Illuminate\Database\DatabaseTransactionsManager::class, 'encrypter' => \Illuminate\Encryption\Encrypter::class, 'events' => \Illuminate\Events\Dispatcher::class, - 'file.path' => \App\Helpers\FilePathHelper::class, 'files' => \Illuminate\Filesystem\Filesystem::class, 'filesystem' => \Illuminate\Filesystem\FilesystemManager::class, 'filesystem.cloud' => \Illuminate\Filesystem\FilesystemAdapter::class, @@ -410,7 +409,6 @@ 'db.transactions' => \Illuminate\Database\DatabaseTransactionsManager::class, 'encrypter' => \Illuminate\Encryption\Encrypter::class, 'events' => \Illuminate\Events\Dispatcher::class, - 'file.path' => \App\Helpers\FilePathHelper::class, 'files' => \Illuminate\Filesystem\Filesystem::class, 'filesystem' => \Illuminate\Filesystem\FilesystemManager::class, 'filesystem.cloud' => \Illuminate\Filesystem\FilesystemAdapter::class, @@ -629,7 +627,6 @@ 'db.transactions' => \Illuminate\Database\DatabaseTransactionsManager::class, 'encrypter' => \Illuminate\Encryption\Encrypter::class, 'events' => \Illuminate\Events\Dispatcher::class, - 'file.path' => \App\Helpers\FilePathHelper::class, 'files' => \Illuminate\Filesystem\Filesystem::class, 'filesystem' => \Illuminate\Filesystem\FilesystemManager::class, 'filesystem.cloud' => \Illuminate\Filesystem\FilesystemAdapter::class, @@ -848,7 +845,6 @@ 'db.transactions' => \Illuminate\Database\DatabaseTransactionsManager::class, 'encrypter' => \Illuminate\Encryption\Encrypter::class, 'events' => \Illuminate\Events\Dispatcher::class, - 'file.path' => \App\Helpers\FilePathHelper::class, 'files' => \Illuminate\Filesystem\Filesystem::class, 'filesystem' => \Illuminate\Filesystem\FilesystemManager::class, 'filesystem.cloud' => \Illuminate\Filesystem\FilesystemAdapter::class, @@ -1067,7 +1063,6 @@ 'db.transactions' => \Illuminate\Database\DatabaseTransactionsManager::class, 'encrypter' => \Illuminate\Encryption\Encrypter::class, 'events' => \Illuminate\Events\Dispatcher::class, - 'file.path' => \App\Helpers\FilePathHelper::class, 'files' => \Illuminate\Filesystem\Filesystem::class, 'filesystem' => \Illuminate\Filesystem\FilesystemManager::class, 'filesystem.cloud' => \Illuminate\Filesystem\FilesystemAdapter::class, @@ -1286,7 +1281,6 @@ 'db.transactions' => \Illuminate\Database\DatabaseTransactionsManager::class, 'encrypter' => \Illuminate\Encryption\Encrypter::class, 'events' => \Illuminate\Events\Dispatcher::class, - 'file.path' => \App\Helpers\FilePathHelper::class, 'files' => \Illuminate\Filesystem\Filesystem::class, 'filesystem' => \Illuminate\Filesystem\FilesystemManager::class, 'filesystem.cloud' => \Illuminate\Filesystem\FilesystemAdapter::class, @@ -1505,7 +1499,6 @@ 'db.transactions' => \Illuminate\Database\DatabaseTransactionsManager::class, 'encrypter' => \Illuminate\Encryption\Encrypter::class, 'events' => \Illuminate\Events\Dispatcher::class, - 'file.path' => \App\Helpers\FilePathHelper::class, 'files' => \Illuminate\Filesystem\Filesystem::class, 'filesystem' => \Illuminate\Filesystem\FilesystemManager::class, 'filesystem.cloud' => \Illuminate\Filesystem\FilesystemAdapter::class, @@ -1724,7 +1717,6 @@ 'db.transactions' => \Illuminate\Database\DatabaseTransactionsManager::class, 'encrypter' => \Illuminate\Encryption\Encrypter::class, 'events' => \Illuminate\Events\Dispatcher::class, - 'file.path' => \App\Helpers\FilePathHelper::class, 'files' => \Illuminate\Filesystem\Filesystem::class, 'filesystem' => \Illuminate\Filesystem\FilesystemManager::class, 'filesystem.cloud' => \Illuminate\Filesystem\FilesystemAdapter::class, @@ -1943,7 +1935,6 @@ 'db.transactions' => \Illuminate\Database\DatabaseTransactionsManager::class, 'encrypter' => \Illuminate\Encryption\Encrypter::class, 'events' => \Illuminate\Events\Dispatcher::class, - 'file.path' => \App\Helpers\FilePathHelper::class, 'files' => \Illuminate\Filesystem\Filesystem::class, 'filesystem' => \Illuminate\Filesystem\FilesystemManager::class, 'filesystem.cloud' => \Illuminate\Filesystem\FilesystemAdapter::class, @@ -2162,7 +2153,6 @@ 'db.transactions' => \Illuminate\Database\DatabaseTransactionsManager::class, 'encrypter' => \Illuminate\Encryption\Encrypter::class, 'events' => \Illuminate\Events\Dispatcher::class, - 'file.path' => \App\Helpers\FilePathHelper::class, 'files' => \Illuminate\Filesystem\Filesystem::class, 'filesystem' => \Illuminate\Filesystem\FilesystemManager::class, 'filesystem.cloud' => \Illuminate\Filesystem\FilesystemAdapter::class, @@ -2381,7 +2371,6 @@ 'db.transactions' => \Illuminate\Database\DatabaseTransactionsManager::class, 'encrypter' => \Illuminate\Encryption\Encrypter::class, 'events' => \Illuminate\Events\Dispatcher::class, - 'file.path' => \App\Helpers\FilePathHelper::class, 'files' => \Illuminate\Filesystem\Filesystem::class, 'filesystem' => \Illuminate\Filesystem\FilesystemManager::class, 'filesystem.cloud' => \Illuminate\Filesystem\FilesystemAdapter::class, diff --git a/_ide_helper.php b/_ide_helper.php index a67a47a5..df37af47 100644 --- a/_ide_helper.php +++ b/_ide_helper.php @@ -5,7 +5,7 @@ /** * A helper file for Laravel, to provide autocomplete information to your IDE - * Generated for Laravel 11.2.0. + * Generated for Laravel 11.4.0. * * This file should not be included in your code, only analyzed by your IDE! * @@ -4141,6 +4141,17 @@ { /** @var \Illuminate\Cache\FileStore $instance */ return $instance->getDirectory(); + } + /** + * Set the working directory of the cache. + * + * @param string $directory + * @return \Illuminate\Cache\FileStore + * @static + */ public static function setDirectory($directory) + { + /** @var \Illuminate\Cache\FileStore $instance */ + return $instance->setDirectory($directory); } /** * Set the cache directory where locks should be stored. @@ -4467,6 +4478,30 @@ { /** @var \Illuminate\Log\Context\Repository $instance */ return $instance->getHidden($key, $default); + } + /** + * Retrieve the given key's value and then forget it. + * + * @param string $key + * @param mixed $default + * @return mixed + * @static + */ public static function pull($key, $default = null) + { + /** @var \Illuminate\Log\Context\Repository $instance */ + return $instance->pull($key, $default); + } + /** + * Retrieve the given key's hidden value and then forget it. + * + * @param string $key + * @param mixed $default + * @return mixed + * @static + */ public static function pullHidden($key, $default = null) + { + /** @var \Illuminate\Log\Context\Repository $instance */ + return $instance->pullHidden($key, $default); } /** * Retrieve only the values of the given keys. @@ -6637,6 +6672,16 @@ { /** @var \Illuminate\Support\Testing\Fakes\EventFake $instance */ return $instance->hasDispatched($event); + } + /** + * Get the events that have been dispatched. + * + * @return array + * @static + */ public static function dispatchedEvents() + { + /** @var \Illuminate\Support\Testing\Fakes\EventFake $instance */ + return $instance->dispatchedEvents(); } } /** @@ -7789,7 +7834,7 @@ * @method static \Illuminate\Http\Client\PendingRequest withResponseMiddleware(callable $middleware) * @method static \Illuminate\Http\Client\PendingRequest beforeSending(callable $callback) * @method static \Illuminate\Http\Client\PendingRequest throw(callable|null $callback = null) - * @method static \Illuminate\Http\Client\PendingRequest throwIf(callable|bool $condition, callable|null $throwCallback = null) + * @method static \Illuminate\Http\Client\PendingRequest throwIf(callable|bool $condition) * @method static \Illuminate\Http\Client\PendingRequest throwUnless(bool $condition) * @method static \Illuminate\Http\Client\PendingRequest dump() * @method static \Illuminate\Http\Client\PendingRequest dd() @@ -8028,6 +8073,16 @@ { /** @var \Illuminate\Http\Client\Factory $instance */ return $instance->recorded($callback); + } + /** + * Create a new pending request instance for this factory. + * + * @return \Illuminate\Http\Client\PendingRequest + * @static + */ public static function createPendingRequest() + { + /** @var \Illuminate\Http\Client\Factory $instance */ + return $instance->createPendingRequest(); } /** * Get the current event dispatcher implementation. @@ -9385,6 +9440,17 @@ { /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ return $instance->hasSent($notifiable, $notification); + } + /** + * Specify if notification should be serialized and restored when being "pushed" to the queue. + * + * @param bool $serializeAndRestore + * @return \Illuminate\Support\Testing\Fakes\NotificationFake + * @static + */ public static function serializeAndRestore($serializeAndRestore = true) + { + /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ + return $instance->serializeAndRestore($serializeAndRestore); } /** * Get the notifications that have been sent. @@ -12936,6 +13002,7 @@ * @param array $headers * @param string|null $disposition * @return \Symfony\Component\HttpFoundation\StreamedResponse + * @throws \Illuminate\Routing\Exceptions\StreamedResponseException * @static */ public static function streamDownload($callback, $name = null, $headers = [], $disposition = 'attachment') { @@ -13519,7 +13586,7 @@ $instance->substituteImplicitBindings($route); } /** - * Register a callback to to run after implicit bindings are substituted. + * Register a callback to run after implicit bindings are substituted. * * @param callable $callback * @return \Illuminate\Routing\Router @@ -14838,7 +14905,7 @@ return $instance->missing($key); } /** - * Checks if a key is present and not null. + * Determine if a key is present and not null. * * @param string|array $key * @return bool @@ -14847,6 +14914,17 @@ { /** @var \Illuminate\Session\Store $instance */ return $instance->has($key); + } + /** + * Determine if any of the given keys are present and not null. + * + * @param string|array $key + * @return bool + * @static + */ public static function hasAny($key) + { + /** @var \Illuminate\Session\Store $instance */ + return $instance->hasAny($key); } /** * Get an item from the session. @@ -17932,149 +18010,32 @@ /** * * - */ class FilePathHelperFacade { - /** - * Get the path to an (existing) image derivative. - * - * Path structure: {username}/{identifier}/{versionKey}/{width}x_{height}y_{quality}q_{derivativeHash}.{format} - * - * @param \App\Models\Version $version - * @param array|null $transformations - * @return string - * @static - */ public static function toImageDerivativeFile($version, $transformations = null) - { - /** @var \App\Helpers\FilePathHelper $instance */ - return $instance->toImageDerivativeFile($version, $transformations); - } - /** - * Get the path to the directory of an image derivative version. - * - * Path structure: {username}/{identifier}/{versionKey} - * - * @param \App\Models\Version $version - * @return string - * @static - */ public static function toImageDerivativeVersionDirectory($version) - { - /** @var \App\Helpers\FilePathHelper $instance */ - return $instance->toImageDerivativeVersionDirectory($version); - } - /** - * Get the path to an original. - * - * Path structure: {username}/{identifier}/{filename} - * - * @param \App\Models\Version $version - * @return string - * @static - */ public static function toOriginalFile($version) - { - /** @var \App\Helpers\FilePathHelper $instance */ - return $instance->toOriginalFile($version); - } - /** - * Get the path to a video derivative. - * - * Path structure: {username}/{identifier}/{format}/{filename} - * - * @param \App\Models\Media $media - * @param string $format - * @param string|null $fileName - * @return string - * @static - */ public static function toVideoDerivativeFile($media, $format, $fileName = null) - { - /** @var \App\Helpers\FilePathHelper $instance */ - return $instance->toVideoDerivativeFile($media, $format, $fileName); - } - /** - * Get the path to a temporary video derivative. - * - * Path structure: {username}/{identifier}-{versionKey}-temp/{format}/{filename} - * - * @param \App\Models\Version $version - * @param string $format - * @param string|null $fileName - * @return string - * @static - */ public static function toTempVideoDerivativeFile($version, $format, $fileName = null) - { - /** @var \App\Helpers\FilePathHelper $instance */ - return $instance->toTempVideoDerivativeFile($version, $format, $fileName); - } - /** - * Get the path to the temporary video derivatives directory. - * - * Path structure: {username}/{identifier}-{versionKey}-temp - * - * @param \App\Models\Version $version - * @return string - * @static - */ public static function toTempVideoDerivativesDirectory($version) - { - /** @var \App\Helpers\FilePathHelper $instance */ - return $instance->toTempVideoDerivativesDirectory($version); - } - /** - * Get the base path for media. - * - * Path structure: {username}/{identifier}/ - * - * @param \App\Models\Media $media - * @return string - * @static - */ public static function toBaseDirectory($media) - { - /** @var \App\Helpers\FilePathHelper $instance */ - return $instance->toBaseDirectory($media); - } - /** - * Create the filename for an original. - * - * Filename structure: {versionKey}-{filename} - * - * @param \App\Models\Version $version - * @param string $fileName - * @return string - * @static - */ public static function createOriginalFileName($version, $fileName) - { - /** @var \App\Helpers\FilePathHelper $instance */ - return $instance->createOriginalFileName($version, $fileName); - } - } - /** - * - * */ class TranscodeFacade { /** * Creates a job which handles the transcoding of a video. * - * @param string $originalFilePath * @param \App\Models\Version $version * @param \App\Models\UploadSlot $uploadSlot * @return bool * @static - */ public static function createJob($originalFilePath, $version, $uploadSlot) + */ public static function createJob($version, $uploadSlot) { /** @var \App\Classes\Transcode $instance */ - return $instance->createJob($originalFilePath, $version, $uploadSlot); + return $instance->createJob($version, $uploadSlot); } /** * Creates a job which handles the transcoding of a video when a version number is updated. * - * @param string $originalFilePath * @param \App\Models\Version $version * @param \App\Models\UploadSlot $uploadSlot * @param int $oldVersionNumber * @param bool $wasProcessed * @return bool * @static - */ public static function createJobForVersionUpdate($originalFilePath, $version, $uploadSlot, $oldVersionNumber, $wasProcessed) + */ public static function createJobForVersionUpdate($version, $uploadSlot, $oldVersionNumber, $wasProcessed) { /** @var \App\Classes\Transcode $instance */ - return $instance->createJobForVersionUpdate($originalFilePath, $version, $uploadSlot, $oldVersionNumber, $wasProcessed); + return $instance->createJobForVersionUpdate($version, $uploadSlot, $oldVersionNumber, $wasProcessed); } /** * Inform client package about the transcoding result. @@ -19578,6 +19539,28 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->eagerLoadRelations($models); + } + /** + * Register a closure to be invoked after the query is executed. + * + * @param \Closure $callback + * @return \Illuminate\Database\Eloquent\Builder|static + * @static + */ public static function afterQuery($callback) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->afterQuery($callback); + } + /** + * Invoke the "after query" modification callbacks. + * + * @param mixed $result + * @return mixed + * @static + */ public static function applyAfterQueryCallbacks($result) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->applyAfterQueryCallbacks($result); } /** * Get a lazy collection for the given query. @@ -19999,6 +19982,7 @@ class Eloquent extends \Illuminate\Database\Eloquent\Model { * @param string|null $alias * @param bool $descending * @return bool + * @throws \RuntimeException * @static */ public static function orderedChunkById($count, $callback, $column = null, $alias = null, $descending = false) { @@ -22671,7 +22655,6 @@ class View extends \Illuminate\Support\Facades\View {} class Vite extends \Illuminate\Support\Facades\Vite {} class CdnHelper extends \App\Facades\CdnHelperFacade {} class CloudStorage extends \App\Facades\CloudStorageFacade {} - class FilePathHelper extends \App\Facades\FilePathHelperFacade {} class InterventionImage extends \Intervention\Image\Facades\Image {} class Transcode extends \App\Facades\TranscodeFacade {} class Transform extends \App\Facades\TransformFacade {} diff --git a/app/Classes/MediaHandler/ImageHandler.php b/app/Classes/MediaHandler/ImageHandler.php index 81709f86..04c1fd4c 100644 --- a/app/Classes/MediaHandler/ImageHandler.php +++ b/app/Classes/MediaHandler/ImageHandler.php @@ -12,7 +12,6 @@ use App\Models\User; use App\Models\Version; use CdnHelper; -use FilePathHelper; use Illuminate\Contracts\Filesystem\Filesystem; use Throwable; @@ -21,12 +20,11 @@ class ImageHandler implements MediaHandlerInterface /** * @param string $basePath * @param UploadSlot $uploadSlot - * @param string $filePath * @param Version $version * * @return ResponseState */ - public function handleSavedFile(string $basePath, UploadSlot $uploadSlot, string $filePath, Version $version): ResponseState + public function handleSavedFile(string $basePath, UploadSlot $uploadSlot, Version $version): ResponseState { if ($this->invalidateCdnCache($basePath)) { /** @@ -85,7 +83,7 @@ public function setVersion(User $user, Version $version, int $oldVersionNumber, // By creating an upload slot, a currently active upload will be canceled. $uploadSlot = $user->UploadSlots()->withoutGlobalScopes()->updateOrCreate(['identifier' => $version->Media->identifier], ['media_type' => MediaType::IMAGE]); - if ($this->invalidateCdnCache(FilePathHelper::toBaseDirectory($version->Media))) { + if ($this->invalidateCdnCache($version->Media->baseDirectory())) { $version->update(['processed' => true]); $responseState = ResponseState::IMAGE_VERSION_SET; } else { diff --git a/app/Classes/MediaHandler/VideoHandler.php b/app/Classes/MediaHandler/VideoHandler.php index 473f87df..c5f13137 100644 --- a/app/Classes/MediaHandler/VideoHandler.php +++ b/app/Classes/MediaHandler/VideoHandler.php @@ -11,7 +11,6 @@ use App\Models\User; use App\Models\Version; use CdnHelper; -use FilePathHelper; use Illuminate\Contracts\Filesystem\Filesystem; use Throwable; use Transcode; @@ -21,14 +20,13 @@ class VideoHandler implements MediaHandlerInterface /** * @param string $basePath * @param UploadSlot $uploadSlot - * @param string $filePath * @param Version $version * * @return ResponseState */ - public function handleSavedFile(string $basePath, UploadSlot $uploadSlot, string $filePath, Version $version): ResponseState + public function handleSavedFile(string $basePath, UploadSlot $uploadSlot, Version $version): ResponseState { - $success = Transcode::createJob($filePath, $version, $uploadSlot); + $success = Transcode::createJob($version, $uploadSlot); return $success ? ResponseState::VIDEO_UPLOAD_SUCCESSFUL : ResponseState::TRANSCODING_JOB_DISPATCH_FAILED; } @@ -69,13 +67,11 @@ public function invalidateCdnCache(string $basePath): bool public function setVersion(User $user, Version $version, int $oldVersionNumber, bool $wasProcessed, string $callbackUrl): array { if ($callbackUrl) { - $filePath = FilePathHelper::toOriginalFile($version); - // Token and valid_until will be set in the 'saving' event. // By creating an upload slot, currently active uploading or transcoding will be canceled. $uploadSlot = $user->UploadSlots()->withoutGlobalScopes()->updateOrCreate(['identifier' => $version->Media->identifier], ['callback_url' => $callbackUrl, 'media_type' => MediaType::VIDEO]); - $success = Transcode::createJobForVersionUpdate($filePath, $version, $uploadSlot, $oldVersionNumber, $wasProcessed); + $success = Transcode::createJobForVersionUpdate($version, $uploadSlot, $oldVersionNumber, $wasProcessed); $responseState = $success ? ResponseState::VIDEO_VERSION_SET : ResponseState::TRANSCODING_JOB_DISPATCH_FAILED; } else { $responseState = ResponseState::NO_CALLBACK_URL_PROVIDED; diff --git a/app/Classes/Transcode.php b/app/Classes/Transcode.php index 9abb3e89..87a06309 100644 --- a/app/Classes/Transcode.php +++ b/app/Classes/Transcode.php @@ -11,7 +11,6 @@ use App\Models\UploadSlot; use App\Models\Version; use Exception; -use FilePathHelper; use Http; class Transcode implements TranscodeInterface @@ -19,12 +18,11 @@ class Transcode implements TranscodeInterface /** * Creates a job which handles the transcoding of a video. * - * @param string $originalFilePath * @param Version $version * @param UploadSlot $uploadSlot * @return bool */ - public function createJob(string $originalFilePath, Version $version, UploadSlot $uploadSlot): bool + public function createJob(Version $version, UploadSlot $uploadSlot): bool { /* * When using SQS FIFO: @@ -33,7 +31,7 @@ public function createJob(string $originalFilePath, Version $version, UploadSlot * See SqsFifoQueue class. */ try { - TranscodeVideo::dispatch($originalFilePath, $version, $uploadSlot); + TranscodeVideo::dispatch($version, $uploadSlot); } catch (Exception) { return false; } @@ -44,7 +42,6 @@ public function createJob(string $originalFilePath, Version $version, UploadSlot /** * Creates a job which handles the transcoding of a video when a version number is updated. * - * @param string $originalFilePath * @param Version $version * @param UploadSlot $uploadSlot * @param int $oldVersionNumber @@ -52,10 +49,10 @@ public function createJob(string $originalFilePath, Version $version, UploadSlot * * @return bool */ - public function createJobForVersionUpdate(string $originalFilePath, Version $version, UploadSlot $uploadSlot, int $oldVersionNumber, bool $wasProcessed): bool + public function createJobForVersionUpdate(Version $version, UploadSlot $uploadSlot, int $oldVersionNumber, bool $wasProcessed): bool { try { - TranscodeVideo::dispatch($originalFilePath, $version, $uploadSlot, $oldVersionNumber, $wasProcessed); + TranscodeVideo::dispatch($version, $uploadSlot, $oldVersionNumber, $wasProcessed); } catch (Exception) { return false; } @@ -82,7 +79,7 @@ public function callback(ResponseState $responseState, string $callbackUrl, stri 'identifier' => $media->identifier, 'version' => $versionNumber, 'upload_token' => $uploadToken, - 'public_path' => implode(DIRECTORY_SEPARATOR, array_filter([MediaType::VIDEO->prefix(), FilePathHelper::toBaseDirectory($media)])) + 'public_path' => implode(DIRECTORY_SEPARATOR, array_filter([MediaType::VIDEO->prefix(), $media->baseDirectory()])) ]; $signedResponse = SodiumHelper::sign(json_encode($response)); diff --git a/app/Facades/FilePathHelperFacade.php b/app/Facades/FilePathHelperFacade.php deleted file mode 100644 index 2d85f0d4..00000000 --- a/app/Facades/FilePathHelperFacade.php +++ /dev/null @@ -1,18 +0,0 @@ -filename, PATHINFO_EXTENSION); - - // Hash of transformation parameters and version number to identify already generated derivatives. - $derivativeHash = hash('sha256', json_encode($transformations) . $version->getKey()); - - return sprintf('%s/%sx_%sy_%sq_%s.%s', - $this->toImageDerivativeVersionDirectory($version), - $transformations[Transformation::WIDTH->value] ?? '', - $transformations[Transformation::HEIGHT->value] ?? '', - $transformations[Transformation::QUALITY->value] ?? '', - $derivativeHash, - $transformations[Transformation::FORMAT->value] ?? $originalFileExtension, - ); - } - - /** - * Get the path to the directory of an image derivative version. - * Path structure: {username}/{identifier}/{versionKey} - * - * @param Version $version - * @return string - */ - public function toImageDerivativeVersionDirectory(Version $version): string - { - return sprintf('%s/%s', $this->toBaseDirectory($version->Media), $version->getKey()); - } - - /** - * Get the path to an original. - * Path structure: {username}/{identifier}/{filename} - * - * @param Version $version - * @return string - */ - public function toOriginalFile(Version $version): string - { - return sprintf('%s/%s', $this->toBaseDirectory($version->Media), $version->filename); - } - - /** - * Get the path to a video derivative. - * Path structure: {username}/{identifier}/{format}/{filename} - * - * @param Media $media - * @param string $format - * @param string|null $fileName - * - * @return string - */ - public function toVideoDerivativeFile(Media $media, string $format, string $fileName = null): string - { - return sprintf('%s/%s/%s', $this->toBaseDirectory($media), $format, $fileName ?? 'video'); - } - - /** - * Get the path to a temporary video derivative. - * Path structure: {username}/{identifier}-{versionKey}-temp/{format}/{filename} - * - * @param Version $version - * @param string $format - * @param string|null $fileName - * - * @return string - */ - public function toTempVideoDerivativeFile(Version $version, string $format, string $fileName = null): string - { - return sprintf('%s/%s/%s', $this->toTempVideoDerivativesDirectory($version), $format, $fileName ?? 'video'); - } - - /** - * Get the path to the temporary video derivatives directory. - * Path structure: {username}/{identifier}-{versionKey}-temp - * - * @param Version $version - * @return string - */ - public function toTempVideoDerivativesDirectory(Version $version): string - { - return sprintf('%s-%s-temp', $this->toBaseDirectory($version->Media), $version->getKey()); - } - - /** - * Get the base path for media. - * Path structure: {username}/{identifier}/ - * - * @param Media $media - * @return string - */ - public function toBaseDirectory(Media $media): string - { - return sprintf('%s/%s', $media->User->name, $media->identifier); - } - - /** - * Create the filename for an original. - * Filename structure: {versionKey}-{filename} - * - * @param Version $version - * @param string $fileName - * - * @return string - */ - public function createOriginalFileName(Version $version, string $fileName): string - { - return sprintf('%s-%s', $version->getKey(), trim($fileName)); - } -} diff --git a/app/Http/Controllers/V1/ImageController.php b/app/Http/Controllers/V1/ImageController.php index ba2c054a..69f5ba4b 100644 --- a/app/Http/Controllers/V1/ImageController.php +++ b/app/Http/Controllers/V1/ImageController.php @@ -6,13 +6,12 @@ use App\Enums\MediaStorage; use App\Enums\Transformation; use App\Exceptions\InvalidTransformationFormatException; -use App\Http\Controllers\Controller; use App\Exceptions\InvalidTransformationValueException; use App\Exceptions\TransformationNotFoundException; +use App\Http\Controllers\Controller; use App\Models\Media; use App\Models\User; use App\Models\Version; -use FilePathHelper; use Illuminate\Contracts\Foundation\Application; use Illuminate\Contracts\Routing\ResponseFactory; use Illuminate\Http\Request; @@ -46,7 +45,7 @@ public function get(User $user, Media $media, string $transformations = ''): Res public function getOriginal(Request $request, Media $media, Version $version): Response|Application|ResponseFactory { $originalsDisk = MediaStorage::ORIGINALS->getDisk(); - $pathToOriginal = FilePathHelper::toOriginalFile($version); + $pathToOriginal = $version->originalFilePath(); return response($originalsDisk->get($pathToOriginal), 200, ['Content-Type' => mime_content_type($originalsDisk->readStream($pathToOriginal))]); } @@ -102,16 +101,14 @@ protected function getDerivative(string $transformations, Version $version): Res } $imageDerivativesDisk = MediaStorage::IMAGE_DERIVATIVES->getDisk(); - $derivativePath = FilePathHelper::toImageDerivativeFile($version, $transformationsArray); + $derivativePath = $version->imageDerivativeFilePath($transformationsArray); // Check if derivative already exists and return if so. if (!config('transmorpher.dev_mode') && config('transmorpher.store_derivatives') && $imageDerivativesDisk->exists($derivativePath)) { $derivative = $imageDerivativesDisk->get($derivativePath); } else { - $originalFilePath = FilePathHelper::toOriginalFile($version); - // Apply transformations to image. - $derivative = Transform::transform($originalFilePath, $transformationsArray); + $derivative = Transform::transform($version->originalFilePath(), $transformationsArray); $derivative = $this->optimizeDerivative($derivative, $transformationsArray[Transformation::QUALITY->value] ?? null); if (config('transmorpher.store_derivatives')) { diff --git a/app/Http/Controllers/V1/UploadSlotController.php b/app/Http/Controllers/V1/UploadSlotController.php index 08dc58ef..d1cfd325 100644 --- a/app/Http/Controllers/V1/UploadSlotController.php +++ b/app/Http/Controllers/V1/UploadSlotController.php @@ -13,7 +13,6 @@ use App\Models\UploadSlot; use App\Models\User; use File; -use FilePathHelper; use Illuminate\Http\JsonResponse; use Illuminate\Http\UploadedFile; use Pion\Laravel\ChunkUpload\Exceptions\UploadFailedException; @@ -94,14 +93,12 @@ protected function saveFile(UploadedFile $uploadedFile, UploadSlot $uploadSlot, $versionNumber = $media->Versions()->max('number') + 1; $version = $media->Versions()->create(['number' => $versionNumber]); + $basePath = $media->baseDirectory(); - $basePath = FilePathHelper::toBaseDirectory($media); - $fileName = FilePathHelper::createOriginalFileName($version, $uploadedFile->getClientOriginalName()); + $version->update(['filename' => $version->createOriginalFileName($uploadedFile->getClientOriginalName())]); - $version->update(['filename' => $fileName]); - - if ($filePath = MediaStorage::ORIGINALS->getDisk()->putFileAs($basePath, $uploadedFile, $version->filename)) { - $responseState = $type->handler()->handleSavedFile($basePath, $uploadSlot, $filePath, $version); + if (MediaStorage::ORIGINALS->getDisk()->putFileAs($basePath, $uploadedFile, $version->filename)) { + $responseState = $type->handler()->handleSavedFile($basePath, $uploadSlot, $version); } else { $responseState = ResponseState::WRITE_FAILED; } diff --git a/app/Http/Controllers/V1/VersionController.php b/app/Http/Controllers/V1/VersionController.php index 39d02b51..4e4f8ec3 100644 --- a/app/Http/Controllers/V1/VersionController.php +++ b/app/Http/Controllers/V1/VersionController.php @@ -8,7 +8,6 @@ use App\Http\Requests\V1\SetVersionRequest; use App\Models\Media; use App\Models\Version; -use FilePathHelper; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; @@ -35,7 +34,7 @@ public function getVersions(Request $request, Media $media): JsonResponse } /** - * Sets a version as current version. + * Sets a version as the current version. * * @param SetVersionRequest $request * @param Media $media @@ -61,7 +60,7 @@ public function setVersion(SetVersionRequest $request, Media $media, Version $ve 'version' => $responseState->getState() !== UploadState::ERROR ? $newVersionNumber : $currentVersionNumber, // Base path is only passed for images since the video is not available at this path yet. 'public_path' => $media->type->isInstantlyAvailable() ? - implode(DIRECTORY_SEPARATOR, array_filter([$media->type->prefix(), FilePathHelper::toBaseDirectory($media)])) + implode(DIRECTORY_SEPARATOR, array_filter([$media->type->prefix(), $media->baseDirectory()])) : null, 'upload_token' => $uploadToken ]); @@ -76,7 +75,7 @@ public function setVersion(SetVersionRequest $request, Media $media, Version $ve */ public function delete(Request $request, Media $media): JsonResponse { - $basePath = FilePathHelper::toBaseDirectory($media); + $basePath = $media->baseDirectory(); if ($media->type->handler()->invalidateCdnCache($basePath)) { $media->delete(); diff --git a/app/Interfaces/MediaHandlerInterface.php b/app/Interfaces/MediaHandlerInterface.php index cd272e50..3cd04a69 100644 --- a/app/Interfaces/MediaHandlerInterface.php +++ b/app/Interfaces/MediaHandlerInterface.php @@ -15,11 +15,10 @@ interface MediaHandlerInterface /** * @param string $basePath * @param UploadSlot $uploadSlot - * @param string $filePath * @param Version $version * @return ResponseState */ - public function handleSavedFile(string $basePath, UploadSlot $uploadSlot, string $filePath, Version $version): ResponseState; + public function handleSavedFile(string $basePath, UploadSlot $uploadSlot, Version $version): ResponseState; /** * @return string diff --git a/app/Interfaces/TranscodeInterface.php b/app/Interfaces/TranscodeInterface.php index 713fc264..63b66ce3 100644 --- a/app/Interfaces/TranscodeInterface.php +++ b/app/Interfaces/TranscodeInterface.php @@ -5,7 +5,6 @@ use App\Enums\ResponseState; use App\Models\Media; use App\Models\UploadSlot; -use App\Models\User; use App\Models\Version; interface TranscodeInterface @@ -13,17 +12,15 @@ interface TranscodeInterface /** * Creates a job which handles the transcoding of a video. * - * @param string $originalFilePath * @param Version $version * @param UploadSlot $uploadSlot * @return bool */ - public function createJob(string $originalFilePath, Version $version, UploadSlot $uploadSlot): bool; + public function createJob(Version $version, UploadSlot $uploadSlot): bool; /** * Creates a job which handles the transcoding of a video when a version number is updated. * - * @param string $originalFilePath * @param Version $version * @param UploadSlot $uploadSlot * @param int $oldVersionNumber @@ -31,7 +28,7 @@ public function createJob(string $originalFilePath, Version $version, UploadSlot * * @return bool */ - public function createJobForVersionUpdate(string $originalFilePath, Version $version, UploadSlot $uploadSlot, int $oldVersionNumber, bool $wasProcessed): bool; + public function createJobForVersionUpdate(Version $version, UploadSlot $uploadSlot, int $oldVersionNumber, bool $wasProcessed): bool; /** * Inform client package about the transcoding result. diff --git a/app/Jobs/TranscodeVideo.php b/app/Jobs/TranscodeVideo.php index 77247246..dbf178cb 100644 --- a/app/Jobs/TranscodeVideo.php +++ b/app/Jobs/TranscodeVideo.php @@ -10,7 +10,6 @@ use CdnHelper; use CloudStorage; use FFMpeg\Format\Video\X264; -use FilePathHelper; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Filesystem\Filesystem; use Illuminate\Contracts\Queue\ShouldQueue; @@ -47,6 +46,7 @@ class TranscodeVideo implements ShouldQueue protected Filesystem $derivativesDisk; protected Filesystem $localDisk; + protected string $originalFilePath; protected string $callbackUrl; protected string $uploadToken; @@ -66,7 +66,6 @@ class TranscodeVideo implements ShouldQueue * @return void */ public function __construct( - protected string $originalFilePath, protected Version $version, protected UploadSlot $uploadSlot, protected ?int $oldVersionNumber = null, @@ -74,6 +73,7 @@ public function __construct( ) { $this->onQueue('video-transcoding'); + $this->originalFilePath = $version->originalFilePath(); $this->callbackUrl = $this->uploadSlot->callback_url; $this->uploadToken = $this->uploadSlot->token; } @@ -114,7 +114,7 @@ public function failed(?Throwable $exception): void { // All properties have not yet been initialized, because failed jobs use a new instance. - $tempDerivativesDirectoryPath = FilePathHelper::toTempVideoDerivativesDirectory($this->version); + $tempDerivativesDirectoryPath = $this->getTempVideoDerivativesDirectoryPath(); $localDisk = Storage::disk('local'); MediaStorage::VIDEO_DERIVATIVES->getDisk()->deleteDirectory($tempDerivativesDirectoryPath); @@ -202,8 +202,8 @@ protected function isLocalFilesystem(Filesystem $disk): bool */ protected function setFilePaths(): void { - $this->derivativesDestinationPath = FilePathHelper::toBaseDirectory($this->version->Media); - $this->tempDerivativesDirectoryPath = FilePathHelper::toTempVideoDerivativesDirectory($this->version); + $this->derivativesDestinationPath = $this->version->Media->baseDirectory(); + $this->tempDerivativesDirectoryPath = $this->getTempVideoDerivativesDirectoryPath(); } /** @@ -218,12 +218,12 @@ protected function saveVideo(Streaming $video, string $format): void { // Save to temporary folder first, to prevent race conditions when multiple versions are uploaded simultaneously. $this->isLocalFilesystem($this->derivativesDisk) ? - $video->save($this->derivativesDisk->path(FilePathHelper::toTempVideoDerivativeFile($this->version, $format))) + $video->save($this->derivativesDisk->path($this->getTempVideoDerivativeFilePath($format))) : $video->save(null, - CloudStorage::getSaveConfiguration( - sprintf('%s/%s', $this->derivativesDisk->path($this->tempDerivativesDirectoryPath), $format), $this->version->Media->identifier - ) - ); + CloudStorage::getSaveConfiguration( + sprintf('%s/%s', $this->derivativesDisk->path($this->tempDerivativesDirectoryPath), $format), $this->version->Media->identifier + ) + ); } /** @@ -239,7 +239,7 @@ protected function generateMp4(StreamingMedia $video): void { $video->save((new X264())->setAdditionalParameters(config('transmorpher.additional_transcoding_parameters')), $this->localDisk->path($this->tempMp4Filename)); - $derivativePath = FilePathHelper::toTempVideoDerivativeFile($this->version, 'mp4'); + $derivativePath = $this->getTempVideoDerivativeFilePath('mp4'); $this->derivativesDisk->writeStream( sprintf('%s.%s', $derivativePath, 'mp4'), $this->localDisk->readStream($this->tempMp4Filename) @@ -300,18 +300,18 @@ protected function moveFromCloudTempDirectory(): void $dashFiles = $this->derivativesDisk->allFiles(sprintf('%s/%s/', $this->tempDerivativesDirectoryPath, StreamingFormat::DASH->value)); foreach ($hlsFiles as $file) { - $this->derivativesDisk->move($file, FilePathHelper::toVideoDerivativeFile($this->version->Media, StreamingFormat::HLS->value, basename($file))); + $this->derivativesDisk->move($file, $this->version->Media->videoDerivativeFilePath(StreamingFormat::HLS->value, basename($file))); } foreach ($dashFiles as $file) { - $this->derivativesDisk->move($file, FilePathHelper::toVideoDerivativeFile($this->version->Media, StreamingFormat::DASH->value, basename($file))); + $this->derivativesDisk->move($file, $this->version->Media->videoDerivativeFilePath(StreamingFormat::DASH->value, basename($file))); } - $tempDerivativePath = FilePathHelper::toTempVideoDerivativeFile($this->version, 'mp4'); + $tempDerivativePath = $this->getTempVideoDerivativeFilePath('mp4'); // Move MP4 file. $this->derivativesDisk->move( sprintf('%s.mp4', $tempDerivativePath), - sprintf('%s.mp4', FilePathHelper::toVideoDerivativeFile($this->version->Media, 'mp4')) + sprintf('%s.mp4', $this->version->Media->videoDerivativeFilePath('mp4')) ); } @@ -360,4 +360,28 @@ protected function isMostRecentVersion(): bool return $this->version->number === $this->version->Media->Versions()->max('number') && $this->version->Media->User->UploadSlots()->withoutGlobalScopes()->whereToken($this->uploadSlot->token)->first(); } + + /** + * Get the path to a temporary video derivative. + * Path structure: {username}/{identifier}-{versionKey}-temp/{format}/video + * + * @param string $format + * @return string + */ + protected function getTempVideoDerivativeFilePath(string $format): string + { + return sprintf('%s/%s/%s', $this->getTempVideoDerivativesDirectoryPath(), $format, 'video'); + } + + /** + * Get the path to the temporary video derivatives directory. + * Path structure: {username}/{identifier}-{versionKey}-temp + * + * @return string + */ + protected function getTempVideoDerivativesDirectoryPath(): string + { + return sprintf('%s-%s-temp', $this->version->Media->baseDirectory(), $this->version->getKey()); + } + } diff --git a/app/Models/Media.php b/app/Models/Media.php index 221e27e4..e7dc54bb 100644 --- a/app/Models/Media.php +++ b/app/Models/Media.php @@ -6,7 +6,6 @@ use App\Enums\MediaType; use DB; use File; -use FilePathHelper; use Illuminate\Database\Eloquent\Casts\Attribute; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; @@ -87,7 +86,7 @@ protected function deleteRelatedModels(): void protected function deleteBaseDirectories(): void { - $fileBasePath = FilePathHelper::toBaseDirectory($this); + $fileBasePath = $this->baseDirectory(); $this->type->handler()->getDerivativesDisk()->deleteDirectory($fileBasePath); MediaStorage::ORIGINALS->getDisk()->deleteDirectory($fileBasePath); } @@ -163,4 +162,29 @@ public function currentVersion(): Attribute } ); } + + /** + * Get the base path for files. + * Path structure: {username}/{identifier}/ + * + * @return string + */ + public function baseDirectory(): string + { + return sprintf('%s/%s', $this->User->name, $this->identifier); + } + + /** + * Get the path to a video derivative. + * Path structure: {username}/{identifier}/{format}/{filename} + * + * @param string $format + * @param string|null $fileName + * + * @return string + */ + public function videoDerivativeFilePath(string $format, string $fileName = null): string + { + return sprintf('%s/%s/%s', $this->baseDirectory(), $format, $fileName ?? 'video'); + } } diff --git a/app/Models/Version.php b/app/Models/Version.php index 22a2118f..40ef8107 100644 --- a/app/Models/Version.php +++ b/app/Models/Version.php @@ -3,7 +3,7 @@ namespace App\Models; use App\Enums\MediaStorage; -use FilePathHelper; +use App\Enums\Transformation; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -61,8 +61,8 @@ protected static function booted(): void protected function deleteFiles(): void { - MediaStorage::ORIGINALS->getDisk()->delete(FilePathHelper::toOriginalFile($this)); - MediaStorage::IMAGE_DERIVATIVES->getDisk()->deleteDirectory(FilePathHelper::toImageDerivativeVersionDirectory($this)); + MediaStorage::ORIGINALS->getDisk()->delete($this->originalFilePath()); + MediaStorage::IMAGE_DERIVATIVES->getDisk()->deleteDirectory($this->imageDerivativeDirectoryPath()); // Video derivatives may not be deleted here, otherwise failed jobs would delete the only existing video derivative. } @@ -83,4 +83,63 @@ public function getRouteKeyName(): string { return 'number'; } + + /** + * Get the path to an original. + * Path structure: {username}/{identifier}/{filename} + * + * @return string + */ + public function originalFilePath(): string + { + return sprintf('%s/%s', $this->Media->baseDirectory(), $this->filename); + } + + /** + * Create the filename for an original. + * Filename structure: {versionKey}-{filename} + * + * @param string $filename + * + * @return string + */ + public function createOriginalFileName(string $filename): string + { + return sprintf('%s-%s', $this->getKey(), trim($filename)); + } + + /** + * Get the path to an (existing) image derivative. + * Path structure: {username}/{identifier}/{versionKey}/{width}x_{height}y_{quality}q_{derivativeHash}.{format} + * + * @param array|null $transformations + * @return string + */ + public function imageDerivativeFilePath(array $transformations = null): string + { + $originalFileExtension = pathinfo($this->filename, PATHINFO_EXTENSION); + + // Hash of transformation parameters and version number to identify already generated derivatives. + $derivativeHash = hash('sha256', json_encode($transformations) . $this->getKey()); + + return sprintf('%s/%sx_%sy_%sq_%s.%s', + $this->imageDerivativeDirectoryPath(), + $transformations[Transformation::WIDTH->value] ?? '', + $transformations[Transformation::HEIGHT->value] ?? '', + $transformations[Transformation::QUALITY->value] ?? '', + $derivativeHash, + $transformations[Transformation::FORMAT->value] ?? $originalFileExtension, + ); + } + + /** + * Get the path to the directory of an image derivative version. + * Path structure: {username}/{identifier}/{versionKey} + * + * @return string + */ + public function imageDerivativeDirectoryPath(): string + { + return sprintf('%s/%s', $this->Media->baseDirectory(), $this->getKey()); + } } diff --git a/app/Providers/FilePathHelperServiceProvider.php b/app/Providers/FilePathHelperServiceProvider.php deleted file mode 100644 index d2622939..00000000 --- a/app/Providers/FilePathHelperServiceProvider.php +++ /dev/null @@ -1,29 +0,0 @@ -app->singleton('file.path', FilePathHelper::class); - } - - /** - * Bootstrap services. - * - * @return void - */ - public function boot() - { - // - } -} diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php index 5230901b..a0d102a6 100644 --- a/app/Providers/RouteServiceProvider.php +++ b/app/Providers/RouteServiceProvider.php @@ -2,7 +2,9 @@ namespace App\Providers; +use App\Models\Media; use App\Models\User; +use App\Models\Version; use Auth; use Illuminate\Cache\RateLimiting\Limit; use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider; @@ -39,12 +41,12 @@ public function boot(): void ->group(base_path('routes/web.php')); }); - Route::bind('media', function (string $identifier) { + Route::bind('media', function (string $identifier): Media { $user = Auth::user() ?? User::whereName(Route::getCurrentRoute()->parameter('user'))->firstOrFail(); return $user->Media()->whereIdentifier($identifier)->firstOrFail(); }); - Route::bind('version', function (int $versionNumber) { + Route::bind('version', function (int $versionNumber): Version { $media = Route::getCurrentRoute()->parameter('media'); return $media->Versions()->whereNumber($versionNumber)->firstOrFail(); }); diff --git a/config/app.php b/config/app.php index f346daf2..3fe8993e 100644 --- a/config/app.php +++ b/config/app.php @@ -178,7 +178,6 @@ App\Providers\CdnHelperServiceProvider::class, App\Providers\CloudStorageServiceProvider::class, - App\Providers\FilePathHelperServiceProvider::class, App\Providers\SqsFifoServiceProvider::class, App\Providers\TranscodeServiceProvider::class, App\Providers\TransformServiceProvider::class, @@ -198,7 +197,6 @@ 'aliases' => Facade::defaultAliases()->merge([ 'CdnHelper' => App\Facades\CdnHelperFacade::class, 'CloudStorage' => App\Facades\CloudStorageFacade::class, - 'FilePathHelper' => App\Facades\FilePathHelperFacade::class, 'InterventionImage' => Intervention\Image\Facades\Image::class, 'Transcode' => App\Facades\TranscodeFacade::class, 'Transform' => App\Facades\TransformFacade::class, diff --git a/tests/Unit/ImageTest.php b/tests/Unit/ImageTest.php index 3c94e9c6..52b664fe 100644 --- a/tests/Unit/ImageTest.php +++ b/tests/Unit/ImageTest.php @@ -10,7 +10,6 @@ use App\Models\Media; use App\Models\UploadSlot; use App\Models\Version; -use FilePathHelper; use Illuminate\Contracts\Filesystem\Filesystem; use Illuminate\Http\UploadedFile; use Illuminate\Testing\TestResponse; @@ -73,9 +72,7 @@ public function ensureImageCanBeUploaded(string $uploadToken) $media = Media::whereIdentifier(self::IDENTIFIER)->first(); $version = $media->Versions()->whereNumber($uploadResponse['version'])->first(); - Storage::disk(config('transmorpher.disks.originals'))->assertExists( - FilePathHelper::toOriginalFile($version), - ); + Storage::disk(config('transmorpher.disks.originals'))->assertExists($version->originalFilePath()); return $version; } @@ -106,13 +103,13 @@ public function ensureUnprocessedFilesAreNotAvailable(Version $version) protected function assertVersionFilesExist(Version $version): void { - $this->originalsDisk->assertExists(FilePathHelper::toOriginalFile($version)); - $this->imageDerivativesDisk->assertExists(FilePathHelper::toImageDerivativeFile($version)); + $this->originalsDisk->assertExists($version->originalFilePath()); + $this->imageDerivativesDisk->assertExists($version->imageDerivativeFilePath()); } - protected function assertMediaDirectoryExists($media): void + protected function assertMediaDirectoryExists(Media $media): void { - $this->originalsDisk->assertExists(FilePathHelper::toBaseDirectory($media)); + $this->originalsDisk->assertExists($media->baseDirectory()); } protected function assertUserDirectoryExists(): void @@ -123,14 +120,14 @@ protected function assertUserDirectoryExists(): void protected function assertVersionFilesMissing(Version $version): void { - $this->originalsDisk->assertMissing(FilePathHelper::toOriginalFile($version)); - $this->imageDerivativesDisk->assertMissing(FilePathHelper::toImageDerivativeFile($version)); + $this->originalsDisk->assertMissing($version->originalFilePath()); + $this->imageDerivativesDisk->assertMissing($version->imageDerivativeFilePath()); } - protected function assertMediaDirectoryMissing($media): void + protected function assertMediaDirectoryMissing(Media $media): void { - $this->originalsDisk->assertMissing(FilePathHelper::toBaseDirectory($media)); - $this->imageDerivativesDisk->assertMissing(FilePathHelper::toBaseDirectory($media)); + $this->originalsDisk->assertMissing($media->baseDirectory()); + $this->imageDerivativesDisk->assertMissing($media->baseDirectory()); } protected function assertUserDirectoryMissing(): void diff --git a/tests/Unit/VideoTest.php b/tests/Unit/VideoTest.php index e374bb53..fa0d9ef0 100644 --- a/tests/Unit/VideoTest.php +++ b/tests/Unit/VideoTest.php @@ -7,7 +7,6 @@ use App\Helpers\SodiumHelper; use App\Jobs\TranscodeVideo; use App\Models\UploadSlot; -use FilePathHelper; use Http; use Illuminate\Contracts\Filesystem\Filesystem; use PHPUnit\Framework\Attributes\Depends; @@ -54,7 +53,7 @@ public function ensureTranscodingIsAbortedWhenNewerVersionExists(string $uploadT $outdatedVersion = $media->Versions()->create(['number' => 1, 'filename' => sprintf('1-%s', self::VIDEO_NAME)]); $media->Versions()->create(['number' => 2, 'filename' => sprintf('2-%s', self::VIDEO_NAME)]); - TranscodeVideo::dispatch(FilePathHelper::toOriginalFile($outdatedVersion), $outdatedVersion, $uploadSlot); + TranscodeVideo::dispatch($outdatedVersion, $uploadSlot); $request = Http::recorded()[0][0]; $transcodingResult = json_decode(SodiumHelper::decrypt($request->data()['signed_response']), true); From b22eedd43a241db74985b26bdb400fafd7601e62 Mon Sep 17 00:00:00 2001 From: mszulik <69617961+mszulik@users.noreply.github.com> Date: Wed, 24 Apr 2024 07:45:13 +0200 Subject: [PATCH 10/15] setup cron to delete old chunks from uploads (#47) --- README.md | 17 ++++++++++++- config/chunk-upload.php | 44 ++++++++++++++++++++++++++++++++++ docker-compose.pullpreview.yml | 1 - docker-compose.yml | 1 - docker/Dockerfile | 3 +++ 5 files changed, 63 insertions(+), 3 deletions(-) create mode 100644 config/chunk-upload.php diff --git a/README.md b/README.md index c7d8e62e..a3f8a292 100644 --- a/README.md +++ b/README.md @@ -55,7 +55,7 @@ To clone the repository and get your media server running use: git clone --branch release/v0 --single-branch https://github.com/cybex-gmbh/transmorpher.git ``` -### Required software +#### Required software See the Dockerfiles for details. @@ -78,6 +78,21 @@ To use video transcoding: - [FFmpeg](https://ffmpeg.org/) +#### Scheduling + +There may be some cases (e.g. failed uploads) where chunk files are not deleted and stay on the local disk. +To keep the local disk clean, a command is scheduled hourly to delete chunk files older than 24 hours. + +See the [`chunk-upload` configuration file](config/chunk-upload.php) for more information. + +To run the scheduler you will need to add a cron job that runs the `schedule:run` command on your server: + +``` +* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1 +``` + +For more information about scheduling check the [Laravel Docs](https://laravel.com/docs/11.x/scheduling). + ## General configuration #### Disks diff --git a/config/chunk-upload.php b/config/chunk-upload.php new file mode 100644 index 00000000..bae7d4fe --- /dev/null +++ b/config/chunk-upload.php @@ -0,0 +1,44 @@ + [ + /* + * Returns the folder name of the chunks. The location is in storage/app/{folder_name} + */ + 'chunks' => 'chunks', + 'disk' => 'local', + ], + 'clear' => [ + /* + * How old chunks we should delete + */ + 'timestamp' => '-24 HOURS', + 'schedule' => [ + 'enabled' => true, + 'cron' => '25 * * * *', // run every hour on the 25th minute + ], + ], + 'chunk' => [ + // setup for the chunk naming setup to ensure same name upload at same time + 'name' => [ + 'use' => [ + 'session' => true, // should the chunk name use the session id? The uploader must send cookie!, + 'browser' => false, // instead of session we can use the ip and browser? + ], + ], + ], + 'handlers' => [ + // A list of handlers/providers that will be appended to existing list of handlers + 'custom' => [], + // Overrides the list of handlers - use only what you really want + 'override' => [ + // \Pion\Laravel\ChunkUpload\Handler\DropZoneUploadHandler::class + ], + ], +]; diff --git a/docker-compose.pullpreview.yml b/docker-compose.pullpreview.yml index d567d54b..2f286761 100644 --- a/docker-compose.pullpreview.yml +++ b/docker-compose.pullpreview.yml @@ -1,4 +1,3 @@ -version: '3.8' services: app: container_name: ${APP_CONTAINER_NAME:-transmorpher} diff --git a/docker-compose.yml b/docker-compose.yml index 9f04b10d..6be62526 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,5 +1,4 @@ # For more information: https://laravel.com/docs/sail -version: '3.8' services: app: container_name: ${DOCKER_CONTAINER_NAME:-transmorpher} diff --git a/docker/Dockerfile b/docker/Dockerfile index 26be30a1..b05c457f 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -24,4 +24,7 @@ RUN php /var/www/html/artisan storage:link RUN apt update RUN apt install -y default-mysql-client imagemagick jpegoptim optipng pngquant gifsicle webp ffmpeg +RUN docker-service-enable cron +RUN docker-cronjob '* * * * * application /usr/local/bin/php /var/www/html/artisan schedule:run >> /dev/null 2>&1' + ENTRYPOINT ["/var/www/html/docker/entryfile.sh"] From bbb9e0a0186a7f7d2eb8d489b1eb37f3f049df5f Mon Sep 17 00:00:00 2001 From: mszulik <69617961+mszulik@users.noreply.github.com> Date: Mon, 6 May 2024 15:47:13 +0200 Subject: [PATCH 11/15] add the possibility to purge derivatives (#49) --- .env.example | 1 + .github/workflows/docker.yml | 1 + .github/workflows/pullpreview.yml | 7 +- .github/workflows/tests.yml | 2 + README.md | 190 +++++++++++------- _ide_helper.php | 73 ++++++- app/Classes/MediaHandler/ImageHandler.php | 16 +- app/Classes/MediaHandler/VideoHandler.php | 48 +++-- app/Classes/Transcode.php | 24 ++- app/Console/Commands/CreateUser.php | 11 +- app/Console/Commands/PurgeDerivatives.php | 60 ++++++ app/Enums/ClientNotification.php | 9 + app/Enums/ResponseState.php | 1 - .../ClientNotificationFailedException.php | 26 +++ .../Controllers/V1/UploadSlotController.php | 25 ++- app/Http/Controllers/V1/VersionController.php | 5 +- app/Http/Requests/V1/SetVersionRequest.php | 5 +- ...dSlotRequest.php => UploadSlotRequest.php} | 4 +- .../Requests/V1/VideoUploadSlotRequest.php | 33 --- app/Interfaces/MediaHandlerInterface.php | 10 +- app/Interfaces/TranscodeInterface.php | 10 +- app/Jobs/ClientPurgeNotification.php | 70 +++++++ app/Jobs/TranscodeVideo.php | 6 +- app/Models/Media.php | 11 + app/Models/UploadSlot.php | 5 +- app/Models/User.php | 5 +- app/Models/Version.php | 40 ++-- config/transmorpher.php | 10 + database/factories/UserFactory.php | 1 + ...4_23_095200_add_api_url_to_users_table.php | 24 +++ database/seeders/PullpreviewSeeder.php | 4 +- docker/workers.conf | 16 ++ lang/en/responses.php | 1 - routes/api/v1.php | 2 + tests/MediaTest.php | 4 +- tests/Unit/CreateUserCommandTest.php | 101 ++++++++-- tests/Unit/ImageTest.php | 68 +++++-- tests/Unit/VideoTest.php | 122 +++++++++-- 38 files changed, 816 insertions(+), 235 deletions(-) create mode 100644 app/Console/Commands/PurgeDerivatives.php create mode 100644 app/Enums/ClientNotification.php create mode 100644 app/Exceptions/ClientNotificationFailedException.php rename app/Http/Requests/V1/{ImageUploadSlotRequest.php => UploadSlotRequest.php} (84%) delete mode 100644 app/Http/Requests/V1/VideoUploadSlotRequest.php create mode 100644 app/Jobs/ClientPurgeNotification.php create mode 100644 database/migrations/2024_04_23_095200_add_api_url_to_users_table.php diff --git a/.env.example b/.env.example index 5a87eeb1..fd1f8214 100644 --- a/.env.example +++ b/.env.example @@ -21,6 +21,7 @@ TRANSMORPHER_SIGNING_KEYPAIR= TRANSMORPHER_OPTIMIZER_TIMEOUT=10 # More information: https://github.com/cybex-gmbh/transmorpher/tree/release/v0#configuration-options VIDEO_TRANSCODING_WORKERS_AMOUNT=1 +#CACHE_INVALIDATION_COUNTER_FILE_PATH="cacheInvalidationCounter" # AWS AWS_ACCESS_KEY_ID= diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 4aa3212f..87802124 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -7,6 +7,7 @@ on: jobs: build-push-docker-image: name: Build, test and push docker image + # https://github.com/cybex-gmbh/github-workflows/blob/main/.github/workflows/docker-build-push.yml uses: cybex-gmbh/github-workflows/.github/workflows/docker-build-push.yml@main with: DOCKER_REPOSITORY: cybexwebdev/transmorpher diff --git a/.github/workflows/pullpreview.yml b/.github/workflows/pullpreview.yml index d05af41f..e690677e 100644 --- a/.github/workflows/pullpreview.yml +++ b/.github/workflows/pullpreview.yml @@ -13,14 +13,15 @@ jobs: statuses: write # to create commit status name: Deploy PullPreview staging environment + # https://github.com/cybex-gmbh/github-workflows/blob/main/.github/workflows/pullpreview.yml uses: cybex-gmbh/github-workflows/.github/workflows/pullpreview.yml@main with: PULLPREVIEW_ADMINS: jheusinger, gael-connan-cybex, holyfabi, lupinitylabs, mszulik INSTANCE_TYPE: medium secrets: ENV_VARS: | - APP_KEY="${{ secrets.APP_KEY }}" - TRANSMORPHER_SIGNING_KEYPAIR="${{ secrets.TRANSMORPHER_SIGNING_KEYPAIR }}" - PULLPREVIEW_TRANSMORPHER_AUTH_TOKEN_HASH="${{ secrets.PULLPREVIEW_TRANSMORPHER_AUTH_TOKEN_HASH }}" + APP_KEY="${{ secrets.PULLPREVIEW_APP_KEY }}" + TRANSMORPHER_SIGNING_KEYPAIR="${{ secrets.PULLPREVIEW_TRANSMORPHER_SIGNING_KEYPAIR }}" + TRANSMORPHER_AUTH_TOKEN_HASH="${{ secrets.PULLPREVIEW_TRANSMORPHER_AUTH_TOKEN_HASH }}" PULLPREVIEW_AWS_ACCESS_KEY_ID: ${{ secrets.PULLPREVIEW_AWS_ACCESS_KEY_ID }} PULLPREVIEW_AWS_SECRET_ACCESS_KEY: ${{ secrets.PULLPREVIEW_AWS_SECRET_ACCESS_KEY }} diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 800d2646..f99ea360 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -11,6 +11,7 @@ on: jobs: execute-tests: name: Setup testing environment and execute tests + # https://github.com/cybex-gmbh/github-workflows/blob/main/.github/workflows/tests.yml uses: cybex-gmbh/github-workflows/.github/workflows/tests.yml@main strategy: fail-fast: true @@ -23,3 +24,4 @@ jobs: LARAVEL_VERSION: ${{ matrix.laravel }} DEPENDENCY_VERSION: ${{ matrix.dependency-version }} MYSQL_DATABASE: transmorpher_test + LINUX_PACKAGES: imagemagick jpegoptim optipng pngquant gifsicle webp ffmpeg diff --git a/README.md b/README.md index a3f8a292..6e3c92b9 100644 --- a/README.md +++ b/README.md @@ -29,15 +29,16 @@ To not accidentally upgrade to a new major version, attach the major version you #### Configuration options -There needs to be at least 1 Laravel worker to transcode videos. The following variable specifies how many workers should be running in the container: +There needs to be at least 1 Laravel worker to transcode videos. +The following variable specifies how many workers should be running in the container: ```dotenv VIDEO_TRANSCODING_WORKERS_AMOUNT=1 ``` > [!CAUTION] -> Using the database queue connection does neither guarantee FIFO nor prevent duplicate runs. It is recommended to use a queue which can guarantee these aspects, such as AWS SQS -> FIFO. +> Using the database queue connection does neither guarantee FIFO nor prevent duplicate runs. +> It is recommended to use a queue which can guarantee these aspects, such as AWS SQS FIFO. > To prevent duplicate runs with database, use only one worker process. This environment variable has to be passed to the app container in your docker-compose.yml: @@ -49,12 +50,18 @@ environment: ### Cloning the repository -To clone the repository and get your media server running use: +To clone the repository and get your media server running, use: ```bash git clone --branch release/v0 --single-branch https://github.com/cybex-gmbh/transmorpher.git ``` +Install composer dependencies: + +```bash +composer install --no-dev +``` + #### Required software See the Dockerfiles for details. @@ -64,13 +71,13 @@ Image manipulation: - [ImageMagick](https://imagemagick.org/index.php) - [php-imagick](https://www.php.net/manual/en/book.imagick.php) -> Optionally you can use GD, which can be configured in the Intervention Image configuration file. +> Optionally, you can use GD, which can be configured in the Intervention Image configuration file. Image optimization: - [JpegOptim](https://github.com/tjko/jpegoptim) - [Optipng](https://optipng.sourceforge.net/) -- [Pngquant 2](https://pngquant.org/) +- [Pngquant](https://pngquant.org/) - [Gifsicle](https://www.lcdf.org/gifsicle/) - [cwebp](https://developers.google.com/speed/webp/docs/precompiled) @@ -78,6 +85,10 @@ To use video transcoding: - [FFmpeg](https://ffmpeg.org/) +#### Generic workers + +Client notifications will be pushed on the queue `client-notifications`. You will need to set up 1 worker for this queue. + #### Scheduling There may be some cases (e.g. failed uploads) where chunk files are not deleted and stay on the local disk. @@ -85,38 +96,73 @@ To keep the local disk clean, a command is scheduled hourly to delete chunk file See the [`chunk-upload` configuration file](config/chunk-upload.php) for more information. -To run the scheduler you will need to add a cron job that runs the `schedule:run` command on your server: +To run the scheduler, you will need to add a cron job that runs the `schedule:run` command on your server: ``` * * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1 ``` -For more information about scheduling check the [Laravel Docs](https://laravel.com/docs/11.x/scheduling). +For more information about scheduling, check the [Laravel Docs](https://laravel.com/docs/11.x/scheduling). ## General configuration +#### Basics + +1. Create an app key: + +```bash +php artisan key:generate +``` + +2. Configure the database in the `.env` file. + +3. Migrate the database: + +```bash +php artisan migrate +``` + #### Disks -The media server uses 3 separate Laravel disks to store originals, image derivatives and video derivatives. Use the provided `.env` keys to select any of the disks in -the `filesystems.php` config file. +The media server must use 3 separate Laravel disks to store originals, image derivatives and video derivatives. +Use the provided `.env` keys to select the according disks in the `filesystems.php` config file. > [!NOTE] > > 1. The root folder, like images/, of the configured derivatives disks has to always match the prefix provided by the `MediaType` enum. > 1. If this prefix would be changed after initially launching your media server, clients would no longer be able to retrieve their previously uploaded media. +#### Sodium Keypair + +A signed request is used to notify clients about finished transcodings and when derivatives are purged. +For this, a [Sodium](https://www.php.net/manual/en/book.sodium.php) keypair has to be configured. + +To create a keypair, use the provided command: + +```bash +php artisan create:keypair +``` + +The newly created keypair has to be written in the `.env` file: + +```dotenv +TRANSMORPHER_SIGNING_KEYPAIR= +``` + +The public key of the media server is available under the `/api/v*/publickey` endpoint and can be requested by any client. + ### Cloud Setup The Transmorpher media server is not dependent on a specific cloud service provider, but only provides classes for AWS services out of the box. #### Prerequisites for video functionality -- A file storage, for example AWS S3 -- A routing capable service, for example a Content Delivery Network, like AWS CloudFront +- A file storage, for example, AWS S3 +- A routing-capable service, for example, a Content Delivery Network, like AWS CloudFront #### IAM -Create an IAM user with programmatic access. For more information check the documentation for the corresponding service. +Create an IAM user with programmatic access. For more information, check the documentation for the corresponding service. Permissions: @@ -134,7 +180,7 @@ AWS_DEFAULT_REGION=eu-central-1 #### File Storage -By default, AWS S3 disks are configured in the `.env`: +To use AWS S3 disks set the according `.env` values: ```dotenv TRANSMORPHER_DISK_ORIGINALS=s3Originals @@ -165,13 +211,13 @@ Configure your CloudFront-Distribution-ID: AWS_CLOUDFRONT_DISTRIBUTION_ID= ``` -Changes to media will automatically trigger a cache invalidation, therefore the CDN cache duration can be set to a long time. +Changes to media will automatically trigger a cache invalidation. Therefore, the CDN cache duration can be set to a long time. To forward incoming requests from the CDN to your media server, configure your Transmorpher media server as the main origin. For more information on configuring origins in CloudFront see the [documentation page](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/DownloadDistS3AndCustomOrigins.html). -In order to properly use the API you need to either: +To properly use the API, you need to either: 1. add a rule to not cache anything under `/api/*` 1. publish the Transmorpher media server under an additional domain that is not behind the CDN @@ -180,31 +226,13 @@ In order to properly use the API you need to either: *Content Delivery Network* -In the CDN routing create a new behavior which points requests starting with "/videos/*" to a new origin, which is the video derivatives S3 bucket. -\ -*Sodium Keypair* - -A signed request is used to notify clients about finished transcodings. For this, a [Sodium](https://www.php.net/manual/en/book.sodium.php) keypair has to be configured. - -To create a keypair, simply use the provided command: - -```bash -php artisan transmorpher:keypair -``` +In the CDN routing create a new behavior which points requests starting with "/videos/*" to a new origin, which is the video derivatives S3 bucket. -The newly created keypair has to be written in the `.env` file: - -```dotenv -TRANSMORPHER_SIGNING_KEYPAIR= -``` - -The public key of the media server is available under the `/api/v*/publickey` endpoint and can be requested -by any client. -\ *Queue* -Transcoding jobs are dispatched onto the "video-transcoding" queue. You can have these jobs processed on the main server or dedicated workers. For more information check -the [Laravel Queue Documentation](https://laravel.com/docs/10.x/queues). +Transcoding jobs are dispatched onto the "video-transcoding" queue. +You can have these jobs processed on the main server or dedicated workers. +For more information, check the [Laravel Queue Documentation](https://laravel.com/docs/11.x/queues). > [!NOTE] > Since queues are not generally FIFO, it is recommended to use a queue which guarantees FIFO and also prevents @@ -246,29 +274,11 @@ To access public derivatives for videos, generate a symlink from the Laravel sto php artisan storage:link ``` -*Sodium Keypair* - -A signed request is used to notify clients about finished transcodings. For this, a [Sodium](https://www.php.net/manual/en/book.sodium.php) keypair has to be configured. - -To create a keypair, simply use the provided command: - -```bash -php artisan transmorpher:keypair -``` - -The newly created keypair has to be written in the `.env` file: - -```dotenv -TRANSMORPHER_SIGNING_KEYPAIR= -``` - -The public key of the media server is available under the `/api/v*/publickey` endpoint and can be requested -by any client. -\ *Queue* -Transcoding jobs are dispatched onto the "video-transcoding" queue. You can have these jobs processed on the main server or dedicated workers. For more information check -the [Laravel Queue Documentation](https://laravel.com/docs/10.x/queues). +Transcoding jobs are dispatched onto the "video-transcoding" queue. +You can have these jobs processed on the main server or dedicated workers. +For more information, check the [Laravel Queue Documentation](https://laravel.com/docs/11.x/queues). You can define your queue connection in the `.env` file: @@ -302,7 +312,7 @@ Media always belongs to a user. To easily create one, use the provided command: php artisan create:user ``` -This command will provide you with a [Laravel Sanctum](https://laravel.com/docs/10.x/sanctum) token, which has to be +This command will provide you with a [Laravel Sanctum](https://laravel.com/docs/11.x/sanctum) token, which has to be written in the `.env` file of a client system. > The token will be passed for all API requests for authorization and is connected to the corresponding user. @@ -318,7 +328,7 @@ Media is identified by a string which is passed when uploading media. This "iden When media is uploaded on the same identifier by the same user, a new version for the same media will be created. -The media server provides following features for media: +The media server provides the following features for media: - upload - get derivative @@ -330,7 +340,8 @@ The media server provides following features for media: ## Image transformation -Images will always be optimized and transformed on the Transmorpher media server. Requests for derivatives will also be directly answered by the media server. +Images will always be optimized and transformed on the Transmorpher media server. +The media server will also directly answer requests for derivatives. The media server provides the following transformations for images: @@ -360,7 +371,8 @@ transformations. Video transcoding is handled as an asynchronous task. The client will receive the information about the transcoded video as soon as it completes. For this, a signed request is sent to the client. -Since video transcoding is a complex task it may take some time to complete. The client will also be notified about failed attempts. +Since video transcoding is a complex task, it may take some time to complete. +The client will also be notified about failed attempts. To publicly access a video, the client name, the identifier and a format have to be specified. There are different formats available: @@ -389,9 +401,8 @@ You will also have to adjust the `transmorpher.php` configuration value for the The class to transform images as well as the classes to convert images to different formats are interchangeable. This provides the ability to add additional image manipulation libraries or logic in a modular way. -To add a class for image transformation, simply create a new class which implements the `TransformInterface`. An example -implementation can be found -at `App\Classes\Intervention\Transform`. +To add a class for image transformation, create a new class which implements the `TransformInterface`. +An example implementation can be found at `App\Classes\Intervention\Transform`. Additionally, the newly created class has to be specified in the `transmorpher.php` configuration file: ```php @@ -416,7 +427,7 @@ You will also have to adjust the configuration values: The `image-optimizer.php` configuration file specifies which optimizers should be used. Here you can configure options for each optimizer and add new or remove optimizers. -For more information on adding custom optimizers check the documentation of +For more information on adding custom optimizers, check the documentation of the [Laravel Image Optimizer](https://github.com/spatie/laravel-image-optimizer#adding-your-own-optimizers) package. ### Video Transcoding @@ -424,7 +435,7 @@ the [Laravel Image Optimizer](https://github.com/spatie/laravel-image-optimizer# By default, the Transmorpher uses FFmpeg and Laravel jobs for transcoding videos. This can be changed similar to the image transformation classes. -To interchange the class, which is responsible for initiating transcoding, simply create a new class which implements +To interchange the class, which is responsible for initiating transcoding, create a new class which implements the `TranscodeInterface`. An example implementation, which dispatches a job, can be found at `App\Classes\Transcode.php`. You will also have to adjust the configuration value: @@ -433,16 +444,49 @@ You will also have to adjust the configuration value: 'transcode_class' => App\Classes\YourTranscodeClass::class, ``` +## Purging derivatives + +Adjusting the way derivatives are generated will not be reflected on already existing derivatives. Therefore, you might want to delete all existing derivatives or re-generate them. + +We provide a command which will additionally notify clients with a signed request about a new derivatives revision, so they can react accordingly (e.g. update cache buster). + +```bash +php artisan purge:derivatives +``` + +The command accepts the options `--image`, `--video` and `--all` (or `-a`) for purging the respective derivatives. +Image derivatives will be deleted, for video derivatives we dispatch a new transcoding job for the current version. + +The derivatives revision is available on the route `/api/v*/cacheInvalidator`. + +## Recovery + +To restore operation of the server, restore the following: + +- database +- the `originals` disk +- `.env` file* +- the `image derivatives` disk* +- the `video derivatives` disk* + +> Marked with * are optional, but recommended. + +If the `.env` file is lost follow the setup instructions above, including creating a new signing keypair. + +If video derivatives are lost, use the [purge command](#purging-derivatives) to restore them. + +Lost image derivatives will automatically be re-generated on demand. + ## Development ### [Pullpreview](https://github.com/pullpreview/action) -For more information take a look at the PullPreview section of the [github-workflow repository](https://github.com/cybex-gmbh/github-workflows#pullpreview). +For more information, take a look at the PullPreview section of the [github-workflow repository](https://github.com/cybex-gmbh/github-workflows#pullpreview). -App specific GitHub Secrets: +App-specific GitHub Secrets: -- APP_KEY -- TRANSMORPHER_SIGNING_KEYPAIR +- PULLPREVIEW_APP_KEY +- PULLPREVIEW_TRANSMORPHER_SIGNING_KEYPAIR - PULLPREVIEW_TRANSMORPHER_AUTH_TOKEN_HASH #### Auth Token Hash @@ -450,7 +494,7 @@ App specific GitHub Secrets: The environment is seeded with a user with an auth token. To get access, you will have to locally create a token and use this token and its hash. ```bash -php artisan create:user pullpreview pullpreview@example.com +php artisan create:user pullpreview pullpreview@example.com http://pullpreview.test/transmorpher/notifications ``` Take the hash of the token from the `personal_access_tokens` table and save it to GitHub secrets. The command also provides a `TRANSMORPHER_AUTH_TOKEN`, which should be stored diff --git a/_ide_helper.php b/_ide_helper.php index df37af47..1c360ae7 100644 --- a/_ide_helper.php +++ b/_ide_helper.php @@ -5,7 +5,7 @@ /** * A helper file for Laravel, to provide autocomplete information to your IDE - * Generated for Laravel 11.4.0. + * Generated for Laravel 11.5.0. * * This file should not be included in your code, only analyzed by your IDE! * @@ -2889,6 +2889,33 @@ { /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ return $instance->socket($request); + } + /** + * Begin sending an anonymous broadcast to the given channels. + * + * @static + */ public static function on($channels) + { + /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ + return $instance->on($channels); + } + /** + * Begin sending an anonymous broadcast to the given private channels. + * + * @static + */ public static function private($channel) + { + /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ + return $instance->private($channel); + } + /** + * Begin sending an anonymous broadcast to the given presence channels. + * + * @static + */ public static function presence($channel) + { + /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ + return $instance->presence($channel); } /** * Begin broadcasting an event. @@ -10507,6 +10534,19 @@ { /** @var \Illuminate\Cache\RateLimiter $instance */ return $instance->increment($key, $decaySeconds, $amount); + } + /** + * Decrement the counter for a given key for a given decay time by a given amount. + * + * @param string $key + * @param int $decaySeconds + * @param int $amount + * @return int + * @static + */ public static function decrement($key, $decaySeconds = 60, $amount = 1) + { + /** @var \Illuminate\Cache\RateLimiter $instance */ + return $instance->decrement($key, $decaySeconds, $amount); } /** * Get the number of attempts for the given key. @@ -11113,7 +11153,7 @@ return $instance->mergeIfMissing($input); } /** - * Replace the input for the current request. + * Replace the input values for the current request. * * @param array $input * @return \Illuminate\Http\Request @@ -16219,6 +16259,20 @@ { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->to($path, $extra, $secure); + } + /** + * Generate an absolute URL with the given query parameters. + * + * @param string $path + * @param array $query + * @param mixed $extra + * @param bool|null $secure + * @return string + * @static + */ public static function query($path, $query = [], $extra = [], $secure = null) + { + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->query($path, $query, $extra, $secure); } /** * Generate a secure, absolute URL to the given path. @@ -18012,6 +18066,16 @@ * */ class TranscodeFacade { /** + * Returns the class which handles the actual transcoding. + * + * @return string + * @static + */ public static function getJobClass() + { + /** @var \App\Classes\Transcode $instance */ + return $instance->getJobClass(); + } + /** * Creates a job which handles the transcoding of a video. * * @param \App\Models\Version $version @@ -18041,16 +18105,15 @@ * Inform client package about the transcoding result. * * @param \App\Enums\ResponseState $responseState - * @param string $callbackUrl * @param string $uploadToken * @param \App\Models\Media $media * @param int $versionNumber * @return void * @static - */ public static function callback($responseState, $callbackUrl, $uploadToken, $media, $versionNumber) + */ public static function callback($responseState, $uploadToken, $media, $versionNumber) { /** @var \App\Classes\Transcode $instance */ - $instance->callback($responseState, $callbackUrl, $uploadToken, $media, $versionNumber); + $instance->callback($responseState, $uploadToken, $media, $versionNumber); } } /** diff --git a/app/Classes/MediaHandler/ImageHandler.php b/app/Classes/MediaHandler/ImageHandler.php index 04c1fd4c..d71ba05f 100644 --- a/app/Classes/MediaHandler/ImageHandler.php +++ b/app/Classes/MediaHandler/ImageHandler.php @@ -74,10 +74,9 @@ public function invalidateCdnCache(string $basePath): bool * @param Version $version * @param int $oldVersionNumber * @param bool $wasProcessed - * @param string $callbackUrl * @return array */ - public function setVersion(User $user, Version $version, int $oldVersionNumber, bool $wasProcessed, string $callbackUrl): array + public function setVersion(User $user, Version $version, int $oldVersionNumber, bool $wasProcessed): array { // Token and valid_until will be set in the 'saving' event. // By creating an upload slot, a currently active upload will be canceled. @@ -120,4 +119,17 @@ public function getVersions(Media $media): array 'versions' => $processedVersions->pluck('created_at', 'number')->map(fn($date) => strtotime($date)), ]; } + + /** + * @return array + */ + public function purgeDerivatives(): array + { + $success = $this->getDerivativesDisk()->deleteDirectory(''); + + return [ + 'success' => $success, + 'message' => $success ? 'Deleted image derivatives.' : 'Failed to delete image derivatives.', + ]; + } } diff --git a/app/Classes/MediaHandler/VideoHandler.php b/app/Classes/MediaHandler/VideoHandler.php index c5f13137..a93efb39 100644 --- a/app/Classes/MediaHandler/VideoHandler.php +++ b/app/Classes/MediaHandler/VideoHandler.php @@ -5,6 +5,7 @@ use App\Enums\MediaStorage; use App\Enums\MediaType; use App\Enums\ResponseState; +use App\Enums\UploadState; use App\Interfaces\MediaHandlerInterface; use App\Models\Media; use App\Models\UploadSlot; @@ -61,21 +62,16 @@ public function invalidateCdnCache(string $basePath): bool * @param Version $version * @param int $oldVersionNumber * @param bool $wasProcessed - * @param string $callbackUrl * @return array */ - public function setVersion(User $user, Version $version, int $oldVersionNumber, bool $wasProcessed, string $callbackUrl): array + public function setVersion(User $user, Version $version, int $oldVersionNumber, bool $wasProcessed): array { - if ($callbackUrl) { - // Token and valid_until will be set in the 'saving' event. - // By creating an upload slot, currently active uploading or transcoding will be canceled. - $uploadSlot = $user->UploadSlots()->withoutGlobalScopes()->updateOrCreate(['identifier' => $version->Media->identifier], ['callback_url' => $callbackUrl, 'media_type' => MediaType::VIDEO]); - - $success = Transcode::createJobForVersionUpdate($version, $uploadSlot, $oldVersionNumber, $wasProcessed); - $responseState = $success ? ResponseState::VIDEO_VERSION_SET : ResponseState::TRANSCODING_JOB_DISPATCH_FAILED; - } else { - $responseState = ResponseState::NO_CALLBACK_URL_PROVIDED; - } + // Token and valid_until will be set in the 'saving' event. + // By creating an upload slot, currently active uploading or transcoding will be canceled. + $uploadSlot = $user->UploadSlots()->withoutGlobalScopes()->updateOrCreate(['identifier' => $version->Media->identifier], ['media_type' => MediaType::VIDEO]); + + $success = Transcode::createJobForVersionUpdate($version, $uploadSlot, $oldVersionNumber, $wasProcessed); + $responseState = $success ? ResponseState::VIDEO_VERSION_SET : ResponseState::TRANSCODING_JOB_DISPATCH_FAILED; return [ $responseState, @@ -105,4 +101,32 @@ public function getVersions(Media $media): array 'versions' => $versions->pluck('created_at', 'number')->map(fn($date) => strtotime($date)), ]; } + + /** + * @return array + */ + public function purgeDerivatives(): array + { + $failedMediaIds = []; + + foreach (Media::whereType(MediaType::VIDEO)->get() as $media) { + // Restore latest version to (re-)generate derivatives. + $version = $media->latestVersion; + + $oldVersionNumber = $version->number; + $wasProcessed = $version->processed; + + $version->update(['number' => $media->latestVersion->number + 1, 'processed' => 0]); + [$responseState, $uploadToken] = $this->setVersion($media->User, $version, $oldVersionNumber, $wasProcessed); + + if ($responseState->getState() === UploadState::ERROR) { + $failedMediaIds[] = $media->getKey(); + } + } + + return [ + 'success' => $success = !count($failedMediaIds), + 'message' => $success ? 'Restored versions for all video media.' : sprintf('Failed to restore versions for media ids: %s.', implode(', ', $failedMediaIds)), + ]; + } } diff --git a/app/Classes/Transcode.php b/app/Classes/Transcode.php index 87a06309..49712199 100644 --- a/app/Classes/Transcode.php +++ b/app/Classes/Transcode.php @@ -2,6 +2,7 @@ namespace App\Classes; +use App\Enums\ClientNotification; use App\Enums\MediaType; use App\Enums\ResponseState; use App\Helpers\SodiumHelper; @@ -15,6 +16,16 @@ class Transcode implements TranscodeInterface { + /** + * Returns the class which handles the actual transcoding. + * + * @return string + */ + public function getJobClass(): string + { + return TranscodeVideo::class; + } + /** * Creates a job which handles the transcoding of a video. * @@ -64,26 +75,27 @@ public function createJobForVersionUpdate(Version $version, UploadSlot $uploadSl * Inform client package about the transcoding result. * * @param ResponseState $responseState - * @param string $callbackUrl * @param string $uploadToken * @param Media $media * @param int $versionNumber * * @return void */ - public function callback(ResponseState $responseState, string $callbackUrl, string $uploadToken, Media $media, int $versionNumber): void + public function callback(ResponseState $responseState, string $uploadToken, Media $media, int $versionNumber): void { - $response = [ + $notification = [ 'state' => $responseState->getState()->value, 'message' => $responseState->getMessage(), 'identifier' => $media->identifier, 'version' => $versionNumber, 'upload_token' => $uploadToken, - 'public_path' => implode(DIRECTORY_SEPARATOR, array_filter([MediaType::VIDEO->prefix(), $media->baseDirectory()])) + 'public_path' => implode(DIRECTORY_SEPARATOR, array_filter([MediaType::VIDEO->prefix(), $media->baseDirectory()])), + 'hash' => Version::whereNumber($versionNumber)->first()?->hash, + 'notification_type' => ClientNotification::VIDEO_TRANSCODING->value, ]; - $signedResponse = SodiumHelper::sign(json_encode($response)); + $signedNotification = SodiumHelper::sign(json_encode($notification)); - Http::post($callbackUrl, ['signed_response' => $signedResponse]); + Http::post($media->User->api_url, ['signed_notification' => $signedNotification]); } } diff --git a/app/Console/Commands/CreateUser.php b/app/Console/Commands/CreateUser.php index 1a0b38fe..c1813c5b 100644 --- a/app/Console/Commands/CreateUser.php +++ b/app/Console/Commands/CreateUser.php @@ -16,7 +16,8 @@ class CreateUser extends Command */ protected $signature = 'create:user {name : The name of the user.} - {email : The E-Mail of the user.}'; + {email : The E-Mail of the user.} + {api_url : The URL at which the client can receive notifications.}'; /** * The console command description. @@ -34,6 +35,7 @@ public function handle(): int { $name = $this->argument('name'); $email = $this->argument('email'); + $apiUrl = $this->argument('api_url'); if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { $this->error('The provided email is not valid!'); @@ -56,13 +58,18 @@ public function handle(): int return Command::INVALID; } + if (!filter_var($apiUrl, FILTER_VALIDATE_URL, FILTER_FLAG_PATH_REQUIRED)) { + $this->error(sprintf('The API URL must be a valid URL and include a path.')); + return Command::INVALID; + } + /* * Laravel passwords are usually not nullable, so we will need to set something when creating the user. * Since we do not want to create a Password for the user, but need to store something secure, * we will just generate a string of random bytes. * This needs to be encoded to base64 because null bytes are not accepted anymore (PHP 8.3). */ - $user = User::create(['name' => $name, 'email' => $email, 'password' => Hash::make(base64_encode(random_bytes(300)))]); + $user = User::create(['name' => $name, 'email' => $email, 'api_url' => $apiUrl, 'password' => Hash::make(base64_encode(random_bytes(300)))]); $this->info(sprintf('Successfully created new user %s: %s (%s)', $user->getKey(), $user->name, $user->email)); $this->newLine(); diff --git a/app/Console/Commands/PurgeDerivatives.php b/app/Console/Commands/PurgeDerivatives.php new file mode 100644 index 00000000..300660bd --- /dev/null +++ b/app/Console/Commands/PurgeDerivatives.php @@ -0,0 +1,60 @@ +option('image') && !$this->option('video') && !$this->option('all')) { + $this->warn(sprintf('No options provided. Call "php artisan %s --help" for a list of all options.', $this->name)); + return Command::SUCCESS; + } + + foreach (MediaType::cases() as $mediaType) { + if ($this->option('all') || $this->option($mediaType->value)) { + ['success' => $success, 'message' => $message] = $mediaType->handler()->purgeDerivatives(); + $success ? $this->info($message) : $this->error($message); + } + } + + $originalsDisk = MediaStorage::ORIGINALS->getDisk(); + $cacheInvalidationCounterFilePath = config('transmorpher.cache_invalidation_counter_file_path'); + + if (!$originalsDisk->put($cacheInvalidationCounterFilePath, $originalsDisk->get($cacheInvalidationCounterFilePath) + 1)) { + $this->error(sprintf('Failed to update cache invalidation counter at path %s on disk %s', $cacheInvalidationCounterFilePath, MediaStorage::ORIGINALS->value)); + } + + foreach (User::get() as $user) { + ClientPurgeNotification::dispatch($user, $originalsDisk->get($cacheInvalidationCounterFilePath)); + } + + return Command::SUCCESS; + } +} diff --git a/app/Enums/ClientNotification.php b/app/Enums/ClientNotification.php new file mode 100644 index 00000000..2924f29d --- /dev/null +++ b/app/Enums/ClientNotification.php @@ -0,0 +1,9 @@ +updateOrCreateUploadSlot($request->user(), $request->merge(['media_type' => MediaType::IMAGE->value])->all()); + return $this->reserveUploadSlot($request, MediaType::IMAGE); } /** * Handle the incoming request. * - * @param VideoUploadSlotRequest $request + * @param UploadSlotRequest $request * * @return JsonResponse */ - public function reserveVideoUploadSlot(VideoUploadSlotRequest $request): JsonResponse + public function reserveVideoUploadSlot(UploadSlotRequest $request): JsonResponse { - return $this->updateOrCreateUploadSlot($request->user(), $request->merge(['media_type' => MediaType::VIDEO->value])->all()); + return $this->reserveUploadSlot($request, MediaType::VIDEO); + } + + protected function reserveUploadSlot(UploadSlotRequest $request, MediaType $mediaType): JsonResponse + { + return $this->updateOrCreateUploadSlot($request->user(), $request->merge(['media_type' => $mediaType->value])->all()); } /** @@ -91,7 +95,7 @@ protected function saveFile(UploadedFile $uploadedFile, UploadSlot $uploadSlot, $media->validateUploadFile($uploadedFile, $type->handler()->getValidationRules()); $media->save(); - $versionNumber = $media->Versions()->max('number') + 1; + $versionNumber = $media->latestVersion?->number + 1; $version = $media->Versions()->create(['number' => $versionNumber]); $basePath = $media->baseDirectory(); @@ -118,7 +122,8 @@ protected function saveFile(UploadedFile $uploadedFile, UploadSlot $uploadSlot, 'version' => $versionNumber, // Base path is only passed for images since the video is not available at this path yet. 'public_path' => $type->isInstantlyAvailable() ? implode(DIRECTORY_SEPARATOR, array_filter([$type->prefix(), $basePath])) : null, - 'upload_token' => $uploadSlot->token + 'upload_token' => $uploadSlot->token, + 'hash' => $type->isInstantlyAvailable() ? $version?->hash : null, ], 201); } diff --git a/app/Http/Controllers/V1/VersionController.php b/app/Http/Controllers/V1/VersionController.php index 4e4f8ec3..9aaa3244 100644 --- a/app/Http/Controllers/V1/VersionController.php +++ b/app/Http/Controllers/V1/VersionController.php @@ -51,7 +51,7 @@ public function setVersion(SetVersionRequest $request, Media $media, Version $ve $version->update(['number' => $newVersionNumber, 'processed' => 0]); - [$responseState, $uploadToken] = $media->type->handler()->setVersion($user, $version, $oldVersionNumber, $wasProcessed, $request->get('callback_url')); + [$responseState, $uploadToken] = $media->type->handler()->setVersion($user, $version, $oldVersionNumber, $wasProcessed); return response()->json([ 'state' => $responseState->getState()->value, @@ -62,7 +62,8 @@ public function setVersion(SetVersionRequest $request, Media $media, Version $ve 'public_path' => $media->type->isInstantlyAvailable() ? implode(DIRECTORY_SEPARATOR, array_filter([$media->type->prefix(), $media->baseDirectory()])) : null, - 'upload_token' => $uploadToken + 'upload_token' => $uploadToken, + 'hash' => $media->type->isInstantlyAvailable() ? $version->hash : null, ]); } diff --git a/app/Http/Requests/V1/SetVersionRequest.php b/app/Http/Requests/V1/SetVersionRequest.php index c433e2ba..866caf7e 100644 --- a/app/Http/Requests/V1/SetVersionRequest.php +++ b/app/Http/Requests/V1/SetVersionRequest.php @@ -23,9 +23,6 @@ public function authorize(): bool */ public function rules(): array { - // Nullable because this information is only used for videos. Validation is happening inside the VersionController. - return [ - 'callback_url' => ['nullable', 'string', 'url'] - ]; + return []; } } diff --git a/app/Http/Requests/V1/ImageUploadSlotRequest.php b/app/Http/Requests/V1/UploadSlotRequest.php similarity index 84% rename from app/Http/Requests/V1/ImageUploadSlotRequest.php rename to app/Http/Requests/V1/UploadSlotRequest.php index b3f8e2a0..18eb976d 100644 --- a/app/Http/Requests/V1/ImageUploadSlotRequest.php +++ b/app/Http/Requests/V1/UploadSlotRequest.php @@ -5,7 +5,7 @@ use App\Enums\ValidationRegex; use Illuminate\Foundation\Http\FormRequest; -class ImageUploadSlotRequest extends FormRequest +class UploadSlotRequest extends FormRequest { /** * Determine if the user is authorized to make this request. @@ -14,7 +14,7 @@ class ImageUploadSlotRequest extends FormRequest */ public function authorize(): bool { - return $this->user()->tokenCan('transmorpher:reserve-image-upload-slot'); + return $this->user()->tokenCan('transmorpher:reserve-upload-slot'); } /** diff --git a/app/Http/Requests/V1/VideoUploadSlotRequest.php b/app/Http/Requests/V1/VideoUploadSlotRequest.php deleted file mode 100644 index f6793fc5..00000000 --- a/app/Http/Requests/V1/VideoUploadSlotRequest.php +++ /dev/null @@ -1,33 +0,0 @@ -user()->tokenCan('transmorpher:reserve-video-upload-slot'); - } - - /** - * Get the validation rules that apply to the request. - * - * @return array - */ - public function rules(): array - { - return [ - // Identifier is used in file paths and URLs, therefore only lower/uppercase characters, numbers, underscores and hyphens are allowed. - 'identifier' => ['required', 'string', sprintf('regex:%s', ValidationRegex::IDENTIFIER->get())], - 'callback_url' => ['required', 'string', 'url'] - ]; - } -} diff --git a/app/Interfaces/MediaHandlerInterface.php b/app/Interfaces/MediaHandlerInterface.php index 3cd04a69..1386e998 100644 --- a/app/Interfaces/MediaHandlerInterface.php +++ b/app/Interfaces/MediaHandlerInterface.php @@ -2,9 +2,7 @@ namespace App\Interfaces; -use App\Enums\MediaStorage; use App\Enums\ResponseState; -use App\Models\Media; use App\Models\UploadSlot; use App\Models\User; use App\Models\Version; @@ -36,13 +34,17 @@ public function invalidateCdnCache(string $basePath): bool; * @param Version $version * @param int $oldVersionNumber * @param bool $wasProcessed - * @param string $callbackUrl * @return array */ - public function setVersion(User $user, Version $version, int $oldVersionNumber, bool $wasProcessed, string $callbackUrl): array; + public function setVersion(User $user, Version $version, int $oldVersionNumber, bool $wasProcessed): array; /** * @return Filesystem */ public function getDerivativesDisk(): Filesystem; + + /** + * @return array + */ + public function purgeDerivatives(): array; } diff --git a/app/Interfaces/TranscodeInterface.php b/app/Interfaces/TranscodeInterface.php index 63b66ce3..adc56c75 100644 --- a/app/Interfaces/TranscodeInterface.php +++ b/app/Interfaces/TranscodeInterface.php @@ -9,6 +9,13 @@ interface TranscodeInterface { + /** + * Returns the class which handles the actual transcoding. + * + * @return string + */ + public function getJobClass(): string; + /** * Creates a job which handles the transcoding of a video. * @@ -34,12 +41,11 @@ public function createJobForVersionUpdate(Version $version, UploadSlot $uploadSl * Inform client package about the transcoding result. * * @param ResponseState $responseState - * @param string $callbackUrl * @param string $uploadToken * @param Media $media * @param int $versionNumber * * @return void */ - public function callback(ResponseState $responseState, string $callbackUrl, string $uploadToken, Media $media, int $versionNumber): void; + public function callback(ResponseState $responseState, string $uploadToken, Media $media, int $versionNumber): void; } diff --git a/app/Jobs/ClientPurgeNotification.php b/app/Jobs/ClientPurgeNotification.php new file mode 100644 index 00000000..7e1a6dce --- /dev/null +++ b/app/Jobs/ClientPurgeNotification.php @@ -0,0 +1,70 @@ +onQueue('client-notifications'); + } + + /** + * Execute the job. + * @throws ClientNotificationFailedException + */ + public function handle(): void + { + $notification = [ + 'notification_type' => $this->notificationType, + 'cache_invalidator' => $this->cacheInvalidationCounter + ]; + + $signedNotification = SodiumHelper::sign(json_encode($notification)); + + $response = Http::post($this->user->api_url, ['signed_notification' => $signedNotification]); + + if (!$response->ok()) { + throw new ClientNotificationFailedException($this->user->name, $this->notificationType->value, $response->status(), $response->reason()); + } + } +} diff --git a/app/Jobs/TranscodeVideo.php b/app/Jobs/TranscodeVideo.php index dbf178cb..8a2180a5 100644 --- a/app/Jobs/TranscodeVideo.php +++ b/app/Jobs/TranscodeVideo.php @@ -47,7 +47,6 @@ class TranscodeVideo implements ShouldQueue protected Filesystem $localDisk; protected string $originalFilePath; - protected string $callbackUrl; protected string $uploadToken; // Derivatives are saved to a temporary folder first, else race conditions could cause newer versions to be overwritten. @@ -74,7 +73,6 @@ public function __construct( { $this->onQueue('video-transcoding'); $this->originalFilePath = $version->originalFilePath(); - $this->callbackUrl = $this->uploadSlot->callback_url; $this->uploadToken = $this->uploadSlot->token; } @@ -99,7 +97,7 @@ public function handle(): void } match ($this->responseState) { - ResponseState::TRANSCODING_SUCCESSFUL => Transcode::callback($this->responseState, $this->callbackUrl, $this->uploadToken, $this->version->Media, $this->version->number), + ResponseState::TRANSCODING_SUCCESSFUL => Transcode::callback($this->responseState, $this->uploadToken, $this->version->Media, $this->version->number), ResponseState::TRANSCODING_ABORTED => $this->failed(null), }; } @@ -132,7 +130,7 @@ public function failed(?Throwable $exception): void $versionNumber = $this->oldVersionNumber; } - Transcode::callback($this->responseState ?? ResponseState::TRANSCODING_FAILED, $this->callbackUrl, $this->uploadToken, $this->version->Media, $versionNumber); + Transcode::callback($this->responseState ?? ResponseState::TRANSCODING_FAILED, $this->uploadToken, $this->version->Media, $versionNumber); } /** diff --git a/app/Models/Media.php b/app/Models/Media.php index e7dc54bb..f1dbca2a 100644 --- a/app/Models/Media.php +++ b/app/Models/Media.php @@ -28,6 +28,7 @@ * @property-read \Illuminate\Database\Eloquent\Collection $Versions * @property-read int|null $versions_count * @property-read \App\Models\Version $current_version + * @property-read \App\Models\Version|null $latest_version * @method static \Illuminate\Database\Eloquent\Builder|Media newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|Media newQuery() * @method static \Illuminate\Database\Eloquent\Builder|Media query() @@ -163,6 +164,16 @@ public function currentVersion(): Attribute ); } + public function latestVersion(): Attribute + { + return Attribute::make( + get: function (): ?Version { + $versions = $this->Versions(); + return $versions->whereNumber($versions->max('number'))->first(); + } + ); + } + /** * Get the base path for files. * Path structure: {username}/{identifier}/ diff --git a/app/Models/UploadSlot.php b/app/Models/UploadSlot.php index e9d8a4af..2909d923 100644 --- a/app/Models/UploadSlot.php +++ b/app/Models/UploadSlot.php @@ -16,7 +16,6 @@ * @property int $id * @property string|null $token * @property string $identifier - * @property string|null $callback_url * @property string|null $validation_rules * @property string|null $valid_until * @property MediaType $media_type @@ -28,7 +27,6 @@ * @method static Builder|UploadSlot newModelQuery() * @method static Builder|UploadSlot newQuery() * @method static Builder|UploadSlot query() - * @method static Builder|UploadSlot whereCallbackUrl($value) * @method static Builder|UploadSlot whereCreatedAt($value) * @method static Builder|UploadSlot whereId($value) * @method static Builder|UploadSlot whereIdentifier($value) @@ -51,9 +49,8 @@ class UploadSlot extends Model */ protected $fillable = [ 'identifier', - 'callback_url', - 'validation_rules', 'media_type', + 'validation_rules', ]; /** diff --git a/app/Models/User.php b/app/Models/User.php index 9fa2502f..3ccdec65 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -22,6 +22,7 @@ * @property \Illuminate\Support\Carbon|null $created_at * @property \Illuminate\Support\Carbon|null $updated_at * @property string|null $protector_public_key The sodium public key for the Protector package. + * @property string $api_url The URL at which the client can receive notifications. * @property-read \Illuminate\Database\Eloquent\Collection $Media * @property-read int|null $media_count * @property-read \Illuminate\Database\Eloquent\Collection $UploadSlots @@ -34,6 +35,7 @@ * @method static \Illuminate\Database\Eloquent\Builder|User newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|User newQuery() * @method static \Illuminate\Database\Eloquent\Builder|User query() + * @method static \Illuminate\Database\Eloquent\Builder|User whereApiUrl($value) * @method static \Illuminate\Database\Eloquent\Builder|User whereCreatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|User whereEmail($value) * @method static \Illuminate\Database\Eloquent\Builder|User whereEmailVerifiedAt($value) @@ -55,8 +57,9 @@ class User extends Authenticatable * @var array */ protected $fillable = [ - 'name', + 'api_url', 'email', + 'name', 'password', ]; diff --git a/app/Models/Version.php b/app/Models/Version.php index 40ef8107..b0d06853 100644 --- a/app/Models/Version.php +++ b/app/Models/Version.php @@ -4,9 +4,13 @@ use App\Enums\MediaStorage; use App\Enums\Transformation; +use Eloquent; +use Illuminate\Database\Eloquent\Builder; +use Illuminate\Database\Eloquent\Casts\Attribute; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; +use Illuminate\Support\Carbon; /** * App\Models\Version @@ -16,20 +20,21 @@ * @property string|null $filename * @property int $processed * @property int $media_id - * @property \Illuminate\Support\Carbon|null $created_at - * @property \Illuminate\Support\Carbon|null $updated_at + * @property Carbon|null $created_at + * @property Carbon|null $updated_at * @property-read \App\Models\Media $Media - * @method static \Illuminate\Database\Eloquent\Builder|Version newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|Version newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|Version query() - * @method static \Illuminate\Database\Eloquent\Builder|Version whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|Version whereFilename($value) - * @method static \Illuminate\Database\Eloquent\Builder|Version whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Version whereMediaId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Version whereNumber($value) - * @method static \Illuminate\Database\Eloquent\Builder|Version whereProcessed($value) - * @method static \Illuminate\Database\Eloquent\Builder|Version whereUpdatedAt($value) - * @mixin \Eloquent + * @property-read string $hash + * @method static Builder|Version newModelQuery() + * @method static Builder|Version newQuery() + * @method static Builder|Version query() + * @method static Builder|Version whereCreatedAt($value) + * @method static Builder|Version whereFilename($value) + * @method static Builder|Version whereId($value) + * @method static Builder|Version whereMediaId($value) + * @method static Builder|Version whereNumber($value) + * @method static Builder|Version whereProcessed($value) + * @method static Builder|Version whereUpdatedAt($value) + * @mixin Eloquent */ class Version extends Model { @@ -44,8 +49,8 @@ class Version extends Model * @var array */ protected $fillable = [ - 'number', 'filename', + 'number', 'processed', ]; @@ -142,4 +147,11 @@ public function imageDerivativeDirectoryPath(): string { return sprintf('%s/%s', $this->Media->baseDirectory(), $this->getKey()); } + + public function hash(): Attribute + { + return Attribute::make( + get: fn(): string => md5(sprintf('%s-%s', $this->number, $this->created_at)) + ); + } } diff --git a/config/transmorpher.php b/config/transmorpher.php index 508aa2ac..20a88396 100644 --- a/config/transmorpher.php +++ b/config/transmorpher.php @@ -182,4 +182,14 @@ 'image' => App\Classes\MediaHandler\ImageHandler::class, 'video' => App\Classes\MediaHandler\VideoHandler::class ], + + /* + |-------------------------------------------------------------------------- + | Cache Invalidation Counter File Path + |-------------------------------------------------------------------------- + | + | The path to a file on the originals disk that stores the cache invalidation counter. + | + */ + 'cache_invalidation_counter_file_path' => env('CACHE_INVALIDATION_COUNTER_FILE_PATH', 'cacheInvalidationCounter'), ]; diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php index e033548d..de653d06 100644 --- a/database/factories/UserFactory.php +++ b/database/factories/UserFactory.php @@ -29,6 +29,7 @@ public function definition(): array 'email_verified_at' => now(), 'password' => static::$password ??= Hash::make('password'), 'remember_token' => Str::random(10), + 'api_url' => 'http://example.com/transmorpher/notifications', ]; } diff --git a/database/migrations/2024_04_23_095200_add_api_url_to_users_table.php b/database/migrations/2024_04_23_095200_add_api_url_to_users_table.php new file mode 100644 index 00000000..6daa0d22 --- /dev/null +++ b/database/migrations/2024_04_23_095200_add_api_url_to_users_table.php @@ -0,0 +1,24 @@ +string('api_url')->comment('The URL at which the client can receive notifications.'); + }); + + Schema::table('upload_slots', function (Blueprint $table) { + $table->dropColumn('callback_url'); + }); + } +}; diff --git a/database/seeders/PullpreviewSeeder.php b/database/seeders/PullpreviewSeeder.php index ed8287e0..aff5f5ae 100644 --- a/database/seeders/PullpreviewSeeder.php +++ b/database/seeders/PullpreviewSeeder.php @@ -15,8 +15,8 @@ class PullpreviewSeeder extends Seeder */ public function run(): void { - Artisan::call('create:user pullpreview pullpreview@example.com'); + Artisan::call('create:user pullpreview pullpreview@example.com http://pullpreview.test/transmorpher/notifications'); - DB::table('personal_access_tokens')->where('id', 1)->update(['token' => env('PULLPREVIEW_TRANSMORPHER_AUTH_TOKEN_HASH')]); + DB::table('personal_access_tokens')->where('id', 1)->update(['token' => env('TRANSMORPHER_AUTH_TOKEN_HASH')]); } } diff --git a/docker/workers.conf b/docker/workers.conf index 69b87f64..b5825b6a 100644 --- a/docker/workers.conf +++ b/docker/workers.conf @@ -13,3 +13,19 @@ redirect_stderr=true stdout_logfile=/dev/stdout ; Timeout of the longest running job (video transcoding with 10800) plus 30. stopwaitsecs=10830 + +[program:client-notification-worker] +process_name=%(program_name)s_%(process_num)02d +; Supervisor starts programs as root by default, which might lead to permission problems when the webserver tries to access files or similar. +user=application +environment=HOME="/home/application",USER="application" +command=php /var/www/html/artisan queue:work --queue=client-notifications +autostart=true +autorestart=true +stopasgroup=true +killasgroup=true +numprocs=1 +redirect_stderr=true +stdout_logfile=/dev/stdout +; Timeout of the longest running job (purge notifications with 10) plus 30. +stopwaitsecs=40 diff --git a/lang/en/responses.php b/lang/en/responses.php index b8987c92..d4a0f163 100644 --- a/lang/en/responses.php +++ b/lang/en/responses.php @@ -14,7 +14,6 @@ 'deletion_successful' => 'Successfully deleted media.', 'image_upload_successful' => 'Successfully uploaded new image version.', 'image_version_set' => 'Successfully set image version.', - 'no_callback_url_provided' => 'A callback URL is needed for this identifier.', 'transcoding_aborted' => 'Transcoding process aborted due to a new version or upload.', 'transcoding_failed' => 'Video transcoding failed, version has been removed.', 'transcoding_job_dispatch_failed' => 'There was an error when trying to dispatch the transcoding job.', diff --git a/routes/api/v1.php b/routes/api/v1.php index 7ba7fd70..6503fd8a 100644 --- a/routes/api/v1.php +++ b/routes/api/v1.php @@ -1,5 +1,6 @@ name('upload'); Route::get('publickey', fn(): string => SodiumHelper::getPublicKey())->name('getPublicKey'); + Route::get('cacheInvalidator', fn(): string => MediaStorage::ORIGINALS->getDisk()->get(config('transmorpher.cache_invalidation_counter_file_path')) ?? 0)->name('getCacheInvalidator'); }); diff --git a/tests/MediaTest.php b/tests/MediaTest.php index 332bd464..b97e9930 100644 --- a/tests/MediaTest.php +++ b/tests/MediaTest.php @@ -10,7 +10,7 @@ class MediaTest extends TestCase { - protected static User $user; + protected User $user; protected Filesystem $originalsDisk; protected function setUp(): void @@ -20,7 +20,7 @@ protected function setUp(): void $this->originalsDisk ??= Storage::persistentFake(config(sprintf('transmorpher.disks.%s', MediaStorage::ORIGINALS->value))); Sanctum::actingAs( - self::$user ??= User::factory()->create(), + $this->user ??= User::first() ?: User::factory()->create(), ['*'] ); } diff --git a/tests/Unit/CreateUserCommandTest.php b/tests/Unit/CreateUserCommandTest.php index 823b609a..02b56f52 100644 --- a/tests/Unit/CreateUserCommandTest.php +++ b/tests/Unit/CreateUserCommandTest.php @@ -18,13 +18,14 @@ class CreateUserCommandTest extends TestCase protected const NAME = 'Oswald'; protected const EMAIL = 'oswald@example.com'; + protected const API_URL = 'http://example.com/transmorpher/notifications'; #[Test] public function ensureUserCanBeCreated() { $this->assertDatabaseMissing(User::getModel()->getTable(), ['name' => self::NAME, 'email' => self::EMAIL]); - $exitStatus = Artisan::call(CreateUser::class, ['name' => self::NAME, 'email' => self::EMAIL]); + $exitStatus = $this->createUser(); $this->assertEquals(Command::SUCCESS, $exitStatus); $this->assertDatabaseHas(User::getModel()->getTable(), ['name' => self::NAME, 'email' => self::EMAIL]); @@ -33,7 +34,7 @@ public function ensureUserCanBeCreated() #[Test] public function ensureUserHasSanctumToken() { - Artisan::call(CreateUser::class, ['name' => self::NAME, 'email' => self::EMAIL]); + $this->createUser(); $this->assertNotEmpty(User::whereName(self::NAME)->first()->tokens); } @@ -42,19 +43,20 @@ public function ensureUserHasSanctumToken() #[DataProvider('duplicateEntryDataProvider')] public function failOnDuplicateEntry(string $name, string $email) { - Artisan::call(CreateUser::class, ['name' => self::NAME, 'email' => self::EMAIL]); - $exitStatus = Artisan::call(CreateUser::class, ['name' => $name, 'email' => $email]); + $this->createUser(); + $exitStatus = $this->createUser($name, $email); $this->assertEquals(Command::INVALID, $exitStatus); } #[Test] #[DataProvider('missingArgumentsDataProvider')] - public function failOnMissingArguments(?string $name, ?string $email) + public function failOnMissingArguments(?string $name, ?string $email, ?string $apiUrl) { $arguments = []; $name && $arguments['name'] = $name; $email && $arguments['email'] = $email; + $apiUrl && $arguments['api_url'] = $apiUrl; $this->expectException(RuntimeException::class); Artisan::call(CreateUser::class, $arguments); @@ -62,9 +64,9 @@ public function failOnMissingArguments(?string $name, ?string $email) #[Test] #[DataProvider('invalidArgumentsDataProvider')] - public function failOnInvalidArguments(string $name, string $email) + public function failOnInvalidArguments(string $name, string $email, string $apiUrl) { - $exitStatus = Artisan::call(CreateUser::class, ['name' => $name, 'email' => $email]); + $exitStatus = $this->createUser($name, $email, $apiUrl); $this->assertEquals(Command::INVALID, $exitStatus); } @@ -92,15 +94,33 @@ public static function missingArgumentsDataProvider(): array return [ 'missing name' => [ 'name' => null, - 'email' => self::EMAIL + 'email' => self::EMAIL, + 'apiUrl' => self::API_URL ], 'missing email' => [ 'name' => self::NAME, - 'email' => null + 'email' => null, + 'apiUrl' => self::API_URL + ], + 'missing api url' => [ + 'name' => self::NAME, + 'email' => self::EMAIL, + 'apiUrl' => null ], 'missing name and email' => [ 'name' => null, - 'email' => null + 'email' => null, + 'apiUrl' => self::API_URL + ], + 'missing name and api url' => [ + 'name' => null, + 'email' => self::EMAIL, + 'apiUrl' => null + ], + 'missing email and api url' => [ + 'name' => self::NAME, + 'email' => null, + 'apiUrl' => null ] ]; } @@ -110,44 +130,85 @@ public static function invalidArgumentsDataProvider(): array return [ 'invalid name with slash' => [ 'name' => 'invalid/name', - 'email' => self::EMAIL + 'email' => self::EMAIL, + 'apiUrl' => self::API_URL ], 'invalid name with backslash' => [ 'name' => 'invalid\name', - 'email' => self::EMAIL + 'email' => self::EMAIL, + 'apiUrl' => self::API_URL ], 'invalid name with dot' => [ 'name' => 'invalid.name', - 'email' => self::EMAIL + 'email' => self::EMAIL, + 'apiUrl' => self::API_URL ], 'invalid name with hyphen' => [ 'name' => 'invalid--name', - 'email' => self::EMAIL + 'email' => self::EMAIL, + 'apiUrl' => self::API_URL ], 'invalid name with trailing hyphen' => [ 'name' => 'invalidName-', - 'email' => self::EMAIL + 'email' => self::EMAIL, + 'apiUrl' => self::API_URL ], 'invalid name with special character' => [ 'name' => 'invalidName!', - 'email' => self::EMAIL + 'email' => self::EMAIL, + 'apiUrl' => self::API_URL ], 'invalid name with umlaut' => [ 'name' => 'invalidNäme', - 'email' => self::EMAIL + 'email' => self::EMAIL, + 'apiUrl' => self::API_URL ], 'invalid name with space' => [ 'name' => 'invalid name', - 'email' => self::EMAIL + 'email' => self::EMAIL, + 'apiUrl' => self::API_URL ], 'invalid email' => [ 'name' => self::NAME, - 'email' => 'invalidEmail' + 'email' => 'invalidEmail', + 'apiUrl' => self::API_URL ], 'invalid name and email' => [ 'name' => 'invalid/name', - 'email' => 'invalidEmail' + 'email' => 'invalidEmail', + 'apiUrl' => self::API_URL + ], + 'invalid api url no scheme' => [ + 'name' => self::NAME, + 'email' => self::EMAIL, + 'apiUrl' => 'example.com/transmorpher/notifications' + ], + 'invalid api url no path' => [ + 'name' => self::NAME, + 'email' => self::EMAIL, + 'apiUrl' => 'https://example.com' + ], + 'invalid api url no scheme and no path' => [ + 'name' => self::NAME, + 'email' => self::EMAIL, + 'apiUrl' => 'example.com' + ], + 'invalid name and email and apiUrl' => [ + 'name' => 'invalid/name', + 'email' => 'invalidEmail', + 'apiUrl' => 'example.com' ] ]; } + + /** + * @param string|null $name + * @param string|null $email + * @param string|null $apiUrl + * @return int + */ + protected function createUser(?string $name = null, ?string $email = null, ?string $apiUrl = null): int + { + return Artisan::call(CreateUser::class, ['name' => $name ?? self::NAME, 'email' => $email ?? self::EMAIL, 'api_url' => $apiUrl ?? self::API_URL]); + } } diff --git a/tests/Unit/ImageTest.php b/tests/Unit/ImageTest.php index 52b664fe..10372d33 100644 --- a/tests/Unit/ImageTest.php +++ b/tests/Unit/ImageTest.php @@ -2,15 +2,21 @@ namespace Tests\Unit; +use App\Console\Commands\PurgeDerivatives; +use App\Enums\ClientNotification; use App\Enums\MediaStorage; use App\Enums\Transformation; use App\Exceptions\InvalidTransformationFormatException; use App\Exceptions\InvalidTransformationValueException; use App\Exceptions\TransformationNotFoundException; +use App\Helpers\SodiumHelper; use App\Models\Media; use App\Models\UploadSlot; use App\Models\Version; +use Artisan; +use Http; use Illuminate\Contracts\Filesystem\Filesystem; +use Illuminate\Http\Client\Request; use Illuminate\Http\UploadedFile; use Illuminate\Testing\TestResponse; use PHPUnit\Framework\Attributes\DataProvider; @@ -61,6 +67,7 @@ protected function uploadImage(string $uploadToken): TestResponse ]); } + #[Test] #[Depends('ensureImageUploadSlotCanBeReserved')] public function ensureImageCanBeUploaded(string $uploadToken) @@ -77,9 +84,17 @@ public function ensureImageCanBeUploaded(string $uploadToken) return $version; } + #[Test] + #[Depends('ensureImageUploadSlotCanBeReserved')] + #[Depends('ensureImageCanBeUploaded')] + public function ensureUploadTokenIsInvalidatedAfterUpload(string $uploadToken) + { + $this->uploadImage($uploadToken)->assertNotFound(); + } + protected function createDerivativeForVersion(Version $version): TestResponse { - return $this->get(route('getDerivative', [self::$user->name, $version->Media])); + return $this->get(route('getDerivative', [$this->user->name, $version->Media])); } #[Test] @@ -96,7 +111,7 @@ public function ensureProcessedFilesAreAvailable(Version $version) public function ensureUnprocessedFilesAreNotAvailable(Version $version) { $version->update(['processed' => 0]); - $getDerivativeResponse = $this->get(route('getDerivative', [self::$user->name, $version->Media])); + $getDerivativeResponse = $this->get(route('getDerivative', [$this->user->name, $version->Media])); $getDerivativeResponse->assertNotFound(); } @@ -114,8 +129,8 @@ protected function assertMediaDirectoryExists(Media $media): void protected function assertUserDirectoryExists(): void { - $this->originalsDisk->assertExists(self::$user->name); - $this->imageDerivativesDisk->assertExists(self::$user->name); + $this->originalsDisk->assertExists($this->user->name); + $this->imageDerivativesDisk->assertExists($this->user->name); } protected function assertVersionFilesMissing(Version $version): void @@ -132,11 +147,11 @@ protected function assertMediaDirectoryMissing(Media $media): void protected function assertUserDirectoryMissing(): void { - $this->originalsDisk->assertMissing(self::$user->name); - $this->imageDerivativesDisk->assertMissing(self::$user->name); + $this->originalsDisk->assertMissing($this->user->name); + $this->imageDerivativesDisk->assertMissing($this->user->name); } - protected function setupDeletionTest(): void + protected function setupMediaAndVersion(): void { $this->uploadToken = $this->reserveUploadSlot()->json()['upload_token']; $this->version = Media::whereIdentifier(self::IDENTIFIER)->first()->Versions()->whereNumber($this->uploadImage($this->uploadToken)['version'])->first(); @@ -148,7 +163,7 @@ protected function setupDeletionTest(): void #[Test] public function ensureVersionDeletionMethodsWork() { - $this->setupDeletionTest(); + $this->setupMediaAndVersion(); $this->assertVersionFilesExist($this->version); @@ -160,7 +175,7 @@ public function ensureVersionDeletionMethodsWork() #[Test] public function ensureMediaDeletionMethodsWork() { - $this->setupDeletionTest(); + $this->setupMediaAndVersion(); $this->assertVersionFilesExist($this->version); $this->assertMediaDirectoryExists($this->media); @@ -175,17 +190,46 @@ public function ensureMediaDeletionMethodsWork() $this->assertModelMissing($this->uploadSlot); } + #[Test] + public function ensureImageDerivativesArePurged() + { + $this->setupMediaAndVersion(); + + $this->assertVersionFilesExist($this->version); + + $cacheCounterBeforeCommand = $this->originalsDisk->get(config('transmorpher.cache_invalidation_counter_file_path')); + + Http::fake([ + $this->user->api_url => Http::response() + ]); + + Artisan::call(PurgeDerivatives::class, ['--image' => true]); + + $cacheCounterAfterCommand = $this->originalsDisk->get(config('transmorpher.cache_invalidation_counter_file_path')); + + Http::assertSent(function (Request $request) use ($cacheCounterAfterCommand) { + $decryptedNotification = json_decode(SodiumHelper::decrypt($request['signed_notification']), true); + + return $request->url() == $this->user->api_url + && $decryptedNotification['notification_type'] == ClientNotification::CACHE_INVALIDATION->value + && $decryptedNotification['cache_invalidator'] == $cacheCounterAfterCommand; + }); + + $this->assertTrue(++$cacheCounterBeforeCommand == $cacheCounterAfterCommand); + $this->imageDerivativesDisk->assertMissing($this->version->imageDerivativeFilePath()); + } + #[Test] public function ensureUserDeletionMethodsWork() { - $this->setupDeletionTest(); + $this->setupMediaAndVersion(); $this->assertVersionFilesExist($this->version); $this->assertMediaDirectoryExists($this->media); $this->assertUserDirectoryExists(); - $this->runProtectedMethod(self::$user, 'deleteRelatedModels'); - $this->runProtectedMethod(self::$user, 'deleteMediaDirectories'); + $this->runProtectedMethod($this->user, 'deleteRelatedModels'); + $this->runProtectedMethod($this->user, 'deleteMediaDirectories'); $this->assertVersionFilesMissing($this->version); $this->assertMediaDirectoryMissing($this->media); diff --git a/tests/Unit/VideoTest.php b/tests/Unit/VideoTest.php index fa0d9ef0..385dd19c 100644 --- a/tests/Unit/VideoTest.php +++ b/tests/Unit/VideoTest.php @@ -2,23 +2,34 @@ namespace Tests\Unit; +use App\Console\Commands\PurgeDerivatives; +use App\Enums\ClientNotification; use App\Enums\MediaStorage; use App\Enums\ResponseState; use App\Helpers\SodiumHelper; -use App\Jobs\TranscodeVideo; +use App\Jobs\ClientPurgeNotification; +use App\Models\Media; use App\Models\UploadSlot; +use Artisan; +use File; use Http; use Illuminate\Contracts\Filesystem\Filesystem; -use PHPUnit\Framework\Attributes\Depends; +use Illuminate\Foundation\Testing\RefreshDatabase; +use Illuminate\Http\Client\Request; +use Illuminate\Http\UploadedFile; +use Illuminate\Testing\TestResponse; use PHPUnit\Framework\Attributes\Test; +use Queue; use Storage; use Tests\MediaTest; +use Transcode; class VideoTest extends MediaTest { + use RefreshDatabase; + protected const IDENTIFIER = 'testVideo'; protected const VIDEO_NAME = 'video.mp4'; - protected const CALLBACK_URL = 'http://example.com/callback'; protected Filesystem $videoDerivativesDisk; protected function setUp(): void @@ -28,37 +39,120 @@ protected function setUp(): void $this->videoDerivativesDisk ??= Storage::persistentFake(config(sprintf('transmorpher.disks.%s', MediaStorage::VIDEO_DERIVATIVES->value))); } - #[Test] - public function ensureVideoUploadSlotCanBeReserved() + /** + * @return TestResponse + */ + protected function reserveUploadSlot(): TestResponse { - $reserveUploadSlotResponse = $this->json('POST', route('v1.reserveVideoUploadSlot'), [ + return $this->json('POST', route('v1.reserveVideoUploadSlot'), [ 'identifier' => self::IDENTIFIER, - 'callback_url' => self::CALLBACK_URL ]); + } + + #[Test] + public function ensureVideoUploadSlotCanBeReserved() + { + $reserveUploadSlotResponse = $this->reserveUploadSlot(); $reserveUploadSlotResponse->assertOk(); - return $reserveUploadSlotResponse->json()['upload_token']; + return $reserveUploadSlotResponse->json('upload_token'); + } + + protected function uploadVideo(): TestResponse + { + $uploadToken = $this->reserveUploadSlot()->json('upload_token'); + + return $this->post(route('v1.upload', [$uploadToken]), [ + 'file' => UploadedFile::fake()->createWithContent('video.mp4', File::get(base_path('tests/data/test.mp4'))), + 'identifier' => self::IDENTIFIER + ]); } #[Test] - #[Depends('ensureVideoUploadSlotCanBeReserved')] - public function ensureTranscodingIsAbortedWhenNewerVersionExists(string $uploadToken) + public function ensureVideoCanBeUploaded() { - Http::fake(); + Queue::fake(); + + $uploadResponse = $this->uploadVideo(); + + $uploadResponse->assertCreated(); + Queue::assertPushed(Transcode::getJobClass()); + + $media = Media::whereIdentifier($uploadResponse['identifier'])->first(); + $version = $media->Versions()->whereNumber($uploadResponse['version'])->first(); + $this->originalsDisk->assertExists($version->originalFilePath()); + } + + #[Test] + public function ensureTranscodingIsAbortedWhenNewerVersionExists() + { + $uploadToken = $this->reserveUploadSlot()->json('upload_token'); $uploadSlot = UploadSlot::firstWhere('token', $uploadToken); - $media = self::$user->Media()->create(['identifier' => self::IDENTIFIER, 'type' => $uploadSlot->media_type]); + $media = $this->user->Media()->create(['identifier' => self::IDENTIFIER, 'type' => $uploadSlot->media_type]); $outdatedVersion = $media->Versions()->create(['number' => 1, 'filename' => sprintf('1-%s', self::VIDEO_NAME)]); $media->Versions()->create(['number' => 2, 'filename' => sprintf('2-%s', self::VIDEO_NAME)]); - TranscodeVideo::dispatch($outdatedVersion, $uploadSlot); + Http::fake(); + + Transcode::createJob($outdatedVersion, $uploadSlot); $request = Http::recorded()[0][0]; - $transcodingResult = json_decode(SodiumHelper::decrypt($request->data()['signed_response']), true); + $transcodingResult = json_decode(SodiumHelper::decrypt($request->data()['signed_notification']), true); $this->assertEquals(ResponseState::TRANSCODING_ABORTED->getState()->value, $transcodingResult['state']); $this->assertEquals(ResponseState::TRANSCODING_ABORTED->getMessage(), $transcodingResult['message']); } + + #[Test] + public function ensureTranscodingWorks() + { + $uploadResponse = $this->uploadVideo(); + + $media = Media::whereIdentifier($uploadResponse['identifier'])->first(); + $version = $media->Versions()->whereNumber($uploadResponse['version'])->first(); + $uploadSlot = UploadSlot::withoutGlobalScopes()->whereToken($uploadResponse['upload_token'])->first(); + + Http::fake([ + $this->user->api_url => Http::response() + ]); + + $this->assertTrue(Transcode::createJob($version, $uploadSlot)); + + Http::assertSent(function (Request $request) { + $decryptedNotification = json_decode(SodiumHelper::decrypt($request['signed_notification']), true); + + return $request->url() == $this->user->api_url + && $decryptedNotification['notification_type'] == ClientNotification::VIDEO_TRANSCODING->value + && $decryptedNotification['state'] == ResponseState::TRANSCODING_SUCCESSFUL->getState()->value; + }); + + $this->videoDerivativesDisk->assertExists($media->videoDerivativeFilePath('mp4') . '.mp4'); + $this->videoDerivativesDisk->assertExists($media->videoDerivativeFilePath('hls') . '.m3u8'); + $this->videoDerivativesDisk->assertExists($media->videoDerivativeFilePath('dash') . '.mpd'); + } + + #[Test] + public function ensureVideoDerivativesArePurged() + { + $uploadResponse = $this->uploadVideo(); + + $media = Media::whereIdentifier($uploadResponse['identifier'])->first(); + $version = $media->currentVersion; + + $versionNumberBeforePurging = $version->number; + + Queue::fake(); + Http::fake([ + $this->user->api_url => Http::response() + ]); + + Artisan::call(PurgeDerivatives::class, ['--video' => true]); + + $this->assertTrue($versionNumberBeforePurging + 1 == $version->refresh()->number); + Queue::assertPushed(Transcode::getJobClass()); + Queue::assertPushed(ClientPurgeNotification::class); + } } From 4ee7812fdbf1614cbb5013b9d4139ecaf2f0fe11 Mon Sep 17 00:00:00 2001 From: mszulik <69617961+mszulik@users.noreply.github.com> Date: Thu, 16 May 2024 12:55:39 +0200 Subject: [PATCH 12/15] tests to ensure binaries are installed (#50) --- composer.json | 6 +- composer.lock | 402 +++++++++++++------------- tests/Unit/BinaryAvailabilityTest.php | 43 +++ tests/Unit/ImageTest.php | 1 - 4 files changed, 253 insertions(+), 199 deletions(-) create mode 100644 tests/Unit/BinaryAvailabilityTest.php diff --git a/composer.json b/composer.json index d69d3b7d..fb9cd40f 100644 --- a/composer.json +++ b/composer.json @@ -2,12 +2,16 @@ "name": "laravel/laravel", "type": "project", "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], + "keywords": [ + "framework", + "laravel" + ], "license": "MIT", "require": { "php": "8.2.*|8.3.*", "ext-fileinfo": "*", "ext-sodium": "*", + "ext-imagick": "*", "aminyazdanpanah/php-ffmpeg-video-streaming": "^1.2.17", "cybex/laravel-protector": "^3.0", "intervention/image": "^2.7", diff --git a/composer.lock b/composer.lock index 500c76e1..f4f0c6aa 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": "a4ccc5fc608c608d41a096d29b3a7e7b", + "content-hash": "1c157993872c3768f98a856adbc1b1da", "packages": [ { "name": "aminyazdanpanah/php-ffmpeg-video-streaming", @@ -108,16 +108,16 @@ }, { "name": "aws/aws-crt-php", - "version": "v1.2.4", + "version": "v1.2.5", "source": { "type": "git", "url": "https://github.com/awslabs/aws-crt-php.git", - "reference": "eb0c6e4e142224a10b08f49ebf87f32611d162b2" + "reference": "0ea1f04ec5aa9f049f97e012d1ed63b76834a31b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/awslabs/aws-crt-php/zipball/eb0c6e4e142224a10b08f49ebf87f32611d162b2", - "reference": "eb0c6e4e142224a10b08f49ebf87f32611d162b2", + "url": "https://api.github.com/repos/awslabs/aws-crt-php/zipball/0ea1f04ec5aa9f049f97e012d1ed63b76834a31b", + "reference": "0ea1f04ec5aa9f049f97e012d1ed63b76834a31b", "shasum": "" }, "require": { @@ -156,22 +156,22 @@ ], "support": { "issues": "https://github.com/awslabs/aws-crt-php/issues", - "source": "https://github.com/awslabs/aws-crt-php/tree/v1.2.4" + "source": "https://github.com/awslabs/aws-crt-php/tree/v1.2.5" }, - "time": "2023-11-08T00:42:13+00:00" + "time": "2024-04-19T21:30:56+00:00" }, { "name": "aws/aws-sdk-php", - "version": "3.304.6", + "version": "3.305.5", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "02abf9b8e2afbdf281e28757c582049d3db16df7" + "reference": "aff7806278b7ce7777ced1afd7534c72329e9240" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/02abf9b8e2afbdf281e28757c582049d3db16df7", - "reference": "02abf9b8e2afbdf281e28757c582049d3db16df7", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/aff7806278b7ce7777ced1afd7534c72329e9240", + "reference": "aff7806278b7ce7777ced1afd7534c72329e9240", "shasum": "" }, "require": { @@ -251,31 +251,31 @@ "support": { "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80", "issues": "https://github.com/aws/aws-sdk-php/issues", - "source": "https://github.com/aws/aws-sdk-php/tree/3.304.6" + "source": "https://github.com/aws/aws-sdk-php/tree/3.305.5" }, - "time": "2024-04-17T18:27:31+00:00" + "time": "2024-04-29T18:07:32+00:00" }, { "name": "brick/math", - "version": "0.11.0", + "version": "0.12.1", "source": { "type": "git", "url": "https://github.com/brick/math.git", - "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478" + "reference": "f510c0a40911935b77b86859eb5223d58d660df1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/0ad82ce168c82ba30d1c01ec86116ab52f589478", - "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478", + "url": "https://api.github.com/repos/brick/math/zipball/f510c0a40911935b77b86859eb5223d58d660df1", + "reference": "f510c0a40911935b77b86859eb5223d58d660df1", "shasum": "" }, "require": { - "php": "^8.0" + "php": "^8.1" }, "require-dev": { "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^9.0", - "vimeo/psalm": "5.0.0" + "phpunit/phpunit": "^10.1", + "vimeo/psalm": "5.16.0" }, "type": "library", "autoload": { @@ -295,12 +295,17 @@ "arithmetic", "bigdecimal", "bignum", + "bignumber", "brick", - "math" + "decimal", + "integer", + "math", + "mathematics", + "rational" ], "support": { "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.11.0" + "source": "https://github.com/brick/math/tree/0.12.1" }, "funding": [ { @@ -308,7 +313,7 @@ "type": "github" } ], - "time": "2023-01-15T23:15:59+00:00" + "time": "2023-11-29T23:19:16+00:00" }, { "name": "carbonphp/carbon-doctrine-types", @@ -1502,16 +1507,16 @@ }, { "name": "laravel/framework", - "version": "v11.4.0", + "version": "v11.5.0", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "c1dc67c28811dc5be524a30b18f29ce62126716a" + "reference": "e3c24268f1404805e15099b9f035fe310cb30753" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/c1dc67c28811dc5be524a30b18f29ce62126716a", - "reference": "c1dc67c28811dc5be524a30b18f29ce62126716a", + "url": "https://api.github.com/repos/laravel/framework/zipball/e3c24268f1404805e15099b9f035fe310cb30753", + "reference": "e3c24268f1404805e15099b9f035fe310cb30753", "shasum": "" }, "require": { @@ -1703,20 +1708,20 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2024-04-16T14:38:51+00:00" + "time": "2024-04-23T15:11:31+00:00" }, { "name": "laravel/prompts", - "version": "v0.1.19", + "version": "v0.1.20", "source": { "type": "git", "url": "https://github.com/laravel/prompts.git", - "reference": "0ab75ac3434d9f610c5691758a6146a3d1940c18" + "reference": "bf9a360c484976692de0f3792f30066f4f4b34a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/prompts/zipball/0ab75ac3434d9f610c5691758a6146a3d1940c18", - "reference": "0ab75ac3434d9f610c5691758a6146a3d1940c18", + "url": "https://api.github.com/repos/laravel/prompts/zipball/bf9a360c484976692de0f3792f30066f4f4b34a2", + "reference": "bf9a360c484976692de0f3792f30066f4f4b34a2", "shasum": "" }, "require": { @@ -1758,9 +1763,9 @@ ], "support": { "issues": "https://github.com/laravel/prompts/issues", - "source": "https://github.com/laravel/prompts/tree/v0.1.19" + "source": "https://github.com/laravel/prompts/tree/v0.1.20" }, - "time": "2024-04-16T14:20:35+00:00" + "time": "2024-04-18T00:45:25+00:00" }, { "name": "laravel/sanctum", @@ -2579,16 +2584,16 @@ }, { "name": "nesbot/carbon", - "version": "3.2.4", + "version": "3.3.0", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "82c28278c1c8f7b82dcdab25692237f052ffc8d8" + "reference": "7219739c4e01d4680c980545821733b6ed8ee880" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/82c28278c1c8f7b82dcdab25692237f052ffc8d8", - "reference": "82c28278c1c8f7b82dcdab25692237f052ffc8d8", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/7219739c4e01d4680c980545821733b6ed8ee880", + "reference": "7219739c4e01d4680c980545821733b6ed8ee880", "shasum": "" }, "require": { @@ -2681,7 +2686,7 @@ "type": "tidelift" } ], - "time": "2024-04-05T09:58:10+00:00" + "time": "2024-04-18T16:35:06+00:00" }, { "name": "nette/schema", @@ -3882,20 +3887,20 @@ }, { "name": "ramsey/uuid", - "version": "4.7.5", + "version": "4.7.6", "source": { "type": "git", "url": "https://github.com/ramsey/uuid.git", - "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e" + "reference": "91039bc1faa45ba123c4328958e620d382ec7088" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e", - "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/91039bc1faa45ba123c4328958e620d382ec7088", + "reference": "91039bc1faa45ba123c4328958e620d382ec7088", "shasum": "" }, "require": { - "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11", + "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11 || ^0.12", "ext-json": "*", "php": "^8.0", "ramsey/collection": "^1.2 || ^2.0" @@ -3958,7 +3963,7 @@ ], "support": { "issues": "https://github.com/ramsey/uuid/issues", - "source": "https://github.com/ramsey/uuid/tree/4.7.5" + "source": "https://github.com/ramsey/uuid/tree/4.7.6" }, "funding": [ { @@ -3970,7 +3975,7 @@ "type": "tidelift" } ], - "time": "2023-11-08T05:53:05+00:00" + "time": "2024-04-27T21:32:50+00:00" }, { "name": "spatie/image-optimizer", @@ -4158,16 +4163,16 @@ }, { "name": "symfony/cache", - "version": "v7.0.6", + "version": "v7.0.7", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "2d0d3f92c74c445410d05374908b03e0a1131e2b" + "reference": "48e3508338987d63b0114a00c208c4cbb76e5303" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/2d0d3f92c74c445410d05374908b03e0a1131e2b", - "reference": "2d0d3f92c74c445410d05374908b03e0a1131e2b", + "url": "https://api.github.com/repos/symfony/cache/zipball/48e3508338987d63b0114a00c208c4cbb76e5303", + "reference": "48e3508338987d63b0114a00c208c4cbb76e5303", "shasum": "" }, "require": { @@ -4234,7 +4239,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v7.0.6" + "source": "https://github.com/symfony/cache/tree/v7.0.7" }, "funding": [ { @@ -4250,7 +4255,7 @@ "type": "tidelift" } ], - "time": "2024-03-27T19:55:25+00:00" + "time": "2024-04-18T09:29:19+00:00" }, { "name": "symfony/cache-contracts", @@ -4330,16 +4335,16 @@ }, { "name": "symfony/clock", - "version": "v7.0.5", + "version": "v7.0.7", "source": { "type": "git", "url": "https://github.com/symfony/clock.git", - "reference": "8b9d08887353d627d5f6c3bf3373b398b49051c2" + "reference": "2008671acb4a30b01c453de193cf9c80549ebda6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/clock/zipball/8b9d08887353d627d5f6c3bf3373b398b49051c2", - "reference": "8b9d08887353d627d5f6c3bf3373b398b49051c2", + "url": "https://api.github.com/repos/symfony/clock/zipball/2008671acb4a30b01c453de193cf9c80549ebda6", + "reference": "2008671acb4a30b01c453de193cf9c80549ebda6", "shasum": "" }, "require": { @@ -4384,7 +4389,7 @@ "time" ], "support": { - "source": "https://github.com/symfony/clock/tree/v7.0.5" + "source": "https://github.com/symfony/clock/tree/v7.0.7" }, "funding": [ { @@ -4400,20 +4405,20 @@ "type": "tidelift" } ], - "time": "2024-03-02T12:46:12+00:00" + "time": "2024-04-18T09:29:19+00:00" }, { "name": "symfony/console", - "version": "v7.0.6", + "version": "v7.0.7", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "fde915cd8e7eb99b3d531d3d5c09531429c3f9e5" + "reference": "c981e0e9380ce9f146416bde3150c79197ce9986" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/fde915cd8e7eb99b3d531d3d5c09531429c3f9e5", - "reference": "fde915cd8e7eb99b3d531d3d5c09531429c3f9e5", + "url": "https://api.github.com/repos/symfony/console/zipball/c981e0e9380ce9f146416bde3150c79197ce9986", + "reference": "c981e0e9380ce9f146416bde3150c79197ce9986", "shasum": "" }, "require": { @@ -4477,7 +4482,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.0.6" + "source": "https://github.com/symfony/console/tree/v7.0.7" }, "funding": [ { @@ -4493,20 +4498,20 @@ "type": "tidelift" } ], - "time": "2024-04-01T11:04:53+00:00" + "time": "2024-04-18T09:29:19+00:00" }, { "name": "symfony/css-selector", - "version": "v7.0.3", + "version": "v7.0.7", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "ec60a4edf94e63b0556b6a0888548bb400a3a3be" + "reference": "b08a4ad89e84b29cec285b7b1f781a7ae51cf4bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/ec60a4edf94e63b0556b6a0888548bb400a3a3be", - "reference": "ec60a4edf94e63b0556b6a0888548bb400a3a3be", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/b08a4ad89e84b29cec285b7b1f781a7ae51cf4bc", + "reference": "b08a4ad89e84b29cec285b7b1f781a7ae51cf4bc", "shasum": "" }, "require": { @@ -4542,7 +4547,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v7.0.3" + "source": "https://github.com/symfony/css-selector/tree/v7.0.7" }, "funding": [ { @@ -4558,7 +4563,7 @@ "type": "tidelift" } ], - "time": "2024-01-23T15:02:46+00:00" + "time": "2024-04-18T09:29:19+00:00" }, { "name": "symfony/deprecation-contracts", @@ -4629,16 +4634,16 @@ }, { "name": "symfony/error-handler", - "version": "v7.0.6", + "version": "v7.0.7", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "46a4cc138f799886d4bd70477c55c699d3e9dfc8" + "reference": "cf97429887e40480c847bfeb6c3991e1e2c086ab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/46a4cc138f799886d4bd70477c55c699d3e9dfc8", - "reference": "46a4cc138f799886d4bd70477c55c699d3e9dfc8", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/cf97429887e40480c847bfeb6c3991e1e2c086ab", + "reference": "cf97429887e40480c847bfeb6c3991e1e2c086ab", "shasum": "" }, "require": { @@ -4684,7 +4689,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/v7.0.6" + "source": "https://github.com/symfony/error-handler/tree/v7.0.7" }, "funding": [ { @@ -4700,20 +4705,20 @@ "type": "tidelift" } ], - "time": "2024-03-19T11:57:22+00:00" + "time": "2024-04-18T09:29:19+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v7.0.3", + "version": "v7.0.7", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "834c28d533dd0636f910909d01b9ff45cc094b5e" + "reference": "db2a7fab994d67d92356bb39c367db115d9d30f9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/834c28d533dd0636f910909d01b9ff45cc094b5e", - "reference": "834c28d533dd0636f910909d01b9ff45cc094b5e", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/db2a7fab994d67d92356bb39c367db115d9d30f9", + "reference": "db2a7fab994d67d92356bb39c367db115d9d30f9", "shasum": "" }, "require": { @@ -4764,7 +4769,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/v7.0.3" + "source": "https://github.com/symfony/event-dispatcher/tree/v7.0.7" }, "funding": [ { @@ -4780,7 +4785,7 @@ "type": "tidelift" } ], - "time": "2024-01-23T15:02:46+00:00" + "time": "2024-04-18T09:29:19+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -4923,16 +4928,16 @@ }, { "name": "symfony/finder", - "version": "v7.0.0", + "version": "v7.0.7", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "6e5688d69f7cfc4ed4a511e96007e06c2d34ce56" + "reference": "4d58f0f4fe95a30d7b538d71197135483560b97c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/6e5688d69f7cfc4ed4a511e96007e06c2d34ce56", - "reference": "6e5688d69f7cfc4ed4a511e96007e06c2d34ce56", + "url": "https://api.github.com/repos/symfony/finder/zipball/4d58f0f4fe95a30d7b538d71197135483560b97c", + "reference": "4d58f0f4fe95a30d7b538d71197135483560b97c", "shasum": "" }, "require": { @@ -4967,7 +4972,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v7.0.0" + "source": "https://github.com/symfony/finder/tree/v7.0.7" }, "funding": [ { @@ -4983,20 +4988,20 @@ "type": "tidelift" } ], - "time": "2023-10-31T17:59:56+00:00" + "time": "2024-04-28T11:44:19+00:00" }, { "name": "symfony/http-foundation", - "version": "v7.0.6", + "version": "v7.0.7", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "8789625dcf36e5fbf753014678a1e090f1bc759c" + "reference": "0194e064b8bdc29381462f790bab04e1cac8fdc8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/8789625dcf36e5fbf753014678a1e090f1bc759c", - "reference": "8789625dcf36e5fbf753014678a1e090f1bc759c", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/0194e064b8bdc29381462f790bab04e1cac8fdc8", + "reference": "0194e064b8bdc29381462f790bab04e1cac8fdc8", "shasum": "" }, "require": { @@ -5044,7 +5049,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v7.0.6" + "source": "https://github.com/symfony/http-foundation/tree/v7.0.7" }, "funding": [ { @@ -5060,20 +5065,20 @@ "type": "tidelift" } ], - "time": "2024-03-19T11:46:48+00:00" + "time": "2024-04-18T09:29:19+00:00" }, { "name": "symfony/http-kernel", - "version": "v7.0.6", + "version": "v7.0.7", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "34c872391046d59af804af62d4573b829cfe4824" + "reference": "e07bb9bd86e7cd8ba2d3d9c618eec9d1bbe06d25" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/34c872391046d59af804af62d4573b829cfe4824", - "reference": "34c872391046d59af804af62d4573b829cfe4824", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/e07bb9bd86e7cd8ba2d3d9c618eec9d1bbe06d25", + "reference": "e07bb9bd86e7cd8ba2d3d9c618eec9d1bbe06d25", "shasum": "" }, "require": { @@ -5127,6 +5132,7 @@ "symfony/translation-contracts": "^2.5|^3", "symfony/uid": "^6.4|^7.0", "symfony/validator": "^6.4|^7.0", + "symfony/var-dumper": "^6.4|^7.0", "symfony/var-exporter": "^6.4|^7.0", "twig/twig": "^3.0.4" }, @@ -5156,7 +5162,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/v7.0.6" + "source": "https://github.com/symfony/http-kernel/tree/v7.0.7" }, "funding": [ { @@ -5172,20 +5178,20 @@ "type": "tidelift" } ], - "time": "2024-04-03T06:12:25+00:00" + "time": "2024-04-29T12:20:25+00:00" }, { "name": "symfony/mailer", - "version": "v7.0.6", + "version": "v7.0.7", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "eb0c3187c7ddfde12d8aa0e1fa5fb29e730a41e0" + "reference": "4ff41a7c7998a88cfdc31b5841ef64d9246fc56a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/eb0c3187c7ddfde12d8aa0e1fa5fb29e730a41e0", - "reference": "eb0c3187c7ddfde12d8aa0e1fa5fb29e730a41e0", + "url": "https://api.github.com/repos/symfony/mailer/zipball/4ff41a7c7998a88cfdc31b5841ef64d9246fc56a", + "reference": "4ff41a7c7998a88cfdc31b5841ef64d9246fc56a", "shasum": "" }, "require": { @@ -5236,7 +5242,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v7.0.6" + "source": "https://github.com/symfony/mailer/tree/v7.0.7" }, "funding": [ { @@ -5252,20 +5258,20 @@ "type": "tidelift" } ], - "time": "2024-03-28T09:20:36+00:00" + "time": "2024-04-18T09:29:19+00:00" }, { "name": "symfony/mime", - "version": "v7.0.6", + "version": "v7.0.7", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "99362408c9abdf8c7cadcf0529b6fc8b16f5ace2" + "reference": "3adbf110c306546f6f00337f421d2edca0e8d3c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/99362408c9abdf8c7cadcf0529b6fc8b16f5ace2", - "reference": "99362408c9abdf8c7cadcf0529b6fc8b16f5ace2", + "url": "https://api.github.com/repos/symfony/mime/zipball/3adbf110c306546f6f00337f421d2edca0e8d3c0", + "reference": "3adbf110c306546f6f00337f421d2edca0e8d3c0", "shasum": "" }, "require": { @@ -5320,7 +5326,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v7.0.6" + "source": "https://github.com/symfony/mime/tree/v7.0.7" }, "funding": [ { @@ -5336,7 +5342,7 @@ "type": "tidelift" } ], - "time": "2024-03-21T19:37:36+00:00" + "time": "2024-04-18T09:29:19+00:00" }, { "name": "symfony/polyfill-ctype", @@ -6051,16 +6057,16 @@ }, { "name": "symfony/process", - "version": "v7.0.4", + "version": "v7.0.7", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "0e7727191c3b71ebec6d529fa0e50a01ca5679e9" + "reference": "3839e56b94dd1dbd13235d27504e66baf23faba0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/0e7727191c3b71ebec6d529fa0e50a01ca5679e9", - "reference": "0e7727191c3b71ebec6d529fa0e50a01ca5679e9", + "url": "https://api.github.com/repos/symfony/process/zipball/3839e56b94dd1dbd13235d27504e66baf23faba0", + "reference": "3839e56b94dd1dbd13235d27504e66baf23faba0", "shasum": "" }, "require": { @@ -6092,7 +6098,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v7.0.4" + "source": "https://github.com/symfony/process/tree/v7.0.7" }, "funding": [ { @@ -6108,20 +6114,20 @@ "type": "tidelift" } ], - "time": "2024-02-22T20:27:20+00:00" + "time": "2024-04-18T09:29:19+00:00" }, { "name": "symfony/routing", - "version": "v7.0.6", + "version": "v7.0.7", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "cded64e5bbf9f31786f1055fcc76718fdd77519c" + "reference": "9f82bf7766ccc9c22ab7aeb9bebb98351483fa5b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/cded64e5bbf9f31786f1055fcc76718fdd77519c", - "reference": "cded64e5bbf9f31786f1055fcc76718fdd77519c", + "url": "https://api.github.com/repos/symfony/routing/zipball/9f82bf7766ccc9c22ab7aeb9bebb98351483fa5b", + "reference": "9f82bf7766ccc9c22ab7aeb9bebb98351483fa5b", "shasum": "" }, "require": { @@ -6173,7 +6179,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v7.0.6" + "source": "https://github.com/symfony/routing/tree/v7.0.7" }, "funding": [ { @@ -6189,7 +6195,7 @@ "type": "tidelift" } ], - "time": "2024-03-28T21:02:11+00:00" + "time": "2024-04-18T09:29:19+00:00" }, { "name": "symfony/service-contracts", @@ -6275,16 +6281,16 @@ }, { "name": "symfony/string", - "version": "v7.0.4", + "version": "v7.0.7", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "f5832521b998b0bec40bee688ad5de98d4cf111b" + "reference": "e405b5424dc2528e02e31ba26b83a79fd4eb8f63" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/f5832521b998b0bec40bee688ad5de98d4cf111b", - "reference": "f5832521b998b0bec40bee688ad5de98d4cf111b", + "url": "https://api.github.com/repos/symfony/string/zipball/e405b5424dc2528e02e31ba26b83a79fd4eb8f63", + "reference": "e405b5424dc2528e02e31ba26b83a79fd4eb8f63", "shasum": "" }, "require": { @@ -6341,7 +6347,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.0.4" + "source": "https://github.com/symfony/string/tree/v7.0.7" }, "funding": [ { @@ -6357,20 +6363,20 @@ "type": "tidelift" } ], - "time": "2024-02-01T13:17:36+00:00" + "time": "2024-04-18T09:29:19+00:00" }, { "name": "symfony/translation", - "version": "v7.0.4", + "version": "v7.0.7", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "5b75e872f7d135d7abb4613809fadc8d9f3d30a0" + "reference": "1515e03afaa93e6419aba5d5c9d209159317100b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/5b75e872f7d135d7abb4613809fadc8d9f3d30a0", - "reference": "5b75e872f7d135d7abb4613809fadc8d9f3d30a0", + "url": "https://api.github.com/repos/symfony/translation/zipball/1515e03afaa93e6419aba5d5c9d209159317100b", + "reference": "1515e03afaa93e6419aba5d5c9d209159317100b", "shasum": "" }, "require": { @@ -6435,7 +6441,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v7.0.4" + "source": "https://github.com/symfony/translation/tree/v7.0.7" }, "funding": [ { @@ -6451,7 +6457,7 @@ "type": "tidelift" } ], - "time": "2024-02-22T20:27:20+00:00" + "time": "2024-04-18T09:29:19+00:00" }, { "name": "symfony/translation-contracts", @@ -6533,16 +6539,16 @@ }, { "name": "symfony/uid", - "version": "v7.0.3", + "version": "v7.0.7", "source": { "type": "git", "url": "https://github.com/symfony/uid.git", - "reference": "87cedaf3fabd7b733859d4d77aa4ca598259054b" + "reference": "4f3a5d181999e25918586c8369de09e7814e7be2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/uid/zipball/87cedaf3fabd7b733859d4d77aa4ca598259054b", - "reference": "87cedaf3fabd7b733859d4d77aa4ca598259054b", + "url": "https://api.github.com/repos/symfony/uid/zipball/4f3a5d181999e25918586c8369de09e7814e7be2", + "reference": "4f3a5d181999e25918586c8369de09e7814e7be2", "shasum": "" }, "require": { @@ -6587,7 +6593,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/uid/tree/v7.0.3" + "source": "https://github.com/symfony/uid/tree/v7.0.7" }, "funding": [ { @@ -6603,20 +6609,20 @@ "type": "tidelift" } ], - "time": "2024-01-23T15:02:46+00:00" + "time": "2024-04-18T09:29:19+00:00" }, { "name": "symfony/var-dumper", - "version": "v7.0.6", + "version": "v7.0.7", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "66d13dc207d5dab6b4f4c2b5460efe1bea29dbfb" + "reference": "d1627b66fd87c8b4d90cabe5671c29d575690924" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/66d13dc207d5dab6b4f4c2b5460efe1bea29dbfb", - "reference": "66d13dc207d5dab6b4f4c2b5460efe1bea29dbfb", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/d1627b66fd87c8b4d90cabe5671c29d575690924", + "reference": "d1627b66fd87c8b4d90cabe5671c29d575690924", "shasum": "" }, "require": { @@ -6670,7 +6676,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v7.0.6" + "source": "https://github.com/symfony/var-dumper/tree/v7.0.7" }, "funding": [ { @@ -6686,20 +6692,20 @@ "type": "tidelift" } ], - "time": "2024-03-19T11:57:22+00:00" + "time": "2024-04-18T09:29:19+00:00" }, { "name": "symfony/var-exporter", - "version": "v7.0.6", + "version": "v7.0.7", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "c74c568d2a15a1d407cf40d61ea82bc2d521e27b" + "reference": "cdecc0022e40e90340ba1a59a3d5ccf069777078" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/c74c568d2a15a1d407cf40d61ea82bc2d521e27b", - "reference": "c74c568d2a15a1d407cf40d61ea82bc2d521e27b", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/cdecc0022e40e90340ba1a59a3d5ccf069777078", + "reference": "cdecc0022e40e90340ba1a59a3d5ccf069777078", "shasum": "" }, "require": { @@ -6746,7 +6752,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v7.0.6" + "source": "https://github.com/symfony/var-exporter/tree/v7.0.7" }, "funding": [ { @@ -6762,7 +6768,7 @@ "type": "tidelift" } ], - "time": "2024-03-20T21:25:22+00:00" + "time": "2024-04-18T09:29:19+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", @@ -7559,16 +7565,16 @@ }, { "name": "laravel/pint", - "version": "v1.15.1", + "version": "v1.15.2", "source": { "type": "git", "url": "https://github.com/laravel/pint.git", - "reference": "5f288b5e79938cc72f5c298d384e639de87507c6" + "reference": "2c9f8004899815f3f0ee3cb28ef7281e2b589134" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/pint/zipball/5f288b5e79938cc72f5c298d384e639de87507c6", - "reference": "5f288b5e79938cc72f5c298d384e639de87507c6", + "url": "https://api.github.com/repos/laravel/pint/zipball/2c9f8004899815f3f0ee3cb28ef7281e2b589134", + "reference": "2c9f8004899815f3f0ee3cb28ef7281e2b589134", "shasum": "" }, "require": { @@ -7579,13 +7585,13 @@ "php": "^8.1.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^3.52.1", - "illuminate/view": "^10.48.4", - "larastan/larastan": "^2.9.2", + "friendsofphp/php-cs-fixer": "^3.54.0", + "illuminate/view": "^10.48.8", + "larastan/larastan": "^2.9.5", "laravel-zero/framework": "^10.3.0", "mockery/mockery": "^1.6.11", "nunomaduro/termwind": "^1.15.1", - "pestphp/pest": "^2.34.5" + "pestphp/pest": "^2.34.7" }, "bin": [ "builds/pint" @@ -7621,7 +7627,7 @@ "issues": "https://github.com/laravel/pint/issues", "source": "https://github.com/laravel/pint" }, - "time": "2024-04-02T14:28:47+00:00" + "time": "2024-04-23T15:42:34+00:00" }, { "name": "laravel/sail", @@ -8526,16 +8532,16 @@ }, { "name": "phpunit/phpunit", - "version": "11.1.2", + "version": "11.1.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "51e342a0bc987e0ea8418105d0711f08ae116de3" + "reference": "d475be032238173ca3b0a516f5cc291d174708ae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/51e342a0bc987e0ea8418105d0711f08ae116de3", - "reference": "51e342a0bc987e0ea8418105d0711f08ae116de3", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/d475be032238173ca3b0a516f5cc291d174708ae", + "reference": "d475be032238173ca3b0a516f5cc291d174708ae", "shasum": "" }, "require": { @@ -8606,7 +8612,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/11.1.2" + "source": "https://github.com/sebastianbergmann/phpunit/tree/11.1.3" }, "funding": [ { @@ -8622,7 +8628,7 @@ "type": "tidelift" } ], - "time": "2024-04-14T07:13:56+00:00" + "time": "2024-04-24T06:34:25+00:00" }, { "name": "sebastian/cli-parser", @@ -9549,16 +9555,16 @@ }, { "name": "spatie/backtrace", - "version": "1.5.3", + "version": "1.6.1", "source": { "type": "git", "url": "https://github.com/spatie/backtrace.git", - "reference": "483f76a82964a0431aa836b6ed0edde0c248e3ab" + "reference": "8373b9d51638292e3bfd736a9c19a654111b4a23" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/483f76a82964a0431aa836b6ed0edde0c248e3ab", - "reference": "483f76a82964a0431aa836b6ed0edde0c248e3ab", + "url": "https://api.github.com/repos/spatie/backtrace/zipball/8373b9d51638292e3bfd736a9c19a654111b4a23", + "reference": "8373b9d51638292e3bfd736a9c19a654111b4a23", "shasum": "" }, "require": { @@ -9566,6 +9572,7 @@ }, "require-dev": { "ext-json": "*", + "laravel/serializable-closure": "^1.3", "phpunit/phpunit": "^9.3", "spatie/phpunit-snapshot-assertions": "^4.2", "symfony/var-dumper": "^5.1" @@ -9595,7 +9602,7 @@ "spatie" ], "support": { - "source": "https://github.com/spatie/backtrace/tree/1.5.3" + "source": "https://github.com/spatie/backtrace/tree/1.6.1" }, "funding": [ { @@ -9607,7 +9614,7 @@ "type": "other" } ], - "time": "2023-06-28T12:59:17+00:00" + "time": "2024-04-24T13:22:11+00:00" }, { "name": "spatie/flare-client-php", @@ -9680,16 +9687,16 @@ }, { "name": "spatie/ignition", - "version": "1.13.2", + "version": "1.14.0", "source": { "type": "git", "url": "https://github.com/spatie/ignition.git", - "reference": "952798e239d9969e4e694b124c2cc222798dbb28" + "reference": "80385994caed328f6f9c9952926932e65b9b774c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/952798e239d9969e4e694b124c2cc222798dbb28", - "reference": "952798e239d9969e4e694b124c2cc222798dbb28", + "url": "https://api.github.com/repos/spatie/ignition/zipball/80385994caed328f6f9c9952926932e65b9b774c", + "reference": "80385994caed328f6f9c9952926932e65b9b774c", "shasum": "" }, "require": { @@ -9759,20 +9766,20 @@ "type": "github" } ], - "time": "2024-04-16T08:49:17+00:00" + "time": "2024-04-26T08:45:51+00:00" }, { "name": "spatie/laravel-ignition", - "version": "2.5.2", + "version": "2.6.0", "source": { "type": "git", "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "c93fcadcc4629775c839ac9a90916f07a660266f" + "reference": "e2f8f3724371f093f9461dcd7f8c1a1bd157c27e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/c93fcadcc4629775c839ac9a90916f07a660266f", - "reference": "c93fcadcc4629775c839ac9a90916f07a660266f", + "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/e2f8f3724371f093f9461dcd7f8c1a1bd157c27e", + "reference": "e2f8f3724371f093f9461dcd7f8c1a1bd157c27e", "shasum": "" }, "require": { @@ -9782,7 +9789,7 @@ "illuminate/support": "^10.0|^11.0", "php": "^8.1", "spatie/flare-client-php": "^1.3.5", - "spatie/ignition": "^1.13.2", + "spatie/ignition": "^1.14", "symfony/console": "^6.2.3|^7.0", "symfony/var-dumper": "^6.2.3|^7.0" }, @@ -9790,11 +9797,11 @@ "livewire/livewire": "^2.11|^3.3.5", "mockery/mockery": "^1.5.1", "openai-php/client": "^0.8.1", - "orchestra/testbench": "^8.0|^9.0", - "pestphp/pest": "^2.30", - "phpstan/extension-installer": "^1.2", + "orchestra/testbench": "8.22.3|^9.0", + "pestphp/pest": "^2.34", + "phpstan/extension-installer": "^1.3.1", "phpstan/phpstan-deprecation-rules": "^1.1.1", - "phpstan/phpstan-phpunit": "^1.3.3", + "phpstan/phpstan-phpunit": "^1.3.16", "vlucas/phpdotenv": "^5.5" }, "suggest": { @@ -9851,20 +9858,20 @@ "type": "github" } ], - "time": "2024-04-16T08:57:16+00:00" + "time": "2024-04-29T14:55:54+00:00" }, { "name": "symfony/yaml", - "version": "v7.0.3", + "version": "v7.0.7", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "2d4fca631c00700597e9442a0b2451ce234513d3" + "reference": "0d3916ae69ea28b59d94b60c4f2b50f4e25adb5c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/2d4fca631c00700597e9442a0b2451ce234513d3", - "reference": "2d4fca631c00700597e9442a0b2451ce234513d3", + "url": "https://api.github.com/repos/symfony/yaml/zipball/0d3916ae69ea28b59d94b60c4f2b50f4e25adb5c", + "reference": "0d3916ae69ea28b59d94b60c4f2b50f4e25adb5c", "shasum": "" }, "require": { @@ -9906,7 +9913,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v7.0.3" + "source": "https://github.com/symfony/yaml/tree/v7.0.7" }, "funding": [ { @@ -9922,7 +9929,7 @@ "type": "tidelift" } ], - "time": "2024-01-23T15:02:46+00:00" + "time": "2024-04-28T11:44:19+00:00" }, { "name": "theseer/tokenizer", @@ -9983,7 +9990,8 @@ "platform": { "php": "8.2.*|8.3.*", "ext-fileinfo": "*", - "ext-sodium": "*" + "ext-sodium": "*", + "ext-imagick": "*" }, "platform-dev": [], "plugin-api-version": "2.6.0" diff --git a/tests/Unit/BinaryAvailabilityTest.php b/tests/Unit/BinaryAvailabilityTest.php new file mode 100644 index 00000000..bff8f4fa --- /dev/null +++ b/tests/Unit/BinaryAvailabilityTest.php @@ -0,0 +1,43 @@ +exitCode(); + + $this->assertEquals(0, $exitCode, sprintf('%s is not installed', $binaryName)); + } + + #[Test] + public function ensureConfiguredImageOptimizersAreInstalled() + { + $optimizers = array_keys(config('image-optimizer.optimizers')); + + foreach ($optimizers as $optimizer) { + $binaryName = app($optimizer)->binaryName(); + + $this->assertBinaryExists($binaryName); + } + } + + #[Test] + public function ensureImagemagickIsInstalled() + { + $this->assertBinaryExists('convert'); + } + + #[Test] + public function ensureFfmpegIsInstalled() + { + $this->assertBinaryExists(FFMpeg::create()->getFFMpegDriver()->getName()); + } +} diff --git a/tests/Unit/ImageTest.php b/tests/Unit/ImageTest.php index 10372d33..a573fde2 100644 --- a/tests/Unit/ImageTest.php +++ b/tests/Unit/ImageTest.php @@ -67,7 +67,6 @@ protected function uploadImage(string $uploadToken): TestResponse ]); } - #[Test] #[Depends('ensureImageUploadSlotCanBeReserved')] public function ensureImageCanBeUploaded(string $uploadToken) From b56df8bda148f908f04ac5a356d3680de88fd110 Mon Sep 17 00:00:00 2001 From: mszulik <69617961+mszulik@users.noreply.github.com> Date: Mon, 3 Jun 2024 09:27:32 +0200 Subject: [PATCH 13/15] enforce morph aliases (#51) --- app/Providers/AppServiceProvider.php | 6 +- composer.lock | 214 +++++++++--------- ..._model_in_personal_access_tokens_table.php | 13 ++ 3 files changed, 126 insertions(+), 107 deletions(-) create mode 100644 database/migrations/2024_05_07_060911_use_morph_alias_for_users_model_in_personal_access_tokens_table.php diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 20d4a338..5d20d62e 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -2,6 +2,8 @@ namespace App\Providers; +use App\Models\User; +use Illuminate\Database\Eloquent\Relations\Relation; use Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider @@ -23,6 +25,8 @@ public function register(): void */ public function boot(): void { - // + Relation::enforceMorphMap([ + 'user' => User::class, + ]); } } diff --git a/composer.lock b/composer.lock index f4f0c6aa..dbd3aa44 100644 --- a/composer.lock +++ b/composer.lock @@ -162,16 +162,16 @@ }, { "name": "aws/aws-sdk-php", - "version": "3.305.5", + "version": "3.306.7", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "aff7806278b7ce7777ced1afd7534c72329e9240" + "reference": "bc30df54badd9d2af8d291cd0665ade6eb509598" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/aff7806278b7ce7777ced1afd7534c72329e9240", - "reference": "aff7806278b7ce7777ced1afd7534c72329e9240", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/bc30df54badd9d2af8d291cd0665ade6eb509598", + "reference": "bc30df54badd9d2af8d291cd0665ade6eb509598", "shasum": "" }, "require": { @@ -251,9 +251,9 @@ "support": { "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80", "issues": "https://github.com/aws/aws-sdk-php/issues", - "source": "https://github.com/aws/aws-sdk-php/tree/3.305.5" + "source": "https://github.com/aws/aws-sdk-php/tree/3.306.7" }, - "time": "2024-04-29T18:07:32+00:00" + "time": "2024-05-15T18:04:12+00:00" }, { "name": "brick/math", @@ -1507,16 +1507,16 @@ }, { "name": "laravel/framework", - "version": "v11.5.0", + "version": "v11.7.0", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "e3c24268f1404805e15099b9f035fe310cb30753" + "reference": "e5ac72f513f635f208024aa76b8a04efc1b47f93" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/e3c24268f1404805e15099b9f035fe310cb30753", - "reference": "e3c24268f1404805e15099b9f035fe310cb30753", + "url": "https://api.github.com/repos/laravel/framework/zipball/e5ac72f513f635f208024aa76b8a04efc1b47f93", + "reference": "e5ac72f513f635f208024aa76b8a04efc1b47f93", "shasum": "" }, "require": { @@ -1619,7 +1619,7 @@ "league/flysystem-sftp-v3": "^3.0", "mockery/mockery": "^1.6", "nyholm/psr7": "^1.2", - "orchestra/testbench-core": "^9.0.6", + "orchestra/testbench-core": "^9.0.15", "pda/pheanstalk": "^5.0", "phpstan/phpstan": "^1.4.7", "phpunit/phpunit": "^10.5|^11.0", @@ -1708,20 +1708,20 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2024-04-23T15:11:31+00:00" + "time": "2024-05-07T13:41:51+00:00" }, { "name": "laravel/prompts", - "version": "v0.1.20", + "version": "v0.1.21", "source": { "type": "git", "url": "https://github.com/laravel/prompts.git", - "reference": "bf9a360c484976692de0f3792f30066f4f4b34a2" + "reference": "23ea808e8a145653e0ab29e30d4385e49f40a920" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/prompts/zipball/bf9a360c484976692de0f3792f30066f4f4b34a2", - "reference": "bf9a360c484976692de0f3792f30066f4f4b34a2", + "url": "https://api.github.com/repos/laravel/prompts/zipball/23ea808e8a145653e0ab29e30d4385e49f40a920", + "reference": "23ea808e8a145653e0ab29e30d4385e49f40a920", "shasum": "" }, "require": { @@ -1761,11 +1761,12 @@ "license": [ "MIT" ], + "description": "Add beautiful and user-friendly forms to your command-line applications.", "support": { "issues": "https://github.com/laravel/prompts/issues", - "source": "https://github.com/laravel/prompts/tree/v0.1.20" + "source": "https://github.com/laravel/prompts/tree/v0.1.21" }, - "time": "2024-04-18T00:45:25+00:00" + "time": "2024-04-30T12:46:16+00:00" }, { "name": "laravel/sanctum", @@ -2584,16 +2585,16 @@ }, { "name": "nesbot/carbon", - "version": "3.3.0", + "version": "3.3.1", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "7219739c4e01d4680c980545821733b6ed8ee880" + "reference": "8ff64b92c1b1ec84fcde9f8bb9ff2ca34cb8a77a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/7219739c4e01d4680c980545821733b6ed8ee880", - "reference": "7219739c4e01d4680c980545821733b6ed8ee880", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/8ff64b92c1b1ec84fcde9f8bb9ff2ca34cb8a77a", + "reference": "8ff64b92c1b1ec84fcde9f8bb9ff2ca34cb8a77a", "shasum": "" }, "require": { @@ -2686,7 +2687,7 @@ "type": "tidelift" } ], - "time": "2024-04-18T16:35:06+00:00" + "time": "2024-05-01T06:54:22+00:00" }, { "name": "nette/schema", @@ -3466,20 +3467,20 @@ }, { "name": "psr/http-factory", - "version": "1.0.2", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/php-fig/http-factory.git", - "reference": "e616d01114759c4c489f93b099585439f795fe35" + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35", - "reference": "e616d01114759c4c489f93b099585439f795fe35", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a", + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a", "shasum": "" }, "require": { - "php": ">=7.0.0", + "php": ">=7.1", "psr/http-message": "^1.0 || ^2.0" }, "type": "library", @@ -3503,7 +3504,7 @@ "homepage": "https://www.php-fig.org/" } ], - "description": "Common interfaces for PSR-7 HTTP message factories", + "description": "PSR-17: Common interfaces for PSR-7 HTTP message factories", "keywords": [ "factory", "http", @@ -3515,9 +3516,9 @@ "response" ], "support": { - "source": "https://github.com/php-fig/http-factory/tree/1.0.2" + "source": "https://github.com/php-fig/http-factory" }, - "time": "2023-04-10T20:10:41+00:00" + "time": "2024-04-15T12:06:14+00:00" }, { "name": "psr/http-message", @@ -3979,16 +3980,16 @@ }, { "name": "spatie/image-optimizer", - "version": "1.7.2", + "version": "1.7.5", "source": { "type": "git", "url": "https://github.com/spatie/image-optimizer.git", - "reference": "62f7463483d1bd975f6f06025d89d42a29608fe1" + "reference": "43aff6725cd87bb78ccd8532633cfa8bdc962505" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/image-optimizer/zipball/62f7463483d1bd975f6f06025d89d42a29608fe1", - "reference": "62f7463483d1bd975f6f06025d89d42a29608fe1", + "url": "https://api.github.com/repos/spatie/image-optimizer/zipball/43aff6725cd87bb78ccd8532633cfa8bdc962505", + "reference": "43aff6725cd87bb78ccd8532633cfa8bdc962505", "shasum": "" }, "require": { @@ -4028,9 +4029,9 @@ ], "support": { "issues": "https://github.com/spatie/image-optimizer/issues", - "source": "https://github.com/spatie/image-optimizer/tree/1.7.2" + "source": "https://github.com/spatie/image-optimizer/tree/1.7.5" }, - "time": "2023-11-03T10:08:02+00:00" + "time": "2024-05-16T08:48:33+00:00" }, { "name": "spatie/laravel-image-optimizer", @@ -4259,16 +4260,16 @@ }, { "name": "symfony/cache-contracts", - "version": "v3.4.2", + "version": "v3.5.0", "source": { "type": "git", "url": "https://github.com/symfony/cache-contracts.git", - "reference": "2c9db6509a1b21dad229606897639d3284f54b2a" + "reference": "df6a1a44c890faded49a5fca33c2d5c5fd3c2197" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/2c9db6509a1b21dad229606897639d3284f54b2a", - "reference": "2c9db6509a1b21dad229606897639d3284f54b2a", + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/df6a1a44c890faded49a5fca33c2d5c5fd3c2197", + "reference": "df6a1a44c890faded49a5fca33c2d5c5fd3c2197", "shasum": "" }, "require": { @@ -4278,7 +4279,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.4-dev" + "dev-main": "3.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -4315,7 +4316,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/cache-contracts/tree/v3.4.2" + "source": "https://github.com/symfony/cache-contracts/tree/v3.5.0" }, "funding": [ { @@ -4331,7 +4332,7 @@ "type": "tidelift" } ], - "time": "2024-01-23T14:51:35+00:00" + "time": "2024-04-18T09:32:20+00:00" }, { "name": "symfony/clock", @@ -4567,16 +4568,16 @@ }, { "name": "symfony/deprecation-contracts", - "version": "v3.4.0", + "version": "v3.5.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf" + "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf", - "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", + "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", "shasum": "" }, "require": { @@ -4585,7 +4586,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.4-dev" + "dev-main": "3.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -4614,7 +4615,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.4.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.0" }, "funding": [ { @@ -4630,7 +4631,7 @@ "type": "tidelift" } ], - "time": "2023-05-23T14:45:45+00:00" + "time": "2024-04-18T09:32:20+00:00" }, { "name": "symfony/error-handler", @@ -4789,16 +4790,16 @@ }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.4.2", + "version": "v3.5.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "4e64b49bf370ade88e567de29465762e316e4224" + "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/4e64b49bf370ade88e567de29465762e316e4224", - "reference": "4e64b49bf370ade88e567de29465762e316e4224", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/8f93aec25d41b72493c6ddff14e916177c9efc50", + "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50", "shasum": "" }, "require": { @@ -4808,7 +4809,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.4-dev" + "dev-main": "3.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -4845,7 +4846,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.4.2" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.5.0" }, "funding": [ { @@ -4861,7 +4862,7 @@ "type": "tidelift" } ], - "time": "2024-01-23T14:51:35+00:00" + "time": "2024-04-18T09:32:20+00:00" }, { "name": "symfony/filesystem", @@ -6199,21 +6200,22 @@ }, { "name": "symfony/service-contracts", - "version": "v3.4.2", + "version": "v3.5.0", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "11bbf19a0fb7b36345861e85c5768844c552906e" + "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/11bbf19a0fb7b36345861e85c5768844c552906e", - "reference": "11bbf19a0fb7b36345861e85c5768844c552906e", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", + "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", "shasum": "" }, "require": { "php": ">=8.1", - "psr/container": "^1.1|^2.0" + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3" }, "conflict": { "ext-psr": "<1.1|>=2" @@ -6221,7 +6223,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.4-dev" + "dev-main": "3.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -6261,7 +6263,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.4.2" + "source": "https://github.com/symfony/service-contracts/tree/v3.5.0" }, "funding": [ { @@ -6277,7 +6279,7 @@ "type": "tidelift" } ], - "time": "2023-12-19T21:51:00+00:00" + "time": "2024-04-18T09:32:20+00:00" }, { "name": "symfony/string", @@ -6461,16 +6463,16 @@ }, { "name": "symfony/translation-contracts", - "version": "v3.4.2", + "version": "v3.5.0", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "43810bdb2ddb5400e5c5e778e27b210a0ca83b6b" + "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/43810bdb2ddb5400e5c5e778e27b210a0ca83b6b", - "reference": "43810bdb2ddb5400e5c5e778e27b210a0ca83b6b", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/b9d2189887bb6b2e0367a9fc7136c5239ab9b05a", + "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a", "shasum": "" }, "require": { @@ -6479,7 +6481,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.4-dev" + "dev-main": "3.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -6519,7 +6521,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.4.2" + "source": "https://github.com/symfony/translation-contracts/tree/v3.5.0" }, "funding": [ { @@ -6535,7 +6537,7 @@ "type": "tidelift" } ], - "time": "2024-01-23T14:51:35+00:00" + "time": "2024-04-18T09:32:20+00:00" }, { "name": "symfony/uid", @@ -7565,16 +7567,16 @@ }, { "name": "laravel/pint", - "version": "v1.15.2", + "version": "v1.15.3", "source": { "type": "git", "url": "https://github.com/laravel/pint.git", - "reference": "2c9f8004899815f3f0ee3cb28ef7281e2b589134" + "reference": "3600b5d17aff52f6100ea4921849deacbbeb8656" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/pint/zipball/2c9f8004899815f3f0ee3cb28ef7281e2b589134", - "reference": "2c9f8004899815f3f0ee3cb28ef7281e2b589134", + "url": "https://api.github.com/repos/laravel/pint/zipball/3600b5d17aff52f6100ea4921849deacbbeb8656", + "reference": "3600b5d17aff52f6100ea4921849deacbbeb8656", "shasum": "" }, "require": { @@ -7627,7 +7629,7 @@ "issues": "https://github.com/laravel/pint/issues", "source": "https://github.com/laravel/pint" }, - "time": "2024-04-23T15:42:34+00:00" + "time": "2024-04-30T15:02:26+00:00" }, { "name": "laravel/sail", @@ -7694,16 +7696,16 @@ }, { "name": "mockery/mockery", - "version": "1.6.11", + "version": "1.6.12", "source": { "type": "git", "url": "https://github.com/mockery/mockery.git", - "reference": "81a161d0b135df89951abd52296adf97deb0723d" + "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/81a161d0b135df89951abd52296adf97deb0723d", - "reference": "81a161d0b135df89951abd52296adf97deb0723d", + "url": "https://api.github.com/repos/mockery/mockery/zipball/1f4efdd7d3beafe9807b08156dfcb176d18f1699", + "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699", "shasum": "" }, "require": { @@ -7773,7 +7775,7 @@ "security": "https://github.com/mockery/mockery/security/advisories", "source": "https://github.com/mockery/mockery" }, - "time": "2024-03-21T18:34:15+00:00" + "time": "2024-05-16T03:13:13+00:00" }, { "name": "myclabs/deep-copy", @@ -8162,16 +8164,16 @@ }, { "name": "phpstan/phpdoc-parser", - "version": "1.28.0", + "version": "1.29.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "cd06d6b1a1b3c75b0b83f97577869fd85a3cd4fb" + "reference": "536889f2b340489d328f5ffb7b02bb6b183ddedc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/cd06d6b1a1b3c75b0b83f97577869fd85a3cd4fb", - "reference": "cd06d6b1a1b3c75b0b83f97577869fd85a3cd4fb", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/536889f2b340489d328f5ffb7b02bb6b183ddedc", + "reference": "536889f2b340489d328f5ffb7b02bb6b183ddedc", "shasum": "" }, "require": { @@ -8203,9 +8205,9 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.28.0" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.29.0" }, - "time": "2024-04-03T18:51:33+00:00" + "time": "2024-05-06T12:04:23+00:00" }, { "name": "phpunit/php-code-coverage", @@ -9618,16 +9620,16 @@ }, { "name": "spatie/flare-client-php", - "version": "1.4.4", + "version": "1.5.1", "source": { "type": "git", "url": "https://github.com/spatie/flare-client-php.git", - "reference": "17082e780752d346c2db12ef5d6bee8e835e399c" + "reference": "e27977d534eefe04c154c6fd8460217024054c05" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/17082e780752d346c2db12ef5d6bee8e835e399c", - "reference": "17082e780752d346c2db12ef5d6bee8e835e399c", + "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/e27977d534eefe04c154c6fd8460217024054c05", + "reference": "e27977d534eefe04c154c6fd8460217024054c05", "shasum": "" }, "require": { @@ -9675,7 +9677,7 @@ ], "support": { "issues": "https://github.com/spatie/flare-client-php/issues", - "source": "https://github.com/spatie/flare-client-php/tree/1.4.4" + "source": "https://github.com/spatie/flare-client-php/tree/1.5.1" }, "funding": [ { @@ -9683,20 +9685,20 @@ "type": "github" } ], - "time": "2024-01-31T14:18:45+00:00" + "time": "2024-05-03T15:43:14+00:00" }, { "name": "spatie/ignition", - "version": "1.14.0", + "version": "1.14.1", "source": { "type": "git", "url": "https://github.com/spatie/ignition.git", - "reference": "80385994caed328f6f9c9952926932e65b9b774c" + "reference": "c23cc018c5f423d2f413b99f84655fceb6549811" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/80385994caed328f6f9c9952926932e65b9b774c", - "reference": "80385994caed328f6f9c9952926932e65b9b774c", + "url": "https://api.github.com/repos/spatie/ignition/zipball/c23cc018c5f423d2f413b99f84655fceb6549811", + "reference": "c23cc018c5f423d2f413b99f84655fceb6549811", "shasum": "" }, "require": { @@ -9766,20 +9768,20 @@ "type": "github" } ], - "time": "2024-04-26T08:45:51+00:00" + "time": "2024-05-03T15:56:16+00:00" }, { "name": "spatie/laravel-ignition", - "version": "2.6.0", + "version": "2.7.0", "source": { "type": "git", "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "e2f8f3724371f093f9461dcd7f8c1a1bd157c27e" + "reference": "f52124d50122611e8a40f628cef5c19ff6cc5b57" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/e2f8f3724371f093f9461dcd7f8c1a1bd157c27e", - "reference": "e2f8f3724371f093f9461dcd7f8c1a1bd157c27e", + "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/f52124d50122611e8a40f628cef5c19ff6cc5b57", + "reference": "f52124d50122611e8a40f628cef5c19ff6cc5b57", "shasum": "" }, "require": { @@ -9788,7 +9790,7 @@ "ext-mbstring": "*", "illuminate/support": "^10.0|^11.0", "php": "^8.1", - "spatie/flare-client-php": "^1.3.5", + "spatie/flare-client-php": "^1.5", "spatie/ignition": "^1.14", "symfony/console": "^6.2.3|^7.0", "symfony/var-dumper": "^6.2.3|^7.0" @@ -9858,7 +9860,7 @@ "type": "github" } ], - "time": "2024-04-29T14:55:54+00:00" + "time": "2024-05-02T13:42:49+00:00" }, { "name": "symfony/yaml", diff --git a/database/migrations/2024_05_07_060911_use_morph_alias_for_users_model_in_personal_access_tokens_table.php b/database/migrations/2024_05_07_060911_use_morph_alias_for_users_model_in_personal_access_tokens_table.php new file mode 100644 index 00000000..17e62e0a --- /dev/null +++ b/database/migrations/2024_05_07_060911_use_morph_alias_for_users_model_in_personal_access_tokens_table.php @@ -0,0 +1,13 @@ +where('tokenable_type', 'App\Models\User')->update(['tokenable_type' => 'user']); + } +}; From 7825afda78873fd07c43013601010403443dbf54 Mon Sep 17 00:00:00 2001 From: mszulik <69617961+mszulik@users.noreply.github.com> Date: Fri, 7 Jun 2024 12:31:19 +0200 Subject: [PATCH 14/15] add amigor to pullpreview (#53) --- .env.amigor | 78 ++++++++++++++++++++++++++ .github/workflows/pullpreview.yml | 28 ++++++++- .gitignore | 2 +- README.md | 5 ++ database/seeders/PullpreviewSeeder.php | 2 +- docker-compose.pullpreview.yml | 71 +++++++++++++++++++++-- 6 files changed, 179 insertions(+), 7 deletions(-) create mode 100644 .env.amigor diff --git a/.env.amigor b/.env.amigor new file mode 100644 index 00000000..a40f2111 --- /dev/null +++ b/.env.amigor @@ -0,0 +1,78 @@ +APP_NAME="Transmorpher Amigor" +APP_ENV=production +APP_KEY=base64:rE8A8OivXEW/wCiRS5D0SMTr3LO/NA2KSZPSsBzPZ2I= +APP_DEBUG=false +APP_TIMEZONE=UTC +APP_URL=https://transmorpher.test + +# Docker +APP_SERVICE=app +DOCKER_CONTAINER_NAME=transmorpher-amigor +#DOCKER_PHP_VERSION=8.3 +# Use different DB ports if you need to expose more than one DB container +#FORWARD_DB_PORT=3306 + +# Transmorpher +TRANSMORPHER_AUTH_TOKEN=setThisViaTransmorpherPullPreviewWorkflow +TRANSMORPHER_S2S_API_BASE_URL=http://transmorpher/api +TRANSMORPHER_WEB_API_BASE_URL=setThisInTransmorpherPullPreviewDockerCompose +TRANSMORPHER_WEB_DELIVERY_BASE_URL=setThisInTransmorpherPullPreviewDockerCompose +TRANSMORPHER_WEB_PLACEHOLDER_URL=https://placehold.co/400 + +APP_LOCALE=en +APP_FALLBACK_LOCALE=en +APP_FAKER_LOCALE=en_US + +APP_MAINTENANCE_DRIVER=file +APP_MAINTENANCE_STORE=database + +BCRYPT_ROUNDS=12 + +LOG_CHANNEL=stack +LOG_STACK=single +LOG_DEPRECATIONS_CHANNEL=null +LOG_LEVEL=debug + +DB_CONNECTION=mysql +DB_HOST=amigor-mysql-1 +DB_PORT=3306 +DB_DATABASE=amigor +DB_USERNAME=amigor +DB_PASSWORD=password + +SESSION_DRIVER=database +SESSION_LIFETIME=120 +SESSION_ENCRYPT=false +SESSION_PATH=/ +SESSION_DOMAIN=null + +BROADCAST_CONNECTION=log +FILESYSTEM_DISK=local +QUEUE_CONNECTION=database + +CACHE_STORE=database +CACHE_PREFIX= + +MEMCACHED_HOST=127.0.0.1 + +REDIS_CLIENT=phpredis +REDIS_HOST=127.0.0.1 +REDIS_PASSWORD=null +REDIS_PORT=6379 + +MAIL_MAILER=log +MAIL_HOST=127.0.0.1 +MAIL_PORT=2525 +MAIL_USERNAME=null +MAIL_PASSWORD=null +MAIL_ENCRYPTION=null +MAIL_FROM_ADDRESS="hello@example.com" +MAIL_FROM_NAME="${APP_NAME}" + +AWS_ACCESS_KEY_ID= +AWS_SECRET_ACCESS_KEY= +AWS_DEFAULT_REGION=us-east-1 +AWS_BUCKET= +AWS_USE_PATH_STYLE_ENDPOINT=false + +VITE_APP_NAME="${APP_NAME}" diff --git a/.github/workflows/pullpreview.yml b/.github/workflows/pullpreview.yml index e690677e..d6c55eab 100644 --- a/.github/workflows/pullpreview.yml +++ b/.github/workflows/pullpreview.yml @@ -5,7 +5,31 @@ on: types: [ labeled, unlabeled, synchronize, closed, reopened ] jobs: + prepare-amigor-env: + name: Prepare Amigor .env + runs-on: ubuntu-latest + + steps: + - name: Checkout Transmorpher repo + # https://github.com/actions/checkout + uses: actions/checkout@v4 + with: + sparse-checkout: | + .env.amigor + # https://git-scm.com/docs/git-sparse-checkout#_internalscone_mode_handling + sparse-checkout-cone-mode: false + - run: echo "TRANSMORPHER_AUTH_TOKEN=\"${{ secrets.PULLPREVIEW_TRANSMORPHER_AUTH_TOKEN }}\"" >> .env.amigor + + - name: Upload Amigor .env file + # https://github.com/actions/upload-artifact + uses: actions/upload-artifact@v4 + with: + name: amigor-env + path: | + .env.amigor + deploy-staging-environment: + needs: prepare-amigor-env permissions: contents: read # to fetch code (actions/checkout) deployments: write # to delete deployments @@ -17,7 +41,8 @@ jobs: uses: cybex-gmbh/github-workflows/.github/workflows/pullpreview.yml@main with: PULLPREVIEW_ADMINS: jheusinger, gael-connan-cybex, holyfabi, lupinitylabs, mszulik - INSTANCE_TYPE: medium + INSTANCE_TYPE: large + ARTIFACT_NAME: amigor-env secrets: ENV_VARS: | APP_KEY="${{ secrets.PULLPREVIEW_APP_KEY }}" @@ -25,3 +50,4 @@ jobs: TRANSMORPHER_AUTH_TOKEN_HASH="${{ secrets.PULLPREVIEW_TRANSMORPHER_AUTH_TOKEN_HASH }}" PULLPREVIEW_AWS_ACCESS_KEY_ID: ${{ secrets.PULLPREVIEW_AWS_ACCESS_KEY_ID }} PULLPREVIEW_AWS_SECRET_ACCESS_KEY: ${{ secrets.PULLPREVIEW_AWS_SECRET_ACCESS_KEY }} + PULLPREVIEW_BASIC_AUTH: ${{ secrets.PULLPREVIEW_BASIC_AUTH }} diff --git a/.gitignore b/.gitignore index abb962bb..151b2ba0 100644 --- a/.gitignore +++ b/.gitignore @@ -4,7 +4,7 @@ /public/hot /public/storage /public/videos -/storage/*.key +/storage /vendor .env .env.backup diff --git a/README.md b/README.md index 6e3c92b9..fc85eb62 100644 --- a/README.md +++ b/README.md @@ -487,8 +487,13 @@ App-specific GitHub Secrets: - PULLPREVIEW_APP_KEY - PULLPREVIEW_TRANSMORPHER_SIGNING_KEYPAIR +- PULLPREVIEW_TRANSMORPHER_AUTH_TOKEN - PULLPREVIEW_TRANSMORPHER_AUTH_TOKEN_HASH +#### Companion App + +A demonstration app, which implements the client package, is booted with PullPreview and available at the PullPreview root URL. The Transmorpher media server runs under `/transmorpherServer`. + #### Auth Token Hash The environment is seeded with a user with an auth token. To get access, you will have to locally create a token and use this token and its hash. diff --git a/database/seeders/PullpreviewSeeder.php b/database/seeders/PullpreviewSeeder.php index aff5f5ae..a32236e2 100644 --- a/database/seeders/PullpreviewSeeder.php +++ b/database/seeders/PullpreviewSeeder.php @@ -15,7 +15,7 @@ class PullpreviewSeeder extends Seeder */ public function run(): void { - Artisan::call('create:user pullpreview pullpreview@example.com http://pullpreview.test/transmorpher/notifications'); + Artisan::call('create:user pullpreview pullpreview@example.com http://amigor/transmorpher/notifications'); DB::table('personal_access_tokens')->where('id', 1)->update(['token' => env('TRANSMORPHER_AUTH_TOKEN_HASH')]); } diff --git a/docker-compose.pullpreview.yml b/docker-compose.pullpreview.yml index 2f286761..4ff2daff 100644 --- a/docker-compose.pullpreview.yml +++ b/docker-compose.pullpreview.yml @@ -16,13 +16,17 @@ services: PULLPREVIEW: true PULLPREVIEW_FIRST_RUN: ${PULLPREVIEW_FIRST_RUN} VIDEO_TRANSCODING_WORKERS_AMOUNT: ${VIDEO_TRANSCODING_WORKERS_AMOUNT:-1} + APP_URL: ${PULLPREVIEW_URL}/transmorpherServer volumes: - 'app-storage:/var/www/html/storage' labels: - 'traefik.enable=true' - - 'traefik.http.routers.${APP_CONTAINER_NAME:-transmorpher}.rule=Host(`${PULLPREVIEW_PUBLIC_DNS}`)' + - 'traefik.http.routers.${APP_CONTAINER_NAME:-transmorpher}.rule=Host(`${PULLPREVIEW_PUBLIC_DNS}`) && PathPrefix(`/transmorpherServer`)' + - 'traefik.http.routers.${APP_CONTAINER_NAME:-transmorpher}.middlewares=strip-path-prefix@docker' + - 'traefik.http.routers.${APP_CONTAINER_NAME:-transmorpher}.priority=2' - 'traefik.http.routers.${APP_CONTAINER_NAME:-transmorpher}.tls=true' - 'traefik.http.routers.${APP_CONTAINER_NAME:-transmorpher}.tls.certresolver=production' + - "traefik.http.middlewares.strip-path-prefix.stripprefix.prefixes=/transmorpherServer" mysql: image: 'mysql/mysql-server:8.0' container_name: ${MYSQL_CONTAINER_NAME:-transmorpher-mysql-1} @@ -43,16 +47,68 @@ services: test: [ "CMD", "mysqladmin", "ping", "-p${DB_PASSWORD}" ] retries: 3 timeout: 5s + amigor: + image: 'cybexwebdev/transmorpher-amigor' + container_name: ${AMIGOR_CONTAINER_NAME:-amigor} + networks: + - traefik + - internal + depends_on: + mysql-amigor: + condition: service_healthy + traefik: + condition: service_started + environment: + PULLPREVIEW: true + PULLPREVIEW_FIRST_RUN: ${PULLPREVIEW_FIRST_RUN} + TRANSMORPHER_WEB_DELIVERY_BASE_URL: https://${PULLPREVIEW_PUBLIC_DNS}/transmorpherServer + TRANSMORPHER_WEB_API_BASE_URL: https://${PULLPREVIEW_PUBLIC_DNS}/transmorpherServer/api + APP_URL: ${PULLPREVIEW_URL} + volumes: + - 'amigor-storage:/var/www/html/storage' + - '.env.amigor:/var/www/html/.env' + labels: + - 'traefik.enable=true' + - 'traefik.http.routers.${AMIGOR_CONTAINER_NAME:-amigor}.rule=Host(`${PULLPREVIEW_PUBLIC_DNS}`)' + - 'traefik.http.routers.${AMIGOR_CONTAINER_NAME:-amigor}.tls=true' + - 'traefik.http.routers.${AMIGOR_CONTAINER_NAME:-amigor}.tls.certresolver=production' + - 'traefik.http.routers.${AMIGOR_CONTAINER_NAME:-amigor}.priority=1' + - 'traefik.http.routers.amigor-root.rule=Host(`${PULLPREVIEW_PUBLIC_DNS}`) && Path(`/`)' + - 'traefik.http.routers.amigor-root.middlewares=htpasswd' + - 'traefik.http.routers.amigor-root.tls=true' + - 'traefik.http.routers.amigor-root.tls.certresolver=production' + - 'traefik.http.routers.amigor-root.priority=3' + - 'traefik.http.middlewares.htpasswd.basicauth.usersfile=/.htpasswd' + mysql-amigor: + image: 'mysql/mysql-server:8.0' + container_name: ${AMIGOR_MYSQL_CONTAINER_NAME:-amigor-mysql-1} + environment: + MYSQL_ROOT_PASSWORD: 'password' + MYSQL_ROOT_HOST: "%" + MYSQL_DATABASE: 'amigor' + MYSQL_USER: 'amigor' + MYSQL_PASSWORD: 'password' + MYSQL_ALLOW_EMPTY_PASSWORD: 1 + volumes: + - 'mysql-amigor:/var/lib/mysql' + networks: + - internal + healthcheck: + test: [ "CMD", "mysqladmin", "ping", "-ppassword" ] + retries: 3 + timeout: 5s traefik: - image: traefik:v2.10 + image: traefik:mimolette container_name: ${TRAEFIK_CONTAINER_NAME:-transmorpher-traefik} ports: - '80:80' - '443:443' environment: TRAEFIK_GLOBAL_SENDANONYMOUSUSAGE: false + TRAEFIK_LOG: true + TRAEFIK_LOG_FILEPATH: '/logs/traefik.log' + TRAEFIK_LOG_LEVEL: DEBUG TRAEFIK_API: false - TRAEFIK_API_DASHBOARD: false TRAEFIK_CERTIFICATESRESOLVERS_PRODUCTION: true TRAEFIK_CERTIFICATESRESOLVERS_PRODUCTION_ACME_EMAIL: 'cloud@cybex-online.com' TRAEFIK_CERTIFICATESRESOLVERS_PRODUCTION_ACME_CASERVER: 'https://acme-v02.api.letsencrypt.org/directory' @@ -71,10 +127,13 @@ services: TRAEFIK_PROVIDERS_DOCKER_NETWORK: traefik volumes: - /var/run/docker.sock:/var/run/docker.sock:ro - - ./letsencrypt:/letsencrypt + - ./storage/letsencrypt:/letsencrypt + - ./storage/logs:/logs + - ./.htpasswd:/.htpasswd:ro networks: - traefik + networks: internal: internal: true @@ -84,5 +143,9 @@ networks: volumes: mysql: driver: local + mysql-amigor: + driver: local app-storage: driver: local + amigor-storage: + driver: local From 1f45e86e449562c576eb331d4738a22cbd21b873 Mon Sep 17 00:00:00 2001 From: holyfabi Date: Fri, 7 Jun 2024 14:57:22 +0200 Subject: [PATCH 15/15] prevent cookie conflicts when running the server and client on the same domain, by removing the session from delivery routes. (#52) --- app/Http/Kernel.php | 68 ---- .../Middleware/RedirectIfAuthenticated.php | 3 +- app/Providers/AppServiceProvider.php | 31 ++ app/Providers/RouteServiceProvider.php | 66 ---- bootstrap/app.php | 12 +- config/app.php | 2 - postman.json | 321 +++++------------- routes/delivery.php | 17 + routes/web.php | 7 - 9 files changed, 139 insertions(+), 388 deletions(-) delete mode 100644 app/Http/Kernel.php delete mode 100644 app/Providers/RouteServiceProvider.php create mode 100644 routes/delivery.php diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php deleted file mode 100644 index 1a84dbad..00000000 --- a/app/Http/Kernel.php +++ /dev/null @@ -1,68 +0,0 @@ - - */ - protected $middleware = [ - // \App\Http\Middleware\TrustHosts::class, - \App\Http\Middleware\TrustProxies::class, - \Illuminate\Http\Middleware\HandleCors::class, - \App\Http\Middleware\PreventRequestsDuringMaintenance::class, - \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, - \App\Http\Middleware\TrimStrings::class, - \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, - ]; - - /** - * The application's route middleware groups. - * - * @var array> - */ - protected $middlewareGroups = [ - 'web' => [ - \App\Http\Middleware\EncryptCookies::class, - \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, - \Illuminate\Session\Middleware\StartSession::class, - \Illuminate\View\Middleware\ShareErrorsFromSession::class, - \App\Http\Middleware\VerifyCsrfToken::class, - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - - 'api' => [ - // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, - // \Illuminate\Routing\Middleware\ThrottleRequests::class.':api', - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - ]; - - /** - * The application's middleware aliases. - * - * Aliases may be used instead of class names to conveniently assign middleware to routes and groups. - * - * @var array - */ - protected $middlewareAliases = [ - 'auth' => \App\Http\Middleware\Authenticate::class, - 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, - 'auth.session' => \Illuminate\Session\Middleware\AuthenticateSession::class, - 'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class, - 'can' => \Illuminate\Auth\Middleware\Authorize::class, - 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, - 'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class, - 'precognitive' => \Illuminate\Foundation\Http\Middleware\HandlePrecognitiveRequests::class, - 'signed' => \App\Http\Middleware\ValidateSignature::class, - 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, - 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, - ]; -} diff --git a/app/Http/Middleware/RedirectIfAuthenticated.php b/app/Http/Middleware/RedirectIfAuthenticated.php index 7eb9cddf..114a63d9 100644 --- a/app/Http/Middleware/RedirectIfAuthenticated.php +++ b/app/Http/Middleware/RedirectIfAuthenticated.php @@ -2,7 +2,6 @@ namespace App\Http\Middleware; -use App\Providers\RouteServiceProvider; use Closure; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; @@ -25,7 +24,7 @@ public function handle(Request $request, Closure $next, string ...$guards): Resp foreach ($guards as $guard) { if (Auth::guard($guard)->check()) { - return redirect(RouteServiceProvider::HOME); + return redirect()->intended('/home'); } } diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 5d20d62e..387172f3 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -2,7 +2,14 @@ namespace App\Providers; +use App\Models\Media; use App\Models\User; +use App\Models\Version; +use Illuminate\Cache\RateLimiting\Limit; +use Illuminate\Http\Request; +use Illuminate\Support\Facades\Auth; +use Illuminate\Support\Facades\RateLimiter; +use Illuminate\Support\Facades\Route; use Illuminate\Database\Eloquent\Relations\Relation; use Illuminate\Support\ServiceProvider; @@ -28,5 +35,29 @@ public function boot(): void Relation::enforceMorphMap([ 'user' => User::class, ]); + + $this->configureRateLimiting(); + + Route::bind('media', function (string $identifier): Media { + $user = Auth::user() ?? User::whereName(Route::getCurrentRoute()->parameter('user'))->firstOrFail(); + return $user->Media()->whereIdentifier($identifier)->firstOrFail(); + }); + + Route::bind('version', function (int $versionNumber): Version { + $media = Route::getCurrentRoute()->parameter('media'); + return $media->Versions()->whereNumber($versionNumber)->firstOrFail(); + }); + } + + /** + * Configure the rate limiters for the application. + * + * @return void + */ + protected function configureRateLimiting(): void + { + RateLimiter::for('api', function (Request $request) { + return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); + }); } } diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php deleted file mode 100644 index a0d102a6..00000000 --- a/app/Providers/RouteServiceProvider.php +++ /dev/null @@ -1,66 +0,0 @@ -configureRateLimiting(); - - $this->routes(function () { - Route::middleware('api') - ->prefix('api') - ->group(base_path('routes/api.php')); - - Route::middleware('web') - ->group(base_path('routes/web.php')); - }); - - Route::bind('media', function (string $identifier): Media { - $user = Auth::user() ?? User::whereName(Route::getCurrentRoute()->parameter('user'))->firstOrFail(); - return $user->Media()->whereIdentifier($identifier)->firstOrFail(); - }); - - Route::bind('version', function (int $versionNumber): Version { - $media = Route::getCurrentRoute()->parameter('media'); - return $media->Versions()->whereNumber($versionNumber)->firstOrFail(); - }); - } - - /** - * Configure the rate limiters for the application. - * - * @return void - */ - protected function configureRateLimiting(): void - { - RateLimiter::for('api', function (Request $request) { - return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); - }); - } -} diff --git a/bootstrap/app.php b/bootstrap/app.php index 7b162dac..5af37259 100644 --- a/bootstrap/app.php +++ b/bootstrap/app.php @@ -3,12 +3,20 @@ use Illuminate\Foundation\Application; use Illuminate\Foundation\Configuration\Exceptions; use Illuminate\Foundation\Configuration\Middleware; +use Illuminate\Routing\Middleware\SubstituteBindings; +use Illuminate\Support\Facades\Route; return Application::configure(basePath: dirname(__DIR__)) ->withRouting( - web: __DIR__.'/../routes/web.php', - commands: __DIR__.'/../routes/console.php', + // Using base_path() instead of __DIR__ because it's more uniform. + web: base_path('routes/web.php'), + api: base_path('routes/api.php'), + commands: base_path('routes/console.php'), health: '/up', + then: function () { + Route::middleware(SubstituteBindings::class) + ->group(base_path('routes/delivery.php')); + }, ) ->withMiddleware(function (Middleware $middleware) { // diff --git a/config/app.php b/config/app.php index 3fe8993e..717ef2ba 100644 --- a/config/app.php +++ b/config/app.php @@ -174,8 +174,6 @@ App\Providers\AuthServiceProvider::class, // App\Providers\BroadcastServiceProvider::class, App\Providers\EventServiceProvider::class, - App\Providers\RouteServiceProvider::class, - App\Providers\CdnHelperServiceProvider::class, App\Providers\CloudStorageServiceProvider::class, App\Providers\SqsFifoServiceProvider::class, diff --git a/postman.json b/postman.json index 699e53e0..ce9d5fa0 100644 --- a/postman.json +++ b/postman.json @@ -1,10 +1,10 @@ { "info": { - "_postman_id": "23ebb632-4931-4f81-ad4e-2f6d70a9395a", + "_postman_id": "a73e372b-901f-4c27-a088-4816a3e1497b", "name": "transmorpher server", - "description": "Configuration:\n\n- create a user on Transmorpher: `php artisan create:user postman postman@example.com`\n- use the provided auth token and adjust the \"authToken\" variable\n- if you're using a domain different from \"transmorpher.test\", you will have to adjust the \"domain\" variable\n \n\nIf you want to use the collection with the already defined files, you will have to go to Settings > General > Allow reading files outside working directory, and enable the option.", + "description": "Configuration:\n\n- create a user on Transmorpher: `php artisan create:user postman postman@example.com`\n \n- use the provided auth token and adjust the \"authToken\" variable\n \n- if you're using a domain different from \"transmorpher.test\", you will have to adjust the \"domain\" variable\n \n\nIf you want to use the collection with the already defined files, you will have to go to Settings > General > Allow reading files outside working directory, and enable the option.", "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", - "_exporter_id": "24082093" + "_exporter_id": "35989477" }, "item": [ { @@ -51,8 +51,7 @@ "header": [ { "key": "Accept", - "value": "application/json", - "type": "text" + "value": "application/json" } ], "body": { @@ -121,8 +120,7 @@ "header": [ { "key": "Accept", - "value": "application/json", - "type": "text" + "value": "application/json" } ], "body": { @@ -189,8 +187,7 @@ "header": [ { "key": "Accept", - "value": "application/json", - "type": "text" + "value": "application/json" } ], "body": { @@ -254,8 +251,7 @@ "header": [ { "key": "Accept", - "value": "application/json", - "type": "text" + "value": "application/json" } ], "body": { @@ -322,8 +318,7 @@ "header": [ { "key": "Accept", - "value": "application/json", - "type": "text" + "value": "application/json" } ], "body": { @@ -393,8 +388,7 @@ "header": [ { "key": "Accept", - "value": "application/json", - "type": "text" + "value": "application/json" } ], "body": { @@ -492,8 +486,7 @@ "header": [ { "key": "Accept", - "value": "application/json", - "type": "text" + "value": "application/json" } ], "body": { @@ -569,8 +562,7 @@ "header": [ { "key": "Accept", - "value": "application/json", - "type": "text" + "value": "application/json" } ], "body": { @@ -651,8 +643,7 @@ "header": [ { "key": "Accept", - "value": "application/json", - "type": "text" + "value": "application/json" } ], "body": { @@ -735,8 +726,7 @@ "header": [ { "key": "Accept", - "value": "application/json", - "type": "text" + "value": "application/json" } ], "body": { @@ -816,8 +806,7 @@ "header": [ { "key": "Accept", - "value": "application/json", - "type": "text" + "value": "application/json" } ], "body": { @@ -861,7 +850,8 @@ "});\r", "" ], - "type": "text/javascript" + "type": "text/javascript", + "packages": {} } } ], @@ -872,13 +862,14 @@ "method": "GET", "header": [], "url": { - "raw": "http://transmorpher.test/{{user}}/{{imageIdentifier}}/q-1+f-jpg", + "raw": "http://transmorpher.test/images/{{user}}/{{imageIdentifier}}/q-1+f-jpg", "protocol": "http", "host": [ "transmorpher", "test" ], "path": [ + "images", "{{user}}", "{{imageIdentifier}}", "q-1+f-jpg" @@ -900,7 +891,8 @@ "});\r", "" ], - "type": "text/javascript" + "type": "text/javascript", + "packages": {} } } ], @@ -911,13 +903,14 @@ "method": "GET", "header": [], "url": { - "raw": "http://transmorpher.test/{{user}}/{{imageIdentifier}}/q-1+f-png", + "raw": "http://transmorpher.test/images/{{user}}/{{imageIdentifier}}/q-1+f-png", "protocol": "http", "host": [ "transmorpher", "test" ], "path": [ + "images", "{{user}}", "{{imageIdentifier}}", "q-1+f-png" @@ -939,7 +932,8 @@ "});\r", "" ], - "type": "text/javascript" + "type": "text/javascript", + "packages": {} } } ], @@ -950,13 +944,14 @@ "method": "GET", "header": [], "url": { - "raw": "http://transmorpher.test/{{user}}/{{imageIdentifier}}/q-1+f-webp", + "raw": "http://transmorpher.test/images/{{user}}/{{imageIdentifier}}/q-1+f-webp", "protocol": "http", "host": [ "transmorpher", "test" ], "path": [ + "images", "{{user}}", "{{imageIdentifier}}", "q-1+f-webp" @@ -978,7 +973,8 @@ "});\r", "" ], - "type": "text/javascript" + "type": "text/javascript", + "packages": {} } } ], @@ -989,13 +985,14 @@ "method": "GET", "header": [], "url": { - "raw": "http://transmorpher.test/{{user}}/{{imageIdentifier}}", + "raw": "http://transmorpher.test/images/{{user}}/{{imageIdentifier}}", "protocol": "http", "host": [ "transmorpher", "test" ], "path": [ + "images", "{{user}}", "{{imageIdentifier}}" ] @@ -1048,8 +1045,7 @@ "header": [ { "key": "Accept", - "value": "application/json", - "type": "text" + "value": "application/json" } ], "url": { @@ -1098,8 +1094,7 @@ "header": [ { "key": "Accept", - "value": "application/json", - "type": "text" + "value": "application/json" } ], "url": { @@ -1175,8 +1170,7 @@ "header": [ { "key": "Accept", - "value": "application/json", - "type": "text" + "value": "application/json" } ], "url": { @@ -1233,8 +1227,7 @@ "header": [ { "key": "Accept", - "value": "application/json", - "type": "text" + "value": "application/json" } ], "url": { @@ -1292,8 +1285,7 @@ "header": [ { "key": "Accept", - "value": "application/json", - "type": "text" + "value": "application/json" } ], "url": { @@ -1319,7 +1311,8 @@ "exec": [ "" ], - "type": "text/javascript" + "type": "text/javascript", + "packages": {} } }, { @@ -1335,7 +1328,8 @@ "} */\r", "" ], - "type": "text/javascript" + "type": "text/javascript", + "packages": {} } } ], @@ -1344,18 +1338,18 @@ "header": [ { "key": "Accept", - "value": "application/json", - "type": "text" + "value": "application/json" } ], "url": { - "raw": "http://transmorpher.test/{{user}}/{{imageIdentifier}}/w-abc", + "raw": "http://transmorpher.test/images/{{user}}/{{imageIdentifier}}/w-abc", "protocol": "http", "host": [ "transmorpher", "test" ], "path": [ + "images", "{{user}}", "{{imageIdentifier}}", "w-abc" @@ -1373,7 +1367,8 @@ "exec": [ "" ], - "type": "text/javascript" + "type": "text/javascript", + "packages": {} } }, { @@ -1388,7 +1383,8 @@ " \"message\": \"The provided value bba for the HEIGHT parameter is not valid.\"\r", "} */" ], - "type": "text/javascript" + "type": "text/javascript", + "packages": {} } } ], @@ -1397,18 +1393,18 @@ "header": [ { "key": "Accept", - "value": "application/json", - "type": "text" + "value": "application/json" } ], "url": { - "raw": "http://transmorpher.test/{{user}}/{{imageIdentifier}}/h-bba", + "raw": "http://transmorpher.test/images/{{user}}/{{imageIdentifier}}/h-bba", "protocol": "http", "host": [ "transmorpher", "test" ], "path": [ + "images", "{{user}}", "{{imageIdentifier}}", "h-bba" @@ -1426,7 +1422,8 @@ "exec": [ "" ], - "type": "text/javascript" + "type": "text/javascript", + "packages": {} } }, { @@ -1441,7 +1438,8 @@ " \"message\": \"The provided value 123 for the QUALITY parameter is not valid.\"\r", "} */" ], - "type": "text/javascript" + "type": "text/javascript", + "packages": {} } } ], @@ -1450,18 +1448,18 @@ "header": [ { "key": "Accept", - "value": "application/json", - "type": "text" + "value": "application/json" } ], "url": { - "raw": "http://transmorpher.test/{{user}}/{{imageIdentifier}}/q-123", + "raw": "http://transmorpher.test/images/{{user}}/{{imageIdentifier}}/q-123", "protocol": "http", "host": [ "transmorpher", "test" ], "path": [ + "images", "{{user}}", "{{imageIdentifier}}", "q-123" @@ -1479,7 +1477,8 @@ "exec": [ "" ], - "type": "text/javascript" + "type": "text/javascript", + "packages": {} } }, { @@ -1494,7 +1493,8 @@ " \"message\": \"The provided value pgn for the FORMAT parameter is not valid.\"\r", "} */" ], - "type": "text/javascript" + "type": "text/javascript", + "packages": {} } } ], @@ -1503,18 +1503,18 @@ "header": [ { "key": "Accept", - "value": "application/json", - "type": "text" + "value": "application/json" } ], "url": { - "raw": "http://transmorpher.test/{{user}}/{{imageIdentifier}}/f-pgn", + "raw": "http://transmorpher.test/images/{{user}}/{{imageIdentifier}}/f-pgn", "protocol": "http", "host": [ "transmorpher", "test" ], "path": [ + "images", "{{user}}", "{{imageIdentifier}}", "f-pgn" @@ -1587,8 +1587,7 @@ "header": [ { "key": "Accept", - "value": "application/json", - "type": "text" + "value": "application/json" } ], "body": { @@ -1691,8 +1690,7 @@ "header": [ { "key": "Accept", - "value": "application/json", - "type": "text" + "value": "application/json" } ], "body": { @@ -1763,8 +1761,7 @@ "header": [ { "key": "Accept", - "value": "application/json", - "type": "text" + "value": "application/json" } ], "body": { @@ -1847,8 +1844,7 @@ "header": [ { "key": "Accept", - "value": "application/json", - "type": "text" + "value": "application/json" } ], "body": { @@ -1966,8 +1962,7 @@ "header": [ { "key": "Accept", - "value": "application/json", - "type": "text" + "value": "application/json" } ], "body": { @@ -1998,151 +1993,6 @@ }, "response": [] }, - { - "name": "Reserve slot: No callback URL", - "event": [ - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript" - } - }, - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Unable to obtain video upload slot: Missing callback URL\", function () {\r", - " var jsonData = pm.response.json();\r", - " console.log(jsonData);\r", - " pm.expect(pm.response.json().errors).to.have.property(\"callback_url\");\r", - "});\r", - "/* {\r", - " \"message\": \"The callback url field is required.\",\r", - " \"errors\": {\r", - " \"callback_url\": [\r", - " \"The callback url field is required.\"\r", - " ]\r", - " }\r", - "} */\r", - "" - ], - "type": "text/javascript" - } - } - ], - "protocolProfileBehavior": { - "disabledSystemHeaders": {} - }, - "request": { - "method": "POST", - "header": [ - { - "key": "Accept", - "value": "application/json", - "type": "text" - } - ], - "body": { - "mode": "formdata", - "formdata": [ - { - "key": "identifier", - "value": "postmanUnusedVideo", - "type": "text" - } - ] - }, - "url": { - "raw": "{{baseUrl}}/video/reserveUploadSlot", - "host": [ - "{{baseUrl}}" - ], - "path": [ - "video", - "reserveUploadSlot" - ] - } - }, - "response": [] - }, - { - "name": "Reserve slot: Invalid callback URL", - "event": [ - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript" - } - }, - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Unable to obtain video upload slot: Invalid callback URL\", function () {\r", - " var jsonData = pm.response.json();\r", - " console.log(jsonData);\r", - " pm.expect(pm.response.json().errors).to.have.property(\"callback_url\");\r", - "});\r", - "/* {\r", - " \"message\": \"The callback url must be a valid URL.\",\r", - " \"errors\": {\r", - " \"callback_url\": [\r", - " \"The callback url must be a valid URL.\"\r", - " ]\r", - " }\r", - "} */\r", - "" - ], - "type": "text/javascript" - } - } - ], - "protocolProfileBehavior": { - "disabledSystemHeaders": {} - }, - "request": { - "method": "POST", - "header": [ - { - "key": "Accept", - "value": "application/json", - "type": "text" - } - ], - "body": { - "mode": "formdata", - "formdata": [ - { - "key": "identifier", - "value": "postmanUnusedVideo", - "type": "text" - }, - { - "key": "callback_url", - "value": "not_an_URL", - "type": "text" - } - ] - }, - "url": { - "raw": "{{baseUrl}}/video/reserveUploadSlot", - "host": [ - "{{baseUrl}}" - ], - "path": [ - "video", - "reserveUploadSlot" - ] - } - }, - "response": [] - }, { "name": "Reserve slot: Invalid identifier", "event": [ @@ -2186,8 +2036,7 @@ "header": [ { "key": "Accept", - "value": "application/json", - "type": "text" + "value": "application/json" } ], "body": { @@ -2259,8 +2108,7 @@ "header": [ { "key": "Accept", - "value": "application/json", - "type": "text" + "value": "application/json" } ], "body": { @@ -2328,8 +2176,7 @@ "header": [ { "key": "Accept", - "value": "application/json", - "type": "text" + "value": "application/json" } ], "body": { @@ -2396,8 +2243,7 @@ "header": [ { "key": "Accept", - "value": "application/json", - "type": "text" + "value": "application/json" } ], "body": { @@ -2467,8 +2313,7 @@ "header": [ { "key": "Accept", - "value": "application/json", - "type": "text" + "value": "application/json" } ], "body": { @@ -2567,8 +2412,7 @@ "header": [ { "key": "Accept", - "value": "application/json", - "type": "text" + "value": "application/json" } ], "body": { @@ -2643,8 +2487,7 @@ "header": [ { "key": "Accept", - "value": "application/json", - "type": "text" + "value": "application/json" } ], "body": { @@ -2747,8 +2590,7 @@ "header": [ { "key": "Accept", - "value": "application/json", - "type": "text" + "value": "application/json" } ], "body": { @@ -2819,8 +2661,7 @@ "header": [ { "key": "Accept", - "value": "application/json", - "type": "text" + "value": "application/json" } ], "body": { @@ -2903,8 +2744,7 @@ "header": [ { "key": "Accept", - "value": "application/json", - "type": "text" + "value": "application/json" } ], "body": { @@ -3000,8 +2840,7 @@ "header": [ { "key": "Accept", - "value": "application/json", - "type": "default" + "value": "application/json" } ], "url": { @@ -3050,7 +2889,7 @@ "variable": [ { "key": "authToken", - "value": "2|SSkfqSkNq3zmogcCeSipLxcjIpviqO7vawD3FsxH", + "value": "ONjT9Fnm512HOFoATgsF5hSNkTwcMtmcumxSV340da10aace", "type": "string" }, { diff --git a/routes/delivery.php b/routes/delivery.php new file mode 100644 index 00000000..e91ab845 --- /dev/null +++ b/routes/delivery.php @@ -0,0 +1,17 @@ +prefix()), [ImageController::class, 'get'])->name('getDerivative'); diff --git a/routes/web.php b/routes/web.php index 2c9c402b..a65ed873 100644 --- a/routes/web.php +++ b/routes/web.php @@ -1,9 +1,5 @@ prefix()), [ImageController::class, 'get'])->name('getDerivative');