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/.env.example b/.env.example index 110e0715..fd1f8214 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 @@ -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= @@ -53,6 +54,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/.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/docker.yml b/.github/workflows/docker.yml index 5ce24163..87802124 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -2,39 +2,13 @@ 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 + # 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 + secrets: inherit diff --git a/.github/workflows/pullpreview.yml b/.github/workflows/pullpreview.yml index 58b441d7..d6c55eab 100644 --- a/.github/workflows/pullpreview.yml +++ b/.github/workflows/pullpreview.yml @@ -1,40 +1,53 @@ name: PullPreview + on: pull_request: - types: [labeled, unlabeled, synchronize, closed, reopened] + types: [ labeled, unlabeled, synchronize, closed, reopened ] jobs: - deploy: + prepare-amigor-env: + name: Prepare Amigor .env runs-on: ubuntu-latest - timeout-minutes: 30 + + 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 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 + # 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: large + ARTIFACT_NAME: amigor-env + secrets: + ENV_VARS: | + 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 }} + PULLPREVIEW_BASIC_AUTH: ${{ secrets.PULLPREVIEW_BASIC_AUTH }} diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 7ba9a44d..f99ea360 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -3,62 +3,25 @@ name: Tests on: push: branches: - - master + - main - release/* pull_request: 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 + # 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 matrix: - php: [ 8.1, 8.2 ] - laravel: [ 9.* ] + 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@v3 - - - 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 - 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 + LINUX_PACKAGES: imagemagick jpegoptim optipng pngquant gifsicle webp ffmpeg diff --git a/.gitignore b/.gitignore index c3307f6a..151b2ba0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,10 @@ +/.phpunit.cache /node_modules /public/build /public/hot /public/storage /public/videos -/storage/*.key +/storage /vendor .env .env.backup diff --git a/.phpstorm.meta.php b/.phpstorm.meta.php index 1433b8ae..b46c7636 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, '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, @@ -55,18 +59,26 @@ '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\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, @@ -76,8 +88,10 @@ '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, '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 +110,22 @@ '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\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, '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\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, @@ -133,7 +151,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 +167,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, @@ -174,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, @@ -191,6 +207,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,21 +240,23 @@ '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, '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, @@ -257,18 +277,26 @@ '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\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, @@ -278,8 +306,10 @@ '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, '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 +328,22 @@ '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\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, '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\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, @@ -335,7 +369,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 +385,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, @@ -376,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, @@ -393,6 +425,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,21 +458,23 @@ '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, '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, @@ -459,18 +495,26 @@ '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\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, @@ -480,8 +524,10 @@ '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, '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 +546,22 @@ '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\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, '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\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, @@ -537,7 +587,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 +603,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, @@ -578,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, @@ -595,6 +643,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,21 +676,23 @@ '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, '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, @@ -661,18 +713,26 @@ '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\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, @@ -682,8 +742,10 @@ '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, '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 +764,22 @@ '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\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, '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\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, @@ -739,7 +805,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 +821,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, @@ -780,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, @@ -797,6 +861,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,21 +894,23 @@ '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, '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, @@ -863,18 +931,26 @@ '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\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, @@ -884,8 +960,10 @@ '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, '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 +982,22 @@ '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\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, '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\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, @@ -941,7 +1023,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 +1039,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, @@ -982,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, @@ -999,6 +1079,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,21 +1112,23 @@ '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, '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, @@ -1065,18 +1149,26 @@ '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\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, @@ -1086,8 +1178,10 @@ '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, '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 +1200,22 @@ '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\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, '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\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, @@ -1143,7 +1241,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 +1257,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, @@ -1184,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, @@ -1201,6 +1297,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,21 +1330,23 @@ '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, '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, @@ -1267,18 +1367,26 @@ '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\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, @@ -1288,8 +1396,10 @@ '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, '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 +1418,22 @@ '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\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, '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\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, @@ -1345,7 +1459,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 +1475,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, @@ -1386,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, @@ -1403,6 +1515,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,21 +1548,23 @@ '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, '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, @@ -1469,18 +1585,26 @@ '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\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, @@ -1490,8 +1614,10 @@ '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, '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 +1636,22 @@ '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\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, '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\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, @@ -1547,7 +1677,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 +1693,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, @@ -1588,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, @@ -1605,6 +1733,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,21 +1766,23 @@ '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, '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, @@ -1671,18 +1803,26 @@ '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\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, @@ -1692,8 +1832,10 @@ '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, '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 +1854,22 @@ '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\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, '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\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, @@ -1749,7 +1895,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 +1911,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, @@ -1790,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, @@ -1807,6 +1951,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,21 +1984,23 @@ '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, '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, @@ -1873,18 +2021,26 @@ '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\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, @@ -1894,8 +2050,10 @@ '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, '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 +2072,22 @@ '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\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, '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\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, @@ -1951,7 +2113,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 +2129,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, @@ -1992,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, @@ -2009,6 +2169,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,21 +2202,23 @@ '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, '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, @@ -2075,18 +2239,26 @@ '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\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, @@ -2096,8 +2268,10 @@ '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, '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 +2290,22 @@ '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\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, '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\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, @@ -2153,7 +2331,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 +2347,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, @@ -2194,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, @@ -2211,6 +2387,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/README.md b/README.md index a7f68720..fc85eb62 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,13 +50,19 @@ 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 ``` -### Required software +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,30 +85,84 @@ 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. +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 +#### 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: @@ -119,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 @@ -150,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 @@ -165,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 -``` - -The newly created keypair has to be written in the `.env` file: - -```dotenv -TRANSMORPHER_SIGNING_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 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 @@ -231,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: @@ -287,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. @@ -303,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 @@ -315,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: @@ -345,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: @@ -374,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 @@ -401,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 @@ -409,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: @@ -418,34 +444,67 @@ 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) -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_KEY -- TRANSMORPHER_SIGNING_KEYPAIR +App-specific GitHub Secrets: + +- PULLPREVIEW_APP_KEY +- PULLPREVIEW_TRANSMORPHER_SIGNING_KEYPAIR +- PULLPREVIEW_TRANSMORPHER_AUTH_TOKEN - PULLPREVIEW_TRANSMORPHER_AUTH_TOKEN_HASH -- PULLPREVIEW_AWS_ACCESS_KEY_ID -- PULLPREVIEW_AWS_SECRET_ACCESS_KEY + +#### 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. ```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 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). diff --git a/_ide_helper.php b/_ide_helper.php index 02837c7e..1c360ae7 100644 --- a/_ide_helper.php +++ b/_ide_helper.php @@ -1,10 +1,11 @@ version(); @@ -36,8 +54,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 +65,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 +77,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 +89,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 +99,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 +110,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 +121,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 +132,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 +143,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 +154,31 @@ 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); + } + /** + * 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. + * + * @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 +186,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 +208,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 +219,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 +230,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 +241,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 +249,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 +274,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 +285,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 +296,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 +309,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 +342,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 +353,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 +363,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 +373,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 +384,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 +394,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 +404,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 +415,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 +425,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,19 +456,28 @@ public static function runningUnitTests() * * @return bool * @static - */ - public static function hasDebugModeEnabled() + */ public static function hasDebugModeEnabled() { /** @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. * * @return void * @static - */ - public static function registerConfiguredProviders() + */ public static function registerConfiguredProviders() { /** @var \Illuminate\Foundation\Application $instance */ $instance->registerConfiguredProviders(); @@ -426,8 +489,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 +500,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 +511,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 +522,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 +532,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 +543,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 +555,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 +567,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 +578,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 +588,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 +598,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 +609,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 +620,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,19 +630,39 @@ 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); + } + /** + * 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. * * @return bool * @static - */ - public static function shouldSkipMiddleware() + */ public static function shouldSkipMiddleware() { /** @var \Illuminate\Foundation\Application $instance */ return $instance->shouldSkipMiddleware(); @@ -602,8 +672,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 +682,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 +692,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 +702,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 +712,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 +722,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 +732,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 +742,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 +753,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 +763,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 +773,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 +788,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 +799,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 +809,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 +819,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 +830,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 +840,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 +851,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 +862,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 +873,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 +884,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 +894,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 +904,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 +914,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 +925,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 +936,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 +947,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 +957,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 +967,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 +978,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 +989,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 +1006,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 +1017,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 +1028,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 +1039,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 +1053,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 +1064,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 +1076,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 +1088,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 +1101,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 +1114,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 +1126,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 +1138,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 +1150,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 +1162,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 +1175,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 +1187,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 +1199,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 +1210,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 +1223,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 +1235,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 +1248,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 +1260,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 +1274,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 +1285,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 +1298,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 +1312,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 +1325,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 +1337,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 +1349,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 +1361,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 +1371,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 +1382,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 +1393,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 +1404,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 +1414,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 +1424,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 +1434,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 +1444,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 +1454,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 +1465,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 +1477,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 +1488,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 +1500,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 +1512,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 +1522,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 +1531,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 \Illuminate\Foundation\Console\Kernel + * @static + */ public static function rerouteSymfonyCommandEvents() + { + /** @var \Illuminate\Foundation\Console\Kernel $instance */ + return $instance->rerouteSymfonyCommandEvents(); + } /** * Run the console application. * @@ -1557,10 +1559,9 @@ class Artisan { * @param \Symfony\Component\Console\Output\OutputInterface|null $output * @return int * @static - */ - public static function handle($input, $output = null) - { //Method inherited from \Illuminate\Foundation\Console\Kernel - /** @var \App\Console\Kernel $instance */ + */ public static function handle($input, $output = null) + { + /** @var \Illuminate\Foundation\Console\Kernel $instance */ return $instance->handle($input, $output); } /** @@ -1570,10 +1571,9 @@ public static function handle($input, $output = null) * @param int $status * @return void * @static - */ - public static function terminate($input, $status) - { //Method inherited from \Illuminate\Foundation\Console\Kernel - /** @var \App\Console\Kernel $instance */ + */ public static function terminate($input, $status) + { + /** @var \Illuminate\Foundation\Console\Kernel $instance */ $instance->terminate($input, $status); } /** @@ -1583,10 +1583,9 @@ public static function terminate($input, $status) * @param callable $handler * @return void * @static - */ - public static function whenCommandLifecycleIsLongerThan($threshold, $handler) - { //Method inherited from \Illuminate\Foundation\Console\Kernel - /** @var \App\Console\Kernel $instance */ + */ public static function whenCommandLifecycleIsLongerThan($threshold, $handler) + { + /** @var \Illuminate\Foundation\Console\Kernel $instance */ $instance->whenCommandLifecycleIsLongerThan($threshold, $handler); } /** @@ -1594,11 +1593,20 @@ public static function whenCommandLifecycleIsLongerThan($threshold, $handler) * * @return \Illuminate\Support\Carbon|null * @static - */ - public static function commandStartedAt() - { //Method inherited from \Illuminate\Foundation\Console\Kernel - /** @var \App\Console\Kernel $instance */ + */ public static function commandStartedAt() + { + /** @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. @@ -1607,10 +1615,9 @@ public static function commandStartedAt() * @param \Closure $callback * @return \Illuminate\Foundation\Console\ClosureCommand * @static - */ - public static function command($signature, $callback) - { //Method inherited from \Illuminate\Foundation\Console\Kernel - /** @var \App\Console\Kernel $instance */ + */ public static function command($signature, $callback) + { + /** @var \Illuminate\Foundation\Console\Kernel $instance */ return $instance->command($signature, $callback); } /** @@ -1619,10 +1626,9 @@ public static function command($signature, $callback) * @param \Symfony\Component\Console\Command\Command $command * @return void * @static - */ - public static function registerCommand($command) - { //Method inherited from \Illuminate\Foundation\Console\Kernel - /** @var \App\Console\Kernel $instance */ + */ public static function registerCommand($command) + { + /** @var \Illuminate\Foundation\Console\Kernel $instance */ $instance->registerCommand($command); } /** @@ -1634,10 +1640,9 @@ public static function registerCommand($command) * @return int * @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 */ + */ public static function call($command, $parameters = [], $outputBuffer = null) + { + /** @var \Illuminate\Foundation\Console\Kernel $instance */ return $instance->call($command, $parameters, $outputBuffer); } /** @@ -1647,10 +1652,9 @@ public static function call($command, $parameters = [], $outputBuffer = null) * @param array $parameters * @return \Illuminate\Foundation\Bus\PendingDispatch * @static - */ - public static function queue($command, $parameters = []) - { //Method inherited from \Illuminate\Foundation\Console\Kernel - /** @var \App\Console\Kernel $instance */ + */ public static function queue($command, $parameters = []) + { + /** @var \Illuminate\Foundation\Console\Kernel $instance */ return $instance->queue($command, $parameters); } /** @@ -1658,10 +1662,9 @@ public static function queue($command, $parameters = []) * * @return array * @static - */ - public static function all() - { //Method inherited from \Illuminate\Foundation\Console\Kernel - /** @var \App\Console\Kernel $instance */ + */ public static function all() + { + /** @var \Illuminate\Foundation\Console\Kernel $instance */ return $instance->all(); } /** @@ -1669,10 +1672,9 @@ public static function all() * * @return string * @static - */ - public static function output() - { //Method inherited from \Illuminate\Foundation\Console\Kernel - /** @var \App\Console\Kernel $instance */ + */ public static function output() + { + /** @var \Illuminate\Foundation\Console\Kernel $instance */ return $instance->output(); } /** @@ -1680,10 +1682,9 @@ public static function output() * * @return void * @static - */ - public static function bootstrap() - { //Method inherited from \Illuminate\Foundation\Console\Kernel - /** @var \App\Console\Kernel $instance */ + */ public static function bootstrap() + { + /** @var \Illuminate\Foundation\Console\Kernel $instance */ $instance->bootstrap(); } /** @@ -1691,41 +1692,69 @@ public static function bootstrap() * * @return void * @static - */ - public static function bootstrapWithoutBootingProviders() - { //Method inherited from \Illuminate\Foundation\Console\Kernel - /** @var \App\Console\Kernel $instance */ + */ public static function bootstrapWithoutBootingProviders() + { + /** @var \Illuminate\Foundation\Console\Kernel $instance */ $instance->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) - { //Method inherited from \Illuminate\Foundation\Console\Kernel - /** @var \App\Console\Kernel $instance */ + */ public static function setArtisan($artisan) + { + /** @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); + } + } /** * * * @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 +1766,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 +1778,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 +1788,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 +1799,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 +1810,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 +1822,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 +1832,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 +1843,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 +1855,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 +1867,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 +1877,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 +1887,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 +1898,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 +1910,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 +1920,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 +1930,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 +1940,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 +1951,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 +1962,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 +1973,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 +1986,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 +1999,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 +2011,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 +2024,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 +2036,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 +2048,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 +2058,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 +2070,7 @@ public static function logout() * * @return void * @static - */ - public static function logoutCurrentDevice() + */ public static function logoutCurrentDevice() { /** @var \Illuminate\Auth\SessionGuard $instance */ $instance->logoutCurrentDevice(); @@ -2080,15 +2081,13 @@ public static function logoutCurrentDevice() * 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. @@ -2096,8 +2095,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 +2105,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 +2115,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 +2125,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 +2135,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 +2146,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 +2157,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 +2168,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 +2178,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 +2189,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 +2199,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 +2209,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 +2220,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 +2230,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 +2241,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 +2251,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 +2262,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 +2272,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 +2282,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 +2292,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 +2302,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 +2312,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 +2323,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 +2335,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 +2347,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 +2357,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 +2366,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 +2392,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 +2403,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 +2414,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 +2427,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 +2437,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 +2447,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 +2458,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 +2468,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 +2480,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 +2492,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 +2505,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 +2517,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 +2527,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 +2539,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 +2551,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 +2563,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 +2573,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 +2583,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 +2593,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 +2605,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 +2617,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 +2629,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 +2642,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 +2652,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 +2674,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 +2685,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 +2695,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 +2705,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 +2715,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 +2726,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 +2736,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 +2749,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 +2762,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 +2771,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 +2782,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 +2791,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 +2803,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 +2814,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 +2825,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 +2840,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 +2861,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 +2874,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,11 +2885,37 @@ 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); + } + /** + * 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. @@ -2959,8 +2923,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 +2934,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 +2945,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 +2956,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 +2967,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 +2978,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 +2988,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 +2999,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 +3010,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 +3022,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 +3032,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 +3043,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 +3053,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 +3085,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 +3097,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 +3108,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 +3119,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 +3130,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 +3141,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 +3152,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 +3164,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 +3176,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 +3187,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 +3198,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 +3207,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 +3221,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 +3233,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 +3245,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 +3255,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 +3267,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 +3279,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 +3291,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 +3303,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 +3315,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 +3327,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 +3338,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 +3350,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 +3372,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 +3383,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 +3393,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 +3405,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 +3417,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 +3429,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 +3440,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 +3451,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 +3462,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 +3473,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 +3484,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 +3495,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,31 +3535,41 @@ 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. * * @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. * * @return void * @static - */ - public static function refreshEventDispatcher() + */ public static function refreshEventDispatcher() { /** @var \Illuminate\Cache\CacheManager $instance */ $instance->refreshEventDispatcher(); @@ -3638,8 +3579,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 +3590,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 +3601,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 +3612,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 +3624,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 +3646,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 +3657,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 +3670,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 +3683,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 +3699,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 +3712,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 +3725,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 +3743,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 +3755,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 +3773,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 +3786,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 +3798,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 +3810,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 +3822,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 +3836,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 +3849,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 +3862,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 +3873,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 +3887,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 +3902,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 +3913,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 +3925,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 +3935,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 +3945,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 +3956,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 +3966,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 +3998,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 +4009,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 +4020,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 +4032,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 +4043,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 +4055,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 +4067,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 +4077,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 +4086,7 @@ public static function hasMacro($name) * * @return void * @static - */ - public static function flushMacros() + */ public static function flushMacros() { \Illuminate\Cache\Repository::flushMacros(); } @@ -4176,8 +4098,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 +4111,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 +4123,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 +4133,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 +4164,56 @@ 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 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. + * + * @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 +4225,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,82 +4236,135 @@ 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); } /** - * Set a given configuration value. + * Get the specified string configuration value. * - * @param array|string $key - * @param mixed $value - * @return void + * @param string $key + * @param \Illuminate\Config\(\Closure():(string|\Illuminate\Config\null))|string|null $default + * @return string * @static - */ - public static function set($key, $value = null) + */ public static function string($key, $default = null) { /** @var \Illuminate\Config\Repository $instance */ - $instance->set($key, $value); + return $instance->string($key, $default); } /** - * Prepend a value onto an array configuration value. + * Get the specified integer configuration value. * * @param string $key - * @param mixed $value - * @return void + * @param \Illuminate\Config\(\Closure():(int|\Illuminate\Config\null))|int|null $default + * @return int * @static - */ - public static function prepend($key, $value) + */ public static function integer($key, $default = null) { /** @var \Illuminate\Config\Repository $instance */ - $instance->prepend($key, $value); + return $instance->integer($key, $default); } /** - * Push a value onto an array configuration value. + * Get the specified float configuration value. * * @param string $key - * @param mixed $value - * @return void + * @param \Illuminate\Config\(\Closure():(float|\Illuminate\Config\null))|float|null $default + * @return float * @static - */ - public static function push($key, $value) + */ public static function float($key, $default = null) { /** @var \Illuminate\Config\Repository $instance */ - $instance->push($key, $value); + return $instance->float($key, $default); } /** - * Get all of the configuration items for the application. + * Get the specified boolean configuration value. * - * @return array + * @param string $key + * @param \Illuminate\Config\(\Closure():(bool|\Illuminate\Config\null))|bool|null $default + * @return bool * @static - */ - public static function all() + */ public static function boolean($key, $default = null) { /** @var \Illuminate\Config\Repository $instance */ - return $instance->all(); + return $instance->boolean($key, $default); } /** - * Determine if the given configuration option exists. + * Get the specified array configuration value. * * @param string $key - * @return bool + * @param \Illuminate\Config\(\Closure():(array|\Illuminate\Config\null))|\Illuminate\Config\array|null $default + * @return array * @static - */ - public static function offsetExists($key) + */ public static function array($key, $default = null) { /** @var \Illuminate\Config\Repository $instance */ - return $instance->offsetExists($key); + return $instance->array($key, $default); } /** - * Get a configuration option. + * Set a given configuration value. * - * @param string $key + * @param array|string $key + * @param mixed $value + * @return void + * @static + */ public static function set($key, $value = null) + { + /** @var \Illuminate\Config\Repository $instance */ + $instance->set($key, $value); + } + /** + * Prepend a value onto an array configuration value. + * + * @param string $key + * @param mixed $value + * @return void + * @static + */ public static function prepend($key, $value) + { + /** @var \Illuminate\Config\Repository $instance */ + $instance->prepend($key, $value); + } + /** + * Push a value onto an array configuration value. + * + * @param string $key + * @param mixed $value + * @return void + * @static + */ public static function push($key, $value) + { + /** @var \Illuminate\Config\Repository $instance */ + $instance->push($key, $value); + } + /** + * Get all of the configuration items for the application. + * + * @return array + * @static + */ public static function all() + { + /** @var \Illuminate\Config\Repository $instance */ + return $instance->all(); + } + /** + * Determine if the given configuration option exists. + * + * @param string $key + * @return bool + * @static + */ public static function offsetExists($key) + { + /** @var \Illuminate\Config\Repository $instance */ + return $instance->offsetExists($key); + } + /** + * Get a configuration option. + * + * @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 +4376,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 +4387,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 +4399,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 +4411,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 +4421,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,642 +4430,2141 @@ 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 { + * @see \Illuminate\Log\Context\Repository + */ class Context { /** - * Create a new cookie instance. + * Determine if the given key exists. * - * @param string $name - * @param string $value - * @param int $minutes - * @param string|null $path - * @param string|null $domain - * @param bool|null $secure - * @param bool $httpOnly - * @param bool $raw - * @param string|null $sameSite - * @return \Symfony\Component\HttpFoundation\Cookie + * @param string $key + * @return bool * @static - */ - public static function make($name, $value, $minutes = 0, $path = null, $domain = null, $secure = null, $httpOnly = true, $raw = false, $sameSite = null) + */ public static function has($key) { - /** @var \Illuminate\Cookie\CookieJar $instance */ - return $instance->make($name, $value, $minutes, $path, $domain, $secure, $httpOnly, $raw, $sameSite); + /** @var \Illuminate\Log\Context\Repository $instance */ + return $instance->has($key); } /** - * Create a cookie that lasts "forever" (400 days). + * Determine if the given key exists within the hidden context data. * - * @param string $name - * @param string $value - * @param string|null $path - * @param string|null $domain - * @param bool|null $secure - * @param bool $httpOnly - * @param bool $raw - * @param string|null $sameSite - * @return \Symfony\Component\HttpFoundation\Cookie + * @param string $key + * @return bool * @static - */ - public static function forever($name, $value, $path = null, $domain = null, $secure = null, $httpOnly = true, $raw = false, $sameSite = null) + */ public static function hasHidden($key) { - /** @var \Illuminate\Cookie\CookieJar $instance */ - return $instance->forever($name, $value, $path, $domain, $secure, $httpOnly, $raw, $sameSite); + /** @var \Illuminate\Log\Context\Repository $instance */ + return $instance->hasHidden($key); } /** - * Expire the given cookie. + * Retrieve all the context data. * - * @param string $name - * @param string|null $path - * @param string|null $domain - * @return \Symfony\Component\HttpFoundation\Cookie + * @return array * @static - */ - public static function forget($name, $path = null, $domain = null) + */ public static function all() { - /** @var \Illuminate\Cookie\CookieJar $instance */ - return $instance->forget($name, $path, $domain); + /** @var \Illuminate\Log\Context\Repository $instance */ + return $instance->all(); } /** - * Determine if a cookie has been queued. + * 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 string|null $path - * @return bool + * @param mixed $default + * @return mixed * @static - */ - public static function hasQueued($key, $path = null) + */ public static function get($key, $default = null) { - /** @var \Illuminate\Cookie\CookieJar $instance */ - return $instance->hasQueued($key, $path); + /** @var \Illuminate\Log\Context\Repository $instance */ + return $instance->get($key, $default); } /** - * Get a queued cookie instance. + * Retrieve the given key's hidden value. * * @param string $key * @param mixed $default - * @param string|null $path - * @return \Symfony\Component\HttpFoundation\Cookie|null + * @return mixed * @static - */ - public static function queued($key, $default = null, $path = null) + */ public static function getHidden($key, $default = null) { - /** @var \Illuminate\Cookie\CookieJar $instance */ - return $instance->queued($key, $default, $path); + /** @var \Illuminate\Log\Context\Repository $instance */ + return $instance->getHidden($key, $default); } /** - * Queue a cookie to send with the next response. + * Retrieve the given key's value and then forget it. * - * @param mixed $parameters - * @return void + * @param string $key + * @param mixed $default + * @return mixed * @static - */ - public static function queue(...$parameters) + */ public static function pull($key, $default = null) { - /** @var \Illuminate\Cookie\CookieJar $instance */ - $instance->queue(...$parameters); + /** @var \Illuminate\Log\Context\Repository $instance */ + return $instance->pull($key, $default); } /** - * Queue a cookie to expire with the next response. + * Retrieve the given key's hidden value and then forget it. * - * @param string $name - * @param string|null $path - * @param string|null $domain - * @return void + * @param string $key + * @param mixed $default + * @return mixed * @static - */ - public static function expire($name, $path = null, $domain = null) + */ public static function pullHidden($key, $default = null) { - /** @var \Illuminate\Cookie\CookieJar $instance */ - $instance->expire($name, $path, $domain); + /** @var \Illuminate\Log\Context\Repository $instance */ + return $instance->pullHidden($key, $default); } /** - * Remove a cookie from the queue. + * Retrieve only the values of the given keys. * - * @param string $name - * @param string|null $path - * @return void + * @param array $keys + * @return array * @static - */ - public static function unqueue($name, $path = null) + */ public static function only($keys) { - /** @var \Illuminate\Cookie\CookieJar $instance */ - $instance->unqueue($name, $path); + /** @var \Illuminate\Log\Context\Repository $instance */ + return $instance->only($keys); } /** - * Set the default path and domain for the jar. + * Retrieve only the hidden values of the given keys. * - * @param string $path - * @param string|null $domain - * @param bool|null $secure - * @param string|null $sameSite - * @return \Illuminate\Cookie\CookieJar + * @param array $keys + * @return array * @static - */ - public static function setDefaultPathAndDomain($path, $domain, $secure = false, $sameSite = null) + */ public static function onlyHidden($keys) { - /** @var \Illuminate\Cookie\CookieJar $instance */ - return $instance->setDefaultPathAndDomain($path, $domain, $secure, $sameSite); + /** @var \Illuminate\Log\Context\Repository $instance */ + return $instance->onlyHidden($keys); } /** - * Get the cookies which have been queued for the next request. + * Add a context value. * - * @return \Symfony\Component\HttpFoundation\Cookie[] + * @param string|array $key + * @param mixed $value + * @return \Illuminate\Log\Context\Repository * @static - */ - public static function getQueuedCookies() + */ public static function add($key, $value = null) { - /** @var \Illuminate\Cookie\CookieJar $instance */ - return $instance->getQueuedCookies(); + /** @var \Illuminate\Log\Context\Repository $instance */ + return $instance->add($key, $value); } /** - * Flush the cookies which have been queued for the next request. + * Add a hidden context value. * - * @return \Illuminate\Cookie\CookieJar + * @param string|array $key + * @param mixed $value + * @return \Illuminate\Log\Context\Repository * @static - */ - public static function flushQueuedCookies() + */ public static function addHidden($key, $value = null) { - /** @var \Illuminate\Cookie\CookieJar $instance */ - return $instance->flushQueuedCookies(); + /** @var \Illuminate\Log\Context\Repository $instance */ + return $instance->addHidden($key, $value); } /** - * Register a custom macro. + * Forget the given context key. * - * @param string $name - * @param object|callable $macro - * @return void + * @param string|array $key + * @return \Illuminate\Log\Context\Repository * @static - */ - public static function macro($name, $macro) + */ public static function forget($key) { - \Illuminate\Cookie\CookieJar::macro($name, $macro); + /** @var \Illuminate\Log\Context\Repository $instance */ + return $instance->forget($key); } /** - * Mix another object into the class. + * Forget the given hidden context key. * - * @param object $mixin - * @param bool $replace - * @return void - * @throws \ReflectionException + * @param string|array $key + * @return \Illuminate\Log\Context\Repository * @static - */ - public static function mixin($mixin, $replace = true) + */ public static function forgetHidden($key) { - \Illuminate\Cookie\CookieJar::mixin($mixin, $replace); + /** @var \Illuminate\Log\Context\Repository $instance */ + return $instance->forgetHidden($key); } /** - * Checks if macro is registered. + * Add a context value if it does not exist yet. * - * @param string $name - * @return bool + * @param string $key + * @param mixed $value + * @return \Illuminate\Log\Context\Repository * @static - */ - public static function hasMacro($name) + */ public static function addIf($key, $value) { - return \Illuminate\Cookie\CookieJar::hasMacro($name); + /** @var \Illuminate\Log\Context\Repository $instance */ + return $instance->addIf($key, $value); } /** - * Flush the existing macros. + * Add a hidden context value if it does not exist yet. * - * @return void + * @param string $key + * @param mixed $value + * @return \Illuminate\Log\Context\Repository * @static - */ - public static function flushMacros() + */ public static function addHiddenIf($key, $value) { - \Illuminate\Cookie\CookieJar::flushMacros(); + /** @var \Illuminate\Log\Context\Repository $instance */ + return $instance->addHiddenIf($key, $value); } - - } - /** - * - * - * @see \Illuminate\Encryption\Encrypter - */ - class Crypt { /** - * Determine if the given key and cipher combination is valid. + * Push the given values onto the key's stack. * * @param string $key - * @param string $cipher + * @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 supported($key, $cipher) + */ public static function isEmpty() { - return \Illuminate\Encryption\Encrypter::supported($key, $cipher); + /** @var \Illuminate\Log\Context\Repository $instance */ + return $instance->isEmpty(); } /** - * Create a new encryption key for the given cipher. + * Execute the given callback when context is about to be dehydrated. * - * @param string $cipher - * @return string + * @param callable $callback + * @return \Illuminate\Log\Context\Repository * @static - */ - public static function generateKey($cipher) + */ public static function dehydrating($callback) { - return \Illuminate\Encryption\Encrypter::generateKey($cipher); + /** @var \Illuminate\Log\Context\Repository $instance */ + return $instance->dehydrating($callback); } /** - * Encrypt the given value. + * Execute the given callback when context has been hydrated. * - * @param mixed $value - * @param bool $serialize - * @return string - * @throws \Illuminate\Contracts\Encryption\EncryptException + * @param callable $callback + * @return \Illuminate\Log\Context\Repository * @static - */ - public static function encrypt($value, $serialize = true) + */ public static function hydrated($callback) { - /** @var \Illuminate\Encryption\Encrypter $instance */ - return $instance->encrypt($value, $serialize); + /** @var \Illuminate\Log\Context\Repository $instance */ + return $instance->hydrated($callback); } /** - * Encrypt a string without serialization. + * Handle unserialize exceptions using the given callback. * - * @param string $value - * @return string - * @throws \Illuminate\Contracts\Encryption\EncryptException + * @param callable|null $callback + * @return static * @static - */ - public static function encryptString($value) + */ public static function handleUnserializeExceptionsUsing($callback) { - /** @var \Illuminate\Encryption\Encrypter $instance */ - return $instance->encryptString($value); + /** @var \Illuminate\Log\Context\Repository $instance */ + return $instance->handleUnserializeExceptionsUsing($callback); } /** - * Decrypt the given value. + * Flush all context data. * - * @param string $payload - * @param bool $unserialize - * @return mixed - * @throws \Illuminate\Contracts\Encryption\DecryptException + * @return \Illuminate\Log\Context\Repository * @static - */ - public static function decrypt($payload, $unserialize = true) + */ public static function flush() { - /** @var \Illuminate\Encryption\Encrypter $instance */ - return $instance->decrypt($payload, $unserialize); + /** @var \Illuminate\Log\Context\Repository $instance */ + return $instance->flush(); } /** - * Decrypt the given string without unserialization. + * Dehydrate the context data. * - * @param string $payload - * @return string - * @throws \Illuminate\Contracts\Encryption\DecryptException + * @internal + * @return \Illuminate\Log\Context\?array * @static - */ - public static function decryptString($payload) + */ public static function dehydrate() { - /** @var \Illuminate\Encryption\Encrypter $instance */ - return $instance->decryptString($payload); + /** @var \Illuminate\Log\Context\Repository $instance */ + return $instance->dehydrate(); } /** - * Get the encryption key that the encrypter is currently using. + * Hydrate the context instance. * - * @return string + * @internal + * @param \Illuminate\Log\Context\?array $context + * @return \Illuminate\Log\Context\Repository + * @throws \RuntimeException * @static - */ - public static function getKey() + */ public static function hydrate($context) { - /** @var \Illuminate\Encryption\Encrypter $instance */ - return $instance->getKey(); + /** @var \Illuminate\Log\Context\Repository $instance */ + return $instance->hydrate($context); } - - } - /** - * - * - * @see https://carbon.nesbot.com/docs/ - * @see https://github.com/briannesbitt/Carbon/blob/master/src/Carbon/Factory.php - * @method static \Illuminate\Support\Carbon create($year = 0, $month = 1, $day = 1, $hour = 0, $minute = 0, $second = 0, $tz = null) - * @method static \Illuminate\Support\Carbon createFromDate($year = null, $month = null, $day = null, $tz = null) - * @method static \Illuminate\Support\Carbon|false createFromFormat($format, $time, $tz = null) - * @method static \Illuminate\Support\Carbon createFromTime($hour = 0, $minute = 0, $second = 0, $tz = null) - * @method static \Illuminate\Support\Carbon createFromTimeString($time, $tz = null) - * @method static \Illuminate\Support\Carbon createFromTimestamp($timestamp, $tz = null) - * @method static \Illuminate\Support\Carbon createFromTimestampMs($timestamp, $tz = null) - * @method static \Illuminate\Support\Carbon createFromTimestampUTC($timestamp) - * @method static \Illuminate\Support\Carbon createMidnightDate($year = null, $month = null, $day = null, $tz = null) - * @method static \Illuminate\Support\Carbon|false createSafe($year = null, $month = null, $day = null, $hour = null, $minute = null, $second = null, $tz = null) - * @method static void disableHumanDiffOption($humanDiffOption) - * @method static void enableHumanDiffOption($humanDiffOption) - * @method static mixed executeWithLocale($locale, $func) - * @method static \Illuminate\Support\Carbon fromSerialized($value) - * @method static array getAvailableLocales() - * @method static array getDays() - * @method static int getHumanDiffOptions() - * @method static array getIsoUnits() - * @method static array getLastErrors() - * @method static string getLocale() - * @method static int getMidDayAt() - * @method static \Illuminate\Support\Carbon|null getTestNow() - * @method static \Symfony\Component\Translation\TranslatorInterface getTranslator() - * @method static int getWeekEndsAt() - * @method static int getWeekStartsAt() - * @method static array getWeekendDays() - * @method static bool hasFormat($date, $format) - * @method static bool hasMacro($name) - * @method static bool hasRelativeKeywords($time) - * @method static bool hasTestNow() - * @method static \Illuminate\Support\Carbon instance($date) - * @method static bool isImmutable() - * @method static bool isModifiableUnit($unit) - * @method static bool isMutable() - * @method static bool isStrictModeEnabled() - * @method static bool localeHasDiffOneDayWords($locale) - * @method static bool localeHasDiffSyntax($locale) - * @method static bool localeHasDiffTwoDayWords($locale) - * @method static bool localeHasPeriodSyntax($locale) - * @method static bool localeHasShortUnits($locale) - * @method static void macro($name, $macro) - * @method static \Illuminate\Support\Carbon|null make($var) - * @method static \Illuminate\Support\Carbon maxValue() - * @method static \Illuminate\Support\Carbon minValue() - * @method static void mixin($mixin) - * @method static \Illuminate\Support\Carbon now($tz = null) - * @method static \Illuminate\Support\Carbon parse($time = null, $tz = null) - * @method static string pluralUnit(string $unit) - * @method static void resetMonthsOverflow() - * @method static void resetToStringFormat() - * @method static void resetYearsOverflow() - * @method static void serializeUsing($callback) - * @method static void setHumanDiffOptions($humanDiffOptions) - * @method static bool setLocale($locale) - * @method static void setMidDayAt($hour) - * @method static void setTestNow($testNow = null) - * @method static void setToStringFormat($format) - * @method static void setTranslator(\Symfony\Component\Translation\TranslatorInterface $translator) - * @method static void setUtf8($utf8) - * @method static void setWeekEndsAt($day) - * @method static void setWeekStartsAt($day) - * @method static void setWeekendDays($days) - * @method static bool shouldOverflowMonths() - * @method static bool shouldOverflowYears() - * @method static string singularUnit(string $unit) - * @method static \Illuminate\Support\Carbon today($tz = null) - * @method static \Illuminate\Support\Carbon tomorrow($tz = null) - * @method static void useMonthsOverflow($monthsOverflow = true) - * @method static void useStrictMode($strictModeEnabled = true) - * @method static void useYearsOverflow($yearsOverflow = true) - * @method static \Illuminate\Support\Carbon yesterday($tz = null) - * @see \Illuminate\Support\DateFactory - */ - class Date { /** - * Use the given handler when generating dates (class name, callable, or factory). + * Apply the callback if the given "value" is (or resolves to) truthy. * - * @param mixed $handler - * @return mixed - * @throws \InvalidArgumentException + * @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 use($handler) + */ public static function when($value = null, $callback = null, $default = null) { - return \Illuminate\Support\DateFactory::use($handler); + /** @var \Illuminate\Log\Context\Repository $instance */ + return $instance->when($value, $callback, $default); } /** - * Use the default date class when generating dates. + * Apply the callback if the given "value" is (or resolves to) falsy. * - * @return void + * @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 useDefault() + */ public static function unless($value = null, $callback = null, $default = null) { - \Illuminate\Support\DateFactory::useDefault(); + /** @var \Illuminate\Log\Context\Repository $instance */ + return $instance->unless($value, $callback, $default); } /** - * Execute the given callable on each date creation. + * Register a custom macro. * - * @param callable $callable + * @param string $name + * @param object|callable $macro * @return void * @static - */ - public static function useCallable($callable) + */ public static function macro($name, $macro) { - \Illuminate\Support\DateFactory::useCallable($callable); + \Illuminate\Log\Context\Repository::macro($name, $macro); } /** - * Use the given date type (class) when generating dates. + * Mix another object into the class. * - * @param string $dateClass + * @param object $mixin + * @param bool $replace * @return void + * @throws \ReflectionException * @static - */ - public static function useClass($dateClass) + */ public static function mixin($mixin, $replace = true) { - \Illuminate\Support\DateFactory::useClass($dateClass); + \Illuminate\Log\Context\Repository::mixin($mixin, $replace); } /** - * Use the given Carbon factory when generating dates. + * 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. * - * @param object $factory * @return void * @static - */ - public static function useFactory($factory) + */ public static function flushMacros() { - \Illuminate\Support\DateFactory::useFactory($factory); + \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\Database\DatabaseManager - */ - class DB { + * @see \Illuminate\Cookie\CookieJar + */ class Cookie { /** - * Get a database connection instance. + * Create a new cookie instance. * - * @param string|null $name - * @return \Illuminate\Database\Connection + * @param string $name + * @param string $value + * @param int $minutes + * @param string|null $path + * @param string|null $domain + * @param bool|null $secure + * @param bool $httpOnly + * @param bool $raw + * @param string|null $sameSite + * @return \Symfony\Component\HttpFoundation\Cookie * @static - */ - public static function connection($name = null) + */ public static function make($name, $value, $minutes = 0, $path = null, $domain = null, $secure = null, $httpOnly = true, $raw = false, $sameSite = null) { - /** @var \Illuminate\Database\DatabaseManager $instance */ - return $instance->connection($name); + /** @var \Illuminate\Cookie\CookieJar $instance */ + return $instance->make($name, $value, $minutes, $path, $domain, $secure, $httpOnly, $raw, $sameSite); } /** - * Register a custom Doctrine type. + * Create a cookie that lasts "forever" (400 days). * - * @param string $class * @param string $name - * @param string $type - * @return void - * @throws \Doctrine\DBAL\DBALException - * @throws \RuntimeException + * @param string $value + * @param string|null $path + * @param string|null $domain + * @param bool|null $secure + * @param bool $httpOnly + * @param bool $raw + * @param string|null $sameSite + * @return \Symfony\Component\HttpFoundation\Cookie * @static - */ - public static function registerDoctrineType($class, $name, $type) + */ public static function forever($name, $value, $path = null, $domain = null, $secure = null, $httpOnly = true, $raw = false, $sameSite = null) { - /** @var \Illuminate\Database\DatabaseManager $instance */ - $instance->registerDoctrineType($class, $name, $type); + /** @var \Illuminate\Cookie\CookieJar $instance */ + return $instance->forever($name, $value, $path, $domain, $secure, $httpOnly, $raw, $sameSite); } /** - * Disconnect from the given database and remove from local cache. + * Expire the given cookie. * - * @param string|null $name - * @return void + * @param string $name + * @param string|null $path + * @param string|null $domain + * @return \Symfony\Component\HttpFoundation\Cookie * @static - */ - public static function purge($name = null) + */ public static function forget($name, $path = null, $domain = null) { - /** @var \Illuminate\Database\DatabaseManager $instance */ - $instance->purge($name); + /** @var \Illuminate\Cookie\CookieJar $instance */ + return $instance->forget($name, $path, $domain); } /** - * Disconnect from the given database. + * Determine if a cookie has been queued. * - * @param string|null $name - * @return void + * @param string $key + * @param string|null $path + * @return bool * @static - */ - public static function disconnect($name = null) + */ public static function hasQueued($key, $path = null) { - /** @var \Illuminate\Database\DatabaseManager $instance */ - $instance->disconnect($name); + /** @var \Illuminate\Cookie\CookieJar $instance */ + return $instance->hasQueued($key, $path); } /** - * Reconnect to the given database. + * Get a queued cookie instance. * - * @param string|null $name - * @return \Illuminate\Database\Connection + * @param string $key + * @param mixed $default + * @param string|null $path + * @return \Symfony\Component\HttpFoundation\Cookie|null * @static - */ - public static function reconnect($name = null) + */ public static function queued($key, $default = null, $path = null) { - /** @var \Illuminate\Database\DatabaseManager $instance */ - return $instance->reconnect($name); + /** @var \Illuminate\Cookie\CookieJar $instance */ + return $instance->queued($key, $default, $path); } /** - * Set the default database connection for the callback execution. + * Queue a cookie to send with the next response. * - * @param string $name - * @param callable $callback - * @return mixed + * @param mixed $parameters + * @return void * @static - */ - public static function usingConnection($name, $callback) + */ public static function queue(...$parameters) { - /** @var \Illuminate\Database\DatabaseManager $instance */ - return $instance->usingConnection($name, $callback); + /** @var \Illuminate\Cookie\CookieJar $instance */ + $instance->queue(...$parameters); } /** - * Get the default connection name. + * Queue a cookie to expire with the next response. * - * @return string + * @param string $name + * @param string|null $path + * @param string|null $domain + * @return void * @static - */ - public static function getDefaultConnection() + */ public static function expire($name, $path = null, $domain = null) { - /** @var \Illuminate\Database\DatabaseManager $instance */ - return $instance->getDefaultConnection(); + /** @var \Illuminate\Cookie\CookieJar $instance */ + $instance->expire($name, $path, $domain); } /** - * Set the default connection name. + * Remove a cookie from the queue. * * @param string $name + * @param string|null $path * @return void * @static - */ - public static function setDefaultConnection($name) + */ public static function unqueue($name, $path = null) { - /** @var \Illuminate\Database\DatabaseManager $instance */ - $instance->setDefaultConnection($name); + /** @var \Illuminate\Cookie\CookieJar $instance */ + $instance->unqueue($name, $path); } /** - * Get all of the support drivers. + * Set the default path and domain for the jar. * - * @return string[] + * @param string $path + * @param string|null $domain + * @param bool|null $secure + * @param string|null $sameSite + * @return \Illuminate\Cookie\CookieJar * @static - */ - public static function supportedDrivers() + */ public static function setDefaultPathAndDomain($path, $domain, $secure = false, $sameSite = null) { - /** @var \Illuminate\Database\DatabaseManager $instance */ - return $instance->supportedDrivers(); + /** @var \Illuminate\Cookie\CookieJar $instance */ + return $instance->setDefaultPathAndDomain($path, $domain, $secure, $sameSite); } /** - * Get all of the drivers that are actually available. + * Get the cookies which have been queued for the next request. * - * @return string[] + * @return \Symfony\Component\HttpFoundation\Cookie[] * @static - */ - public static function availableDrivers() + */ public static function getQueuedCookies() { - /** @var \Illuminate\Database\DatabaseManager $instance */ - return $instance->availableDrivers(); + /** @var \Illuminate\Cookie\CookieJar $instance */ + return $instance->getQueuedCookies(); } /** - * Register an extension connection resolver. + * Flush the cookies which have been queued for the next request. * - * @param string $name - * @param callable $resolver - * @return void + * @return \Illuminate\Cookie\CookieJar * @static - */ - public static function extend($name, $resolver) + */ public static function flushQueuedCookies() { - /** @var \Illuminate\Database\DatabaseManager $instance */ - $instance->extend($name, $resolver); + /** @var \Illuminate\Cookie\CookieJar $instance */ + return $instance->flushQueuedCookies(); } /** - * Remove an extension connection resolver. + * Register a custom macro. * * @param string $name + * @param object|callable $macro * @return void * @static - */ - public static function forgetExtension($name) + */ public static function macro($name, $macro) { - /** @var \Illuminate\Database\DatabaseManager $instance */ - $instance->forgetExtension($name); + \Illuminate\Cookie\CookieJar::macro($name, $macro); } /** - * Return all of the created connections. + * Mix another object into the class. * - * @return array + * @param object $mixin + * @param bool $replace + * @return void + * @throws \ReflectionException * @static - */ - public static function getConnections() + */ public static function mixin($mixin, $replace = true) { - /** @var \Illuminate\Database\DatabaseManager $instance */ + \Illuminate\Cookie\CookieJar::mixin($mixin, $replace); + } + /** + * Checks if macro is registered. + * + * @param string $name + * @return bool + * @static + */ public static function hasMacro($name) + { + return \Illuminate\Cookie\CookieJar::hasMacro($name); + } + /** + * Flush the existing macros. + * + * @return void + * @static + */ public static function flushMacros() + { + \Illuminate\Cookie\CookieJar::flushMacros(); + } + } + /** + * + * + * @see \Illuminate\Encryption\Encrypter + */ class Crypt { + /** + * Determine if the given key and cipher combination is valid. + * + * @param string $key + * @param string $cipher + * @return bool + * @static + */ public static function supported($key, $cipher) + { + return \Illuminate\Encryption\Encrypter::supported($key, $cipher); + } + /** + * Create a new encryption key for the given cipher. + * + * @param string $cipher + * @return string + * @static + */ public static function generateKey($cipher) + { + return \Illuminate\Encryption\Encrypter::generateKey($cipher); + } + /** + * Encrypt the given value. + * + * @param mixed $value + * @param bool $serialize + * @return string + * @throws \Illuminate\Contracts\Encryption\EncryptException + * @static + */ public static function encrypt($value, $serialize = true) + { + /** @var \Illuminate\Encryption\Encrypter $instance */ + return $instance->encrypt($value, $serialize); + } + /** + * Encrypt a string without serialization. + * + * @param string $value + * @return string + * @throws \Illuminate\Contracts\Encryption\EncryptException + * @static + */ public static function encryptString($value) + { + /** @var \Illuminate\Encryption\Encrypter $instance */ + return $instance->encryptString($value); + } + /** + * Decrypt the given value. + * + * @param string $payload + * @param bool $unserialize + * @return mixed + * @throws \Illuminate\Contracts\Encryption\DecryptException + * @static + */ public static function decrypt($payload, $unserialize = true) + { + /** @var \Illuminate\Encryption\Encrypter $instance */ + return $instance->decrypt($payload, $unserialize); + } + /** + * Decrypt the given string without unserialization. + * + * @param string $payload + * @return string + * @throws \Illuminate\Contracts\Encryption\DecryptException + * @static + */ public static function decryptString($payload) + { + /** @var \Illuminate\Encryption\Encrypter $instance */ + return $instance->decryptString($payload); + } + /** + * Get the encryption key that the encrypter is currently using. + * + * @return string + * @static + */ 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->previousKeys($keys); + } + } + /** + * + * + * @see https://carbon.nesbot.com/docs/ + * @see https://github.com/briannesbitt/Carbon/blob/master/src/Carbon/Factory.php + * @method static \Illuminate\Support\Carbon create($year = 0, $month = 1, $day = 1, $hour = 0, $minute = 0, $second = 0, $tz = null) + * @method static \Illuminate\Support\Carbon createFromDate($year = null, $month = null, $day = null, $tz = null) + * @method static \Illuminate\Support\Carbon|false createFromFormat($format, $time, $tz = null) + * @method static \Illuminate\Support\Carbon createFromTime($hour = 0, $minute = 0, $second = 0, $tz = null) + * @method static \Illuminate\Support\Carbon createFromTimeString($time, $tz = null) + * @method static \Illuminate\Support\Carbon createFromTimestamp($timestamp, $tz = null) + * @method static \Illuminate\Support\Carbon createFromTimestampMs($timestamp, $tz = null) + * @method static \Illuminate\Support\Carbon createFromTimestampUTC($timestamp) + * @method static \Illuminate\Support\Carbon createMidnightDate($year = null, $month = null, $day = null, $tz = null) + * @method static \Illuminate\Support\Carbon|false createSafe($year = null, $month = null, $day = null, $hour = null, $minute = null, $second = null, $tz = null) + * @method static void disableHumanDiffOption($humanDiffOption) + * @method static void enableHumanDiffOption($humanDiffOption) + * @method static mixed executeWithLocale($locale, $func) + * @method static \Illuminate\Support\Carbon fromSerialized($value) + * @method static array getAvailableLocales() + * @method static array getDays() + * @method static int getHumanDiffOptions() + * @method static array getIsoUnits() + * @method static array getLastErrors() + * @method static string getLocale() + * @method static int getMidDayAt() + * @method static \Illuminate\Support\Carbon|null getTestNow() + * @method static \Symfony\Component\Translation\TranslatorInterface getTranslator() + * @method static int getWeekEndsAt() + * @method static int getWeekStartsAt() + * @method static array getWeekendDays() + * @method static bool hasFormat($date, $format) + * @method static bool hasMacro($name) + * @method static bool hasRelativeKeywords($time) + * @method static bool hasTestNow() + * @method static \Illuminate\Support\Carbon instance($date) + * @method static bool isImmutable() + * @method static bool isModifiableUnit($unit) + * @method static bool isMutable() + * @method static bool isStrictModeEnabled() + * @method static bool localeHasDiffOneDayWords($locale) + * @method static bool localeHasDiffSyntax($locale) + * @method static bool localeHasDiffTwoDayWords($locale) + * @method static bool localeHasPeriodSyntax($locale) + * @method static bool localeHasShortUnits($locale) + * @method static void macro($name, $macro) + * @method static \Illuminate\Support\Carbon|null make($var) + * @method static \Illuminate\Support\Carbon maxValue() + * @method static \Illuminate\Support\Carbon minValue() + * @method static void mixin($mixin) + * @method static \Illuminate\Support\Carbon now($tz = null) + * @method static \Illuminate\Support\Carbon parse($time = null, $tz = null) + * @method static string pluralUnit(string $unit) + * @method static void resetMonthsOverflow() + * @method static void resetToStringFormat() + * @method static void resetYearsOverflow() + * @method static void serializeUsing($callback) + * @method static void setHumanDiffOptions($humanDiffOptions) + * @method static bool setLocale($locale) + * @method static void setMidDayAt($hour) + * @method static void setTestNow($testNow = null) + * @method static void setToStringFormat($format) + * @method static void setTranslator(\Symfony\Component\Translation\TranslatorInterface $translator) + * @method static void setUtf8($utf8) + * @method static void setWeekEndsAt($day) + * @method static void setWeekStartsAt($day) + * @method static void setWeekendDays($days) + * @method static bool shouldOverflowMonths() + * @method static bool shouldOverflowYears() + * @method static string singularUnit(string $unit) + * @method static \Illuminate\Support\Carbon today($tz = null) + * @method static \Illuminate\Support\Carbon tomorrow($tz = null) + * @method static void useMonthsOverflow($monthsOverflow = true) + * @method static void useStrictMode($strictModeEnabled = true) + * @method static void useYearsOverflow($yearsOverflow = true) + * @method static \Illuminate\Support\Carbon yesterday($tz = null) + * @see \Illuminate\Support\DateFactory + */ class Date { + /** + * Use the given handler when generating dates (class name, callable, or factory). + * + * @param mixed $handler + * @return mixed + * @throws \InvalidArgumentException + * @static + */ public static function use($handler) + { + return \Illuminate\Support\DateFactory::use($handler); + } + /** + * Use the default date class when generating dates. + * + * @return void + * @static + */ public static function useDefault() + { + \Illuminate\Support\DateFactory::useDefault(); + } + /** + * Execute the given callable on each date creation. + * + * @param callable $callable + * @return void + * @static + */ public static function useCallable($callable) + { + \Illuminate\Support\DateFactory::useCallable($callable); + } + /** + * Use the given date type (class) when generating dates. + * + * @param string $dateClass + * @return void + * @static + */ public static function useClass($dateClass) + { + \Illuminate\Support\DateFactory::useClass($dateClass); + } + /** + * Use the given Carbon factory when generating dates. + * + * @param object $factory + * @return void + * @static + */ public static function useFactory($factory) + { + \Illuminate\Support\DateFactory::useFactory($factory); + } + } + /** + * + * + * @see \Illuminate\Database\DatabaseManager + */ class DB { + /** + * Get a database connection instance. + * + * @param string|null $name + * @return \Illuminate\Database\Connection + * @static + */ 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); + } + /** + * Disconnect from the given database and remove from local cache. + * + * @param string|null $name + * @return void + * @static + */ public static function purge($name = null) + { + /** @var \Illuminate\Database\DatabaseManager $instance */ + $instance->purge($name); + } + /** + * Disconnect from the given database. + * + * @param string|null $name + * @return void + * @static + */ public static function disconnect($name = null) + { + /** @var \Illuminate\Database\DatabaseManager $instance */ + $instance->disconnect($name); + } + /** + * Reconnect to the given database. + * + * @param string|null $name + * @return \Illuminate\Database\Connection + * @static + */ public static function reconnect($name = null) + { + /** @var \Illuminate\Database\DatabaseManager $instance */ + return $instance->reconnect($name); + } + /** + * Set the default database connection for the callback execution. + * + * @param string $name + * @param callable $callback + * @return mixed + * @static + */ public static function usingConnection($name, $callback) + { + /** @var \Illuminate\Database\DatabaseManager $instance */ + return $instance->usingConnection($name, $callback); + } + /** + * Get the default connection name. + * + * @return string + * @static + */ public static function getDefaultConnection() + { + /** @var \Illuminate\Database\DatabaseManager $instance */ + return $instance->getDefaultConnection(); + } + /** + * Set the default connection name. + * + * @param string $name + * @return void + * @static + */ public static function setDefaultConnection($name) + { + /** @var \Illuminate\Database\DatabaseManager $instance */ + $instance->setDefaultConnection($name); + } + /** + * Get all of the supported drivers. + * + * @return string[] + * @static + */ public static function supportedDrivers() + { + /** @var \Illuminate\Database\DatabaseManager $instance */ + return $instance->supportedDrivers(); + } + /** + * Get all of the drivers that are actually available. + * + * @return string[] + * @static + */ public static function availableDrivers() + { + /** @var \Illuminate\Database\DatabaseManager $instance */ + return $instance->availableDrivers(); + } + /** + * Register an extension connection resolver. + * + * @param string $name + * @param callable $resolver + * @return void + * @static + */ public static function extend($name, $resolver) + { + /** @var \Illuminate\Database\DatabaseManager $instance */ + $instance->extend($name, $resolver); + } + /** + * Remove an extension connection resolver. + * + * @param string $name + * @return void + * @static + */ public static function forgetExtension($name) + { + /** @var \Illuminate\Database\DatabaseManager $instance */ + $instance->forgetExtension($name); + } + /** + * Return all of the created connections. + * + * @return array + * @static + */ public static function getConnections() + { + /** @var \Illuminate\Database\DatabaseManager $instance */ return $instance->getConnections(); } /** - * Set the database reconnector callback. + * Set the database reconnector callback. + * + * @param callable $reconnector + * @return void + * @static + */ public static function setReconnector($reconnector) + { + /** @var \Illuminate\Database\DatabaseManager $instance */ + $instance->setReconnector($reconnector); + } + /** + * Set the application instance used by the manager. + * + * @param \Illuminate\Contracts\Foundation\Application $app + * @return \Illuminate\Database\DatabaseManager + * @static + */ public static function setApplication($app) + { + /** @var \Illuminate\Database\DatabaseManager $instance */ + return $instance->setApplication($app); + } + /** + * Register a custom macro. + * + * @param string $name + * @param object|callable $macro + * @return void + * @static + */ public static function macro($name, $macro) + { + \Illuminate\Database\DatabaseManager::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\Database\DatabaseManager::mixin($mixin, $replace); + } + /** + * Checks if macro is registered. + * + * @param string $name + * @return bool + * @static + */ public static function hasMacro($name) + { + return \Illuminate\Database\DatabaseManager::hasMacro($name); + } + /** + * Flush the existing macros. + * + * @return void + * @static + */ public static function flushMacros() + { + \Illuminate\Database\DatabaseManager::flushMacros(); + } + /** + * Dynamically handle calls to the class. + * + * @param string $method + * @param array $parameters + * @return mixed + * @throws \BadMethodCallException + * @static + */ public static function macroCall($method, $parameters) + { + /** @var \Illuminate\Database\DatabaseManager $instance */ + return $instance->macroCall($method, $parameters); + } + /** + * Determine if the connected database is a MariaDB database. + * + * @return bool + * @static + */ public static function isMaria() + { + /** @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. + * + * @return \Illuminate\Database\Schema\MySqlBuilder + * @static + */ public static function getSchemaBuilder() + { + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->getSchemaBuilder(); + } + /** + * Get the schema state for the connection. + * + * @param \Illuminate\Filesystem\Filesystem|null $files + * @param callable|null $processFactory + * @return \Illuminate\Database\Schema\MySqlSchemaState + * @static + */ public static function getSchemaState($files = null, $processFactory = null) + { + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->getSchemaState($files, $processFactory); + } + /** + * Set the query grammar to the default implementation. + * + * @return void + * @static + */ public static function useDefaultQueryGrammar() + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + $instance->useDefaultQueryGrammar(); + } + /** + * Set the schema grammar to the default implementation. + * + * @return void + * @static + */ public static function useDefaultSchemaGrammar() + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + $instance->useDefaultSchemaGrammar(); + } + /** + * Set the query post processor to the default implementation. + * + * @return void + * @static + */ public static function useDefaultPostProcessor() + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + $instance->useDefaultPostProcessor(); + } + /** + * Begin a fluent query against a database 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) + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->table($table, $as); + } + /** + * Get a new query builder instance. + * + * @return \Illuminate\Database\Query\Builder + * @static + */ public static function query() + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->query(); + } + /** + * Run a select statement and return a single result. + * + * @param string $query + * @param array $bindings + * @param bool $useReadPdo + * @return mixed + * @static + */ 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); + } + /** + * Run a select statement and return the first column of the first row. + * + * @param string $query + * @param array $bindings + * @param bool $useReadPdo + * @return mixed + * @throws \Illuminate\Database\MultipleColumnsSelectedException + * @static + */ 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); + } + /** + * Run a select statement against the database. + * + * @param string $query + * @param array $bindings + * @return array + * @static + */ public static function selectFromWriteConnection($query, $bindings = []) + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->selectFromWriteConnection($query, $bindings); + } + /** + * Run a select statement against the database. + * + * @param string $query + * @param array $bindings + * @param bool $useReadPdo + * @return array + * @static + */ 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. + * + * @param string $query + * @param array $bindings + * @param bool $useReadPdo + * @return \Generator + * @static + */ 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); + } + /** + * Run an insert statement against the database. + * + * @param string $query + * @param array $bindings + * @return bool + * @static + */ public static function insert($query, $bindings = []) + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->insert($query, $bindings); + } + /** + * Run an update statement against the database. + * + * @param string $query + * @param array $bindings + * @return int + * @static + */ public static function update($query, $bindings = []) + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->update($query, $bindings); + } + /** + * Run a delete statement against the database. + * + * @param string $query + * @param array $bindings + * @return int + * @static + */ public static function delete($query, $bindings = []) + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->delete($query, $bindings); + } + /** + * Execute an SQL statement and return the boolean result. + * + * @param string $query + * @param array $bindings + * @return bool + * @static + */ public static function statement($query, $bindings = []) + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->statement($query, $bindings); + } + /** + * Run an SQL statement and get the number of rows affected. + * + * @param string $query + * @param array $bindings + * @return int + * @static + */ public static function affectingStatement($query, $bindings = []) + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->affectingStatement($query, $bindings); + } + /** + * Run a raw, unprepared query against the PDO connection. + * + * @param string $query + * @return bool + * @static + */ public static function unprepared($query) + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->unprepared($query); + } + /** + * Execute the given callback in "dry run" mode. + * + * @param \Closure $callback + * @return array + * @static + */ 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. + * + * @param \PDOStatement $statement + * @param array $bindings + * @return void + * @static + */ public static function bindValues($statement, $bindings) + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + $instance->bindValues($statement, $bindings); + } + /** + * Prepare the query bindings for execution. + * + * @param array $bindings + * @return array + * @static + */ public static function prepareBindings($bindings) + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->prepareBindings($bindings); + } + /** + * Log a query in the connection's query log. + * + * @param string $query + * @param array $bindings + * @param float|null $time + * @return void + * @static + */ public static function logQuery($query, $bindings, $time = null) + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + $instance->logQuery($query, $bindings, $time); + } + /** + * Register a callback to be invoked when the connection queries for longer than a given amount of time. + * + * @param \DateTimeInterface|\Carbon\CarbonInterval|float|int $threshold + * @param callable $handler + * @return void + * @static + */ public static function whenQueryingForLongerThan($threshold, $handler) + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + $instance->whenQueryingForLongerThan($threshold, $handler); + } + /** + * Allow all the query duration handlers to run again, even if they have already run. + * + * @return void + * @static + */ public static function allowQueryDurationHandlersToRunAgain() + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + $instance->allowQueryDurationHandlersToRunAgain(); + } + /** + * Get the duration of all run queries in milliseconds. + * + * @return float + * @static + */ public static function totalQueryDuration() + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->totalQueryDuration(); + } + /** + * Reset the duration of all run queries. + * + * @return void + * @static + */ 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. + * + * @param \Closure $callback + * @return \Illuminate\Database\MySqlConnection + * @static + */ public static function beforeExecuting($callback) + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->beforeExecuting($callback); + } + /** + * Register a database query listener with the connection. + * + * @param \Closure $callback + * @return void + * @static + */ public static function listen($callback) + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + $instance->listen($callback); + } + /** + * Get a new raw query expression. + * + * @param mixed $value + * @return \Illuminate\Contracts\Database\Query\Expression + * @static + */ 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() + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->hasModifiedRecords(); + } + /** + * Indicate if any records have been modified. + * + * @param bool $value + * @return void + * @static + */ public static function recordsHaveBeenModified($value = true) + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + $instance->recordsHaveBeenModified($value); + } + /** + * Set the record modification state. + * + * @param bool $value + * @return \Illuminate\Database\MySqlConnection + * @static + */ public static function setRecordModificationState($value) + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->setRecordModificationState($value); + } + /** + * Reset the record modification state. + * + * @return void + * @static + */ public static function forgetRecordModificationState() + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + $instance->forgetRecordModificationState(); + } + /** + * Indicate that the connection should use the write PDO connection for reads. + * + * @param bool $value + * @return \Illuminate\Database\MySqlConnection + * @static + */ public static function useWriteConnectionWhenReading($value = true) + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->useWriteConnectionWhenReading($value); + } + /** + * Get the current PDO connection. + * + * @return \PDO + * @static + */ public static function getPdo() + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->getPdo(); + } + /** + * Get the current PDO connection parameter without executing any reconnect logic. + * + * @return \PDO|\Closure|null + * @static + */ public static function getRawPdo() + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->getRawPdo(); + } + /** + * Get the current PDO connection used for reading. + * + * @return \PDO + * @static + */ public static function getReadPdo() + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->getReadPdo(); + } + /** + * Get the current read PDO connection parameter without executing any reconnect logic. + * + * @return \PDO|\Closure|null + * @static + */ public static function getRawReadPdo() + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->getRawReadPdo(); + } + /** + * Set the PDO connection. + * + * @param \PDO|\Closure|null $pdo + * @return \Illuminate\Database\MySqlConnection + * @static + */ public static function setPdo($pdo) + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->setPdo($pdo); + } + /** + * Set the PDO connection used for reading. + * + * @param \PDO|\Closure|null $pdo + * @return \Illuminate\Database\MySqlConnection + * @static + */ public static function setReadPdo($pdo) + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->setReadPdo($pdo); + } + /** + * Get the database connection name. + * + * @return string|null + * @static + */ public static function getName() + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->getName(); + } + /** + * Get the database connection full name. + * + * @return string|null + * @static + */ public static function getNameWithReadWriteType() + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->getNameWithReadWriteType(); + } + /** + * Get an option from the configuration options. + * + * @param string|null $option + * @return mixed + * @static + */ public static function getConfig($option = null) + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->getConfig($option); + } + /** + * Get the PDO driver name. + * + * @return string + * @static + */ public static function getDriverName() + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->getDriverName(); + } + /** + * Get the query grammar used by the connection. + * + * @return \Illuminate\Database\Query\Grammars\Grammar + * @static + */ public static function getQueryGrammar() + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->getQueryGrammar(); + } + /** + * Set the query grammar used by the connection. + * + * @param \Illuminate\Database\Query\Grammars\Grammar $grammar + * @return \Illuminate\Database\MySqlConnection + * @static + */ public static function setQueryGrammar($grammar) + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->setQueryGrammar($grammar); + } + /** + * Get the schema grammar used by the connection. + * + * @return \Illuminate\Database\Schema\Grammars\Grammar + * @static + */ public static function getSchemaGrammar() + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->getSchemaGrammar(); + } + /** + * Set the schema grammar used by the connection. + * + * @param \Illuminate\Database\Schema\Grammars\Grammar $grammar + * @return \Illuminate\Database\MySqlConnection + * @static + */ public static function setSchemaGrammar($grammar) + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->setSchemaGrammar($grammar); + } + /** + * Get the query post processor used by the connection. + * + * @return \Illuminate\Database\Query\Processors\Processor + * @static + */ public static function getPostProcessor() + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->getPostProcessor(); + } + /** + * Set the query post processor used by the connection. + * + * @param \Illuminate\Database\Query\Processors\Processor $processor + * @return \Illuminate\Database\MySqlConnection + * @static + */ public static function setPostProcessor($processor) + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->setPostProcessor($processor); + } + /** + * Get the event dispatcher used by the connection. + * + * @return \Illuminate\Contracts\Events\Dispatcher + * @static + */ public static function getEventDispatcher() + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->getEventDispatcher(); + } + /** + * Set the event dispatcher instance on the connection. + * + * @param \Illuminate\Contracts\Events\Dispatcher $events + * @return \Illuminate\Database\MySqlConnection + * @static + */ public static function setEventDispatcher($events) + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->setEventDispatcher($events); + } + /** + * Unset the event dispatcher for this connection. + * + * @return void + * @static + */ public static function unsetEventDispatcher() + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + $instance->unsetEventDispatcher(); + } + /** + * Set the transaction manager instance on the connection. + * + * @param \Illuminate\Database\DatabaseTransactionsManager $manager + * @return \Illuminate\Database\MySqlConnection + * @static + */ public static function setTransactionManager($manager) + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->setTransactionManager($manager); + } + /** + * Unset the transaction manager for this connection. + * + * @return void + * @static + */ public static function unsetTransactionManager() + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + $instance->unsetTransactionManager(); + } + /** + * Determine if the connection is in a "dry run". + * + * @return bool + * @static + */ public static function pretending() + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->pretending(); + } + /** + * Get the connection query log. + * + * @return array + * @static + */ 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() + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + $instance->flushQueryLog(); + } + /** + * Enable the query log on the connection. + * + * @return void + * @static + */ public static function enableQueryLog() + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + $instance->enableQueryLog(); + } + /** + * Disable the query log on the connection. + * + * @return void + * @static + */ public static function disableQueryLog() + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + $instance->disableQueryLog(); + } + /** + * Determine whether we're logging queries. + * + * @return bool + * @static + */ public static function logging() + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->logging(); + } + /** + * Get the name of the connected database. + * + * @return string + * @static + */ public static function getDatabaseName() + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->getDatabaseName(); + } + /** + * Set the name of the connected database. + * + * @param string $database + * @return \Illuminate\Database\MySqlConnection + * @static + */ public static function setDatabaseName($database) + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->setDatabaseName($database); + } + /** + * Set the read / write type of the connection. + * + * @param string|null $readWriteType + * @return \Illuminate\Database\MySqlConnection + * @static + */ public static function setReadWriteType($readWriteType) + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->setReadWriteType($readWriteType); + } + /** + * Get the table prefix for the connection. + * + * @return string + * @static + */ public static function getTablePrefix() + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->getTablePrefix(); + } + /** + * Set the table prefix in use by the connection. + * + * @param string $prefix + * @return \Illuminate\Database\MySqlConnection + * @static + */ public static function setTablePrefix($prefix) + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->setTablePrefix($prefix); + } + /** + * Set the table prefix and return the grammar. + * + * @param \Illuminate\Database\Grammar $grammar + * @return \Illuminate\Database\Grammar + * @static + */ public static function withTablePrefix($grammar) + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->withTablePrefix($grammar); + } + /** + * Register a connection resolver. + * + * @param string $driver + * @param \Closure $callback + * @return void + * @static + */ public static function resolverFor($driver, $callback) + { //Method inherited from \Illuminate\Database\Connection + \Illuminate\Database\MySqlConnection::resolverFor($driver, $callback); + } + /** + * Get the connection resolver for the given driver. + * + * @param string $driver + * @return mixed + * @static + */ public static function getResolver($driver) + { //Method inherited from \Illuminate\Database\Connection + return \Illuminate\Database\MySqlConnection::getResolver($driver); + } + /** + * Execute a Closure within a transaction. + * + * @param \Closure $callback + * @param int $attempts + * @return mixed + * @throws \Throwable + * @static + */ public static function transaction($callback, $attempts = 1) + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->transaction($callback, $attempts); + } + /** + * Start a new database transaction. + * + * @return void + * @throws \Throwable + * @static + */ public static function beginTransaction() + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + $instance->beginTransaction(); + } + /** + * Commit the active database transaction. + * + * @return void + * @throws \Throwable + * @static + */ public static function commit() + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + $instance->commit(); + } + /** + * Rollback the active database transaction. + * + * @param int|null $toLevel + * @return void + * @throws \Throwable + * @static + */ public static function rollBack($toLevel = null) + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + $instance->rollBack($toLevel); + } + /** + * Get the number of active transactions. + * + * @return int + * @static + */ public static function transactionLevel() + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->transactionLevel(); + } + /** + * Execute the callback after a transaction commits. + * + * @param callable $callback + * @return void + * @throws \RuntimeException + * @static + */ 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 { + /** + * Register an event listener with the dispatcher. + * + * @param \Closure|string|array $events + * @param \Closure|string|array|null $listener + * @return void + * @static + */ public static function listen($events, $listener = null) + { + /** @var \Illuminate\Events\Dispatcher $instance */ + $instance->listen($events, $listener); + } + /** + * Determine if a given event has listeners. + * + * @param string $eventName + * @return bool + * @static + */ public static function hasListeners($eventName) + { + /** @var \Illuminate\Events\Dispatcher $instance */ + return $instance->hasListeners($eventName); + } + /** + * Determine if the given event has any wildcard listeners. * - * @param callable $reconnector + * @param string $eventName + * @return bool + * @static + */ public static function hasWildcardListeners($eventName) + { + /** @var \Illuminate\Events\Dispatcher $instance */ + return $instance->hasWildcardListeners($eventName); + } + /** + * Register an event and payload to be fired later. + * + * @param string $event + * @param object|array $payload * @return void * @static - */ - public static function setReconnector($reconnector) + */ public static function push($event, $payload = []) { - /** @var \Illuminate\Database\DatabaseManager $instance */ - $instance->setReconnector($reconnector); + /** @var \Illuminate\Events\Dispatcher $instance */ + $instance->push($event, $payload); } /** - * Set the application instance used by the manager. + * Flush a set of pushed events. * - * @param \Illuminate\Contracts\Foundation\Application $app - * @return \Illuminate\Database\DatabaseManager + * @param string $event + * @return void * @static - */ - public static function setApplication($app) + */ public static function flush($event) { - /** @var \Illuminate\Database\DatabaseManager $instance */ - return $instance->setApplication($app); + /** @var \Illuminate\Events\Dispatcher $instance */ + $instance->flush($event); + } + /** + * Register an event subscriber with the dispatcher. + * + * @param object|string $subscriber + * @return void + * @static + */ public static function subscribe($subscriber) + { + /** @var \Illuminate\Events\Dispatcher $instance */ + $instance->subscribe($subscriber); + } + /** + * Fire an event until the first non-null response is returned. + * + * @param string|object $event + * @param mixed $payload + * @return mixed + * @static + */ public static function until($event, $payload = []) + { + /** @var \Illuminate\Events\Dispatcher $instance */ + return $instance->until($event, $payload); + } + /** + * Fire an event and call the listeners. + * + * @param string|object $event + * @param mixed $payload + * @param bool $halt + * @return array|null + * @static + */ public static function dispatch($event, $payload = [], $halt = false) + { + /** @var \Illuminate\Events\Dispatcher $instance */ + return $instance->dispatch($event, $payload, $halt); + } + /** + * Get all of the listeners for a given event name. + * + * @param string $eventName + * @return array + * @static + */ public static function getListeners($eventName) + { + /** @var \Illuminate\Events\Dispatcher $instance */ + return $instance->getListeners($eventName); + } + /** + * Register an event listener with the dispatcher. + * + * @param \Closure|string|array $listener + * @param bool $wildcard + * @return \Closure + * @static + */ public static function makeListener($listener, $wildcard = false) + { + /** @var \Illuminate\Events\Dispatcher $instance */ + return $instance->makeListener($listener, $wildcard); + } + /** + * Create a class based listener using the IoC container. + * + * @param string $listener + * @param bool $wildcard + * @return \Closure + * @static + */ public static function createClassListener($listener, $wildcard = false) + { + /** @var \Illuminate\Events\Dispatcher $instance */ + return $instance->createClassListener($listener, $wildcard); + } + /** + * Remove a set of listeners from the dispatcher. + * + * @param string $event + * @return void + * @static + */ public static function forget($event) + { + /** @var \Illuminate\Events\Dispatcher $instance */ + $instance->forget($event); + } + /** + * Forget all of the pushed listeners. + * + * @return void + * @static + */ public static function forgetPushed() + { + /** @var \Illuminate\Events\Dispatcher $instance */ + $instance->forgetPushed(); + } + /** + * Set the queue resolver implementation. + * + * @param callable $resolver + * @return \Illuminate\Events\Dispatcher + * @static + */ 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() + { + /** @var \Illuminate\Events\Dispatcher $instance */ + return $instance->getRawListeners(); } /** * Register a custom macro. @@ -5082,10 +6573,9 @@ 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); + \Illuminate\Events\Dispatcher::macro($name, $macro); } /** * Mix another object into the class. @@ -5095,10 +6585,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\Database\DatabaseManager::mixin($mixin, $replace); + \Illuminate\Events\Dispatcher::mixin($mixin, $replace); } /** * Checks if macro is registered. @@ -5106,13123 +6595,12102 @@ 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); + return \Illuminate\Events\Dispatcher::hasMacro($name); } /** * Flush the existing macros. * * @return void * @static - */ - public static function flushMacros() + */ public static function flushMacros() { - \Illuminate\Database\DatabaseManager::flushMacros(); + \Illuminate\Events\Dispatcher::flushMacros(); } /** - * Dynamically handle calls to the class. + * Specify the events that should be dispatched instead of faked. * - * @param string $method - * @param array $parameters - * @return mixed - * @throws \BadMethodCallException + * @param array|string $eventsToDispatch + * @return \Illuminate\Support\Testing\Fakes\EventFake * @static - */ - public static function macroCall($method, $parameters) + */ public static function except($eventsToDispatch) { - /** @var \Illuminate\Database\DatabaseManager $instance */ - return $instance->macroCall($method, $parameters); + /** @var \Illuminate\Support\Testing\Fakes\EventFake $instance */ + return $instance->except($eventsToDispatch); } /** - * Determine if the connected database is a MariaDB database. + * Assert if an event has a listener attached to it. * - * @return bool + * @param string $expectedEvent + * @param string|array $expectedListener + * @return void * @static - */ - public static function isMaria() + */ public static function assertListening($expectedEvent, $expectedListener) { - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->isMaria(); + /** @var \Illuminate\Support\Testing\Fakes\EventFake $instance */ + $instance->assertListening($expectedEvent, $expectedListener); } /** - * Get a schema builder instance for the connection. + * Assert if an event was dispatched based on a truth-test callback. * - * @return \Illuminate\Database\Schema\MySqlBuilder + * @param string|\Closure $event + * @param callable|int|null $callback + * @return void * @static - */ - public static function getSchemaBuilder() + */ public static function assertDispatched($event, $callback = null) { - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->getSchemaBuilder(); + /** @var \Illuminate\Support\Testing\Fakes\EventFake $instance */ + $instance->assertDispatched($event, $callback); } /** - * Get the schema state for the connection. + * Assert if an event was dispatched a number of times. * - * @param \Illuminate\Filesystem\Filesystem|null $files - * @param callable|null $processFactory - * @return \Illuminate\Database\Schema\MySqlSchemaState + * @param string $event + * @param int $times + * @return void * @static - */ - public static function getSchemaState($files = null, $processFactory = null) + */ public static function assertDispatchedTimes($event, $times = 1) { - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->getSchemaState($files, $processFactory); + /** @var \Illuminate\Support\Testing\Fakes\EventFake $instance */ + $instance->assertDispatchedTimes($event, $times); } /** - * Set the query grammar to the default implementation. + * Determine if an event was dispatched based on a truth-test callback. * + * @param string|\Closure $event + * @param callable|null $callback * @return void * @static - */ - public static function useDefaultQueryGrammar() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - $instance->useDefaultQueryGrammar(); + */ public static function assertNotDispatched($event, $callback = null) + { + /** @var \Illuminate\Support\Testing\Fakes\EventFake $instance */ + $instance->assertNotDispatched($event, $callback); + } + /** + * Assert that no events were dispatched. + * + * @return void + * @static + */ public static function assertNothingDispatched() + { + /** @var \Illuminate\Support\Testing\Fakes\EventFake $instance */ + $instance->assertNothingDispatched(); + } + /** + * Get all of the events matching a truth-test callback. + * + * @param string $event + * @param callable|null $callback + * @return \Illuminate\Support\Collection + * @static + */ public static function dispatched($event, $callback = null) + { + /** @var \Illuminate\Support\Testing\Fakes\EventFake $instance */ + return $instance->dispatched($event, $callback); + } + /** + * Determine if the given event has been dispatched. + * + * @param string $event + * @return bool + * @static + */ public static function hasDispatched($event) + { + /** @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(); + } + } + /** + * + * + * @see \Illuminate\Filesystem\Filesystem + */ class File { + /** + * Determine if a file or directory exists. + * + * @param string $path + * @return bool + * @static + */ public static function exists($path) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->exists($path); } /** - * Set the schema grammar to the default implementation. + * Determine if a file or directory is missing. * - * @return void + * @param string $path + * @return bool * @static - */ - public static function useDefaultSchemaGrammar() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - $instance->useDefaultSchemaGrammar(); + */ public static function missing($path) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->missing($path); } /** - * Set the query post processor to the default implementation. + * Get the contents of a file. * - * @return void + * @param string $path + * @param bool $lock + * @return string + * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException * @static - */ - public static function useDefaultPostProcessor() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - $instance->useDefaultPostProcessor(); + */ public static function get($path, $lock = false) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->get($path, $lock); } /** - * Begin a fluent query against a database table. + * Get the contents of a file as decoded JSON. * - * @param \Closure|\Illuminate\Database\Query\Builder|string $table - * @param string|null $as - * @return \Illuminate\Database\Query\Builder + * @param string $path + * @param int $flags + * @param bool $lock + * @return array + * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException * @static - */ - public static function table($table, $as = null) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->table($table, $as); + */ public static function json($path, $flags = 0, $lock = false) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->json($path, $flags, $lock); } /** - * Get a new query builder instance. + * Get contents of a file with shared access. * - * @return \Illuminate\Database\Query\Builder + * @param string $path + * @return string * @static - */ - public static function query() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->query(); + */ public static function sharedGet($path) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->sharedGet($path); } /** - * Run a select statement and return a single result. + * Get the returned value of a file. * - * @param string $query - * @param array $bindings - * @param bool $useReadPdo + * @param string $path + * @param array $data * @return mixed + * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException * @static - */ - 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); + */ public static function getRequire($path, $data = []) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->getRequire($path, $data); } /** - * Run a select statement and return the first column of the first row. + * Require the given file once. * - * @param string $query - * @param array $bindings - * @param bool $useReadPdo + * @param string $path + * @param array $data * @return mixed - * @throws \Illuminate\Database\MultipleColumnsSelectedException + * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException * @static - */ - 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); + */ public static function requireOnce($path, $data = []) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->requireOnce($path, $data); } /** - * Run a select statement against the database. + * Get the contents of a file one line at a time. * - * @param string $query - * @param array $bindings - * @return array + * @param string $path + * @return \Illuminate\Support\LazyCollection + * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException * @static - */ - public static function selectFromWriteConnection($query, $bindings = []) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->selectFromWriteConnection($query, $bindings); + */ public static function lines($path) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->lines($path); } /** - * Run a select statement against the database. + * Get the hash of the file at the given path. * - * @param string $query - * @param array $bindings - * @param bool $useReadPdo - * @return array + * @param string $path + * @param string $algorithm + * @return string * @static - */ - 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); + */ public static function hash($path, $algorithm = 'md5') + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->hash($path, $algorithm); } /** - * Run a select statement against the database and returns a generator. + * Write the contents of a file. * - * @param string $query - * @param array $bindings - * @param bool $useReadPdo - * @return \Generator + * @param string $path + * @param string $contents + * @param bool $lock + * @return int|bool * @static - */ - 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); + */ public static function put($path, $contents, $lock = false) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->put($path, $contents, $lock); } /** - * Run an insert statement against the database. + * Write the contents of a file, replacing it atomically if it already exists. * - * @param string $query - * @param array $bindings - * @return bool + * @param string $path + * @param string $content + * @param int|null $mode + * @return void * @static - */ - public static function insert($query, $bindings = []) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->insert($query, $bindings); + */ public static function replace($path, $content, $mode = null) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + $instance->replace($path, $content, $mode); } /** - * Run an update statement against the database. + * Replace a given string within a given file. * - * @param string $query - * @param array $bindings - * @return int + * @param array|string $search + * @param array|string $replace + * @param string $path + * @return void * @static - */ - public static function update($query, $bindings = []) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->update($query, $bindings); + */ public static function replaceInFile($search, $replace, $path) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + $instance->replaceInFile($search, $replace, $path); } /** - * Run a delete statement against the database. + * Prepend to a file. * - * @param string $query - * @param array $bindings + * @param string $path + * @param string $data * @return int * @static - */ - public static function delete($query, $bindings = []) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->delete($query, $bindings); + */ public static function prepend($path, $data) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->prepend($path, $data); } /** - * Execute an SQL statement and return the boolean result. + * Append to a file. * - * @param string $query - * @param array $bindings - * @return bool + * @param string $path + * @param string $data + * @param bool $lock + * @return int * @static - */ - public static function statement($query, $bindings = []) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->statement($query, $bindings); + */ public static function append($path, $data, $lock = false) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->append($path, $data, $lock); } /** - * Run an SQL statement and get the number of rows affected. + * Get or set UNIX mode of a file or directory. * - * @param string $query - * @param array $bindings - * @return int + * @param string $path + * @param int|null $mode + * @return mixed * @static - */ - public static function affectingStatement($query, $bindings = []) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->affectingStatement($query, $bindings); + */ public static function chmod($path, $mode = null) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->chmod($path, $mode); } /** - * Run a raw, unprepared query against the PDO connection. + * Delete the file at a given path. * - * @param string $query + * @param string|array $paths * @return bool * @static - */ - public static function unprepared($query) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->unprepared($query); + */ public static function delete($paths) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->delete($paths); } /** - * Execute the given callback in "dry run" mode. + * Move a file to a new location. * - * @param \Closure $callback - * @return array + * @param string $path + * @param string $target + * @return bool * @static - */ - public static function pretend($callback) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->pretend($callback); + */ public static function move($path, $target) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->move($path, $target); } /** - * Bind values to their parameters in the given statement. + * Copy a file to a new location. * - * @param \PDOStatement $statement - * @param array $bindings - * @return void + * @param string $path + * @param string $target + * @return bool * @static - */ - public static function bindValues($statement, $bindings) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - $instance->bindValues($statement, $bindings); + */ public static function copy($path, $target) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->copy($path, $target); } /** - * Prepare the query bindings for execution. + * Create a symlink to the target file or directory. On Windows, a hard link is created if the target is a file. * - * @param array $bindings - * @return array + * @param string $target + * @param string $link + * @return bool|null * @static - */ - public static function prepareBindings($bindings) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->prepareBindings($bindings); + */ public static function link($target, $link) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->link($target, $link); } /** - * Log a query in the connection's query log. + * Create a relative symlink to the target file or directory. * - * @param string $query - * @param array $bindings - * @param float|null $time + * @param string $target + * @param string $link * @return void + * @throws \RuntimeException * @static - */ - public static function logQuery($query, $bindings, $time = null) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - $instance->logQuery($query, $bindings, $time); + */ public static function relativeLink($target, $link) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + $instance->relativeLink($target, $link); } /** - * Register a callback to be invoked when the connection queries for longer than a given amount of time. + * Extract the file name from a file path. * - * @param \DateTimeInterface|\Carbon\CarbonInterval|float|int $threshold - * @param callable $handler - * @return void + * @param string $path + * @return string * @static - */ - public static function whenQueryingForLongerThan($threshold, $handler) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - $instance->whenQueryingForLongerThan($threshold, $handler); + */ public static function name($path) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->name($path); } /** - * Allow all the query duration handlers to run again, even if they have already run. + * Extract the trailing name component from a file path. * - * @return void + * @param string $path + * @return string * @static - */ - public static function allowQueryDurationHandlersToRunAgain() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - $instance->allowQueryDurationHandlersToRunAgain(); + */ public static function basename($path) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->basename($path); } /** - * Get the duration of all run queries in milliseconds. + * Extract the parent directory from a file path. * - * @return float + * @param string $path + * @return string * @static - */ - public static function totalQueryDuration() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->totalQueryDuration(); + */ public static function dirname($path) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->dirname($path); } /** - * Reset the duration of all run queries. + * Extract the file extension from a file path. * - * @return void + * @param string $path + * @return string * @static - */ - public static function resetTotalQueryDuration() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - $instance->resetTotalQueryDuration(); + */ public static function extension($path) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->extension($path); } /** - * Register a hook to be run just before a database query is executed. + * Guess the file extension from the mime-type of a given file. * - * @param \Closure $callback - * @return \Illuminate\Database\MySqlConnection + * @param string $path + * @return string|null + * @throws \RuntimeException * @static - */ - public static function beforeExecuting($callback) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->beforeExecuting($callback); + */ public static function guessExtension($path) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->guessExtension($path); } /** - * Register a database query listener with the connection. + * Get the file type of a given file. * - * @param \Closure $callback - * @return void + * @param string $path + * @return string * @static - */ - public static function listen($callback) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - $instance->listen($callback); + */ public static function type($path) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->type($path); } /** - * Get a new raw query expression. + * Get the mime-type of a given file. * - * @param mixed $value - * @return \Illuminate\Database\Query\Expression + * @param string $path + * @return string|false * @static - */ - public static function raw($value) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->raw($value); + */ public static function mimeType($path) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->mimeType($path); } /** - * Determine if the database connection has modified any database records. + * Get the file size of a given file. * - * @return bool + * @param string $path + * @return int * @static - */ - public static function hasModifiedRecords() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->hasModifiedRecords(); + */ public static function size($path) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->size($path); } /** - * Indicate if any records have been modified. + * Get the file's last modification time. * - * @param bool $value - * @return void + * @param string $path + * @return int * @static - */ - public static function recordsHaveBeenModified($value = true) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - $instance->recordsHaveBeenModified($value); + */ public static function lastModified($path) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->lastModified($path); } /** - * Set the record modification state. + * Determine if the given path is a directory. * - * @param bool $value - * @return \Illuminate\Database\MySqlConnection + * @param string $directory + * @return bool * @static - */ - public static function setRecordModificationState($value) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->setRecordModificationState($value); + */ public static function isDirectory($directory) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->isDirectory($directory); } /** - * Reset the record modification state. + * Determine if the given path is a directory that does not contain any other files or directories. * - * @return void + * @param string $directory + * @param bool $ignoreDotFiles + * @return bool * @static - */ - public static function forgetRecordModificationState() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - $instance->forgetRecordModificationState(); + */ public static function isEmptyDirectory($directory, $ignoreDotFiles = false) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->isEmptyDirectory($directory, $ignoreDotFiles); } /** - * Indicate that the connection should use the write PDO connection for reads. + * Determine if the given path is readable. * - * @param bool $value - * @return \Illuminate\Database\MySqlConnection + * @param string $path + * @return bool * @static - */ - public static function useWriteConnectionWhenReading($value = true) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->useWriteConnectionWhenReading($value); + */ public static function isReadable($path) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->isReadable($path); } /** - * Is Doctrine available? + * Determine if the given path is writable. * + * @param string $path * @return bool * @static - */ - public static function isDoctrineAvailable() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->isDoctrineAvailable(); + */ public static function isWritable($path) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->isWritable($path); } /** - * Indicates whether native alter operations will be used when dropping or renaming columns, even if Doctrine DBAL is installed. + * Determine if two files are the same by comparing their hashes. * + * @param string $firstFile + * @param string $secondFile * @return bool * @static - */ - public static function usingNativeSchemaOperations() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->usingNativeSchemaOperations(); + */ public static function hasSameHash($firstFile, $secondFile) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->hasSameHash($firstFile, $secondFile); } /** - * Get a Doctrine Schema Column instance. + * Determine if the given path is a file. * - * @param string $table - * @param string $column - * @return \Doctrine\DBAL\Schema\Column + * @param string $file + * @return bool * @static - */ - public static function getDoctrineColumn($table, $column) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->getDoctrineColumn($table, $column); + */ public static function isFile($file) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->isFile($file); } /** - * Get the Doctrine DBAL schema manager for the connection. + * Find path names matching a given pattern. * - * @return \Doctrine\DBAL\Schema\AbstractSchemaManager + * @param string $pattern + * @param int $flags + * @return array * @static - */ - public static function getDoctrineSchemaManager() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->getDoctrineSchemaManager(); + */ public static function glob($pattern, $flags = 0) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->glob($pattern, $flags); } /** - * Get the Doctrine DBAL database connection instance. + * Get an array of all files in a directory. * - * @return \Doctrine\DBAL\Connection + * @param string $directory + * @param bool $hidden + * @return \Symfony\Component\Finder\SplFileInfo[] * @static - */ - public static function getDoctrineConnection() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->getDoctrineConnection(); + */ public static function files($directory, $hidden = false) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->files($directory, $hidden); } /** - * Get the current PDO connection. + * Get all of the files from the given directory (recursive). * - * @return \PDO + * @param string $directory + * @param bool $hidden + * @return \Symfony\Component\Finder\SplFileInfo[] * @static - */ - public static function getPdo() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->getPdo(); + */ public static function allFiles($directory, $hidden = false) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->allFiles($directory, $hidden); } /** - * Get the current PDO connection parameter without executing any reconnect logic. + * Get all of the directories within a given directory. * - * @return \PDO|\Closure|null + * @param string $directory + * @return array * @static - */ - public static function getRawPdo() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->getRawPdo(); + */ public static function directories($directory) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->directories($directory); } /** - * Get the current PDO connection used for reading. + * Ensure a directory exists. * - * @return \PDO + * @param string $path + * @param int $mode + * @param bool $recursive + * @return void * @static - */ - public static function getReadPdo() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->getReadPdo(); + */ public static function ensureDirectoryExists($path, $mode = 493, $recursive = true) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + $instance->ensureDirectoryExists($path, $mode, $recursive); } /** - * Get the current read PDO connection parameter without executing any reconnect logic. + * Create a directory. * - * @return \PDO|\Closure|null + * @param string $path + * @param int $mode + * @param bool $recursive + * @param bool $force + * @return bool * @static - */ - public static function getRawReadPdo() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->getRawReadPdo(); + */ public static function makeDirectory($path, $mode = 493, $recursive = false, $force = false) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->makeDirectory($path, $mode, $recursive, $force); } /** - * Set the PDO connection. + * Move a directory. * - * @param \PDO|\Closure|null $pdo - * @return \Illuminate\Database\MySqlConnection + * @param string $from + * @param string $to + * @param bool $overwrite + * @return bool * @static - */ - public static function setPdo($pdo) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->setPdo($pdo); + */ public static function moveDirectory($from, $to, $overwrite = false) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->moveDirectory($from, $to, $overwrite); } /** - * Set the PDO connection used for reading. - * - * @param \PDO|\Closure|null $pdo - * @return \Illuminate\Database\MySqlConnection + * Copy a directory from one location to another. + * + * @param string $directory + * @param string $destination + * @param int|null $options + * @return bool * @static - */ - public static function setReadPdo($pdo) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->setReadPdo($pdo); + */ public static function copyDirectory($directory, $destination, $options = null) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->copyDirectory($directory, $destination, $options); } /** - * Get the database connection name. + * Recursively delete a directory. + * + * The directory itself may be optionally preserved. * - * @return string|null + * @param string $directory + * @param bool $preserve + * @return bool * @static - */ - public static function getName() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->getName(); + */ public static function deleteDirectory($directory, $preserve = false) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->deleteDirectory($directory, $preserve); } /** - * Get the database connection full name. + * Remove all of the directories within a given directory. * - * @return string|null + * @param string $directory + * @return bool * @static - */ - public static function getNameWithReadWriteType() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->getNameWithReadWriteType(); + */ public static function deleteDirectories($directory) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->deleteDirectories($directory); } /** - * Get an option from the configuration options. + * Empty the specified directory of all files and folders. * - * @param string|null $option - * @return mixed + * @param string $directory + * @return bool * @static - */ - public static function getConfig($option = null) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->getConfig($option); + */ public static function cleanDirectory($directory) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->cleanDirectory($directory); } /** - * Get the PDO driver name. + * Apply the callback if the given "value" is (or resolves to) truthy. * - * @return string + * @template TWhenParameter + * @template TWhenReturnType + * @param \Illuminate\Filesystem\(\Closure($this): TWhenParameter)|TWhenParameter|null $value + * @param \Illuminate\Filesystem\(callable($this, TWhenParameter): TWhenReturnType)|null $callback + * @param \Illuminate\Filesystem\(callable($this, TWhenParameter): TWhenReturnType)|null $default + * @return $this|\Illuminate\Filesystem\TWhenReturnType * @static - */ - public static function getDriverName() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->getDriverName(); + */ public static function when($value = null, $callback = null, $default = null) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->when($value, $callback, $default); } /** - * Get the query grammar used by the connection. + * Apply the callback if the given "value" is (or resolves to) falsy. * - * @return \Illuminate\Database\Query\Grammars\Grammar + * @template TUnlessParameter + * @template TUnlessReturnType + * @param \Illuminate\Filesystem\(\Closure($this): TUnlessParameter)|TUnlessParameter|null $value + * @param \Illuminate\Filesystem\(callable($this, TUnlessParameter): TUnlessReturnType)|null $callback + * @param \Illuminate\Filesystem\(callable($this, TUnlessParameter): TUnlessReturnType)|null $default + * @return $this|\Illuminate\Filesystem\TUnlessReturnType * @static - */ - public static function getQueryGrammar() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->getQueryGrammar(); + */ public static function unless($value = null, $callback = null, $default = null) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->unless($value, $callback, $default); } /** - * Set the query grammar used by the connection. + * Register a custom macro. * - * @param \Illuminate\Database\Query\Grammars\Grammar $grammar - * @return \Illuminate\Database\MySqlConnection + * @param string $name + * @param object|callable $macro + * @return void * @static - */ - public static function setQueryGrammar($grammar) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->setQueryGrammar($grammar); + */ public static function macro($name, $macro) + { + \Illuminate\Filesystem\Filesystem::macro($name, $macro); } /** - * Get the schema grammar used by the connection. + * Mix another object into the class. * - * @return \Illuminate\Database\Schema\Grammars\Grammar + * @param object $mixin + * @param bool $replace + * @return void + * @throws \ReflectionException * @static - */ - public static function getSchemaGrammar() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->getSchemaGrammar(); + */ public static function mixin($mixin, $replace = true) + { + \Illuminate\Filesystem\Filesystem::mixin($mixin, $replace); } /** - * Set the schema grammar used by the connection. + * Checks if macro is registered. * - * @param \Illuminate\Database\Schema\Grammars\Grammar $grammar - * @return \Illuminate\Database\MySqlConnection + * @param string $name + * @return bool * @static - */ - public static function setSchemaGrammar($grammar) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->setSchemaGrammar($grammar); + */ public static function hasMacro($name) + { + return \Illuminate\Filesystem\Filesystem::hasMacro($name); } /** - * Get the query post processor used by the connection. + * Flush the existing macros. * - * @return \Illuminate\Database\Query\Processors\Processor + * @return void * @static - */ - public static function getPostProcessor() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->getPostProcessor(); + */ public static function flushMacros() + { + \Illuminate\Filesystem\Filesystem::flushMacros(); } + } + /** + * + * + * @see \Illuminate\Auth\Access\Gate + */ class Gate { /** - * Set the query post processor used by the connection. + * Determine if a given ability has been defined. * - * @param \Illuminate\Database\Query\Processors\Processor $processor - * @return \Illuminate\Database\MySqlConnection + * @param string|array $ability + * @return bool * @static - */ - public static function setPostProcessor($processor) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->setPostProcessor($processor); + */ public static function has($ability) + { + /** @var \Illuminate\Auth\Access\Gate $instance */ + return $instance->has($ability); } /** - * Get the event dispatcher used by the connection. + * Perform an on-demand authorization check. Throw an authorization exception if the condition or callback is false. * - * @return \Illuminate\Contracts\Events\Dispatcher + * @param \Illuminate\Auth\Access\Response|\Closure|bool $condition + * @param string|null $message + * @param string|null $code + * @return \Illuminate\Auth\Access\Response + * @throws \Illuminate\Auth\Access\AuthorizationException * @static - */ - public static function getEventDispatcher() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->getEventDispatcher(); + */ public static function allowIf($condition, $message = null, $code = null) + { + /** @var \Illuminate\Auth\Access\Gate $instance */ + return $instance->allowIf($condition, $message, $code); } /** - * Set the event dispatcher instance on the connection. + * Perform an on-demand authorization check. Throw an authorization exception if the condition or callback is true. * - * @param \Illuminate\Contracts\Events\Dispatcher $events - * @return \Illuminate\Database\MySqlConnection + * @param \Illuminate\Auth\Access\Response|\Closure|bool $condition + * @param string|null $message + * @param string|null $code + * @return \Illuminate\Auth\Access\Response + * @throws \Illuminate\Auth\Access\AuthorizationException * @static - */ - public static function setEventDispatcher($events) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->setEventDispatcher($events); + */ public static function denyIf($condition, $message = null, $code = null) + { + /** @var \Illuminate\Auth\Access\Gate $instance */ + return $instance->denyIf($condition, $message, $code); } /** - * Unset the event dispatcher for this connection. + * Define a new ability. * - * @return void + * @param string $ability + * @param callable|array|string $callback + * @return \Illuminate\Auth\Access\Gate + * @throws \InvalidArgumentException * @static - */ - public static function unsetEventDispatcher() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - $instance->unsetEventDispatcher(); + */ public static function define($ability, $callback) + { + /** @var \Illuminate\Auth\Access\Gate $instance */ + return $instance->define($ability, $callback); } /** - * Set the transaction manager instance on the connection. + * Define abilities for a resource. * - * @param \Illuminate\Database\DatabaseTransactionsManager $manager - * @return \Illuminate\Database\MySqlConnection + * @param string $name + * @param string $class + * @param array|null $abilities + * @return \Illuminate\Auth\Access\Gate * @static - */ - public static function setTransactionManager($manager) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->setTransactionManager($manager); + */ public static function resource($name, $class, $abilities = null) + { + /** @var \Illuminate\Auth\Access\Gate $instance */ + return $instance->resource($name, $class, $abilities); } /** - * Unset the transaction manager for this connection. + * Define a policy class for a given class type. * - * @return void + * @param string $class + * @param string $policy + * @return \Illuminate\Auth\Access\Gate * @static - */ - public static function unsetTransactionManager() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - $instance->unsetTransactionManager(); + */ public static function policy($class, $policy) + { + /** @var \Illuminate\Auth\Access\Gate $instance */ + return $instance->policy($class, $policy); } /** - * Determine if the connection is in a "dry run". + * Register a callback to run before all Gate checks. * - * @return bool + * @param callable $callback + * @return \Illuminate\Auth\Access\Gate * @static - */ - public static function pretending() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->pretending(); + */ public static function before($callback) + { + /** @var \Illuminate\Auth\Access\Gate $instance */ + return $instance->before($callback); } /** - * Get the connection query log. + * Register a callback to run after all Gate checks. * - * @return array + * @param callable $callback + * @return \Illuminate\Auth\Access\Gate * @static - */ - public static function getQueryLog() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->getQueryLog(); + */ public static function after($callback) + { + /** @var \Illuminate\Auth\Access\Gate $instance */ + return $instance->after($callback); } /** - * Clear the query log. + * Determine if all of the given abilities should be granted for the current user. * - * @return void + * @param \Illuminate\Auth\Access\iterable|string $ability + * @param array|mixed $arguments + * @return bool * @static - */ - public static function flushQueryLog() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - $instance->flushQueryLog(); + */ public static function allows($ability, $arguments = []) + { + /** @var \Illuminate\Auth\Access\Gate $instance */ + return $instance->allows($ability, $arguments); } /** - * Enable the query log on the connection. + * Determine if any of the given abilities should be denied for the current user. * - * @return void + * @param \Illuminate\Auth\Access\iterable|string $ability + * @param array|mixed $arguments + * @return bool * @static - */ - public static function enableQueryLog() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - $instance->enableQueryLog(); + */ public static function denies($ability, $arguments = []) + { + /** @var \Illuminate\Auth\Access\Gate $instance */ + return $instance->denies($ability, $arguments); } /** - * Disable the query log on the connection. + * Determine if all of the given abilities should be granted for the current user. * - * @return void + * @param \Illuminate\Auth\Access\iterable|string $abilities + * @param array|mixed $arguments + * @return bool * @static - */ - public static function disableQueryLog() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - $instance->disableQueryLog(); + */ public static function check($abilities, $arguments = []) + { + /** @var \Illuminate\Auth\Access\Gate $instance */ + return $instance->check($abilities, $arguments); } /** - * Determine whether we're logging queries. + * Determine if any one of the given abilities should be granted for the current user. * + * @param \Illuminate\Auth\Access\iterable|string $abilities + * @param array|mixed $arguments * @return bool * @static - */ - public static function logging() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->logging(); + */ public static function any($abilities, $arguments = []) + { + /** @var \Illuminate\Auth\Access\Gate $instance */ + return $instance->any($abilities, $arguments); } /** - * Get the name of the connected database. + * Determine if all of the given abilities should be denied for the current user. * - * @return string + * @param \Illuminate\Auth\Access\iterable|string $abilities + * @param array|mixed $arguments + * @return bool * @static - */ - public static function getDatabaseName() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->getDatabaseName(); + */ public static function none($abilities, $arguments = []) + { + /** @var \Illuminate\Auth\Access\Gate $instance */ + return $instance->none($abilities, $arguments); } /** - * Set the name of the connected database. + * Determine if the given ability should be granted for the current user. * - * @param string $database - * @return \Illuminate\Database\MySqlConnection + * @param string $ability + * @param array|mixed $arguments + * @return \Illuminate\Auth\Access\Response + * @throws \Illuminate\Auth\Access\AuthorizationException * @static - */ - public static function setDatabaseName($database) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->setDatabaseName($database); + */ public static function authorize($ability, $arguments = []) + { + /** @var \Illuminate\Auth\Access\Gate $instance */ + return $instance->authorize($ability, $arguments); } /** - * Set the read / write type of the connection. + * Inspect the user for the given ability. * - * @param string|null $readWriteType - * @return \Illuminate\Database\MySqlConnection + * @param string $ability + * @param array|mixed $arguments + * @return \Illuminate\Auth\Access\Response * @static - */ - public static function setReadWriteType($readWriteType) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->setReadWriteType($readWriteType); + */ public static function inspect($ability, $arguments = []) + { + /** @var \Illuminate\Auth\Access\Gate $instance */ + return $instance->inspect($ability, $arguments); } /** - * Get the table prefix for the connection. + * Get the raw result from the authorization callback. * - * @return string + * @param string $ability + * @param array|mixed $arguments + * @return mixed + * @throws \Illuminate\Auth\Access\AuthorizationException * @static - */ - public static function getTablePrefix() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->getTablePrefix(); + */ public static function raw($ability, $arguments = []) + { + /** @var \Illuminate\Auth\Access\Gate $instance */ + return $instance->raw($ability, $arguments); } /** - * Set the table prefix in use by the connection. + * Get a policy instance for a given class. * - * @param string $prefix - * @return \Illuminate\Database\MySqlConnection + * @param object|string $class + * @return mixed * @static - */ - public static function setTablePrefix($prefix) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->setTablePrefix($prefix); + */ public static function getPolicyFor($class) + { + /** @var \Illuminate\Auth\Access\Gate $instance */ + return $instance->getPolicyFor($class); } /** - * Set the table prefix and return the grammar. + * Specify a callback to be used to guess policy names. * - * @param \Illuminate\Database\Grammar $grammar - * @return \Illuminate\Database\Grammar + * @param callable $callback + * @return \Illuminate\Auth\Access\Gate * @static - */ - public static function withTablePrefix($grammar) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->withTablePrefix($grammar); + */ public static function guessPolicyNamesUsing($callback) + { + /** @var \Illuminate\Auth\Access\Gate $instance */ + return $instance->guessPolicyNamesUsing($callback); } /** - * Register a connection resolver. + * Build a policy class instance of the given type. * - * @param string $driver - * @param \Closure $callback - * @return void + * @param object|string $class + * @return mixed + * @throws \Illuminate\Contracts\Container\BindingResolutionException * @static - */ - public static function resolverFor($driver, $callback) - { //Method inherited from \Illuminate\Database\Connection - \Illuminate\Database\MySqlConnection::resolverFor($driver, $callback); + */ public static function resolvePolicy($class) + { + /** @var \Illuminate\Auth\Access\Gate $instance */ + return $instance->resolvePolicy($class); } /** - * Get the connection resolver for the given driver. + * Get a gate instance for the given user. * - * @param string $driver - * @return mixed + * @param \Illuminate\Contracts\Auth\Authenticatable|mixed $user + * @return static * @static - */ - public static function getResolver($driver) - { //Method inherited from \Illuminate\Database\Connection - return \Illuminate\Database\MySqlConnection::getResolver($driver); + */ public static function forUser($user) + { + /** @var \Illuminate\Auth\Access\Gate $instance */ + return $instance->forUser($user); } /** - * Execute a Closure within a transaction. + * Get all of the defined abilities. * - * @param \Closure $callback - * @param int $attempts - * @return mixed - * @throws \Throwable + * @return array * @static - */ - public static function transaction($callback, $attempts = 1) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->transaction($callback, $attempts); + */ public static function abilities() + { + /** @var \Illuminate\Auth\Access\Gate $instance */ + return $instance->abilities(); } /** - * Start a new database transaction. + * Get all of the defined policies. * - * @return void - * @throws \Throwable + * @return array * @static - */ - public static function beginTransaction() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - $instance->beginTransaction(); + */ public static function policies() + { + /** @var \Illuminate\Auth\Access\Gate $instance */ + return $instance->policies(); } /** - * Commit the active database transaction. + * Set the default denial response for gates and policies. * - * @return void - * @throws \Throwable + * @param \Illuminate\Auth\Access\Response $response + * @return \Illuminate\Auth\Access\Gate * @static - */ - public static function commit() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - $instance->commit(); + */ public static function defaultDenialResponse($response) + { + /** @var \Illuminate\Auth\Access\Gate $instance */ + return $instance->defaultDenialResponse($response); } /** - * Rollback the active database transaction. + * Set the container instance used by the gate. * - * @param int|null $toLevel - * @return void - * @throws \Throwable + * @param \Illuminate\Contracts\Container\Container $container + * @return \Illuminate\Auth\Access\Gate * @static - */ - public static function rollBack($toLevel = null) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - $instance->rollBack($toLevel); + */ public static function setContainer($container) + { + /** @var \Illuminate\Auth\Access\Gate $instance */ + return $instance->setContainer($container); } /** - * Get the number of active transactions. + * Deny with a HTTP status code. * - * @return int + * @param int $status + * @param string|null $message + * @param int|null $code + * @return \Illuminate\Auth\Access\Response * @static - */ - public static function transactionLevel() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->transactionLevel(); + */ public static function denyWithStatus($status, $message = null, $code = null) + { + /** @var \Illuminate\Auth\Access\Gate $instance */ + return $instance->denyWithStatus($status, $message, $code); } /** - * Execute the callback after a transaction commits. + * Deny with a 404 HTTP status code. * - * @param callable $callback - * @return void - * @throws \RuntimeException + * @param string|null $message + * @param int|null $code + * @return \Illuminate\Auth\Access\Response * @static - */ - public static function afterCommit($callback) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - $instance->afterCommit($callback); + */ public static function denyAsNotFound($message = null, $code = null) + { + /** @var \Illuminate\Auth\Access\Gate $instance */ + return $instance->denyAsNotFound($message, $code); } - - } + } /** * * - * @see \Illuminate\Events\Dispatcher - * @see \Illuminate\Support\Testing\Fakes\EventFake - */ - class Event { + * @see \Illuminate\Hashing\HashManager + * @see \Illuminate\Hashing\AbstractHasher + */ class Hash { /** - * Register an event listener with the dispatcher. + * Create an instance of the Bcrypt hash Driver. * - * @param \Closure|string|array $events - * @param \Closure|string|array|null $listener - * @return void + * @return \Illuminate\Hashing\BcryptHasher * @static - */ - public static function listen($events, $listener = null) + */ public static function createBcryptDriver() { - /** @var \Illuminate\Events\Dispatcher $instance */ - $instance->listen($events, $listener); + /** @var \Illuminate\Hashing\HashManager $instance */ + return $instance->createBcryptDriver(); } /** - * Determine if a given event has listeners. + * Create an instance of the Argon2i hash Driver. * - * @param string $eventName - * @return bool + * @return \Illuminate\Hashing\ArgonHasher * @static - */ - public static function hasListeners($eventName) + */ public static function createArgonDriver() { - /** @var \Illuminate\Events\Dispatcher $instance */ - return $instance->hasListeners($eventName); + /** @var \Illuminate\Hashing\HashManager $instance */ + return $instance->createArgonDriver(); } /** - * Determine if the given event has any wildcard listeners. + * Create an instance of the Argon2id hash Driver. * - * @param string $eventName - * @return bool + * @return \Illuminate\Hashing\Argon2IdHasher * @static - */ - public static function hasWildcardListeners($eventName) + */ public static function createArgon2idDriver() { - /** @var \Illuminate\Events\Dispatcher $instance */ - return $instance->hasWildcardListeners($eventName); + /** @var \Illuminate\Hashing\HashManager $instance */ + return $instance->createArgon2idDriver(); } /** - * Register an event and payload to be fired later. + * Get information about the given hashed value. * - * @param string $event - * @param object|array $payload - * @return void + * @param string $hashedValue + * @return array * @static - */ - public static function push($event, $payload = []) + */ public static function info($hashedValue) { - /** @var \Illuminate\Events\Dispatcher $instance */ - $instance->push($event, $payload); + /** @var \Illuminate\Hashing\HashManager $instance */ + return $instance->info($hashedValue); } /** - * Flush a set of pushed events. + * Hash the given value. * - * @param string $event - * @return void + * @param string $value + * @param array $options + * @return string * @static - */ - public static function flush($event) + */ public static function make($value, $options = []) { - /** @var \Illuminate\Events\Dispatcher $instance */ - $instance->flush($event); + /** @var \Illuminate\Hashing\HashManager $instance */ + return $instance->make($value, $options); } /** - * Register an event subscriber with the dispatcher. + * Check the given plain value against a hash. * - * @param object|string $subscriber - * @return void + * @param string $value + * @param string $hashedValue + * @param array $options + * @return bool * @static - */ - public static function subscribe($subscriber) - { - /** @var \Illuminate\Events\Dispatcher $instance */ - $instance->subscribe($subscriber); + */ public static function check($value, $hashedValue, $options = []) + { + /** @var \Illuminate\Hashing\HashManager $instance */ + return $instance->check($value, $hashedValue, $options); } /** - * Fire an event until the first non-null response is returned. + * Check if the given hash has been hashed using the given options. * - * @param string|object $event - * @param mixed $payload - * @return array|null + * @param string $hashedValue + * @param array $options + * @return bool * @static - */ - public static function until($event, $payload = []) + */ public static function needsRehash($hashedValue, $options = []) { - /** @var \Illuminate\Events\Dispatcher $instance */ - return $instance->until($event, $payload); + /** @var \Illuminate\Hashing\HashManager $instance */ + return $instance->needsRehash($hashedValue, $options); } /** - * Fire an event and call the listeners. + * Determine if a given string is already hashed. * - * @param string|object $event - * @param mixed $payload - * @param bool $halt - * @return array|null + * @param string $value + * @return bool * @static - */ - public static function dispatch($event, $payload = [], $halt = false) + */ public static function isHashed($value) { - /** @var \Illuminate\Events\Dispatcher $instance */ - return $instance->dispatch($event, $payload, $halt); + /** @var \Illuminate\Hashing\HashManager $instance */ + return $instance->isHashed($value); } /** - * Get all of the listeners for a given event name. + * Get the default driver name. * - * @param string $eventName - * @return array + * @return string * @static - */ - public static function getListeners($eventName) + */ public static function getDefaultDriver() { - /** @var \Illuminate\Events\Dispatcher $instance */ - return $instance->getListeners($eventName); + /** @var \Illuminate\Hashing\HashManager $instance */ + return $instance->getDefaultDriver(); } /** - * Register an event listener with the dispatcher. + * Get a driver instance. * - * @param \Closure|string|array $listener - * @param bool $wildcard - * @return \Closure + * @param string|null $driver + * @return mixed + * @throws \InvalidArgumentException * @static - */ - public static function makeListener($listener, $wildcard = false) - { - /** @var \Illuminate\Events\Dispatcher $instance */ - return $instance->makeListener($listener, $wildcard); + */ public static function driver($driver = null) + { //Method inherited from \Illuminate\Support\Manager + /** @var \Illuminate\Hashing\HashManager $instance */ + return $instance->driver($driver); } /** - * Create a class based listener using the IoC container. + * Register a custom driver creator Closure. * - * @param string $listener - * @param bool $wildcard - * @return \Closure + * @param string $driver + * @param \Closure $callback + * @return \Illuminate\Hashing\HashManager * @static - */ - public static function createClassListener($listener, $wildcard = false) - { - /** @var \Illuminate\Events\Dispatcher $instance */ - return $instance->createClassListener($listener, $wildcard); + */ public static function extend($driver, $callback) + { //Method inherited from \Illuminate\Support\Manager + /** @var \Illuminate\Hashing\HashManager $instance */ + return $instance->extend($driver, $callback); } /** - * Remove a set of listeners from the dispatcher. + * Get all of the created "drivers". * - * @param string $event - * @return void + * @return array * @static - */ - public static function forget($event) - { - /** @var \Illuminate\Events\Dispatcher $instance */ - $instance->forget($event); + */ public static function getDrivers() + { //Method inherited from \Illuminate\Support\Manager + /** @var \Illuminate\Hashing\HashManager $instance */ + return $instance->getDrivers(); } /** - * Forget all of the pushed listeners. + * Get the container instance used by the manager. * - * @return void + * @return \Illuminate\Contracts\Container\Container * @static - */ - public static function forgetPushed() - { - /** @var \Illuminate\Events\Dispatcher $instance */ - $instance->forgetPushed(); + */ public static function getContainer() + { //Method inherited from \Illuminate\Support\Manager + /** @var \Illuminate\Hashing\HashManager $instance */ + return $instance->getContainer(); } /** - * Set the queue resolver implementation. + * Set the container instance used by the manager. * - * @param callable $resolver - * @return \Illuminate\Events\Dispatcher + * @param \Illuminate\Contracts\Container\Container $container + * @return \Illuminate\Hashing\HashManager * @static - */ - public static function setQueueResolver($resolver) - { - /** @var \Illuminate\Events\Dispatcher $instance */ - return $instance->setQueueResolver($resolver); + */ public static function setContainer($container) + { //Method inherited from \Illuminate\Support\Manager + /** @var \Illuminate\Hashing\HashManager $instance */ + return $instance->setContainer($container); } /** - * Gets the raw, unprepared listeners. + * Forget all of the resolved driver instances. * - * @return array + * @return \Illuminate\Hashing\HashManager * @static - */ - public static function getRawListeners() - { - /** @var \Illuminate\Events\Dispatcher $instance */ - return $instance->getRawListeners(); + */ 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(\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|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) + * @method static \Illuminate\Http\Client\PendingRequest withoutRedirecting() + * @method static \Illuminate\Http\Client\PendingRequest withoutVerifying() + * @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(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) + * @method static \Illuminate\Http\Client\PendingRequest throwUnless(bool $condition) + * @method static \Illuminate\Http\Client\PendingRequest dump() + * @method static \Illuminate\Http\Client\PendingRequest dd() + * @method static \Illuminate\Http\Client\Response get(string $url, array|string|null $query = null) + * @method static \Illuminate\Http\Client\Response head(string $url, array|string|null $query = null) + * @method static \Illuminate\Http\Client\Response post(string $url, array $data = []) + * @method static \Illuminate\Http\Client\Response patch(string $url, array $data = []) + * @method static \Illuminate\Http\Client\Response put(string $url, array $data = []) + * @method static \Illuminate\Http\Client\Response delete(string $url, array $data = []) + * @method static array pool(callable $callback) + * @method static \Illuminate\Http\Client\Response send(string $method, string $url, array $options = []) + * @method static \GuzzleHttp\Client buildClient() + * @method static \GuzzleHttp\Client createClient(\GuzzleHttp\HandlerStack $handlerStack) + * @method static \GuzzleHttp\HandlerStack buildHandlerStack() + * @method static \GuzzleHttp\HandlerStack pushHandlers(\GuzzleHttp\HandlerStack $handlerStack) + * @method static \Closure buildBeforeSendingHandler() + * @method static \Closure buildRecorderHandler() + * @method static \Closure buildStubHandler() + * @method static \GuzzleHttp\Psr7\RequestInterface runBeforeSendingCallbacks(\GuzzleHttp\Psr7\RequestInterface $request, array $options) + * @method static array mergeOptions(array ...$options) + * @method static \Illuminate\Http\Client\PendingRequest stub(callable $callback) + * @method static \Illuminate\Http\Client\PendingRequest async(bool $async = true) + * @method static \GuzzleHttp\Promise\PromiseInterface|null getPromise() + * @method static \Illuminate\Http\Client\PendingRequest setClient(\GuzzleHttp\Client $client) + * @method static \Illuminate\Http\Client\PendingRequest setHandler(callable $handler) + * @method static array getOptions() + * @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 { /** - * Register a custom macro. + * Add middleware to apply to every request. * - * @param string $name - * @param object|callable $macro - * @return void + * @param callable $middleware + * @return \Illuminate\Http\Client\Factory * @static - */ - public static function macro($name, $macro) + */ public static function globalMiddleware($middleware) { - \Illuminate\Events\Dispatcher::macro($name, $macro); + /** @var \Illuminate\Http\Client\Factory $instance */ + return $instance->globalMiddleware($middleware); } /** - * Mix another object into the class. + * Add request middleware to apply to every request. * - * @param object $mixin - * @param bool $replace - * @return void - * @throws \ReflectionException + * @param callable $middleware + * @return \Illuminate\Http\Client\Factory * @static - */ - public static function mixin($mixin, $replace = true) + */ public static function globalRequestMiddleware($middleware) { - \Illuminate\Events\Dispatcher::mixin($mixin, $replace); + /** @var \Illuminate\Http\Client\Factory $instance */ + return $instance->globalRequestMiddleware($middleware); } /** - * Checks if macro is registered. + * Add response middleware to apply to every request. * - * @param string $name - * @return bool + * @param callable $middleware + * @return \Illuminate\Http\Client\Factory * @static - */ - public static function hasMacro($name) + */ public static function globalResponseMiddleware($middleware) { - return \Illuminate\Events\Dispatcher::hasMacro($name); + /** @var \Illuminate\Http\Client\Factory $instance */ + return $instance->globalResponseMiddleware($middleware); } /** - * Flush the existing macros. + * Set the options to apply to every request. * - * @return void + * @param \Closure|array $options + * @return \Illuminate\Http\Client\Factory * @static - */ - public static function flushMacros() + */ public static function globalOptions($options) { - \Illuminate\Events\Dispatcher::flushMacros(); + /** @var \Illuminate\Http\Client\Factory $instance */ + return $instance->globalOptions($options); } /** - * Specify the events that should be dispatched instead of faked. + * Create a new response instance for use during stubbing. * - * @param array|string $eventsToDispatch - * @return \Illuminate\Support\Testing\Fakes\EventFake + * @param array|string|null $body + * @param int $status + * @param array $headers + * @return \GuzzleHttp\Promise\PromiseInterface * @static - */ - public static function except($eventsToDispatch) + */ public static function response($body = null, $status = 200, $headers = []) { - /** @var \Illuminate\Support\Testing\Fakes\EventFake $instance */ - return $instance->except($eventsToDispatch); + return \Illuminate\Http\Client\Factory::response($body, $status, $headers); } /** - * Assert if an event has a listener attached to it. + * Get an invokable object that returns a sequence of responses in order for use during stubbing. * - * @param string $expectedEvent - * @param string|array $expectedListener - * @return void + * @param array $responses + * @return \Illuminate\Http\Client\ResponseSequence * @static - */ - public static function assertListening($expectedEvent, $expectedListener) + */ public static function sequence($responses = []) { - /** @var \Illuminate\Support\Testing\Fakes\EventFake $instance */ - $instance->assertListening($expectedEvent, $expectedListener); + /** @var \Illuminate\Http\Client\Factory $instance */ + return $instance->sequence($responses); } /** - * Assert if an event was dispatched based on a truth-test callback. + * Register a stub callable that will intercept requests and be able to return stub responses. * - * @param string|\Closure $event - * @param callable|int|null $callback - * @return void + * @param callable|array|null $callback + * @return \Illuminate\Http\Client\Factory * @static - */ - public static function assertDispatched($event, $callback = null) + */ public static function fake($callback = null) { - /** @var \Illuminate\Support\Testing\Fakes\EventFake $instance */ - $instance->assertDispatched($event, $callback); + /** @var \Illuminate\Http\Client\Factory $instance */ + return $instance->fake($callback); } /** - * Assert if an event was dispatched a number of times. + * Register a response sequence for the given URL pattern. * - * @param string $event - * @param int $times - * @return void + * @param string $url + * @return \Illuminate\Http\Client\ResponseSequence * @static - */ - public static function assertDispatchedTimes($event, $times = 1) + */ public static function fakeSequence($url = '*') { - /** @var \Illuminate\Support\Testing\Fakes\EventFake $instance */ - $instance->assertDispatchedTimes($event, $times); + /** @var \Illuminate\Http\Client\Factory $instance */ + return $instance->fakeSequence($url); } /** - * Determine if an event was dispatched based on a truth-test callback. + * Stub the given URL using the given callback. * - * @param string|\Closure $event - * @param callable|null $callback - * @return void + * @param string $url + * @param \Illuminate\Http\Client\Response|\GuzzleHttp\Promise\PromiseInterface|callable $callback + * @return \Illuminate\Http\Client\Factory * @static - */ - public static function assertNotDispatched($event, $callback = null) + */ public static function stubUrl($url, $callback) { - /** @var \Illuminate\Support\Testing\Fakes\EventFake $instance */ - $instance->assertNotDispatched($event, $callback); + /** @var \Illuminate\Http\Client\Factory $instance */ + return $instance->stubUrl($url, $callback); } /** - * Assert that no events were dispatched. + * Indicate that an exception should be thrown if any request is not faked. * - * @return void + * @param bool $prevent + * @return \Illuminate\Http\Client\Factory * @static - */ - public static function assertNothingDispatched() + */ public static function preventStrayRequests($prevent = true) { - /** @var \Illuminate\Support\Testing\Fakes\EventFake $instance */ - $instance->assertNothingDispatched(); + /** @var \Illuminate\Http\Client\Factory $instance */ + return $instance->preventStrayRequests($prevent); } /** - * Get all of the events matching a truth-test callback. + * Indicate that an exception should not be thrown if any request is not faked. * - * @param string $event - * @param callable|null $callback - * @return \Illuminate\Support\Collection + * @return \Illuminate\Http\Client\Factory * @static - */ - public static function dispatched($event, $callback = null) + */ public static function allowStrayRequests() { - /** @var \Illuminate\Support\Testing\Fakes\EventFake $instance */ - return $instance->dispatched($event, $callback); + /** @var \Illuminate\Http\Client\Factory $instance */ + return $instance->allowStrayRequests(); } /** - * Determine if the given event has been dispatched. + * Record a request response pair. * - * @param string $event - * @return bool + * @param \Illuminate\Http\Client\Request $request + * @param \Illuminate\Http\Client\Response $response + * @return void * @static - */ - public static function hasDispatched($event) + */ public static function recordRequestResponsePair($request, $response) { - /** @var \Illuminate\Support\Testing\Fakes\EventFake $instance */ - return $instance->hasDispatched($event); + /** @var \Illuminate\Http\Client\Factory $instance */ + $instance->recordRequestResponsePair($request, $response); } - - } - /** - * - * - * @see \Illuminate\Filesystem\Filesystem - */ - class File { /** - * Determine if a file or directory exists. + * Assert that a request / response pair was recorded matching a given truth test. * - * @param string $path - * @return bool + * @param callable $callback + * @return void * @static - */ - public static function exists($path) + */ public static function assertSent($callback) { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->exists($path); + /** @var \Illuminate\Http\Client\Factory $instance */ + $instance->assertSent($callback); } /** - * Determine if a file or directory is missing. + * Assert that the given request was sent in the given order. * - * @param string $path - * @return bool + * @param array $callbacks + * @return void * @static - */ - public static function missing($path) + */ public static function assertSentInOrder($callbacks) { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->missing($path); + /** @var \Illuminate\Http\Client\Factory $instance */ + $instance->assertSentInOrder($callbacks); } /** - * Get the contents of a file. + * Assert that a request / response pair was not recorded matching a given truth test. * - * @param string $path - * @param bool $lock - * @return string - * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException + * @param callable $callback + * @return void * @static - */ - public static function get($path, $lock = false) + */ public static function assertNotSent($callback) { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->get($path, $lock); + /** @var \Illuminate\Http\Client\Factory $instance */ + $instance->assertNotSent($callback); } /** - * Get contents of a file with shared access. + * Assert that no request / response pair was recorded. * - * @param string $path - * @return string + * @return void * @static - */ - public static function sharedGet($path) + */ public static function assertNothingSent() { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->sharedGet($path); + /** @var \Illuminate\Http\Client\Factory $instance */ + $instance->assertNothingSent(); } /** - * Get the returned value of a file. + * Assert how many requests have been recorded. * - * @param string $path - * @param array $data - * @return mixed - * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException + * @param int $count + * @return void * @static - */ - public static function getRequire($path, $data = []) + */ public static function assertSentCount($count) { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->getRequire($path, $data); + /** @var \Illuminate\Http\Client\Factory $instance */ + $instance->assertSentCount($count); } /** - * Require the given file once. + * Assert that every created response sequence is empty. * - * @param string $path - * @param array $data - * @return mixed - * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException + * @return void * @static - */ - public static function requireOnce($path, $data = []) + */ public static function assertSequencesAreEmpty() { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->requireOnce($path, $data); + /** @var \Illuminate\Http\Client\Factory $instance */ + $instance->assertSequencesAreEmpty(); } /** - * Get the contents of a file one line at a time. + * Get a collection of the request / response pairs matching the given truth test. * - * @param string $path - * @return \Illuminate\Support\LazyCollection - * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException + * @param callable $callback + * @return \Illuminate\Support\Collection * @static - */ - public static function lines($path) + */ public static function recorded($callback = null) { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->lines($path); + /** @var \Illuminate\Http\Client\Factory $instance */ + return $instance->recorded($callback); } /** - * Get the hash of the file at the given path. + * Create a new pending request instance for this factory. * - * @param string $path - * @param string $algorithm - * @return string + * @return \Illuminate\Http\Client\PendingRequest * @static - */ - public static function hash($path, $algorithm = 'md5') + */ public static function createPendingRequest() { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->hash($path, $algorithm); + /** @var \Illuminate\Http\Client\Factory $instance */ + return $instance->createPendingRequest(); } /** - * Write the contents of a file. + * Get the current event dispatcher implementation. * - * @param string $path - * @param string $contents - * @param bool $lock - * @return int|bool + * @return \Illuminate\Contracts\Events\Dispatcher|null * @static - */ - public static function put($path, $contents, $lock = false) + */ public static function getDispatcher() { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->put($path, $contents, $lock); + /** @var \Illuminate\Http\Client\Factory $instance */ + return $instance->getDispatcher(); } /** - * Write the contents of a file, replacing it atomically if it already exists. + * Get the array of global middleware. * - * @param string $path - * @param string $content - * @param int|null $mode - * @return void + * @return array * @static - */ - public static function replace($path, $content, $mode = null) + */ public static function getGlobalMiddleware() { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - $instance->replace($path, $content, $mode); + /** @var \Illuminate\Http\Client\Factory $instance */ + return $instance->getGlobalMiddleware(); } /** - * Replace a given string within a given file. + * Register a custom macro. * - * @param array|string $search - * @param array|string $replace - * @param string $path + * @param string $name + * @param object|callable $macro * @return void * @static - */ - public static function replaceInFile($search, $replace, $path) + */ public static function macro($name, $macro) { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - $instance->replaceInFile($search, $replace, $path); + \Illuminate\Http\Client\Factory::macro($name, $macro); } /** - * Prepend to a file. + * Mix another object into the class. * - * @param string $path - * @param string $data - * @return int + * @param object $mixin + * @param bool $replace + * @return void + * @throws \ReflectionException * @static - */ - public static function prepend($path, $data) + */ public static function mixin($mixin, $replace = true) { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->prepend($path, $data); + \Illuminate\Http\Client\Factory::mixin($mixin, $replace); } /** - * Append to a file. + * Checks if macro is registered. * - * @param string $path - * @param string $data - * @return int + * @param string $name + * @return bool * @static - */ - public static function append($path, $data) + */ public static function hasMacro($name) { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->append($path, $data); + return \Illuminate\Http\Client\Factory::hasMacro($name); } /** - * Get or set UNIX mode of a file or directory. + * Flush the existing macros. * - * @param string $path - * @param int|null $mode - * @return mixed + * @return void * @static - */ - public static function chmod($path, $mode = null) + */ public static function flushMacros() { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->chmod($path, $mode); + \Illuminate\Http\Client\Factory::flushMacros(); } /** - * Delete the file at a given path. + * Dynamically handle calls to the class. * - * @param string|array $paths - * @return bool + * @param string $method + * @param array $parameters + * @return mixed + * @throws \BadMethodCallException * @static - */ - public static function delete($paths) + */ public static function macroCall($method, $parameters) { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->delete($paths); + /** @var \Illuminate\Http\Client\Factory $instance */ + return $instance->macroCall($method, $parameters); } + } + /** + * + * + * @see \Illuminate\Translation\Translator + */ class Lang { /** - * Move a file to a new location. + * Determine if a translation exists for a given locale. * - * @param string $path - * @param string $target + * @param string $key + * @param string|null $locale * @return bool * @static - */ - public static function move($path, $target) + */ public static function hasForLocale($key, $locale = null) { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->move($path, $target); + /** @var \Illuminate\Translation\Translator $instance */ + return $instance->hasForLocale($key, $locale); } /** - * Copy a file to a new location. + * Determine if a translation exists. * - * @param string $path - * @param string $target + * @param string $key + * @param string|null $locale + * @param bool $fallback * @return bool * @static - */ - public static function copy($path, $target) + */ public static function has($key, $locale = null, $fallback = true) { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->copy($path, $target); + /** @var \Illuminate\Translation\Translator $instance */ + return $instance->has($key, $locale, $fallback); } /** - * Create a symlink to the target file or directory. On Windows, a hard link is created if the target is a file. + * Get the translation for the given key. * - * @param string $target - * @param string $link - * @return void + * @param string $key + * @param array $replace + * @param string|null $locale + * @param bool $fallback + * @return string|array * @static - */ - public static function link($target, $link) + */ public static function get($key, $replace = [], $locale = null, $fallback = true) { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - $instance->link($target, $link); + /** @var \Illuminate\Translation\Translator $instance */ + return $instance->get($key, $replace, $locale, $fallback); } /** - * Create a relative symlink to the target file or directory. + * Get a translation according to an integer value. * - * @param string $target - * @param string $link - * @return void - * @throws \RuntimeException + * @param string $key + * @param \Countable|int|float|array $number + * @param array $replace + * @param string|null $locale + * @return string * @static - */ - public static function relativeLink($target, $link) + */ public static function choice($key, $number, $replace = [], $locale = null) { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - $instance->relativeLink($target, $link); + /** @var \Illuminate\Translation\Translator $instance */ + return $instance->choice($key, $number, $replace, $locale); } /** - * Extract the file name from a file path. + * Add translation lines to the given locale. * - * @param string $path - * @return string + * @param array $lines + * @param string $locale + * @param string $namespace + * @return void * @static - */ - public static function name($path) + */ public static function addLines($lines, $locale, $namespace = '*') { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->name($path); + /** @var \Illuminate\Translation\Translator $instance */ + $instance->addLines($lines, $locale, $namespace); } /** - * Extract the trailing name component from a file path. + * Load the specified language group. * - * @param string $path - * @return string + * @param string $namespace + * @param string $group + * @param string $locale + * @return void * @static - */ - public static function basename($path) + */ public static function load($namespace, $group, $locale) { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->basename($path); + /** @var \Illuminate\Translation\Translator $instance */ + $instance->load($namespace, $group, $locale); } /** - * Extract the parent directory from a file path. + * Register a callback that is responsible for handling missing translation keys. * - * @param string $path - * @return string + * @param callable|null $callback + * @return static * @static - */ - public static function dirname($path) + */ public static function handleMissingKeysUsing($callback) { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->dirname($path); + /** @var \Illuminate\Translation\Translator $instance */ + return $instance->handleMissingKeysUsing($callback); } /** - * Extract the file extension from a file path. + * Add a new namespace to the loader. * - * @param string $path - * @return string + * @param string $namespace + * @param string $hint + * @return void * @static - */ - public static function extension($path) + */ public static function addNamespace($namespace, $hint) { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->extension($path); + /** @var \Illuminate\Translation\Translator $instance */ + $instance->addNamespace($namespace, $hint); } /** - * Guess the file extension from the mime-type of a given file. + * Add a new JSON path to the loader. * * @param string $path - * @return string|null - * @throws \RuntimeException + * @return void * @static - */ - public static function guessExtension($path) + */ public static function addJsonPath($path) { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->guessExtension($path); + /** @var \Illuminate\Translation\Translator $instance */ + $instance->addJsonPath($path); } /** - * Get the file type of a given file. + * Parse a key into namespace, group, and item. * - * @param string $path - * @return string + * @param string $key + * @return array * @static - */ - public static function type($path) + */ public static function parseKey($key) { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->type($path); + /** @var \Illuminate\Translation\Translator $instance */ + return $instance->parseKey($key); } /** - * Get the mime-type of a given file. + * Specify a callback that should be invoked to determined the applicable locale array. * - * @param string $path - * @return string|false + * @param callable $callback + * @return void * @static - */ - public static function mimeType($path) + */ public static function determineLocalesUsing($callback) { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->mimeType($path); + /** @var \Illuminate\Translation\Translator $instance */ + $instance->determineLocalesUsing($callback); } /** - * Get the file size of a given file. + * Get the message selector instance. * - * @param string $path - * @return int + * @return \Illuminate\Translation\MessageSelector * @static - */ - public static function size($path) + */ public static function getSelector() { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->size($path); + /** @var \Illuminate\Translation\Translator $instance */ + return $instance->getSelector(); } /** - * Get the file's last modification time. + * Set the message selector instance. * - * @param string $path - * @return int + * @param \Illuminate\Translation\MessageSelector $selector + * @return void * @static - */ - public static function lastModified($path) + */ public static function setSelector($selector) { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->lastModified($path); + /** @var \Illuminate\Translation\Translator $instance */ + $instance->setSelector($selector); } /** - * Determine if the given path is a directory. + * Get the language line loader implementation. * - * @param string $directory - * @return bool + * @return \Illuminate\Contracts\Translation\Loader * @static - */ - public static function isDirectory($directory) + */ public static function getLoader() { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->isDirectory($directory); + /** @var \Illuminate\Translation\Translator $instance */ + return $instance->getLoader(); } /** - * Determine if the given path is a directory that does not contain any other files or directories. + * Get the default locale being used. * - * @param string $directory - * @param bool $ignoreDotFiles - * @return bool + * @return string * @static - */ - public static function isEmptyDirectory($directory, $ignoreDotFiles = false) + */ public static function locale() { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->isEmptyDirectory($directory, $ignoreDotFiles); + /** @var \Illuminate\Translation\Translator $instance */ + return $instance->locale(); } /** - * Determine if the given path is readable. + * Get the default locale being used. * - * @param string $path - * @return bool + * @return string * @static - */ - public static function isReadable($path) + */ public static function getLocale() { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->isReadable($path); + /** @var \Illuminate\Translation\Translator $instance */ + return $instance->getLocale(); } /** - * Determine if the given path is writable. + * Set the default locale. * - * @param string $path - * @return bool + * @param string $locale + * @return void + * @throws \InvalidArgumentException * @static - */ - public static function isWritable($path) + */ public static function setLocale($locale) { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->isWritable($path); + /** @var \Illuminate\Translation\Translator $instance */ + $instance->setLocale($locale); } /** - * Determine if two files are the same by comparing their hashes. + * Get the fallback locale being used. * - * @param string $firstFile - * @param string $secondFile - * @return bool + * @return string * @static - */ - public static function hasSameHash($firstFile, $secondFile) + */ public static function getFallback() { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->hasSameHash($firstFile, $secondFile); + /** @var \Illuminate\Translation\Translator $instance */ + return $instance->getFallback(); } /** - * Determine if the given path is a file. + * Set the fallback locale being used. * - * @param string $file - * @return bool + * @param string $fallback + * @return void * @static - */ - public static function isFile($file) + */ public static function setFallback($fallback) { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->isFile($file); + /** @var \Illuminate\Translation\Translator $instance */ + $instance->setFallback($fallback); } /** - * Find path names matching a given pattern. + * Set the loaded translation groups. * - * @param string $pattern - * @param int $flags - * @return array + * @param array $loaded + * @return void * @static - */ - public static function glob($pattern, $flags = 0) + */ public static function setLoaded($loaded) { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->glob($pattern, $flags); + /** @var \Illuminate\Translation\Translator $instance */ + $instance->setLoaded($loaded); } /** - * Get an array of all files in a directory. + * Add a handler to be executed in order to format a given class to a string during translation replacements. * - * @param string $directory - * @param bool $hidden - * @return \Symfony\Component\Finder\SplFileInfo[] + * @param callable|string $class + * @param callable|null $handler + * @return void * @static - */ - public static function files($directory, $hidden = false) + */ public static function stringable($class, $handler = null) { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->files($directory, $hidden); + /** @var \Illuminate\Translation\Translator $instance */ + $instance->stringable($class, $handler); } /** - * Get all of the files from the given directory (recursive). + * Set the parsed value of a key. * - * @param string $directory - * @param bool $hidden - * @return \Symfony\Component\Finder\SplFileInfo[] + * @param string $key + * @param array $parsed + * @return void * @static - */ - public static function allFiles($directory, $hidden = false) - { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->allFiles($directory, $hidden); + */ public static function setParsedKey($key, $parsed) + { //Method inherited from \Illuminate\Support\NamespacedItemResolver + /** @var \Illuminate\Translation\Translator $instance */ + $instance->setParsedKey($key, $parsed); } /** - * Get all of the directories within a given directory. + * Flush the cache of parsed keys. * - * @param string $directory - * @return array + * @return void * @static - */ - public static function directories($directory) - { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->directories($directory); + */ public static function flushParsedKeys() + { //Method inherited from \Illuminate\Support\NamespacedItemResolver + /** @var \Illuminate\Translation\Translator $instance */ + $instance->flushParsedKeys(); } /** - * Ensure a directory exists. + * Register a custom macro. * - * @param string $path - * @param int $mode - * @param bool $recursive + * @param string $name + * @param object|callable $macro * @return void * @static - */ - public static function ensureDirectoryExists($path, $mode = 493, $recursive = true) + */ public static function macro($name, $macro) { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - $instance->ensureDirectoryExists($path, $mode, $recursive); + \Illuminate\Translation\Translator::macro($name, $macro); } /** - * Create a directory. + * Mix another object into the class. * - * @param string $path - * @param int $mode - * @param bool $recursive - * @param bool $force - * @return bool + * @param object $mixin + * @param bool $replace + * @return void + * @throws \ReflectionException * @static - */ - public static function makeDirectory($path, $mode = 493, $recursive = false, $force = false) + */ public static function mixin($mixin, $replace = true) { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->makeDirectory($path, $mode, $recursive, $force); + \Illuminate\Translation\Translator::mixin($mixin, $replace); } /** - * Move a directory. + * Checks if macro is registered. * - * @param string $from - * @param string $to - * @param bool $overwrite + * @param string $name * @return bool * @static - */ - public static function moveDirectory($from, $to, $overwrite = false) + */ public static function hasMacro($name) { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->moveDirectory($from, $to, $overwrite); + return \Illuminate\Translation\Translator::hasMacro($name); } /** - * Copy a directory from one location to another. + * Flush the existing macros. * - * @param string $directory - * @param string $destination - * @param int|null $options - * @return bool + * @return void * @static - */ - public static function copyDirectory($directory, $destination, $options = null) + */ public static function flushMacros() { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->copyDirectory($directory, $destination, $options); + \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 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 { /** - * Recursively delete a directory. - * - * The directory itself may be optionally preserved. + * Build an on-demand log channel. * - * @param string $directory - * @param bool $preserve - * @return bool + * @param array $config + * @return \Psr\Log\LoggerInterface * @static - */ - public static function deleteDirectory($directory, $preserve = false) + */ public static function build($config) { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->deleteDirectory($directory, $preserve); + /** @var \Illuminate\Log\LogManager $instance */ + return $instance->build($config); } /** - * Remove all of the directories within a given directory. + * Create a new, on-demand aggregate logger instance. * - * @param string $directory - * @return bool + * @param array $channels + * @param string|null $channel + * @return \Psr\Log\LoggerInterface * @static - */ - public static function deleteDirectories($directory) + */ public static function stack($channels, $channel = null) { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->deleteDirectories($directory); + /** @var \Illuminate\Log\LogManager $instance */ + return $instance->stack($channels, $channel); } /** - * Empty the specified directory of all files and folders. - * - * @param string $directory - * @return bool + * Get a log channel instance. + * + * @param string|null $channel + * @return \Psr\Log\LoggerInterface * @static - */ - public static function cleanDirectory($directory) + */ public static function channel($channel = null) { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->cleanDirectory($directory); + /** @var \Illuminate\Log\LogManager $instance */ + return $instance->channel($channel); } /** - * Apply the callback if the given "value" is (or resolves to) truthy. + * Get a log driver instance. * - * @template TWhenParameter - * @template TWhenReturnType - * @param \Illuminate\Filesystem\(\Closure($this): TWhenParameter)|TWhenParameter|null $value - * @param \Illuminate\Filesystem\(callable($this, TWhenParameter): TWhenReturnType)|null $callback - * @param \Illuminate\Filesystem\(callable($this, TWhenParameter): TWhenReturnType)|null $default - * @return $this|\Illuminate\Filesystem\TWhenReturnType + * @param string|null $driver + * @return \Psr\Log\LoggerInterface * @static - */ - public static function when($value = null, $callback = null, $default = null) + */ public static function driver($driver = null) { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->when($value, $callback, $default); + /** @var \Illuminate\Log\LogManager $instance */ + return $instance->driver($driver); } /** - * Apply the callback if the given "value" is (or resolves to) falsy. + * Share context across channels and stacks. * - * @template TUnlessParameter - * @template TUnlessReturnType - * @param \Illuminate\Filesystem\(\Closure($this): TUnlessParameter)|TUnlessParameter|null $value - * @param \Illuminate\Filesystem\(callable($this, TUnlessParameter): TUnlessReturnType)|null $callback - * @param \Illuminate\Filesystem\(callable($this, TUnlessParameter): TUnlessReturnType)|null $default - * @return $this|\Illuminate\Filesystem\TUnlessReturnType + * @param array $context + * @return \Illuminate\Log\LogManager * @static - */ - public static function unless($value = null, $callback = null, $default = null) + */ public static function shareContext($context) { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->unless($value, $callback, $default); + /** @var \Illuminate\Log\LogManager $instance */ + return $instance->shareContext($context); } /** - * Register a custom macro. + * The context shared across channels and stacks. * - * @param string $name - * @param object|callable $macro - * @return void + * @return array * @static - */ - public static function macro($name, $macro) + */ public static function sharedContext() { - \Illuminate\Filesystem\Filesystem::macro($name, $macro); + /** @var \Illuminate\Log\LogManager $instance */ + return $instance->sharedContext(); } /** - * Mix another object into the class. + * Flush the log context on all currently resolved channels. * - * @param object $mixin - * @param bool $replace - * @return void - * @throws \ReflectionException + * @return \Illuminate\Log\LogManager * @static - */ - public static function mixin($mixin, $replace = true) + */ public static function withoutContext() { - \Illuminate\Filesystem\Filesystem::mixin($mixin, $replace); + /** @var \Illuminate\Log\LogManager $instance */ + return $instance->withoutContext(); } /** - * Checks if macro is registered. + * Flush the shared context. * - * @param string $name - * @return bool + * @return \Illuminate\Log\LogManager * @static - */ - public static function hasMacro($name) + */ public static function flushSharedContext() { - return \Illuminate\Filesystem\Filesystem::hasMacro($name); + /** @var \Illuminate\Log\LogManager $instance */ + return $instance->flushSharedContext(); } /** - * Flush the existing macros. + * Get the default log driver name. * - * @return void + * @return string|null * @static - */ - public static function flushMacros() + */ public static function getDefaultDriver() { - \Illuminate\Filesystem\Filesystem::flushMacros(); + /** @var \Illuminate\Log\LogManager $instance */ + return $instance->getDefaultDriver(); } - - } - /** - * - * - * @see \Illuminate\Auth\Access\Gate - */ - class Gate { /** - * Determine if a given ability has been defined. + * Set the default log driver name. * - * @param string|array $ability - * @return bool + * @param string $name + * @return void * @static - */ - public static function has($ability) + */ public static function setDefaultDriver($name) { - /** @var \Illuminate\Auth\Access\Gate $instance */ - return $instance->has($ability); + /** @var \Illuminate\Log\LogManager $instance */ + $instance->setDefaultDriver($name); } /** - * Perform an on-demand authorization check. Throw an authorization exception if the condition or callback is false. + * Register a custom driver creator Closure. * - * @param \Illuminate\Auth\Access\Response|\Closure|bool $condition - * @param string|null $message - * @param string|null $code - * @return \Illuminate\Auth\Access\Response - * @throws \Illuminate\Auth\Access\AuthorizationException + * @param string $driver + * @param \Closure $callback + * @return \Illuminate\Log\LogManager * @static - */ - public static function allowIf($condition, $message = null, $code = null) + */ public static function extend($driver, $callback) { - /** @var \Illuminate\Auth\Access\Gate $instance */ - return $instance->allowIf($condition, $message, $code); + /** @var \Illuminate\Log\LogManager $instance */ + return $instance->extend($driver, $callback); } /** - * Perform an on-demand authorization check. Throw an authorization exception if the condition or callback is true. + * Unset the given channel instance. * - * @param \Illuminate\Auth\Access\Response|\Closure|bool $condition - * @param string|null $message - * @param string|null $code - * @return \Illuminate\Auth\Access\Response - * @throws \Illuminate\Auth\Access\AuthorizationException + * @param string|null $driver + * @return void * @static - */ - public static function denyIf($condition, $message = null, $code = null) + */ public static function forgetChannel($driver = null) { - /** @var \Illuminate\Auth\Access\Gate $instance */ - return $instance->denyIf($condition, $message, $code); + /** @var \Illuminate\Log\LogManager $instance */ + $instance->forgetChannel($driver); } /** - * Define a new ability. + * Get all of the resolved log channels. * - * @param string $ability - * @param callable|array|string $callback - * @return \Illuminate\Auth\Access\Gate - * @throws \InvalidArgumentException + * @return array * @static - */ - public static function define($ability, $callback) + */ public static function getChannels() { - /** @var \Illuminate\Auth\Access\Gate $instance */ - return $instance->define($ability, $callback); + /** @var \Illuminate\Log\LogManager $instance */ + return $instance->getChannels(); } /** - * Define abilities for a resource. + * System is unusable. * - * @param string $name - * @param string $class - * @param array|null $abilities - * @return \Illuminate\Auth\Access\Gate + * @param string|\Stringable $message + * @param array $context + * @return void * @static - */ - public static function resource($name, $class, $abilities = null) + */ public static function emergency($message, $context = []) { - /** @var \Illuminate\Auth\Access\Gate $instance */ - return $instance->resource($name, $class, $abilities); + /** @var \Illuminate\Log\LogManager $instance */ + $instance->emergency($message, $context); } /** - * Define a policy class for a given class type. + * Action must be taken immediately. + * + * Example: Entire website down, database unavailable, etc. This should + * trigger the SMS alerts and wake you up. * - * @param string $class - * @param string $policy - * @return \Illuminate\Auth\Access\Gate + * @param string|\Stringable $message + * @param array $context + * @return void * @static - */ - public static function policy($class, $policy) + */ public static function alert($message, $context = []) { - /** @var \Illuminate\Auth\Access\Gate $instance */ - return $instance->policy($class, $policy); + /** @var \Illuminate\Log\LogManager $instance */ + $instance->alert($message, $context); } /** - * Register a callback to run before all Gate checks. + * Critical conditions. + * + * Example: Application component unavailable, unexpected exception. * - * @param callable $callback - * @return \Illuminate\Auth\Access\Gate + * @param string|\Stringable $message + * @param array $context + * @return void * @static - */ - public static function before($callback) + */ public static function critical($message, $context = []) { - /** @var \Illuminate\Auth\Access\Gate $instance */ - return $instance->before($callback); + /** @var \Illuminate\Log\LogManager $instance */ + $instance->critical($message, $context); } /** - * Register a callback to run after all Gate checks. + * Runtime errors that do not require immediate action but should typically + * be logged and monitored. * - * @param callable $callback - * @return \Illuminate\Auth\Access\Gate + * @param string|\Stringable $message + * @param array $context + * @return void * @static - */ - public static function after($callback) + */ public static function error($message, $context = []) { - /** @var \Illuminate\Auth\Access\Gate $instance */ - return $instance->after($callback); + /** @var \Illuminate\Log\LogManager $instance */ + $instance->error($message, $context); } /** - * Determine if the given ability should be granted for the current user. + * Exceptional occurrences that are not errors. + * + * Example: Use of deprecated APIs, poor use of an API, undesirable things + * that are not necessarily wrong. * - * @param string $ability - * @param array|mixed $arguments - * @return bool + * @param string|\Stringable $message + * @param array $context + * @return void * @static - */ - public static function allows($ability, $arguments = []) + */ public static function warning($message, $context = []) { - /** @var \Illuminate\Auth\Access\Gate $instance */ - return $instance->allows($ability, $arguments); + /** @var \Illuminate\Log\LogManager $instance */ + $instance->warning($message, $context); } /** - * Determine if the given ability should be denied for the current user. + * Normal but significant events. * - * @param string $ability - * @param array|mixed $arguments - * @return bool + * @param string|\Stringable $message + * @param array $context + * @return void * @static - */ - public static function denies($ability, $arguments = []) + */ public static function notice($message, $context = []) { - /** @var \Illuminate\Auth\Access\Gate $instance */ - return $instance->denies($ability, $arguments); + /** @var \Illuminate\Log\LogManager $instance */ + $instance->notice($message, $context); } /** - * Determine if all of the given abilities should be granted for the current user. + * Interesting events. + * + * Example: User logs in, SQL logs. * - * @param \Illuminate\Auth\Access\iterable|string $abilities - * @param array|mixed $arguments - * @return bool + * @param string|\Stringable $message + * @param array $context + * @return void * @static - */ - public static function check($abilities, $arguments = []) + */ public static function info($message, $context = []) { - /** @var \Illuminate\Auth\Access\Gate $instance */ - return $instance->check($abilities, $arguments); + /** @var \Illuminate\Log\LogManager $instance */ + $instance->info($message, $context); } /** - * Determine if any one of the given abilities should be granted for the current user. + * Detailed debug information. * - * @param \Illuminate\Auth\Access\iterable|string $abilities - * @param array|mixed $arguments - * @return bool + * @param string|\Stringable $message + * @param array $context + * @return void * @static - */ - public static function any($abilities, $arguments = []) + */ public static function debug($message, $context = []) { - /** @var \Illuminate\Auth\Access\Gate $instance */ - return $instance->any($abilities, $arguments); + /** @var \Illuminate\Log\LogManager $instance */ + $instance->debug($message, $context); } /** - * Determine if all of the given abilities should be denied for the current user. + * Logs with an arbitrary level. * - * @param \Illuminate\Auth\Access\iterable|string $abilities - * @param array|mixed $arguments - * @return bool + * @param mixed $level + * @param string|\Stringable $message + * @param array $context + * @return void * @static - */ - public static function none($abilities, $arguments = []) + */ public static function log($level, $message, $context = []) { - /** @var \Illuminate\Auth\Access\Gate $instance */ - return $instance->none($abilities, $arguments); + /** @var \Illuminate\Log\LogManager $instance */ + $instance->log($level, $message, $context); } /** - * Determine if the given ability should be granted for the current user. + * Set the application instance used by the manager. * - * @param string $ability - * @param array|mixed $arguments - * @return \Illuminate\Auth\Access\Response - * @throws \Illuminate\Auth\Access\AuthorizationException + * @param \Illuminate\Contracts\Foundation\Application $app + * @return \Illuminate\Log\LogManager * @static - */ - public static function authorize($ability, $arguments = []) + */ public static function setApplication($app) { - /** @var \Illuminate\Auth\Access\Gate $instance */ - return $instance->authorize($ability, $arguments); + /** @var \Illuminate\Log\LogManager $instance */ + return $instance->setApplication($app); } + } + /** + * + * + * @method static void alwaysFrom(string $address, string|null $name = null) + * @method static void alwaysReplyTo(string $address, string|null $name = null) + * @method static void alwaysReturnPath(string $address) + * @method static void alwaysTo(string $address, string|null $name = null) + * @method static \Illuminate\Mail\SentMessage|null html(string $html, mixed $callback) + * @method static \Illuminate\Mail\SentMessage|null plain(string $view, array $data, mixed $callback) + * @method static string render(string|array $view, array $data = []) + * @method static mixed onQueue(string $queue, \Illuminate\Contracts\Mail\Mailable $view) + * @method static mixed queueOn(string $queue, \Illuminate\Contracts\Mail\Mailable $view) + * @method static mixed laterOn(string $queue, \DateTimeInterface|\DateInterval|int $delay, \Illuminate\Contracts\Mail\Mailable $view) + * @method static \Symfony\Component\Mailer\Transport\TransportInterface getSymfonyTransport() + * @method static \Illuminate\Contracts\View\Factory getViewFactory() + * @method static void setSymfonyTransport(\Symfony\Component\Mailer\Transport\TransportInterface $transport) + * @method static \Illuminate\Mail\Mailer setQueue(\Illuminate\Contracts\Queue\Factory $queue) + * @method static void macro(string $name, object|callable $macro) + * @method static void mixin(object $mixin, bool $replace = true) + * @method static bool hasMacro(string $name) + * @method static void flushMacros() + * @see \Illuminate\Mail\MailManager + * @see \Illuminate\Support\Testing\Fakes\MailFake + */ class Mail { /** - * Inspect the user for the given ability. + * Get a mailer instance by name. * - * @param string $ability - * @param array|mixed $arguments - * @return \Illuminate\Auth\Access\Response + * @param string|null $name + * @return \Illuminate\Contracts\Mail\Mailer * @static - */ - public static function inspect($ability, $arguments = []) + */ public static function mailer($name = null) { - /** @var \Illuminate\Auth\Access\Gate $instance */ - return $instance->inspect($ability, $arguments); + /** @var \Illuminate\Mail\MailManager $instance */ + return $instance->mailer($name); } /** - * Get the raw result from the authorization callback. + * Get a mailer driver instance. * - * @param string $ability - * @param array|mixed $arguments - * @return mixed - * @throws \Illuminate\Auth\Access\AuthorizationException + * @param string|null $driver + * @return \Illuminate\Mail\Mailer * @static - */ - public static function raw($ability, $arguments = []) + */ public static function driver($driver = null) { - /** @var \Illuminate\Auth\Access\Gate $instance */ - return $instance->raw($ability, $arguments); + /** @var \Illuminate\Mail\MailManager $instance */ + return $instance->driver($driver); } /** - * Get a policy instance for a given class. + * Create a new transport instance. * - * @param object|string $class - * @return mixed + * @param array $config + * @return \Symfony\Component\Mailer\Transport\TransportInterface + * @throws \InvalidArgumentException * @static - */ - public static function getPolicyFor($class) + */ public static function createSymfonyTransport($config) { - /** @var \Illuminate\Auth\Access\Gate $instance */ - return $instance->getPolicyFor($class); + /** @var \Illuminate\Mail\MailManager $instance */ + return $instance->createSymfonyTransport($config); } /** - * Specify a callback to be used to guess policy names. + * Get the default mail driver name. * - * @param callable $callback - * @return \Illuminate\Auth\Access\Gate + * @return string * @static - */ - public static function guessPolicyNamesUsing($callback) + */ public static function getDefaultDriver() { - /** @var \Illuminate\Auth\Access\Gate $instance */ - return $instance->guessPolicyNamesUsing($callback); + /** @var \Illuminate\Mail\MailManager $instance */ + return $instance->getDefaultDriver(); } /** - * Build a policy class instance of the given type. + * Set the default mail driver name. * - * @param object|string $class - * @return mixed - * @throws \Illuminate\Contracts\Container\BindingResolutionException + * @param string $name + * @return void * @static - */ - public static function resolvePolicy($class) + */ public static function setDefaultDriver($name) { - /** @var \Illuminate\Auth\Access\Gate $instance */ - return $instance->resolvePolicy($class); + /** @var \Illuminate\Mail\MailManager $instance */ + $instance->setDefaultDriver($name); } /** - * Get a gate instance for the given user. + * Disconnect the given mailer and remove from local cache. * - * @param \Illuminate\Contracts\Auth\Authenticatable|mixed $user - * @return static + * @param string|null $name + * @return void * @static - */ - public static function forUser($user) + */ public static function purge($name = null) { - /** @var \Illuminate\Auth\Access\Gate $instance */ - return $instance->forUser($user); + /** @var \Illuminate\Mail\MailManager $instance */ + $instance->purge($name); } /** - * Get all of the defined abilities. + * Register a custom transport creator Closure. * - * @return array + * @param string $driver + * @param \Closure $callback + * @return \Illuminate\Mail\MailManager * @static - */ - public static function abilities() + */ public static function extend($driver, $callback) { - /** @var \Illuminate\Auth\Access\Gate $instance */ - return $instance->abilities(); + /** @var \Illuminate\Mail\MailManager $instance */ + return $instance->extend($driver, $callback); } /** - * Get all of the defined policies. + * Get the application instance used by the manager. * - * @return array + * @return \Illuminate\Contracts\Foundation\Application * @static - */ - public static function policies() + */ public static function getApplication() { - /** @var \Illuminate\Auth\Access\Gate $instance */ - return $instance->policies(); + /** @var \Illuminate\Mail\MailManager $instance */ + return $instance->getApplication(); } /** - * Set the container instance used by the gate. + * Set the application instance used by the manager. * - * @param \Illuminate\Contracts\Container\Container $container - * @return \Illuminate\Auth\Access\Gate + * @param \Illuminate\Contracts\Foundation\Application $app + * @return \Illuminate\Mail\MailManager * @static - */ - public static function setContainer($container) + */ public static function setApplication($app) { - /** @var \Illuminate\Auth\Access\Gate $instance */ - return $instance->setContainer($container); + /** @var \Illuminate\Mail\MailManager $instance */ + return $instance->setApplication($app); } /** - * Deny with a HTTP status code. + * Forget all of the resolved mailer instances. * - * @param int $status - * @param string|null $message - * @param int|null $code - * @return \Illuminate\Auth\Access\Response + * @return \Illuminate\Mail\MailManager * @static - */ - public static function denyWithStatus($status, $message = null, $code = null) + */ public static function forgetMailers() { - /** @var \Illuminate\Auth\Access\Gate $instance */ - return $instance->denyWithStatus($status, $message, $code); + /** @var \Illuminate\Mail\MailManager $instance */ + return $instance->forgetMailers(); } /** - * Deny with a 404 HTTP status code. + * Assert if a mailable was sent based on a truth-test callback. * - * @param string|null $message - * @param int|null $code - * @return \Illuminate\Auth\Access\Response + * @param string|\Closure $mailable + * @param callable|int|null $callback + * @return void * @static - */ - public static function denyAsNotFound($message = null, $code = null) + */ public static function assertSent($mailable, $callback = null) { - /** @var \Illuminate\Auth\Access\Gate $instance */ - return $instance->denyAsNotFound($message, $code); + /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ + $instance->assertSent($mailable, $callback); } - - } - /** - * - * - * @see \Illuminate\Hashing\HashManager - * @see \Illuminate\Hashing\AbstractHasher - */ - class Hash { /** - * Create an instance of the Bcrypt hash Driver. + * Determine if a mailable was not sent or queued to be sent based on a truth-test callback. * - * @return \Illuminate\Hashing\BcryptHasher + * @param string|\Closure $mailable + * @param callable|null $callback + * @return void * @static - */ - public static function createBcryptDriver() + */ public static function assertNotOutgoing($mailable, $callback = null) { - /** @var \Illuminate\Hashing\HashManager $instance */ - return $instance->createBcryptDriver(); + /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ + $instance->assertNotOutgoing($mailable, $callback); } /** - * Create an instance of the Argon2i hash Driver. + * Determine if a mailable was not sent based on a truth-test callback. * - * @return \Illuminate\Hashing\ArgonHasher + * @param string|\Closure $mailable + * @param callable|null $callback + * @return void * @static - */ - public static function createArgonDriver() + */ public static function assertNotSent($mailable, $callback = null) { - /** @var \Illuminate\Hashing\HashManager $instance */ - return $instance->createArgonDriver(); + /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ + $instance->assertNotSent($mailable, $callback); } /** - * Create an instance of the Argon2id hash Driver. + * Assert that no mailables were sent or queued to be sent. * - * @return \Illuminate\Hashing\Argon2IdHasher + * @return void * @static - */ - public static function createArgon2idDriver() + */ public static function assertNothingOutgoing() { - /** @var \Illuminate\Hashing\HashManager $instance */ - return $instance->createArgon2idDriver(); + /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ + $instance->assertNothingOutgoing(); } /** - * Get information about the given hashed value. + * Assert that no mailables were sent. * - * @param string $hashedValue - * @return array + * @return void * @static - */ - public static function info($hashedValue) + */ public static function assertNothingSent() { - /** @var \Illuminate\Hashing\HashManager $instance */ - return $instance->info($hashedValue); + /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ + $instance->assertNothingSent(); } /** - * Hash the given value. + * Assert if a mailable was queued based on a truth-test callback. * - * @param string $value - * @param array $options - * @return string + * @param string|\Closure $mailable + * @param callable|int|null $callback + * @return void * @static - */ - public static function make($value, $options = []) + */ public static function assertQueued($mailable, $callback = null) { - /** @var \Illuminate\Hashing\HashManager $instance */ - return $instance->make($value, $options); + /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ + $instance->assertQueued($mailable, $callback); } /** - * Check the given plain value against a hash. + * Determine if a mailable was not queued based on a truth-test callback. * - * @param string $value - * @param string $hashedValue - * @param array $options - * @return bool + * @param string|\Closure $mailable + * @param callable|null $callback + * @return void * @static - */ - public static function check($value, $hashedValue, $options = []) + */ public static function assertNotQueued($mailable, $callback = null) { - /** @var \Illuminate\Hashing\HashManager $instance */ - return $instance->check($value, $hashedValue, $options); + /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ + $instance->assertNotQueued($mailable, $callback); } /** - * Check if the given hash has been hashed using the given options. + * Assert that no mailables were queued. * - * @param string $hashedValue - * @param array $options - * @return bool + * @return void * @static - */ - public static function needsRehash($hashedValue, $options = []) + */ public static function assertNothingQueued() { - /** @var \Illuminate\Hashing\HashManager $instance */ - return $instance->needsRehash($hashedValue, $options); + /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ + $instance->assertNothingQueued(); } /** - * Get the default driver name. + * Assert the total number of mailables that were sent. * - * @return string + * @param int $count + * @return void * @static - */ - public static function getDefaultDriver() + */ public static function assertSentCount($count) { - /** @var \Illuminate\Hashing\HashManager $instance */ - return $instance->getDefaultDriver(); + /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ + $instance->assertSentCount($count); } /** - * Get a driver instance. + * Assert the total number of mailables that were queued. * - * @param string|null $driver - * @return mixed - * @throws \InvalidArgumentException + * @param int $count + * @return void * @static - */ - public static function driver($driver = null) - { //Method inherited from \Illuminate\Support\Manager - /** @var \Illuminate\Hashing\HashManager $instance */ - return $instance->driver($driver); + */ public static function assertQueuedCount($count) + { + /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ + $instance->assertQueuedCount($count); } /** - * Register a custom driver creator Closure. + * Assert the total number of mailables that were sent or queued. * - * @param string $driver - * @param \Closure $callback - * @return \Illuminate\Hashing\HashManager + * @param int $count + * @return void * @static - */ - public static function extend($driver, $callback) - { //Method inherited from \Illuminate\Support\Manager - /** @var \Illuminate\Hashing\HashManager $instance */ - return $instance->extend($driver, $callback); + */ public static function assertOutgoingCount($count) + { + /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ + $instance->assertOutgoingCount($count); } /** - * Get all of the created "drivers". + * Get all of the mailables matching a truth-test callback. * - * @return array + * @param string|\Closure $mailable + * @param callable|null $callback + * @return \Illuminate\Support\Collection * @static - */ - public static function getDrivers() - { //Method inherited from \Illuminate\Support\Manager - /** @var \Illuminate\Hashing\HashManager $instance */ - return $instance->getDrivers(); + */ public static function sent($mailable, $callback = null) + { + /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ + return $instance->sent($mailable, $callback); } /** - * Get the container instance used by the manager. + * Determine if the given mailable has been sent. * - * @return \Illuminate\Contracts\Container\Container + * @param string $mailable + * @return bool * @static - */ - public static function getContainer() - { //Method inherited from \Illuminate\Support\Manager - /** @var \Illuminate\Hashing\HashManager $instance */ - return $instance->getContainer(); + */ public static function hasSent($mailable) + { + /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ + return $instance->hasSent($mailable); } /** - * Set the container instance used by the manager. + * Get all of the queued mailables matching a truth-test callback. * - * @param \Illuminate\Contracts\Container\Container $container - * @return \Illuminate\Hashing\HashManager + * @param string|\Closure $mailable + * @param callable|null $callback + * @return \Illuminate\Support\Collection * @static - */ - public static function setContainer($container) - { //Method inherited from \Illuminate\Support\Manager - /** @var \Illuminate\Hashing\HashManager $instance */ - return $instance->setContainer($container); + */ public static function queued($mailable, $callback = null) + { + /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ + return $instance->queued($mailable, $callback); } /** - * Forget all of the resolved driver instances. + * Determine if the given mailable has been queued. * - * @return \Illuminate\Hashing\HashManager + * @param string $mailable + * @return bool * @static - */ - public static function forgetDrivers() - { //Method inherited from \Illuminate\Support\Manager - /** @var \Illuminate\Hashing\HashManager $instance */ - return $instance->forgetDrivers(); + */ public static function hasQueued($mailable) + { + /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ + return $instance->hasQueued($mailable); } - - } - /** - * - * - * @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 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 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 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 withUrlParameters(array $parameters = []) - * @method static \Illuminate\Http\Client\PendingRequest withCookies(array $cookies, string $domain) - * @method static \Illuminate\Http\Client\PendingRequest maxRedirects(int $max) - * @method static \Illuminate\Http\Client\PendingRequest withoutRedirecting() - * @method static \Illuminate\Http\Client\PendingRequest withoutVerifying() - * @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 withOptions(array $options) - * @method static \Illuminate\Http\Client\PendingRequest withMiddleware(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 throwUnless(bool $condition) - * @method static \Illuminate\Http\Client\PendingRequest dump() - * @method static \Illuminate\Http\Client\PendingRequest dd() - * @method static \Illuminate\Http\Client\Response get(string $url, array|string|null $query = null) - * @method static \Illuminate\Http\Client\Response head(string $url, array|string|null $query = null) - * @method static \Illuminate\Http\Client\Response post(string $url, array $data = []) - * @method static \Illuminate\Http\Client\Response patch(string $url, array $data = []) - * @method static \Illuminate\Http\Client\Response put(string $url, array $data = []) - * @method static \Illuminate\Http\Client\Response delete(string $url, array $data = []) - * @method static array pool(callable $callback) - * @method static \Illuminate\Http\Client\Response send(string $method, string $url, array $options = []) - * @method static \GuzzleHttp\Client buildClient() - * @method static \GuzzleHttp\Client createClient(\GuzzleHttp\HandlerStack $handlerStack) - * @method static \GuzzleHttp\HandlerStack buildHandlerStack() - * @method static \GuzzleHttp\HandlerStack pushHandlers(\GuzzleHttp\HandlerStack $handlerStack) - * @method static \Closure buildBeforeSendingHandler() - * @method static \Closure buildRecorderHandler() - * @method static \Closure buildStubHandler() - * @method static \GuzzleHttp\Psr7\RequestInterface runBeforeSendingCallbacks(\GuzzleHttp\Psr7\RequestInterface $request, array $options) - * @method static array mergeOptions(array ...$options) - * @method static \Illuminate\Http\Client\PendingRequest stub(callable $callback) - * @method static \Illuminate\Http\Client\PendingRequest async(bool $async = true) - * @method static \GuzzleHttp\Promise\PromiseInterface|null getPromise() - * @method static \Illuminate\Http\Client\PendingRequest setClient(\GuzzleHttp\Client $client) - * @method static \Illuminate\Http\Client\PendingRequest setHandler(callable $handler) - * @method static array getOptions() - * @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 { /** - * Create a new response instance for use during stubbing. + * Begin the process of mailing a mailable class instance. * - * @param array|string|null $body - * @param int $status - * @param array $headers - * @return \GuzzleHttp\Promise\PromiseInterface + * @param mixed $users + * @return \Illuminate\Mail\PendingMail * @static - */ - public static function response($body = null, $status = 200, $headers = []) + */ public static function to($users) { - return \Illuminate\Http\Client\Factory::response($body, $status, $headers); + /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ + return $instance->to($users); } /** - * Get an invokable object that returns a sequence of responses in order for use during stubbing. + * Begin the process of mailing a mailable class instance. * - * @param array $responses - * @return \Illuminate\Http\Client\ResponseSequence + * @param mixed $users + * @return \Illuminate\Mail\PendingMail * @static - */ - public static function sequence($responses = []) + */ public static function cc($users) { - /** @var \Illuminate\Http\Client\Factory $instance */ - return $instance->sequence($responses); + /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ + return $instance->cc($users); } /** - * Register a stub callable that will intercept requests and be able to return stub responses. + * Begin the process of mailing a mailable class instance. * - * @param callable|array|null $callback - * @return \Illuminate\Http\Client\Factory + * @param mixed $users + * @return \Illuminate\Mail\PendingMail * @static - */ - public static function fake($callback = null) + */ public static function bcc($users) { - /** @var \Illuminate\Http\Client\Factory $instance */ - return $instance->fake($callback); + /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ + return $instance->bcc($users); } /** - * Register a response sequence for the given URL pattern. + * Send a new message with only a raw text part. * - * @param string $url - * @return \Illuminate\Http\Client\ResponseSequence + * @param string $text + * @param \Closure|string $callback + * @return void * @static - */ - public static function fakeSequence($url = '*') + */ public static function raw($text, $callback) { - /** @var \Illuminate\Http\Client\Factory $instance */ - return $instance->fakeSequence($url); + /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ + $instance->raw($text, $callback); } /** - * Stub the given URL using the given callback. + * Send a new message using a view. * - * @param string $url - * @param \Illuminate\Http\Client\Response|\GuzzleHttp\Promise\PromiseInterface|callable $callback - * @return \Illuminate\Http\Client\Factory + * @param \Illuminate\Contracts\Mail\Mailable|string|array $view + * @param array $data + * @param \Closure|string|null $callback + * @return mixed|void * @static - */ - public static function stubUrl($url, $callback) + */ public static function send($view, $data = [], $callback = null) { - /** @var \Illuminate\Http\Client\Factory $instance */ - return $instance->stubUrl($url, $callback); + /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ + return $instance->send($view, $data, $callback); } /** - * Indicate that an exception should be thrown if any request is not faked. + * Send a new message synchronously using a view. * - * @param bool $prevent - * @return \Illuminate\Http\Client\Factory + * @param \Illuminate\Contracts\Mail\Mailable|string|array $mailable + * @param array $data + * @param \Closure|string|null $callback + * @return void * @static - */ - public static function preventStrayRequests($prevent = true) + */ public static function sendNow($mailable, $data = [], $callback = null) { - /** @var \Illuminate\Http\Client\Factory $instance */ - return $instance->preventStrayRequests($prevent); + /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ + $instance->sendNow($mailable, $data, $callback); } /** - * Indicate that an exception should not be thrown if any request is not faked. + * Queue a new message for sending. * - * @return \Illuminate\Http\Client\Factory + * @param \Illuminate\Contracts\Mail\Mailable|string|array $view + * @param string|null $queue + * @return mixed * @static - */ - public static function allowStrayRequests() + */ public static function queue($view, $queue = null) { - /** @var \Illuminate\Http\Client\Factory $instance */ - return $instance->allowStrayRequests(); + /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ + return $instance->queue($view, $queue); } /** - * Record a request response pair. + * Queue a new e-mail message for sending after (n) seconds. * - * @param \Illuminate\Http\Client\Request $request - * @param \Illuminate\Http\Client\Response $response - * @return void + * @param \DateTimeInterface|\DateInterval|int $delay + * @param \Illuminate\Contracts\Mail\Mailable|string|array $view + * @param string|null $queue + * @return mixed * @static - */ - public static function recordRequestResponsePair($request, $response) + */ public static function later($delay, $view, $queue = null) { - /** @var \Illuminate\Http\Client\Factory $instance */ - $instance->recordRequestResponsePair($request, $response); + /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ + return $instance->later($delay, $view, $queue); } + } + /** + * + * + * @see \Illuminate\Notifications\ChannelManager + * @see \Illuminate\Support\Testing\Fakes\NotificationFake + */ class Notification { /** - * Assert that a request / response pair was recorded matching a given truth test. + * Send the given notification to the given notifiable entities. * - * @param callable $callback + * @param \Illuminate\Support\Collection|array|mixed $notifiables + * @param mixed $notification * @return void * @static - */ - public static function assertSent($callback) + */ public static function send($notifiables, $notification) { - /** @var \Illuminate\Http\Client\Factory $instance */ - $instance->assertSent($callback); + /** @var \Illuminate\Notifications\ChannelManager $instance */ + $instance->send($notifiables, $notification); } /** - * Assert that the given request was sent in the given order. + * Send the given notification immediately. * - * @param array $callbacks + * @param \Illuminate\Support\Collection|array|mixed $notifiables + * @param mixed $notification + * @param array|null $channels * @return void * @static - */ - public static function assertSentInOrder($callbacks) + */ public static function sendNow($notifiables, $notification, $channels = null) { - /** @var \Illuminate\Http\Client\Factory $instance */ - $instance->assertSentInOrder($callbacks); + /** @var \Illuminate\Notifications\ChannelManager $instance */ + $instance->sendNow($notifiables, $notification, $channels); } /** - * Assert that a request / response pair was not recorded matching a given truth test. + * Get a channel instance. * - * @param callable $callback - * @return void + * @param string|null $name + * @return mixed * @static - */ - public static function assertNotSent($callback) + */ public static function channel($name = null) { - /** @var \Illuminate\Http\Client\Factory $instance */ - $instance->assertNotSent($callback); + /** @var \Illuminate\Notifications\ChannelManager $instance */ + return $instance->channel($name); } /** - * Assert that no request / response pair was recorded. + * Get the default channel driver name. * - * @return void + * @return string * @static - */ - public static function assertNothingSent() + */ public static function getDefaultDriver() { - /** @var \Illuminate\Http\Client\Factory $instance */ - $instance->assertNothingSent(); + /** @var \Illuminate\Notifications\ChannelManager $instance */ + return $instance->getDefaultDriver(); } /** - * Assert how many requests have been recorded. + * Get the default channel driver name. * - * @param int $count - * @return void + * @return string * @static - */ - public static function assertSentCount($count) + */ public static function deliversVia() { - /** @var \Illuminate\Http\Client\Factory $instance */ - $instance->assertSentCount($count); + /** @var \Illuminate\Notifications\ChannelManager $instance */ + return $instance->deliversVia(); } /** - * Assert that every created response sequence is empty. + * Set the default channel driver name. * + * @param string $channel * @return void * @static - */ - public static function assertSequencesAreEmpty() + */ public static function deliverVia($channel) { - /** @var \Illuminate\Http\Client\Factory $instance */ - $instance->assertSequencesAreEmpty(); + /** @var \Illuminate\Notifications\ChannelManager $instance */ + $instance->deliverVia($channel); } /** - * Get a collection of the request / response pairs matching the given truth test. + * Set the locale of notifications. * - * @param callable $callback - * @return \Illuminate\Support\Collection + * @param string $locale + * @return \Illuminate\Notifications\ChannelManager * @static - */ - public static function recorded($callback = null) + */ public static function locale($locale) { - /** @var \Illuminate\Http\Client\Factory $instance */ - return $instance->recorded($callback); + /** @var \Illuminate\Notifications\ChannelManager $instance */ + return $instance->locale($locale); } /** - * Get the current event dispatcher implementation. + * Get a driver instance. * - * @return \Illuminate\Contracts\Events\Dispatcher|null + * @param string|null $driver + * @return mixed + * @throws \InvalidArgumentException * @static - */ - public static function getDispatcher() - { - /** @var \Illuminate\Http\Client\Factory $instance */ - return $instance->getDispatcher(); + */ public static function driver($driver = null) + { //Method inherited from \Illuminate\Support\Manager + /** @var \Illuminate\Notifications\ChannelManager $instance */ + return $instance->driver($driver); } /** - * Register a custom macro. + * Register a custom driver creator Closure. * - * @param string $name - * @param object|callable $macro - * @return void + * @param string $driver + * @param \Closure $callback + * @return \Illuminate\Notifications\ChannelManager * @static - */ - public static function macro($name, $macro) - { - \Illuminate\Http\Client\Factory::macro($name, $macro); + */ public static function extend($driver, $callback) + { //Method inherited from \Illuminate\Support\Manager + /** @var \Illuminate\Notifications\ChannelManager $instance */ + return $instance->extend($driver, $callback); } /** - * Mix another object into the class. + * Get all of the created "drivers". * - * @param object $mixin - * @param bool $replace - * @return void - * @throws \ReflectionException + * @return array * @static - */ - public static function mixin($mixin, $replace = true) - { - \Illuminate\Http\Client\Factory::mixin($mixin, $replace); + */ public static function getDrivers() + { //Method inherited from \Illuminate\Support\Manager + /** @var \Illuminate\Notifications\ChannelManager $instance */ + return $instance->getDrivers(); } /** - * Checks if macro is registered. + * Get the container instance used by the manager. * - * @param string $name - * @return bool + * @return \Illuminate\Contracts\Container\Container * @static - */ - public static function hasMacro($name) - { - return \Illuminate\Http\Client\Factory::hasMacro($name); + */ public static function getContainer() + { //Method inherited from \Illuminate\Support\Manager + /** @var \Illuminate\Notifications\ChannelManager $instance */ + return $instance->getContainer(); } /** - * Flush the existing macros. + * Set the container instance used by the manager. * - * @return void + * @param \Illuminate\Contracts\Container\Container $container + * @return \Illuminate\Notifications\ChannelManager * @static - */ - public static function flushMacros() - { - \Illuminate\Http\Client\Factory::flushMacros(); + */ public static function setContainer($container) + { //Method inherited from \Illuminate\Support\Manager + /** @var \Illuminate\Notifications\ChannelManager $instance */ + return $instance->setContainer($container); } /** - * Dynamically handle calls to the class. + * Forget all of the resolved driver instances. * - * @param string $method - * @param array $parameters - * @return mixed - * @throws \BadMethodCallException + * @return \Illuminate\Notifications\ChannelManager * @static - */ - public static function macroCall($method, $parameters) - { - /** @var \Illuminate\Http\Client\Factory $instance */ - return $instance->macroCall($method, $parameters); + */ public static function forgetDrivers() + { //Method inherited from \Illuminate\Support\Manager + /** @var \Illuminate\Notifications\ChannelManager $instance */ + return $instance->forgetDrivers(); } - - } - /** - * - * - * @see \Illuminate\Translation\Translator - */ - class Lang { /** - * Determine if a translation exists for a given locale. + * Assert if a notification was sent on-demand based on a truth-test callback. * - * @param string $key - * @param string|null $locale - * @return bool + * @param string|\Closure $notification + * @param callable|null $callback + * @return void + * @throws \Exception * @static - */ - public static function hasForLocale($key, $locale = null) + */ public static function assertSentOnDemand($notification, $callback = null) { - /** @var \Illuminate\Translation\Translator $instance */ - return $instance->hasForLocale($key, $locale); + /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ + $instance->assertSentOnDemand($notification, $callback); } /** - * Determine if a translation exists. + * Assert if a notification was sent based on a truth-test callback. * - * @param string $key - * @param string|null $locale - * @param bool $fallback - * @return bool + * @param mixed $notifiable + * @param string|\Closure $notification + * @param callable|null $callback + * @return void + * @throws \Exception * @static - */ - public static function has($key, $locale = null, $fallback = true) + */ public static function assertSentTo($notifiable, $notification, $callback = null) { - /** @var \Illuminate\Translation\Translator $instance */ - return $instance->has($key, $locale, $fallback); + /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ + $instance->assertSentTo($notifiable, $notification, $callback); } /** - * Get the translation for the given key. + * Assert if a notification was sent on-demand a number of times. * - * @param string $key - * @param array $replace - * @param string|null $locale - * @param bool $fallback - * @return string|array + * @param string $notification + * @param int $times + * @return void * @static - */ - public static function get($key, $replace = [], $locale = null, $fallback = true) + */ public static function assertSentOnDemandTimes($notification, $times = 1) { - /** @var \Illuminate\Translation\Translator $instance */ - return $instance->get($key, $replace, $locale, $fallback); + /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ + $instance->assertSentOnDemandTimes($notification, $times); } /** - * Get a translation according to an integer value. + * Assert if a notification was sent a number of times. * - * @param string $key - * @param \Countable|int|array $number - * @param array $replace - * @param string|null $locale - * @return string + * @param mixed $notifiable + * @param string $notification + * @param int $times + * @return void * @static - */ - public static function choice($key, $number, $replace = [], $locale = null) + */ public static function assertSentToTimes($notifiable, $notification, $times = 1) { - /** @var \Illuminate\Translation\Translator $instance */ - return $instance->choice($key, $number, $replace, $locale); + /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ + $instance->assertSentToTimes($notifiable, $notification, $times); } /** - * Add translation lines to the given locale. + * Determine if a notification was sent based on a truth-test callback. * - * @param array $lines - * @param string $locale - * @param string $namespace + * @param mixed $notifiable + * @param string|\Closure $notification + * @param callable|null $callback * @return void + * @throws \Exception * @static - */ - public static function addLines($lines, $locale, $namespace = '*') + */ public static function assertNotSentTo($notifiable, $notification, $callback = null) { - /** @var \Illuminate\Translation\Translator $instance */ - $instance->addLines($lines, $locale, $namespace); + /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ + $instance->assertNotSentTo($notifiable, $notification, $callback); } /** - * Load the specified language group. + * Assert that no notifications were sent. * - * @param string $namespace - * @param string $group - * @param string $locale * @return void * @static - */ - public static function load($namespace, $group, $locale) + */ public static function assertNothingSent() { - /** @var \Illuminate\Translation\Translator $instance */ - $instance->load($namespace, $group, $locale); + /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ + $instance->assertNothingSent(); } /** - * Add a new namespace to the loader. + * Assert that no notifications were sent to the given notifiable. * - * @param string $namespace - * @param string $hint + * @param mixed $notifiable * @return void + * @throws \Exception * @static - */ - public static function addNamespace($namespace, $hint) + */ public static function assertNothingSentTo($notifiable) { - /** @var \Illuminate\Translation\Translator $instance */ - $instance->addNamespace($namespace, $hint); + /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ + $instance->assertNothingSentTo($notifiable); } /** - * Add a new JSON path to the loader. + * Assert the total amount of times a notification was sent. * - * @param string $path + * @param string $notification + * @param int $expectedCount * @return void * @static - */ - public static function addJsonPath($path) + */ public static function assertSentTimes($notification, $expectedCount) { - /** @var \Illuminate\Translation\Translator $instance */ - $instance->addJsonPath($path); + /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ + $instance->assertSentTimes($notification, $expectedCount); } /** - * Parse a key into namespace, group, and item. + * Assert the total count of notification that were sent. * - * @param string $key - * @return array + * @param int $expectedCount + * @return void * @static - */ - public static function parseKey($key) + */ public static function assertCount($expectedCount) { - /** @var \Illuminate\Translation\Translator $instance */ - return $instance->parseKey($key); + /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ + $instance->assertCount($expectedCount); } /** - * Specify a callback that should be invoked to determined the applicable locale array. + * Get all of the notifications matching a truth-test callback. * - * @param callable $callback - * @return void + * @param mixed $notifiable + * @param string $notification + * @param callable|null $callback + * @return \Illuminate\Support\Collection * @static - */ - public static function determineLocalesUsing($callback) + */ public static function sent($notifiable, $notification, $callback = null) { - /** @var \Illuminate\Translation\Translator $instance */ - $instance->determineLocalesUsing($callback); + /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ + return $instance->sent($notifiable, $notification, $callback); } /** - * Get the message selector instance. + * Determine if there are more notifications left to inspect. * - * @return \Illuminate\Translation\MessageSelector + * @param mixed $notifiable + * @param string $notification + * @return bool * @static - */ - public static function getSelector() + */ public static function hasSent($notifiable, $notification) { - /** @var \Illuminate\Translation\Translator $instance */ - return $instance->getSelector(); + /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ + return $instance->hasSent($notifiable, $notification); } /** - * Set the message selector instance. + * Specify if notification should be serialized and restored when being "pushed" to the queue. * - * @param \Illuminate\Translation\MessageSelector $selector - * @return void + * @param bool $serializeAndRestore + * @return \Illuminate\Support\Testing\Fakes\NotificationFake * @static - */ - public static function setSelector($selector) + */ public static function serializeAndRestore($serializeAndRestore = true) { - /** @var \Illuminate\Translation\Translator $instance */ - $instance->setSelector($selector); + /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ + return $instance->serializeAndRestore($serializeAndRestore); } /** - * Get the language line loader implementation. + * Get the notifications that have been sent. * - * @return \Illuminate\Contracts\Translation\Loader + * @return array * @static - */ - public static function getLoader() + */ public static function sentNotifications() { - /** @var \Illuminate\Translation\Translator $instance */ - return $instance->getLoader(); + /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ + return $instance->sentNotifications(); } /** - * Get the default locale being used. + * Register a custom macro. * - * @return string + * @param string $name + * @param object|callable $macro + * @return void * @static - */ - public static function locale() + */ public static function macro($name, $macro) { - /** @var \Illuminate\Translation\Translator $instance */ - return $instance->locale(); + \Illuminate\Support\Testing\Fakes\NotificationFake::macro($name, $macro); } /** - * Get the default locale being used. + * Mix another object into the class. * - * @return string + * @param object $mixin + * @param bool $replace + * @return void + * @throws \ReflectionException * @static - */ - public static function getLocale() + */ public static function mixin($mixin, $replace = true) { - /** @var \Illuminate\Translation\Translator $instance */ - return $instance->getLocale(); + \Illuminate\Support\Testing\Fakes\NotificationFake::mixin($mixin, $replace); } /** - * Set the default locale. + * Checks if macro is registered. * - * @param string $locale - * @return void - * @throws \InvalidArgumentException + * @param string $name + * @return bool * @static - */ - public static function setLocale($locale) + */ public static function hasMacro($name) { - /** @var \Illuminate\Translation\Translator $instance */ - $instance->setLocale($locale); + return \Illuminate\Support\Testing\Fakes\NotificationFake::hasMacro($name); } /** - * Get the fallback locale being used. + * Flush the existing macros. * - * @return string + * @return void * @static - */ - public static function getFallback() + */ public static function flushMacros() { - /** @var \Illuminate\Translation\Translator $instance */ - return $instance->getFallback(); + \Illuminate\Support\Testing\Fakes\NotificationFake::flushMacros(); } + } + /** + * + * + * @method static string sendResetLink(array $credentials, \Closure|null $callback = null) + * @method static mixed reset(array $credentials, \Closure $callback) + * @method static \Illuminate\Contracts\Auth\CanResetPassword|null getUser(array $credentials) + * @method static string createToken(\Illuminate\Contracts\Auth\CanResetPassword $user) + * @method static void deleteToken(\Illuminate\Contracts\Auth\CanResetPassword $user) + * @method static bool tokenExists(\Illuminate\Contracts\Auth\CanResetPassword $user, string $token) + * @method static \Illuminate\Auth\Passwords\TokenRepositoryInterface getRepository() + * @see \Illuminate\Auth\Passwords\PasswordBrokerManager + * @see \Illuminate\Auth\Passwords\PasswordBroker + */ class Password { /** - * Set the fallback locale being used. + * Attempt to get the broker from the local cache. * - * @param string $fallback - * @return void + * @param string|null $name + * @return \Illuminate\Contracts\Auth\PasswordBroker * @static - */ - public static function setFallback($fallback) + */ public static function broker($name = null) { - /** @var \Illuminate\Translation\Translator $instance */ - $instance->setFallback($fallback); + /** @var \Illuminate\Auth\Passwords\PasswordBrokerManager $instance */ + return $instance->broker($name); } /** - * Set the loaded translation groups. + * Get the default password broker name. * - * @param array $loaded - * @return void + * @return string * @static - */ - public static function setLoaded($loaded) + */ public static function getDefaultDriver() { - /** @var \Illuminate\Translation\Translator $instance */ - $instance->setLoaded($loaded); + /** @var \Illuminate\Auth\Passwords\PasswordBrokerManager $instance */ + return $instance->getDefaultDriver(); } /** - * Add a handler to be executed in order to format a given class to a string during translation replacements. + * Set the default password broker name. * - * @param callable|string $class - * @param callable|null $handler + * @param string $name * @return void * @static - */ - public static function stringable($class, $handler = null) + */ public static function setDefaultDriver($name) { - /** @var \Illuminate\Translation\Translator $instance */ - $instance->stringable($class, $handler); + /** @var \Illuminate\Auth\Passwords\PasswordBrokerManager $instance */ + $instance->setDefaultDriver($name); } + } + /** + * + * + * @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 { /** - * Set the parsed value of a key. + * Create a new fake process response for testing purposes. * - * @param string $key - * @param array $parsed - * @return void + * @param array|string $output + * @param array|string $errorOutput + * @param int $exitCode + * @return \Illuminate\Process\FakeProcessResult * @static - */ - public static function setParsedKey($key, $parsed) - { //Method inherited from \Illuminate\Support\NamespacedItemResolver - /** @var \Illuminate\Translation\Translator $instance */ - $instance->setParsedKey($key, $parsed); + */ public static function result($output = '', $errorOutput = '', $exitCode = 0) + { + /** @var \Illuminate\Process\Factory $instance */ + return $instance->result($output, $errorOutput, $exitCode); } /** - * Flush the cache of parsed keys. + * Begin describing a fake process lifecycle. * - * @return void + * @return \Illuminate\Process\FakeProcessDescription * @static - */ - public static function flushParsedKeys() - { //Method inherited from \Illuminate\Support\NamespacedItemResolver - /** @var \Illuminate\Translation\Translator $instance */ - $instance->flushParsedKeys(); + */ public static function describe() + { + /** @var \Illuminate\Process\Factory $instance */ + return $instance->describe(); } /** - * Register a custom macro. + * Begin describing a fake process sequence. * - * @param string $name - * @param object|callable $macro - * @return void + * @param array $processes + * @return \Illuminate\Process\FakeProcessSequence * @static - */ - public static function macro($name, $macro) + */ public static function sequence($processes = []) { - \Illuminate\Translation\Translator::macro($name, $macro); + /** @var \Illuminate\Process\Factory $instance */ + return $instance->sequence($processes); } /** - * Mix another object into the class. + * Indicate that the process factory should fake processes. * - * @param object $mixin - * @param bool $replace - * @return void - * @throws \ReflectionException + * @param \Closure|array|null $callback + * @return \Illuminate\Process\Factory * @static - */ - public static function mixin($mixin, $replace = true) + */ public static function fake($callback = null) { - \Illuminate\Translation\Translator::mixin($mixin, $replace); + /** @var \Illuminate\Process\Factory $instance */ + return $instance->fake($callback); } /** - * Checks if macro is registered. + * Determine if the process factory has fake process handlers and is recording processes. * - * @param string $name * @return bool * @static - */ - public static function hasMacro($name) + */ public static function isRecording() { - return \Illuminate\Translation\Translator::hasMacro($name); + /** @var \Illuminate\Process\Factory $instance */ + return $instance->isRecording(); } /** - * Flush the existing macros. + * Record the given process if processes should be recorded. * - * @return void + * @param \Illuminate\Process\PendingProcess $process + * @param \Illuminate\Contracts\Process\ProcessResult $result + * @return \Illuminate\Process\Factory * @static - */ - public static function flushMacros() + */ public static function recordIfRecording($process, $result) { - \Illuminate\Translation\Translator::flushMacros(); + /** @var \Illuminate\Process\Factory $instance */ + return $instance->recordIfRecording($process, $result); } - - } - /** - * - * - * @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) - * @see \Illuminate\Log\LogManager - */ - class Log { /** - * Build an on-demand log channel. + * Record the given process. * - * @param array $config - * @return \Psr\Log\LoggerInterface + * @param \Illuminate\Process\PendingProcess $process + * @param \Illuminate\Contracts\Process\ProcessResult $result + * @return \Illuminate\Process\Factory * @static - */ - public static function build($config) + */ public static function record($process, $result) { - /** @var \Illuminate\Log\LogManager $instance */ - return $instance->build($config); + /** @var \Illuminate\Process\Factory $instance */ + return $instance->record($process, $result); } /** - * Create a new, on-demand aggregate logger instance. + * Indicate that an exception should be thrown if any process is not faked. * - * @param array $channels - * @param string|null $channel - * @return \Psr\Log\LoggerInterface + * @param bool $prevent + * @return \Illuminate\Process\Factory * @static - */ - public static function stack($channels, $channel = null) + */ public static function preventStrayProcesses($prevent = true) { - /** @var \Illuminate\Log\LogManager $instance */ - return $instance->stack($channels, $channel); + /** @var \Illuminate\Process\Factory $instance */ + return $instance->preventStrayProcesses($prevent); } /** - * Get a log channel instance. + * Determine if stray processes are being prevented. * - * @param string|null $channel - * @return \Psr\Log\LoggerInterface + * @return bool * @static - */ - public static function channel($channel = null) + */ public static function preventingStrayProcesses() { - /** @var \Illuminate\Log\LogManager $instance */ - return $instance->channel($channel); + /** @var \Illuminate\Process\Factory $instance */ + return $instance->preventingStrayProcesses(); } /** - * Get a log driver instance. + * Assert that a process was recorded matching a given truth test. * - * @param string|null $driver - * @return \Psr\Log\LoggerInterface + * @param \Closure|string $callback + * @return \Illuminate\Process\Factory * @static - */ - public static function driver($driver = null) + */ public static function assertRan($callback) { - /** @var \Illuminate\Log\LogManager $instance */ - return $instance->driver($driver); + /** @var \Illuminate\Process\Factory $instance */ + return $instance->assertRan($callback); } /** - * Share context across channels and stacks. + * Assert that a process was recorded a given number of times matching a given truth test. * - * @param array $context - * @return \Illuminate\Log\LogManager + * @param \Closure|string $callback + * @param int $times + * @return \Illuminate\Process\Factory * @static - */ - public static function shareContext($context) + */ public static function assertRanTimes($callback, $times = 1) { - /** @var \Illuminate\Log\LogManager $instance */ - return $instance->shareContext($context); + /** @var \Illuminate\Process\Factory $instance */ + return $instance->assertRanTimes($callback, $times); } /** - * The context shared across channels and stacks. + * Assert that a process was not recorded matching a given truth test. * - * @return array + * @param \Closure|string $callback + * @return \Illuminate\Process\Factory * @static - */ - public static function sharedContext() + */ public static function assertNotRan($callback) { - /** @var \Illuminate\Log\LogManager $instance */ - return $instance->sharedContext(); + /** @var \Illuminate\Process\Factory $instance */ + return $instance->assertNotRan($callback); } /** - * Flush the shared context. + * Assert that a process was not recorded matching a given truth test. * - * @return \Illuminate\Log\LogManager + * @param \Closure|string $callback + * @return \Illuminate\Process\Factory * @static - */ - public static function flushSharedContext() + */ public static function assertDidntRun($callback) { - /** @var \Illuminate\Log\LogManager $instance */ - return $instance->flushSharedContext(); + /** @var \Illuminate\Process\Factory $instance */ + return $instance->assertDidntRun($callback); } /** - * Get the default log driver name. + * Assert that no processes were recorded. * - * @return string|null + * @return \Illuminate\Process\Factory * @static - */ - public static function getDefaultDriver() + */ public static function assertNothingRan() { - /** @var \Illuminate\Log\LogManager $instance */ - return $instance->getDefaultDriver(); + /** @var \Illuminate\Process\Factory $instance */ + return $instance->assertNothingRan(); } /** - * Set the default log driver name. + * Start defining a pool of processes. * - * @param string $name - * @return void + * @param callable $callback + * @return \Illuminate\Process\Pool * @static - */ - public static function setDefaultDriver($name) + */ public static function pool($callback) { - /** @var \Illuminate\Log\LogManager $instance */ - $instance->setDefaultDriver($name); + /** @var \Illuminate\Process\Factory $instance */ + return $instance->pool($callback); } /** - * Register a custom driver creator Closure. + * Start defining a series of piped processes. * - * @param string $driver - * @param \Closure $callback - * @return \Illuminate\Log\LogManager + * @param callable|array $callback + * @return \Illuminate\Contracts\Process\ProcessResult * @static - */ - public static function extend($driver, $callback) + */ public static function pipe($callback, $output = null) { - /** @var \Illuminate\Log\LogManager $instance */ - return $instance->extend($driver, $callback); + /** @var \Illuminate\Process\Factory $instance */ + return $instance->pipe($callback, $output); } /** - * Unset the given channel instance. + * Run a pool of processes and wait for them to finish executing. * - * @param string|null $driver - * @return void + * @param callable $callback + * @param callable|null $output + * @return \Illuminate\Process\ProcessPoolResults * @static - */ - public static function forgetChannel($driver = null) + */ public static function concurrently($callback, $output = null) { - /** @var \Illuminate\Log\LogManager $instance */ - $instance->forgetChannel($driver); + /** @var \Illuminate\Process\Factory $instance */ + return $instance->concurrently($callback, $output); } /** - * Get all of the resolved log channels. + * Create a new pending process associated with this factory. * - * @return array + * @return \Illuminate\Process\PendingProcess * @static - */ - public static function getChannels() + */ public static function newPendingProcess() { - /** @var \Illuminate\Log\LogManager $instance */ - return $instance->getChannels(); + /** @var \Illuminate\Process\Factory $instance */ + return $instance->newPendingProcess(); } /** - * System is unusable. + * Register a custom macro. * - * @param string $message - * @param array $context + * @param string $name + * @param object|callable $macro * @return void * @static - */ - public static function emergency($message, $context = []) + */ public static function macro($name, $macro) { - /** @var \Illuminate\Log\LogManager $instance */ - $instance->emergency($message, $context); + \Illuminate\Process\Factory::macro($name, $macro); } /** - * Action must be taken immediately. - * - * Example: Entire website down, database unavailable, etc. This should - * trigger the SMS alerts and wake you up. + * Mix another object into the class. * - * @param string $message - * @param array $context + * @param object $mixin + * @param bool $replace * @return void + * @throws \ReflectionException * @static - */ - public static function alert($message, $context = []) + */ public static function mixin($mixin, $replace = true) { - /** @var \Illuminate\Log\LogManager $instance */ - $instance->alert($message, $context); + \Illuminate\Process\Factory::mixin($mixin, $replace); } /** - * Critical conditions. - * - * Example: Application component unavailable, unexpected exception. + * Checks if macro is registered. * - * @param string $message - * @param array $context - * @return void + * @param string $name + * @return bool * @static - */ - public static function critical($message, $context = []) + */ public static function hasMacro($name) { - /** @var \Illuminate\Log\LogManager $instance */ - $instance->critical($message, $context); + return \Illuminate\Process\Factory::hasMacro($name); } /** - * Runtime errors that do not require immediate action but should typically - * be logged and monitored. + * Flush the existing macros. * - * @param string $message - * @param array $context * @return void * @static - */ - public static function error($message, $context = []) + */ public static function flushMacros() { - /** @var \Illuminate\Log\LogManager $instance */ - $instance->error($message, $context); + \Illuminate\Process\Factory::flushMacros(); } /** - * Exceptional occurrences that are not errors. - * - * Example: Use of deprecated APIs, poor use of an API, undesirable things - * that are not necessarily wrong. + * Dynamically handle calls to the class. * - * @param string $message - * @param array $context - * @return void + * @param string $method + * @param array $parameters + * @return mixed + * @throws \BadMethodCallException * @static - */ - public static function warning($message, $context = []) + */ public static function macroCall($method, $parameters) { - /** @var \Illuminate\Log\LogManager $instance */ - $instance->warning($message, $context); + /** @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 { /** - * Normal but significant events. + * Register an event listener for the before job event. * - * @param string $message - * @param array $context + * @param mixed $callback * @return void * @static - */ - public static function notice($message, $context = []) + */ public static function before($callback) { - /** @var \Illuminate\Log\LogManager $instance */ - $instance->notice($message, $context); + /** @var \Illuminate\Queue\QueueManager $instance */ + $instance->before($callback); } /** - * Interesting events. - * - * Example: User logs in, SQL logs. + * Register an event listener for the after job event. * - * @param string $message - * @param array $context + * @param mixed $callback * @return void * @static - */ - public static function info($message, $context = []) + */ public static function after($callback) { - /** @var \Illuminate\Log\LogManager $instance */ - $instance->info($message, $context); + /** @var \Illuminate\Queue\QueueManager $instance */ + $instance->after($callback); } /** - * Detailed debug information. + * Register an event listener for the exception occurred job event. * - * @param string $message - * @param array $context + * @param mixed $callback * @return void * @static - */ - public static function debug($message, $context = []) + */ public static function exceptionOccurred($callback) { - /** @var \Illuminate\Log\LogManager $instance */ - $instance->debug($message, $context); + /** @var \Illuminate\Queue\QueueManager $instance */ + $instance->exceptionOccurred($callback); } /** - * Logs with an arbitrary level. + * Register an event listener for the daemon queue loop. * - * @param mixed $level - * @param string $message - * @param array $context + * @param mixed $callback * @return void * @static - */ - public static function log($level, $message, $context = []) + */ public static function looping($callback) { - /** @var \Illuminate\Log\LogManager $instance */ - $instance->log($level, $message, $context); + /** @var \Illuminate\Queue\QueueManager $instance */ + $instance->looping($callback); + } + /** + * Register an event listener for the failed job event. + * + * @param mixed $callback + * @return void + * @static + */ public static function failing($callback) + { + /** @var \Illuminate\Queue\QueueManager $instance */ + $instance->failing($callback); } - - } - /** - * - * - * @method static void alwaysFrom(string $address, string|null $name = null) - * @method static void alwaysReplyTo(string $address, string|null $name = null) - * @method static void alwaysReturnPath(string $address) - * @method static void alwaysTo(string $address, string|null $name = null) - * @method static \Illuminate\Mail\SentMessage|null html(string $html, mixed $callback) - * @method static \Illuminate\Mail\SentMessage|null plain(string $view, array $data, mixed $callback) - * @method static string render(string|array $view, array $data = []) - * @method static mixed onQueue(string $queue, \Illuminate\Contracts\Mail\Mailable $view) - * @method static mixed queueOn(string $queue, \Illuminate\Contracts\Mail\Mailable $view) - * @method static mixed laterOn(string $queue, \DateTimeInterface|\DateInterval|int $delay, \Illuminate\Contracts\Mail\Mailable $view) - * @method static \Symfony\Component\Mailer\Transport\TransportInterface getSymfonyTransport() - * @method static \Illuminate\Contracts\View\Factory getViewFactory() - * @method static void setSymfonyTransport(\Symfony\Component\Mailer\Transport\TransportInterface $transport) - * @method static \Illuminate\Mail\Mailer setQueue(\Illuminate\Contracts\Queue\Factory $queue) - * @method static void macro(string $name, object|callable $macro) - * @method static void mixin(object $mixin, bool $replace = true) - * @method static bool hasMacro(string $name) - * @method static void flushMacros() - * @see \Illuminate\Mail\MailManager - * @see \Illuminate\Support\Testing\Fakes\MailFake - */ - class Mail { /** - * Get a mailer instance by name. + * Register an event listener for the daemon queue stopping. * - * @param string|null $name - * @return \Illuminate\Contracts\Mail\Mailer + * @param mixed $callback + * @return void * @static - */ - public static function mailer($name = null) + */ public static function stopping($callback) { - /** @var \Illuminate\Mail\MailManager $instance */ - return $instance->mailer($name); + /** @var \Illuminate\Queue\QueueManager $instance */ + $instance->stopping($callback); } /** - * Get a mailer driver instance. + * Determine if the driver is connected. * - * @param string|null $driver - * @return \Illuminate\Mail\Mailer + * @param string|null $name + * @return bool * @static - */ - public static function driver($driver = null) + */ public static function connected($name = null) { - /** @var \Illuminate\Mail\MailManager $instance */ - return $instance->driver($driver); + /** @var \Illuminate\Queue\QueueManager $instance */ + return $instance->connected($name); } /** - * Create a new transport instance. + * Resolve a queue connection instance. * - * @param array $config - * @return \Symfony\Component\Mailer\Transport\TransportInterface - * @throws \InvalidArgumentException + * @param string|null $name + * @return \Illuminate\Contracts\Queue\Queue * @static - */ - public static function createSymfonyTransport($config) + */ public static function connection($name = null) { - /** @var \Illuminate\Mail\MailManager $instance */ - return $instance->createSymfonyTransport($config); + /** @var \Illuminate\Queue\QueueManager $instance */ + return $instance->connection($name); } /** - * Get the default mail driver name. + * Add a queue connection resolver. * - * @return string + * @param string $driver + * @param \Closure $resolver + * @return void * @static - */ - public static function getDefaultDriver() + */ public static function extend($driver, $resolver) { - /** @var \Illuminate\Mail\MailManager $instance */ - return $instance->getDefaultDriver(); + /** @var \Illuminate\Queue\QueueManager $instance */ + $instance->extend($driver, $resolver); } /** - * Set the default mail driver name. + * Add a queue connection resolver. * - * @param string $name + * @param string $driver + * @param \Closure $resolver * @return void * @static - */ - public static function setDefaultDriver($name) + */ public static function addConnector($driver, $resolver) { - /** @var \Illuminate\Mail\MailManager $instance */ - $instance->setDefaultDriver($name); + /** @var \Illuminate\Queue\QueueManager $instance */ + $instance->addConnector($driver, $resolver); } /** - * Disconnect the given mailer and remove from local cache. + * Get the name of the default queue connection. * - * @param string|null $name + * @return string + * @static + */ public static function getDefaultDriver() + { + /** @var \Illuminate\Queue\QueueManager $instance */ + return $instance->getDefaultDriver(); + } + /** + * Set the name of the default queue connection. + * + * @param string $name * @return void * @static - */ - public static function purge($name = null) + */ public static function setDefaultDriver($name) { - /** @var \Illuminate\Mail\MailManager $instance */ - $instance->purge($name); + /** @var \Illuminate\Queue\QueueManager $instance */ + $instance->setDefaultDriver($name); } /** - * Register a custom transport creator Closure. + * Get the full name for the given connection. * - * @param string $driver - * @param \Closure $callback - * @return \Illuminate\Mail\MailManager + * @param string|null $connection + * @return string * @static - */ - public static function extend($driver, $callback) + */ public static function getName($connection = null) { - /** @var \Illuminate\Mail\MailManager $instance */ - return $instance->extend($driver, $callback); + /** @var \Illuminate\Queue\QueueManager $instance */ + return $instance->getName($connection); } /** * Get the application instance used by the manager. * * @return \Illuminate\Contracts\Foundation\Application * @static - */ - public static function getApplication() + */ public static function getApplication() { - /** @var \Illuminate\Mail\MailManager $instance */ + /** @var \Illuminate\Queue\QueueManager $instance */ return $instance->getApplication(); } /** * Set the application instance used by the manager. * * @param \Illuminate\Contracts\Foundation\Application $app - * @return \Illuminate\Mail\MailManager + * @return \Illuminate\Queue\QueueManager * @static - */ - public static function setApplication($app) + */ public static function setApplication($app) { - /** @var \Illuminate\Mail\MailManager $instance */ + /** @var \Illuminate\Queue\QueueManager $instance */ return $instance->setApplication($app); } /** - * Forget all of the resolved mailer instances. + * Specify the jobs that should be queued instead of faked. * - * @return \Illuminate\Mail\MailManager + * @param array|string $jobsToBeQueued + * @return \Illuminate\Support\Testing\Fakes\QueueFake * @static - */ - public static function forgetMailers() + */ public static function except($jobsToBeQueued) { - /** @var \Illuminate\Mail\MailManager $instance */ - return $instance->forgetMailers(); + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + return $instance->except($jobsToBeQueued); } /** - * Assert if a mailable was sent based on a truth-test callback. + * Assert if a job was pushed based on a truth-test callback. * - * @param string|\Closure $mailable + * @param string|\Closure $job * @param callable|int|null $callback * @return void * @static - */ - public static function assertSent($mailable, $callback = null) + */ public static function assertPushed($job, $callback = null) { - /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ - $instance->assertSent($mailable, $callback); + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + $instance->assertPushed($job, $callback); } /** - * Determine if a mailable was not sent or queued to be sent based on a truth-test callback. + * Assert if a job was pushed based on a truth-test callback. * - * @param string|\Closure $mailable + * @param string $queue + * @param string|\Closure $job * @param callable|null $callback * @return void * @static - */ - public static function assertNotOutgoing($mailable, $callback = null) + */ public static function assertPushedOn($queue, $job, $callback = null) { - /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ - $instance->assertNotOutgoing($mailable, $callback); + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + $instance->assertPushedOn($queue, $job, $callback); } /** - * Determine if a mailable was not sent based on a truth-test callback. + * Assert if a job was pushed with chained jobs based on a truth-test callback. * - * @param string|\Closure $mailable + * @param string $job + * @param array $expectedChain * @param callable|null $callback * @return void * @static - */ - public static function assertNotSent($mailable, $callback = null) + */ public static function assertPushedWithChain($job, $expectedChain = [], $callback = null) { - /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ - $instance->assertNotSent($mailable, $callback); + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + $instance->assertPushedWithChain($job, $expectedChain, $callback); } /** - * Assert that no mailables were sent or queued to be sent. + * Assert if a job was pushed with an empty chain based on a truth-test callback. * + * @param string $job + * @param callable|null $callback * @return void * @static - */ - public static function assertNothingOutgoing() + */ public static function assertPushedWithoutChain($job, $callback = null) { - /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ - $instance->assertNothingOutgoing(); + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + $instance->assertPushedWithoutChain($job, $callback); } /** - * Assert that no mailables were sent. + * Assert if a closure was pushed based on a truth-test callback. * + * @param callable|int|null $callback * @return void * @static - */ - public static function assertNothingSent() + */ public static function assertClosurePushed($callback = null) { - /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ - $instance->assertNothingSent(); + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + $instance->assertClosurePushed($callback); } /** - * Assert if a mailable was queued based on a truth-test callback. + * Assert that a closure was not pushed based on a truth-test callback. * - * @param string|\Closure $mailable - * @param callable|int|null $callback + * @param callable|null $callback * @return void * @static - */ - public static function assertQueued($mailable, $callback = null) + */ public static function assertClosureNotPushed($callback = null) { - /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ - $instance->assertQueued($mailable, $callback); + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + $instance->assertClosureNotPushed($callback); } /** - * Determine if a mailable was not queued based on a truth-test callback. + * Determine if a job was pushed based on a truth-test callback. * - * @param string|\Closure $mailable + * @param string|\Closure $job * @param callable|null $callback * @return void * @static - */ - public static function assertNotQueued($mailable, $callback = null) + */ public static function assertNotPushed($job, $callback = null) { - /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ - $instance->assertNotQueued($mailable, $callback); + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + $instance->assertNotPushed($job, $callback); } /** - * Assert that no mailables were queued. + * Assert the total count of jobs that were pushed. * + * @param int $expectedCount * @return void * @static - */ - public static function assertNothingQueued() + */ public static function assertCount($expectedCount) { - /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ - $instance->assertNothingQueued(); + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + $instance->assertCount($expectedCount); } /** - * Get all of the mailables matching a truth-test callback. + * Assert that no jobs were pushed. * - * @param string|\Closure $mailable + * @return void + * @static + */ public static function assertNothingPushed() + { + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + $instance->assertNothingPushed(); + } + /** + * Get all of the jobs matching a truth-test callback. + * + * @param string $job * @param callable|null $callback * @return \Illuminate\Support\Collection * @static - */ - public static function sent($mailable, $callback = null) + */ public static function pushed($job, $callback = null) { - /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ - return $instance->sent($mailable, $callback); + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + return $instance->pushed($job, $callback); } /** - * Determine if the given mailable has been sent. + * Determine if there are any stored jobs for a given class. * - * @param string $mailable + * @param string $job * @return bool * @static - */ - public static function hasSent($mailable) + */ public static function hasPushed($job) { - /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ - return $instance->hasSent($mailable); + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + return $instance->hasPushed($job); } /** - * Get all of the queued mailables matching a truth-test callback. + * Get the size of the queue. * - * @param string|\Closure $mailable - * @param callable|null $callback - * @return \Illuminate\Support\Collection + * @param string|null $queue + * @return int * @static - */ - public static function queued($mailable, $callback = null) + */ public static function size($queue = null) { - /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ - return $instance->queued($mailable, $callback); + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + return $instance->size($queue); } /** - * Determine if the given mailable has been queued. + * Push a new job onto the queue. * - * @param string $mailable + * @param string|object $job + * @param mixed $data + * @param string|null $queue + * @return mixed + * @static + */ public static function push($job, $data = '', $queue = null) + { + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + return $instance->push($job, $data, $queue); + } + /** + * Determine if a job should be faked or actually dispatched. + * + * @param object $job * @return bool * @static - */ - public static function hasQueued($mailable) + */ public static function shouldFakeJob($job) { - /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ - return $instance->hasQueued($mailable); + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + return $instance->shouldFakeJob($job); } /** - * Begin the process of mailing a mailable class instance. + * Push a raw payload onto the queue. * - * @param mixed $users - * @return \Illuminate\Mail\PendingMail + * @param string $payload + * @param string|null $queue + * @param array $options + * @return mixed * @static - */ - public static function to($users) + */ public static function pushRaw($payload, $queue = null, $options = []) { - /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ - return $instance->to($users); + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + return $instance->pushRaw($payload, $queue, $options); } /** - * Begin the process of mailing a mailable class instance. + * Push a new job onto the queue after (n) seconds. * - * @param mixed $users - * @return \Illuminate\Mail\PendingMail + * @param \DateTimeInterface|\DateInterval|int $delay + * @param string|object $job + * @param mixed $data + * @param string|null $queue + * @return mixed * @static - */ - public static function cc($users) + */ public static function later($delay, $job, $data = '', $queue = null) { - /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ - return $instance->cc($users); + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + return $instance->later($delay, $job, $data, $queue); } /** - * Begin the process of mailing a mailable class instance. + * Push a new job onto the queue. * - * @param mixed $users - * @return \Illuminate\Mail\PendingMail + * @param string $queue + * @param string|object $job + * @param mixed $data + * @return mixed * @static - */ - public static function bcc($users) + */ public static function pushOn($queue, $job, $data = '') { - /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ - return $instance->bcc($users); + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + return $instance->pushOn($queue, $job, $data); } /** - * Send a new message with only a raw text part. + * Push a new job onto a specific queue after (n) seconds. * - * @param string $text - * @param \Closure|string $callback - * @return void + * @param string $queue + * @param \DateTimeInterface|\DateInterval|int $delay + * @param string|object $job + * @param mixed $data + * @return mixed * @static - */ - public static function raw($text, $callback) + */ public static function laterOn($queue, $delay, $job, $data = '') { - /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ - $instance->raw($text, $callback); + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + return $instance->laterOn($queue, $delay, $job, $data); } /** - * Send a new message using a view. + * Pop the next job off of the queue. * - * @param \Illuminate\Contracts\Mail\Mailable|string|array $view - * @param array $data - * @param \Closure|string|null $callback - * @return void + * @param string|null $queue + * @return \Illuminate\Contracts\Queue\Job|null * @static - */ - public static function send($view, $data = [], $callback = null) + */ public static function pop($queue = null) { - /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ - $instance->send($view, $data, $callback); + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + return $instance->pop($queue); } /** - * Queue a new e-mail message for sending. + * Push an array of jobs onto the queue. * - * @param \Illuminate\Contracts\Mail\Mailable|string|array $view + * @param array $jobs + * @param mixed $data * @param string|null $queue * @return mixed * @static - */ - public static function queue($view, $queue = null) + */ public static function bulk($jobs, $data = '', $queue = null) { - /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ - return $instance->queue($view, $queue); + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + return $instance->bulk($jobs, $data, $queue); } /** - * Queue a new e-mail message for sending after (n) seconds. + * Get the jobs that have been pushed. * - * @param \DateTimeInterface|\DateInterval|int $delay - * @param \Illuminate\Contracts\Mail\Mailable|string|array $view - * @param string|null $queue - * @return mixed + * @return array * @static - */ - public static function later($delay, $view, $queue = null) + */ public static function pushedJobs() { - /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ - return $instance->later($delay, $view, $queue); + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + return $instance->pushedJobs(); } /** - * Get the array of failed recipients. + * Specify if jobs should be serialized and restored when being "pushed" to the queue. * - * @return array + * @param bool $serializeAndRestore + * @return \Illuminate\Support\Testing\Fakes\QueueFake * @static - */ - public static function failures() + */ public static function serializeAndRestore($serializeAndRestore = true) { - /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ - return $instance->failures(); + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + return $instance->serializeAndRestore($serializeAndRestore); } - - } - /** - * - * - * @see \Illuminate\Notifications\ChannelManager - * @see \Illuminate\Support\Testing\Fakes\NotificationFake - */ - class Notification { /** - * Send the given notification to the given notifiable entities. + * Get the connection name for the queue. * - * @param \Illuminate\Support\Collection|array|mixed $notifiables - * @param mixed $notification - * @return void + * @return string * @static - */ - public static function send($notifiables, $notification) + */ public static function getConnectionName() { - /** @var \Illuminate\Notifications\ChannelManager $instance */ - $instance->send($notifiables, $notification); + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + return $instance->getConnectionName(); } /** - * Send the given notification immediately. + * Set the connection name for the queue. * - * @param \Illuminate\Support\Collection|array|mixed $notifiables - * @param mixed $notification - * @param array|null $channels - * @return void + * @param string $name + * @return \Illuminate\Support\Testing\Fakes\QueueFake * @static - */ - public static function sendNow($notifiables, $notification, $channels = null) + */ public static function setConnectionName($name) { - /** @var \Illuminate\Notifications\ChannelManager $instance */ - $instance->sendNow($notifiables, $notification, $channels); + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + return $instance->setConnectionName($name); } /** - * Get a channel instance. + * Release a reserved job back onto the queue after (n) seconds. * - * @param string|null $name + * @param string $queue + * @param \Illuminate\Queue\Jobs\DatabaseJobRecord $job + * @param int $delay * @return mixed * @static - */ - public static function channel($name = null) + */ public static function release($queue, $job, $delay) { - /** @var \Illuminate\Notifications\ChannelManager $instance */ - return $instance->channel($name); + /** @var \Illuminate\Queue\DatabaseQueue $instance */ + return $instance->release($queue, $job, $delay); } /** - * Get the default channel driver name. + * Delete a reserved job from the queue. * - * @return string + * @param string $queue + * @param string $id + * @return void + * @throws \Throwable * @static - */ - public static function getDefaultDriver() + */ public static function deleteReserved($queue, $id) { - /** @var \Illuminate\Notifications\ChannelManager $instance */ - return $instance->getDefaultDriver(); + /** @var \Illuminate\Queue\DatabaseQueue $instance */ + $instance->deleteReserved($queue, $id); } /** - * Get the default channel driver name. + * Delete a reserved job from the reserved queue and release it. * - * @return string + * @param string $queue + * @param \Illuminate\Queue\Jobs\DatabaseJob $job + * @param int $delay + * @return void * @static - */ - public static function deliversVia() + */ public static function deleteAndRelease($queue, $job, $delay) { - /** @var \Illuminate\Notifications\ChannelManager $instance */ - return $instance->deliversVia(); + /** @var \Illuminate\Queue\DatabaseQueue $instance */ + $instance->deleteAndRelease($queue, $job, $delay); } /** - * Set the default channel driver name. + * Delete all of the jobs from the queue. * - * @param string $channel - * @return void + * @param string $queue + * @return int * @static - */ - public static function deliverVia($channel) + */ public static function clear($queue) { - /** @var \Illuminate\Notifications\ChannelManager $instance */ - $instance->deliverVia($channel); + /** @var \Illuminate\Queue\DatabaseQueue $instance */ + return $instance->clear($queue); } /** - * Set the locale of notifications. + * Get the queue or return the default. * - * @param string $locale - * @return \Illuminate\Notifications\ChannelManager + * @param string|null $queue + * @return string * @static - */ - public static function locale($locale) + */ public static function getQueue($queue) { - /** @var \Illuminate\Notifications\ChannelManager $instance */ - return $instance->locale($locale); + /** @var \Illuminate\Queue\DatabaseQueue $instance */ + return $instance->getQueue($queue); } /** - * Get a driver instance. + * Get the underlying database instance. * - * @param string|null $driver - * @return mixed - * @throws \InvalidArgumentException + * @return \Illuminate\Database\Connection * @static - */ - public static function driver($driver = null) - { //Method inherited from \Illuminate\Support\Manager - /** @var \Illuminate\Notifications\ChannelManager $instance */ - return $instance->driver($driver); + */ public static function getDatabase() + { + /** @var \Illuminate\Queue\DatabaseQueue $instance */ + return $instance->getDatabase(); } /** - * Register a custom driver creator Closure. + * Get the maximum number of attempts for an object-based queue handler. * - * @param string $driver - * @param \Closure $callback - * @return \Illuminate\Notifications\ChannelManager + * @param mixed $job + * @return mixed * @static - */ - public static function extend($driver, $callback) - { //Method inherited from \Illuminate\Support\Manager - /** @var \Illuminate\Notifications\ChannelManager $instance */ - return $instance->extend($driver, $callback); + */ public static function getJobTries($job) + { //Method inherited from \Illuminate\Queue\Queue + /** @var \Illuminate\Queue\DatabaseQueue $instance */ + return $instance->getJobTries($job); } /** - * Get all of the created "drivers". + * Get the backoff for an object-based queue handler. * - * @return array + * @param mixed $job + * @return mixed * @static - */ - public static function getDrivers() - { //Method inherited from \Illuminate\Support\Manager - /** @var \Illuminate\Notifications\ChannelManager $instance */ - return $instance->getDrivers(); + */ public static function getJobBackoff($job) + { //Method inherited from \Illuminate\Queue\Queue + /** @var \Illuminate\Queue\DatabaseQueue $instance */ + return $instance->getJobBackoff($job); } /** - * Get the container instance used by the manager. + * Get the expiration timestamp for an object-based queue handler. * - * @return \Illuminate\Contracts\Container\Container + * @param mixed $job + * @return mixed * @static - */ - public static function getContainer() - { //Method inherited from \Illuminate\Support\Manager - /** @var \Illuminate\Notifications\ChannelManager $instance */ - return $instance->getContainer(); + */ public static function getJobExpiration($job) + { //Method inherited from \Illuminate\Queue\Queue + /** @var \Illuminate\Queue\DatabaseQueue $instance */ + return $instance->getJobExpiration($job); } /** - * Set the container instance used by the manager. + * Register a callback to be executed when creating job payloads. * - * @param \Illuminate\Contracts\Container\Container $container - * @return \Illuminate\Notifications\ChannelManager + * @param callable|null $callback + * @return void * @static - */ - public static function setContainer($container) - { //Method inherited from \Illuminate\Support\Manager - /** @var \Illuminate\Notifications\ChannelManager $instance */ - return $instance->setContainer($container); + */ public static function createPayloadUsing($callback) + { //Method inherited from \Illuminate\Queue\Queue + \Illuminate\Queue\DatabaseQueue::createPayloadUsing($callback); } /** - * Forget all of the resolved driver instances. + * Get the container instance being used by the connection. * - * @return \Illuminate\Notifications\ChannelManager + * @return \Illuminate\Container\Container * @static - */ - public static function forgetDrivers() - { //Method inherited from \Illuminate\Support\Manager - /** @var \Illuminate\Notifications\ChannelManager $instance */ - return $instance->forgetDrivers(); + */ public static function getContainer() + { //Method inherited from \Illuminate\Queue\Queue + /** @var \Illuminate\Queue\DatabaseQueue $instance */ + return $instance->getContainer(); } /** - * Assert if a notification was sent on-demand based on a truth-test callback. + * Set the IoC container instance. * - * @param string|\Closure $notification - * @param callable|null $callback + * @param \Illuminate\Container\Container $container * @return void - * @throws \Exception * @static - */ - public static function assertSentOnDemand($notification, $callback = null) - { - /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ - $instance->assertSentOnDemand($notification, $callback); + */ 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 { /** - * Assert if a notification was sent based on a truth-test callback. + * Register a named limiter configuration. * - * @param mixed $notifiable - * @param string|\Closure $notification - * @param callable|null $callback - * @return void - * @throws \Exception + * @param string $name + * @param \Closure $callback + * @return \Illuminate\Cache\RateLimiter * @static - */ - public static function assertSentTo($notifiable, $notification, $callback = null) + */ public static function for($name, $callback) { - /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ - $instance->assertSentTo($notifiable, $notification, $callback); + /** @var \Illuminate\Cache\RateLimiter $instance */ + return $instance->for($name, $callback); } /** - * Assert if a notification was sent on-demand a number of times. + * Get the given named rate limiter. * - * @param string $notification - * @param int $times - * @return void + * @param string $name + * @return \Closure|null * @static - */ - public static function assertSentOnDemandTimes($notification, $times = 1) + */ public static function limiter($name) { - /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ - $instance->assertSentOnDemandTimes($notification, $times); + /** @var \Illuminate\Cache\RateLimiter $instance */ + return $instance->limiter($name); } /** - * Assert if a notification was sent a number of times. + * Attempts to execute a callback if it's not limited. * - * @param mixed $notifiable - * @param string $notification - * @param int $times - * @return void + * @param string $key + * @param int $maxAttempts + * @param \Closure $callback + * @param int $decaySeconds + * @return mixed * @static - */ - public static function assertSentToTimes($notifiable, $notification, $times = 1) + */ public static function attempt($key, $maxAttempts, $callback, $decaySeconds = 60) { - /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ - $instance->assertSentToTimes($notifiable, $notification, $times); + /** @var \Illuminate\Cache\RateLimiter $instance */ + return $instance->attempt($key, $maxAttempts, $callback, $decaySeconds); } /** - * Determine if a notification was sent based on a truth-test callback. + * Determine if the given key has been "accessed" too many times. * - * @param mixed $notifiable - * @param string|\Closure $notification - * @param callable|null $callback - * @return void - * @throws \Exception + * @param string $key + * @param int $maxAttempts + * @return bool * @static - */ - public static function assertNotSentTo($notifiable, $notification, $callback = null) + */ public static function tooManyAttempts($key, $maxAttempts) { - /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ - $instance->assertNotSentTo($notifiable, $notification, $callback); + /** @var \Illuminate\Cache\RateLimiter $instance */ + return $instance->tooManyAttempts($key, $maxAttempts); } /** - * Assert that no notifications were sent. + * 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 assertNothingSent() + */ public static function hit($key, $decaySeconds = 60) { - /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ - $instance->assertNothingSent(); + /** @var \Illuminate\Cache\RateLimiter $instance */ + return $instance->hit($key, $decaySeconds); } /** - * Assert that no notifications were sent to the given notifiable. + * Increment the counter for a given key for a given decay time by a given amount. * - * @param mixed $notifiable - * @return void - * @throws \Exception + * @param string $key + * @param int $decaySeconds + * @param int $amount + * @return int * @static - */ - public static function assertNothingSentTo($notifiable) + */ public static function increment($key, $decaySeconds = 60, $amount = 1) { - /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ - $instance->assertNothingSentTo($notifiable); + /** @var \Illuminate\Cache\RateLimiter $instance */ + return $instance->increment($key, $decaySeconds, $amount); } /** - * Assert the total amount of times a notification was sent. + * Decrement the counter for a given key for a given decay time by a given amount. * - * @param string $notification - * @param int $expectedCount - * @return void + * @param string $key + * @param int $decaySeconds + * @param int $amount + * @return int * @static - */ - public static function assertSentTimes($notification, $expectedCount) + */ public static function decrement($key, $decaySeconds = 60, $amount = 1) { - /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ - $instance->assertSentTimes($notification, $expectedCount); + /** @var \Illuminate\Cache\RateLimiter $instance */ + return $instance->decrement($key, $decaySeconds, $amount); } /** - * Assert the total count of notification that were sent. + * Get the number of attempts for the given key. * - * @param int $expectedCount - * @return void + * @param string $key + * @return mixed * @static - */ - public static function assertCount($expectedCount) + */ public static function attempts($key) { - /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ - $instance->assertCount($expectedCount); + /** @var \Illuminate\Cache\RateLimiter $instance */ + return $instance->attempts($key); } /** - * Assert the total amount of times a notification was sent. + * Reset the number of attempts for the given key. * - * @param int $expectedCount - * @param string $notification - * @return void - * @deprecated Use the assertSentTimes method instead + * @param string $key + * @return mixed * @static - */ - public static function assertTimesSent($expectedCount, $notification) + */ public static function resetAttempts($key) { - /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ - $instance->assertTimesSent($expectedCount, $notification); + /** @var \Illuminate\Cache\RateLimiter $instance */ + return $instance->resetAttempts($key); } /** - * Get all of the notifications matching a truth-test callback. + * Get the number of retries left for the given key. * - * @param mixed $notifiable - * @param string $notification - * @param callable|null $callback - * @return \Illuminate\Support\Collection + * @param string $key + * @param int $maxAttempts + * @return int * @static - */ - public static function sent($notifiable, $notification, $callback = null) + */ public static function remaining($key, $maxAttempts) { - /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ - return $instance->sent($notifiable, $notification, $callback); + /** @var \Illuminate\Cache\RateLimiter $instance */ + return $instance->remaining($key, $maxAttempts); } /** - * Determine if there are more notifications left to inspect. + * Get the number of retries left for the given key. * - * @param mixed $notifiable - * @param string $notification - * @return bool + * @param string $key + * @param int $maxAttempts + * @return int * @static - */ - public static function hasSent($notifiable, $notification) + */ public static function retriesLeft($key, $maxAttempts) { - /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ - return $instance->hasSent($notifiable, $notification); + /** @var \Illuminate\Cache\RateLimiter $instance */ + return $instance->retriesLeft($key, $maxAttempts); } /** - * Get the notifications that have been sent. + * Clear the hits and lockout timer for the given key. * - * @return array + * @param string $key + * @return void * @static - */ - public static function sentNotifications() + */ public static function clear($key) { - /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ - return $instance->sentNotifications(); + /** @var \Illuminate\Cache\RateLimiter $instance */ + $instance->clear($key); } /** - * Register a custom macro. + * Get the number of seconds until the "key" is accessible again. * - * @param string $name - * @param object|callable $macro - * @return void + * @param string $key + * @return int * @static - */ - public static function macro($name, $macro) + */ public static function availableIn($key) { - \Illuminate\Support\Testing\Fakes\NotificationFake::macro($name, $macro); + /** @var \Illuminate\Cache\RateLimiter $instance */ + return $instance->availableIn($key); } /** - * Mix another object into the class. + * Clean the rate limiter key from unicode characters. * - * @param object $mixin - * @param bool $replace - * @return void - * @throws \ReflectionException + * @param string $key + * @return string * @static - */ - public static function mixin($mixin, $replace = true) + */ public static function cleanRateLimiterKey($key) { - \Illuminate\Support\Testing\Fakes\NotificationFake::mixin($mixin, $replace); + /** @var \Illuminate\Cache\RateLimiter $instance */ + return $instance->cleanRateLimiterKey($key); } + } + /** + * + * + * @see \Illuminate\Routing\Redirector + */ class Redirect { /** - * Checks if macro is registered. + * Create a new redirect response to the previous location. * - * @param string $name - * @return bool + * @param int $status + * @param array $headers + * @param mixed $fallback + * @return \Illuminate\Http\RedirectResponse * @static - */ - public static function hasMacro($name) + */ public static function back($status = 302, $headers = [], $fallback = false) { - return \Illuminate\Support\Testing\Fakes\NotificationFake::hasMacro($name); + /** @var \Illuminate\Routing\Redirector $instance */ + return $instance->back($status, $headers, $fallback); } /** - * Flush the existing macros. + * Create a new redirect response to the current URI. * - * @return void + * @param int $status + * @param array $headers + * @return \Illuminate\Http\RedirectResponse * @static - */ - public static function flushMacros() + */ public static function refresh($status = 302, $headers = []) { - \Illuminate\Support\Testing\Fakes\NotificationFake::flushMacros(); + /** @var \Illuminate\Routing\Redirector $instance */ + return $instance->refresh($status, $headers); } - - } - /** - * - * - * @method static string sendResetLink(array $credentials, \Closure|null $callback = null) - * @method static mixed reset(array $credentials, \Closure $callback) - * @method static \Illuminate\Contracts\Auth\CanResetPassword|null getUser(array $credentials) - * @method static string createToken(\Illuminate\Contracts\Auth\CanResetPassword $user) - * @method static void deleteToken(\Illuminate\Contracts\Auth\CanResetPassword $user) - * @method static bool tokenExists(\Illuminate\Contracts\Auth\CanResetPassword $user, string $token) - * @method static \Illuminate\Auth\Passwords\TokenRepositoryInterface getRepository() - * @see \Illuminate\Auth\Passwords\PasswordBrokerManager - * @see \Illuminate\Auth\Passwords\PasswordBroker - */ - class Password { /** - * Attempt to get the broker from the local cache. + * Create a new redirect response, while putting the current URL in the session. * - * @param string|null $name - * @return \Illuminate\Contracts\Auth\PasswordBroker + * @param string $path + * @param int $status + * @param array $headers + * @param bool|null $secure + * @return \Illuminate\Http\RedirectResponse * @static - */ - public static function broker($name = null) + */ public static function guest($path, $status = 302, $headers = [], $secure = null) { - /** @var \Illuminate\Auth\Passwords\PasswordBrokerManager $instance */ - return $instance->broker($name); + /** @var \Illuminate\Routing\Redirector $instance */ + return $instance->guest($path, $status, $headers, $secure); } /** - * Get the default password broker name. + * Create a new redirect response to the previously intended location. * - * @return string + * @param mixed $default + * @param int $status + * @param array $headers + * @param bool|null $secure + * @return \Illuminate\Http\RedirectResponse * @static - */ - public static function getDefaultDriver() + */ public static function intended($default = '/', $status = 302, $headers = [], $secure = null) { - /** @var \Illuminate\Auth\Passwords\PasswordBrokerManager $instance */ - return $instance->getDefaultDriver(); + /** @var \Illuminate\Routing\Redirector $instance */ + return $instance->intended($default, $status, $headers, $secure); } /** - * Set the default password broker name. + * Create a new redirect response to the given path. * - * @param string $name - * @return void + * @param string $path + * @param int $status + * @param array $headers + * @param bool|null $secure + * @return \Illuminate\Http\RedirectResponse * @static - */ - public static function setDefaultDriver($name) + */ public static function to($path, $status = 302, $headers = [], $secure = null) { - /** @var \Illuminate\Auth\Passwords\PasswordBrokerManager $instance */ - $instance->setDefaultDriver($name); + /** @var \Illuminate\Routing\Redirector $instance */ + return $instance->to($path, $status, $headers, $secure); } - - } - /** - * - * - * @see \Illuminate\Queue\QueueManager - * @see \Illuminate\Queue\Queue - * @see \Illuminate\Support\Testing\Fakes\QueueFake - */ - class Queue { /** - * Register an event listener for the before job event. + * Create a new redirect response to an external URL (no validation). * - * @param mixed $callback - * @return void + * @param string $path + * @param int $status + * @param array $headers + * @return \Illuminate\Http\RedirectResponse * @static - */ - public static function before($callback) + */ public static function away($path, $status = 302, $headers = []) { - /** @var \Illuminate\Queue\QueueManager $instance */ - $instance->before($callback); + /** @var \Illuminate\Routing\Redirector $instance */ + return $instance->away($path, $status, $headers); } /** - * Register an event listener for the after job event. + * Create a new redirect response to the given HTTPS path. * - * @param mixed $callback - * @return void + * @param string $path + * @param int $status + * @param array $headers + * @return \Illuminate\Http\RedirectResponse * @static - */ - public static function after($callback) + */ public static function secure($path, $status = 302, $headers = []) { - /** @var \Illuminate\Queue\QueueManager $instance */ - $instance->after($callback); + /** @var \Illuminate\Routing\Redirector $instance */ + return $instance->secure($path, $status, $headers); } /** - * Register an event listener for the exception occurred job event. + * Create a new redirect response to a named route. * - * @param mixed $callback - * @return void + * @param string $route + * @param mixed $parameters + * @param int $status + * @param array $headers + * @return \Illuminate\Http\RedirectResponse * @static - */ - public static function exceptionOccurred($callback) + */ public static function route($route, $parameters = [], $status = 302, $headers = []) { - /** @var \Illuminate\Queue\QueueManager $instance */ - $instance->exceptionOccurred($callback); + /** @var \Illuminate\Routing\Redirector $instance */ + return $instance->route($route, $parameters, $status, $headers); } /** - * Register an event listener for the daemon queue loop. + * Create a new redirect response to a signed named route. * - * @param mixed $callback - * @return void + * @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 looping($callback) + */ public static function signedRoute($route, $parameters = [], $expiration = null, $status = 302, $headers = []) { - /** @var \Illuminate\Queue\QueueManager $instance */ - $instance->looping($callback); + /** @var \Illuminate\Routing\Redirector $instance */ + return $instance->signedRoute($route, $parameters, $expiration, $status, $headers); } /** - * Register an event listener for the failed job event. + * Create a new redirect response to a signed named route. * - * @param mixed $callback - * @return void + * @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 failing($callback) + */ public static function temporarySignedRoute($route, $expiration, $parameters = [], $status = 302, $headers = []) { - /** @var \Illuminate\Queue\QueueManager $instance */ - $instance->failing($callback); + /** @var \Illuminate\Routing\Redirector $instance */ + return $instance->temporarySignedRoute($route, $expiration, $parameters, $status, $headers); } /** - * Register an event listener for the daemon queue stopping. + * Create a new redirect response to a controller action. * - * @param mixed $callback - * @return void + * @param string|array $action + * @param mixed $parameters + * @param int $status + * @param array $headers + * @return \Illuminate\Http\RedirectResponse * @static - */ - public static function stopping($callback) + */ public static function action($action, $parameters = [], $status = 302, $headers = []) { - /** @var \Illuminate\Queue\QueueManager $instance */ - $instance->stopping($callback); + /** @var \Illuminate\Routing\Redirector $instance */ + return $instance->action($action, $parameters, $status, $headers); } /** - * Determine if the driver is connected. + * Get the URL generator instance. * - * @param string|null $name - * @return bool + * @return \Illuminate\Routing\UrlGenerator * @static - */ - public static function connected($name = null) + */ public static function getUrlGenerator() { - /** @var \Illuminate\Queue\QueueManager $instance */ - return $instance->connected($name); + /** @var \Illuminate\Routing\Redirector $instance */ + return $instance->getUrlGenerator(); } /** - * Resolve a queue connection instance. + * Set the active session store. * - * @param string|null $name - * @return \Illuminate\Contracts\Queue\Queue + * @param \Illuminate\Session\Store $session + * @return void * @static - */ - public static function connection($name = null) + */ public static function setSession($session) { - /** @var \Illuminate\Queue\QueueManager $instance */ - return $instance->connection($name); + /** @var \Illuminate\Routing\Redirector $instance */ + $instance->setSession($session); } /** - * Add a queue connection resolver. + * Get the "intended" URL from the session. * - * @param string $driver - * @param \Closure $resolver - * @return void + * @return string|null * @static - */ - public static function extend($driver, $resolver) + */ public static function getIntendedUrl() { - /** @var \Illuminate\Queue\QueueManager $instance */ - $instance->extend($driver, $resolver); + /** @var \Illuminate\Routing\Redirector $instance */ + return $instance->getIntendedUrl(); } /** - * Add a queue connection resolver. + * Set the "intended" URL in the session. * - * @param string $driver - * @param \Closure $resolver - * @return void + * @param string $url + * @return \Illuminate\Routing\Redirector * @static - */ - public static function addConnector($driver, $resolver) + */ public static function setIntendedUrl($url) { - /** @var \Illuminate\Queue\QueueManager $instance */ - $instance->addConnector($driver, $resolver); + /** @var \Illuminate\Routing\Redirector $instance */ + return $instance->setIntendedUrl($url); } /** - * Get the name of the default queue connection. + * Register a custom macro. * - * @return string + * @param string $name + * @param object|callable $macro + * @return void * @static - */ - public static function getDefaultDriver() + */ public static function macro($name, $macro) { - /** @var \Illuminate\Queue\QueueManager $instance */ - return $instance->getDefaultDriver(); + \Illuminate\Routing\Redirector::macro($name, $macro); } /** - * Set the name of the default queue connection. + * Mix another object into the class. * - * @param string $name + * @param object $mixin + * @param bool $replace * @return void + * @throws \ReflectionException * @static - */ - public static function setDefaultDriver($name) + */ public static function mixin($mixin, $replace = true) { - /** @var \Illuminate\Queue\QueueManager $instance */ - $instance->setDefaultDriver($name); + \Illuminate\Routing\Redirector::mixin($mixin, $replace); } /** - * Get the full name for the given connection. + * Checks if macro is registered. * - * @param string|null $connection - * @return string + * @param string $name + * @return bool * @static - */ - public static function getName($connection = null) + */ public static function hasMacro($name) { - /** @var \Illuminate\Queue\QueueManager $instance */ - return $instance->getName($connection); + return \Illuminate\Routing\Redirector::hasMacro($name); } /** - * Get the application instance used by the manager. + * Flush the existing macros. * - * @return \Illuminate\Contracts\Foundation\Application + * @return void * @static - */ - public static function getApplication() + */ public static function flushMacros() { - /** @var \Illuminate\Queue\QueueManager $instance */ - return $instance->getApplication(); + \Illuminate\Routing\Redirector::flushMacros(); } + } + /** + * + * + * @see \Illuminate\Http\Request + */ class Request { /** - * Set the application instance used by the manager. + * Create a new Illuminate HTTP request from server variables. * - * @param \Illuminate\Contracts\Foundation\Application $app - * @return \Illuminate\Queue\QueueManager + * @return static * @static - */ - public static function setApplication($app) + */ public static function capture() { - /** @var \Illuminate\Queue\QueueManager $instance */ - return $instance->setApplication($app); + return \Illuminate\Http\Request::capture(); } /** - * Specify the jobs that should be queued instead of faked. + * Return the Request instance. * - * @param array|string $jobsToBeQueued - * @return \Illuminate\Support\Testing\Fakes\QueueFake + * @return \Illuminate\Http\Request * @static - */ - public static function except($jobsToBeQueued) + */ public static function instance() { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - return $instance->except($jobsToBeQueued); + /** @var \Illuminate\Http\Request $instance */ + return $instance->instance(); } /** - * Assert if a job was pushed based on a truth-test callback. + * Get the request method. * - * @param string|\Closure $job - * @param callable|int|null $callback - * @return void + * @return string * @static - */ - public static function assertPushed($job, $callback = null) + */ public static function method() { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - $instance->assertPushed($job, $callback); + /** @var \Illuminate\Http\Request $instance */ + return $instance->method(); } /** - * Assert if a job was pushed based on a truth-test callback. + * Get the root URL for the application. * - * @param string $queue - * @param string|\Closure $job - * @param callable|null $callback - * @return void + * @return string * @static - */ - public static function assertPushedOn($queue, $job, $callback = null) + */ public static function root() { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - $instance->assertPushedOn($queue, $job, $callback); + /** @var \Illuminate\Http\Request $instance */ + return $instance->root(); } /** - * Assert if a job was pushed with chained jobs based on a truth-test callback. + * Get the URL (no query string) for the request. * - * @param string $job - * @param array $expectedChain - * @param callable|null $callback - * @return void + * @return string * @static - */ - public static function assertPushedWithChain($job, $expectedChain = [], $callback = null) + */ public static function url() { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - $instance->assertPushedWithChain($job, $expectedChain, $callback); + /** @var \Illuminate\Http\Request $instance */ + return $instance->url(); } /** - * Assert if a job was pushed with an empty chain based on a truth-test callback. + * Get the full URL for the request. * - * @param string $job - * @param callable|null $callback - * @return void + * @return string * @static - */ - public static function assertPushedWithoutChain($job, $callback = null) + */ public static function fullUrl() { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - $instance->assertPushedWithoutChain($job, $callback); + /** @var \Illuminate\Http\Request $instance */ + return $instance->fullUrl(); } /** - * Determine if a job was pushed based on a truth-test callback. + * Get the full URL for the request with the added query string parameters. * - * @param string|\Closure $job - * @param callable|null $callback - * @return void + * @param array $query + * @return string * @static - */ - public static function assertNotPushed($job, $callback = null) + */ public static function fullUrlWithQuery($query) { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - $instance->assertNotPushed($job, $callback); + /** @var \Illuminate\Http\Request $instance */ + return $instance->fullUrlWithQuery($query); } /** - * Assert that no jobs were pushed. + * Get the full URL for the request without the given query string parameters. * - * @return void + * @param array|string $keys + * @return string * @static - */ - public static function assertNothingPushed() + */ public static function fullUrlWithoutQuery($keys) { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - $instance->assertNothingPushed(); + /** @var \Illuminate\Http\Request $instance */ + return $instance->fullUrlWithoutQuery($keys); } /** - * Get all of the jobs matching a truth-test callback. + * Get the current path info for the request. * - * @param string $job - * @param callable|null $callback - * @return \Illuminate\Support\Collection + * @return string * @static - */ - public static function pushed($job, $callback = null) + */ public static function path() { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - return $instance->pushed($job, $callback); + /** @var \Illuminate\Http\Request $instance */ + return $instance->path(); } /** - * Determine if there are any stored jobs for a given class. + * Get the current decoded path info for the request. * - * @param string $job - * @return bool + * @return string * @static - */ - public static function hasPushed($job) + */ public static function decodedPath() { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - return $instance->hasPushed($job); + /** @var \Illuminate\Http\Request $instance */ + return $instance->decodedPath(); } /** - * Get the size of the queue. + * Get a segment from the URI (1 based index). * - * @param string|null $queue - * @return int + * @param int $index + * @param string|null $default + * @return string|null * @static - */ - public static function size($queue = null) + */ public static function segment($index, $default = null) { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - return $instance->size($queue); + /** @var \Illuminate\Http\Request $instance */ + return $instance->segment($index, $default); } /** - * Push a new job onto the queue. + * Get all of the segments for the request path. * - * @param string|object $job - * @param mixed $data - * @param string|null $queue - * @return mixed + * @return array * @static - */ - public static function push($job, $data = '', $queue = null) + */ public static function segments() { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - return $instance->push($job, $data, $queue); + /** @var \Illuminate\Http\Request $instance */ + return $instance->segments(); } /** - * Determine if a job should be faked or actually dispatched. + * Determine if the current request URI matches a pattern. * - * @param object $job + * @param mixed $patterns * @return bool * @static - */ - public static function shouldFakeJob($job) + */ public static function is(...$patterns) { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - return $instance->shouldFakeJob($job); + /** @var \Illuminate\Http\Request $instance */ + return $instance->is(...$patterns); } /** - * Push a raw payload onto the queue. + * Determine if the route name matches a given pattern. * - * @param string $payload - * @param string|null $queue - * @param array $options - * @return mixed + * @param mixed $patterns + * @return bool * @static - */ - public static function pushRaw($payload, $queue = null, $options = []) + */ public static function routeIs(...$patterns) { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - return $instance->pushRaw($payload, $queue, $options); + /** @var \Illuminate\Http\Request $instance */ + return $instance->routeIs(...$patterns); } /** - * Push a new job onto the queue after (n) seconds. + * Determine if the current request URL and query string match a pattern. * - * @param \DateTimeInterface|\DateInterval|int $delay - * @param string|object $job - * @param mixed $data - * @param string|null $queue - * @return mixed + * @param mixed $patterns + * @return bool * @static - */ - public static function later($delay, $job, $data = '', $queue = null) + */ public static function fullUrlIs(...$patterns) { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - return $instance->later($delay, $job, $data, $queue); + /** @var \Illuminate\Http\Request $instance */ + return $instance->fullUrlIs(...$patterns); } /** - * Push a new job onto the queue. - * - * @param string $queue - * @param string|object $job - * @param mixed $data - * @return mixed + * Get the host name. + * + * @return string * @static - */ - public static function pushOn($queue, $job, $data = '') + */ public static function host() { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - return $instance->pushOn($queue, $job, $data); + /** @var \Illuminate\Http\Request $instance */ + return $instance->host(); } /** - * Push a new job onto a specific queue after (n) seconds. + * Get the HTTP host being requested. * - * @param string $queue - * @param \DateTimeInterface|\DateInterval|int $delay - * @param string|object $job - * @param mixed $data - * @return mixed + * @return string * @static - */ - public static function laterOn($queue, $delay, $job, $data = '') + */ public static function httpHost() { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - return $instance->laterOn($queue, $delay, $job, $data); + /** @var \Illuminate\Http\Request $instance */ + return $instance->httpHost(); } /** - * Pop the next job off of the queue. + * Get the scheme and HTTP host. * - * @param string|null $queue - * @return \Illuminate\Contracts\Queue\Job|null + * @return string * @static - */ - public static function pop($queue = null) + */ public static function schemeAndHttpHost() { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - return $instance->pop($queue); + /** @var \Illuminate\Http\Request $instance */ + return $instance->schemeAndHttpHost(); } /** - * Push an array of jobs onto the queue. + * Determine if the request is the result of an AJAX call. * - * @param array $jobs - * @param mixed $data - * @param string|null $queue - * @return mixed + * @return bool * @static - */ - public static function bulk($jobs, $data = '', $queue = null) + */ public static function ajax() { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - return $instance->bulk($jobs, $data, $queue); + /** @var \Illuminate\Http\Request $instance */ + return $instance->ajax(); } /** - * Get the jobs that have been pushed. + * Determine if the request is the result of a PJAX call. * - * @return array + * @return bool * @static - */ - public static function pushedJobs() + */ public static function pjax() { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - return $instance->pushedJobs(); + /** @var \Illuminate\Http\Request $instance */ + return $instance->pjax(); } /** - * Get the connection name for the queue. + * Determine if the request is the result of a prefetch call. * - * @return string + * @return bool * @static - */ - public static function getConnectionName() + */ public static function prefetch() { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - return $instance->getConnectionName(); + /** @var \Illuminate\Http\Request $instance */ + return $instance->prefetch(); } /** - * Set the connection name for the queue. + * Determine if the request is over HTTPS. * - * @param string $name - * @return \Illuminate\Support\Testing\Fakes\QueueFake + * @return bool * @static - */ - public static function setConnectionName($name) + */ public static function secure() { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - return $instance->setConnectionName($name); + /** @var \Illuminate\Http\Request $instance */ + return $instance->secure(); } /** - * Release a reserved job back onto the queue after (n) seconds. + * Get the client IP address. * - * @param string $queue - * @param \Illuminate\Queue\Jobs\DatabaseJobRecord $job - * @param int $delay - * @return mixed + * @return string|null * @static - */ - public static function release($queue, $job, $delay) + */ public static function ip() { - /** @var \Illuminate\Queue\DatabaseQueue $instance */ - return $instance->release($queue, $job, $delay); + /** @var \Illuminate\Http\Request $instance */ + return $instance->ip(); } /** - * Delete a reserved job from the queue. + * Get the client IP addresses. * - * @param string $queue - * @param string $id - * @return void - * @throws \Throwable + * @return array * @static - */ - public static function deleteReserved($queue, $id) + */ public static function ips() { - /** @var \Illuminate\Queue\DatabaseQueue $instance */ - $instance->deleteReserved($queue, $id); + /** @var \Illuminate\Http\Request $instance */ + return $instance->ips(); } /** - * Delete a reserved job from the reserved queue and release it. + * Get the client user agent. * - * @param string $queue - * @param \Illuminate\Queue\Jobs\DatabaseJob $job - * @param int $delay - * @return void + * @return string|null * @static - */ - public static function deleteAndRelease($queue, $job, $delay) + */ public static function userAgent() { - /** @var \Illuminate\Queue\DatabaseQueue $instance */ - $instance->deleteAndRelease($queue, $job, $delay); + /** @var \Illuminate\Http\Request $instance */ + return $instance->userAgent(); } /** - * Delete all of the jobs from the queue. + * Merge new input into the current request's input array. * - * @param string $queue - * @return int + * @param array $input + * @return \Illuminate\Http\Request * @static - */ - public static function clear($queue) + */ public static function merge($input) { - /** @var \Illuminate\Queue\DatabaseQueue $instance */ - return $instance->clear($queue); + /** @var \Illuminate\Http\Request $instance */ + return $instance->merge($input); } /** - * Get the queue or return the default. + * Merge new input into the request's input, but only when that key is missing from the request. * - * @param string|null $queue - * @return string + * @param array $input + * @return \Illuminate\Http\Request * @static - */ - public static function getQueue($queue) + */ public static function mergeIfMissing($input) { - /** @var \Illuminate\Queue\DatabaseQueue $instance */ - return $instance->getQueue($queue); + /** @var \Illuminate\Http\Request $instance */ + return $instance->mergeIfMissing($input); } /** - * Get the underlying database instance. + * Replace the input values for the current request. * - * @return \Illuminate\Database\Connection + * @param array $input + * @return \Illuminate\Http\Request * @static - */ - public static function getDatabase() + */ public static function replace($input) { - /** @var \Illuminate\Queue\DatabaseQueue $instance */ - return $instance->getDatabase(); + /** @var \Illuminate\Http\Request $instance */ + return $instance->replace($input); } /** - * Get the backoff for an object-based queue handler. + * This method belongs to Symfony HttpFoundation and is not usually needed when using Laravel. + * + * Instead, you may use the "input" method. * - * @param mixed $job + * @param string $key + * @param mixed $default * @return mixed * @static - */ - public static function getJobBackoff($job) - { //Method inherited from \Illuminate\Queue\Queue - /** @var \Illuminate\Queue\DatabaseQueue $instance */ - return $instance->getJobBackoff($job); + */ public static function get($key, $default = null) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->get($key, $default); } /** - * Get the expiration timestamp for an object-based queue handler. + * Get the JSON payload for the request. * - * @param mixed $job - * @return mixed + * @param string|null $key + * @param mixed $default + * @return \Symfony\Component\HttpFoundation\InputBag|mixed * @static - */ - public static function getJobExpiration($job) - { //Method inherited from \Illuminate\Queue\Queue - /** @var \Illuminate\Queue\DatabaseQueue $instance */ - return $instance->getJobExpiration($job); + */ public static function json($key = null, $default = null) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->json($key, $default); } /** - * Register a callback to be executed when creating job payloads. + * Create a new request instance from the given Laravel request. * - * @param callable|null $callback - * @return void + * @param \Illuminate\Http\Request $from + * @param \Illuminate\Http\Request|null $to + * @return static * @static - */ - public static function createPayloadUsing($callback) - { //Method inherited from \Illuminate\Queue\Queue - \Illuminate\Queue\DatabaseQueue::createPayloadUsing($callback); + */ public static function createFrom($from, $to = null) + { + return \Illuminate\Http\Request::createFrom($from, $to); } /** - * Get the container instance being used by the connection. + * Create an Illuminate request from a Symfony instance. * - * @return \Illuminate\Container\Container + * @param \Symfony\Component\HttpFoundation\Request $request + * @return static * @static - */ - public static function getContainer() - { //Method inherited from \Illuminate\Queue\Queue - /** @var \Illuminate\Queue\DatabaseQueue $instance */ - return $instance->getContainer(); + */ public static function createFromBase($request) + { + return \Illuminate\Http\Request::createFromBase($request); } /** - * Set the IoC container instance. + * Clones a request and overrides some of its parameters. * - * @param \Illuminate\Container\Container $container - * @return void + * @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 setContainer($container) - { //Method inherited from \Illuminate\Queue\Queue - /** @var \Illuminate\Queue\DatabaseQueue $instance */ - $instance->setContainer($container); + */ 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); } - - } - /** - * - * - * @see \Illuminate\Cache\RateLimiter - */ - class RateLimiter { /** - * Register a named limiter configuration. + * 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. * - * @param string $name - * @param \Closure $callback - * @return \Illuminate\Cache\RateLimiter + * @param bool $skipIfUninitialized When true, ignores factories injected by `setSessionFactory` * @static - */ - public static function for($name, $callback) + */ public static function hasSession($skipIfUninitialized = false) { - /** @var \Illuminate\Cache\RateLimiter $instance */ - return $instance->for($name, $callback); + /** @var \Illuminate\Http\Request $instance */ + return $instance->hasSession($skipIfUninitialized); } /** - * Get the given named rate limiter. + * Gets the Session. * - * @param string $name - * @return \Closure + * @throws SessionNotFoundException When session is not set properly * @static - */ - public static function limiter($name) + */ public static function getSession() { - /** @var \Illuminate\Cache\RateLimiter $instance */ - return $instance->limiter($name); + /** @var \Illuminate\Http\Request $instance */ + return $instance->getSession(); } /** - * Attempts to execute a callback if it's not limited. + * Get the session associated with the request. * - * @param string $key - * @param int $maxAttempts - * @param \Closure $callback - * @param int $decaySeconds - * @return mixed + * @return \Illuminate\Contracts\Session\Session + * @throws \RuntimeException * @static - */ - public static function attempt($key, $maxAttempts, $callback, $decaySeconds = 60) + */ public static function session() { - /** @var \Illuminate\Cache\RateLimiter $instance */ - return $instance->attempt($key, $maxAttempts, $callback, $decaySeconds); + /** @var \Illuminate\Http\Request $instance */ + return $instance->session(); } /** - * Determine if the given key has been "accessed" too many times. + * Set the session instance on the request. * - * @param string $key - * @param int $maxAttempts - * @return bool + * @param \Illuminate\Contracts\Session\Session $session + * @return void * @static - */ - public static function tooManyAttempts($key, $maxAttempts) + */ public static function setLaravelSession($session) { - /** @var \Illuminate\Cache\RateLimiter $instance */ - return $instance->tooManyAttempts($key, $maxAttempts); + /** @var \Illuminate\Http\Request $instance */ + $instance->setLaravelSession($session); } /** - * Increment the counter for a given key for a given decay time. + * Set the locale for the request instance. * - * @param string $key - * @param int $decaySeconds - * @return int + * @param string $locale + * @return void * @static - */ - public static function hit($key, $decaySeconds = 60) + */ public static function setRequestLocale($locale) { - /** @var \Illuminate\Cache\RateLimiter $instance */ - return $instance->hit($key, $decaySeconds); + /** @var \Illuminate\Http\Request $instance */ + $instance->setRequestLocale($locale); } /** - * Get the number of attempts for the given key. + * Set the default locale for the request instance. * - * @param string $key - * @return mixed + * @param string $locale + * @return void * @static - */ - public static function attempts($key) + */ public static function setDefaultRequestLocale($locale) { - /** @var \Illuminate\Cache\RateLimiter $instance */ - return $instance->attempts($key); + /** @var \Illuminate\Http\Request $instance */ + $instance->setDefaultRequestLocale($locale); } /** - * Reset the number of attempts for the given key. + * Get the user making the request. * - * @param string $key + * @param string|null $guard * @return mixed * @static - */ - public static function resetAttempts($key) + */ public static function user($guard = null) { - /** @var \Illuminate\Cache\RateLimiter $instance */ - return $instance->resetAttempts($key); + /** @var \Illuminate\Http\Request $instance */ + return $instance->user($guard); } /** - * Get the number of retries left for the given key. + * Get the route handling the request. * - * @param string $key - * @param int $maxAttempts - * @return int + * @param string|null $param + * @param mixed $default + * @return \Illuminate\Routing\Route|object|string|null * @static - */ - public static function remaining($key, $maxAttempts) + */ public static function route($param = null, $default = null) { - /** @var \Illuminate\Cache\RateLimiter $instance */ - return $instance->remaining($key, $maxAttempts); + /** @var \Illuminate\Http\Request $instance */ + return $instance->route($param, $default); } /** - * Get the number of retries left for the given key. + * Get a unique fingerprint for the request / route / IP address. * - * @param string $key - * @param int $maxAttempts - * @return int + * @return string + * @throws \RuntimeException * @static - */ - public static function retriesLeft($key, $maxAttempts) + */ public static function fingerprint() { - /** @var \Illuminate\Cache\RateLimiter $instance */ - return $instance->retriesLeft($key, $maxAttempts); + /** @var \Illuminate\Http\Request $instance */ + return $instance->fingerprint(); } /** - * Clear the hits and lockout timer for the given key. + * Set the JSON payload for the request. * - * @param string $key - * @return void + * @param \Symfony\Component\HttpFoundation\InputBag $json + * @return \Illuminate\Http\Request * @static - */ - public static function clear($key) + */ public static function setJson($json) { - /** @var \Illuminate\Cache\RateLimiter $instance */ - $instance->clear($key); + /** @var \Illuminate\Http\Request $instance */ + return $instance->setJson($json); } /** - * Get the number of seconds until the "key" is accessible again. + * Get the user resolver callback. * - * @param string $key - * @return int + * @return \Closure * @static - */ - public static function availableIn($key) + */ public static function getUserResolver() { - /** @var \Illuminate\Cache\RateLimiter $instance */ - return $instance->availableIn($key); + /** @var \Illuminate\Http\Request $instance */ + return $instance->getUserResolver(); } /** - * Clean the rate limiter key from unicode characters. + * Set the user resolver callback. * - * @param string $key - * @return string + * @param \Closure $callback + * @return \Illuminate\Http\Request * @static - */ - public static function cleanRateLimiterKey($key) + */ public static function setUserResolver($callback) { - /** @var \Illuminate\Cache\RateLimiter $instance */ - return $instance->cleanRateLimiterKey($key); + /** @var \Illuminate\Http\Request $instance */ + return $instance->setUserResolver($callback); } - - } - /** - * - * - * @see \Illuminate\Routing\Redirector - */ - class Redirect { /** - * Create a new redirect response to the "home" route. + * Get the route resolver callback. * - * @param int $status - * @return \Illuminate\Http\RedirectResponse - * @deprecated Will be removed in a future Laravel version. + * @return \Closure * @static - */ - public static function home($status = 302) + */ public static function getRouteResolver() { - /** @var \Illuminate\Routing\Redirector $instance */ - return $instance->home($status); + /** @var \Illuminate\Http\Request $instance */ + return $instance->getRouteResolver(); } /** - * Create a new redirect response to the previous location. + * Set the route resolver callback. * - * @param int $status - * @param array $headers - * @param mixed $fallback - * @return \Illuminate\Http\RedirectResponse + * @param \Closure $callback + * @return \Illuminate\Http\Request * @static - */ - public static function back($status = 302, $headers = [], $fallback = false) + */ public static function setRouteResolver($callback) { - /** @var \Illuminate\Routing\Redirector $instance */ - return $instance->back($status, $headers, $fallback); + /** @var \Illuminate\Http\Request $instance */ + return $instance->setRouteResolver($callback); } /** - * Create a new redirect response to the current URI. + * Get all of the input and files for the request. * - * @param int $status - * @param array $headers - * @return \Illuminate\Http\RedirectResponse + * @return array * @static - */ - public static function refresh($status = 302, $headers = []) + */ public static function toArray() { - /** @var \Illuminate\Routing\Redirector $instance */ - return $instance->refresh($status, $headers); + /** @var \Illuminate\Http\Request $instance */ + return $instance->toArray(); } /** - * Create a new redirect response, while putting the current URL in the session. + * Determine if the given offset exists. * - * @param string $path - * @param int $status - * @param array $headers - * @param bool|null $secure - * @return \Illuminate\Http\RedirectResponse + * @param string $offset + * @return bool * @static - */ - public static function guest($path, $status = 302, $headers = [], $secure = null) + */ public static function offsetExists($offset) { - /** @var \Illuminate\Routing\Redirector $instance */ - return $instance->guest($path, $status, $headers, $secure); + /** @var \Illuminate\Http\Request $instance */ + return $instance->offsetExists($offset); } /** - * Create a new redirect response to the previously intended location. + * Get the value at the given offset. * - * @param mixed $default - * @param int $status - * @param array $headers - * @param bool|null $secure - * @return \Illuminate\Http\RedirectResponse + * @param string $offset + * @return mixed * @static - */ - public static function intended($default = '/', $status = 302, $headers = [], $secure = null) + */ public static function offsetGet($offset) { - /** @var \Illuminate\Routing\Redirector $instance */ - return $instance->intended($default, $status, $headers, $secure); + /** @var \Illuminate\Http\Request $instance */ + return $instance->offsetGet($offset); } /** - * Create a new redirect response to the given path. + * Set the value at the given offset. * - * @param string $path - * @param int $status - * @param array $headers - * @param bool|null $secure - * @return \Illuminate\Http\RedirectResponse + * @param string $offset + * @param mixed $value + * @return void * @static - */ - public static function to($path, $status = 302, $headers = [], $secure = null) + */ public static function offsetSet($offset, $value) { - /** @var \Illuminate\Routing\Redirector $instance */ - return $instance->to($path, $status, $headers, $secure); + /** @var \Illuminate\Http\Request $instance */ + $instance->offsetSet($offset, $value); } /** - * Create a new redirect response to an external URL (no validation). + * Remove the value at the given offset. * - * @param string $path - * @param int $status - * @param array $headers - * @return \Illuminate\Http\RedirectResponse + * @param string $offset + * @return void * @static - */ - public static function away($path, $status = 302, $headers = []) + */ public static function offsetUnset($offset) { - /** @var \Illuminate\Routing\Redirector $instance */ - return $instance->away($path, $status, $headers); + /** @var \Illuminate\Http\Request $instance */ + $instance->offsetUnset($offset); } /** - * Create a new redirect response to the given HTTPS path. + * Sets the parameters for this request. + * + * This method also re-initializes all properties. * - * @param string $path - * @param int $status - * @param array $headers - * @return \Illuminate\Http\RedirectResponse + * @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 * @static - */ - public static function secure($path, $status = 302, $headers = []) - { - /** @var \Illuminate\Routing\Redirector $instance */ - return $instance->secure($path, $status, $headers); + */ 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->initialize($query, $request, $attributes, $cookies, $files, $server, $content); } /** - * Create a new redirect response to a named route. + * Creates a new request with values from PHP's super globals. * - * @param string $route - * @param mixed $parameters - * @param int $status - * @param array $headers - * @return \Illuminate\Http\RedirectResponse * @static - */ - public static function route($route, $parameters = [], $status = 302, $headers = []) - { - /** @var \Illuminate\Routing\Redirector $instance */ - return $instance->route($route, $parameters, $status, $headers); + */ public static function createFromGlobals() + { //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::createFromGlobals(); } /** - * Create a new redirect response to a signed named route. + * 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). * - * @param string $route - * @param mixed $parameters - * @param \DateTimeInterface|\DateInterval|int|null $expiration - * @param int $status - * @param array $headers - * @return \Illuminate\Http\RedirectResponse + * @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 signedRoute($route, $parameters = [], $expiration = null, $status = 302, $headers = []) - { - /** @var \Illuminate\Routing\Redirector $instance */ - return $instance->signedRoute($route, $parameters, $expiration, $status, $headers); + */ 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); } /** - * Create a new redirect response to a signed named route. + * 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 $route - * @param \DateTimeInterface|\DateInterval|int|null $expiration - * @param mixed $parameters - * @param int $status - * @param array $headers - * @return \Illuminate\Http\RedirectResponse * @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 setFactory($callable) + { //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::setFactory($callable); } /** - * Create a new redirect response to a controller action. + * Overrides the PHP global variables according to this request instance. + * + * It overrides $_GET, $_POST, $_REQUEST, $_SERVER, $_COOKIE. + * $_FILES is never overridden, see rfc1867 * - * @param string|array $action - * @param mixed $parameters - * @param int $status - * @param array $headers - * @return \Illuminate\Http\RedirectResponse * @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 overrideGlobals() + { //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->overrideGlobals(); } /** - * Get the URL generator instance. + * Sets a list of trusted proxies. + * + * You should only list the reverse proxies that you manage directly. * - * @return \Illuminate\Routing\UrlGenerator + * @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 * @static - */ - public static function getUrlGenerator() - { - /** @var \Illuminate\Routing\Redirector $instance */ - return $instance->getUrlGenerator(); + */ public static function setTrustedProxies($proxies, $trustedHeaderSet) + { //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::setTrustedProxies($proxies, $trustedHeaderSet); } /** - * Set the active session store. + * Gets the list of trusted proxies. * - * @param \Illuminate\Session\Store $session - * @return void + * @return string[] * @static - */ - public static function setSession($session) - { - /** @var \Illuminate\Routing\Redirector $instance */ - $instance->setSession($session); + */ public static function getTrustedProxies() + { //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::getTrustedProxies(); } /** - * Get the "intended" URL from the session. + * Gets the set of trusted headers from trusted proxies. * - * @return string|null + * @return int A bit field of Request::HEADER_* that defines which headers are trusted from your proxies * @static - */ - public static function getIntendedUrl() - { - /** @var \Illuminate\Routing\Redirector $instance */ - return $instance->getIntendedUrl(); + */ public static function getTrustedHeaderSet() + { //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::getTrustedHeaderSet(); } /** - * Set the "intended" URL in the session. + * Sets a list of trusted host patterns. + * + * You should only list the hosts you manage using regexs. * - * @param string $url - * @return \Illuminate\Routing\Redirector + * @param array $hostPatterns A list of trusted host patterns * @static - */ - public static function setIntendedUrl($url) - { - /** @var \Illuminate\Routing\Redirector $instance */ - return $instance->setIntendedUrl($url); + */ public static function setTrustedHosts($hostPatterns) + { //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::setTrustedHosts($hostPatterns); } /** - * Register a custom macro. + * Gets the list of trusted host patterns. * - * @param string $name - * @param object|callable $macro - * @return void + * @return string[] * @static - */ - public static function macro($name, $macro) - { - \Illuminate\Routing\Redirector::macro($name, $macro); + */ public static function getTrustedHosts() + { //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::getTrustedHosts(); } /** - * Mix another object into the class. + * Normalizes a query string. + * + * It builds a normalized query string, where keys/value pairs are alphabetized, + * have consistent escaping and unneeded delimiters are removed. * - * @param object $mixin - * @param bool $replace - * @return void - * @throws \ReflectionException * @static - */ - public static function mixin($mixin, $replace = true) - { - \Illuminate\Routing\Redirector::mixin($mixin, $replace); + */ public static function normalizeQueryString($qs) + { //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::normalizeQueryString($qs); } /** - * Checks if macro is registered. + * 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. * - * @param string $name - * @return bool * @static - */ - public static function hasMacro($name) - { - return \Illuminate\Routing\Redirector::hasMacro($name); + */ public static function enableHttpMethodParameterOverride() + { //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::enableHttpMethodParameterOverride(); } /** - * Flush the existing macros. + * Checks whether support for the _method request parameter is enabled. * - * @return void * @static - */ - public static function flushMacros() - { - \Illuminate\Routing\Redirector::flushMacros(); + */ public static function getHttpMethodParameterOverride() + { //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::getHttpMethodParameterOverride(); } - - } - /** - * - * - * @see \Illuminate\Http\Request - */ - class Request { /** - * Create a new Illuminate HTTP request from server variables. + * Whether the request contains a Session which was started in one of the + * previous requests. * - * @return static * @static - */ - public static function capture() - { - return \Illuminate\Http\Request::capture(); + */ public static function hasPreviousSession() + { //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->hasPreviousSession(); } /** - * Return the Request instance. + * * - * @return \Illuminate\Http\Request * @static - */ - public static function instance() - { + */ public static function setSession($session) + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->instance(); + return $instance->setSession($session); } /** - * Get the request method. + * * - * @return string + * @internal + * @param \Symfony\Component\HttpFoundation\callable(): SessionInterface $factory * @static - */ - public static function method() - { + */ public static function setSessionFactory($factory) + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->method(); + return $instance->setSessionFactory($factory); } /** - * Get the root URL for the application. + * 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 string + * @see getClientIp() * @static - */ - public static function root() - { + */ public static function getClientIps() + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->root(); + return $instance->getClientIps(); } /** - * Get the URL (no query string) for the request. + * 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. * - * @return string + * @see getClientIps() + * @see https://wikipedia.org/wiki/X-Forwarded-For * @static - */ - public static function url() - { + */ public static function getClientIp() + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->url(); + return $instance->getClientIp(); } /** - * Get the full URL for the request. + * Returns current script name. * - * @return string * @static - */ - public static function fullUrl() - { + */ public static function getScriptName() + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->fullUrl(); + return $instance->getScriptName(); } /** - * Get the full URL for the request with the added query string parameters. + * 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' * - * @param array $query - * @return string + * @return string The raw path (i.e. not urldecoded) * @static - */ - public static function fullUrlWithQuery($query) - { + */ public static function getPathInfo() + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->fullUrlWithQuery($query); + return $instance->getPathInfo(); } /** - * Get the full URL for the request without the given query string parameters. + * 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' * - * @param array|string $keys - * @return string + * @return string The raw path (i.e. not urldecoded) * @static - */ - public static function fullUrlWithoutQuery($keys) - { + */ public static function getBasePath() + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->fullUrlWithoutQuery($keys); + return $instance->getBasePath(); } /** - * Get the current path info for the request. + * 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 string + * @return string The raw URL (i.e. not urldecoded) * @static - */ - public static function path() - { + */ public static function getBaseUrl() + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->path(); + return $instance->getBaseUrl(); } /** - * Get the current decoded path info for the request. + * Gets the request's scheme. * - * @return string * @static - */ - public static function decodedPath() - { + */ public static function getScheme() + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->decodedPath(); + return $instance->getScheme(); } /** - * Get a segment from the URI (1 based index). + * 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 int $index - * @param string|null $default - * @return string|null + * @return int|string|null Can be a string if fetched from the server bag * @static - */ - public static function segment($index, $default = null) - { + */ public static function getPort() + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->segment($index, $default); + return $instance->getPort(); } /** - * Get all of the segments for the request path. + * Returns the user. * - * @return array * @static - */ - public static function segments() - { + */ public static function getUser() + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->segments(); + return $instance->getUser(); } /** - * Determine if the current request URI matches a pattern. + * Returns the password. * - * @param mixed $patterns - * @return bool * @static - */ - public static function is(...$patterns) - { + */ public static function getPassword() + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->is(...$patterns); + return $instance->getPassword(); } /** - * Determine if the route name matches a given pattern. + * Gets the user info. * - * @param mixed $patterns - * @return bool + * @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 routeIs(...$patterns) - { + */ public static function getUserInfo() + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->routeIs(...$patterns); + return $instance->getUserInfo(); } /** - * Determine if the current request URL and query string match a pattern. + * Returns the HTTP host being requested. + * + * The port name will be appended to the host if it's non-standard. * - * @param mixed $patterns - * @return bool * @static - */ - public static function fullUrlIs(...$patterns) - { + */ public static function getHttpHost() + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->fullUrlIs(...$patterns); + return $instance->getHttpHost(); } /** - * Get the host name. + * Returns the requested URI (path and query string). * - * @return string + * @return string The raw URI (i.e. not URI decoded) * @static - */ - public static function host() - { + */ public static function getRequestUri() + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->host(); + return $instance->getRequestUri(); } /** - * Get the HTTP host being requested. + * 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. * - * @return string * @static - */ - public static function httpHost() - { + */ public static function getSchemeAndHttpHost() + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->httpHost(); + return $instance->getSchemeAndHttpHost(); } /** - * Get the scheme and HTTP host. + * Generates a normalized URI (URL) for the Request. * - * @return string + * @see getQueryString() * @static - */ - public static function schemeAndHttpHost() - { + */ public static function getUri() + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->schemeAndHttpHost(); + return $instance->getUri(); } /** - * Determine if the request is the result of an AJAX call. + * Generates a normalized URI for the given path. * - * @return bool + * @param string $path A path to use instead of the current one * @static - */ - public static function ajax() - { + */ public static function getUriForPath($path) + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->ajax(); + return $instance->getUriForPath($path); } /** - * Determine if the request is the result of a PJAX call. + * 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. + * + * 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" * - * @return bool * @static - */ - public static function pjax() - { + */ public static function getRelativeUriForPath($path) + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->pjax(); + return $instance->getRelativeUriForPath($path); } /** - * Determine if the request is the result of a prefetch call. + * Generates the normalized query string for the Request. + * + * It builds a normalized query string, where keys/value pairs are alphabetized + * and have consistent escaping. * - * @return bool * @static - */ - public static function prefetch() - { + */ public static function getQueryString() + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->prefetch(); + return $instance->getQueryString(); } /** - * Determine if the request is over HTTPS. + * 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 bool * @static - */ - public static function secure() - { + */ public static function isSecure() + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->secure(); + return $instance->isSecure(); } /** - * Get the client IP address. + * 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|null + * @throws SuspiciousOperationException when the host name is invalid or not trusted * @static - */ - public static function ip() - { + */ public static function getHost() + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->ip(); + return $instance->getHost(); } /** - * Get the client IP addresses. + * Sets the request method. * - * @return array * @static - */ - public static function ips() - { + */ public static function setMethod($method) + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->ips(); + return $instance->setMethod($method); } /** - * Get the client user agent. + * 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|null + * @see getRealMethod() * @static - */ - public static function userAgent() - { + */ public static function getMethod() + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->userAgent(); + return $instance->getMethod(); } /** - * Merge new input into the current request's input array. + * Gets the "real" request method. * - * @param array $input - * @return \Illuminate\Http\Request + * @see getMethod() * @static - */ - public static function merge($input) - { + */ public static function getRealMethod() + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->merge($input); + return $instance->getRealMethod(); } /** - * Merge new input into the request's input, but only when that key is missing from the request. + * Gets the mime type associated with the format. * - * @param array $input - * @return \Illuminate\Http\Request * @static - */ - public static function mergeIfMissing($input) - { + */ public static function getMimeType($format) + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->mergeIfMissing($input); + return $instance->getMimeType($format); } /** - * Replace the input for the current request. + * Gets the mime types associated with the format. * - * @param array $input - * @return \Illuminate\Http\Request + * @return string[] * @static - */ - public static function replace($input) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->replace($input); + */ public static function getMimeTypes($format) + { //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::getMimeTypes($format); } /** - * This method belongs to Symfony HttpFoundation and is not usually needed when using Laravel. - * - * Instead, you may use the "input" method. + * Gets the format associated with the mime type. * - * @param string $key - * @param mixed $default - * @return mixed * @static - */ - public static function get($key, $default = null) - { + */ public static function getFormat($mimeType) + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->get($key, $default); + return $instance->getFormat($mimeType); } /** - * Get the JSON payload for the request. + * Associates a format with mime types. * - * @param string|null $key - * @param mixed $default - * @return \Symfony\Component\HttpFoundation\ParameterBag|mixed + * @param string|string[] $mimeTypes The associated mime types (the preferred one must be the first as it will be used as the content type) * @static - */ - public static function json($key = null, $default = null) - { + */ public static function setFormat($format, $mimeTypes) + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->json($key, $default); + return $instance->setFormat($format, $mimeTypes); } /** - * Create a new request instance from the given Laravel request. + * Gets the request format. + * + * Here is the process to determine the format: + * + * * format defined by the user (with setRequestFormat()) + * * _format request attribute + * * $default * - * @param \Illuminate\Http\Request $from - * @param \Illuminate\Http\Request|null $to - * @return static + * @see getPreferredFormat * @static - */ - public static function createFrom($from, $to = null) - { - return \Illuminate\Http\Request::createFrom($from, $to); + */ public static function getRequestFormat($default = 'html') + { //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->getRequestFormat($default); } /** - * Create an Illuminate request from a Symfony instance. + * Sets the request format. * - * @param \Symfony\Component\HttpFoundation\Request $request - * @return static * @static - */ - public static function createFromBase($request) - { - return \Illuminate\Http\Request::createFromBase($request); + */ public static function setRequestFormat($format) + { //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->setRequestFormat($format); } /** - * Clones a request and overrides some of its parameters. + * Gets the usual name of the format associated with the request's media type (provided in the Content-Type header). * - * @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 + * @see Request::$formats * @static - */ - public static function duplicate($query = null, $request = null, $attributes = null, $cookies = null, $files = null, $server = null) - { + */ public static function getContentTypeFormat() + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->duplicate($query, $request, $attributes, $cookies, $files, $server); + return $instance->getContentTypeFormat(); } /** - * 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. + * Sets the default locale. * - * @param bool $skipIfUninitialized When true, ignores factories injected by `setSessionFactory` * @static - */ - public static function hasSession($skipIfUninitialized = false) - { + */ public static function setDefaultLocale($locale) + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->hasSession($skipIfUninitialized); + return $instance->setDefaultLocale($locale); } /** - * Gets the Session. + * Get the default locale. * - * @throws SessionNotFoundException When session is not set properly * @static - */ - public static function getSession() - { + */ public static function getDefaultLocale() + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->getSession(); + return $instance->getDefaultLocale(); } /** - * Get the session associated with the request. + * Sets the locale. * - * @return \Illuminate\Contracts\Session\Session - * @throws \RuntimeException * @static - */ - public static function session() - { + */ public static function setLocale($locale) + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->session(); + return $instance->setLocale($locale); } /** - * Set the session instance on the request. + * Get the locale. * - * @param \Illuminate\Contracts\Session\Session $session - * @return void * @static - */ - public static function setLaravelSession($session) - { + */ public static function getLocale() + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - $instance->setLaravelSession($session); + return $instance->getLocale(); } /** - * Set the locale for the request instance. + * Checks if the request method is of specified type. * - * @param string $locale - * @return void + * @param string $method Uppercase request method (GET, POST etc) * @static - */ - public static function setRequestLocale($locale) - { + */ public static function isMethod($method) + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - $instance->setRequestLocale($locale); + return $instance->isMethod($method); } /** - * Set the default locale for the request instance. + * Checks whether or not the method is safe. * - * @param string $locale - * @return void + * @see https://tools.ietf.org/html/rfc7231#section-4.2.1 * @static - */ - public static function setDefaultRequestLocale($locale) - { + */ public static function isMethodSafe() + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - $instance->setDefaultRequestLocale($locale); + return $instance->isMethodSafe(); } /** - * Get the user making the request. + * Checks whether or not the method is idempotent. * - * @param string|null $guard - * @return mixed * @static - */ - public static function user($guard = null) - { + */ public static function isMethodIdempotent() + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->user($guard); + return $instance->isMethodIdempotent(); } /** - * Get the route handling the request. + * Checks whether the method is cacheable or not. * - * @param string|null $param - * @param mixed $default - * @return \Illuminate\Routing\Route|object|string|null + * @see https://tools.ietf.org/html/rfc7231#section-4.2.3 * @static - */ - public static function route($param = null, $default = null) - { + */ public static function isMethodCacheable() + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->route($param, $default); + return $instance->isMethodCacheable(); } /** - * Get a unique fingerprint for the request / route / IP address. + * 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 string - * @throws \RuntimeException * @static - */ - public static function fingerprint() - { + */ public static function getProtocolVersion() + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->fingerprint(); + return $instance->getProtocolVersion(); } /** - * Set the JSON payload for the request. + * Returns the request body content. * - * @param \Symfony\Component\HttpFoundation\ParameterBag $json - * @return \Illuminate\Http\Request + * @param bool $asResource If true, a resource will be returned + * @return string|resource + * @psalm-return ($asResource is true ? resource : string) * @static - */ - public static function setJson($json) - { + */ public static function getContent($asResource = false) + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->setJson($json); + return $instance->getContent($asResource); } /** - * Get the user resolver callback. + * Gets the decoded form or json request body. * - * @return \Closure + * @throws JsonException When the body cannot be decoded to an array * @static - */ - public static function getUserResolver() - { + */ public static function getPayload() + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->getUserResolver(); + return $instance->getPayload(); } /** - * Set the user resolver callback. + * Gets the Etags. * - * @param \Closure $callback - * @return \Illuminate\Http\Request * @static - */ - public static function setUserResolver($callback) - { + */ public static function getETags() + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->setUserResolver($callback); + return $instance->getETags(); } /** - * Get the route resolver callback. + * * - * @return \Closure * @static - */ - public static function getRouteResolver() - { + */ public static function isNoCache() + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->getRouteResolver(); + return $instance->isNoCache(); } /** - * Set the route resolver callback. + * 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 \Closure $callback - * @return \Illuminate\Http\Request * @static - */ - public static function setRouteResolver($callback) - { + */ public static function getPreferredFormat($default = 'html') + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->setRouteResolver($callback); + return $instance->getPreferredFormat($default); } /** - * Get all of the input and files for the request. + * Returns the preferred language. * - * @return array + * @param string[] $locales An array of ordered available locales * @static - */ - public static function toArray() - { + */ public static function getPreferredLanguage($locales = null) + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->toArray(); + return $instance->getPreferredLanguage($locales); } /** - * Determine if the given offset exists. + * Gets a list of languages acceptable by the client browser ordered in the user browser preferences. * - * @param string $offset - * @return bool + * @return string[] * @static - */ - public static function offsetExists($offset) - { + */ public static function getLanguages() + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->offsetExists($offset); + return $instance->getLanguages(); } /** - * Get the value at the given offset. + * Gets a list of charsets acceptable by the client browser in preferable order. * - * @param string $offset - * @return mixed + * @return string[] * @static - */ - public static function offsetGet($offset) - { + */ public static function getCharsets() + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - return $instance->offsetGet($offset); + return $instance->getCharsets(); } /** - * Set the value at the given offset. + * Gets a list of encodings acceptable by the client browser in preferable order. * - * @param string $offset - * @param mixed $value - * @return void + * @return string[] * @static - */ - public static function offsetSet($offset, $value) - { + */ public static function getEncodings() + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - $instance->offsetSet($offset, $value); + return $instance->getEncodings(); } /** - * Remove the value at the given offset. + * Gets a list of content types acceptable by the client browser in preferable order. * - * @param string $offset - * @return void + * @return string[] * @static - */ - public static function offsetUnset($offset) - { + */ public static function getAcceptableContentTypes() + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - $instance->offsetUnset($offset); + return $instance->getAcceptableContentTypes(); } /** - * Sets the parameters for this request. + * Returns true if the request is an XMLHttpRequest. * - * This method also re-initializes all properties. + * It works if your JavaScript library sets an X-Requested-With HTTP header. + * It is known to work with common JavaScript frameworks: * - * @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 + * @see https://wikipedia.org/wiki/List_of_Ajax_frameworks#JavaScript * @static - */ - public static function initialize($query = [], $request = [], $attributes = [], $cookies = [], $files = [], $server = [], $content = null) + */ public static function isXmlHttpRequest() { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ - $instance->initialize($query, $request, $attributes, $cookies, $files, $server, $content); + return $instance->isXmlHttpRequest(); } /** - * Creates a new request with values from PHP's super globals. + * Checks whether the client browser prefers safe content or not according to RFC8674. * + * @see https://tools.ietf.org/html/rfc8674 * @static - */ - public static function createFromGlobals() + */ public static function preferSafeContent() { //Method inherited from \Symfony\Component\HttpFoundation\Request - return \Illuminate\Http\Request::createFromGlobals(); + /** @var \Illuminate\Http\Request $instance */ + return $instance->preferSafeContent(); } /** - * Creates a Request based on a given URI and configuration. + * Indicates whether this request originated from a trusted proxy. * - * The information contained in the URI always take precedence - * over the other information (server and parameters). + * This can be useful to determine whether or not to trust the + * contents of a proxy-specific header. * - * @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 create($uri, $method = 'GET', $parameters = [], $cookies = [], $files = [], $server = [], $content = null) + */ public static function isFromTrustedProxy() { //Method inherited from \Symfony\Component\HttpFoundation\Request - return \Illuminate\Http\Request::create($uri, $method, $parameters, $cookies, $files, $server, $content); + /** @var \Illuminate\Http\Request $instance */ + return $instance->isFromTrustedProxy(); } /** - * 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. + * Filter the given array of rules into an array of rules that are included in precognitive headers. * - * @return void + * @param array $rules + * @return array * @static - */ - public static function setFactory($callable) - { //Method inherited from \Symfony\Component\HttpFoundation\Request - \Illuminate\Http\Request::setFactory($callable); + */ public static function filterPrecognitiveRules($rules) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->filterPrecognitiveRules($rules); } /** - * Overrides the PHP global variables according to this request instance. - * - * It overrides $_GET, $_POST, $_REQUEST, $_SERVER, $_COOKIE. - * $_FILES is never overridden, see rfc1867 + * Determine if the request is attempting to be precognitive. * - * @return void + * @return bool * @static - */ - public static function overrideGlobals() - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function isAttemptingPrecognition() + { /** @var \Illuminate\Http\Request $instance */ - $instance->overrideGlobals(); + return $instance->isAttemptingPrecognition(); } /** - * Sets a list of trusted proxies. - * - * You should only list the reverse proxies that you manage directly. + * Determine if the request is precognitive. * - * @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 + * @return bool * @static - */ - public static function setTrustedProxies($proxies, $trustedHeaderSet) - { //Method inherited from \Symfony\Component\HttpFoundation\Request - \Illuminate\Http\Request::setTrustedProxies($proxies, $trustedHeaderSet); + */ public static function isPrecognitive() + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->isPrecognitive(); } /** - * Gets the list of trusted proxies. + * Determine if the request is sending JSON. * - * @return string[] + * @return bool * @static - */ - public static function getTrustedProxies() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - return \Illuminate\Http\Request::getTrustedProxies(); + */ public static function isJson() + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->isJson(); } /** - * Gets the set of trusted headers from trusted proxies. + * Determine if the current request probably expects a JSON response. * - * @return int A bit field of Request::HEADER_* that defines which headers are trusted from your proxies + * @return bool * @static - */ - public static function getTrustedHeaderSet() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - return \Illuminate\Http\Request::getTrustedHeaderSet(); + */ public static function expectsJson() + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->expectsJson(); } /** - * Sets a list of trusted host patterns. - * - * You should only list the hosts you manage using regexs. + * Determine if the current request is asking for JSON. * - * @param array $hostPatterns A list of trusted host patterns - * @return void + * @return bool * @static - */ - public static function setTrustedHosts($hostPatterns) - { //Method inherited from \Symfony\Component\HttpFoundation\Request - \Illuminate\Http\Request::setTrustedHosts($hostPatterns); + */ public static function wantsJson() + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->wantsJson(); } /** - * Gets the list of trusted host patterns. + * Determines whether the current requests accepts a given content type. * - * @return string[] + * @param string|array $contentTypes + * @return bool * @static - */ - public static function getTrustedHosts() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - return \Illuminate\Http\Request::getTrustedHosts(); + */ public static function accepts($contentTypes) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->accepts($contentTypes); } /** - * Normalizes a query string. - * - * It builds a normalized query string, where keys/value pairs are alphabetized, - * have consistent escaping and unneeded delimiters are removed. + * Return the most suitable content type from the given array based on content negotiation. * + * @param string|array $contentTypes + * @return string|null * @static - */ - public static function normalizeQueryString($qs) - { //Method inherited from \Symfony\Component\HttpFoundation\Request - return \Illuminate\Http\Request::normalizeQueryString($qs); + */ public static function prefers($contentTypes) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->prefers($contentTypes); } /** - * 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. + * Determine if the current request accepts any content type. * - * @return void + * @return bool * @static - */ - public static function enableHttpMethodParameterOverride() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - \Illuminate\Http\Request::enableHttpMethodParameterOverride(); + */ public static function acceptsAnyContentType() + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->acceptsAnyContentType(); } /** - * Checks whether support for the _method request parameter is enabled. + * Determines whether a request accepts JSON. * + * @return bool * @static - */ - public static function getHttpMethodParameterOverride() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - return \Illuminate\Http\Request::getHttpMethodParameterOverride(); + */ public static function acceptsJson() + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->acceptsJson(); } /** - * Whether the request contains a Session which was started in one of the - * previous requests. + * Determines whether a request accepts HTML. * + * @return bool * @static - */ - public static function hasPreviousSession() - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function acceptsHtml() + { /** @var \Illuminate\Http\Request $instance */ - return $instance->hasPreviousSession(); + return $instance->acceptsHtml(); } /** - * + * Determine if the given content types match. * - * @return void + * @param string $actual + * @param string $type + * @return bool * @static - */ - public static function setSession($session) - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - $instance->setSession($session); + */ public static function matchesType($actual, $type) + { + return \Illuminate\Http\Request::matchesType($actual, $type); } /** - * + * Get the data format expected in the response. * - * @internal - * @param \Symfony\Component\HttpFoundation\callable(): SessionInterface $factory + * @param string $default + * @return string * @static - */ - public static function setSessionFactory($factory) - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function format($default = 'html') + { /** @var \Illuminate\Http\Request $instance */ - return $instance->setSessionFactory($factory); + return $instance->format($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. + * Retrieve an old input item. * - * @see getClientIp() + * @param string|null $key + * @param \Illuminate\Database\Eloquent\Model|string|array|null $default + * @return string|array|null * @static - */ - public static function getClientIps() - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function old($key = null, $default = null) + { /** @var \Illuminate\Http\Request $instance */ - return $instance->getClientIps(); + return $instance->old($key, $default); } /** - * 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. + * Flash the input for the current request to the session. * - * @see getClientIps() - * @see https://wikipedia.org/wiki/X-Forwarded-For + * @return void * @static - */ - public static function getClientIp() - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function flash() + { /** @var \Illuminate\Http\Request $instance */ - return $instance->getClientIp(); + $instance->flash(); } /** - * Returns current script name. + * Flash only some of the input to the session. * + * @param array|mixed $keys + * @return void * @static - */ - public static function getScriptName() - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function flashOnly($keys) + { /** @var \Illuminate\Http\Request $instance */ - return $instance->getScriptName(); + $instance->flashOnly($keys); } /** - * 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' + * Flash only some of the input to the session. * - * @return string The raw path (i.e. not urldecoded) + * @param array|mixed $keys + * @return void * @static - */ - public static function getPathInfo() - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function flashExcept($keys) + { /** @var \Illuminate\Http\Request $instance */ - return $instance->getPathInfo(); + $instance->flashExcept($keys); } /** - * 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' + * Flush all of the old input from the session. * - * @return string The raw path (i.e. not urldecoded) + * @return void * @static - */ - public static function getBasePath() - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function flush() + { /** @var \Illuminate\Http\Request $instance */ - return $instance->getBasePath(); + $instance->flush(); } /** - * 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. + * Retrieve a server variable from the request. * - * @return string The raw URL (i.e. not urldecoded) + * @param string|null $key + * @param string|array|null $default + * @return string|array|null * @static - */ - public static function getBaseUrl() - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function server($key = null, $default = null) + { /** @var \Illuminate\Http\Request $instance */ - return $instance->getBaseUrl(); + return $instance->server($key, $default); } /** - * Gets the request's scheme. + * Determine if a header is set on the request. * + * @param string $key + * @return bool * @static - */ - public static function getScheme() - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function hasHeader($key) + { /** @var \Illuminate\Http\Request $instance */ - return $instance->getScheme(); + return $instance->hasHeader($key); } /** - * 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. + * Retrieve a header from the request. * - * @return int|string|null Can be a string if fetched from the server bag + * @param string|null $key + * @param string|array|null $default + * @return string|array|null * @static - */ - public static function getPort() - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function header($key = null, $default = null) + { /** @var \Illuminate\Http\Request $instance */ - return $instance->getPort(); + return $instance->header($key, $default); } /** - * Returns the user. + * Get the bearer token from the request headers. * + * @return string|null * @static - */ - public static function getUser() - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function bearerToken() + { /** @var \Illuminate\Http\Request $instance */ - return $instance->getUser(); + return $instance->bearerToken(); } /** - * Returns the password. + * Determine if the request contains a given input item key. * + * @param string|array $key + * @return bool * @static - */ - public static function getPassword() - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function exists($key) + { /** @var \Illuminate\Http\Request $instance */ - return $instance->getPassword(); + return $instance->exists($key); } /** - * Gets the user info. + * Determine if the request contains a given input item key. * - * @return string|null A user name if any and, optionally, scheme-specific information about how to gain authorization to access the server + * @param string|array $key + * @return bool * @static - */ - public static function getUserInfo() - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function has($key) + { /** @var \Illuminate\Http\Request $instance */ - return $instance->getUserInfo(); + return $instance->has($key); } /** - * Returns the HTTP host being requested. - * - * The port name will be appended to the host if it's non-standard. + * Determine if the request contains any of the given inputs. * + * @param string|array $keys + * @return bool * @static - */ - public static function getHttpHost() - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function hasAny($keys) + { /** @var \Illuminate\Http\Request $instance */ - return $instance->getHttpHost(); + return $instance->hasAny($keys); } /** - * Returns the requested URI (path and query string). + * Apply the callback if the request contains the given input item key. * - * @return string The raw URI (i.e. not URI decoded) + * @param string $key + * @param callable $callback + * @param callable|null $default + * @return $this|mixed * @static - */ - public static function getRequestUri() - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function whenHas($key, $callback, $default = null) + { /** @var \Illuminate\Http\Request $instance */ - return $instance->getRequestUri(); + return $instance->whenHas($key, $callback, $default); } /** - * 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. + * Determine if the request contains a non-empty value for an input item. * + * @param string|array $key + * @return bool * @static - */ - public static function getSchemeAndHttpHost() - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function filled($key) + { /** @var \Illuminate\Http\Request $instance */ - return $instance->getSchemeAndHttpHost(); + return $instance->filled($key); } /** - * Generates a normalized URI (URL) for the Request. + * Determine if the request contains an empty value for an input item. * - * @see getQueryString() + * @param string|array $key + * @return bool * @static - */ - public static function getUri() - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function isNotFilled($key) + { /** @var \Illuminate\Http\Request $instance */ - return $instance->getUri(); + return $instance->isNotFilled($key); } /** - * Generates a normalized URI for the given path. + * Determine if the request contains a non-empty value for any of the given inputs. * - * @param string $path A path to use instead of the current one + * @param string|array $keys + * @return bool * @static - */ - public static function getUriForPath($path) - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function anyFilled($keys) + { /** @var \Illuminate\Http\Request $instance */ - return $instance->getUriForPath($path); + return $instance->anyFilled($keys); } /** - * 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. - * - * 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" + * Apply the callback if the request contains a non-empty value for the given input item key. * + * @param string $key + * @param callable $callback + * @param callable|null $default + * @return $this|mixed * @static - */ - public static function getRelativeUriForPath($path) - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function whenFilled($key, $callback, $default = null) + { /** @var \Illuminate\Http\Request $instance */ - return $instance->getRelativeUriForPath($path); + return $instance->whenFilled($key, $callback, $default); } /** - * Generates the normalized query string for the Request. - * - * It builds a normalized query string, where keys/value pairs are alphabetized - * and have consistent escaping. + * Determine if the request is missing a given input item key. * + * @param string|array $key + * @return bool * @static - */ - public static function getQueryString() - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function missing($key) + { /** @var \Illuminate\Http\Request $instance */ - return $instance->getQueryString(); + return $instance->missing($key); } /** - * 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". + * Apply the callback if the request is missing the given input item key. * + * @param string $key + * @param callable $callback + * @param callable|null $default + * @return $this|mixed * @static - */ - public static function isSecure() - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function whenMissing($key, $callback, $default = null) + { /** @var \Illuminate\Http\Request $instance */ - return $instance->isSecure(); + return $instance->whenMissing($key, $callback, $default); } /** - * 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. + * Get the keys for all of the input and files. * - * @throws SuspiciousOperationException when the host name is invalid or not trusted + * @return array * @static - */ - public static function getHost() - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function keys() + { /** @var \Illuminate\Http\Request $instance */ - return $instance->getHost(); + return $instance->keys(); } /** - * Sets the request method. + * Get all of the input and files for the request. * - * @return void + * @param array|mixed|null $keys + * @return array * @static - */ - public static function setMethod($method) - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function all($keys = null) + { /** @var \Illuminate\Http\Request $instance */ - $instance->setMethod($method); + return $instance->all($keys); } /** - * 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. + * Retrieve an input item from the request. * - * @see getRealMethod() + * @param string|null $key + * @param mixed $default + * @return mixed * @static - */ - public static function getMethod() - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function input($key = null, $default = null) + { /** @var \Illuminate\Http\Request $instance */ - return $instance->getMethod(); + return $instance->input($key, $default); } /** - * Gets the "real" request method. + * Retrieve input from the request as a Stringable instance. * - * @see getMethod() + * @param string $key + * @param mixed $default + * @return \Illuminate\Support\Stringable * @static - */ - public static function getRealMethod() - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function str($key, $default = null) + { /** @var \Illuminate\Http\Request $instance */ - return $instance->getRealMethod(); + return $instance->str($key, $default); } /** - * Gets the mime type associated with the format. + * Retrieve input from the request as a Stringable instance. * + * @param string $key + * @param mixed $default + * @return \Illuminate\Support\Stringable * @static - */ - public static function getMimeType($format) - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function string($key, $default = null) + { /** @var \Illuminate\Http\Request $instance */ - return $instance->getMimeType($format); + return $instance->string($key, $default); } /** - * Gets the mime types associated with the format. + * Retrieve input as a boolean value. + * + * Returns true when value is "1", "true", "on", and "yes". Otherwise, returns false. * - * @return string[] + * @param string|null $key + * @param bool $default + * @return bool * @static - */ - public static function getMimeTypes($format) - { //Method inherited from \Symfony\Component\HttpFoundation\Request - return \Illuminate\Http\Request::getMimeTypes($format); + */ public static function boolean($key = null, $default = false) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->boolean($key, $default); } /** - * Gets the format associated with the mime type. + * Retrieve input as an integer value. * + * @param string $key + * @param int $default + * @return int * @static - */ - public static function getFormat($mimeType) - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function integer($key, $default = 0) + { /** @var \Illuminate\Http\Request $instance */ - return $instance->getFormat($mimeType); + return $instance->integer($key, $default); } /** - * Associates a format with mime types. + * Retrieve input as a float value. * - * @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 + * @param string $key + * @param float $default + * @return float * @static - */ - public static function setFormat($format, $mimeTypes) - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function float($key, $default = 0.0) + { /** @var \Illuminate\Http\Request $instance */ - $instance->setFormat($format, $mimeTypes); + return $instance->float($key, $default); } /** - * Gets the request format. - * - * Here is the process to determine the format: - * - * * format defined by the user (with setRequestFormat()) - * * _format request attribute - * * $default + * Retrieve input from the request as a Carbon instance. * - * @see getPreferredFormat + * @param string $key + * @param string|null $format + * @param string|null $tz + * @return \Illuminate\Support\Carbon|null + * @throws \Carbon\Exceptions\InvalidFormatException * @static - */ - public static function getRequestFormat($default = 'html') - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function date($key, $format = null, $tz = null) + { /** @var \Illuminate\Http\Request $instance */ - return $instance->getRequestFormat($default); + return $instance->date($key, $format, $tz); } /** - * Sets the request format. + * Retrieve input from the request as an enum. * - * @return void + * @template TEnum + * @param string $key + * @param \Illuminate\Http\class-string $enumClass + * @return \Illuminate\Http\TEnum|null * @static - */ - public static function setRequestFormat($format) - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function enum($key, $enumClass) + { /** @var \Illuminate\Http\Request $instance */ - $instance->setRequestFormat($format); + return $instance->enum($key, $enumClass); } /** - * Gets the usual name of the format associated with the request's media type (provided in the Content-Type header). + * Retrieve input from the request as a collection. * - * @deprecated since Symfony 6.2, use getContentTypeFormat() instead + * @param array|string|null $key + * @return \Illuminate\Support\Collection * @static - */ - public static function getContentType() - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function collect($key = null) + { /** @var \Illuminate\Http\Request $instance */ - return $instance->getContentType(); + return $instance->collect($key); } /** - * Gets the usual name of the format associated with the request's media type (provided in the Content-Type header). + * Get a subset containing the provided keys with values from the input data. * - * @see Request::$formats + * @param array|mixed $keys + * @return array * @static - */ - public static function getContentTypeFormat() - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function only($keys) + { /** @var \Illuminate\Http\Request $instance */ - return $instance->getContentTypeFormat(); + return $instance->only($keys); } /** - * Sets the default locale. + * Get all of the input except for a specified array of items. * - * @return void + * @param array|mixed $keys + * @return array * @static - */ - public static function setDefaultLocale($locale) - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function except($keys) + { /** @var \Illuminate\Http\Request $instance */ - $instance->setDefaultLocale($locale); + return $instance->except($keys); } /** - * Get the default locale. + * Retrieve a query string item from the request. * + * @param string|null $key + * @param string|array|null $default + * @return string|array|null * @static - */ - public static function getDefaultLocale() - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function query($key = null, $default = null) + { /** @var \Illuminate\Http\Request $instance */ - return $instance->getDefaultLocale(); + return $instance->query($key, $default); } /** - * Sets the locale. + * Retrieve a request payload item from the request. * - * @return void + * @param string|null $key + * @param string|array|null $default + * @return string|array|null * @static - */ - public static function setLocale($locale) - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function post($key = null, $default = null) + { /** @var \Illuminate\Http\Request $instance */ - $instance->setLocale($locale); + return $instance->post($key, $default); } /** - * Get the locale. + * Determine if a cookie is set on the request. * + * @param string $key + * @return bool * @static - */ - public static function getLocale() - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function hasCookie($key) + { /** @var \Illuminate\Http\Request $instance */ - return $instance->getLocale(); + return $instance->hasCookie($key); } /** - * Checks if the request method is of specified type. + * Retrieve a cookie from the request. * - * @param string $method Uppercase request method (GET, POST etc) + * @param string|null $key + * @param string|array|null $default + * @return string|array|null * @static - */ - public static function isMethod($method) - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function cookie($key = null, $default = null) + { /** @var \Illuminate\Http\Request $instance */ - return $instance->isMethod($method); + return $instance->cookie($key, $default); } /** - * Checks whether or not the method is safe. + * Get an array of all of the files on the request. * - * @see https://tools.ietf.org/html/rfc7231#section-4.2.1 + * @return array * @static - */ - public static function isMethodSafe() - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function allFiles() + { /** @var \Illuminate\Http\Request $instance */ - return $instance->isMethodSafe(); + return $instance->allFiles(); } /** - * Checks whether or not the method is idempotent. + * Determine if the uploaded data contains a file. * + * @param string $key + * @return bool * @static - */ - public static function isMethodIdempotent() - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function hasFile($key) + { /** @var \Illuminate\Http\Request $instance */ - return $instance->isMethodIdempotent(); + return $instance->hasFile($key); } /** - * Checks whether the method is cacheable or not. + * Retrieve a file from the request. * - * @see https://tools.ietf.org/html/rfc7231#section-4.2.3 + * @param string|null $key + * @param mixed $default + * @return \Illuminate\Http\UploadedFile|\Illuminate\Http\UploadedFile[]|array|null * @static - */ - public static function isMethodCacheable() - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function file($key = null, $default = null) + { /** @var \Illuminate\Http\Request $instance */ - return $instance->isMethodCacheable(); + return $instance->file($key, $default); } /** - * 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). + * Dump the items. * + * @param mixed $keys + * @return \Illuminate\Http\Request * @static - */ - public static function getProtocolVersion() - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function dump($keys = []) + { /** @var \Illuminate\Http\Request $instance */ - return $instance->getProtocolVersion(); + return $instance->dump($keys); } /** - * Returns the request body content. + * Dump the given arguments and terminate execution. * - * @param bool $asResource If true, a resource will be returned - * @return string|resource - * @psalm-return ($asResource is true ? resource : string) + * @param mixed $args + * @return \Illuminate\Http\never * @static - */ - public static function getContent($asResource = false) - { //Method inherited from \Symfony\Component\HttpFoundation\Request + */ public static function dd(...$args) + { /** @var \Illuminate\Http\Request $instance */ - return $instance->getContent($asResource); + return $instance->dd(...$args); } /** - * Gets the decoded form or json request body. + * Register a custom macro. * - * @throws JsonException When the body cannot be decoded to an array + * @param string $name + * @param object|callable $macro + * @return void * @static - */ - public static function getPayload() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->getPayload(); + */ public static function macro($name, $macro) + { + \Illuminate\Http\Request::macro($name, $macro); } /** - * Gets the Etags. + * Mix another object into the class. * + * @param object $mixin + * @param bool $replace + * @return void + * @throws \ReflectionException * @static - */ - public static function getETags() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->getETags(); + */ public static function mixin($mixin, $replace = true) + { + \Illuminate\Http\Request::mixin($mixin, $replace); } /** - * + * Checks if macro is registered. * + * @param string $name + * @return bool * @static - */ - public static function isNoCache() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->isNoCache(); + */ public static function hasMacro($name) + { + return \Illuminate\Http\Request::hasMacro($name); + } + /** + * Flush the existing macros. + * + * @return void + * @static + */ public static function flushMacros() + { + \Illuminate\Http\Request::flushMacros(); } /** - * 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. * + * @see \Illuminate\Foundation\Providers\FoundationServiceProvider::registerRequestValidation() + * @param array $rules + * @param mixed $params * @static - */ - public static function getPreferredFormat($default = 'html') - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->getPreferredFormat($default); + */ public static function validate($rules, ...$params) + { + return \Illuminate\Http\Request::validate($rules, ...$params); } /** - * Returns the preferred language. + * * - * @param string[] $locales An array of ordered available locales + * @see \Illuminate\Foundation\Providers\FoundationServiceProvider::registerRequestValidation() + * @param string $errorBag + * @param array $rules + * @param mixed $params * @static - */ - public static function getPreferredLanguage($locales = null) - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->getPreferredLanguage($locales); + */ public static function validateWithBag($errorBag, $rules, ...$params) + { + return \Illuminate\Http\Request::validateWithBag($errorBag, $rules, ...$params); } /** - * Gets a list of languages acceptable by the client browser ordered in the user browser preferences. + * * - * @return string[] + * @see \Illuminate\Foundation\Providers\FoundationServiceProvider::registerRequestSignatureValidation() + * @param mixed $absolute * @static - */ - public static function getLanguages() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->getLanguages(); + */ public static function hasValidSignature($absolute = true) + { + return \Illuminate\Http\Request::hasValidSignature($absolute); } /** - * Gets a list of charsets acceptable by the client browser in preferable order. + * * - * @return string[] + * @see \Illuminate\Foundation\Providers\FoundationServiceProvider::registerRequestSignatureValidation() * @static - */ - public static function getCharsets() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->getCharsets(); + */ public static function hasValidRelativeSignature() + { + return \Illuminate\Http\Request::hasValidRelativeSignature(); } /** - * Gets a list of encodings acceptable by the client browser in preferable order. + * * - * @return string[] + * @see \Illuminate\Foundation\Providers\FoundationServiceProvider::registerRequestSignatureValidation() + * @param mixed $ignoreQuery + * @param mixed $absolute * @static - */ - public static function getEncodings() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->getEncodings(); + */ public static function hasValidSignatureWhileIgnoring($ignoreQuery = [], $absolute = true) + { + return \Illuminate\Http\Request::hasValidSignatureWhileIgnoring($ignoreQuery, $absolute); } /** - * Gets a list of content types acceptable by the client browser in preferable order. + * * - * @return string[] + * @see \Illuminate\Foundation\Providers\FoundationServiceProvider::registerRequestSignatureValidation() + * @param mixed $ignoreQuery * @static - */ - public static function getAcceptableContentTypes() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->getAcceptableContentTypes(); + */ public static function hasValidRelativeSignatureWhileIgnoring($ignoreQuery = []) + { + return \Illuminate\Http\Request::hasValidRelativeSignatureWhileIgnoring($ignoreQuery); } + } + /** + * + * + * @see \Illuminate\Routing\ResponseFactory + */ class Response { /** - * 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: + * Create a new response instance. * - * @see https://wikipedia.org/wiki/List_of_Ajax_frameworks#JavaScript + * @param mixed $content + * @param int $status + * @param array $headers + * @return \Illuminate\Http\Response * @static - */ - public static function isXmlHttpRequest() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->isXmlHttpRequest(); + */ public static function make($content = '', $status = 200, $headers = []) + { + /** @var \Illuminate\Routing\ResponseFactory $instance */ + return $instance->make($content, $status, $headers); } /** - * Checks whether the client browser prefers safe content or not according to RFC8674. + * Create a new "no content" response. * - * @see https://tools.ietf.org/html/rfc8674 + * @param int $status + * @param array $headers + * @return \Illuminate\Http\Response * @static - */ - public static function preferSafeContent() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->preferSafeContent(); + */ public static function noContent($status = 204, $headers = []) + { + /** @var \Illuminate\Routing\ResponseFactory $instance */ + return $instance->noContent($status, $headers); } /** - * 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. + * Create a new response for a given view. * + * @param string|array $view + * @param array $data + * @param int $status + * @param array $headers + * @return \Illuminate\Http\Response * @static - */ - public static function isFromTrustedProxy() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->isFromTrustedProxy(); + */ public static function view($view, $data = [], $status = 200, $headers = []) + { + /** @var \Illuminate\Routing\ResponseFactory $instance */ + return $instance->view($view, $data, $status, $headers); } /** - * Filter the given array of rules into an array of rules that are included in precognitive headers. + * Create a new JSON response instance. * - * @param array $rules - * @return array + * @param mixed $data + * @param int $status + * @param array $headers + * @param int $options + * @return \Illuminate\Http\JsonResponse * @static - */ - public static function filterPrecognitiveRules($rules) + */ public static function json($data = [], $status = 200, $headers = [], $options = 0) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->filterPrecognitiveRules($rules); + /** @var \Illuminate\Routing\ResponseFactory $instance */ + return $instance->json($data, $status, $headers, $options); } /** - * Determine if the request is attempting to be precognitive. + * Create a new JSONP response instance. * - * @return bool + * @param string $callback + * @param mixed $data + * @param int $status + * @param array $headers + * @param int $options + * @return \Illuminate\Http\JsonResponse * @static - */ - public static function isAttemptingPrecognition() + */ public static function jsonp($callback, $data = [], $status = 200, $headers = [], $options = 0) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->isAttemptingPrecognition(); + /** @var \Illuminate\Routing\ResponseFactory $instance */ + return $instance->jsonp($callback, $data, $status, $headers, $options); } /** - * Determine if the request is precognitive. + * Create a new streamed response instance. * - * @return bool + * @param callable $callback + * @param int $status + * @param array $headers + * @return \Symfony\Component\HttpFoundation\StreamedResponse * @static - */ - public static function isPrecognitive() + */ public static function stream($callback, $status = 200, $headers = []) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->isPrecognitive(); + /** @var \Illuminate\Routing\ResponseFactory $instance */ + return $instance->stream($callback, $status, $headers); } /** - * Determine if the request is sending JSON. + * Create a new streamed response instance. * - * @return bool + * @param array $data + * @param int $status + * @param array $headers + * @param int $encodingOptions + * @return \Symfony\Component\HttpFoundation\StreamedJsonResponse * @static - */ - public static function isJson() + */ public static function streamJson($data, $status = 200, $headers = [], $encodingOptions = 15) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->isJson(); + /** @var \Illuminate\Routing\ResponseFactory $instance */ + return $instance->streamJson($data, $status, $headers, $encodingOptions); } /** - * Determine if the current request probably expects a JSON response. + * Create a new streamed response instance as a file download. * - * @return bool + * @param callable $callback + * @param string|null $name + * @param array $headers + * @param string|null $disposition + * @return \Symfony\Component\HttpFoundation\StreamedResponse + * @throws \Illuminate\Routing\Exceptions\StreamedResponseException * @static - */ - public static function expectsJson() + */ public static function streamDownload($callback, $name = null, $headers = [], $disposition = 'attachment') { - /** @var \Illuminate\Http\Request $instance */ - return $instance->expectsJson(); + /** @var \Illuminate\Routing\ResponseFactory $instance */ + return $instance->streamDownload($callback, $name, $headers, $disposition); } /** - * Determine if the current request is asking for JSON. + * Create a new file download response. * - * @return bool + * @param \SplFileInfo|string $file + * @param string|null $name + * @param array $headers + * @param string|null $disposition + * @return \Symfony\Component\HttpFoundation\BinaryFileResponse * @static - */ - public static function wantsJson() + */ public static function download($file, $name = null, $headers = [], $disposition = 'attachment') { - /** @var \Illuminate\Http\Request $instance */ - return $instance->wantsJson(); + /** @var \Illuminate\Routing\ResponseFactory $instance */ + return $instance->download($file, $name, $headers, $disposition); } /** - * Determines whether the current requests accepts a given content type. + * Return the raw contents of a binary file. * - * @param string|array $contentTypes - * @return bool + * @param \SplFileInfo|string $file + * @param array $headers + * @return \Symfony\Component\HttpFoundation\BinaryFileResponse * @static - */ - public static function accepts($contentTypes) + */ public static function file($file, $headers = []) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->accepts($contentTypes); + /** @var \Illuminate\Routing\ResponseFactory $instance */ + return $instance->file($file, $headers); } /** - * Return the most suitable content type from the given array based on content negotiation. + * Create a new redirect response to the given path. * - * @param string|array $contentTypes - * @return string|null + * @param string $path + * @param int $status + * @param array $headers + * @param bool|null $secure + * @return \Illuminate\Http\RedirectResponse * @static - */ - public static function prefers($contentTypes) + */ public static function redirectTo($path, $status = 302, $headers = [], $secure = null) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->prefers($contentTypes); + /** @var \Illuminate\Routing\ResponseFactory $instance */ + return $instance->redirectTo($path, $status, $headers, $secure); } /** - * Determine if the current request accepts any content type. + * Create a new redirect response to a named route. * - * @return bool + * @param string $route + * @param mixed $parameters + * @param int $status + * @param array $headers + * @return \Illuminate\Http\RedirectResponse * @static - */ - public static function acceptsAnyContentType() + */ public static function redirectToRoute($route, $parameters = [], $status = 302, $headers = []) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->acceptsAnyContentType(); + /** @var \Illuminate\Routing\ResponseFactory $instance */ + return $instance->redirectToRoute($route, $parameters, $status, $headers); } /** - * Determines whether a request accepts JSON. + * Create a new redirect response to a controller action. * - * @return bool + * @param array|string $action + * @param mixed $parameters + * @param int $status + * @param array $headers + * @return \Illuminate\Http\RedirectResponse * @static - */ - public static function acceptsJson() + */ public static function redirectToAction($action, $parameters = [], $status = 302, $headers = []) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->acceptsJson(); + /** @var \Illuminate\Routing\ResponseFactory $instance */ + return $instance->redirectToAction($action, $parameters, $status, $headers); } /** - * Determines whether a request accepts HTML. + * Create a new redirect response, while putting the current URL in the session. * - * @return bool + * @param string $path + * @param int $status + * @param array $headers + * @param bool|null $secure + * @return \Illuminate\Http\RedirectResponse * @static - */ - public static function acceptsHtml() + */ public static function redirectGuest($path, $status = 302, $headers = [], $secure = null) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->acceptsHtml(); + /** @var \Illuminate\Routing\ResponseFactory $instance */ + return $instance->redirectGuest($path, $status, $headers, $secure); } /** - * Determine if the given content types match. + * Create a new redirect response to the previously intended location. * - * @param string $actual - * @param string $type - * @return bool + * @param string $default + * @param int $status + * @param array $headers + * @param bool|null $secure + * @return \Illuminate\Http\RedirectResponse * @static - */ - public static function matchesType($actual, $type) + */ public static function redirectToIntended($default = '/', $status = 302, $headers = [], $secure = null) { - return \Illuminate\Http\Request::matchesType($actual, $type); + /** @var \Illuminate\Routing\ResponseFactory $instance */ + return $instance->redirectToIntended($default, $status, $headers, $secure); } /** - * Get the data format expected in the response. + * Register a custom macro. * - * @param string $default - * @return string + * @param string $name + * @param object|callable $macro + * @return void * @static - */ - public static function format($default = 'html') + */ public static function macro($name, $macro) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->format($default); + \Illuminate\Routing\ResponseFactory::macro($name, $macro); } /** - * Retrieve an old input item. + * Mix another object into the class. * - * @param string|null $key - * @param \Illuminate\Database\Eloquent\Model|string|array|null $default - * @return string|array|null + * @param object $mixin + * @param bool $replace + * @return void + * @throws \ReflectionException * @static - */ - public static function old($key = null, $default = null) + */ public static function mixin($mixin, $replace = true) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->old($key, $default); + \Illuminate\Routing\ResponseFactory::mixin($mixin, $replace); } /** - * Flash the input for the current request to the session. + * Checks if macro is registered. * - * @return void + * @param string $name + * @return bool * @static - */ - public static function flash() + */ public static function hasMacro($name) { - /** @var \Illuminate\Http\Request $instance */ - $instance->flash(); + return \Illuminate\Routing\ResponseFactory::hasMacro($name); } /** - * Flash only some of the input to the session. + * Flush the existing macros. * - * @param array|mixed $keys * @return void * @static - */ - public static function flashOnly($keys) + */ public static function flushMacros() { - /** @var \Illuminate\Http\Request $instance */ - $instance->flashOnly($keys); + \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 { /** - * Flash only some of the input to the session. + * Register a new GET route with the router. * - * @param array|mixed $keys - * @return void + * @param string $uri + * @param array|string|callable|null $action + * @return \Illuminate\Routing\Route * @static - */ - public static function flashExcept($keys) + */ public static function get($uri, $action = null) { - /** @var \Illuminate\Http\Request $instance */ - $instance->flashExcept($keys); + /** @var \Illuminate\Routing\Router $instance */ + return $instance->get($uri, $action); } /** - * Flush all of the old input from the session. + * Register a new POST route with the router. * - * @return void + * @param string $uri + * @param array|string|callable|null $action + * @return \Illuminate\Routing\Route * @static - */ - public static function flush() + */ public static function post($uri, $action = null) { - /** @var \Illuminate\Http\Request $instance */ - $instance->flush(); + /** @var \Illuminate\Routing\Router $instance */ + return $instance->post($uri, $action); } /** - * Retrieve a server variable from the request. + * Register a new PUT route with the router. * - * @param string|null $key - * @param string|array|null $default - * @return string|array|null + * @param string $uri + * @param array|string|callable|null $action + * @return \Illuminate\Routing\Route * @static - */ - public static function server($key = null, $default = null) + */ public static function put($uri, $action = null) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->server($key, $default); + /** @var \Illuminate\Routing\Router $instance */ + return $instance->put($uri, $action); } /** - * Determine if a header is set on the request. + * Register a new PATCH route with the router. * - * @param string $key - * @return bool + * @param string $uri + * @param array|string|callable|null $action + * @return \Illuminate\Routing\Route * @static - */ - public static function hasHeader($key) + */ public static function patch($uri, $action = null) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->hasHeader($key); + /** @var \Illuminate\Routing\Router $instance */ + return $instance->patch($uri, $action); } /** - * Retrieve a header from the request. + * Register a new DELETE route with the router. * - * @param string|null $key - * @param string|array|null $default - * @return string|array|null + * @param string $uri + * @param array|string|callable|null $action + * @return \Illuminate\Routing\Route * @static - */ - public static function header($key = null, $default = null) + */ public static function delete($uri, $action = null) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->header($key, $default); + /** @var \Illuminate\Routing\Router $instance */ + return $instance->delete($uri, $action); } /** - * Get the bearer token from the request headers. + * Register a new OPTIONS route with the router. * - * @return string|null + * @param string $uri + * @param array|string|callable|null $action + * @return \Illuminate\Routing\Route * @static - */ - public static function bearerToken() + */ public static function options($uri, $action = null) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->bearerToken(); + /** @var \Illuminate\Routing\Router $instance */ + return $instance->options($uri, $action); } /** - * Determine if the request contains a given input item key. + * Register a new route responding to all verbs. * - * @param string|array $key - * @return bool + * @param string $uri + * @param array|string|callable|null $action + * @return \Illuminate\Routing\Route * @static - */ - public static function exists($key) + */ public static function any($uri, $action = null) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->exists($key); + /** @var \Illuminate\Routing\Router $instance */ + return $instance->any($uri, $action); } /** - * Determine if the request contains a given input item key. + * Register a new fallback route with the router. * - * @param string|array $key - * @return bool + * @param array|string|callable|null $action + * @return \Illuminate\Routing\Route * @static - */ - public static function has($key) + */ public static function fallback($action) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->has($key); + /** @var \Illuminate\Routing\Router $instance */ + return $instance->fallback($action); } /** - * Determine if the request contains any of the given inputs. + * Create a redirect from one URI to another. * - * @param string|array $keys - * @return bool + * @param string $uri + * @param string $destination + * @param int $status + * @return \Illuminate\Routing\Route * @static - */ - public static function hasAny($keys) + */ public static function redirect($uri, $destination, $status = 302) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->hasAny($keys); + /** @var \Illuminate\Routing\Router $instance */ + return $instance->redirect($uri, $destination, $status); } /** - * Apply the callback if the request contains the given input item key. + * Create a permanent redirect from one URI to another. * - * @param string $key - * @param callable $callback - * @param callable|null $default - * @return $this|mixed + * @param string $uri + * @param string $destination + * @return \Illuminate\Routing\Route * @static - */ - public static function whenHas($key, $callback, $default = null) + */ public static function permanentRedirect($uri, $destination) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->whenHas($key, $callback, $default); + /** @var \Illuminate\Routing\Router $instance */ + return $instance->permanentRedirect($uri, $destination); } /** - * Determine if the request contains a non-empty value for an input item. + * Register a new route that returns a view. * - * @param string|array $key - * @return bool + * @param string $uri + * @param string $view + * @param array $data + * @param int|array $status + * @param array $headers + * @return \Illuminate\Routing\Route * @static - */ - public static function filled($key) + */ public static function view($uri, $view, $data = [], $status = 200, $headers = []) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->filled($key); + /** @var \Illuminate\Routing\Router $instance */ + return $instance->view($uri, $view, $data, $status, $headers); } /** - * Determine if the request contains an empty value for an input item. + * Register a new route with the given verbs. * - * @param string|array $key - * @return bool + * @param array|string $methods + * @param string $uri + * @param array|string|callable|null $action + * @return \Illuminate\Routing\Route * @static - */ - public static function isNotFilled($key) + */ public static function match($methods, $uri, $action = null) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->isNotFilled($key); + /** @var \Illuminate\Routing\Router $instance */ + return $instance->match($methods, $uri, $action); } /** - * Determine if the request contains a non-empty value for any of the given inputs. + * Register an array of resource controllers. * - * @param string|array $keys - * @return bool + * @param array $resources + * @param array $options + * @return void * @static - */ - public static function anyFilled($keys) + */ public static function resources($resources, $options = []) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->anyFilled($keys); + /** @var \Illuminate\Routing\Router $instance */ + $instance->resources($resources, $options); } /** - * Apply the callback if the request contains a non-empty value for the given input item key. + * Route a resource to a controller. * - * @param string $key - * @param callable $callback - * @param callable|null $default - * @return $this|mixed + * @param string $name + * @param string $controller + * @param array $options + * @return \Illuminate\Routing\PendingResourceRegistration * @static - */ - public static function whenFilled($key, $callback, $default = null) + */ public static function resource($name, $controller, $options = []) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->whenFilled($key, $callback, $default); + /** @var \Illuminate\Routing\Router $instance */ + return $instance->resource($name, $controller, $options); } /** - * Determine if the request is missing a given input item key. + * Register an array of API resource controllers. * - * @param string|array $key - * @return bool + * @param array $resources + * @param array $options + * @return void * @static - */ - public static function missing($key) + */ public static function apiResources($resources, $options = []) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->missing($key); + /** @var \Illuminate\Routing\Router $instance */ + $instance->apiResources($resources, $options); } /** - * Apply the callback if the request is missing the given input item key. + * Route an API resource to a controller. * - * @param string $key - * @param callable $callback - * @param callable|null $default - * @return $this|mixed + * @param string $name + * @param string $controller + * @param array $options + * @return \Illuminate\Routing\PendingResourceRegistration * @static - */ - public static function whenMissing($key, $callback, $default = null) + */ public static function apiResource($name, $controller, $options = []) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->whenMissing($key, $callback, $default); + /** @var \Illuminate\Routing\Router $instance */ + return $instance->apiResource($name, $controller, $options); } /** - * Get the keys for all of the input and files. + * Register an array of singleton resource controllers. * - * @return array + * @param array $singletons + * @param array $options + * @return void * @static - */ - public static function keys() - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->keys(); + */ public static function singletons($singletons, $options = []) + { + /** @var \Illuminate\Routing\Router $instance */ + $instance->singletons($singletons, $options); } /** - * Get all of the input and files for the request. + * Route a singleton resource to a controller. * - * @param array|mixed|null $keys - * @return array + * @param string $name + * @param string $controller + * @param array $options + * @return \Illuminate\Routing\PendingSingletonResourceRegistration * @static - */ - public static function all($keys = null) + */ public static function singleton($name, $controller, $options = []) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->all($keys); + /** @var \Illuminate\Routing\Router $instance */ + return $instance->singleton($name, $controller, $options); } /** - * Retrieve an input item from the request. + * Register an array of API singleton resource controllers. * - * @param string|null $key - * @param mixed $default - * @return mixed + * @param array $singletons + * @param array $options + * @return void * @static - */ - public static function input($key = null, $default = null) + */ public static function apiSingletons($singletons, $options = []) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->input($key, $default); + /** @var \Illuminate\Routing\Router $instance */ + $instance->apiSingletons($singletons, $options); } /** - * Retrieve input from the request as a Stringable instance. + * Route an API singleton resource to a controller. * - * @param string $key - * @param mixed $default - * @return \Illuminate\Support\Stringable + * @param string $name + * @param string $controller + * @param array $options + * @return \Illuminate\Routing\PendingSingletonResourceRegistration * @static - */ - public static function str($key, $default = null) + */ public static function apiSingleton($name, $controller, $options = []) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->str($key, $default); + /** @var \Illuminate\Routing\Router $instance */ + return $instance->apiSingleton($name, $controller, $options); } /** - * Retrieve input from the request as a Stringable instance. + * Create a route group with shared attributes. * - * @param string $key - * @param mixed $default - * @return \Illuminate\Support\Stringable + * @param array $attributes + * @param \Closure|array|string $routes + * @return \Illuminate\Routing\Router * @static - */ - public static function string($key, $default = null) + */ public static function group($attributes, $routes) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->string($key, $default); + /** @var \Illuminate\Routing\Router $instance */ + return $instance->group($attributes, $routes); } /** - * Retrieve input as a boolean value. - * - * Returns true when value is "1", "true", "on", and "yes". Otherwise, returns false. + * Merge the given array with the last group stack. * - * @param string|null $key - * @param bool $default - * @return bool + * @param array $new + * @param bool $prependExistingPrefix + * @return array * @static - */ - public static function boolean($key = null, $default = false) + */ public static function mergeWithLastGroup($new, $prependExistingPrefix = true) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->boolean($key, $default); + /** @var \Illuminate\Routing\Router $instance */ + return $instance->mergeWithLastGroup($new, $prependExistingPrefix); } /** - * Retrieve input as an integer value. + * Get the prefix from the last group on the stack. * - * @param string $key - * @param int $default - * @return int + * @return string * @static - */ - public static function integer($key, $default = 0) + */ public static function getLastGroupPrefix() { - /** @var \Illuminate\Http\Request $instance */ - return $instance->integer($key, $default); + /** @var \Illuminate\Routing\Router $instance */ + return $instance->getLastGroupPrefix(); } /** - * Retrieve input as a float value. + * Add a route to the underlying route collection. * - * @param string $key - * @param float $default - * @return float + * @param array|string $methods + * @param string $uri + * @param array|string|callable|null $action + * @return \Illuminate\Routing\Route * @static - */ - public static function float($key, $default = 0.0) + */ public static function addRoute($methods, $uri, $action) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->float($key, $default); + /** @var \Illuminate\Routing\Router $instance */ + return $instance->addRoute($methods, $uri, $action); } /** - * Retrieve input from the request as a Carbon instance. + * Create a new Route object. * - * @param string $key - * @param string|null $format - * @param string|null $tz - * @return \Illuminate\Support\Carbon|null - * @throws \Carbon\Exceptions\InvalidFormatException + * @param array|string $methods + * @param string $uri + * @param mixed $action + * @return \Illuminate\Routing\Route * @static - */ - public static function date($key, $format = null, $tz = null) + */ public static function newRoute($methods, $uri, $action) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->date($key, $format, $tz); + /** @var \Illuminate\Routing\Router $instance */ + return $instance->newRoute($methods, $uri, $action); } /** - * Retrieve input from the request as an enum. + * Return the response returned by the given route. * - * @template TEnum - * @param string $key - * @param \Illuminate\Http\class-string $enumClass - * @return \Illuminate\Http\TEnum|null + * @param string $name + * @return \Symfony\Component\HttpFoundation\Response * @static - */ - public static function enum($key, $enumClass) + */ public static function respondWithRoute($name) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->enum($key, $enumClass); + /** @var \Illuminate\Routing\Router $instance */ + return $instance->respondWithRoute($name); } /** - * Retrieve input from the request as a collection. + * Dispatch the request to the application. * - * @param array|string|null $key - * @return \Illuminate\Support\Collection + * @param \Illuminate\Http\Request $request + * @return \Symfony\Component\HttpFoundation\Response * @static - */ - public static function collect($key = null) + */ public static function dispatch($request) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->collect($key); + /** @var \Illuminate\Routing\Router $instance */ + return $instance->dispatch($request); } /** - * Get a subset containing the provided keys with values from the input data. + * Dispatch the request to a route and return the response. * - * @param array|mixed $keys - * @return array + * @param \Illuminate\Http\Request $request + * @return \Symfony\Component\HttpFoundation\Response * @static - */ - public static function only($keys) + */ public static function dispatchToRoute($request) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->only($keys); + /** @var \Illuminate\Routing\Router $instance */ + return $instance->dispatchToRoute($request); } /** - * Get all of the input except for a specified array of items. + * Gather the middleware for the given route with resolved class names. * - * @param array|mixed $keys + * @param \Illuminate\Routing\Route $route * @return array * @static - */ - public static function except($keys) + */ public static function gatherRouteMiddleware($route) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->except($keys); + /** @var \Illuminate\Routing\Router $instance */ + return $instance->gatherRouteMiddleware($route); } /** - * Retrieve a query string item from the request. + * Resolve a flat array of middleware classes from the provided array. * - * @param string|null $key - * @param string|array|null $default - * @return string|array|null + * @param array $middleware + * @param array $excluded + * @return array * @static - */ - public static function query($key = null, $default = null) + */ public static function resolveMiddleware($middleware, $excluded = []) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->query($key, $default); + /** @var \Illuminate\Routing\Router $instance */ + return $instance->resolveMiddleware($middleware, $excluded); } /** - * Retrieve a request payload item from the request. + * Create a response instance from the given value. * - * @param string|null $key - * @param string|array|null $default - * @return string|array|null + * @param \Symfony\Component\HttpFoundation\Request $request + * @param mixed $response + * @return \Symfony\Component\HttpFoundation\Response * @static - */ - public static function post($key = null, $default = null) + */ public static function prepareResponse($request, $response) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->post($key, $default); + /** @var \Illuminate\Routing\Router $instance */ + return $instance->prepareResponse($request, $response); } /** - * Determine if a cookie is set on the request. + * Static version of prepareResponse. * - * @param string $key - * @return bool + * @param \Symfony\Component\HttpFoundation\Request $request + * @param mixed $response + * @return \Symfony\Component\HttpFoundation\Response * @static - */ - public static function hasCookie($key) + */ public static function toResponse($request, $response) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->hasCookie($key); + return \Illuminate\Routing\Router::toResponse($request, $response); } /** - * Retrieve a cookie from the request. + * Substitute the route bindings onto the route. * - * @param string|null $key - * @param string|array|null $default - * @return string|array|null + * @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 cookie($key = null, $default = null) + */ public static function substituteBindings($route) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->cookie($key, $default); + /** @var \Illuminate\Routing\Router $instance */ + return $instance->substituteBindings($route); } /** - * Get an array of all of the files on the request. + * Substitute the implicit route bindings for the given route. * - * @return array + * @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 allFiles() + */ public static function substituteImplicitBindings($route) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->allFiles(); + /** @var \Illuminate\Routing\Router $instance */ + $instance->substituteImplicitBindings($route); } /** - * Determine if the uploaded data contains a file. + * Register a callback to run after implicit bindings are substituted. * - * @param string $key - * @return bool + * @param callable $callback + * @return \Illuminate\Routing\Router * @static - */ - public static function hasFile($key) + */ public static function substituteImplicitBindingsUsing($callback) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->hasFile($key); + /** @var \Illuminate\Routing\Router $instance */ + return $instance->substituteImplicitBindingsUsing($callback); } /** - * Retrieve a file from the request. + * Register a route matched event listener. * - * @param string|null $key - * @param mixed $default - * @return \Illuminate\Http\UploadedFile|\Illuminate\Http\UploadedFile[]|array|null + * @param string|callable $callback + * @return void * @static - */ - public static function file($key = null, $default = null) + */ public static function matched($callback) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->file($key, $default); + /** @var \Illuminate\Routing\Router $instance */ + $instance->matched($callback); } /** - * Dump the request items and end the script. + * Get all of the defined middleware short-hand names. * - * @param mixed $keys - * @return \Illuminate\Http\never + * @return array * @static - */ - public static function dd(...$keys) + */ public static function getMiddleware() { - /** @var \Illuminate\Http\Request $instance */ - return $instance->dd(...$keys); + /** @var \Illuminate\Routing\Router $instance */ + return $instance->getMiddleware(); } /** - * Dump the items. + * Register a short-hand name for a middleware. * - * @param mixed $keys - * @return \Illuminate\Http\Request + * @param string $name + * @param string $class + * @return \Illuminate\Routing\Router * @static - */ - public static function dump($keys = []) + */ public static function aliasMiddleware($name, $class) { - /** @var \Illuminate\Http\Request $instance */ - return $instance->dump($keys); + /** @var \Illuminate\Routing\Router $instance */ + return $instance->aliasMiddleware($name, $class); } /** - * Register a custom macro. + * Check if a middlewareGroup with the given name exists. * * @param string $name - * @param object|callable $macro - * @return void + * @return bool * @static - */ - public static function macro($name, $macro) + */ public static function hasMiddlewareGroup($name) { - \Illuminate\Http\Request::macro($name, $macro); + /** @var \Illuminate\Routing\Router $instance */ + return $instance->hasMiddlewareGroup($name); } /** - * Mix another object into the class. + * Get all of the defined middleware groups. * - * @param object $mixin - * @param bool $replace - * @return void - * @throws \ReflectionException + * @return array * @static - */ - public static function mixin($mixin, $replace = true) + */ public static function getMiddlewareGroups() { - \Illuminate\Http\Request::mixin($mixin, $replace); + /** @var \Illuminate\Routing\Router $instance */ + return $instance->getMiddlewareGroups(); } /** - * Checks if macro is registered. + * Register a group of middleware. * * @param string $name - * @return bool + * @param array $middleware + * @return \Illuminate\Routing\Router * @static - */ - public static function hasMacro($name) + */ public static function middlewareGroup($name, $middleware) { - return \Illuminate\Http\Request::hasMacro($name); + /** @var \Illuminate\Routing\Router $instance */ + return $instance->middlewareGroup($name, $middleware); } /** - * Flush the existing macros. + * Add a middleware to the beginning of a middleware group. + * + * If the middleware is already in the group, it will not be added again. * - * @return void + * @param string $group + * @param string $middleware + * @return \Illuminate\Routing\Router * @static - */ - public static function flushMacros() + */ public static function prependMiddlewareToGroup($group, $middleware) { - \Illuminate\Http\Request::flushMacros(); + /** @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. * - * @see \Illuminate\Foundation\Providers\FoundationServiceProvider::registerRequestValidation() - * @param array $rules - * @param mixed $params + * @param string $group + * @param string $middleware + * @return \Illuminate\Routing\Router * @static - */ - public static function validate($rules, ...$params) + */ public static function pushMiddlewareToGroup($group, $middleware) { - return \Illuminate\Http\Request::validate($rules, ...$params); + /** @var \Illuminate\Routing\Router $instance */ + return $instance->pushMiddlewareToGroup($group, $middleware); } /** - * + * Remove the given middleware from the specified group. * - * @see \Illuminate\Foundation\Providers\FoundationServiceProvider::registerRequestValidation() - * @param string $errorBag - * @param array $rules - * @param mixed $params + * @param string $group + * @param string $middleware + * @return \Illuminate\Routing\Router * @static - */ - public static function validateWithBag($errorBag, $rules, ...$params) + */ public static function removeMiddlewareFromGroup($group, $middleware) { - return \Illuminate\Http\Request::validateWithBag($errorBag, $rules, ...$params); + /** @var \Illuminate\Routing\Router $instance */ + return $instance->removeMiddlewareFromGroup($group, $middleware); } /** - * + * Flush the router's middleware groups. * - * @see \Illuminate\Foundation\Providers\FoundationServiceProvider::registerRequestSignatureValidation() - * @param mixed $absolute + * @return \Illuminate\Routing\Router * @static - */ - public static function hasValidSignature($absolute = true) + */ public static function flushMiddlewareGroups() { - return \Illuminate\Http\Request::hasValidSignature($absolute); + /** @var \Illuminate\Routing\Router $instance */ + return $instance->flushMiddlewareGroups(); } /** - * + * Add a new route parameter binder. * - * @see \Illuminate\Foundation\Providers\FoundationServiceProvider::registerRequestSignatureValidation() + * @param string $key + * @param string|callable $binder + * @return void * @static - */ - public static function hasValidRelativeSignature() + */ public static function bind($key, $binder) { - return \Illuminate\Http\Request::hasValidRelativeSignature(); + /** @var \Illuminate\Routing\Router $instance */ + $instance->bind($key, $binder); } /** - * + * Register a model binder for a wildcard. * - * @see \Illuminate\Foundation\Providers\FoundationServiceProvider::registerRequestSignatureValidation() - * @param mixed $ignoreQuery - * @param mixed $absolute + * @param string $key + * @param string $class + * @param \Closure|null $callback + * @return void * @static - */ - public static function hasValidSignatureWhileIgnoring($ignoreQuery = [], $absolute = true) + */ public static function model($key, $class, $callback = null) { - return \Illuminate\Http\Request::hasValidSignatureWhileIgnoring($ignoreQuery, $absolute); + /** @var \Illuminate\Routing\Router $instance */ + $instance->model($key, $class, $callback); } - - } - /** - * - * - * @see \Illuminate\Routing\ResponseFactory - */ - class Response { /** - * Create a new response instance. + * Get the binding callback for a given binding. * - * @param mixed $content - * @param int $status - * @param array $headers - * @return \Illuminate\Http\Response + * @param string $key + * @return \Closure|null * @static - */ - public static function make($content = '', $status = 200, $headers = []) + */ public static function getBindingCallback($key) { - /** @var \Illuminate\Routing\ResponseFactory $instance */ - return $instance->make($content, $status, $headers); + /** @var \Illuminate\Routing\Router $instance */ + return $instance->getBindingCallback($key); } /** - * Create a new "no content" response. + * Get the global "where" patterns. * - * @param int $status - * @param array $headers - * @return \Illuminate\Http\Response + * @return array * @static - */ - public static function noContent($status = 204, $headers = []) + */ public static function getPatterns() { - /** @var \Illuminate\Routing\ResponseFactory $instance */ - return $instance->noContent($status, $headers); + /** @var \Illuminate\Routing\Router $instance */ + return $instance->getPatterns(); } /** - * Create a new response for a given view. + * Set a global where pattern on all routes. * - * @param string|array $view - * @param array $data - * @param int $status - * @param array $headers - * @return \Illuminate\Http\Response + * @param string $key + * @param string $pattern + * @return void * @static - */ - public static function view($view, $data = [], $status = 200, $headers = []) + */ public static function pattern($key, $pattern) { - /** @var \Illuminate\Routing\ResponseFactory $instance */ - return $instance->view($view, $data, $status, $headers); + /** @var \Illuminate\Routing\Router $instance */ + $instance->pattern($key, $pattern); } /** - * Create a new JSON response instance. + * Set a group of global where patterns on all routes. * - * @param mixed $data - * @param int $status - * @param array $headers - * @param int $options - * @return \Illuminate\Http\JsonResponse + * @param array $patterns + * @return void * @static - */ - public static function json($data = [], $status = 200, $headers = [], $options = 0) + */ public static function patterns($patterns) { - /** @var \Illuminate\Routing\ResponseFactory $instance */ - return $instance->json($data, $status, $headers, $options); + /** @var \Illuminate\Routing\Router $instance */ + $instance->patterns($patterns); } /** - * Create a new JSONP response instance. + * Determine if the router currently has a group stack. * - * @param string $callback - * @param mixed $data - * @param int $status - * @param array $headers - * @param int $options - * @return \Illuminate\Http\JsonResponse + * @return bool * @static - */ - public static function jsonp($callback, $data = [], $status = 200, $headers = [], $options = 0) + */ public static function hasGroupStack() { - /** @var \Illuminate\Routing\ResponseFactory $instance */ - return $instance->jsonp($callback, $data, $status, $headers, $options); + /** @var \Illuminate\Routing\Router $instance */ + return $instance->hasGroupStack(); } /** - * Create a new streamed response instance. + * Get the current group stack for the router. * - * @param callable $callback - * @param int $status - * @param array $headers - * @return \Symfony\Component\HttpFoundation\StreamedResponse + * @return array * @static - */ - public static function stream($callback, $status = 200, $headers = []) + */ public static function getGroupStack() { - /** @var \Illuminate\Routing\ResponseFactory $instance */ - return $instance->stream($callback, $status, $headers); + /** @var \Illuminate\Routing\Router $instance */ + return $instance->getGroupStack(); } /** - * Create a new streamed response instance as a file download. + * Get a route parameter for the current route. * - * @param callable $callback - * @param string|null $name - * @param array $headers - * @param string|null $disposition - * @return \Symfony\Component\HttpFoundation\StreamedResponse + * @param string $key + * @param string|null $default + * @return mixed * @static - */ - public static function streamDownload($callback, $name = null, $headers = [], $disposition = 'attachment') + */ public static function input($key, $default = null) { - /** @var \Illuminate\Routing\ResponseFactory $instance */ - return $instance->streamDownload($callback, $name, $headers, $disposition); + /** @var \Illuminate\Routing\Router $instance */ + return $instance->input($key, $default); } /** - * Create a new file download response. + * Get the request currently being dispatched. * - * @param \SplFileInfo|string $file - * @param string|null $name - * @param array $headers - * @param string|null $disposition - * @return \Symfony\Component\HttpFoundation\BinaryFileResponse + * @return \Illuminate\Http\Request * @static - */ - public static function download($file, $name = null, $headers = [], $disposition = 'attachment') + */ public static function getCurrentRequest() { - /** @var \Illuminate\Routing\ResponseFactory $instance */ - return $instance->download($file, $name, $headers, $disposition); + /** @var \Illuminate\Routing\Router $instance */ + return $instance->getCurrentRequest(); } /** - * Return the raw contents of a binary file. + * Get the currently dispatched route instance. * - * @param \SplFileInfo|string $file - * @param array $headers - * @return \Symfony\Component\HttpFoundation\BinaryFileResponse + * @return \Illuminate\Routing\Route|null * @static - */ - public static function file($file, $headers = []) + */ public static function getCurrentRoute() { - /** @var \Illuminate\Routing\ResponseFactory $instance */ - return $instance->file($file, $headers); + /** @var \Illuminate\Routing\Router $instance */ + return $instance->getCurrentRoute(); } /** - * Create a new redirect response to the given path. + * Get the currently dispatched route instance. * - * @param string $path - * @param int $status - * @param array $headers - * @param bool|null $secure - * @return \Illuminate\Http\RedirectResponse + * @return \Illuminate\Routing\Route|null * @static - */ - public static function redirectTo($path, $status = 302, $headers = [], $secure = null) + */ public static function current() { - /** @var \Illuminate\Routing\ResponseFactory $instance */ - return $instance->redirectTo($path, $status, $headers, $secure); + /** @var \Illuminate\Routing\Router $instance */ + return $instance->current(); } /** - * Create a new redirect response to a named route. + * Check if a route with the given name exists. * - * @param string $route - * @param mixed $parameters - * @param int $status - * @param array $headers - * @return \Illuminate\Http\RedirectResponse + * @param string|array $name + * @return bool * @static - */ - public static function redirectToRoute($route, $parameters = [], $status = 302, $headers = []) + */ public static function has($name) { - /** @var \Illuminate\Routing\ResponseFactory $instance */ - return $instance->redirectToRoute($route, $parameters, $status, $headers); + /** @var \Illuminate\Routing\Router $instance */ + return $instance->has($name); } /** - * Create a new redirect response to a controller action. + * Get the current route name. * - * @param string $action - * @param mixed $parameters - * @param int $status - * @param array $headers - * @return \Illuminate\Http\RedirectResponse + * @return string|null * @static - */ - public static function redirectToAction($action, $parameters = [], $status = 302, $headers = []) + */ public static function currentRouteName() { - /** @var \Illuminate\Routing\ResponseFactory $instance */ - return $instance->redirectToAction($action, $parameters, $status, $headers); + /** @var \Illuminate\Routing\Router $instance */ + return $instance->currentRouteName(); } /** - * Create a new redirect response, while putting the current URL in the session. + * Alias for the "currentRouteNamed" method. * - * @param string $path - * @param int $status - * @param array $headers - * @param bool|null $secure - * @return \Illuminate\Http\RedirectResponse + * @param mixed $patterns + * @return bool * @static - */ - public static function redirectGuest($path, $status = 302, $headers = [], $secure = null) + */ public static function is(...$patterns) { - /** @var \Illuminate\Routing\ResponseFactory $instance */ - return $instance->redirectGuest($path, $status, $headers, $secure); + /** @var \Illuminate\Routing\Router $instance */ + return $instance->is(...$patterns); } /** - * Create a new redirect response to the previously intended location. + * Determine if the current route matches a pattern. * - * @param string $default - * @param int $status - * @param array $headers - * @param bool|null $secure - * @return \Illuminate\Http\RedirectResponse + * @param mixed $patterns + * @return bool * @static - */ - public static function redirectToIntended($default = '/', $status = 302, $headers = [], $secure = null) + */ public static function currentRouteNamed(...$patterns) { - /** @var \Illuminate\Routing\ResponseFactory $instance */ - return $instance->redirectToIntended($default, $status, $headers, $secure); + /** @var \Illuminate\Routing\Router $instance */ + return $instance->currentRouteNamed(...$patterns); } /** - * Register a custom macro. + * Get the current route action. * - * @param string $name - * @param object|callable $macro - * @return void + * @return string|null * @static - */ - public static function macro($name, $macro) + */ public static function currentRouteAction() { - \Illuminate\Routing\ResponseFactory::macro($name, $macro); + /** @var \Illuminate\Routing\Router $instance */ + return $instance->currentRouteAction(); } /** - * Mix another object into the class. + * Alias for the "currentRouteUses" method. * - * @param object $mixin - * @param bool $replace - * @return void - * @throws \ReflectionException + * @param array $patterns + * @return bool * @static - */ - public static function mixin($mixin, $replace = true) + */ public static function uses(...$patterns) { - \Illuminate\Routing\ResponseFactory::mixin($mixin, $replace); + /** @var \Illuminate\Routing\Router $instance */ + return $instance->uses(...$patterns); } /** - * Checks if macro is registered. + * Determine if the current route action matches a given action. * - * @param string $name + * @param string $action * @return bool * @static - */ - public static function hasMacro($name) + */ public static function currentRouteUses($action) { - return \Illuminate\Routing\ResponseFactory::hasMacro($name); + /** @var \Illuminate\Routing\Router $instance */ + return $instance->currentRouteUses($action); } /** - * Flush the existing macros. + * Set the unmapped global resource parameters to singular. * + * @param bool $singular * @return void * @static - */ - public static function flushMacros() + */ public static function singularResourceParameters($singular = true) { - \Illuminate\Routing\ResponseFactory::flushMacros(); + /** @var \Illuminate\Routing\Router $instance */ + $instance->singularResourceParameters($singular); } - - } - /** - * - * - * @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. + * Set the global resource parameter mapping. * - * @param string $uri - * @param array|string|callable|null $action - * @return \Illuminate\Routing\Route + * @param array $parameters + * @return void * @static - */ - public static function get($uri, $action = null) + */ public static function resourceParameters($parameters = []) { /** @var \Illuminate\Routing\Router $instance */ - return $instance->get($uri, $action); + $instance->resourceParameters($parameters); } /** - * Register a new POST route with the router. + * Get or set the verbs used in the resource URIs. * - * @param string $uri - * @param array|string|callable|null $action - * @return \Illuminate\Routing\Route + * @param array $verbs + * @return array|null * @static - */ - public static function post($uri, $action = null) + */ public static function resourceVerbs($verbs = []) { /** @var \Illuminate\Routing\Router $instance */ - return $instance->post($uri, $action); + return $instance->resourceVerbs($verbs); } /** - * Register a new PUT route with the router. + * Get the underlying route collection. * - * @param string $uri - * @param array|string|callable|null $action - * @return \Illuminate\Routing\Route + * @return \Illuminate\Routing\RouteCollectionInterface * @static - */ - public static function put($uri, $action = null) + */ public static function getRoutes() { /** @var \Illuminate\Routing\Router $instance */ - return $instance->put($uri, $action); + return $instance->getRoutes(); } /** - * Register a new PATCH route with the router. + * Set the route collection instance. * - * @param string $uri - * @param array|string|callable|null $action - * @return \Illuminate\Routing\Route + * @param \Illuminate\Routing\RouteCollection $routes + * @return void * @static - */ - public static function patch($uri, $action = null) + */ public static function setRoutes($routes) { /** @var \Illuminate\Routing\Router $instance */ - return $instance->patch($uri, $action); + $instance->setRoutes($routes); } /** - * Register a new DELETE route with the router. + * Set the compiled route collection instance. * - * @param string $uri - * @param array|string|callable|null $action - * @return \Illuminate\Routing\Route + * @param array $routes + * @return void * @static - */ - public static function delete($uri, $action = null) + */ public static function setCompiledRoutes($routes) { /** @var \Illuminate\Routing\Router $instance */ - return $instance->delete($uri, $action); + $instance->setCompiledRoutes($routes); } /** - * Register a new OPTIONS route with the router. + * Remove any duplicate middleware from the given array. * - * @param string $uri - * @param array|string|callable|null $action - * @return \Illuminate\Routing\Route + * @param array $middleware + * @return array * @static - */ - public static function options($uri, $action = null) + */ public static function uniqueMiddleware($middleware) { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->options($uri, $action); + return \Illuminate\Routing\Router::uniqueMiddleware($middleware); } /** - * Register a new route responding to all verbs. + * Set the container instance used by the router. * - * @param string $uri - * @param array|string|callable|null $action - * @return \Illuminate\Routing\Route + * @param \Illuminate\Container\Container $container + * @return \Illuminate\Routing\Router * @static - */ - public static function any($uri, $action = null) + */ public static function setContainer($container) { /** @var \Illuminate\Routing\Router $instance */ - return $instance->any($uri, $action); + return $instance->setContainer($container); } /** - * Register a new Fallback route with the router. + * Register a custom macro. * - * @param array|string|callable|null $action - * @return \Illuminate\Routing\Route + * @param string $name + * @param object|callable $macro + * @return void * @static - */ - public static function fallback($action) + */ public static function macro($name, $macro) { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->fallback($action); + \Illuminate\Routing\Router::macro($name, $macro); } /** - * Create a redirect from one URI to another. + * Mix another object into the class. * - * @param string $uri - * @param string $destination - * @param int $status - * @return \Illuminate\Routing\Route + * @param object $mixin + * @param bool $replace + * @return void + * @throws \ReflectionException * @static - */ - public static function redirect($uri, $destination, $status = 302) + */ public static function mixin($mixin, $replace = true) { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->redirect($uri, $destination, $status); + \Illuminate\Routing\Router::mixin($mixin, $replace); } /** - * Create a permanent redirect from one URI to another. + * Checks if macro is registered. * - * @param string $uri - * @param string $destination - * @return \Illuminate\Routing\Route + * @param string $name + * @return bool * @static - */ - public static function permanentRedirect($uri, $destination) + */ public static function hasMacro($name) { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->permanentRedirect($uri, $destination); + return \Illuminate\Routing\Router::hasMacro($name); } /** - * Register a new route that returns a view. + * Flush the existing macros. * - * @param string $uri - * @param string $view - * @param array $data - * @param int|array $status - * @param array $headers - * @return \Illuminate\Routing\Route + * @return void * @static - */ - public static function view($uri, $view, $data = [], $status = 200, $headers = []) + */ public static function flushMacros() { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->view($uri, $view, $data, $status, $headers); + \Illuminate\Routing\Router::flushMacros(); } /** - * Register a new route with the given verbs. + * Dynamically handle calls to the class. * - * @param array|string $methods - * @param string $uri - * @param array|string|callable|null $action - * @return \Illuminate\Routing\Route + * @param string $method + * @param array $parameters + * @return mixed + * @throws \BadMethodCallException * @static - */ - public static function match($methods, $uri, $action = null) + */ public static function macroCall($method, $parameters) { /** @var \Illuminate\Routing\Router $instance */ - return $instance->match($methods, $uri, $action); + return $instance->macroCall($method, $parameters); } + } + /** + * + * + * @see \Illuminate\Console\Scheduling\Schedule + */ class Schedule { /** - * Register an array of resource controllers. + * Add a new callback event to the schedule. * - * @param array $resources - * @param array $options - * @return void + * @param string|callable $callback + * @param array $parameters + * @return \Illuminate\Console\Scheduling\CallbackEvent * @static - */ - public static function resources($resources, $options = []) + */ public static function call($callback, $parameters = []) { - /** @var \Illuminate\Routing\Router $instance */ - $instance->resources($resources, $options); + /** @var \Illuminate\Console\Scheduling\Schedule $instance */ + return $instance->call($callback, $parameters); } /** - * Route a resource to a controller. + * Add a new Artisan command event to the schedule. * - * @param string $name - * @param string $controller - * @param array $options - * @return \Illuminate\Routing\PendingResourceRegistration + * @param string $command + * @param array $parameters + * @return \Illuminate\Console\Scheduling\Event * @static - */ - public static function resource($name, $controller, $options = []) + */ public static function command($command, $parameters = []) { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->resource($name, $controller, $options); + /** @var \Illuminate\Console\Scheduling\Schedule $instance */ + return $instance->command($command, $parameters); } /** - * Register an array of API resource controllers. + * Add a new job callback event to the schedule. * - * @param array $resources - * @param array $options - * @return void + * @param object|string $job + * @param string|null $queue + * @param string|null $connection + * @return \Illuminate\Console\Scheduling\CallbackEvent * @static - */ - public static function apiResources($resources, $options = []) + */ public static function job($job, $queue = null, $connection = null) { - /** @var \Illuminate\Routing\Router $instance */ - $instance->apiResources($resources, $options); + /** @var \Illuminate\Console\Scheduling\Schedule $instance */ + return $instance->job($job, $queue, $connection); } /** - * Route an API resource to a controller. + * Add a new command event to the schedule. * - * @param string $name - * @param string $controller - * @param array $options - * @return \Illuminate\Routing\PendingResourceRegistration + * @param string $command + * @param array $parameters + * @return \Illuminate\Console\Scheduling\Event * @static - */ - public static function apiResource($name, $controller, $options = []) + */ public static function exec($command, $parameters = []) { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->apiResource($name, $controller, $options); + /** @var \Illuminate\Console\Scheduling\Schedule $instance */ + return $instance->exec($command, $parameters); } /** - * Register an array of singleton resource controllers. + * Compile array input for a command. * - * @param array $singletons - * @param array $options - * @return void + * @param string|int $key + * @param array $value + * @return string * @static - */ - public static function singletons($singletons, $options = []) + */ public static function compileArrayInput($key, $value) { - /** @var \Illuminate\Routing\Router $instance */ - $instance->singletons($singletons, $options); + /** @var \Illuminate\Console\Scheduling\Schedule $instance */ + return $instance->compileArrayInput($key, $value); } /** - * Route a singleton resource to a controller. + * Determine if the server is allowed to run this event. * - * @param string $name - * @param string $controller - * @param array $options - * @return \Illuminate\Routing\PendingSingletonResourceRegistration + * @param \Illuminate\Console\Scheduling\Event $event + * @param \DateTimeInterface $time + * @return bool * @static - */ - public static function singleton($name, $controller, $options = []) + */ public static function serverShouldRun($event, $time) { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->singleton($name, $controller, $options); + /** @var \Illuminate\Console\Scheduling\Schedule $instance */ + return $instance->serverShouldRun($event, $time); } /** - * Register an array of API singleton resource controllers. + * Get all of the events on the schedule that are due. * - * @param array $singletons - * @param array $options - * @return void + * @param \Illuminate\Contracts\Foundation\Application $app + * @return \Illuminate\Support\Collection * @static - */ - public static function apiSingletons($singletons, $options = []) + */ public static function dueEvents($app) { - /** @var \Illuminate\Routing\Router $instance */ - $instance->apiSingletons($singletons, $options); + /** @var \Illuminate\Console\Scheduling\Schedule $instance */ + return $instance->dueEvents($app); } /** - * Route an API singleton resource to a controller. + * Get all of the events on the schedule. * - * @param string $name - * @param string $controller - * @param array $options - * @return \Illuminate\Routing\PendingSingletonResourceRegistration + * @return \Illuminate\Console\Scheduling\Event[] * @static - */ - public static function apiSingleton($name, $controller, $options = []) + */ public static function events() { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->apiSingleton($name, $controller, $options); + /** @var \Illuminate\Console\Scheduling\Schedule $instance */ + return $instance->events(); } /** - * Create a route group with shared attributes. + * Specify the cache store that should be used to store mutexes. * - * @param array $attributes - * @param \Closure|array|string $routes - * @return \Illuminate\Routing\Router + * @param string $store + * @return \Illuminate\Console\Scheduling\Schedule * @static - */ - public static function group($attributes, $routes) + */ public static function useCache($store) { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->group($attributes, $routes); + /** @var \Illuminate\Console\Scheduling\Schedule $instance */ + return $instance->useCache($store); } /** - * Merge the given array with the last group stack. + * Register a custom macro. * - * @param array $new - * @param bool $prependExistingPrefix - * @return array + * @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 mergeWithLastGroup($new, $prependExistingPrefix = true) + */ public static function mixin($mixin, $replace = true) { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->mergeWithLastGroup($new, $prependExistingPrefix); + \Illuminate\Console\Scheduling\Schedule::mixin($mixin, $replace); } /** - * Get the prefix from the last group on the stack. + * Checks if macro is registered. * - * @return string + * @param string $name + * @return bool * @static - */ - public static function getLastGroupPrefix() + */ public static function hasMacro($name) { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->getLastGroupPrefix(); + return \Illuminate\Console\Scheduling\Schedule::hasMacro($name); } /** - * Add a route to the underlying route collection. + * Flush the existing macros. * - * @param array|string $methods - * @param string $uri - * @param array|string|callable|null $action - * @return \Illuminate\Routing\Route + * @return void * @static - */ - public static function addRoute($methods, $uri, $action) + */ public static function flushMacros() { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->addRoute($methods, $uri, $action); + \Illuminate\Console\Scheduling\Schedule::flushMacros(); } + } + /** + * + * + * @see \Illuminate\Database\Schema\Builder + */ class Schema { /** - * Create a new Route object. + * Create a database in the schema. * - * @param array|string $methods - * @param string $uri - * @param mixed $action - * @return \Illuminate\Routing\Route + * @param string $name + * @return bool * @static - */ - public static function newRoute($methods, $uri, $action) + */ public static function createDatabase($name) { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->newRoute($methods, $uri, $action); + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + return $instance->createDatabase($name); } /** - * Return the response returned by the given route. + * Drop a database from the schema if the database exists. * * @param string $name - * @return \Symfony\Component\HttpFoundation\Response + * @return bool * @static - */ - public static function respondWithRoute($name) + */ public static function dropDatabaseIfExists($name) { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->respondWithRoute($name); + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + return $instance->dropDatabaseIfExists($name); } /** - * Dispatch the request to the application. + * Get the tables for the database. * - * @param \Illuminate\Http\Request $request - * @return \Symfony\Component\HttpFoundation\Response + * @return array * @static - */ - public static function dispatch($request) + */ public static function getTables() { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->dispatch($request); + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + return $instance->getTables(); } /** - * Dispatch the request to a route and return the response. + * Get the views for the database. * - * @param \Illuminate\Http\Request $request - * @return \Symfony\Component\HttpFoundation\Response + * @return array * @static - */ - public static function dispatchToRoute($request) + */ public static function getViews() { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->dispatchToRoute($request); + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + return $instance->getViews(); } /** - * Gather the middleware for the given route with resolved class names. + * Get the columns for a given table. * - * @param \Illuminate\Routing\Route $route + * @param string $table * @return array * @static - */ - public static function gatherRouteMiddleware($route) + */ public static function getColumns($table) { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->gatherRouteMiddleware($route); + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + return $instance->getColumns($table); } /** - * Resolve a flat array of middleware classes from the provided array. + * Get the indexes for a given table. * - * @param array $middleware - * @param array $excluded + * @param string $table * @return array * @static - */ - public static function resolveMiddleware($middleware, $excluded = []) + */ public static function getIndexes($table) { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->resolveMiddleware($middleware, $excluded); + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + return $instance->getIndexes($table); } /** - * Create a response instance from the given value. + * Get the foreign keys for a given table. * - * @param \Symfony\Component\HttpFoundation\Request $request - * @param mixed $response - * @return \Symfony\Component\HttpFoundation\Response + * @param string $table + * @return array * @static - */ - public static function prepareResponse($request, $response) + */ public static function getForeignKeys($table) { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->prepareResponse($request, $response); + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + return $instance->getForeignKeys($table); } /** - * Static version of prepareResponse. + * Drop all tables from the database. * - * @param \Symfony\Component\HttpFoundation\Request $request - * @param mixed $response - * @return \Symfony\Component\HttpFoundation\Response + * @return void * @static - */ - public static function toResponse($request, $response) + */ public static function dropAllTables() { - return \Illuminate\Routing\Router::toResponse($request, $response); + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + $instance->dropAllTables(); } /** - * Substitute the route bindings onto the route. + * Drop all views from the database. * - * @param \Illuminate\Routing\Route $route - * @return \Illuminate\Routing\Route - * @throws \Illuminate\Database\Eloquent\ModelNotFoundException<\Illuminate\Database\Eloquent\Model> - * @throws \Illuminate\Routing\Exceptions\BackedEnumCaseNotFoundException + * @return void * @static - */ - public static function substituteBindings($route) + */ public static function dropAllViews() { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->substituteBindings($route); + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + $instance->dropAllViews(); } /** - * Substitute the implicit route bindings for the given route. + * Set the default string length for migrations. * - * @param \Illuminate\Routing\Route $route + * @param int $length * @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); + */ public static function defaultStringLength($length) + { //Method inherited from \Illuminate\Database\Schema\Builder + \Illuminate\Database\Schema\MySqlBuilder::defaultStringLength($length); } /** - * Register a route matched event listener. + * Set the default morph key type for migrations. * - * @param string|callable $callback + * @param string $type * @return void + * @throws \InvalidArgumentException * @static - */ - public static function matched($callback) - { - /** @var \Illuminate\Routing\Router $instance */ - $instance->matched($callback); + */ public static function defaultMorphKeyType($type) + { //Method inherited from \Illuminate\Database\Schema\Builder + \Illuminate\Database\Schema\MySqlBuilder::defaultMorphKeyType($type); } /** - * Get all of the defined middleware short-hand names. + * Set the default morph key type for migrations to UUIDs. * - * @return array + * @return void * @static - */ - public static function getMiddleware() - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->getMiddleware(); + */ public static function morphUsingUuids() + { //Method inherited from \Illuminate\Database\Schema\Builder + \Illuminate\Database\Schema\MySqlBuilder::morphUsingUuids(); } /** - * Register a short-hand name for a middleware. + * Set the default morph key type for migrations to ULIDs. * - * @param string $name - * @param string $class - * @return \Illuminate\Routing\Router + * @return void * @static - */ - public static function aliasMiddleware($name, $class) - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->aliasMiddleware($name, $class); + */ public static function morphUsingUlids() + { //Method inherited from \Illuminate\Database\Schema\Builder + \Illuminate\Database\Schema\MySqlBuilder::morphUsingUlids(); } /** - * Check if a middlewareGroup with the given name exists. + * Determine if the given table exists. * - * @param string $name + * @param string $table * @return bool * @static - */ - public static function hasMiddlewareGroup($name) - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->hasMiddlewareGroup($name); + */ public static function hasTable($table) + { //Method inherited from \Illuminate\Database\Schema\Builder + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + return $instance->hasTable($table); } /** - * Get all of the defined middleware groups. + * Determine if the given view exists. * - * @return array + * @param string $view + * @return bool * @static - */ - public static function getMiddlewareGroups() - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->getMiddlewareGroups(); + */ public static function hasView($view) + { //Method inherited from \Illuminate\Database\Schema\Builder + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + return $instance->hasView($view); } /** - * Register a group of middleware. + * Get the names of the tables that belong to the database. * - * @param string $name - * @param array $middleware - * @return \Illuminate\Routing\Router + * @return array * @static - */ - public static function middlewareGroup($name, $middleware) - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->middlewareGroup($name, $middleware); + */ public static function getTableListing() + { //Method inherited from \Illuminate\Database\Schema\Builder + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + return $instance->getTableListing(); } /** - * Add a middleware to the beginning of a middleware group. - * - * If the middleware is already in the group, it will not be added again. + * Get the user-defined types that belong to the database. * - * @param string $group - * @param string $middleware - * @return \Illuminate\Routing\Router + * @return array * @static - */ - public static function prependMiddlewareToGroup($group, $middleware) - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->prependMiddlewareToGroup($group, $middleware); + */ public static function getTypes() + { //Method inherited from \Illuminate\Database\Schema\Builder + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + return $instance->getTypes(); } /** - * Add a middleware to the end of a middleware group. - * - * If the middleware is already in the group, it will not be added again. + * Determine if the given table has a given column. * - * @param string $group - * @param string $middleware - * @return \Illuminate\Routing\Router + * @param string $table + * @param string $column + * @return bool * @static - */ - public static function pushMiddlewareToGroup($group, $middleware) - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->pushMiddlewareToGroup($group, $middleware); + */ public static function hasColumn($table, $column) + { //Method inherited from \Illuminate\Database\Schema\Builder + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + return $instance->hasColumn($table, $column); } /** - * Remove the given middleware from the specified group. + * Determine if the given table has given columns. * - * @param string $group - * @param string $middleware - * @return \Illuminate\Routing\Router + * @param string $table + * @param array $columns + * @return bool * @static - */ - public static function removeMiddlewareFromGroup($group, $middleware) - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->removeMiddlewareFromGroup($group, $middleware); + */ public static function hasColumns($table, $columns) + { //Method inherited from \Illuminate\Database\Schema\Builder + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + return $instance->hasColumns($table, $columns); } /** - * Flush the router's middleware groups. + * Execute a table builder callback if the given table has a given column. * - * @return \Illuminate\Routing\Router + * @param string $table + * @param string $column + * @param \Closure $callback + * @return void * @static - */ - public static function flushMiddlewareGroups() - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->flushMiddlewareGroups(); + */ 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); } /** - * Add a new route parameter binder. + * Execute a table builder callback if the given table doesn't have a given column. * - * @param string $key - * @param string|callable $binder + * @param string $table + * @param string $column + * @param \Closure $callback * @return void * @static - */ - public static function bind($key, $binder) - { - /** @var \Illuminate\Routing\Router $instance */ - $instance->bind($key, $binder); + */ 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); } /** - * Register a model binder for a wildcard. + * Get the data type for the given column name. * - * @param string $key - * @param string $class - * @param \Closure|null $callback - * @return void + * @param string $table + * @param string $column + * @param bool $fullDefinition + * @return string * @static - */ - public static function model($key, $class, $callback = null) - { - /** @var \Illuminate\Routing\Router $instance */ - $instance->model($key, $class, $callback); + */ 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 binding callback for a given binding. + * Get the column listing for a given table. * - * @param string $key - * @return \Closure|null + * @param string $table + * @return array * @static - */ - public static function getBindingCallback($key) - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->getBindingCallback($key); + */ public static function getColumnListing($table) + { //Method inherited from \Illuminate\Database\Schema\Builder + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + return $instance->getColumnListing($table); } /** - * Get the global "where" patterns. + * Get the names of the indexes for a given table. * + * @param string $table * @return array * @static - */ - public static function getPatterns() - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->getPatterns(); + */ public static function getIndexListing($table) + { //Method inherited from \Illuminate\Database\Schema\Builder + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + return $instance->getIndexListing($table); } /** - * Set a global where pattern on all routes. + * Determine if the given table has a given index. * - * @param string $key - * @param string $pattern - * @return void + * @param string $table + * @param string|array $index + * @param string|null $type + * @return bool * @static - */ - public static function pattern($key, $pattern) - { - /** @var \Illuminate\Routing\Router $instance */ - $instance->pattern($key, $pattern); + */ 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); } /** - * Set a group of global where patterns on all routes. + * Modify a table on the schema. * - * @param array $patterns + * @param string $table + * @param \Closure $callback * @return void * @static - */ - public static function patterns($patterns) - { - /** @var \Illuminate\Routing\Router $instance */ - $instance->patterns($patterns); + */ public static function table($table, $callback) + { //Method inherited from \Illuminate\Database\Schema\Builder + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + $instance->table($table, $callback); } /** - * Determine if the router currently has a group stack. + * Create a new table on the schema. * - * @return bool + * @param string $table + * @param \Closure $callback + * @return void * @static - */ - public static function hasGroupStack() - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->hasGroupStack(); + */ public static function create($table, $callback) + { //Method inherited from \Illuminate\Database\Schema\Builder + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + $instance->create($table, $callback); } /** - * Get the current group stack for the router. + * Drop a table from the schema. * - * @return array + * @param string $table + * @return void * @static - */ - public static function getGroupStack() - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->getGroupStack(); + */ public static function drop($table) + { //Method inherited from \Illuminate\Database\Schema\Builder + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + $instance->drop($table); } /** - * Get a route parameter for the current route. + * Drop a table from the schema if it exists. * - * @param string $key - * @param string|null $default - * @return mixed + * @param string $table + * @return void * @static - */ - public static function input($key, $default = null) - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->input($key, $default); + */ public static function dropIfExists($table) + { //Method inherited from \Illuminate\Database\Schema\Builder + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + $instance->dropIfExists($table); } /** - * Get the request currently being dispatched. + * Drop columns from a table schema. * - * @return \Illuminate\Http\Request + * @param string $table + * @param string|array $columns + * @return void * @static - */ - public static function getCurrentRequest() - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->getCurrentRequest(); + */ public static function dropColumns($table, $columns) + { //Method inherited from \Illuminate\Database\Schema\Builder + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + $instance->dropColumns($table, $columns); } /** - * Get the currently dispatched route instance. + * Drop all types from the database. * - * @return \Illuminate\Routing\Route|null + * @return void + * @throws \LogicException * @static - */ - public static function getCurrentRoute() - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->getCurrentRoute(); + */ public static function dropAllTypes() + { //Method inherited from \Illuminate\Database\Schema\Builder + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + $instance->dropAllTypes(); } /** - * Get the currently dispatched route instance. + * Rename a table on the schema. * - * @return \Illuminate\Routing\Route|null + * @param string $from + * @param string $to + * @return void * @static - */ - public static function current() - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->current(); + */ public static function rename($from, $to) + { //Method inherited from \Illuminate\Database\Schema\Builder + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + $instance->rename($from, $to); } /** - * Check if a route with the given name exists. + * Enable foreign key constraints. * - * @param string|array $name * @return bool * @static - */ - public static function has($name) - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->has($name); + */ public static function enableForeignKeyConstraints() + { //Method inherited from \Illuminate\Database\Schema\Builder + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + return $instance->enableForeignKeyConstraints(); } /** - * Get the current route name. + * Disable foreign key constraints. * - * @return string|null + * @return bool * @static - */ - public static function currentRouteName() - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->currentRouteName(); + */ public static function disableForeignKeyConstraints() + { //Method inherited from \Illuminate\Database\Schema\Builder + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + return $instance->disableForeignKeyConstraints(); } /** - * Alias for the "currentRouteNamed" method. + * Disable foreign key constraints during the execution of a callback. * - * @param mixed $patterns - * @return bool + * @param \Closure $callback + * @return mixed * @static - */ - public static function is(...$patterns) - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->is(...$patterns); + */ public static function withoutForeignKeyConstraints($callback) + { //Method inherited from \Illuminate\Database\Schema\Builder + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + return $instance->withoutForeignKeyConstraints($callback); } /** - * Determine if the current route matches a pattern. + * Get the database connection instance. * - * @param mixed $patterns - * @return bool + * @return \Illuminate\Database\Connection * @static - */ - public static function currentRouteNamed(...$patterns) - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->currentRouteNamed(...$patterns); + */ public static function getConnection() + { //Method inherited from \Illuminate\Database\Schema\Builder + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + return $instance->getConnection(); } /** - * Get the current route action. + * Set the database connection instance. * - * @return string|null + * @param \Illuminate\Database\Connection $connection + * @return \Illuminate\Database\Schema\MySqlBuilder * @static - */ - public static function currentRouteAction() - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->currentRouteAction(); + */ public static function setConnection($connection) + { //Method inherited from \Illuminate\Database\Schema\Builder + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + return $instance->setConnection($connection); } /** - * Alias for the "currentRouteUses" method. + * Set the Schema Blueprint resolver callback. * - * @param array $patterns - * @return bool + * @param \Closure $resolver + * @return void * @static - */ - public static function uses(...$patterns) - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->uses(...$patterns); + */ public static function blueprintResolver($resolver) + { //Method inherited from \Illuminate\Database\Schema\Builder + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + $instance->blueprintResolver($resolver); } /** - * Determine if the current route action matches a given action. + * Register a custom macro. * - * @param string $action - * @return bool + * @param string $name + * @param object|callable $macro + * @return void * @static - */ - public static function currentRouteUses($action) - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->currentRouteUses($action); + */ public static function macro($name, $macro) + { //Method inherited from \Illuminate\Database\Schema\Builder + \Illuminate\Database\Schema\MySqlBuilder::macro($name, $macro); } /** - * Set the unmapped global resource parameters to singular. + * Mix another object into the class. * - * @param bool $singular + * @param object $mixin + * @param bool $replace * @return void + * @throws \ReflectionException * @static - */ - public static function singularResourceParameters($singular = true) - { - /** @var \Illuminate\Routing\Router $instance */ - $instance->singularResourceParameters($singular); + */ public static function mixin($mixin, $replace = true) + { //Method inherited from \Illuminate\Database\Schema\Builder + \Illuminate\Database\Schema\MySqlBuilder::mixin($mixin, $replace); } /** - * Set the global resource parameter mapping. + * 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. * - * @param array $parameters * @return void * @static - */ - public static function resourceParameters($parameters = []) - { - /** @var \Illuminate\Routing\Router $instance */ - $instance->resourceParameters($parameters); + */ public static function flushMacros() + { //Method inherited from \Illuminate\Database\Schema\Builder + \Illuminate\Database\Schema\MySqlBuilder::flushMacros(); } + } + /** + * + * + * @see \Illuminate\Session\SessionManager + */ class Session { /** - * Get or set the verbs used in the resource URIs. + * Determine if requests for the same session should wait for each to finish before executing. * - * @param array $verbs - * @return array|null + * @return bool * @static - */ - public static function resourceVerbs($verbs = []) + */ public static function shouldBlock() { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->resourceVerbs($verbs); + /** @var \Illuminate\Session\SessionManager $instance */ + return $instance->shouldBlock(); } /** - * Get the underlying route collection. + * Get the name of the cache store / driver that should be used to acquire session locks. * - * @return \Illuminate\Routing\RouteCollectionInterface + * @return string|null * @static - */ - public static function getRoutes() + */ public static function blockDriver() { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->getRoutes(); + /** @var \Illuminate\Session\SessionManager $instance */ + return $instance->blockDriver(); } /** - * Set the route collection instance. + * Get the maximum number of seconds the session lock should be held for. * - * @param \Illuminate\Routing\RouteCollection $routes - * @return void + * @return int * @static - */ - public static function setRoutes($routes) + */ public static function defaultRouteBlockLockSeconds() { - /** @var \Illuminate\Routing\Router $instance */ - $instance->setRoutes($routes); + /** @var \Illuminate\Session\SessionManager $instance */ + return $instance->defaultRouteBlockLockSeconds(); } /** - * Set the compiled route collection instance. + * Get the maximum number of seconds to wait while attempting to acquire a route block session lock. * - * @param array $routes - * @return void + * @return int * @static - */ - public static function setCompiledRoutes($routes) + */ public static function defaultRouteBlockWaitSeconds() { - /** @var \Illuminate\Routing\Router $instance */ - $instance->setCompiledRoutes($routes); + /** @var \Illuminate\Session\SessionManager $instance */ + return $instance->defaultRouteBlockWaitSeconds(); } /** - * Remove any duplicate middleware from the given array. + * Get the session configuration. * - * @param array $middleware * @return array * @static - */ - public static function uniqueMiddleware($middleware) + */ public static function getSessionConfig() { - return \Illuminate\Routing\Router::uniqueMiddleware($middleware); + /** @var \Illuminate\Session\SessionManager $instance */ + return $instance->getSessionConfig(); } /** - * Set the container instance used by the router. + * Get the default session driver name. * - * @param \Illuminate\Container\Container $container - * @return \Illuminate\Routing\Router + * @return string * @static - */ - public static function setContainer($container) + */ public static function getDefaultDriver() { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->setContainer($container); + /** @var \Illuminate\Session\SessionManager $instance */ + return $instance->getDefaultDriver(); } /** - * Register a custom macro. + * Set the default session driver name. * * @param string $name - * @param object|callable $macro * @return void * @static - */ - public static function macro($name, $macro) + */ public static function setDefaultDriver($name) { - \Illuminate\Routing\Router::macro($name, $macro); + /** @var \Illuminate\Session\SessionManager $instance */ + $instance->setDefaultDriver($name); } /** - * Mix another object into the class. + * Get a driver instance. * - * @param object $mixin - * @param bool $replace - * @return void - * @throws \ReflectionException + * @param string|null $driver + * @return mixed + * @throws \InvalidArgumentException * @static - */ - public static function mixin($mixin, $replace = true) - { - \Illuminate\Routing\Router::mixin($mixin, $replace); + */ public static function driver($driver = null) + { //Method inherited from \Illuminate\Support\Manager + /** @var \Illuminate\Session\SessionManager $instance */ + return $instance->driver($driver); } /** - * Checks if macro is registered. + * Register a custom driver creator Closure. * - * @param string $name - * @return bool + * @param string $driver + * @param \Closure $callback + * @return \Illuminate\Session\SessionManager * @static - */ - public static function hasMacro($name) - { - return \Illuminate\Routing\Router::hasMacro($name); + */ public static function extend($driver, $callback) + { //Method inherited from \Illuminate\Support\Manager + /** @var \Illuminate\Session\SessionManager $instance */ + return $instance->extend($driver, $callback); } /** - * Flush the existing macros. + * Get all of the created "drivers". * - * @return void + * @return array * @static - */ - public static function flushMacros() - { - \Illuminate\Routing\Router::flushMacros(); + */ public static function getDrivers() + { //Method inherited from \Illuminate\Support\Manager + /** @var \Illuminate\Session\SessionManager $instance */ + return $instance->getDrivers(); } /** - * Dynamically handle calls to the class. + * Get the container instance used by the manager. * - * @param string $method - * @param array $parameters - * @return mixed - * @throws \BadMethodCallException + * @return \Illuminate\Contracts\Container\Container * @static - */ - public static function macroCall($method, $parameters) - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->macroCall($method, $parameters); + */ public static function getContainer() + { //Method inherited from \Illuminate\Support\Manager + /** @var \Illuminate\Session\SessionManager $instance */ + return $instance->getContainer(); } - - } - /** - * - * - * @see \Illuminate\Database\Schema\Builder - */ - class Schema { /** - * Create a database in the schema. + * Set the container instance used by the manager. * - * @param string $name - * @return bool + * @param \Illuminate\Contracts\Container\Container $container + * @return \Illuminate\Session\SessionManager * @static - */ - public static function createDatabase($name) - { - /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - return $instance->createDatabase($name); + */ public static function setContainer($container) + { //Method inherited from \Illuminate\Support\Manager + /** @var \Illuminate\Session\SessionManager $instance */ + return $instance->setContainer($container); } /** - * Drop a database from the schema if the database exists. + * Forget all of the resolved driver instances. * - * @param string $name - * @return bool + * @return \Illuminate\Session\SessionManager * @static - */ - public static function dropDatabaseIfExists($name) - { - /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - return $instance->dropDatabaseIfExists($name); + */ public static function forgetDrivers() + { //Method inherited from \Illuminate\Support\Manager + /** @var \Illuminate\Session\SessionManager $instance */ + return $instance->forgetDrivers(); } /** - * Determine if the given table exists. + * Start the session, reading the data from a handler. * - * @param string $table * @return bool * @static - */ - public static function hasTable($table) + */ public static function start() { - /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - return $instance->hasTable($table); + /** @var \Illuminate\Session\Store $instance */ + return $instance->start(); } /** - * Get the column listing for a given table. + * Save the session data to storage. * - * @param string $table - * @return array + * @return void * @static - */ - public static function getColumnListing($table) + */ public static function save() { - /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - return $instance->getColumnListing($table); + /** @var \Illuminate\Session\Store $instance */ + $instance->save(); } /** - * Drop all tables from the database. + * Age the flash data for the session. * * @return void * @static - */ - public static function dropAllTables() + */ public static function ageFlashData() { - /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - $instance->dropAllTables(); + /** @var \Illuminate\Session\Store $instance */ + $instance->ageFlashData(); } /** - * Drop all views from the database. + * Get all of the session data. * - * @return void + * @return array * @static - */ - public static function dropAllViews() + */ public static function all() { - /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - $instance->dropAllViews(); + /** @var \Illuminate\Session\Store $instance */ + return $instance->all(); } /** - * Get all of the table names for the database. + * Get a subset of the session data. * + * @param array $keys * @return array * @static - */ - public static function getAllTables() + */ public static function only($keys) { - /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - return $instance->getAllTables(); + /** @var \Illuminate\Session\Store $instance */ + return $instance->only($keys); } /** - * Get all of the view names for the database. + * Get all the session data except for a specified array of items. * + * @param array $keys * @return array * @static - */ - public static function getAllViews() + */ public static function except($keys) { - /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - return $instance->getAllViews(); + /** @var \Illuminate\Session\Store $instance */ + return $instance->except($keys); } /** - * Set the default string length for migrations. + * Checks if a key exists. * - * @param int $length - * @return void + * @param string|array $key + * @return bool * @static - */ - public static function defaultStringLength($length) - { //Method inherited from \Illuminate\Database\Schema\Builder - \Illuminate\Database\Schema\MySqlBuilder::defaultStringLength($length); + */ public static function exists($key) + { + /** @var \Illuminate\Session\Store $instance */ + return $instance->exists($key); } /** - * Set the default morph key type for migrations. + * Determine if the given key is missing from the session data. * - * @param string $type - * @return void - * @throws \InvalidArgumentException + * @param string|array $key + * @return bool * @static - */ - public static function defaultMorphKeyType($type) - { //Method inherited from \Illuminate\Database\Schema\Builder - \Illuminate\Database\Schema\MySqlBuilder::defaultMorphKeyType($type); + */ public static function missing($key) + { + /** @var \Illuminate\Session\Store $instance */ + return $instance->missing($key); } /** - * Set the default morph key type for migrations to UUIDs. + * Determine if a key is present and not null. * - * @return void + * @param string|array $key + * @return bool * @static - */ - public static function morphUsingUuids() - { //Method inherited from \Illuminate\Database\Schema\Builder - \Illuminate\Database\Schema\MySqlBuilder::morphUsingUuids(); + */ public static function has($key) + { + /** @var \Illuminate\Session\Store $instance */ + return $instance->has($key); } /** - * Set the default morph key type for migrations to ULIDs. + * Determine if any of the given keys are present and not null. * - * @return void + * @param string|array $key + * @return bool * @static - */ - public static function morphUsingUlids() - { //Method inherited from \Illuminate\Database\Schema\Builder - \Illuminate\Database\Schema\MySqlBuilder::morphUsingUlids(); + */ public static function hasAny($key) + { + /** @var \Illuminate\Session\Store $instance */ + return $instance->hasAny($key); } /** - * Attempt to use native schema operations for dropping and renaming columns, even if Doctrine DBAL is installed. + * Get an item from the session. * - * @param bool $value - * @return void + * @param string $key + * @param mixed $default + * @return mixed * @static - */ - public static function useNativeSchemaOperationsIfPossible($value = true) - { //Method inherited from \Illuminate\Database\Schema\Builder - \Illuminate\Database\Schema\MySqlBuilder::useNativeSchemaOperationsIfPossible($value); + */ public static function get($key, $default = null) + { + /** @var \Illuminate\Session\Store $instance */ + return $instance->get($key, $default); } /** - * Determine if the given table has a given column. + * Get the value of a given key and then forget it. * - * @param string $table - * @param string $column - * @return bool + * @param string $key + * @param mixed $default + * @return mixed * @static - */ - public static function hasColumn($table, $column) - { //Method inherited from \Illuminate\Database\Schema\Builder - /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - return $instance->hasColumn($table, $column); + */ public static function pull($key, $default = null) + { + /** @var \Illuminate\Session\Store $instance */ + return $instance->pull($key, $default); } /** - * Determine if the given table has given columns. + * Determine if the session contains old input. * - * @param string $table - * @param array $columns + * @param string|null $key * @return bool * @static - */ - public static function hasColumns($table, $columns) - { //Method inherited from \Illuminate\Database\Schema\Builder - /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - return $instance->hasColumns($table, $columns); + */ public static function hasOldInput($key = null) + { + /** @var \Illuminate\Session\Store $instance */ + return $instance->hasOldInput($key); } /** - * Execute a table builder callback if the given table has a given column. + * Get the requested item from the flashed input array. * - * @param string $table - * @param string $column - * @param \Closure $callback - * @return void + * @param string|null $key + * @param mixed $default + * @return mixed * @static - */ - 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); + */ public static function getOldInput($key = null, $default = null) + { + /** @var \Illuminate\Session\Store $instance */ + return $instance->getOldInput($key, $default); } /** - * Execute a table builder callback if the given table doesn't have a given column. + * Replace the given session attributes entirely. * - * @param string $table - * @param string $column - * @param \Closure $callback + * @param array $attributes * @return void * @static - */ - 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); + */ public static function replace($attributes) + { + /** @var \Illuminate\Session\Store $instance */ + $instance->replace($attributes); } /** - * Get the data type for the given column name. + * Put a key / value pair or array of key / value pairs in the session. * - * @param string $table - * @param string $column - * @return string + * @param string|array $key + * @param mixed $value + * @return void * @static - */ - public static function getColumnType($table, $column) - { //Method inherited from \Illuminate\Database\Schema\Builder - /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - return $instance->getColumnType($table, $column); + */ public static function put($key, $value = null) + { + /** @var \Illuminate\Session\Store $instance */ + $instance->put($key, $value); } /** - * Modify a table on the schema. + * Get an item from the session, or store the default value. * - * @param string $table + * @param string $key * @param \Closure $callback - * @return void + * @return mixed * @static - */ - public static function table($table, $callback) - { //Method inherited from \Illuminate\Database\Schema\Builder - /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - $instance->table($table, $callback); + */ public static function remember($key, $callback) + { + /** @var \Illuminate\Session\Store $instance */ + return $instance->remember($key, $callback); } /** - * Create a new table on the schema. + * Push a value onto a session array. * - * @param string $table - * @param \Closure $callback + * @param string $key + * @param mixed $value * @return void * @static - */ - public static function create($table, $callback) - { //Method inherited from \Illuminate\Database\Schema\Builder - /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - $instance->create($table, $callback); + */ public static function push($key, $value) + { + /** @var \Illuminate\Session\Store $instance */ + $instance->push($key, $value); } /** - * Drop a table from the schema. + * Increment the value of an item in the session. * - * @param string $table - * @return void + * @param string $key + * @param int $amount + * @return mixed * @static - */ - public static function drop($table) - { //Method inherited from \Illuminate\Database\Schema\Builder - /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - $instance->drop($table); + */ public static function increment($key, $amount = 1) + { + /** @var \Illuminate\Session\Store $instance */ + return $instance->increment($key, $amount); } /** - * Drop a table from the schema if it exists. + * Decrement the value of an item in the session. * - * @param string $table - * @return void + * @param string $key + * @param int $amount + * @return int * @static - */ - public static function dropIfExists($table) - { //Method inherited from \Illuminate\Database\Schema\Builder - /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - $instance->dropIfExists($table); + */ public static function decrement($key, $amount = 1) + { + /** @var \Illuminate\Session\Store $instance */ + return $instance->decrement($key, $amount); } /** - * Drop columns from a table schema. + * Flash a key / value pair to the session. * - * @param string $table - * @param string|array $columns + * @param string $key + * @param mixed $value * @return void * @static - */ - public static function dropColumns($table, $columns) - { //Method inherited from \Illuminate\Database\Schema\Builder - /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - $instance->dropColumns($table, $columns); + */ public static function flash($key, $value = true) + { + /** @var \Illuminate\Session\Store $instance */ + $instance->flash($key, $value); } /** - * Drop all types from the database. + * Flash a key / value pair to the session for immediate use. * + * @param string $key + * @param mixed $value * @return void - * @throws \LogicException * @static - */ - public static function dropAllTypes() - { //Method inherited from \Illuminate\Database\Schema\Builder - /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - $instance->dropAllTypes(); + */ public static function now($key, $value) + { + /** @var \Illuminate\Session\Store $instance */ + $instance->now($key, $value); } /** - * Rename a table on the schema. + * Reflash all of the session flash data. * - * @param string $from - * @param string $to * @return void * @static - */ - public static function rename($from, $to) - { //Method inherited from \Illuminate\Database\Schema\Builder - /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - $instance->rename($from, $to); + */ public static function reflash() + { + /** @var \Illuminate\Session\Store $instance */ + $instance->reflash(); } /** - * Enable foreign key constraints. + * Reflash a subset of the current flash data. * - * @return bool + * @param array|mixed $keys + * @return void * @static - */ - public static function enableForeignKeyConstraints() - { //Method inherited from \Illuminate\Database\Schema\Builder - /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - return $instance->enableForeignKeyConstraints(); + */ public static function keep($keys = null) + { + /** @var \Illuminate\Session\Store $instance */ + $instance->keep($keys); } /** - * Disable foreign key constraints. + * Flash an input array to the session. * - * @return bool + * @param array $value + * @return void * @static - */ - public static function disableForeignKeyConstraints() - { //Method inherited from \Illuminate\Database\Schema\Builder - /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - return $instance->disableForeignKeyConstraints(); + */ public static function flashInput($value) + { + /** @var \Illuminate\Session\Store $instance */ + $instance->flashInput($value); } /** - * Disable foreign key constraints during the execution of a callback. + * Remove an item from the session, returning its value. * - * @param \Closure $callback + * @param string $key * @return mixed * @static - */ - public static function withoutForeignKeyConstraints($callback) - { //Method inherited from \Illuminate\Database\Schema\Builder - /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - return $instance->withoutForeignKeyConstraints($callback); + */ public static function remove($key) + { + /** @var \Illuminate\Session\Store $instance */ + return $instance->remove($key); } /** - * Get the database connection instance. + * Remove one or many items from the session. * - * @return \Illuminate\Database\Connection + * @param string|array $keys + * @return void * @static - */ - public static function getConnection() - { //Method inherited from \Illuminate\Database\Schema\Builder - /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - return $instance->getConnection(); + */ public static function forget($keys) + { + /** @var \Illuminate\Session\Store $instance */ + $instance->forget($keys); } /** - * Set the database connection instance. + * Remove all of the items from the session. * - * @param \Illuminate\Database\Connection $connection - * @return \Illuminate\Database\Schema\MySqlBuilder + * @return void * @static - */ - public static function setConnection($connection) - { //Method inherited from \Illuminate\Database\Schema\Builder - /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - return $instance->setConnection($connection); + */ public static function flush() + { + /** @var \Illuminate\Session\Store $instance */ + $instance->flush(); } /** - * Set the Schema Blueprint resolver callback. + * Flush the session data and regenerate the ID. * - * @param \Closure $resolver - * @return void + * @return bool * @static - */ - public static function blueprintResolver($resolver) - { //Method inherited from \Illuminate\Database\Schema\Builder - /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - $instance->blueprintResolver($resolver); + */ public static function invalidate() + { + /** @var \Illuminate\Session\Store $instance */ + return $instance->invalidate(); } - - } - /** - * - * - * @see \Illuminate\Session\SessionManager - */ - class Session { /** - * Determine if requests for the same session should wait for each to finish before executing. + * Generate a new session identifier. * + * @param bool $destroy * @return bool * @static - */ - public static function shouldBlock() + */ public static function regenerate($destroy = false) { - /** @var \Illuminate\Session\SessionManager $instance */ - return $instance->shouldBlock(); + /** @var \Illuminate\Session\Store $instance */ + return $instance->regenerate($destroy); } /** - * Get the name of the cache store / driver that should be used to acquire session locks. + * Generate a new session ID for the session. * - * @return string|null + * @param bool $destroy + * @return bool * @static - */ - public static function blockDriver() + */ public static function migrate($destroy = false) { - /** @var \Illuminate\Session\SessionManager $instance */ - return $instance->blockDriver(); + /** @var \Illuminate\Session\Store $instance */ + return $instance->migrate($destroy); } /** - * Get the session configuration. + * Determine if the session has been started. * - * @return array + * @return bool * @static - */ - public static function getSessionConfig() + */ public static function isStarted() { - /** @var \Illuminate\Session\SessionManager $instance */ - return $instance->getSessionConfig(); + /** @var \Illuminate\Session\Store $instance */ + return $instance->isStarted(); } /** - * Get the default session driver name. + * Get the name of the session. * * @return string * @static - */ - public static function getDefaultDriver() + */ public static function getName() { - /** @var \Illuminate\Session\SessionManager $instance */ - return $instance->getDefaultDriver(); + /** @var \Illuminate\Session\Store $instance */ + return $instance->getName(); } /** - * Set the default session driver name. + * Set the name of the session. * * @param string $name * @return void * @static - */ - public static function setDefaultDriver($name) + */ public static function setName($name) { - /** @var \Illuminate\Session\SessionManager $instance */ - $instance->setDefaultDriver($name); - } - /** - * Get a driver instance. - * - * @param string|null $driver - * @return mixed - * @throws \InvalidArgumentException - * @static - */ - public static function driver($driver = null) - { //Method inherited from \Illuminate\Support\Manager - /** @var \Illuminate\Session\SessionManager $instance */ - return $instance->driver($driver); - } - /** - * Register a custom driver creator Closure. - * - * @param string $driver - * @param \Closure $callback - * @return \Illuminate\Session\SessionManager - * @static - */ - public static function extend($driver, $callback) - { //Method inherited from \Illuminate\Support\Manager - /** @var \Illuminate\Session\SessionManager $instance */ - return $instance->extend($driver, $callback); - } - /** - * Get all of the created "drivers". - * - * @return array - * @static - */ - public static function getDrivers() - { //Method inherited from \Illuminate\Support\Manager - /** @var \Illuminate\Session\SessionManager $instance */ - return $instance->getDrivers(); + /** @var \Illuminate\Session\Store $instance */ + $instance->setName($name); } /** - * Get the container instance used by the manager. + * Get the current session ID. * - * @return \Illuminate\Contracts\Container\Container + * @return string * @static - */ - public static function getContainer() - { //Method inherited from \Illuminate\Support\Manager - /** @var \Illuminate\Session\SessionManager $instance */ - return $instance->getContainer(); + */ public static function getId() + { + /** @var \Illuminate\Session\Store $instance */ + return $instance->getId(); } /** - * Set the container instance used by the manager. + * Set the session ID. * - * @param \Illuminate\Contracts\Container\Container $container - * @return \Illuminate\Session\SessionManager + * @param string|null $id + * @return void * @static - */ - public static function setContainer($container) - { //Method inherited from \Illuminate\Support\Manager - /** @var \Illuminate\Session\SessionManager $instance */ - return $instance->setContainer($container); + */ public static function setId($id) + { + /** @var \Illuminate\Session\Store $instance */ + $instance->setId($id); } /** - * Forget all of the resolved driver instances. + * Determine if this is a valid session ID. * - * @return \Illuminate\Session\SessionManager + * @param string|null $id + * @return bool * @static - */ - public static function forgetDrivers() - { //Method inherited from \Illuminate\Support\Manager - /** @var \Illuminate\Session\SessionManager $instance */ - return $instance->forgetDrivers(); + */ public static function isValidId($id) + { + /** @var \Illuminate\Session\Store $instance */ + return $instance->isValidId($id); } /** - * Start the session, reading the data from a handler. + * Set the existence of the session on the handler if applicable. * - * @return bool + * @param bool $value + * @return void * @static - */ - public static function start() + */ public static function setExists($value) { /** @var \Illuminate\Session\Store $instance */ - return $instance->start(); + $instance->setExists($value); } /** - * Save the session data to storage. + * Get the CSRF token value. * - * @return void + * @return string * @static - */ - public static function save() + */ public static function token() { /** @var \Illuminate\Session\Store $instance */ - $instance->save(); + return $instance->token(); } /** - * Age the flash data for the session. + * Regenerate the CSRF token value. * * @return void * @static - */ - public static function ageFlashData() + */ public static function regenerateToken() { /** @var \Illuminate\Session\Store $instance */ - $instance->ageFlashData(); + $instance->regenerateToken(); } /** - * Get all of the session data. + * Get the previous URL from the session. * - * @return array + * @return string|null * @static - */ - public static function all() + */ public static function previousUrl() { /** @var \Illuminate\Session\Store $instance */ - return $instance->all(); + return $instance->previousUrl(); } /** - * Get a subset of the session data. + * Set the "previous" URL in the session. * - * @param array $keys - * @return array + * @param string $url + * @return void * @static - */ - public static function only($keys) + */ public static function setPreviousUrl($url) { /** @var \Illuminate\Session\Store $instance */ - return $instance->only($keys); + $instance->setPreviousUrl($url); } /** - * Checks if a key exists. + * Specify that the user has confirmed their password. * - * @param string|array $key - * @return bool + * @return void * @static - */ - public static function exists($key) + */ public static function passwordConfirmed() { /** @var \Illuminate\Session\Store $instance */ - return $instance->exists($key); + $instance->passwordConfirmed(); } /** - * Determine if the given key is missing from the session data. + * Get the underlying session handler implementation. * - * @param string|array $key - * @return bool + * @return \SessionHandlerInterface * @static - */ - public static function missing($key) + */ public static function getHandler() { /** @var \Illuminate\Session\Store $instance */ - return $instance->missing($key); + return $instance->getHandler(); } /** - * Checks if a key is present and not null. + * Set the underlying session handler implementation. * - * @param string|array $key - * @return bool + * @param \SessionHandlerInterface $handler + * @return \SessionHandlerInterface * @static - */ - public static function has($key) + */ public static function setHandler($handler) { /** @var \Illuminate\Session\Store $instance */ - return $instance->has($key); + return $instance->setHandler($handler); } /** - * Get an item from the session. + * Determine if the session handler needs a request. * - * @param string $key - * @param mixed $default - * @return mixed + * @return bool * @static - */ - public static function get($key, $default = null) + */ public static function handlerNeedsRequest() { /** @var \Illuminate\Session\Store $instance */ - return $instance->get($key, $default); + return $instance->handlerNeedsRequest(); } /** - * Get the value of a given key and then forget it. + * Set the request on the handler instance. * - * @param string $key - * @param mixed $default - * @return mixed + * @param \Illuminate\Http\Request $request + * @return void * @static - */ - public static function pull($key, $default = null) + */ public static function setRequestOnHandler($request) { /** @var \Illuminate\Session\Store $instance */ - return $instance->pull($key, $default); + $instance->setRequestOnHandler($request); } /** - * Determine if the session contains old input. + * Register a custom macro. * - * @param string|null $key - * @return bool + * @param string $name + * @param object|callable $macro + * @return void * @static - */ - public static function hasOldInput($key = null) + */ public static function macro($name, $macro) { - /** @var \Illuminate\Session\Store $instance */ - return $instance->hasOldInput($key); + \Illuminate\Session\Store::macro($name, $macro); } /** - * Get the requested item from the flashed input array. + * Mix another object into the class. * - * @param string|null $key - * @param mixed $default - * @return mixed + * @param object $mixin + * @param bool $replace + * @return void + * @throws \ReflectionException * @static - */ - public static function getOldInput($key = null, $default = null) + */ public static function mixin($mixin, $replace = true) { - /** @var \Illuminate\Session\Store $instance */ - return $instance->getOldInput($key, $default); + \Illuminate\Session\Store::mixin($mixin, $replace); } /** - * Replace the given session attributes entirely. + * Checks if macro is registered. * - * @param array $attributes - * @return void + * @param string $name + * @return bool * @static - */ - public static function replace($attributes) + */ public static function hasMacro($name) { - /** @var \Illuminate\Session\Store $instance */ - $instance->replace($attributes); + return \Illuminate\Session\Store::hasMacro($name); } /** - * Put a key / value pair or array of key / value pairs in the session. + * Flush the existing macros. * - * @param string|array $key - * @param mixed $value * @return void * @static - */ - public static function put($key, $value = null) + */ public static function flushMacros() { - /** @var \Illuminate\Session\Store $instance */ - $instance->put($key, $value); + \Illuminate\Session\Store::flushMacros(); } + } + /** + * + * + * @method static bool has(string $location) + * @method static string read(string $location) + * @method static \League\Flysystem\DirectoryListing listContents(string $location, bool $deep = false) + * @method static int fileSize(string $path) + * @method static string visibility(string $path) + * @method static void write(string $location, string $contents, array $config = []) + * @method static void createDirectory(string $location, array $config = []) + * @see \Illuminate\Filesystem\FilesystemManager + */ class Storage { /** - * Get an item from the session, or store the default value. + * Get a filesystem instance. * - * @param string $key - * @param \Closure $callback - * @return mixed + * @param string|null $name + * @return \Illuminate\Filesystem\FilesystemAdapter * @static - */ - public static function remember($key, $callback) + */ public static function drive($name = null) { - /** @var \Illuminate\Session\Store $instance */ - return $instance->remember($key, $callback); + /** @var \Illuminate\Filesystem\FilesystemManager $instance */ + return $instance->drive($name); } /** - * Push a value onto a session array. + * Get a filesystem instance. * - * @param string $key - * @param mixed $value - * @return void + * @param string|null $name + * @return \Illuminate\Filesystem\FilesystemAdapter * @static - */ - public static function push($key, $value) + */ public static function disk($name = null) { - /** @var \Illuminate\Session\Store $instance */ - $instance->push($key, $value); + /** @var \Illuminate\Filesystem\FilesystemManager $instance */ + return $instance->disk($name); } /** - * Increment the value of an item in the session. + * Get a default cloud filesystem instance. * - * @param string $key - * @param int $amount - * @return mixed + * @return \Illuminate\Contracts\Filesystem\Cloud * @static - */ - public static function increment($key, $amount = 1) + */ public static function cloud() { - /** @var \Illuminate\Session\Store $instance */ - return $instance->increment($key, $amount); + /** @var \Illuminate\Filesystem\FilesystemManager $instance */ + return $instance->cloud(); } /** - * Decrement the value of an item in the session. + * Build an on-demand disk. * - * @param string $key - * @param int $amount - * @return int + * @param string|array $config + * @return \Illuminate\Filesystem\FilesystemAdapter * @static - */ - public static function decrement($key, $amount = 1) + */ public static function build($config) { - /** @var \Illuminate\Session\Store $instance */ - return $instance->decrement($key, $amount); + /** @var \Illuminate\Filesystem\FilesystemManager $instance */ + return $instance->build($config); } /** - * Flash a key / value pair to the session. + * Create an instance of the local driver. * - * @param string $key - * @param mixed $value - * @return void + * @param array $config + * @return \Illuminate\Filesystem\FilesystemAdapter * @static - */ - public static function flash($key, $value = true) + */ public static function createLocalDriver($config) { - /** @var \Illuminate\Session\Store $instance */ - $instance->flash($key, $value); + /** @var \Illuminate\Filesystem\FilesystemManager $instance */ + return $instance->createLocalDriver($config); } /** - * Flash a key / value pair to the session for immediate use. + * Create an instance of the ftp driver. * - * @param string $key - * @param mixed $value - * @return void + * @param array $config + * @return \Illuminate\Filesystem\FilesystemAdapter * @static - */ - public static function now($key, $value) + */ public static function createFtpDriver($config) { - /** @var \Illuminate\Session\Store $instance */ - $instance->now($key, $value); + /** @var \Illuminate\Filesystem\FilesystemManager $instance */ + return $instance->createFtpDriver($config); } /** - * Reflash all of the session flash data. + * Create an instance of the sftp driver. * - * @return void + * @param array $config + * @return \Illuminate\Filesystem\FilesystemAdapter * @static - */ - public static function reflash() + */ public static function createSftpDriver($config) { - /** @var \Illuminate\Session\Store $instance */ - $instance->reflash(); + /** @var \Illuminate\Filesystem\FilesystemManager $instance */ + return $instance->createSftpDriver($config); } /** - * Reflash a subset of the current flash data. + * Create an instance of the Amazon S3 driver. * - * @param array|mixed $keys - * @return void + * @param array $config + * @return \Illuminate\Contracts\Filesystem\Cloud * @static - */ - public static function keep($keys = null) + */ public static function createS3Driver($config) { - /** @var \Illuminate\Session\Store $instance */ - $instance->keep($keys); + /** @var \Illuminate\Filesystem\FilesystemManager $instance */ + return $instance->createS3Driver($config); } /** - * Flash an input array to the session. + * Create a scoped driver. * - * @param array $value - * @return void + * @param array $config + * @return \Illuminate\Filesystem\FilesystemAdapter * @static - */ - public static function flashInput($value) + */ public static function createScopedDriver($config) { - /** @var \Illuminate\Session\Store $instance */ - $instance->flashInput($value); + /** @var \Illuminate\Filesystem\FilesystemManager $instance */ + return $instance->createScopedDriver($config); } /** - * Remove an item from the session, returning its value. + * Set the given disk instance. * - * @param string $key - * @return mixed + * @param string $name + * @param mixed $disk + * @return \Illuminate\Filesystem\FilesystemManager * @static - */ - public static function remove($key) + */ public static function set($name, $disk) { - /** @var \Illuminate\Session\Store $instance */ - return $instance->remove($key); + /** @var \Illuminate\Filesystem\FilesystemManager $instance */ + return $instance->set($name, $disk); } /** - * Remove one or many items from the session. + * Get the default driver name. * - * @param string|array $keys - * @return void + * @return string * @static - */ - public static function forget($keys) + */ public static function getDefaultDriver() { - /** @var \Illuminate\Session\Store $instance */ - $instance->forget($keys); + /** @var \Illuminate\Filesystem\FilesystemManager $instance */ + return $instance->getDefaultDriver(); } /** - * Remove all of the items from the session. + * Get the default cloud driver name. * - * @return void + * @return string * @static - */ - public static function flush() + */ public static function getDefaultCloudDriver() { - /** @var \Illuminate\Session\Store $instance */ - $instance->flush(); + /** @var \Illuminate\Filesystem\FilesystemManager $instance */ + return $instance->getDefaultCloudDriver(); } /** - * Flush the session data and regenerate the ID. + * Unset the given disk instances. * - * @return bool + * @param array|string $disk + * @return \Illuminate\Filesystem\FilesystemManager * @static - */ - public static function invalidate() + */ public static function forgetDisk($disk) { - /** @var \Illuminate\Session\Store $instance */ - return $instance->invalidate(); + /** @var \Illuminate\Filesystem\FilesystemManager $instance */ + return $instance->forgetDisk($disk); } /** - * Generate a new session identifier. + * Disconnect the given disk and remove from local cache. * - * @param bool $destroy - * @return bool + * @param string|null $name + * @return void * @static - */ - public static function regenerate($destroy = false) + */ public static function purge($name = null) { - /** @var \Illuminate\Session\Store $instance */ - return $instance->regenerate($destroy); + /** @var \Illuminate\Filesystem\FilesystemManager $instance */ + $instance->purge($name); } /** - * Generate a new session ID for the session. + * Register a custom driver creator Closure. * - * @param bool $destroy - * @return bool + * @param string $driver + * @param \Closure $callback + * @return \Illuminate\Filesystem\FilesystemManager * @static - */ - public static function migrate($destroy = false) + */ public static function extend($driver, $callback) { - /** @var \Illuminate\Session\Store $instance */ - return $instance->migrate($destroy); + /** @var \Illuminate\Filesystem\FilesystemManager $instance */ + return $instance->extend($driver, $callback); } /** - * Determine if the session has been started. + * Set the application instance used by the manager. * - * @return bool + * @param \Illuminate\Contracts\Foundation\Application $app + * @return \Illuminate\Filesystem\FilesystemManager * @static - */ - public static function isStarted() + */ public static function setApplication($app) { - /** @var \Illuminate\Session\Store $instance */ - return $instance->isStarted(); + /** @var \Illuminate\Filesystem\FilesystemManager $instance */ + return $instance->setApplication($app); } /** - * Get the name of the session. + * Assert that the given file or directory exists. * - * @return string + * @param string|array $path + * @param string|null $content + * @return \Illuminate\Filesystem\FilesystemAdapter * @static - */ - public static function getName() + */ public static function assertExists($path, $content = null) { - /** @var \Illuminate\Session\Store $instance */ - return $instance->getName(); + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->assertExists($path, $content); } /** - * Set the name of the session. + * Assert that the given file or directory does not exist. * - * @param string $name - * @return void + * @param string|array $path + * @return \Illuminate\Filesystem\FilesystemAdapter * @static - */ - public static function setName($name) + */ public static function assertMissing($path) { - /** @var \Illuminate\Session\Store $instance */ - $instance->setName($name); + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->assertMissing($path); } /** - * Get the current session ID. + * Assert that the given directory is empty. * - * @return string + * @param string $path + * @return \Illuminate\Filesystem\FilesystemAdapter * @static - */ - public static function getId() + */ public static function assertDirectoryEmpty($path) { - /** @var \Illuminate\Session\Store $instance */ - return $instance->getId(); + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->assertDirectoryEmpty($path); } /** - * Set the session ID. + * Determine if a file or directory exists. * - * @param string|null $id - * @return void + * @param string $path + * @return bool * @static - */ - public static function setId($id) + */ public static function exists($path) { - /** @var \Illuminate\Session\Store $instance */ - $instance->setId($id); + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->exists($path); } /** - * Determine if this is a valid session ID. + * Determine if a file or directory is missing. * - * @param string|null $id + * @param string $path * @return bool * @static - */ - public static function isValidId($id) + */ public static function missing($path) { - /** @var \Illuminate\Session\Store $instance */ - return $instance->isValidId($id); + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->missing($path); } /** - * Set the existence of the session on the handler if applicable. + * Determine if a file exists. * - * @param bool $value - * @return void + * @param string $path + * @return bool * @static - */ - public static function setExists($value) + */ public static function fileExists($path) { - /** @var \Illuminate\Session\Store $instance */ - $instance->setExists($value); + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->fileExists($path); } /** - * Get the CSRF token value. + * Determine if a file is missing. * - * @return string + * @param string $path + * @return bool * @static - */ - public static function token() + */ public static function fileMissing($path) { - /** @var \Illuminate\Session\Store $instance */ - return $instance->token(); + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->fileMissing($path); } /** - * Regenerate the CSRF token value. + * Determine if a directory exists. * - * @return void + * @param string $path + * @return bool * @static - */ - public static function regenerateToken() + */ public static function directoryExists($path) { - /** @var \Illuminate\Session\Store $instance */ - $instance->regenerateToken(); + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->directoryExists($path); } /** - * Get the previous URL from the session. + * Determine if a directory is missing. * - * @return string|null + * @param string $path + * @return bool * @static - */ - public static function previousUrl() + */ public static function directoryMissing($path) { - /** @var \Illuminate\Session\Store $instance */ - return $instance->previousUrl(); + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->directoryMissing($path); } /** - * Set the "previous" URL in the session. + * Get the full path to the file that exists at the given relative path. * - * @param string $url - * @return void + * @param string $path + * @return string * @static - */ - public static function setPreviousUrl($url) + */ public static function path($path) { - /** @var \Illuminate\Session\Store $instance */ - $instance->setPreviousUrl($url); + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->path($path); } /** - * Specify that the user has confirmed their password. + * Get the contents of a file. * - * @return void + * @param string $path + * @return string|null * @static - */ - public static function passwordConfirmed() + */ public static function get($path) { - /** @var \Illuminate\Session\Store $instance */ - $instance->passwordConfirmed(); + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->get($path); } /** - * Get the underlying session handler implementation. + * Get the contents of a file as decoded JSON. * - * @return \SessionHandlerInterface + * @param string $path + * @param int $flags + * @return array|null * @static - */ - public static function getHandler() + */ public static function json($path, $flags = 0) { - /** @var \Illuminate\Session\Store $instance */ - return $instance->getHandler(); + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->json($path, $flags); } /** - * Set the underlying session handler implementation. + * Create a streamed response for a given file. * - * @param \SessionHandlerInterface $handler - * @return \SessionHandlerInterface + * @param string $path + * @param string|null $name + * @param array $headers + * @param string|null $disposition + * @return \Symfony\Component\HttpFoundation\StreamedResponse * @static - */ - public static function setHandler($handler) + */ public static function response($path, $name = null, $headers = [], $disposition = 'inline') { - /** @var \Illuminate\Session\Store $instance */ - return $instance->setHandler($handler); + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->response($path, $name, $headers, $disposition); } /** - * Determine if the session handler needs a request. + * Create a streamed download response for a given file. * - * @return bool + * @param string $path + * @param string|null $name + * @return \Symfony\Component\HttpFoundation\StreamedResponse * @static - */ - public static function handlerNeedsRequest() + */ public static function download($path, $name = null, $headers = []) { - /** @var \Illuminate\Session\Store $instance */ - return $instance->handlerNeedsRequest(); + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->download($path, $name, $headers); } /** - * Set the request on the handler instance. + * Write the contents of a file. * - * @param \Illuminate\Http\Request $request - * @return void + * @param string $path + * @param \Psr\Http\Message\StreamInterface|\Illuminate\Http\File|\Illuminate\Http\UploadedFile|string|resource $contents + * @param mixed $options + * @return string|bool * @static - */ - public static function setRequestOnHandler($request) + */ public static function put($path, $contents, $options = []) { - /** @var \Illuminate\Session\Store $instance */ - $instance->setRequestOnHandler($request); + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->put($path, $contents, $options); } /** - * Register a custom macro. + * Store the uploaded file on the disk. * - * @param string $name - * @param object|callable $macro - * @return void + * @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 macro($name, $macro) + */ public static function putFile($path, $file = null, $options = []) { - \Illuminate\Session\Store::macro($name, $macro); + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->putFile($path, $file, $options); } /** - * Mix another object into the class. + * Store the uploaded file on the disk with a given name. * - * @param object $mixin - * @param bool $replace - * @return void - * @throws \ReflectionException + * @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 mixin($mixin, $replace = true) + */ public static function putFileAs($path, $file, $name = null, $options = []) { - \Illuminate\Session\Store::mixin($mixin, $replace); + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->putFileAs($path, $file, $name, $options); } /** - * Checks if macro is registered. + * Get the visibility for the given path. * - * @param string $name - * @return bool + * @param string $path + * @return string * @static - */ - public static function hasMacro($name) + */ public static function getVisibility($path) { - return \Illuminate\Session\Store::hasMacro($name); + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->getVisibility($path); } /** - * Flush the existing macros. + * Set the visibility for the given path. * - * @return void + * @param string $path + * @param string $visibility + * @return bool * @static - */ - public static function flushMacros() + */ public static function setVisibility($path, $visibility) { - \Illuminate\Session\Store::flushMacros(); + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->setVisibility($path, $visibility); } - - } - /** - * - * - * @method static bool has(string $location) - * @method static string read(string $location) - * @method static \League\Flysystem\DirectoryListing listContents(string $location, bool $deep = false) - * @method static int fileSize(string $path) - * @method static string visibility(string $path) - * @method static void write(string $location, string $contents, array $config = []) - * @method static void createDirectory(string $location, array $config = []) - * @see \Illuminate\Filesystem\FilesystemManager - */ - class Storage { /** - * Get a filesystem instance. + * Prepend to a file. * - * @param string|null $name - * @return \Illuminate\Filesystem\FilesystemAdapter + * @param string $path + * @param string $data + * @param string $separator + * @return bool * @static - */ - public static function drive($name = null) + */ public static function prepend($path, $data, $separator = ' +') { - /** @var \Illuminate\Filesystem\FilesystemManager $instance */ - return $instance->drive($name); + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->prepend($path, $data, $separator); } /** - * Get a filesystem instance. + * Append to a file. * - * @param string|null $name - * @return \Illuminate\Filesystem\FilesystemAdapter + * @param string $path + * @param string $data + * @param string $separator + * @return bool * @static - */ - public static function disk($name = null) + */ public static function append($path, $data, $separator = ' +') { - /** @var \Illuminate\Filesystem\FilesystemManager $instance */ - return $instance->disk($name); + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->append($path, $data, $separator); } /** - * Get a default cloud filesystem instance. + * Delete the file at a given path. * - * @return \Illuminate\Filesystem\FilesystemAdapter + * @param string|array $paths + * @return bool * @static - */ - public static function cloud() + */ public static function delete($paths) { - /** @var \Illuminate\Filesystem\FilesystemManager $instance */ - return $instance->cloud(); + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->delete($paths); } /** - * Build an on-demand disk. + * Copy a file to a new location. * - * @param string|array $config - * @return \Illuminate\Filesystem\FilesystemAdapter + * @param string $from + * @param string $to + * @return bool * @static - */ - public static function build($config) + */ public static function copy($from, $to) { - /** @var \Illuminate\Filesystem\FilesystemManager $instance */ - return $instance->build($config); + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->copy($from, $to); } /** - * Create an instance of the local driver. + * Move a file to a new location. * - * @param array $config - * @return \Illuminate\Filesystem\FilesystemAdapter + * @param string $from + * @param string $to + * @return bool * @static - */ - public static function createLocalDriver($config) + */ public static function move($from, $to) { - /** @var \Illuminate\Filesystem\FilesystemManager $instance */ - return $instance->createLocalDriver($config); + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->move($from, $to); } /** - * Create an instance of the ftp driver. + * Get the file size of a given file. * - * @param array $config - * @return \Illuminate\Filesystem\FilesystemAdapter + * @param string $path + * @return int * @static - */ - public static function createFtpDriver($config) + */ public static function size($path) { - /** @var \Illuminate\Filesystem\FilesystemManager $instance */ - return $instance->createFtpDriver($config); + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->size($path); } /** - * Create an instance of the sftp driver. + * Get the checksum for a file. * - * @param array $config - * @return \Illuminate\Filesystem\FilesystemAdapter + * @return string|false + * @throws UnableToProvideChecksum * @static - */ - public static function createSftpDriver($config) + */ public static function checksum($path, $options = []) { - /** @var \Illuminate\Filesystem\FilesystemManager $instance */ - return $instance->createSftpDriver($config); + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->checksum($path, $options); } /** - * Create an instance of the Amazon S3 driver. + * Get the mime-type of a given file. * - * @param array $config - * @return \Illuminate\Contracts\Filesystem\Cloud + * @param string $path + * @return string|false * @static - */ - public static function createS3Driver($config) + */ public static function mimeType($path) { - /** @var \Illuminate\Filesystem\FilesystemManager $instance */ - return $instance->createS3Driver($config); + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->mimeType($path); } /** - * Create a scoped driver. + * Get the file's last modification time. * - * @param array $config - * @return \Illuminate\Filesystem\FilesystemAdapter + * @param string $path + * @return int * @static - */ - public static function createScopedDriver($config) + */ public static function lastModified($path) { - /** @var \Illuminate\Filesystem\FilesystemManager $instance */ - return $instance->createScopedDriver($config); + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->lastModified($path); } /** - * Set the given disk instance. + * Get a resource to read the file. * - * @param string $name - * @param mixed $disk - * @return \Illuminate\Filesystem\FilesystemManager + * @param string $path + * @return resource|null The path resource or null on failure. * @static - */ - public static function set($name, $disk) + */ public static function readStream($path) { - /** @var \Illuminate\Filesystem\FilesystemManager $instance */ - return $instance->set($name, $disk); + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->readStream($path); } /** - * Get the default driver name. + * Write a new file using a stream. * - * @return string + * @param string $path + * @param resource $resource + * @param array $options + * @return bool * @static - */ - public static function getDefaultDriver() + */ public static function writeStream($path, $resource, $options = []) { - /** @var \Illuminate\Filesystem\FilesystemManager $instance */ - return $instance->getDefaultDriver(); + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->writeStream($path, $resource, $options); } /** - * Get the default cloud driver name. + * Get the URL for the file at the given path. * + * @param string $path * @return string + * @throws \RuntimeException * @static - */ - public static function getDefaultCloudDriver() + */ public static function url($path) { - /** @var \Illuminate\Filesystem\FilesystemManager $instance */ - return $instance->getDefaultCloudDriver(); + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->url($path); } /** - * Unset the given disk instances. + * Determine if temporary URLs can be generated. * - * @param array|string $disk - * @return \Illuminate\Filesystem\FilesystemManager + * @return bool * @static - */ - public static function forgetDisk($disk) + */ public static function providesTemporaryUrls() { - /** @var \Illuminate\Filesystem\FilesystemManager $instance */ - return $instance->forgetDisk($disk); + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->providesTemporaryUrls(); } /** - * Disconnect the given disk and remove from local cache. + * Get a temporary URL for the file at the given path. * - * @param string|null $name - * @return void + * @param string $path + * @param \DateTimeInterface $expiration + * @param array $options + * @return string + * @throws \RuntimeException * @static - */ - public static function purge($name = null) + */ public static function temporaryUrl($path, $expiration, $options = []) { - /** @var \Illuminate\Filesystem\FilesystemManager $instance */ - $instance->purge($name); + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->temporaryUrl($path, $expiration, $options); } /** - * Register a custom driver creator Closure. + * Get a temporary upload URL for the file at the given path. * - * @param string $driver - * @param \Closure $callback - * @return \Illuminate\Filesystem\FilesystemManager + * @param string $path + * @param \DateTimeInterface $expiration + * @param array $options + * @return array + * @throws \RuntimeException * @static - */ - public static function extend($driver, $callback) + */ public static function temporaryUploadUrl($path, $expiration, $options = []) { - /** @var \Illuminate\Filesystem\FilesystemManager $instance */ - return $instance->extend($driver, $callback); + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->temporaryUploadUrl($path, $expiration, $options); } /** - * Set the application instance used by the manager. + * Get an array of all files in a directory. * - * @param \Illuminate\Contracts\Foundation\Application $app - * @return \Illuminate\Filesystem\FilesystemManager + * @param string|null $directory + * @param bool $recursive + * @return array * @static - */ - public static function setApplication($app) + */ public static function files($directory = null, $recursive = false) { - /** @var \Illuminate\Filesystem\FilesystemManager $instance */ - return $instance->setApplication($app); + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->files($directory, $recursive); } /** - * Assert that the given file or directory exists. + * Get all of the files from the given directory (recursive). * - * @param string|array $path - * @param string|null $content - * @return \Illuminate\Filesystem\FilesystemAdapter + * @param string|null $directory + * @return array * @static - */ - public static function assertExists($path, $content = null) + */ public static function allFiles($directory = null) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->assertExists($path, $content); + return $instance->allFiles($directory); } /** - * Assert that the given file or directory does not exist. + * Get all of the directories within a given directory. * - * @param string|array $path - * @return \Illuminate\Filesystem\FilesystemAdapter + * @param string|null $directory + * @param bool $recursive + * @return array * @static - */ - public static function assertMissing($path) + */ public static function directories($directory = null, $recursive = false) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->assertMissing($path); + return $instance->directories($directory, $recursive); } /** - * Assert that the given directory is empty. + * Get all the directories within a given directory (recursive). * - * @param string $path - * @return \Illuminate\Filesystem\FilesystemAdapter + * @param string|null $directory + * @return array * @static - */ - public static function assertDirectoryEmpty($path) + */ public static function allDirectories($directory = null) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->assertDirectoryEmpty($path); + return $instance->allDirectories($directory); } /** - * Determine if a file or directory exists. + * Create a directory. * * @param string $path * @return bool * @static - */ - public static function exists($path) + */ public static function makeDirectory($path) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->exists($path); + return $instance->makeDirectory($path); } /** - * Determine if a file or directory is missing. + * Recursively delete a directory. * - * @param string $path + * @param string $directory * @return bool * @static - */ - public static function missing($path) + */ public static function deleteDirectory($directory) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->missing($path); + return $instance->deleteDirectory($directory); } /** - * Determine if a file exists. + * Get the Flysystem driver. * - * @param string $path - * @return bool + * @return \League\Flysystem\FilesystemOperator * @static - */ - public static function fileExists($path) + */ public static function getDriver() { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->fileExists($path); + return $instance->getDriver(); } /** - * Determine if a file is missing. + * Get the Flysystem adapter. * - * @param string $path - * @return bool + * @return \League\Flysystem\FilesystemAdapter * @static - */ - public static function fileMissing($path) + */ public static function getAdapter() { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->fileMissing($path); + return $instance->getAdapter(); } /** - * Determine if a directory exists. + * Get the configuration values. * - * @param string $path - * @return bool + * @return array * @static - */ - public static function directoryExists($path) + */ public static function getConfig() { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->directoryExists($path); + return $instance->getConfig(); } /** - * Determine if a directory is missing. + * Define a custom temporary URL builder callback. * - * @param string $path - * @return bool + * @param \Closure $callback + * @return void * @static - */ - public static function directoryMissing($path) + */ public static function buildTemporaryUrlsUsing($callback) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->directoryMissing($path); + $instance->buildTemporaryUrlsUsing($callback); } /** - * Get the full path for the file at the given "short" path. + * Apply the callback if the given "value" is (or resolves to) truthy. * - * @param string $path - * @return string + * @template TWhenParameter + * @template TWhenReturnType + * @param \Illuminate\Filesystem\(\Closure($this): TWhenParameter)|TWhenParameter|null $value + * @param \Illuminate\Filesystem\(callable($this, TWhenParameter): TWhenReturnType)|null $callback + * @param \Illuminate\Filesystem\(callable($this, TWhenParameter): TWhenReturnType)|null $default + * @return $this|\Illuminate\Filesystem\TWhenReturnType * @static - */ - public static function path($path) + */ public static function when($value = null, $callback = null, $default = null) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->path($path); + return $instance->when($value, $callback, $default); } /** - * Get the contents of a file. + * Apply the callback if the given "value" is (or resolves to) falsy. * - * @param string $path - * @return string|null + * @template TUnlessParameter + * @template TUnlessReturnType + * @param \Illuminate\Filesystem\(\Closure($this): TUnlessParameter)|TUnlessParameter|null $value + * @param \Illuminate\Filesystem\(callable($this, TUnlessParameter): TUnlessReturnType)|null $callback + * @param \Illuminate\Filesystem\(callable($this, TUnlessParameter): TUnlessReturnType)|null $default + * @return $this|\Illuminate\Filesystem\TUnlessReturnType * @static - */ - public static function get($path) + */ public static function unless($value = null, $callback = null, $default = null) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->get($path); + return $instance->unless($value, $callback, $default); } /** - * Create a streamed response for a given file. + * Register a custom macro. * - * @param string $path - * @param string|null $name - * @param array $headers - * @param string|null $disposition - * @return \Symfony\Component\HttpFoundation\StreamedResponse + * @param string $name + * @param object|callable $macro + * @return void * @static - */ - public static function response($path, $name = null, $headers = [], $disposition = 'inline') + */ public static function macro($name, $macro) { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->response($path, $name, $headers, $disposition); + \Illuminate\Filesystem\FilesystemAdapter::macro($name, $macro); } /** - * Create a streamed download response for a given file. + * Mix another object into the class. * - * @param string $path - * @param string|null $name - * @return \Symfony\Component\HttpFoundation\StreamedResponse + * @param object $mixin + * @param bool $replace + * @return void + * @throws \ReflectionException * @static - */ - public static function download($path, $name = null, $headers = []) + */ public static function mixin($mixin, $replace = true) { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->download($path, $name, $headers); + \Illuminate\Filesystem\FilesystemAdapter::mixin($mixin, $replace); } /** - * Write the contents of a file. + * Checks if macro is registered. * - * @param string $path - * @param \Psr\Http\Message\StreamInterface|\Illuminate\Http\File|\Illuminate\Http\UploadedFile|string|resource $contents - * @param mixed $options - * @return string|bool + * @param string $name + * @return bool * @static - */ - public static function put($path, $contents, $options = []) + */ public static function hasMacro($name) { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->put($path, $contents, $options); + return \Illuminate\Filesystem\FilesystemAdapter::hasMacro($name); } /** - * Store the uploaded file on the disk. + * Flush the existing macros. * - * @param string $path - * @param \Illuminate\Http\File|\Illuminate\Http\UploadedFile|string $file - * @param mixed $options - * @return string|false + * @return void * @static - */ - public static function putFile($path, $file, $options = []) + */ public static function flushMacros() { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->putFile($path, $file, $options); + \Illuminate\Filesystem\FilesystemAdapter::flushMacros(); } /** - * Store the uploaded file on the disk with a given name. + * Dynamically handle calls to the class. * - * @param string $path - * @param \Illuminate\Http\File|\Illuminate\Http\UploadedFile|string $file - * @param string $name - * @param mixed $options - * @return string|false + * @param string $method + * @param array $parameters + * @return mixed + * @throws \BadMethodCallException * @static - */ - public static function putFileAs($path, $file, $name, $options = []) + */ public static function macroCall($method, $parameters) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->putFileAs($path, $file, $name, $options); + return $instance->macroCall($method, $parameters); } + } + /** + * + * + * @see \Illuminate\Routing\UrlGenerator + */ class URL { /** - * Get the visibility for the given path. + * Get the full URL for the current request. * - * @param string $path * @return string * @static - */ - public static function getVisibility($path) + */ public static function full() { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->getVisibility($path); + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->full(); } /** - * Set the visibility for the given path. + * Get the current URL for the request. * - * @param string $path - * @param string $visibility - * @return bool + * @return string * @static - */ - public static function setVisibility($path, $visibility) + */ public static function current() { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->setVisibility($path, $visibility); + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->current(); } /** - * Prepend to a file. + * Get the URL for the previous request. * - * @param string $path - * @param string $data - * @param string $separator - * @return bool + * @param mixed $fallback + * @return string * @static - */ - public static function prepend($path, $data, $separator = ' -') + */ public static function previous($fallback = false) { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->prepend($path, $data, $separator); + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->previous($fallback); } /** - * Append to a file. + * Get the previous path info for the request. * - * @param string $path - * @param string $data - * @param string $separator - * @return bool + * @param mixed $fallback + * @return string * @static - */ - public static function append($path, $data, $separator = ' -') + */ public static function previousPath($fallback = false) { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->append($path, $data, $separator); + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->previousPath($fallback); } /** - * Delete the file at a given path. + * Generate an absolute URL to the given path. * - * @param string|array $paths - * @return bool + * @param string $path + * @param mixed $extra + * @param bool|null $secure + * @return string * @static - */ - public static function delete($paths) + */ public static function to($path, $extra = [], $secure = null) { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->delete($paths); + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->to($path, $extra, $secure); } /** - * Copy a file to a new location. + * Generate an absolute URL with the given query parameters. * - * @param string $from - * @param string $to - * @return bool + * @param string $path + * @param array $query + * @param mixed $extra + * @param bool|null $secure + * @return string * @static - */ - public static function copy($from, $to) + */ public static function query($path, $query = [], $extra = [], $secure = null) { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->copy($from, $to); + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->query($path, $query, $extra, $secure); } /** - * Move a file to a new location. + * Generate a secure, absolute URL to the given path. * - * @param string $from - * @param string $to - * @return bool + * @param string $path + * @param array $parameters + * @return string * @static - */ - public static function move($from, $to) + */ public static function secure($path, $parameters = []) { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->move($from, $to); + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->secure($path, $parameters); } /** - * Get the file size of a given file. + * Generate the URL to an application asset. * * @param string $path - * @return int + * @param bool|null $secure + * @return string * @static - */ - public static function size($path) + */ public static function asset($path, $secure = null) { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->size($path); + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->asset($path, $secure); } /** - * Get the checksum for a file. + * Generate the URL to a secure asset. * - * @return string|false - * @throws UnableToProvideChecksum + * @param string $path + * @return string * @static - */ - public static function checksum($path, $options = []) + */ public static function secureAsset($path) { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->checksum($path, $options); + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->secureAsset($path); } /** - * Get the mime-type of a given file. + * Generate the URL to an asset from a custom root domain such as CDN, etc. * + * @param string $root * @param string $path - * @return string|false + * @param bool|null $secure + * @return string * @static - */ - public static function mimeType($path) + */ public static function assetFrom($root, $path, $secure = null) { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->mimeType($path); + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->assetFrom($root, $path, $secure); } /** - * Get the file's last modification time. + * Get the default scheme for a raw URL. * - * @param string $path - * @return int + * @param bool|null $secure + * @return string * @static - */ - public static function lastModified($path) + */ public static function formatScheme($secure = null) { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->lastModified($path); + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->formatScheme($secure); } /** - * Get a resource to read the file. + * Create a signed route URL for a named route. * - * @param string $path - * @return resource|null The path resource or null on failure. + * @param string $name + * @param mixed $parameters + * @param \DateTimeInterface|\DateInterval|int|null $expiration + * @param bool $absolute + * @return string + * @throws \InvalidArgumentException * @static - */ - public static function readStream($path) + */ public static function signedRoute($name, $parameters = [], $expiration = null, $absolute = true) { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->readStream($path); + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->signedRoute($name, $parameters, $expiration, $absolute); } /** - * Write a new file using a stream. + * Create a temporary signed route URL for a named route. * - * @param string $path - * @param resource $resource - * @param array $options - * @return bool + * @param string $name + * @param \DateTimeInterface|\DateInterval|int $expiration + * @param array $parameters + * @param bool $absolute + * @return string * @static - */ - public static function writeStream($path, $resource, $options = []) + */ public static function temporarySignedRoute($name, $expiration, $parameters = [], $absolute = true) { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->writeStream($path, $resource, $options); + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->temporarySignedRoute($name, $expiration, $parameters, $absolute); } /** - * Get the URL for the file at the given path. + * Determine if the given request has a valid signature. * - * @param string $path - * @return string - * @throws \RuntimeException + * @param \Illuminate\Http\Request $request + * @param bool $absolute + * @param array $ignoreQuery + * @return bool * @static - */ - public static function url($path) + */ public static function hasValidSignature($request, $absolute = true, $ignoreQuery = []) { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->url($path); + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->hasValidSignature($request, $absolute, $ignoreQuery); } /** - * Determine if temporary URLs can be generated. + * Determine if the given request has a valid signature for a relative URL. * + * @param \Illuminate\Http\Request $request + * @param array $ignoreQuery * @return bool * @static - */ - public static function providesTemporaryUrls() + */ public static function hasValidRelativeSignature($request, $ignoreQuery = []) { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->providesTemporaryUrls(); + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->hasValidRelativeSignature($request, $ignoreQuery); } /** - * Get a temporary URL for the file at the given path. + * Determine if the signature from the given request matches the URL. * - * @param string $path - * @param \DateTimeInterface $expiration - * @param array $options - * @return string - * @throws \RuntimeException + * @param \Illuminate\Http\Request $request + * @param bool $absolute + * @param array $ignoreQuery + * @return bool * @static - */ - public static function temporaryUrl($path, $expiration, $options = []) + */ public static function hasCorrectSignature($request, $absolute = true, $ignoreQuery = []) { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->temporaryUrl($path, $expiration, $options); + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->hasCorrectSignature($request, $absolute, $ignoreQuery); } /** - * Get a temporary upload URL for the file at the given path. + * Determine if the expires timestamp from the given request is not from the past. * - * @param string $path - * @param \DateTimeInterface $expiration - * @param array $options - * @return array - * @throws \RuntimeException + * @param \Illuminate\Http\Request $request + * @return bool * @static - */ - public static function temporaryUploadUrl($path, $expiration, $options = []) + */ public static function signatureHasNotExpired($request) { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->temporaryUploadUrl($path, $expiration, $options); + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->signatureHasNotExpired($request); } /** - * Get an array of all files in a directory. + * Get the URL to a named route. * - * @param string|null $directory - * @param bool $recursive - * @return array + * @param string $name + * @param mixed $parameters + * @param bool $absolute + * @return string + * @throws \Symfony\Component\Routing\Exception\RouteNotFoundException * @static - */ - public static function files($directory = null, $recursive = false) + */ public static function route($name, $parameters = [], $absolute = true) { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->files($directory, $recursive); + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->route($name, $parameters, $absolute); } /** - * Get all of the files from the given directory (recursive). + * Get the URL for a given route instance. * - * @param string|null $directory - * @return array + * @param \Illuminate\Routing\Route $route + * @param mixed $parameters + * @param bool $absolute + * @return string + * @throws \Illuminate\Routing\Exceptions\UrlGenerationException * @static - */ - public static function allFiles($directory = null) + */ public static function toRoute($route, $parameters, $absolute) { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->allFiles($directory); + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->toRoute($route, $parameters, $absolute); } /** - * Get all of the directories within a given directory. + * Get the URL to a controller action. * - * @param string|null $directory - * @param bool $recursive - * @return array + * @param string|array $action + * @param mixed $parameters + * @param bool $absolute + * @return string + * @throws \InvalidArgumentException * @static - */ - public static function directories($directory = null, $recursive = false) + */ public static function action($action, $parameters = [], $absolute = true) { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->directories($directory, $recursive); + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->action($action, $parameters, $absolute); } /** - * Get all the directories within a given directory (recursive). + * Format the array of URL parameters. * - * @param string|null $directory + * @param mixed|array $parameters * @return array * @static - */ - public static function allDirectories($directory = null) + */ public static function formatParameters($parameters) { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->allDirectories($directory); + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->formatParameters($parameters); } /** - * Create a directory. + * Get the base URL for the request. * - * @param string $path - * @return bool + * @param string $scheme + * @param string|null $root + * @return string * @static - */ - public static function makeDirectory($path) + */ public static function formatRoot($scheme, $root = null) { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->makeDirectory($path); + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->formatRoot($scheme, $root); } /** - * Recursively delete a directory. + * Format the given URL segments into a single URL. * - * @param string $directory - * @return bool + * @param string $root + * @param string $path + * @param \Illuminate\Routing\Route|null $route + * @return string * @static - */ - public static function deleteDirectory($directory) + */ public static function format($root, $path, $route = null) { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->deleteDirectory($directory); + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->format($root, $path, $route); } /** - * Get the Flysystem driver. + * Determine if the given path is a valid URL. * - * @return \League\Flysystem\FilesystemOperator + * @param string $path + * @return bool * @static - */ - public static function getDriver() + */ public static function isValidUrl($path) { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->getDriver(); + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->isValidUrl($path); } /** - * Get the Flysystem adapter. + * Set the default named parameters used by the URL generator. * - * @return \League\Flysystem\FilesystemAdapter + * @param array $defaults + * @return void * @static - */ - public static function getAdapter() + */ public static function defaults($defaults) { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->getAdapter(); + /** @var \Illuminate\Routing\UrlGenerator $instance */ + $instance->defaults($defaults); } /** - * Get the configuration values. + * Get the default named parameters used by the URL generator. * * @return array * @static - */ - public static function getConfig() + */ public static function getDefaultParameters() { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->getConfig(); + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->getDefaultParameters(); } /** - * Define a custom temporary URL builder callback. + * Force the scheme for URLs. * - * @param \Closure $callback + * @param string|null $scheme * @return void * @static - */ - public static function buildTemporaryUrlsUsing($callback) + */ public static function forceScheme($scheme) { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - $instance->buildTemporaryUrlsUsing($callback); + /** @var \Illuminate\Routing\UrlGenerator $instance */ + $instance->forceScheme($scheme); } /** - * Apply the callback if the given "value" is (or resolves to) truthy. + * Set the forced root URL. * - * @template TWhenParameter - * @template TWhenReturnType - * @param \Illuminate\Filesystem\(\Closure($this): TWhenParameter)|TWhenParameter|null $value - * @param \Illuminate\Filesystem\(callable($this, TWhenParameter): TWhenReturnType)|null $callback - * @param \Illuminate\Filesystem\(callable($this, TWhenParameter): TWhenReturnType)|null $default - * @return $this|\Illuminate\Filesystem\TWhenReturnType + * @param string|null $root + * @return void * @static - */ - public static function when($value = null, $callback = null, $default = null) + */ public static function forceRootUrl($root) { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->when($value, $callback, $default); + /** @var \Illuminate\Routing\UrlGenerator $instance */ + $instance->forceRootUrl($root); } /** - * Apply the callback if the given "value" is (or resolves to) falsy. + * Set a callback to be used to format the host of generated URLs. * - * @template TUnlessParameter - * @template TUnlessReturnType - * @param \Illuminate\Filesystem\(\Closure($this): TUnlessParameter)|TUnlessParameter|null $value - * @param \Illuminate\Filesystem\(callable($this, TUnlessParameter): TUnlessReturnType)|null $callback - * @param \Illuminate\Filesystem\(callable($this, TUnlessParameter): TUnlessReturnType)|null $default - * @return $this|\Illuminate\Filesystem\TUnlessReturnType + * @param \Closure $callback + * @return \Illuminate\Routing\UrlGenerator * @static - */ - public static function unless($value = null, $callback = null, $default = null) + */ public static function formatHostUsing($callback) { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->unless($value, $callback, $default); + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->formatHostUsing($callback); } /** - * Register a custom macro. + * Set a callback to be used to format the path of generated URLs. * - * @param string $name - * @param object|callable $macro - * @return void + * @param \Closure $callback + * @return \Illuminate\Routing\UrlGenerator * @static - */ - public static function macro($name, $macro) + */ public static function formatPathUsing($callback) { - \Illuminate\Filesystem\FilesystemAdapter::macro($name, $macro); + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->formatPathUsing($callback); } /** - * Mix another object into the class. + * Get the path formatter being used by the URL generator. * - * @param object $mixin - * @param bool $replace - * @return void - * @throws \ReflectionException + * @return \Closure * @static - */ - public static function mixin($mixin, $replace = true) + */ public static function pathFormatter() { - \Illuminate\Filesystem\FilesystemAdapter::mixin($mixin, $replace); + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->pathFormatter(); } /** - * Checks if macro is registered. + * Get the request instance. * - * @param string $name - * @return bool + * @return \Illuminate\Http\Request * @static - */ - public static function hasMacro($name) + */ public static function getRequest() { - return \Illuminate\Filesystem\FilesystemAdapter::hasMacro($name); + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->getRequest(); } /** - * Flush the existing macros. + * Set the current request instance. * + * @param \Illuminate\Http\Request $request * @return void * @static - */ - public static function flushMacros() + */ public static function setRequest($request) { - \Illuminate\Filesystem\FilesystemAdapter::flushMacros(); + /** @var \Illuminate\Routing\UrlGenerator $instance */ + $instance->setRequest($request); } /** - * Dynamically handle calls to the class. + * Set the route collection. * - * @param string $method - * @param array $parameters - * @return mixed - * @throws \BadMethodCallException + * @param \Illuminate\Routing\RouteCollectionInterface $routes + * @return \Illuminate\Routing\UrlGenerator * @static - */ - public static function macroCall($method, $parameters) + */ public static function setRoutes($routes) { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->macroCall($method, $parameters); + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->setRoutes($routes); } - - } - /** - * - * - * @see \Illuminate\Routing\UrlGenerator - */ - class URL { /** - * Get the full URL for the current request. + * Set the session resolver for the generator. * - * @return string + * @param callable $sessionResolver + * @return \Illuminate\Routing\UrlGenerator * @static - */ - public static function full() + */ public static function setSessionResolver($sessionResolver) { /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->full(); + return $instance->setSessionResolver($sessionResolver); } /** - * Get the current URL for the request. + * Set the encryption key resolver. * - * @return string + * @param callable $keyResolver + * @return \Illuminate\Routing\UrlGenerator * @static - */ - public static function current() + */ public static function setKeyResolver($keyResolver) { /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->current(); + return $instance->setKeyResolver($keyResolver); } /** - * Get the URL for the previous request. + * Clone a new instance of the URL generator with a different encryption key resolver. * - * @param mixed $fallback - * @return string + * @param callable $keyResolver + * @return \Illuminate\Routing\UrlGenerator * @static - */ - public static function previous($fallback = false) + */ public static function withKeyResolver($keyResolver) { /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->previous($fallback); + return $instance->withKeyResolver($keyResolver); } /** - * Get the previous path info for the request. + * Set the callback that should be used to attempt to resolve missing named routes. * - * @param mixed $fallback - * @return string + * @param callable $missingNamedRouteResolver + * @return \Illuminate\Routing\UrlGenerator * @static - */ - public static function previousPath($fallback = false) + */ public static function resolveMissingNamedRoutesUsing($missingNamedRouteResolver) { /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->previousPath($fallback); + return $instance->resolveMissingNamedRoutesUsing($missingNamedRouteResolver); } /** - * Generate an absolute URL to the given path. + * Get the root controller namespace. * - * @param string $path - * @param mixed $extra - * @param bool|null $secure * @return string * @static - */ - public static function to($path, $extra = [], $secure = null) + */ public static function getRootControllerNamespace() { /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->to($path, $extra, $secure); + return $instance->getRootControllerNamespace(); } /** - * Generate a secure, absolute URL to the given path. + * Set the root controller namespace. * - * @param string $path - * @param array $parameters - * @return string + * @param string $rootNamespace + * @return \Illuminate\Routing\UrlGenerator * @static - */ - public static function secure($path, $parameters = []) + */ public static function setRootControllerNamespace($rootNamespace) { /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->secure($path, $parameters); + return $instance->setRootControllerNamespace($rootNamespace); } /** - * Generate the URL to an application asset. + * Register a custom macro. * - * @param string $path - * @param bool|null $secure - * @return string + * @param string $name + * @param object|callable $macro + * @return void * @static - */ - public static function asset($path, $secure = null) + */ public static function macro($name, $macro) { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->asset($path, $secure); + \Illuminate\Routing\UrlGenerator::macro($name, $macro); } /** - * Generate the URL to a secure asset. + * Mix another object into the class. * - * @param string $path - * @return string + * @param object $mixin + * @param bool $replace + * @return void + * @throws \ReflectionException * @static - */ - public static function secureAsset($path) + */ public static function mixin($mixin, $replace = true) { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->secureAsset($path); + \Illuminate\Routing\UrlGenerator::mixin($mixin, $replace); } /** - * Generate the URL to an asset from a custom root domain such as CDN, etc. + * Checks if macro is registered. * - * @param string $root - * @param string $path - * @param bool|null $secure - * @return string + * @param string $name + * @return bool * @static - */ - public static function assetFrom($root, $path, $secure = null) + */ public static function hasMacro($name) { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->assetFrom($root, $path, $secure); + return \Illuminate\Routing\UrlGenerator::hasMacro($name); } /** - * Get the default scheme for a raw URL. + * Flush the existing macros. * - * @param bool|null $secure - * @return string + * @return void * @static - */ - public static function formatScheme($secure = null) + */ public static function flushMacros() { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->formatScheme($secure); + \Illuminate\Routing\UrlGenerator::flushMacros(); } + } + /** + * + * + * @see \Illuminate\Validation\Factory + */ class Validator { /** - * Create a signed route URL for a named route. + * Create a new Validator instance. * - * @param string $name - * @param mixed $parameters - * @param \DateTimeInterface|\DateInterval|int|null $expiration - * @param bool $absolute - * @return string - * @throws \InvalidArgumentException + * @param array $data + * @param array $rules + * @param array $messages + * @param array $attributes + * @return \Illuminate\Validation\Validator * @static - */ - public static function signedRoute($name, $parameters = [], $expiration = null, $absolute = true) + */ public static function make($data, $rules, $messages = [], $attributes = []) { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->signedRoute($name, $parameters, $expiration, $absolute); + /** @var \Illuminate\Validation\Factory $instance */ + return $instance->make($data, $rules, $messages, $attributes); + } + /** + * Validate the given data against the provided rules. + * + * @param array $data + * @param array $rules + * @param array $messages + * @param array $attributes + * @return array + * @throws \Illuminate\Validation\ValidationException + * @static + */ public static function validate($data, $rules, $messages = [], $attributes = []) + { + /** @var \Illuminate\Validation\Factory $instance */ + return $instance->validate($data, $rules, $messages, $attributes); } /** - * Create a temporary signed route URL for a named route. + * Register a custom validator extension. * - * @param string $name - * @param \DateTimeInterface|\DateInterval|int $expiration - * @param array $parameters - * @param bool $absolute - * @return string + * @param string $rule + * @param \Closure|string $extension + * @param string|null $message + * @return void * @static - */ - public static function temporarySignedRoute($name, $expiration, $parameters = [], $absolute = true) + */ public static function extend($rule, $extension, $message = null) { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->temporarySignedRoute($name, $expiration, $parameters, $absolute); + /** @var \Illuminate\Validation\Factory $instance */ + $instance->extend($rule, $extension, $message); } /** - * Determine if the given request has a valid signature. + * Register a custom implicit validator extension. * - * @param \Illuminate\Http\Request $request - * @param bool $absolute - * @param array $ignoreQuery - * @return bool + * @param string $rule + * @param \Closure|string $extension + * @param string|null $message + * @return void * @static - */ - public static function hasValidSignature($request, $absolute = true, $ignoreQuery = []) + */ public static function extendImplicit($rule, $extension, $message = null) { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->hasValidSignature($request, $absolute, $ignoreQuery); + /** @var \Illuminate\Validation\Factory $instance */ + $instance->extendImplicit($rule, $extension, $message); } /** - * Determine if the given request has a valid signature for a relative URL. + * Register a custom dependent validator extension. * - * @param \Illuminate\Http\Request $request - * @param array $ignoreQuery - * @return bool + * @param string $rule + * @param \Closure|string $extension + * @param string|null $message + * @return void * @static - */ - public static function hasValidRelativeSignature($request, $ignoreQuery = []) + */ public static function extendDependent($rule, $extension, $message = null) { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->hasValidRelativeSignature($request, $ignoreQuery); + /** @var \Illuminate\Validation\Factory $instance */ + $instance->extendDependent($rule, $extension, $message); } /** - * Determine if the signature from the given request matches the URL. + * Register a custom validator message replacer. * - * @param \Illuminate\Http\Request $request - * @param bool $absolute - * @param array $ignoreQuery - * @return bool + * @param string $rule + * @param \Closure|string $replacer + * @return void * @static - */ - public static function hasCorrectSignature($request, $absolute = true, $ignoreQuery = []) + */ public static function replacer($rule, $replacer) { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->hasCorrectSignature($request, $absolute, $ignoreQuery); + /** @var \Illuminate\Validation\Factory $instance */ + $instance->replacer($rule, $replacer); } /** - * Determine if the expires timestamp from the given request is not from the past. + * Indicate that unvalidated array keys should be included in validated data when the parent array is validated. * - * @param \Illuminate\Http\Request $request - * @return bool + * @return void * @static - */ - public static function signatureHasNotExpired($request) + */ public static function includeUnvalidatedArrayKeys() { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->signatureHasNotExpired($request); + /** @var \Illuminate\Validation\Factory $instance */ + $instance->includeUnvalidatedArrayKeys(); } /** - * Get the URL to a named route. + * Indicate that unvalidated array keys should be excluded from the validated data, even if the parent array was validated. * - * @param string $name - * @param mixed $parameters - * @param bool $absolute - * @return string - * @throws \Symfony\Component\Routing\Exception\RouteNotFoundException + * @return void * @static - */ - public static function route($name, $parameters = [], $absolute = true) + */ public static function excludeUnvalidatedArrayKeys() { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->route($name, $parameters, $absolute); + /** @var \Illuminate\Validation\Factory $instance */ + $instance->excludeUnvalidatedArrayKeys(); } /** - * Get the URL for a given route instance. + * Set the Validator instance resolver. * - * @param \Illuminate\Routing\Route $route - * @param mixed $parameters - * @param bool $absolute - * @return string - * @throws \Illuminate\Routing\Exceptions\UrlGenerationException + * @param \Closure $resolver + * @return void * @static - */ - public static function toRoute($route, $parameters, $absolute) + */ public static function resolver($resolver) { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->toRoute($route, $parameters, $absolute); + /** @var \Illuminate\Validation\Factory $instance */ + $instance->resolver($resolver); } /** - * Get the URL to a controller action. + * Get the Translator implementation. * - * @param string|array $action - * @param mixed $parameters - * @param bool $absolute - * @return string - * @throws \InvalidArgumentException + * @return \Illuminate\Contracts\Translation\Translator * @static - */ - public static function action($action, $parameters = [], $absolute = true) + */ public static function getTranslator() { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->action($action, $parameters, $absolute); + /** @var \Illuminate\Validation\Factory $instance */ + return $instance->getTranslator(); } /** - * Format the array of URL parameters. + * Get the Presence Verifier implementation. * - * @param mixed|array $parameters - * @return array + * @return \Illuminate\Validation\PresenceVerifierInterface * @static - */ - public static function formatParameters($parameters) + */ public static function getPresenceVerifier() { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->formatParameters($parameters); + /** @var \Illuminate\Validation\Factory $instance */ + return $instance->getPresenceVerifier(); } /** - * Get the base URL for the request. + * Set the Presence Verifier implementation. * - * @param string $scheme - * @param string|null $root - * @return string + * @param \Illuminate\Validation\PresenceVerifierInterface $presenceVerifier + * @return void * @static - */ - public static function formatRoot($scheme, $root = null) + */ public static function setPresenceVerifier($presenceVerifier) { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->formatRoot($scheme, $root); + /** @var \Illuminate\Validation\Factory $instance */ + $instance->setPresenceVerifier($presenceVerifier); } /** - * Format the given URL segments into a single URL. + * Get the container instance used by the validation factory. * - * @param string $root - * @param string $path - * @param \Illuminate\Routing\Route|null $route - * @return string + * @return \Illuminate\Contracts\Container\Container|null * @static - */ - public static function format($root, $path, $route = null) + */ public static function getContainer() { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->format($root, $path, $route); + /** @var \Illuminate\Validation\Factory $instance */ + return $instance->getContainer(); } /** - * Determine if the given path is a valid URL. + * Set the container instance used by the validation factory. * - * @param string $path - * @return bool + * @param \Illuminate\Contracts\Container\Container $container + * @return \Illuminate\Validation\Factory * @static - */ - public static function isValidUrl($path) + */ public static function setContainer($container) { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->isValidUrl($path); + /** @var \Illuminate\Validation\Factory $instance */ + return $instance->setContainer($container); } + } + /** + * + * + * @see \Illuminate\View\Factory + */ class View { /** - * Set the default named parameters used by the URL generator. + * Get the evaluated view contents for the given view. * - * @param array $defaults - * @return void + * @param string $path + * @param \Illuminate\Contracts\Support\Arrayable|array $data + * @param array $mergeData + * @return \Illuminate\Contracts\View\View * @static - */ - public static function defaults($defaults) + */ public static function file($path, $data = [], $mergeData = []) { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - $instance->defaults($defaults); + /** @var \Illuminate\View\Factory $instance */ + return $instance->file($path, $data, $mergeData); } /** - * Get the default named parameters used by the URL generator. + * Get the evaluated view contents for the given view. * - * @return array + * @param string $view + * @param \Illuminate\Contracts\Support\Arrayable|array $data + * @param array $mergeData + * @return \Illuminate\Contracts\View\View * @static - */ - public static function getDefaultParameters() + */ public static function make($view, $data = [], $mergeData = []) { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->getDefaultParameters(); + /** @var \Illuminate\View\Factory $instance */ + return $instance->make($view, $data, $mergeData); } /** - * Force the scheme for URLs. + * Get the first view that actually exists from the given list. * - * @param string|null $scheme - * @return void + * @param array $views + * @param \Illuminate\Contracts\Support\Arrayable|array $data + * @param array $mergeData + * @return \Illuminate\Contracts\View\View + * @throws \InvalidArgumentException * @static - */ - public static function forceScheme($scheme) + */ public static function first($views, $data = [], $mergeData = []) { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - $instance->forceScheme($scheme); + /** @var \Illuminate\View\Factory $instance */ + return $instance->first($views, $data, $mergeData); } /** - * Set the forced root URL. + * Get the rendered content of the view based on a given condition. * - * @param string|null $root - * @return void + * @param bool $condition + * @param string $view + * @param \Illuminate\Contracts\Support\Arrayable|array $data + * @param array $mergeData + * @return string * @static - */ - public static function forceRootUrl($root) + */ public static function renderWhen($condition, $view, $data = [], $mergeData = []) { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - $instance->forceRootUrl($root); + /** @var \Illuminate\View\Factory $instance */ + return $instance->renderWhen($condition, $view, $data, $mergeData); } /** - * Set a callback to be used to format the host of generated URLs. + * Get the rendered content of the view based on the negation of a given condition. * - * @param \Closure $callback - * @return \Illuminate\Routing\UrlGenerator + * @param bool $condition + * @param string $view + * @param \Illuminate\Contracts\Support\Arrayable|array $data + * @param array $mergeData + * @return string * @static - */ - public static function formatHostUsing($callback) + */ public static function renderUnless($condition, $view, $data = [], $mergeData = []) { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->formatHostUsing($callback); + /** @var \Illuminate\View\Factory $instance */ + return $instance->renderUnless($condition, $view, $data, $mergeData); } /** - * Set a callback to be used to format the path of generated URLs. + * Get the rendered contents of a partial from a loop. * - * @param \Closure $callback - * @return \Illuminate\Routing\UrlGenerator + * @param string $view + * @param array $data + * @param string $iterator + * @param string $empty + * @return string * @static - */ - public static function formatPathUsing($callback) + */ public static function renderEach($view, $data, $iterator, $empty = 'raw|') { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->formatPathUsing($callback); + /** @var \Illuminate\View\Factory $instance */ + return $instance->renderEach($view, $data, $iterator, $empty); } /** - * Get the path formatter being used by the URL generator. + * Determine if a given view exists. * - * @return \Closure + * @param string $view + * @return bool * @static - */ - public static function pathFormatter() + */ public static function exists($view) { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->pathFormatter(); + /** @var \Illuminate\View\Factory $instance */ + return $instance->exists($view); } /** - * Get the request instance. + * Get the appropriate view engine for the given path. * - * @return \Illuminate\Http\Request + * @param string $path + * @return \Illuminate\Contracts\View\Engine + * @throws \InvalidArgumentException * @static - */ - public static function getRequest() + */ public static function getEngineFromPath($path) { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->getRequest(); + /** @var \Illuminate\View\Factory $instance */ + return $instance->getEngineFromPath($path); } /** - * Set the current request instance. + * Add a piece of shared data to the environment. * - * @param \Illuminate\Http\Request $request - * @return void + * @param array|string $key + * @param mixed|null $value + * @return mixed * @static - */ - public static function setRequest($request) + */ public static function share($key, $value = null) { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - $instance->setRequest($request); + /** @var \Illuminate\View\Factory $instance */ + return $instance->share($key, $value); } /** - * Set the route collection. + * Increment the rendering counter. * - * @param \Illuminate\Routing\RouteCollectionInterface $routes - * @return \Illuminate\Routing\UrlGenerator + * @return void * @static - */ - public static function setRoutes($routes) + */ public static function incrementRender() { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->setRoutes($routes); + /** @var \Illuminate\View\Factory $instance */ + $instance->incrementRender(); } /** - * Set the session resolver for the generator. + * Decrement the rendering counter. * - * @param callable $sessionResolver - * @return \Illuminate\Routing\UrlGenerator + * @return void * @static - */ - public static function setSessionResolver($sessionResolver) + */ public static function decrementRender() { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->setSessionResolver($sessionResolver); + /** @var \Illuminate\View\Factory $instance */ + $instance->decrementRender(); } /** - * Set the encryption key resolver. + * Check if there are no active render operations. * - * @param callable $keyResolver - * @return \Illuminate\Routing\UrlGenerator + * @return bool * @static - */ - public static function setKeyResolver($keyResolver) + */ public static function doneRendering() { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->setKeyResolver($keyResolver); + /** @var \Illuminate\View\Factory $instance */ + return $instance->doneRendering(); } /** - * Clone a new instance of the URL generator with a different encryption key resolver. + * Determine if the given once token has been rendered. * - * @param callable $keyResolver - * @return \Illuminate\Routing\UrlGenerator + * @param string $id + * @return bool * @static - */ - public static function withKeyResolver($keyResolver) + */ public static function hasRenderedOnce($id) { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->withKeyResolver($keyResolver); + /** @var \Illuminate\View\Factory $instance */ + return $instance->hasRenderedOnce($id); } /** - * Get the root controller namespace. + * Mark the given once token as having been rendered. * - * @return string + * @param string $id + * @return void * @static - */ - public static function getRootControllerNamespace() + */ public static function markAsRenderedOnce($id) { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->getRootControllerNamespace(); + /** @var \Illuminate\View\Factory $instance */ + $instance->markAsRenderedOnce($id); } /** - * Set the root controller namespace. + * Add a location to the array of view locations. * - * @param string $rootNamespace - * @return \Illuminate\Routing\UrlGenerator + * @param string $location + * @return void * @static - */ - public static function setRootControllerNamespace($rootNamespace) + */ public static function addLocation($location) { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->setRootControllerNamespace($rootNamespace); + /** @var \Illuminate\View\Factory $instance */ + $instance->addLocation($location); } /** - * Register a custom macro. + * Add a new namespace to the loader. * - * @param string $name - * @param object|callable $macro - * @return void + * @param string $namespace + * @param string|array $hints + * @return \Illuminate\View\Factory * @static - */ - public static function macro($name, $macro) + */ public static function addNamespace($namespace, $hints) { - \Illuminate\Routing\UrlGenerator::macro($name, $macro); + /** @var \Illuminate\View\Factory $instance */ + return $instance->addNamespace($namespace, $hints); } /** - * Mix another object into the class. + * Prepend a new namespace to the loader. * - * @param object $mixin - * @param bool $replace - * @return void - * @throws \ReflectionException + * @param string $namespace + * @param string|array $hints + * @return \Illuminate\View\Factory * @static - */ - public static function mixin($mixin, $replace = true) + */ public static function prependNamespace($namespace, $hints) { - \Illuminate\Routing\UrlGenerator::mixin($mixin, $replace); + /** @var \Illuminate\View\Factory $instance */ + return $instance->prependNamespace($namespace, $hints); } /** - * Checks if macro is registered. + * Replace the namespace hints for the given namespace. * - * @param string $name - * @return bool + * @param string $namespace + * @param string|array $hints + * @return \Illuminate\View\Factory * @static - */ - public static function hasMacro($name) + */ public static function replaceNamespace($namespace, $hints) { - return \Illuminate\Routing\UrlGenerator::hasMacro($name); + /** @var \Illuminate\View\Factory $instance */ + return $instance->replaceNamespace($namespace, $hints); } /** - * Flush the existing macros. + * Register a valid view extension and its engine. * + * @param string $extension + * @param string $engine + * @param \Closure|null $resolver * @return void * @static - */ - public static function flushMacros() + */ public static function addExtension($extension, $engine, $resolver = null) { - \Illuminate\Routing\UrlGenerator::flushMacros(); + /** @var \Illuminate\View\Factory $instance */ + $instance->addExtension($extension, $engine, $resolver); } - - } - /** - * - * - * @see \Illuminate\Validation\Factory - */ - class Validator { /** - * Create a new Validator instance. + * Flush all of the factory state like sections and stacks. * - * @param array $data - * @param array $rules - * @param array $messages - * @param array $customAttributes - * @return \Illuminate\Validation\Validator + * @return void * @static - */ - public static function make($data, $rules, $messages = [], $customAttributes = []) + */ public static function flushState() { - /** @var \Illuminate\Validation\Factory $instance */ - return $instance->make($data, $rules, $messages, $customAttributes); + /** @var \Illuminate\View\Factory $instance */ + $instance->flushState(); } /** - * Validate the given data against the provided rules. + * Flush all of the section contents if done rendering. * - * @param array $data - * @param array $rules - * @param array $messages - * @param array $customAttributes - * @return array - * @throws \Illuminate\Validation\ValidationException + * @return void * @static - */ - public static function validate($data, $rules, $messages = [], $customAttributes = []) + */ public static function flushStateIfDoneRendering() { - /** @var \Illuminate\Validation\Factory $instance */ - return $instance->validate($data, $rules, $messages, $customAttributes); + /** @var \Illuminate\View\Factory $instance */ + $instance->flushStateIfDoneRendering(); } /** - * Register a custom validator extension. + * Get the extension to engine bindings. * - * @param string $rule - * @param \Closure|string $extension - * @param string|null $message - * @return void + * @return array * @static - */ - public static function extend($rule, $extension, $message = null) + */ public static function getExtensions() { - /** @var \Illuminate\Validation\Factory $instance */ - $instance->extend($rule, $extension, $message); + /** @var \Illuminate\View\Factory $instance */ + return $instance->getExtensions(); } /** - * Register a custom implicit validator extension. + * Get the engine resolver instance. * - * @param string $rule - * @param \Closure|string $extension - * @param string|null $message - * @return void + * @return \Illuminate\View\Engines\EngineResolver * @static - */ - public static function extendImplicit($rule, $extension, $message = null) + */ public static function getEngineResolver() { - /** @var \Illuminate\Validation\Factory $instance */ - $instance->extendImplicit($rule, $extension, $message); + /** @var \Illuminate\View\Factory $instance */ + return $instance->getEngineResolver(); } /** - * Register a custom dependent validator extension. + * Get the view finder instance. * - * @param string $rule - * @param \Closure|string $extension - * @param string|null $message - * @return void + * @return \Illuminate\View\ViewFinderInterface * @static - */ - public static function extendDependent($rule, $extension, $message = null) + */ public static function getFinder() { - /** @var \Illuminate\Validation\Factory $instance */ - $instance->extendDependent($rule, $extension, $message); + /** @var \Illuminate\View\Factory $instance */ + return $instance->getFinder(); } /** - * Register a custom validator message replacer. + * Set the view finder instance. * - * @param string $rule - * @param \Closure|string $replacer + * @param \Illuminate\View\ViewFinderInterface $finder * @return void * @static - */ - public static function replacer($rule, $replacer) + */ public static function setFinder($finder) { - /** @var \Illuminate\Validation\Factory $instance */ - $instance->replacer($rule, $replacer); + /** @var \Illuminate\View\Factory $instance */ + $instance->setFinder($finder); } /** - * Indicate that unvalidated array keys should be included in validated data when the parent array is validated. + * Flush the cache of views located by the finder. * * @return void * @static - */ - public static function includeUnvalidatedArrayKeys() + */ public static function flushFinderCache() { - /** @var \Illuminate\Validation\Factory $instance */ - $instance->includeUnvalidatedArrayKeys(); + /** @var \Illuminate\View\Factory $instance */ + $instance->flushFinderCache(); } /** - * Indicate that unvalidated array keys should be excluded from the validated data, even if the parent array was validated. + * Get the event dispatcher instance. * - * @return void + * @return \Illuminate\Contracts\Events\Dispatcher * @static - */ - public static function excludeUnvalidatedArrayKeys() + */ public static function getDispatcher() { - /** @var \Illuminate\Validation\Factory $instance */ - $instance->excludeUnvalidatedArrayKeys(); + /** @var \Illuminate\View\Factory $instance */ + return $instance->getDispatcher(); } /** - * Set the Validator instance resolver. + * Set the event dispatcher instance. * - * @param \Closure $resolver + * @param \Illuminate\Contracts\Events\Dispatcher $events * @return void * @static - */ - public static function resolver($resolver) + */ public static function setDispatcher($events) { - /** @var \Illuminate\Validation\Factory $instance */ - $instance->resolver($resolver); + /** @var \Illuminate\View\Factory $instance */ + $instance->setDispatcher($events); } /** - * Get the Translator implementation. + * Get the IoC container instance. * - * @return \Illuminate\Contracts\Translation\Translator + * @return \Illuminate\Contracts\Container\Container * @static - */ - public static function getTranslator() + */ public static function getContainer() { - /** @var \Illuminate\Validation\Factory $instance */ - return $instance->getTranslator(); + /** @var \Illuminate\View\Factory $instance */ + return $instance->getContainer(); } /** - * Get the Presence Verifier implementation. + * Set the IoC container instance. * - * @return \Illuminate\Validation\PresenceVerifierInterface + * @param \Illuminate\Contracts\Container\Container $container + * @return void * @static - */ - public static function getPresenceVerifier() + */ public static function setContainer($container) { - /** @var \Illuminate\Validation\Factory $instance */ - return $instance->getPresenceVerifier(); + /** @var \Illuminate\View\Factory $instance */ + $instance->setContainer($container); } /** - * Set the Presence Verifier implementation. + * Get an item from the shared data. * - * @param \Illuminate\Validation\PresenceVerifierInterface $presenceVerifier - * @return void + * @param string $key + * @param mixed $default + * @return mixed * @static - */ - public static function setPresenceVerifier($presenceVerifier) + */ public static function shared($key, $default = null) { - /** @var \Illuminate\Validation\Factory $instance */ - $instance->setPresenceVerifier($presenceVerifier); + /** @var \Illuminate\View\Factory $instance */ + return $instance->shared($key, $default); } /** - * Get the container instance used by the validation factory. + * Get all of the shared data for the environment. * - * @return \Illuminate\Contracts\Container\Container|null + * @return array * @static - */ - public static function getContainer() + */ public static function getShared() { - /** @var \Illuminate\Validation\Factory $instance */ - return $instance->getContainer(); + /** @var \Illuminate\View\Factory $instance */ + return $instance->getShared(); } /** - * Set the container instance used by the validation factory. + * Register a custom macro. * - * @param \Illuminate\Contracts\Container\Container $container - * @return \Illuminate\Validation\Factory + * @param string $name + * @param object|callable $macro + * @return void * @static - */ - public static function setContainer($container) + */ public static function macro($name, $macro) { - /** @var \Illuminate\Validation\Factory $instance */ - return $instance->setContainer($container); + \Illuminate\View\Factory::macro($name, $macro); } - - } - /** - * - * - * @see \Illuminate\View\Factory - */ - class View { /** - * Get the evaluated view contents for the given view. + * Mix another object into the class. * - * @param string $path - * @param \Illuminate\Contracts\Support\Arrayable|array $data - * @param array $mergeData - * @return \Illuminate\Contracts\View\View + * @param object $mixin + * @param bool $replace + * @return void + * @throws \ReflectionException * @static - */ - public static function file($path, $data = [], $mergeData = []) + */ public static function mixin($mixin, $replace = true) { - /** @var \Illuminate\View\Factory $instance */ - return $instance->file($path, $data, $mergeData); + \Illuminate\View\Factory::mixin($mixin, $replace); } /** - * Get the evaluated view contents for the given view. + * Checks if macro is registered. * - * @param string $view - * @param \Illuminate\Contracts\Support\Arrayable|array $data - * @param array $mergeData - * @return \Illuminate\Contracts\View\View + * @param string $name + * @return bool * @static - */ - public static function make($view, $data = [], $mergeData = []) + */ public static function hasMacro($name) { - /** @var \Illuminate\View\Factory $instance */ - return $instance->make($view, $data, $mergeData); + return \Illuminate\View\Factory::hasMacro($name); } /** - * Get the first view that actually exists from the given list. + * Flush the existing macros. * - * @param array $views - * @param \Illuminate\Contracts\Support\Arrayable|array $data - * @param array $mergeData - * @return \Illuminate\Contracts\View\View - * @throws \InvalidArgumentException + * @return void * @static - */ - public static function first($views, $data = [], $mergeData = []) + */ public static function flushMacros() { - /** @var \Illuminate\View\Factory $instance */ - return $instance->first($views, $data, $mergeData); + \Illuminate\View\Factory::flushMacros(); } /** - * Get the rendered content of the view based on a given condition. + * Start a component rendering process. * - * @param bool $condition - * @param string $view - * @param \Illuminate\Contracts\Support\Arrayable|array $data - * @param array $mergeData - * @return string + * @param \Illuminate\Contracts\View\View|\Illuminate\Contracts\Support\Htmlable|\Closure|string $view + * @param array $data + * @return void * @static - */ - public static function renderWhen($condition, $view, $data = [], $mergeData = []) + */ public static function startComponent($view, $data = []) { /** @var \Illuminate\View\Factory $instance */ - return $instance->renderWhen($condition, $view, $data, $mergeData); + $instance->startComponent($view, $data); } /** - * Get the rendered content of the view based on the negation of a given condition. + * Get the first view that actually exists from the given list, and start a component. * - * @param bool $condition - * @param string $view - * @param \Illuminate\Contracts\Support\Arrayable|array $data - * @param array $mergeData - * @return string + * @param array $names + * @param array $data + * @return void * @static - */ - public static function renderUnless($condition, $view, $data = [], $mergeData = []) + */ public static function startComponentFirst($names, $data = []) { /** @var \Illuminate\View\Factory $instance */ - return $instance->renderUnless($condition, $view, $data, $mergeData); + $instance->startComponentFirst($names, $data); } /** - * Get the rendered contents of a partial from a loop. + * Render the current component. * - * @param string $view - * @param array $data - * @param string $iterator - * @param string $empty * @return string * @static - */ - public static function renderEach($view, $data, $iterator, $empty = 'raw|') + */ public static function renderComponent() { /** @var \Illuminate\View\Factory $instance */ - return $instance->renderEach($view, $data, $iterator, $empty); + return $instance->renderComponent(); } /** - * Determine if a given view exists. + * Get an item from the component data that exists above the current component. * - * @param string $view - * @return bool + * @param string $key + * @param mixed $default + * @return mixed|null * @static - */ - public static function exists($view) + */ public static function getConsumableComponentData($key, $default = null) { /** @var \Illuminate\View\Factory $instance */ - return $instance->exists($view); + return $instance->getConsumableComponentData($key, $default); } /** - * Get the appropriate view engine for the given path. + * Start the slot rendering process. * - * @param string $path - * @return \Illuminate\Contracts\View\Engine - * @throws \InvalidArgumentException + * @param string $name + * @param string|null $content + * @param array $attributes + * @return void * @static - */ - public static function getEngineFromPath($path) + */ public static function slot($name, $content = null, $attributes = []) { /** @var \Illuminate\View\Factory $instance */ - return $instance->getEngineFromPath($path); + $instance->slot($name, $content, $attributes); } /** - * Add a piece of shared data to the environment. + * Save the slot content for rendering. * - * @param array|string $key - * @param mixed|null $value - * @return mixed + * @return void * @static - */ - public static function share($key, $value = null) + */ public static function endSlot() { /** @var \Illuminate\View\Factory $instance */ - return $instance->share($key, $value); + $instance->endSlot(); } /** - * Increment the rendering counter. + * Register a view creator event. * - * @return void + * @param array|string $views + * @param \Closure|string $callback + * @return array * @static - */ - public static function incrementRender() + */ public static function creator($views, $callback) { /** @var \Illuminate\View\Factory $instance */ - $instance->incrementRender(); + return $instance->creator($views, $callback); } /** - * Decrement the rendering counter. + * Register multiple view composers via an array. * - * @return void + * @param array $composers + * @return array * @static - */ - public static function decrementRender() + */ public static function composers($composers) { /** @var \Illuminate\View\Factory $instance */ - $instance->decrementRender(); + return $instance->composers($composers); } /** - * Check if there are no active render operations. + * Register a view composer event. * - * @return bool + * @param array|string $views + * @param \Closure|string $callback + * @return array * @static - */ - public static function doneRendering() + */ public static function composer($views, $callback) { /** @var \Illuminate\View\Factory $instance */ - return $instance->doneRendering(); + return $instance->composer($views, $callback); } /** - * Determine if the given once token has been rendered. + * Call the composer for a given view. * - * @param string $id - * @return bool + * @param \Illuminate\Contracts\View\View $view + * @return void * @static - */ - public static function hasRenderedOnce($id) + */ public static function callComposer($view) { /** @var \Illuminate\View\Factory $instance */ - return $instance->hasRenderedOnce($id); + $instance->callComposer($view); } /** - * Mark the given once token as having been rendered. + * Call the creator for a given view. * - * @param string $id + * @param \Illuminate\Contracts\View\View $view * @return void * @static - */ - public static function markAsRenderedOnce($id) + */ public static function callCreator($view) { /** @var \Illuminate\View\Factory $instance */ - $instance->markAsRenderedOnce($id); + $instance->callCreator($view); } /** - * Add a location to the array of view locations. + * Start injecting content into a fragment. * - * @param string $location + * @param string $fragment * @return void * @static - */ - public static function addLocation($location) + */ public static function startFragment($fragment) { /** @var \Illuminate\View\Factory $instance */ - $instance->addLocation($location); + $instance->startFragment($fragment); } /** - * Add a new namespace to the loader. + * Stop injecting content into a fragment. * - * @param string $namespace - * @param string|array $hints - * @return \Illuminate\View\Factory + * @return string + * @throws \InvalidArgumentException * @static - */ - public static function addNamespace($namespace, $hints) + */ public static function stopFragment() { /** @var \Illuminate\View\Factory $instance */ - return $instance->addNamespace($namespace, $hints); + return $instance->stopFragment(); } /** - * Prepend a new namespace to the loader. + * Get the contents of a fragment. * - * @param string $namespace - * @param string|array $hints - * @return \Illuminate\View\Factory + * @param string $name + * @param string|null $default + * @return mixed * @static - */ - public static function prependNamespace($namespace, $hints) + */ public static function getFragment($name, $default = null) { /** @var \Illuminate\View\Factory $instance */ - return $instance->prependNamespace($namespace, $hints); + return $instance->getFragment($name, $default); } /** - * Replace the namespace hints for the given namespace. + * Get the entire array of rendered fragments. * - * @param string $namespace - * @param string|array $hints - * @return \Illuminate\View\Factory + * @return array * @static - */ - public static function replaceNamespace($namespace, $hints) + */ public static function getFragments() { /** @var \Illuminate\View\Factory $instance */ - return $instance->replaceNamespace($namespace, $hints); + return $instance->getFragments(); } /** - * Register a valid view extension and its engine. + * Flush all of the fragments. * - * @param string $extension - * @param string $engine - * @param \Closure|null $resolver * @return void * @static - */ - public static function addExtension($extension, $engine, $resolver = null) + */ public static function flushFragments() { /** @var \Illuminate\View\Factory $instance */ - $instance->addExtension($extension, $engine, $resolver); + $instance->flushFragments(); } /** - * Flush all of the factory state like sections and stacks. + * Start injecting content into a section. * + * @param string $section + * @param string|null $content * @return void * @static - */ - public static function flushState() + */ public static function startSection($section, $content = null) { /** @var \Illuminate\View\Factory $instance */ - $instance->flushState(); + $instance->startSection($section, $content); } /** - * Flush all of the section contents if done rendering. + * Inject inline content into a section. * + * @param string $section + * @param string $content * @return void * @static - */ - public static function flushStateIfDoneRendering() + */ public static function inject($section, $content) { /** @var \Illuminate\View\Factory $instance */ - $instance->flushStateIfDoneRendering(); + $instance->inject($section, $content); } /** - * Get the extension to engine bindings. + * Stop injecting content into a section and return its contents. * - * @return array + * @return string * @static - */ - public static function getExtensions() + */ public static function yieldSection() { /** @var \Illuminate\View\Factory $instance */ - return $instance->getExtensions(); + return $instance->yieldSection(); } /** - * Get the engine resolver instance. + * Stop injecting content into a section. * - * @return \Illuminate\View\Engines\EngineResolver + * @param bool $overwrite + * @return string + * @throws \InvalidArgumentException * @static - */ - public static function getEngineResolver() + */ public static function stopSection($overwrite = false) { /** @var \Illuminate\View\Factory $instance */ - return $instance->getEngineResolver(); + return $instance->stopSection($overwrite); } /** - * Get the view finder instance. + * Stop injecting content into a section and append it. * - * @return \Illuminate\View\ViewFinderInterface + * @return string + * @throws \InvalidArgumentException * @static - */ - public static function getFinder() + */ public static function appendSection() { /** @var \Illuminate\View\Factory $instance */ - return $instance->getFinder(); + return $instance->appendSection(); } /** - * Set the view finder instance. + * Get the string contents of a section. * - * @param \Illuminate\View\ViewFinderInterface $finder - * @return void + * @param string $section + * @param string $default + * @return string * @static - */ - public static function setFinder($finder) + */ public static function yieldContent($section, $default = '') { /** @var \Illuminate\View\Factory $instance */ - $instance->setFinder($finder); + return $instance->yieldContent($section, $default); } /** - * Flush the cache of views located by the finder. + * Get the parent placeholder for the current request. * - * @return void + * @param string $section + * @return string + * @static + */ public static function parentPlaceholder($section = '') + { + return \Illuminate\View\Factory::parentPlaceholder($section); + } + /** + * Check if section exists. + * + * @param string $name + * @return bool * @static - */ - public static function flushFinderCache() + */ public static function hasSection($name) { /** @var \Illuminate\View\Factory $instance */ - $instance->flushFinderCache(); + return $instance->hasSection($name); } /** - * Get the event dispatcher instance. + * Check if section does not exist. * - * @return \Illuminate\Contracts\Events\Dispatcher + * @param string $name + * @return bool * @static - */ - public static function getDispatcher() + */ public static function sectionMissing($name) { /** @var \Illuminate\View\Factory $instance */ - return $instance->getDispatcher(); + return $instance->sectionMissing($name); } /** - * Set the event dispatcher instance. + * Get the contents of a section. * - * @param \Illuminate\Contracts\Events\Dispatcher $events - * @return void + * @param string $name + * @param string|null $default + * @return mixed * @static - */ - public static function setDispatcher($events) + */ public static function getSection($name, $default = null) { /** @var \Illuminate\View\Factory $instance */ - $instance->setDispatcher($events); + return $instance->getSection($name, $default); } /** - * Get the IoC container instance. + * Get the entire array of sections. * - * @return \Illuminate\Contracts\Container\Container + * @return array * @static - */ - public static function getContainer() + */ public static function getSections() { /** @var \Illuminate\View\Factory $instance */ - return $instance->getContainer(); + return $instance->getSections(); } /** - * Set the IoC container instance. + * Flush all of the sections. * - * @param \Illuminate\Contracts\Container\Container $container * @return void * @static - */ - public static function setContainer($container) + */ public static function flushSections() { /** @var \Illuminate\View\Factory $instance */ - $instance->setContainer($container); + $instance->flushSections(); } /** - * Get an item from the shared data. + * Add new loop to the stack. * - * @param string $key - * @param mixed $default - * @return mixed + * @param \Countable|array $data + * @return void * @static - */ - public static function shared($key, $default = null) + */ public static function addLoop($data) { /** @var \Illuminate\View\Factory $instance */ - return $instance->shared($key, $default); + $instance->addLoop($data); } /** - * Get all of the shared data for the environment. + * Increment the top loop's indices. * - * @return array + * @return void * @static - */ - public static function getShared() + */ public static function incrementLoopIndices() { /** @var \Illuminate\View\Factory $instance */ - return $instance->getShared(); + $instance->incrementLoopIndices(); } /** - * Register a custom macro. + * Pop a loop from the top of the loop stack. * - * @param string $name - * @param object|callable $macro * @return void * @static - */ - public static function macro($name, $macro) + */ public static function popLoop() { - \Illuminate\View\Factory::macro($name, $macro); + /** @var \Illuminate\View\Factory $instance */ + $instance->popLoop(); } /** - * Mix another object into the class. + * Get an instance of the last loop in the stack. * - * @param object $mixin - * @param bool $replace - * @return void - * @throws \ReflectionException + * @return \stdClass|null * @static - */ - public static function mixin($mixin, $replace = true) + */ public static function getLastLoop() { - \Illuminate\View\Factory::mixin($mixin, $replace); + /** @var \Illuminate\View\Factory $instance */ + return $instance->getLastLoop(); } /** - * Checks if macro is registered. + * Get the entire loop stack. * - * @param string $name - * @return bool + * @return array * @static - */ - public static function hasMacro($name) + */ public static function getLoopStack() { - return \Illuminate\View\Factory::hasMacro($name); + /** @var \Illuminate\View\Factory $instance */ + return $instance->getLoopStack(); } /** - * Flush the existing macros. + * Start injecting content into a push section. * + * @param string $section + * @param string $content * @return void * @static - */ - public static function flushMacros() + */ public static function startPush($section, $content = '') { - \Illuminate\View\Factory::flushMacros(); + /** @var \Illuminate\View\Factory $instance */ + $instance->startPush($section, $content); } /** - * Start a component rendering process. + * Stop injecting content into a push section. * - * @param \Illuminate\Contracts\View\View|\Illuminate\Contracts\Support\Htmlable|\Closure|string $view - * @param array $data - * @return void + * @return string + * @throws \InvalidArgumentException * @static - */ - public static function startComponent($view, $data = []) + */ public static function stopPush() { /** @var \Illuminate\View\Factory $instance */ - $instance->startComponent($view, $data); + return $instance->stopPush(); } /** - * Get the first view that actually exists from the given list, and start a component. + * Start prepending content into a push section. * - * @param array $names - * @param array $data + * @param string $section + * @param string $content * @return void * @static - */ - public static function startComponentFirst($names, $data = []) + */ public static function startPrepend($section, $content = '') { /** @var \Illuminate\View\Factory $instance */ - $instance->startComponentFirst($names, $data); + $instance->startPrepend($section, $content); } /** - * Render the current component. + * Stop prepending content into a push section. * * @return string + * @throws \InvalidArgumentException * @static - */ - public static function renderComponent() + */ public static function stopPrepend() { /** @var \Illuminate\View\Factory $instance */ - return $instance->renderComponent(); + return $instance->stopPrepend(); } /** - * Get an item from the component data that exists above the current component. + * Get the string contents of a push section. * - * @param string $key - * @param mixed $default - * @return mixed|null + * @param string $section + * @param string $default + * @return string * @static - */ - public static function getConsumableComponentData($key, $default = null) + */ public static function yieldPushContent($section, $default = '') { /** @var \Illuminate\View\Factory $instance */ - return $instance->getConsumableComponentData($key, $default); + return $instance->yieldPushContent($section, $default); } /** - * Start the slot rendering process. + * Flush all of the stacks. * - * @param string $name - * @param string|null $content - * @param array $attributes * @return void * @static - */ - public static function slot($name, $content = null, $attributes = []) + */ public static function flushStacks() { /** @var \Illuminate\View\Factory $instance */ - $instance->slot($name, $content, $attributes); + $instance->flushStacks(); } /** - * Save the slot content for rendering. + * Start a translation block. * + * @param array $replacements * @return void * @static - */ - public static function endSlot() + */ public static function startTranslation($replacements = []) { /** @var \Illuminate\View\Factory $instance */ - $instance->endSlot(); + $instance->startTranslation($replacements); } /** - * Register a view creator event. + * Render the current translation. * - * @param array|string $views - * @param \Closure|string $callback - * @return array + * @return string * @static - */ - public static function creator($views, $callback) + */ public static function renderTranslation() { /** @var \Illuminate\View\Factory $instance */ - return $instance->creator($views, $callback); + return $instance->renderTranslation(); } + } + /** + * + * + * @see \Illuminate\Foundation\Vite + */ class Vite { /** - * Register multiple view composers via an array. + * Get the preloaded assets. * - * @param array $composers * @return array * @static - */ - public static function composers($composers) + */ public static function preloadedAssets() { - /** @var \Illuminate\View\Factory $instance */ - return $instance->composers($composers); + /** @var \Illuminate\Foundation\Vite $instance */ + return $instance->preloadedAssets(); } /** - * Register a view composer event. + * Get the Content Security Policy nonce applied to all generated tags. * - * @param array|string $views - * @param \Closure|string $callback - * @return array + * @return string|null * @static - */ - public static function composer($views, $callback) + */ public static function cspNonce() { - /** @var \Illuminate\View\Factory $instance */ - return $instance->composer($views, $callback); + /** @var \Illuminate\Foundation\Vite $instance */ + return $instance->cspNonce(); } /** - * Call the composer for a given view. + * Generate or set a Content Security Policy nonce to apply to all generated tags. * - * @param \Illuminate\Contracts\View\View $view - * @return void + * @param string|null $nonce + * @return string * @static - */ - public static function callComposer($view) + */ public static function useCspNonce($nonce = null) { - /** @var \Illuminate\View\Factory $instance */ - $instance->callComposer($view); + /** @var \Illuminate\Foundation\Vite $instance */ + return $instance->useCspNonce($nonce); } /** - * Call the creator for a given view. + * Use the given key to detect integrity hashes in the manifest. * - * @param \Illuminate\Contracts\View\View $view - * @return void + * @param string|false $key + * @return \Illuminate\Foundation\Vite * @static - */ - public static function callCreator($view) + */ public static function useIntegrityKey($key) { - /** @var \Illuminate\View\Factory $instance */ - $instance->callCreator($view); + /** @var \Illuminate\Foundation\Vite $instance */ + return $instance->useIntegrityKey($key); } /** - * Start injecting content into a fragment. + * Set the Vite entry points. * - * @param string $fragment - * @return void + * @param array $entryPoints + * @return \Illuminate\Foundation\Vite * @static - */ - public static function startFragment($fragment) + */ public static function withEntryPoints($entryPoints) { - /** @var \Illuminate\View\Factory $instance */ - $instance->startFragment($fragment); + /** @var \Illuminate\Foundation\Vite $instance */ + return $instance->withEntryPoints($entryPoints); } /** - * Stop injecting content into a fragment. + * Set the filename for the manifest file. * - * @return string - * @throws \InvalidArgumentException + * @param string $filename + * @return \Illuminate\Foundation\Vite * @static - */ - public static function stopFragment() + */ public static function useManifestFilename($filename) { - /** @var \Illuminate\View\Factory $instance */ - return $instance->stopFragment(); + /** @var \Illuminate\Foundation\Vite $instance */ + return $instance->useManifestFilename($filename); } /** - * Get the contents of a fragment. + * Resolve asset paths using the provided resolver. * - * @param string $name - * @param string|null $default - * @return mixed + * @param callable|null $resolver + * @return \Illuminate\Foundation\Vite * @static - */ - public static function getFragment($name, $default = null) + */ public static function createAssetPathsUsing($resolver) { - /** @var \Illuminate\View\Factory $instance */ - return $instance->getFragment($name, $default); + /** @var \Illuminate\Foundation\Vite $instance */ + return $instance->createAssetPathsUsing($resolver); } /** - * Get the entire array of rendered fragments. + * Get the Vite "hot" file path. * - * @return array + * @return string * @static - */ - public static function getFragments() + */ public static function hotFile() { - /** @var \Illuminate\View\Factory $instance */ - return $instance->getFragments(); + /** @var \Illuminate\Foundation\Vite $instance */ + return $instance->hotFile(); } /** - * Flush all of the fragments. + * Set the Vite "hot" file path. * - * @return void + * @param string $path + * @return \Illuminate\Foundation\Vite * @static - */ - public static function flushFragments() + */ public static function useHotFile($path) { - /** @var \Illuminate\View\Factory $instance */ - $instance->flushFragments(); + /** @var \Illuminate\Foundation\Vite $instance */ + return $instance->useHotFile($path); } /** - * Start injecting content into a section. + * Set the Vite build directory. * - * @param string $section - * @param string|null $content - * @return void + * @param string $path + * @return \Illuminate\Foundation\Vite * @static - */ - public static function startSection($section, $content = null) + */ public static function useBuildDirectory($path) { - /** @var \Illuminate\View\Factory $instance */ - $instance->startSection($section, $content); + /** @var \Illuminate\Foundation\Vite $instance */ + return $instance->useBuildDirectory($path); } /** - * Inject inline content into a section. + * Use the given callback to resolve attributes for script tags. * - * @param string $section - * @param string $content - * @return void + * @param \Illuminate\Foundation\(callable(string, string, ?array, ?array): array)|array $attributes + * @return \Illuminate\Foundation\Vite * @static - */ - public static function inject($section, $content) + */ public static function useScriptTagAttributes($attributes) { - /** @var \Illuminate\View\Factory $instance */ - $instance->inject($section, $content); + /** @var \Illuminate\Foundation\Vite $instance */ + return $instance->useScriptTagAttributes($attributes); } /** - * Stop injecting content into a section and return its contents. + * Use the given callback to resolve attributes for style tags. * - * @return string + * @param \Illuminate\Foundation\(callable(string, string, ?array, ?array): array)|array $attributes + * @return \Illuminate\Foundation\Vite * @static - */ - public static function yieldSection() + */ public static function useStyleTagAttributes($attributes) { - /** @var \Illuminate\View\Factory $instance */ - return $instance->yieldSection(); + /** @var \Illuminate\Foundation\Vite $instance */ + return $instance->useStyleTagAttributes($attributes); } /** - * Stop injecting content into a section. + * Use the given callback to resolve attributes for preload tags. * - * @param bool $overwrite - * @return string - * @throws \InvalidArgumentException + * @param \Illuminate\Foundation\(callable(string, string, ?array, ?array): (array|false))|array|false $attributes + * @return \Illuminate\Foundation\Vite * @static - */ - public static function stopSection($overwrite = false) + */ public static function usePreloadTagAttributes($attributes) { - /** @var \Illuminate\View\Factory $instance */ - return $instance->stopSection($overwrite); + /** @var \Illuminate\Foundation\Vite $instance */ + return $instance->usePreloadTagAttributes($attributes); } /** - * Stop injecting content into a section and append it. + * Generate React refresh runtime script. * - * @return string - * @throws \InvalidArgumentException + * @return \Illuminate\Support\HtmlString|void * @static - */ - public static function appendSection() + */ public static function reactRefresh() { - /** @var \Illuminate\View\Factory $instance */ - return $instance->appendSection(); + /** @var \Illuminate\Foundation\Vite $instance */ + return $instance->reactRefresh(); } /** - * Get the string contents of a section. + * Get the URL for an asset. * - * @param string $section - * @param string $default + * @param string $asset + * @param string|null $buildDirectory * @return string * @static - */ - public static function yieldContent($section, $default = '') + */ public static function asset($asset, $buildDirectory = null) { - /** @var \Illuminate\View\Factory $instance */ - return $instance->yieldContent($section, $default); + /** @var \Illuminate\Foundation\Vite $instance */ + return $instance->asset($asset, $buildDirectory); } /** - * Get the parent placeholder for the current request. + * Get the content of a given asset. * - * @param string $section + * @param string $asset + * @param string|null $buildDirectory * @return string + * @throws \Exception * @static - */ - public static function parentPlaceholder($section = '') + */ public static function content($asset, $buildDirectory = null) { - return \Illuminate\View\Factory::parentPlaceholder($section); + /** @var \Illuminate\Foundation\Vite $instance */ + return $instance->content($asset, $buildDirectory); } /** - * Check if section exists. + * Get a unique hash representing the current manifest, or null if there is no manifest. * - * @param string $name - * @return bool + * @param string|null $buildDirectory + * @return string|null * @static - */ - public static function hasSection($name) + */ public static function manifestHash($buildDirectory = null) { - /** @var \Illuminate\View\Factory $instance */ - return $instance->hasSection($name); + /** @var \Illuminate\Foundation\Vite $instance */ + return $instance->manifestHash($buildDirectory); } /** - * Check if section does not exist. + * Determine if the HMR server is running. * - * @param string $name * @return bool * @static - */ - public static function sectionMissing($name) + */ 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\View\Factory $instance */ - return $instance->sectionMissing($name); + /** @var \Illuminate\Foundation\Vite $instance */ + return $instance->toHtml(); } /** - * Get the contents of a section. + * Register a custom macro. * * @param string $name - * @param string|null $default - * @return mixed + * @param object|callable $macro + * @return void * @static - */ - public static function getSection($name, $default = null) + */ public static function macro($name, $macro) { - /** @var \Illuminate\View\Factory $instance */ - return $instance->getSection($name, $default); + \Illuminate\Foundation\Vite::macro($name, $macro); } /** - * Get the entire array of sections. + * Mix another object into the class. * - * @return array + * @param object $mixin + * @param bool $replace + * @return void + * @throws \ReflectionException * @static - */ - public static function getSections() + */ public static function mixin($mixin, $replace = true) { - /** @var \Illuminate\View\Factory $instance */ - return $instance->getSections(); + \Illuminate\Foundation\Vite::mixin($mixin, $replace); } /** - * Flush all of the sections. + * Checks if macro is registered. * - * @return void + * @param string $name + * @return bool * @static - */ - public static function flushSections() + */ public static function hasMacro($name) { - /** @var \Illuminate\View\Factory $instance */ - $instance->flushSections(); + return \Illuminate\Foundation\Vite::hasMacro($name); } /** - * Add new loop to the stack. + * Flush the existing macros. * - * @param \Countable|array $data * @return void * @static - */ - public static function addLoop($data) + */ public static function flushMacros() { - /** @var \Illuminate\View\Factory $instance */ - $instance->addLoop($data); + \Illuminate\Foundation\Vite::flushMacros(); } + } + } + +namespace App\Facades { + /** + * + * + */ class CdnHelperFacade { /** - * Increment the top loop's indices. + * Create a CDN invalidation for media. * + * @param \App\Enums\MediaType $type + * @param string $invalidationPath * @return void * @static - */ - public static function incrementLoopIndices() + */ public static function invalidateMedia($type, $invalidationPath) { - /** @var \Illuminate\View\Factory $instance */ - $instance->incrementLoopIndices(); + /** @var \App\Helpers\CloudFrontHelper $instance */ + $instance->invalidateMedia($type, $invalidationPath); } /** - * Pop a loop from the top of the loop stack. + * Return whether the CDN is configured. * - * @return void + * @return bool * @static - */ - public static function popLoop() + */ public static function isConfigured() { - /** @var \Illuminate\View\Factory $instance */ - $instance->popLoop(); + /** @var \App\Helpers\CloudFrontHelper $instance */ + return $instance->isConfigured(); } + } + /** + * + * + */ class CloudStorageFacade { /** - * Get an instance of the last loop in the stack. + * Returns the configuration for opening data from the cloud storage. * - * @return \stdClass|null + * @param string $key + * @return array * @static - */ - public static function getLastLoop() + */ public static function getOpenConfiguration($key) { - /** @var \Illuminate\View\Factory $instance */ - return $instance->getLastLoop(); + /** @var \App\Helpers\PhpFfmpegVideoStreaming\S3Helper $instance */ + return $instance->getOpenConfiguration($key); } /** - * Get the entire loop stack. + * Returns the configuration for saving data to the cloud storage. * + * @param string $destinationPath + * @param string $fileName * @return array * @static - */ - public static function getLoopStack() + */ public static function getSaveConfiguration($destinationPath, $fileName) { - /** @var \Illuminate\View\Factory $instance */ - return $instance->getLoopStack(); + /** @var \App\Helpers\PhpFfmpegVideoStreaming\S3Helper $instance */ + return $instance->getSaveConfiguration($destinationPath, $fileName); } + } + /** + * + * + */ class TranscodeFacade { /** - * Start injecting content into a push section. + * Returns the class which handles the actual transcoding. * - * @param string $section - * @param string $content - * @return void + * @return string * @static - */ - public static function startPush($section, $content = '') + */ public static function getJobClass() { - /** @var \Illuminate\View\Factory $instance */ - $instance->startPush($section, $content); + /** @var \App\Classes\Transcode $instance */ + return $instance->getJobClass(); } /** - * Stop injecting content into a push section. + * Creates a job which handles the transcoding of a video. * - * @return string - * @throws \InvalidArgumentException + * @param \App\Models\Version $version + * @param \App\Models\UploadSlot $uploadSlot + * @return bool * @static - */ - public static function stopPush() + */ public static function createJob($version, $uploadSlot) { - /** @var \Illuminate\View\Factory $instance */ - return $instance->stopPush(); + /** @var \App\Classes\Transcode $instance */ + return $instance->createJob($version, $uploadSlot); } /** - * Start prepending content into a push section. + * Creates a job which handles the transcoding of a video when a version number is updated. * - * @param string $section - * @param string $content - * @return void + * @param \App\Models\Version $version + * @param \App\Models\UploadSlot $uploadSlot + * @param int $oldVersionNumber + * @param bool $wasProcessed + * @return bool * @static - */ - public static function startPrepend($section, $content = '') + */ public static function createJobForVersionUpdate($version, $uploadSlot, $oldVersionNumber, $wasProcessed) { - /** @var \Illuminate\View\Factory $instance */ - $instance->startPrepend($section, $content); + /** @var \App\Classes\Transcode $instance */ + return $instance->createJobForVersionUpdate($version, $uploadSlot, $oldVersionNumber, $wasProcessed); } /** - * Stop prepending content into a push section. + * Inform client package about the transcoding result. * - * @return string - * @throws \InvalidArgumentException + * @param \App\Enums\ResponseState $responseState + * @param string $uploadToken + * @param \App\Models\Media $media + * @param int $versionNumber + * @return void * @static - */ - public static function stopPrepend() + */ public static function callback($responseState, $uploadToken, $media, $versionNumber) { - /** @var \Illuminate\View\Factory $instance */ - return $instance->stopPrepend(); + /** @var \App\Classes\Transcode $instance */ + $instance->callback($responseState, $uploadToken, $media, $versionNumber); } + } + /** + * + * + */ class TransformFacade { /** - * Get the string contents of a push section. + * Transmorph image based on specified transformations. * - * @param string $section - * @param string $default - * @return string + * @param string $pathToOriginalImage + * @param array|null $transformations + * @return string Binary string of the image. + * @throws FileNotFoundException * @static - */ - public static function yieldPushContent($section, $default = '') + */ public static function transform($pathToOriginalImage, $transformations = null) { - /** @var \Illuminate\View\Factory $instance */ - return $instance->yieldPushContent($section, $default); + /** @var \App\Classes\Intervention\Transform $instance */ + return $instance->transform($pathToOriginalImage, $transformations); } /** - * Flush all of the stacks. + * Resize an image based on specified width and height. + * + * Keeps the aspect ratio and prevents upsizing. * - * @return void + * @param $image + * @param int $width + * @param int $height * @static - */ - public static function flushStacks() + */ public static function resize($image, $width, $height) { - /** @var \Illuminate\View\Factory $instance */ - $instance->flushStacks(); + /** @var \App\Classes\Intervention\Transform $instance */ + return $instance->resize($image, $width, $height); } /** - * Start a translation block. + * Use a converter class to encode the image to given format and quality. * - * @param array $replacements - * @return void + * @param $image + * @param string $format + * @param int|null $quality + * @return \App\Interfaces\ConvertedImageInterface * @static - */ - public static function startTranslation($replacements = []) + */ public static function format($image, $format, $quality = null) { - /** @var \Illuminate\View\Factory $instance */ - $instance->startTranslation($replacements); + /** @var \App\Classes\Intervention\Transform $instance */ + return $instance->format($image, $format, $quality); } /** - * Render the current translation. + * * - * @return string + * @return string[] * @static - */ - public static function renderTranslation() + */ public static function getSupportedFormats() { - /** @var \Illuminate\View\Factory $instance */ - return $instance->renderTranslation(); + /** @var \App\Classes\Intervention\Transform $instance */ + return $instance->getSupportedFormats(); } - + } } + +namespace Intervention\Image\Facades { /** * * - * @see \Illuminate\Foundation\Vite - */ - class Vite { + */ class Image { /** - * Get the preloaded assets. + * Overrides configuration settings * - * @return array + * @param array $config + * @return self * @static - */ - public static function preloadedAssets() + */ public static function configure($config = []) { - /** @var \Illuminate\Foundation\Vite $instance */ - return $instance->preloadedAssets(); + /** @var \Intervention\Image\ImageManager $instance */ + return $instance->configure($config); } /** - * Get the Content Security Policy nonce applied to all generated tags. + * Initiates an Image instance from different input types * - * @return string|null + * @param mixed $data + * @return \Intervention\Image\Image * @static - */ - public static function cspNonce() + */ public static function make($data) { - /** @var \Illuminate\Foundation\Vite $instance */ - return $instance->cspNonce(); + /** @var \Intervention\Image\ImageManager $instance */ + return $instance->make($data); } /** - * Generate or set a Content Security Policy nonce to apply to all generated tags. + * Creates an empty image canvas * - * @param string|null $nonce - * @return string + * @param int $width + * @param int $height + * @param mixed $background + * @return \Intervention\Image\Image * @static - */ - public static function useCspNonce($nonce = null) + */ public static function canvas($width, $height, $background = null) { - /** @var \Illuminate\Foundation\Vite $instance */ - return $instance->useCspNonce($nonce); + /** @var \Intervention\Image\ImageManager $instance */ + return $instance->canvas($width, $height, $background); } /** - * Use the given key to detect integrity hashes in the manifest. + * Create new cached image and run callback + * (requires additional package intervention/imagecache) * - * @param string|false $key - * @return \Illuminate\Foundation\Vite + * @param \Closure $callback + * @param int $lifetime + * @param boolean $returnObj + * @return \Image * @static - */ - public static function useIntegrityKey($key) + */ public static function cache($callback, $lifetime = null, $returnObj = false) { - /** @var \Illuminate\Foundation\Vite $instance */ - return $instance->useIntegrityKey($key); + /** @var \Intervention\Image\ImageManager $instance */ + return $instance->cache($callback, $lifetime, $returnObj); } + } + /** + * + * + */ class Image { /** - * Set the Vite entry points. + * Overrides configuration settings * - * @param array $entryPoints - * @return \Illuminate\Foundation\Vite + * @param array $config + * @return self * @static - */ - public static function withEntryPoints($entryPoints) + */ public static function configure($config = []) { - /** @var \Illuminate\Foundation\Vite $instance */ - return $instance->withEntryPoints($entryPoints); + /** @var \Intervention\Image\ImageManager $instance */ + return $instance->configure($config); } /** - * Set the filename for the manifest file. + * Initiates an Image instance from different input types * - * @param string $filename - * @return \Illuminate\Foundation\Vite + * @param mixed $data + * @return \Intervention\Image\Image * @static - */ - public static function useManifestFilename($filename) + */ public static function make($data) { - /** @var \Illuminate\Foundation\Vite $instance */ - return $instance->useManifestFilename($filename); + /** @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); } /** - * Get the Vite "hot" file path. + * Create new cached image and run callback + * (requires additional package intervention/imagecache) * - * @return string + * @param \Closure $callback + * @param int $lifetime + * @param boolean $returnObj + * @return \Image * @static - */ - public static function hotFile() + */ 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. + * Copies the specified dump to a local temporary file, in case the dump is stored remotely. * - * @return bool + * @throws Exception + * @throws FileNotFoundException * @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); - } - - } - /** - * - * - */ - class Image { + /** @var \Cybex\Protector\Protector $instance */ + return $instance->shouldDumpCharsets(); + } /** - * 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 +18698,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 +18707,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 +18716,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 +18725,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 +18734,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 +18743,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 +18752,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 +18761,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 +18770,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 +18780,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 +18789,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 +18798,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 +18808,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 +18817,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 +18826,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 +18835,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 +18844,7 @@ public static function registerFlareHandlers() * * * @static - */ - public static function registerExceptionHandler() + */ public static function registerExceptionHandler() { /** @var \Spatie\FlareClient\Flare $instance */ return $instance->registerExceptionHandler(); @@ -18402,8 +18853,7 @@ public static function registerExceptionHandler() * * * @static - */ - public static function registerErrorHandler() + */ public static function registerErrorHandler() { /** @var \Spatie\FlareClient\Flare $instance */ return $instance->registerErrorHandler(); @@ -18414,8 +18864,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 +18874,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 +18887,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 +18896,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 +18906,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 +18915,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 +18924,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 +18933,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 +18942,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 +18951,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 +18960,7 @@ public static function reset() * * * @static - */ - public static function anonymizeIp() + */ public static function anonymizeIp() { /** @var \Spatie\FlareClient\Flare $instance */ return $instance->anonymizeIp(); @@ -18532,8 +18971,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 +18980,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 +18989,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 +18998,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 +19007,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 +19019,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 +19028,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 +19040,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 +19066,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 +19075,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 +19084,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 +19093,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 +19102,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 +19122,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 +19134,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 +19144,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 +19153,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 +19164,25 @@ 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); } - + /** + * + * + * @see \Illuminate\Foundation\Providers\FoundationServiceProvider::registerRequestSignatureValidation() + * @param mixed $ignoreQuery + * @static + */ public static function hasValidRelativeSignatureWhileIgnoring($ignoreQuery = []) + { + return \Illuminate\Http\Request::hasValidRelativeSignatureWhileIgnoring($ignoreQuery); + } + } } - -} -namespace { +namespace { class App extends \Illuminate\Support\Facades\App {} class Arr extends \Illuminate\Support\Arr {} class Artisan extends \Illuminate\Support\Facades\Artisan {} @@ -18770,262 +19192,226 @@ 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 {} 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 +19419,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 +19444,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 +19529,141 @@ 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); } - - /** + /** + * 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. * * @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, $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. * * @param int|null $perPage @@ -19287,14 +19672,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 +19686,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 +19732,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 +20003,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 +20017,42 @@ 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 + * @throws \RuntimeException + * @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 +20061,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 +20087,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 +20101,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 +20125,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 +20151,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 +20166,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 +20182,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 +20195,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 +20208,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 +20233,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 +20249,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 +20263,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 +20303,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 +20317,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 +20331,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 +20358,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 +20373,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 +20386,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 +20399,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 +20519,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 +20532,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 +20650,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 +20675,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 +20965,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 +21005,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 +21082,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 +21107,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 +21498,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 +21513,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 +21526,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 +21540,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 +21565,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 +21590,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 +21638,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 +21651,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 +21676,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 +21829,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 +21890,139 @@ 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); } - - /** + /** + * 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. * * @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 +22030,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 +22043,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 +22411,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 +22424,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 +22488,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 +22501,159 @@ 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. * + * @param mixed $args + * @return \Illuminate\Database\Query\Builder + * @static + */ public static function dump(...$args) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->dump(...$args); + } + /** + * Dump the raw current SQL with embedded bindings. + * * @return \Illuminate\Database\Query\Builder * @static - */ - public static function dump() + */ public static function dumpRawSql() { /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->dump(); + 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 +22661,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 +22682,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,13 +22698,16 @@ 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 {} 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 {} @@ -22596,15 +22718,15 @@ 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 {} + 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/Classes/MediaHandler/ImageHandler.php b/app/Classes/MediaHandler/ImageHandler.php index 81709f86..d71ba05f 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)) { /** @@ -76,16 +74,15 @@ 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. $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 { @@ -122,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 473f87df..a93efb39 100644 --- a/app/Classes/MediaHandler/VideoHandler.php +++ b/app/Classes/MediaHandler/VideoHandler.php @@ -5,13 +5,13 @@ 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; use App\Models\User; use App\Models\Version; use CdnHelper; -use FilePathHelper; use Illuminate\Contracts\Filesystem\Filesystem; use Throwable; use Transcode; @@ -21,14 +21,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; } @@ -63,23 +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) { - $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], ['media_type' => MediaType::VIDEO]); - // 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); - $responseState = $success ? ResponseState::VIDEO_VERSION_SET : ResponseState::TRANSCODING_JOB_DISPATCH_FAILED; - } else { - $responseState = ResponseState::NO_CALLBACK_URL_PROVIDED; - } + $success = Transcode::createJobForVersionUpdate($version, $uploadSlot, $oldVersionNumber, $wasProcessed); + $responseState = $success ? ResponseState::VIDEO_VERSION_SET : ResponseState::TRANSCODING_JOB_DISPATCH_FAILED; return [ $responseState, @@ -109,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 9abb3e89..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; @@ -11,20 +12,28 @@ use App\Models\UploadSlot; use App\Models\Version; use Exception; -use FilePathHelper; use Http; 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. * - * @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 +42,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 +53,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 +60,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; } @@ -67,26 +75,27 @@ public function createJobForVersionUpdate(string $originalFilePath, Version $ver * 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(), FilePathHelper::toBaseDirectory($media)])) + '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 665c4c40..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,12 +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(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/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/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/Console/Kernel.php b/app/Console/Kernel.php index 10a48343..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; @@ -14,9 +13,8 @@ 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,9 +22,9 @@ protected function schedule(Schedule $schedule) * * @return void */ - protected function commands() + protected function commands(): void { - $this->load(__DIR__.'/Commands'); + $this->load(__DIR__ . '/Commands'); require base_path('routes/console.php'); } 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 @@ +validate($value); diff --git a/app/Exceptions/ClientNotificationFailedException.php b/app/Exceptions/ClientNotificationFailedException.php new file mode 100644 index 00000000..c7e1f856 --- /dev/null +++ b/app/Exceptions/ClientNotificationFailedException.php @@ -0,0 +1,26 @@ +reportable(function (Throwable $e) { // 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 @@ +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/Controller.php b/app/Http/Controllers/Controller.php index a0a2a8a3..8677cd5c 100644 --- a/app/Http/Controllers/Controller.php +++ b/app/Http/Controllers/Controller.php @@ -2,12 +2,7 @@ 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 +abstract class Controller { - use AuthorizesRequests, DispatchesJobs, ValidatesRequests; + // } diff --git a/app/Http/Controllers/V1/ImageController.php b/app/Http/Controllers/V1/ImageController.php index af74956b..69f5ba4b 100644 --- a/app/Http/Controllers/V1/ImageController.php +++ b/app/Http/Controllers/V1/ImageController.php @@ -5,13 +5,13 @@ use App\Enums\ImageFormat; use App\Enums\MediaStorage; use App\Enums\Transformation; -use App\Http\Controllers\Controller; +use App\Exceptions\InvalidTransformationFormatException; 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; @@ -45,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))]); } @@ -96,21 +96,19 @@ protected function getDerivative(string $transformations, Version $version): Res { try { $transformationsArray = Transformation::arrayFromString($transformations); - } catch (TransformationNotFoundException|InvalidTransformationValueException $exception) { + } catch (TransformationNotFoundException|InvalidTransformationValueException|InvalidTransformationFormatException $exception) { abort(400, $exception->getMessage()); } $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 14a9c07e..af31198e 100644 --- a/app/Http/Controllers/V1/UploadSlotController.php +++ b/app/Http/Controllers/V1/UploadSlotController.php @@ -7,13 +7,11 @@ use App\Enums\ResponseState; use App\Enums\UploadState; use App\Http\Controllers\Controller; -use App\Http\Requests\V1\ImageUploadSlotRequest; use App\Http\Requests\V1\UploadRequest; -use App\Http\Requests\V1\VideoUploadSlotRequest; +use App\Http\Requests\V1\UploadSlotRequest; 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; @@ -55,25 +53,30 @@ public function receiveFile(UploadRequest $request, UploadSlot $uploadSlot): Jso /** * Handle the incoming request. * - * @param ImageUploadSlotRequest $request + * @param UploadSlotRequest $request * * @return JsonResponse */ - public function reserveImageUploadSlot(ImageUploadSlotRequest $request): JsonResponse + public function reserveImageUploadSlot(UploadSlotRequest $request): JsonResponse { - return $this->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()); } /** @@ -89,27 +92,24 @@ 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; + $versionNumber = $media->latestVersion?->number + 1; $version = $media->Versions()->create(['number' => $versionNumber]); + $basePath = $media->baseDirectory(); - $basePath = FilePathHelper::toBaseDirectory($media); - $fileName = FilePathHelper::createOriginalFileName($version, $uploadedFile->getClientOriginalName()); - $originalsDisk = MediaStorage::ORIGINALS->getDisk(); + $version->update(['filename' => $version->createOriginalFileName($uploadedFile->getClientOriginalName())]); - if ($filePath = $originalsDisk->putFileAs($basePath, $uploadedFile, $fileName)) { - $version->update(['filename' => $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; } if ($responseState->getState() === UploadState::ERROR) { $versionNumber -= 1; - $originalsDisk->delete($filePath); - $version?->delete(); + $version->delete(); } // Delete local file. @@ -122,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 b26b4489..9aaa3244 100644 --- a/app/Http/Controllers/V1/VersionController.php +++ b/app/Http/Controllers/V1/VersionController.php @@ -2,15 +2,12 @@ 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; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; @@ -37,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 @@ -54,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, @@ -63,9 +60,10 @@ 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 + 'upload_token' => $uploadToken, + 'hash' => $media->type->isInstantlyAvailable() ? $version->hash : null, ]); } @@ -78,12 +76,9 @@ 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->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/Http/Kernel.php b/app/Http/Kernel.php deleted file mode 100644 index df8e966e..00000000 --- a/app/Http/Kernel.php +++ /dev/null @@ -1,67 +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, -// 'throttle:api', - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - ]; - - /** - * The application's route middleware. - * - * These middleware may be assigned to groups or used individually. - * - * @var array - */ - protected $routeMiddleware = [ - '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, - '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..114a63d9 100644 --- a/app/Http/Middleware/RedirectIfAuthenticated.php +++ b/app/Http/Middleware/RedirectIfAuthenticated.php @@ -2,28 +2,29 @@ namespace App\Http\Middleware; -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; foreach ($guards as $guard) { if (Auth::guard($guard)->check()) { - return redirect(RouteServiceProvider::HOME); + return redirect()->intended('/home'); } } 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/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 cd272e50..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; @@ -15,11 +13,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 @@ -37,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 713fc264..adc56c75 100644 --- a/app/Interfaces/TranscodeInterface.php +++ b/app/Interfaces/TranscodeInterface.php @@ -5,25 +5,29 @@ use App\Enums\ResponseState; use App\Models\Media; use App\Models\UploadSlot; -use App\Models\User; use App\Models\Version; 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. * - * @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,18 +35,17 @@ 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. * * @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 fda42e7b..8a2180a5 100644 --- a/app/Jobs/TranscodeVideo.php +++ b/app/Jobs/TranscodeVideo.php @@ -5,13 +5,11 @@ 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; use CloudStorage; use FFMpeg\Format\Video\X264; -use FilePathHelper; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Filesystem\Filesystem; use Illuminate\Contracts\Queue\ShouldQueue; @@ -31,31 +29,33 @@ 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; protected Filesystem $derivativesDisk; protected Filesystem $localDisk; - protected string $callbackUrl; + protected string $originalFilePath; 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; @@ -65,7 +65,6 @@ class TranscodeVideo implements ShouldQueue * @return void */ public function __construct( - protected string $originalFilePath, protected Version $version, protected UploadSlot $uploadSlot, protected ?int $oldVersionNumber = null, @@ -73,7 +72,7 @@ public function __construct( ) { $this->onQueue('video-transcoding'); - $this->callbackUrl = $this->uploadSlot->callback_url; + $this->originalFilePath = $version->originalFilePath(); $this->uploadToken = $this->uploadSlot->token; } @@ -84,23 +83,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->uploadToken, $this->version->Media, $this->version->number), + ResponseState::TRANSCODING_ABORTED => $this->failed(null), + }; } /** @@ -111,24 +110,27 @@ 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 = $this->getTempVideoDerivativesDirectoryPath(); $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); + // 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; } - 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); } /** @@ -138,22 +140,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 +177,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 +200,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 = $this->version->Media->baseDirectory(); + $this->tempDerivativesDirectoryPath = $this->getTempVideoDerivativesDirectoryPath(); } /** * Saves the transcoded video to storage. * * @param Streaming $video - * @param string $format + * @param string $format * * @return void */ @@ -208,18 +216,18 @@ 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->tempPath), $format), $this->version->Media->identifier - ) - ); + CloudStorage::getSaveConfiguration( + 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 +235,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'); + $derivativePath = $this->getTempVideoDerivativeFilePath('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 +251,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 +269,6 @@ protected function moveToDestinationPath(): void $this->responseState = ResponseState::TRANSCODING_SUCCESSFUL; } else { $this->responseState = ResponseState::TRANSCODING_ABORTED; - $this->failed(null); } } @@ -273,7 +280,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,22 +294,22 @@ 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))); + $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.%s', $tempDerivativePath, 'mp4'), - sprintf('%s.%s', FilePathHelper::toVideoDerivativeFile($this->version->Media, 'mp4'), 'mp4') + sprintf('%s.mp4', $tempDerivativePath), + sprintf('%s.mp4', $this->version->Media->videoDerivativeFilePath('mp4')) ); } @@ -315,14 +322,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 +337,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 */ @@ -343,4 +358,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 dfd49c63..f1dbca2a 100644 --- a/app/Models/Media.php +++ b/app/Models/Media.php @@ -2,7 +2,9 @@ namespace App\Models; +use App\Enums\MediaStorage; use App\Enums\MediaType; +use DB; use File; use Illuminate\Database\Eloquent\Casts\Attribute; use Illuminate\Database\Eloquent\Factories\HasFactory; @@ -25,6 +27,8 @@ * @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 + * @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() @@ -51,13 +55,42 @@ class Media extends Model ]; /** - * The attributes that should be cast. + * 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. * - * @var array + * @return array */ - protected $casts = [ - 'type' => MediaType::class, - ]; + protected function casts(): array + { + return [ + 'type' => MediaType::class, + ]; + } + + 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 = $this->baseDirectory(); + $this->type->handler()->getDerivativesDisk()->deleteDirectory($fileBasePath); + MediaStorage::ORIGINALS->getDisk()->deleteDirectory($fileBasePath); + } /** * Returns the user that owns the media. @@ -75,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'. @@ -89,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', @@ -105,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( @@ -131,4 +163,39 @@ 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}/ + * + * @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/UploadSlot.php b/app/Models/UploadSlot.php index 788e2450..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 @@ -24,10 +23,10 @@ * @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() - * @method static Builder|UploadSlot whereCallbackUrl($value) * @method static Builder|UploadSlot whereCreatedAt($value) * @method static Builder|UploadSlot whereId($value) * @method static Builder|UploadSlot whereIdentifier($value) @@ -50,19 +49,21 @@ class UploadSlot extends Model */ protected $fillable = [ 'identifier', - 'callback_url', - 'validation_rules', 'media_type', + 'validation_rules', ]; /** - * 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 688cdb4f..3ccdec65 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; @@ -15,10 +17,12 @@ * @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 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 @@ -31,12 +35,14 @@ * @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) * @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 @@ -51,8 +57,9 @@ class User extends Authenticatable * @var array */ protected $fillable = [ - 'name', + 'api_url', 'email', + 'name', 'password', ]; @@ -67,13 +74,42 @@ class User extends Authenticatable ]; /** - * The attributes that should be cast. + * 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. * - * @var array + * @return array */ - protected $casts = [ - 'email_verified_at' => 'datetime', - ]; + protected function casts(): array + { + return [ + 'email_verified_at' => 'datetime', + 'password' => 'hashed', + ]; + } /** * Returns media for the user. diff --git a/app/Models/Version.php b/app/Models/Version.php index 1d81a813..b0d06853 100644 --- a/app/Models/Version.php +++ b/app/Models/Version.php @@ -2,9 +2,15 @@ namespace App\Models; +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 @@ -14,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 { @@ -42,11 +49,28 @@ class Version extends Model * @var array */ protected $fillable = [ - 'number', 'filename', + 'number', '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($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. + } + /** * Returns the media that the version belongs to. */ @@ -64,4 +88,70 @@ 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()); + } + + public function hash(): Attribute + { + return Attribute::make( + get: fn(): string => md5(sprintf('%s-%s', $this->number, $this->created_at)) + ); + } } diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index ee8ca5bc..387172f3 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -2,6 +2,15 @@ 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; class AppServiceProvider extends ServiceProvider @@ -11,7 +20,7 @@ class AppServiceProvider extends ServiceProvider * * @return void */ - public function register() + public function register(): void { // } @@ -21,8 +30,34 @@ public function register() * * @return void */ - public function boot() + 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/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/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 deleted file mode 100644 index fe666ada..00000000 --- a/app/Providers/RouteServiceProvider.php +++ /dev/null @@ -1,64 +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) { - $user = Auth::user() ?? User::whereName(Route::getCurrentRoute()->parameter('user'))->firstOrFail(); - return $user->Media()->whereIdentifier($identifier)->firstOrFail(); - }); - - Route::bind('version', function (int $versionNumber) { - $media = Route::getCurrentRoute()->parameter('media'); - return $media->Versions()->whereNumber($versionNumber)->firstOrFail(); - }); - } - - /** - * Configure the rate limiters for the application. - * - * @return void - */ - protected function configureRateLimiting() - { - RateLimiter::for('api', function (Request $request) { - return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); - }); - } -} 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..5af37259 100644 --- a/bootstrap/app.php +++ b/bootstrap/app.php @@ -1,55 +1,26 @@ 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; +use Illuminate\Routing\Middleware\SubstituteBindings; +use Illuminate\Support\Facades\Route; + +return Application::configure(basePath: dirname(__DIR__)) + ->withRouting( + // 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) { + // + }) + ->withExceptions(function (Exceptions $exceptions) { + // + })->create(); diff --git a/composer.json b/composer.json index 449ddce5..fb9cd40f 100644 --- a/composer.json +++ b/composer.json @@ -2,32 +2,34 @@ "name": "laravel/laravel", "type": "project", "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], + "keywords": [ + "framework", + "laravel" + ], "license": "MIT", "require": { - "php": "^8.1", + "php": "8.2.*|8.3.*", "ext-fileinfo": "*", "ext-sodium": "*", - "aminyazdanpanah/php-ffmpeg-video-streaming": "^1.2", - "cybex/laravel-protector": "^2.0", - "guzzlehttp/guzzle": "^7.2", + "ext-imagick": "*", + "aminyazdanpanah/php-ffmpeg-video-streaming": "^1.2.17", + "cybex/laravel-protector": "^3.0", "intervention/image": "^2.7", - "laravel/framework": "^9.19", - "laravel/sanctum": "^3.0", - "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": "^2.12", - "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" + "barryvdh/laravel-ide-helper": "^3.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 398e9765..dbd3aa44 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": "1c157993872c3768f98a856adbc1b1da", "packages": [ { "name": "aminyazdanpanah/php-ffmpeg-video-streaming", - "version": "v1.2.16", + "version": "v1.2.18", "source": { "type": "git", - "url": "https://github.com/aminyazdanpanah/PHP-FFmpeg-video-streaming.git", - "reference": "302a869488794bc1be432f606645d55515248f79" + "url": "https://github.com/quasarstream/PHP-FFmpeg-video-streaming.git", + "reference": "bc887130c7613196e7b099bc2459083972a2e144" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aminyazdanpanah/PHP-FFmpeg-video-streaming/zipball/302a869488794bc1be432f606645d55515248f79", - "reference": "302a869488794bc1be432f606645d55515248f79", + "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", + "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": { "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/quasarstream/PHP-FFmpeg-video-streaming/issues", + "source": "https://github.com/quasarstream/PHP-FFmpeg-video-streaming/tree/v1.2.18" }, - "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": "2024-04-08T23:56:25+00:00" }, { "name": "aws/aws-crt-php", - "version": "v1.2.1", + "version": "v1.2.5", "source": { "type": "git", "url": "https://github.com/awslabs/aws-crt-php.git", - "reference": "1926277fc71d253dfa820271ac5987bdb193ccf5" + "reference": "0ea1f04ec5aa9f049f97e012d1ed63b76834a31b" }, "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/0ea1f04ec5aa9f049f97e012d1ed63b76834a31b", + "reference": "0ea1f04ec5aa9f049f97e012d1ed63b76834a31b", "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.5" }, - "time": "2023-03-24T20:22:19+00:00" + "time": "2024-04-19T21:30:56+00:00" }, { "name": "aws/aws-sdk-php", - "version": "3.275.5", + "version": "3.306.7", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "d46961b82e857f77059c0c78160719ecb26f6cc6" + "reference": "bc30df54badd9d2af8d291cd0665ade6eb509598" }, "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/bc30df54badd9d2af8d291cd0665ade6eb509598", + "reference": "bc30df54badd9d2af8d291cd0665ade6eb509598", "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,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.275.5" + "source": "https://github.com/aws/aws-sdk-php/tree/3.306.7" }, - "time": "2023-07-07T18:20:11+00:00" + "time": "2024-05-15T18:04:12+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": { @@ -281,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": [ { @@ -294,20 +313,89 @@ "type": "github" } ], - "time": "2023-01-15T23:15:59+00:00" + "time": "2023-11-29T23:19:16+00:00" + }, + { + "name": "carbonphp/carbon-doctrine-types", + "version": "3.2.0", + "source": { + "type": "git", + "url": "https://github.com/CarbonPHP/carbon-doctrine-types.git", + "reference": "18ba5ddfec8976260ead6e866180bd5d2f71aa1d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/18ba5ddfec8976260ead6e866180bd5d2f71aa1d", + "reference": "18ba5ddfec8976260ead6e866180bd5d2f71aa1d", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "conflict": { + "doctrine/dbal": "<4.0.0 || >=5.0.0" + }, + "require-dev": { + "doctrine/dbal": "^4.0.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/3.2.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": "2024-02-09T16:56:22+00:00" }, { "name": "cybex/laravel-protector", - "version": "v2.0.1", + "version": "v3.0.0", "source": { "type": "git", "url": "https://github.com/cybex-gmbh/laravel-protector.git", - "reference": "9ce283314582adfe0d779b77714c6c9afb2b6221" + "reference": "1b3a2092b398528be884ffe6370df8e2f4da3616" }, "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/1b3a2092b398528be884ffe6370df8e2f4da3616", + "reference": "1b3a2092b398528be884ffe6370df8e2f4da3616", "shasum": "" }, "require": { @@ -317,15 +405,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": { @@ -367,9 +455,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/v3.0.0" }, - "time": "2023-04-25T15:44:47+00:00" + "time": "2024-03-15T15:46:00+00:00" }, { "name": "dflydev/dot-access-data", @@ -448,16 +536,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 +607,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 +623,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 +684,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 +700,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 +753,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 +761,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 +783,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 +820,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 +828,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 +873,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 +903,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.1-dev" + "dev-master": "1.2-dev" } }, "autoload": { @@ -846,7 +934,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 +946,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 +996,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 +1008,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 +1036,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 +1118,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 +1134,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 +1201,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 +1217,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 +1244,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 +1317,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 +1333,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 +1403,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 +1419,7 @@ "type": "tidelift" } ], - "time": "2021-10-07T12:57:01+00:00" + "time": "2023-12-03T19:50:20+00:00" }, { "name": "intervention/image", @@ -1413,20 +1507,21 @@ }, { "name": "laravel/framework", - "version": "v9.52.10", + "version": "v11.7.0", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "858add225ce88a76c43aec0e7866288321ee0ee9" + "reference": "e5ac72f513f635f208024aa76b8a04efc1b47f93" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/858add225ce88a76c43aec0e7866288321ee0ee9", - "reference": "858add225ce88a76c43aec0e7866288321ee0ee9", + "url": "https://api.github.com/repos/laravel/framework/zipball/e5ac72f513f635f208024aa76b8a04efc1b47f93", + "reference": "e5ac72f513f635f208024aa76b8a04efc1b47f93", "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", @@ -1437,35 +1532,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/serializable-closure": "^1.2.2", + "laravel/prompts": "^0.1.18", + "laravel/serializable-closure": "^1.3", "league/commonmark": "^2.2.1", "league/flysystem": "^3.8.0", - "monolog/monolog": "^2.0", - "nesbot/carbon": "^2.62.1", - "nunomaduro/termwind": "^1.13", - "php": "^8.0.2", + "monolog/monolog": "^3.0", + "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.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": "^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": { + "mockery/mockery": "1.6.8", "tightenco/collect": "<5.5.33" }, "provide": { @@ -1496,6 +1595,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", @@ -1504,35 +1604,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": "^2.13.3|^3.1.4", "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", - "orchestra/testbench-core": "^7.24", - "pda/pheanstalk": "^4.0", - "phpstan/phpdoc-parser": "^1.15", + "mockery/mockery": "^1.6", + "nyholm/psr7": "^1.2", + "orchestra/testbench-core": "^9.0.15", + "pda/pheanstalk": "^5.0", "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.5|^11.0", + "predis/predis": "^2.0.2", + "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 (^2.13.3|^3.1.4).", + "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.", @@ -1544,37 +1644,38 @@ "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).", - "predis/predis": "Required to use the predis connector (^1.1.9|^2.0.2).", + "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.0).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." + "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": "9.x-dev" + "dev-master": "11.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,41 +1708,97 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2023-06-27T13:25:54+00:00" + "time": "2024-05-07T13:41:51+00:00" + }, + { + "name": "laravel/prompts", + "version": "v0.1.21", + "source": { + "type": "git", + "url": "https://github.com/laravel/prompts.git", + "reference": "23ea808e8a145653e0ab29e30d4385e49f40a920" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/prompts/zipball/23ea808e8a145653e0ab29e30d4385e49f40a920", + "reference": "23ea808e8a145653e0ab29e30d4385e49f40a920", + "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" + ], + "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.21" + }, + "time": "2024-04-30T12:46:16+00:00" }, { "name": "laravel/sanctum", - "version": "v3.2.5", + "version": "v4.0.2", "source": { "type": "git", "url": "https://github.com/laravel/sanctum.git", - "reference": "8ebda85d59d3c414863a7f4d816ef8302faad876" + "reference": "9cfc0ce80cabad5334efff73ec856339e8ec1ac1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/8ebda85d59d3c414863a7f4d816ef8302faad876", - "reference": "8ebda85d59d3c414863a7f4d816ef8302faad876", + "url": "https://api.github.com/repos/laravel/sanctum/zipball/9cfc0ce80cabad5334efff73ec856339e8ec1ac1", + "reference": "9cfc0ce80cabad5334efff73ec856339e8ec1ac1", "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.0|^8.0", + "mockery/mockery": "^1.6", + "orchestra/testbench": "^9.0", "phpstan/phpstan": "^1.10", - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.5" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - }, "laravel": { "providers": [ "Laravel\\Sanctum\\SanctumServiceProvider" @@ -1673,20 +1830,20 @@ "issues": "https://github.com/laravel/sanctum/issues", "source": "https://github.com/laravel/sanctum" }, - "time": "2023-05-01T19:39:51+00:00" + "time": "2024-04-10T19:39:58+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 +1890,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 +1954,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 +1982,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 +1992,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 +2062,7 @@ "type": "tidelift" } ], - "time": "2023-03-24T15:16:10+00:00" + "time": "2024-02-02T11:59:32+00:00" }, { "name": "league/config", @@ -1993,16 +2148,16 @@ }, { "name": "league/flysystem", - "version": "3.15.1", + "version": "3.27.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "a141d430414fcb8bf797a18716b09f759a385bed" + "reference": "4729745b1ab737908c7d055148c9a6b3e959832f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/a141d430414fcb8bf797a18716b09f759a385bed", - "reference": "a141d430414fcb8bf797a18716b09f759a385bed", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/4729745b1ab737908c7d055148c9a6b3e959832f", + "reference": "4729745b1ab737908c7d055148c9a6b3e959832f", "shasum": "" }, "require": { @@ -2011,6 +2166,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 +2175,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 +2185,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 +2222,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.27.0" }, "funding": [ { @@ -2077,24 +2234,24 @@ "type": "github" } ], - "time": "2023-05-04T09:04:26+00:00" + "time": "2024-04-07T19:17:50+00:00" }, { "name": "league/flysystem-aws-s3-v3", - "version": "3.15.0", + "version": "3.27.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem-aws-s3-v3.git", - "reference": "d8de61ee10b6a607e7996cff388c5a3a663e8c8a" + "reference": "3e6ce2f972f1470db779f04d29c289dcd2c32837" }, "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/3e6ce2f972f1470db779f04d29c289dcd2c32837", + "reference": "3e6ce2f972f1470db779f04d29c289dcd2c32837", "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 +2287,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.27.0" }, "funding": [ { @@ -2143,20 +2299,20 @@ "type": "github" } ], - "time": "2023-05-02T20:02:14+00:00" + "time": "2024-04-07T19:16:54+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 +2346,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 +2358,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 +2402,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 +2414,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.6.0", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "f259e2b15fb95494c83f52d3caad003bbf5ffaa1" + "reference": "4b18b21a5527a3d5ffdac2fd35d3ab25a9597654" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/f259e2b15fb95494c83f52d3caad003bbf5ffaa1", - "reference": "f259e2b15fb95494c83f52d3caad003bbf5ffaa1", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/4b18b21a5527a3d5ffdac2fd35d3ab25a9597654", + "reference": "4b18b21a5527a3d5ffdac2fd35d3ab25a9597654", "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.5.17", + "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 +2475,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.x-dev" + "dev-main": "3.x-dev" } }, "autoload": { @@ -2349,7 +2503,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.6.0" }, "funding": [ { @@ -2361,29 +2515,29 @@ "type": "tidelift" } ], - "time": "2023-02-06T13:44:46+00:00" + "time": "2024-04-12T21:02:21+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 +2545,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.6-dev" + "dev-master": "2.7-dev" } }, "autoload": { @@ -2407,6 +2561,11 @@ "MIT" ], "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, { "name": "Michael Dowling", "email": "mtdowling@gmail.com", @@ -2420,43 +2579,47 @@ ], "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": "3.3.1", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "4f991ed2a403c85efbc4f23eb4030063fdbe01da" + "reference": "8ff64b92c1b1ec84fcde9f8bb9ff2ca34cb8a77a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/4f991ed2a403c85efbc4f23eb4030063fdbe01da", - "reference": "4f991ed2a403c85efbc4f23eb4030063fdbe01da", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/8ff64b92c1b1ec84fcde9f8bb9ff2ca34cb8a77a", + "reference": "8ff64b92c1b1ec84fcde9f8bb9ff2ca34cb8a77a", "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", - "doctrine/orm": "^2.7", - "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" @@ -2464,8 +2627,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": [ @@ -2524,35 +2687,35 @@ "type": "tidelift" } ], - "time": "2023-06-20T18:29:04+00:00" + "time": "2024-05-01T06:54:22+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 +2747,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 +2774,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 +2784,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 +2833,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 +2867,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.9-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -2727,39 +2891,38 @@ ], "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", - "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", @@ -2768,6 +2931,9 @@ "providers": [ "Termwind\\Laravel\\TermwindServiceProvider" ] + }, + "branch-alias": { + "dev-2.x": "2.x-dev" } }, "autoload": { @@ -2799,7 +2965,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": [ { @@ -2815,31 +2981,32 @@ "type": "github" } ], - "time": "2023-02-08T01:06:31+00:00" + "time": "2024-03-06T16:17:14+00:00" }, { "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 +3068,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 +3091,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 +3133,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,33 +3145,33 @@ "type": "tidelift" } ], - "time": "2023-02-25T19:38:58+00:00" + "time": "2023-11-12T21:59:55+00:00" }, { "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": { @@ -3032,7 +3199,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": [ { @@ -3044,7 +3211,7 @@ "type": "github" } ], - "time": "2023-03-15T21:02:42+00:00" + "time": "2024-03-25T15:50:07+00:00" }, { "name": "psr/cache", @@ -3095,6 +3262,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 +3415,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,26 +3461,26 @@ "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", - "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", @@ -3289,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", @@ -3301,22 +3516,22 @@ "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", - "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 +3540,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -3340,7 +3555,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 +3569,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 +3676,25 @@ }, { "name": "psy/psysh", - "version": "v0.11.18", + "version": "v0.12.3", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "4f00ee9e236fa6a48f4560d1300b9c961a70a7ec" + "reference": "b6b6cce7d3ee8fbf31843edce5e8f5a72eff4a73" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/4f00ee9e236fa6a48f4560d1300b9c961a70a7ec", - "reference": "4f00ee9e236fa6a48f4560d1300b9c961a70a7ec", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/b6b6cce7d3ee8fbf31843edce5e8f5a72eff4a73", + "reference": "b6b6cce7d3ee8fbf31843edce5e8f5a72eff4a73", "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 +3705,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 +3713,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 +3749,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.3" }, - "time": "2023-05-23T02:31:11+00:00" + "time": "2024-04-02T15:57:53+00:00" }, { "name": "ralouphie/getallheaders", @@ -3670,20 +3888,20 @@ }, { "name": "ramsey/uuid", - "version": "4.7.4", + "version": "4.7.6", "source": { "type": "git", "url": "https://github.com/ramsey/uuid.git", - "reference": "60a4c63ab724854332900504274f6150ff26d286" + "reference": "91039bc1faa45ba123c4328958e620d382ec7088" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/60a4c63ab724854332900504274f6150ff26d286", - "reference": "60a4c63ab724854332900504274f6150ff26d286", + "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" @@ -3746,7 +3964,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.6" }, "funding": [ { @@ -3758,32 +3976,32 @@ "type": "tidelift" } ], - "time": "2023-04-15T23:01:58+00:00" + "time": "2024-04-27T21:32:50+00:00" }, { "name": "spatie/image-optimizer", - "version": "1.6.4", + "version": "1.7.5", "source": { "type": "git", "url": "https://github.com/spatie/image-optimizer.git", - "reference": "d997e01ba980b2769ddca2f00badd3b80c2a2512" + "reference": "43aff6725cd87bb78ccd8532633cfa8bdc962505" }, "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/43aff6725cd87bb78ccd8532633cfa8bdc962505", + "reference": "43aff6725cd87bb78ccd8532633cfa8bdc962505", "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 +4029,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.5" }, - "time": "2023-03-10T08:43:19+00:00" + "time": "2024-05-16T08:48:33+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 +4091,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 +4099,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 +4148,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,35 +4160,35 @@ "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": "v7.0.7", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "52cff7608ef6e38376ac11bd1fbb0a220107f066" + "reference": "48e3508338987d63b0114a00c208c4cbb76e5303" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/52cff7608ef6e38376ac11bd1fbb0a220107f066", - "reference": "52cff7608ef6e38376ac11bd1fbb0a220107f066", + "url": "https://api.github.com/repos/symfony/cache/zipball/48e3508338987d63b0114a00c208c4cbb76e5303", + "reference": "48e3508338987d63b0114a00c208c4cbb76e5303", "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.2.10" + "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", @@ -3979,15 +4197,15 @@ }, "require-dev": { "cache/integration-tests": "dev-master", - "doctrine/dbal": "^2.13.1|^3.0", + "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", - "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": "^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": { @@ -4022,7 +4240,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v6.3.1" + "source": "https://github.com/symfony/cache/tree/v7.0.7" }, "funding": [ { @@ -4038,20 +4256,20 @@ "type": "tidelift" } ], - "time": "2023-06-24T11:51:27+00:00" + "time": "2024-04-18T09:29:19+00:00" }, { "name": "symfony/cache-contracts", - "version": "v3.3.0", + "version": "v3.5.0", "source": { "type": "git", "url": "https://github.com/symfony/cache-contracts.git", - "reference": "ad945640ccc0ae6e208bcea7d7de4b39b569896b" + "reference": "df6a1a44c890faded49a5fca33c2d5c5fd3c2197" }, "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/df6a1a44c890faded49a5fca33c2d5c5fd3c2197", + "reference": "df6a1a44c890faded49a5fca33c2d5c5fd3c2197", "shasum": "" }, "require": { @@ -4061,7 +4279,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.4-dev" + "dev-main": "3.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -4098,7 +4316,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/cache-contracts/tree/v3.3.0" + "source": "https://github.com/symfony/cache-contracts/tree/v3.5.0" }, "funding": [ { @@ -4114,52 +4332,37 @@ "type": "tidelift" } ], - "time": "2023-05-23T14:45:45+00:00" + "time": "2024-04-18T09:32:20+00:00" }, { - "name": "symfony/console", - "version": "v6.3.0", + "name": "symfony/clock", + "version": "v7.0.7", "source": { "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "8788808b07cf0bdd6e4b7fdd23d8ddb1470c83b7" + "url": "https://github.com/symfony/clock.git", + "reference": "2008671acb4a30b01c453de193cf9c80549ebda6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/8788808b07cf0bdd6e4b7fdd23d8ddb1470c83b7", - "reference": "8788808b07cf0bdd6e4b7fdd23d8ddb1470c83b7", + "url": "https://api.github.com/repos/symfony/clock/zipball/2008671acb4a30b01c453de193cf9c80549ebda6", + "reference": "2008671acb4a30b01c453de193cf9c80549ebda6", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^2.5|^3", - "symfony/string": "^5.4|^6.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" + "php": ">=8.2", + "psr/clock": "^1.0", + "symfony/polyfill-php83": "^1.28" }, "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "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" + "psr/clock-implementation": "1.0" }, "type": "library", "autoload": { + "files": [ + "Resources/now.php" + ], "psr-4": { - "Symfony\\Component\\Console\\": "" + "Symfony\\Component\\Clock\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -4171,24 +4374,23 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Eases the creation of beautiful and testable command line interfaces", + "description": "Decouples applications from the system clock", "homepage": "https://symfony.com", "keywords": [ - "cli", - "command-line", - "console", - "terminal" + "clock", + "psr20", + "time" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.3.0" + "source": "https://github.com/symfony/clock/tree/v7.0.7" }, "funding": [ { @@ -4204,27 +4406,120 @@ "type": "tidelift" } ], - "time": "2023-05-29T12:49:39+00:00" + "time": "2024-04-18T09:29:19+00:00" }, { - "name": "symfony/css-selector", - "version": "v6.3.0", + "name": "symfony/console", + "version": "v7.0.7", "source": { "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "88453e64cd86c5b60e8d2fb2c6f953bbc353ffbf" + "url": "https://github.com/symfony/console.git", + "reference": "c981e0e9380ce9f146416bde3150c79197ce9986" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/88453e64cd86c5b60e8d2fb2c6f953bbc353ffbf", - "reference": "88453e64cd86c5b60e8d2fb2c6f953bbc353ffbf", + "url": "https://api.github.com/repos/symfony/console/zipball/c981e0e9380ce9f146416bde3150c79197ce9986", + "reference": "c981e0e9380ce9f146416bde3150c79197ce9986", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2", + "symfony/polyfill-mbstring": "~1.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/string": "^6.4|^7.0" }, - "type": "library", - "autoload": { + "conflict": { + "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": "^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": "^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": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command-line", + "console", + "terminal" + ], + "support": { + "source": "https://github.com/symfony/console/tree/v7.0.7" + }, + "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-04-18T09:29:19+00:00" + }, + { + "name": "symfony/css-selector", + "version": "v7.0.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/css-selector.git", + "reference": "b08a4ad89e84b29cec285b7b1f781a7ae51cf4bc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/b08a4ad89e84b29cec285b7b1f781a7ae51cf4bc", + "reference": "b08a4ad89e84b29cec285b7b1f781a7ae51cf4bc", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "type": "library", + "autoload": { "psr-4": { "Symfony\\Component\\CssSelector\\": "" }, @@ -4253,7 +4548,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/v7.0.7" }, "funding": [ { @@ -4269,20 +4564,20 @@ "type": "tidelift" } ], - "time": "2023-03-20T16:43:42+00:00" + "time": "2024-04-18T09:29:19+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.3.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": { @@ -4291,7 +4586,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.4-dev" + "dev-main": "3.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -4320,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.3.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.0" }, "funding": [ { @@ -4336,34 +4631,35 @@ "type": "tidelift" } ], - "time": "2023-05-23T14:45:45+00:00" + "time": "2024-04-18T09:32:20+00:00" }, { "name": "symfony/error-handler", - "version": "v6.3.0", + "version": "v7.0.7", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "99d2d814a6351461af350ead4d963bd67451236f" + "reference": "cf97429887e40480c847bfeb6c3991e1e2c086ab" }, "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/cf97429887e40480c847bfeb6c3991e1e2c086ab", + "reference": "cf97429887e40480c847bfeb6c3991e1e2c086ab", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" + "symfony/var-dumper": "^6.4|^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": "^6.4|^7.0" }, "bin": [ "Resources/bin/patch-type-declarations" @@ -4394,7 +4690,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/v7.0.7" }, "funding": [ { @@ -4410,28 +4706,28 @@ "type": "tidelift" } ], - "time": "2023-05-10T12:03:13+00:00" + "time": "2024-04-18T09:29:19+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v6.3.0", + "version": "v7.0.7", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "3af8ac1a3f98f6dbc55e10ae59c9e44bfc38dfaa" + "reference": "db2a7fab994d67d92356bb39c367db115d9d30f9" }, "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/db2a7fab994d67d92356bb39c367db115d9d30f9", + "reference": "db2a7fab994d67d92356bb39c367db115d9d30f9", "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": { @@ -4440,13 +4736,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": "^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" + "symfony/stopwatch": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -4474,7 +4770,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/v7.0.7" }, "funding": [ { @@ -4490,20 +4786,20 @@ "type": "tidelift" } ], - "time": "2023-04-21T14:41:17+00:00" + "time": "2024-04-18T09:29:19+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.3.0", + "version": "v3.5.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "a76aed96a42d2b521153fb382d418e30d18b59df" + "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50" }, "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/8f93aec25d41b72493c6ddff14e916177c9efc50", + "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50", "shasum": "" }, "require": { @@ -4513,7 +4809,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.4-dev" + "dev-main": "3.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -4550,7 +4846,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.5.0" }, "funding": [ { @@ -4566,20 +4862,20 @@ "type": "tidelift" } ], - "time": "2023-05-23T14:45:45+00:00" + "time": "2024-04-18T09:32:20+00:00" }, { "name": "symfony/filesystem", - "version": "v6.3.1", + "version": "v6.4.6", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "edd36776956f2a6fcf577edb5b05eb0e3bdc52ae" + "reference": "9919b5509ada52cc7f66f9a35c86a4a29955c9d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/edd36776956f2a6fcf577edb5b05eb0e3bdc52ae", - "reference": "edd36776956f2a6fcf577edb5b05eb0e3bdc52ae", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/9919b5509ada52cc7f66f9a35c86a4a29955c9d3", + "reference": "9919b5509ada52cc7f66f9a35c86a4a29955c9d3", "shasum": "" }, "require": { @@ -4613,7 +4909,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.6" }, "funding": [ { @@ -4629,27 +4925,27 @@ "type": "tidelift" } ], - "time": "2023-06-01T08:30:39+00:00" + "time": "2024-03-21T19:36:20+00:00" }, { "name": "symfony/finder", - "version": "v6.3.0", + "version": "v7.0.7", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "d9b01ba073c44cef617c7907ce2419f8d00d75e2" + "reference": "4d58f0f4fe95a30d7b538d71197135483560b97c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/d9b01ba073c44cef617c7907ce2419f8d00d75e2", - "reference": "d9b01ba073c44cef617c7907ce2419f8d00d75e2", + "url": "https://api.github.com/repos/symfony/finder/zipball/4d58f0f4fe95a30d7b538d71197135483560b97c", + "reference": "4d58f0f4fe95a30d7b538d71197135483560b97c", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "require-dev": { - "symfony/filesystem": "^6.0" + "symfony/filesystem": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -4677,7 +4973,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/v7.0.7" }, "funding": [ { @@ -4693,40 +4989,40 @@ "type": "tidelift" } ], - "time": "2023-04-02T01:25:41+00:00" + "time": "2024-04-28T11:44:19+00:00" }, { "name": "symfony/http-foundation", - "version": "v6.3.1", + "version": "v7.0.7", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "e0ad0d153e1c20069250986cd9e9dd1ccebb0d66" + "reference": "0194e064b8bdc29381462f790bab04e1cac8fdc8" }, "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/0194e064b8bdc29381462f790bab04e1cac8fdc8", + "reference": "0194e064b8bdc29381462f790bab04e1cac8fdc8", "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.2" + "doctrine/dbal": "<3.6", + "symfony/cache": "<6.4" }, "require-dev": { - "doctrine/dbal": "^2.13.1|^3.0", + "doctrine/dbal": "^3.6|^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.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": { @@ -4754,7 +5050,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/v7.0.7" }, "funding": [ { @@ -4770,76 +5066,76 @@ "type": "tidelift" } ], - "time": "2023-06-24T11:51:27+00:00" + "time": "2024-04-18T09:29:19+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.3.1", + "version": "v7.0.7", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "161e16fd2e35fb4881a43bc8b383dfd5be4ac374" + "reference": "e07bb9bd86e7cd8ba2d3d9c618eec9d1bbe06d25" }, "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/e07bb9bd86e7cd8ba2d3d9c618eec9d1bbe06d25", + "reference": "e07bb9bd86e7cd8ba2d3d9c618eec9d1bbe06d25", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "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": "^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/dependency-injection": "<6.3", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<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": "<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/validator": "<5.4", - "symfony/var-dumper": "<6.3", - "twig/twig": "<2.13" + "symfony/twig-bridge": "<6.4", + "symfony/validator": "<6.4", + "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", - "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": "^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": "^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", - "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": "^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": "^6.4|^7.0", + "symfony/translation": "^6.4|^7.0", "symfony/translation-contracts": "^2.5|^3", - "symfony/uid": "^5.4|^6.0", - "symfony/validator": "^6.3", - "symfony/var-exporter": "^6.2", - "twig/twig": "^2.13|^3.0.4" + "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" }, "type": "library", "autoload": { @@ -4867,7 +5163,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/v7.0.7" }, "funding": [ { @@ -4883,43 +5179,43 @@ "type": "tidelift" } ], - "time": "2023-06-26T06:07:32+00:00" + "time": "2024-04-29T12:20:25+00:00" }, { "name": "symfony/mailer", - "version": "v6.3.0", + "version": "v7.0.7", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "7b03d9be1dea29bfec0a6c7b603f5072a4c97435" + "reference": "4ff41a7c7998a88cfdc31b5841ef64d9246fc56a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/7b03d9be1dea29bfec0a6c7b603f5072a4c97435", - "reference": "7b03d9be1dea29bfec0a6c7b603f5072a4c97435", + "url": "https://api.github.com/repos/symfony/mailer/zipball/4ff41a7c7998a88cfdc31b5841ef64d9246fc56a", + "reference": "4ff41a7c7998a88cfdc31b5841ef64d9246fc56a", "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", - "symfony/mime": "^6.2", + "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", - "symfony/http-client": "^5.4|^6.0", - "symfony/messenger": "^6.2", - "symfony/twig-bridge": "^6.2" + "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": { @@ -4947,7 +5243,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/v7.0.7" }, "funding": [ { @@ -4963,24 +5259,24 @@ "type": "tidelift" } ], - "time": "2023-05-29T12:49:39+00:00" + "time": "2024-04-18T09:29:19+00:00" }, { "name": "symfony/mime", - "version": "v6.3.0", + "version": "v7.0.7", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "7b5d2121858cd6efbed778abce9cfdd7ab1f62ad" + "reference": "3adbf110c306546f6f00337f421d2edca0e8d3c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/7b5d2121858cd6efbed778abce9cfdd7ab1f62ad", - "reference": "7b5d2121858cd6efbed778abce9cfdd7ab1f62ad", + "url": "https://api.github.com/repos/symfony/mime/zipball/3adbf110c306546f6f00337f421d2edca0e8d3c0", + "reference": "3adbf110c306546f6f00337f421d2edca0e8d3c0", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/polyfill-intl-idn": "^1.10", "symfony/polyfill-mbstring": "^1.0" }, @@ -4988,17 +5284,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.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", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^6.2" + "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": { @@ -5030,7 +5327,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v6.3.0" + "source": "https://github.com/symfony/mime/tree/v7.0.7" }, "funding": [ { @@ -5046,20 +5343,20 @@ "type": "tidelift" } ], - "time": "2023-04-28T15:57:00+00:00" + "time": "2024-04-18T09:29:19+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 +5370,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -5112,7 +5406,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 +5422,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 +5446,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -5193,7 +5484,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 +5500,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 +5526,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -5280,7 +5568,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 +5584,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 +5608,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -5364,7 +5649,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 +5665,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 +5692,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -5447,7 +5729,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 +5745,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 +5766,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -5523,7 +5802,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 +5818,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 +5839,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -5606,7 +5882,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 +5898,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 +5920,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -5658,7 +5931,10 @@ ], "psr-4": { "Symfony\\Polyfill\\Php83\\": "" - } + }, + "classmap": [ + "Resources/stubs" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -5683,7 +5959,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 +5975,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 +6002,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -5765,7 +6038,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,24 +6054,24 @@ "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": "v7.0.7", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "8741e3ed7fe2e91ec099e02446fb86667a0f1628" + "reference": "3839e56b94dd1dbd13235d27504e66baf23faba0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/8741e3ed7fe2e91ec099e02446fb86667a0f1628", - "reference": "8741e3ed7fe2e91ec099e02446fb86667a0f1628", + "url": "https://api.github.com/repos/symfony/process/zipball/3839e56b94dd1dbd13235d27504e66baf23faba0", + "reference": "3839e56b94dd1dbd13235d27504e66baf23faba0", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "type": "library", "autoload": { @@ -5826,7 +6099,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/v7.0.7" }, "funding": [ { @@ -5842,39 +6115,38 @@ "type": "tidelift" } ], - "time": "2023-05-19T08:06:44+00:00" + "time": "2024-04-18T09:29:19+00:00" }, { "name": "symfony/routing", - "version": "v6.3.1", + "version": "v7.0.7", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "d37ad1779c38b8eb71996d17dc13030dcb7f9cf5" + "reference": "9f82bf7766ccc9c22ab7aeb9bebb98351483fa5b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/d37ad1779c38b8eb71996d17dc13030dcb7f9cf5", - "reference": "d37ad1779c38b8eb71996d17dc13030dcb7f9cf5", + "url": "https://api.github.com/repos/symfony/routing/zipball/9f82bf7766ccc9c22ab7aeb9bebb98351483fa5b", + "reference": "9f82bf7766ccc9c22ab7aeb9bebb98351483fa5b", "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", - "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.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": { @@ -5908,7 +6180,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v6.3.1" + "source": "https://github.com/symfony/routing/tree/v7.0.7" }, "funding": [ { @@ -5924,25 +6196,26 @@ "type": "tidelift" } ], - "time": "2023-06-05T15:30:22+00:00" + "time": "2024-04-18T09:29:19+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.3.0", + "version": "v3.5.0", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4" + "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f" }, "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/bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", + "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", "shasum": "" }, "require": { "php": ">=8.1", - "psr/container": "^2.0" + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3" }, "conflict": { "ext-psr": "<1.1|>=2" @@ -5950,7 +6223,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.4-dev" + "dev-main": "3.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -5990,7 +6263,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.3.0" + "source": "https://github.com/symfony/service-contracts/tree/v3.5.0" }, "funding": [ { @@ -6006,24 +6279,24 @@ "type": "tidelift" } ], - "time": "2023-05-23T14:45:45+00:00" + "time": "2024-04-18T09:32:20+00:00" }, { "name": "symfony/string", - "version": "v6.3.0", + "version": "v7.0.7", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "f2e190ee75ff0f5eced645ec0be5c66fac81f51f" + "reference": "e405b5424dc2528e02e31ba26b83a79fd4eb8f63" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/f2e190ee75ff0f5eced645ec0be5c66fac81f51f", - "reference": "f2e190ee75ff0f5eced645ec0be5c66fac81f51f", + "url": "https://api.github.com/repos/symfony/string/zipball/e405b5424dc2528e02e31ba26b83a79fd4eb8f63", + "reference": "e405b5424dc2528e02e31ba26b83a79fd4eb8f63", "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", @@ -6033,11 +6306,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": "^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" + "symfony/var-exporter": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -6076,7 +6349,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.3.0" + "source": "https://github.com/symfony/string/tree/v7.0.7" }, "funding": [ { @@ -6092,54 +6365,54 @@ "type": "tidelift" } ], - "time": "2023-03-21T21:06:29+00:00" + "time": "2024-04-18T09:29:19+00:00" }, { "name": "symfony/translation", - "version": "v6.3.0", + "version": "v7.0.7", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "f72b2cba8f79dd9d536f534f76874b58ad37876f" + "reference": "1515e03afaa93e6419aba5d5c9d209159317100b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/f72b2cba8f79dd9d536f534f76874b58ad37876f", - "reference": "f72b2cba8f79dd9d536f534f76874b58ad37876f", + "url": "https://api.github.com/repos/symfony/translation/zipball/1515e03afaa93e6419aba5d5c9d209159317100b", + "reference": "1515e03afaa93e6419aba5d5c9d209159317100b", "shasum": "" }, "require": { - "php": ">=8.1", + "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" }, "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": "^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", - "symfony/intl": "^5.4|^6.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", + "symfony/routing": "^6.4|^7.0", "symfony/service-contracts": "^2.5|^3", - "symfony/yaml": "^5.4|^6.0" + "symfony/yaml": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -6170,7 +6443,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/v7.0.7" }, "funding": [ { @@ -6186,20 +6459,20 @@ "type": "tidelift" } ], - "time": "2023-05-19T12:46:45+00:00" + "time": "2024-04-18T09:29:19+00:00" }, { "name": "symfony/translation-contracts", - "version": "v3.3.0", + "version": "v3.5.0", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "02c24deb352fb0d79db5486c0c79905a85e37e86" + "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a" }, "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/b9d2189887bb6b2e0367a9fc7136c5239ab9b05a", + "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a", "shasum": "" }, "require": { @@ -6208,7 +6481,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.4-dev" + "dev-main": "3.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -6248,7 +6521,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.3.0" + "source": "https://github.com/symfony/translation-contracts/tree/v3.5.0" }, "funding": [ { @@ -6264,28 +6537,28 @@ "type": "tidelift" } ], - "time": "2023-05-30T17:17:10+00:00" + "time": "2024-04-18T09:32:20+00:00" }, { "name": "symfony/uid", - "version": "v6.3.0", + "version": "v7.0.7", "source": { "type": "git", "url": "https://github.com/symfony/uid.git", - "reference": "01b0f20b1351d997711c56f1638f7a8c3061e384" + "reference": "4f3a5d181999e25918586c8369de09e7814e7be2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/uid/zipball/01b0f20b1351d997711c56f1638f7a8c3061e384", - "reference": "01b0f20b1351d997711c56f1638f7a8c3061e384", + "url": "https://api.github.com/repos/symfony/uid/zipball/4f3a5d181999e25918586c8369de09e7814e7be2", + "reference": "4f3a5d181999e25918586c8369de09e7814e7be2", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/polyfill-uuid": "^1.15" }, "require-dev": { - "symfony/console": "^5.4|^6.0" + "symfony/console": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -6322,7 +6595,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/uid/tree/v6.3.0" + "source": "https://github.com/symfony/uid/tree/v7.0.7" }, "funding": [ { @@ -6338,35 +6611,36 @@ "type": "tidelift" } ], - "time": "2023-04-08T07:25:02+00:00" + "time": "2024-04-18T09:29:19+00:00" }, { "name": "symfony/var-dumper", - "version": "v6.3.1", + "version": "v7.0.7", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "c81268d6960ddb47af17391a27d222bd58cf0515" + "reference": "d1627b66fd87c8b4d90cabe5671c29d575690924" }, "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/d1627b66fd87c8b4d90cabe5671c29d575690924", + "reference": "d1627b66fd87c8b4d90cabe5671c29d575690924", "shasum": "" }, "require": { - "php": ">=8.1", + "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", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.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" @@ -6404,7 +6678,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.3.1" + "source": "https://github.com/symfony/var-dumper/tree/v7.0.7" }, "funding": [ { @@ -6420,27 +6694,29 @@ "type": "tidelift" } ], - "time": "2023-06-21T12:08:28+00:00" + "time": "2024-04-18T09:29:19+00:00" }, { "name": "symfony/var-exporter", - "version": "v6.3.0", + "version": "v7.0.7", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "db5416d04269f2827d8c54331ba4cfa42620d350" + "reference": "cdecc0022e40e90340ba1a59a3d5ccf069777078" }, "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/cdecc0022e40e90340ba1a59a3d5ccf069777078", + "reference": "cdecc0022e40e90340ba1a59a3d5ccf069777078", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "require-dev": { - "symfony/var-dumper": "^5.4|^6.0" + "symfony/property-access": "^6.4|^7.0", + "symfony/serializer": "^6.4|^7.0", + "symfony/var-dumper": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -6478,7 +6754,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v6.3.0" + "source": "https://github.com/symfony/var-exporter/tree/v7.0.7" }, "funding": [ { @@ -6494,27 +6770,27 @@ "type": "tidelift" } ], - "time": "2023-04-21T08:48:44+00:00" + "time": "2024-04-18T09:29:19+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 +6821,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 +6863,7 @@ "forward-command": true }, "branch-alias": { - "dev-master": "5.5-dev" + "dev-master": "5.6-dev" } }, "autoload": { @@ -6619,7 +6895,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 +6907,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 +7045,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 +7123,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 +7135,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 +7191,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 +7244,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 +7260,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 +7315,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,225 +7331,20 @@ "type": "tidelift" } ], - "time": "2022-11-17T09:50:14+00:00" - }, - { - "name": "doctrine/cache", - "version": "2.2.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/cache.git", - "reference": "1ca8f21980e770095a31456042471a57bc4c68fb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/cache/zipball/1ca8f21980e770095a31456042471a57bc4c68fb", - "reference": "1ca8f21980e770095a31456042471a57bc4c68fb", - "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" + "time": "2024-03-19T10:26:25+00:00" }, { "name": "doctrine/deprecations", - "version": "v1.1.1", + "version": "1.1.3", "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", - "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3" + "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/612a3ee5ab0d5dd97b7cf3874a6efe24325efac3", - "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", + "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", "shasum": "" }, "require": { @@ -7305,183 +7376,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" + "source": "https://github.com/doctrine/deprecations/tree/1.1.3" }, - "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/" - } - }, - "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 +7417,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 +7439,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 +7504,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 +7512,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 +7567,16 @@ }, { "name": "laravel/pint", - "version": "v1.10.3", + "version": "v1.15.3", "source": { "type": "git", "url": "https://github.com/laravel/pint.git", - "reference": "c472786bca01e4812a9bb7933b23edfc5b6877b7" + "reference": "3600b5d17aff52f6100ea4921849deacbbeb8656" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/pint/zipball/c472786bca01e4812a9bb7933b23edfc5b6877b7", - "reference": "c472786bca01e4812a9bb7933b23edfc5b6877b7", + "url": "https://api.github.com/repos/laravel/pint/zipball/3600b5d17aff52f6100ea4921849deacbbeb8656", + "reference": "3600b5d17aff52f6100ea4921849deacbbeb8656", "shasum": "" }, "require": { @@ -7682,13 +7587,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.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.4.0" + "pestphp/pest": "^2.34.7" }, "bin": [ "builds/pint" @@ -7724,31 +7629,32 @@ "issues": "https://github.com/laravel/pint/issues", "source": "https://github.com/laravel/pint" }, - "time": "2023-06-20T15:55:03+00:00" + "time": "2024-04-30T15:02:26+00:00" }, { "name": "laravel/sail", - "version": "v1.23.0", + "version": "v1.29.1", "source": { "type": "git", "url": "https://github.com/laravel/sail.git", - "reference": "a2e046f748e87d3ef8b2b381e0e5c5a11f34e46b" + "reference": "8be4a31150eab3b46af11a2e7b2c4632eefaad7e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/a2e046f748e87d3ef8b2b381e0e5c5a11f34e46b", - "reference": "a2e046f748e87d3ef8b2b381e0e5c5a11f34e46b", + "url": "https://api.github.com/repos/laravel/sail/zipball/8be4a31150eab3b46af11a2e7b2c4632eefaad7e", + "reference": "8be4a31150eab3b46af11a2e7b2c4632eefaad7e", "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/console": "^6.0|^7.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 +7662,6 @@ ], "type": "library", "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - }, "laravel": { "providers": [ "Laravel\\Sail\\SailServiceProvider" @@ -7789,41 +7692,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-20T20:09:31+00:00" }, { "name": "mockery/mockery", - "version": "1.6.2", + "version": "1.6.12", "source": { "type": "git", "url": "https://github.com/mockery/mockery.git", - "reference": "13a7fa2642c76c58fa2806ef7f565344c817a191" + "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/13a7fa2642c76c58fa2806ef7f565344c817a191", - "reference": "13a7fa2642c76c58fa2806ef7f565344c817a191", + "url": "https://api.github.com/repos/mockery/mockery/zipball/1f4efdd7d3beafe9807b08156dfcb176d18f1699", + "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699", "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.17", + "symplify/easy-coding-standard": "^12.1.14" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.6.x-dev" - } - }, "autoload": { "files": [ "library/helpers.php", @@ -7841,12 +7738,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 +7769,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": "2024-05-16T03:13:13+00:00" }, { "name": "myclabs/deep-copy", @@ -7930,45 +7838,54 @@ }, { "name": "nunomaduro/collision", - "version": "v6.4.0", + "version": "v8.1.1", "source": { "type": "git", "url": "https://github.com/nunomaduro/collision.git", - "reference": "f05978827b9343cba381ca05b8c7deee346b6015" + "reference": "13e5d538b95a744d85f447a321ce10adb28e9af9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/f05978827b9343cba381ca05b8c7deee346b6015", - "reference": "f05978827b9343cba381ca05b8c7deee346b6015", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/13e5d538b95a744d85f447a321ce10adb28e9af9", + "reference": "13e5d538b95a744d85f447a321ce10adb28e9af9", "shasum": "" }, "require": { - "filp/whoops": "^2.14.5", - "php": "^8.0.0", - "symfony/console": "^6.0.2" + "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 || >=12.0.0", + "phpunit/phpunit": "<10.5.1 || >=12.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" + "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": { - "branch-alias": { - "dev-develop": "6.x-dev" - }, "laravel": { "providers": [ "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" ] + }, + "branch-alias": { + "dev-8.x": "8.x-dev" } }, "autoload": { + "files": [ + "./src/Adapters/Phpunit/Autoload.php" + ], "psr-4": { "NunoMaduro\\Collision\\": "src/" } @@ -8014,24 +7931,25 @@ "type": "patreon" } ], - "time": "2023-01-03T12:54:54+00:00" + "time": "2024-03-06T16:20:09+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 +7990,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 +8106,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 +8158,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.29.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "65c39594fbd8c67abfc68bb323f86447bab79cc0" + "reference": "536889f2b340489d328f5ffb7b02bb6b183ddedc" }, "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/536889f2b340489d328f5ffb7b02bb6b183ddedc", + "reference": "536889f2b340489d328f5ffb7b02bb6b183ddedc", "shasum": "" }, "require": { @@ -8281,41 +8205,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.29.0" }, - "time": "2023-06-29T20:46:06+00:00" + "time": "2024-05-06T12:04:23+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "9.2.26", + "version": "11.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "443bc6912c9bd5b409254a40f4b0f4ced7c80ea1" + "reference": "7e35a2cbcabac0e6865fd373742ea432a3c34f92" }, "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/7e35a2cbcabac0e6865fd373742ea432a3c34f92", + "reference": "7e35a2cbcabac0e6865fd373742ea432a3c34f92", "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": "^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": "^9.3" + "phpunit/phpunit": "^11.0" }, "suggest": { "ext-pcov": "PHP extension that provides line coverage", @@ -8324,7 +8248,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "9.2-dev" + "dev-main": "11.0-dev" } }, "autoload": { @@ -8352,7 +8276,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/11.0.3" }, "funding": [ { @@ -8360,32 +8285,32 @@ "type": "github" } ], - "time": "2023-03-06T12:58:08+00:00" + "time": "2024-03-12T15:35:40+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "3.0.6", + "version": "5.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" + "reference": "99e95c94ad9500daca992354fa09d7b99abe2210" }, "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/99e95c94ad9500daca992354fa09d7b99abe2210", + "reference": "99e95c94ad9500daca992354fa09d7b99abe2210", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -8412,7 +8337,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/5.0.0" }, "funding": [ { @@ -8420,28 +8346,28 @@ "type": "github" } ], - "time": "2021-12-02T12:48:52+00:00" + "time": "2024-02-02T06:05:04+00:00" }, { "name": "phpunit/php-invoker", - "version": "3.1.1", + "version": "5.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" + "reference": "5d8d9355a16d8cc5a1305b0a85342cfa420612be" }, "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/5d8d9355a16d8cc5a1305b0a85342cfa420612be", + "reference": "5d8d9355a16d8cc5a1305b0a85342cfa420612be", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.2" }, "require-dev": { "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^11.0" }, "suggest": { "ext-pcntl": "*" @@ -8449,7 +8375,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -8475,7 +8401,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-invoker/issues", - "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" + "security": "https://github.com/sebastianbergmann/php-invoker/security/policy", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/5.0.0" }, "funding": [ { @@ -8483,32 +8410,32 @@ "type": "github" } ], - "time": "2020-09-28T05:58:55+00:00" + "time": "2024-02-02T06:05:50+00:00" }, { "name": "phpunit/php-text-template", - "version": "2.0.4", + "version": "4.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" + "reference": "d38f6cbff1cdb6f40b03c9811421561668cc133e" }, "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/d38f6cbff1cdb6f40b03c9811421561668cc133e", + "reference": "d38f6cbff1cdb6f40b03c9811421561668cc133e", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -8534,7 +8461,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/4.0.0" }, "funding": [ { @@ -8542,32 +8470,32 @@ "type": "github" } ], - "time": "2020-10-26T05:33:50+00:00" + "time": "2024-02-02T06:06:56+00:00" }, { "name": "phpunit/php-timer", - "version": "5.0.3", + "version": "7.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" + "reference": "8a59d9e25720482ee7fcdf296595e08795b84dc5" }, "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/8a59d9e25720482ee7fcdf296595e08795b84dc5", + "reference": "8a59d9e25720482ee7fcdf296595e08795b84dc5", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-main": "7.0-dev" } }, "autoload": { @@ -8593,7 +8521,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" + "security": "https://github.com/sebastianbergmann/php-timer/security/policy", + "source": "https://github.com/sebastianbergmann/php-timer/tree/7.0.0" }, "funding": [ { @@ -8601,24 +8530,23 @@ "type": "github" } ], - "time": "2020-10-26T13:16:10+00:00" + "time": "2024-02-02T06:08:01+00:00" }, { "name": "phpunit/phpunit", - "version": "9.6.10", + "version": "11.1.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "a6d351645c3fe5a30f5e86be6577d946af65a328" + "reference": "d475be032238173ca3b0a516f5cc291d174708ae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a6d351645c3fe5a30f5e86be6577d946af65a328", - "reference": "a6d351645c3fe5a30f5e86be6577d946af65a328", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/d475be032238173ca3b0a516f5cc291d174708ae", + "reference": "d475be032238173ca3b0a516f5cc291d174708ae", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.3.1 || ^2", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", @@ -8628,27 +8556,25 @@ "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.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", - "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 +8582,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "9.6-dev" + "dev-main": "11.1-dev" } }, "autoload": { @@ -8688,7 +8614,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/11.1.3" }, "funding": [ { @@ -8704,32 +8630,32 @@ "type": "tidelift" } ], - "time": "2023-07-10T04:04:23+00:00" + "time": "2024-04-24T06:34:25+00:00" }, { "name": "sebastian/cli-parser", - "version": "1.0.1", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" + "reference": "00a74d5568694711f0222e54fb281e1d15fdf04a" }, "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/00a74d5568694711f0222e54fb281e1d15fdf04a", + "reference": "00a74d5568694711f0222e54fb281e1d15fdf04a", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -8752,7 +8678,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/3.0.1" }, "funding": [ { @@ -8760,32 +8687,32 @@ "type": "github" } ], - "time": "2020-09-28T06:08:49+00:00" + "time": "2024-03-02T07:26:58+00:00" }, { "name": "sebastian/code-unit", - "version": "1.0.8", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" + "reference": "6634549cb8d702282a04a774e36a7477d2bd9015" }, "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/6634549cb8d702282a04a774e36a7477d2bd9015", + "reference": "6634549cb8d702282a04a774e36a7477d2bd9015", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -8808,7 +8735,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/1.0.8" + "security": "https://github.com/sebastianbergmann/code-unit/security/policy", + "source": "https://github.com/sebastianbergmann/code-unit/tree/3.0.0" }, "funding": [ { @@ -8816,32 +8744,32 @@ "type": "github" } ], - "time": "2020-10-26T13:08:54+00:00" + "time": "2024-02-02T05:50:41+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", + "version": "4.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" + "reference": "df80c875d3e459b45c6039e4d9b71d4fbccae25d" }, "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/df80c875d3e459b45c6039e4d9b71d4fbccae25d", + "reference": "df80c875d3e459b45c6039e4d9b71d4fbccae25d", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -8863,7 +8791,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/2.0.3" + "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": [ { @@ -8871,34 +8800,36 @@ "type": "github" } ], - "time": "2020-09-28T05:30:19+00:00" + "time": "2024-02-02T05:52:17+00:00" }, { "name": "sebastian/comparator", - "version": "4.0.8", + "version": "6.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "fa0f136dd2334583309d32b62544682ee972b51a" + "reference": "bd0f2fa5b9257c69903537b266ccb80fcf940db8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", - "reference": "fa0f136dd2334583309d32b62544682ee972b51a", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/bd0f2fa5b9257c69903537b266ccb80fcf940db8", + "reference": "bd0f2fa5b9257c69903537b266ccb80fcf940db8", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" + "ext-dom": "*", + "ext-mbstring": "*", + "php": ">=8.2", + "sebastian/diff": "^6.0", + "sebastian/exporter": "^6.0" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -8937,7 +8868,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/6.0.0" }, "funding": [ { @@ -8945,33 +8877,33 @@ "type": "github" } ], - "time": "2022-09-14T12:41:17+00:00" + "time": "2024-02-02T05:53:45+00:00" }, { "name": "sebastian/complexity", - "version": "2.0.2", + "version": "4.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" + "reference": "88a434ad86150e11a606ac4866b09130712671f0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/88a434ad86150e11a606ac4866b09130712671f0", + "reference": "88a434ad86150e11a606ac4866b09130712671f0", "shasum": "" }, "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" + "nikic/php-parser": "^5.0", + "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -8994,7 +8926,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/4.0.0" }, "funding": [ { @@ -9002,33 +8935,33 @@ "type": "github" } ], - "time": "2020-10-26T15:52:27+00:00" + "time": "2024-02-02T05:55:19+00:00" }, { "name": "sebastian/diff", - "version": "4.0.5", + "version": "6.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131" + "reference": "ab83243ecc233de5655b76f577711de9f842e712" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/74be17022044ebaaecfdf0c5cd504fc9cd5a7131", - "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/ab83243ecc233de5655b76f577711de9f842e712", + "reference": "ab83243ecc233de5655b76f577711de9f842e712", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^9.3", + "phpunit/phpunit": "^11.0", "symfony/process": "^4.2 || ^5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -9060,7 +8993,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/6.0.1" }, "funding": [ { @@ -9068,27 +9002,27 @@ "type": "github" } ], - "time": "2023-05-07T05:35:17+00:00" + "time": "2024-03-02T07:30:33+00:00" }, { "name": "sebastian/environment", - "version": "5.1.5", + "version": "7.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed" + "reference": "4eb3a442574d0e9d141aab209cd4aaf25701b09a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", - "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/4eb3a442574d0e9d141aab209cd4aaf25701b09a", + "reference": "4eb3a442574d0e9d141aab209cd4aaf25701b09a", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^11.0" }, "suggest": { "ext-posix": "*" @@ -9096,7 +9030,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "5.1-dev" + "dev-main": "7.1-dev" } }, "autoload": { @@ -9115,7 +9049,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 +9057,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/7.1.0" }, "funding": [ { @@ -9131,34 +9066,34 @@ "type": "github" } ], - "time": "2023-02-03T06:03:51+00:00" + "time": "2024-03-23T08:56:34+00:00" }, { "name": "sebastian/exporter", - "version": "4.0.5", + "version": "6.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d" + "reference": "f291e5a317c321c0381fa9ecc796fa2d21b186da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", - "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/f291e5a317c321c0381fa9ecc796fa2d21b186da", + "reference": "f291e5a317c321c0381fa9ecc796fa2d21b186da", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" + "ext-mbstring": "*", + "php": ">=8.2", + "sebastian/recursion-context": "^6.0" }, "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -9200,7 +9135,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/6.0.1" }, "funding": [ { @@ -9208,38 +9144,35 @@ "type": "github" } ], - "time": "2022-09-14T06:03:37+00:00" + "time": "2024-03-02T07:28:20+00:00" }, { "name": "sebastian/global-state", - "version": "5.0.5", + "version": "7.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2" + "reference": "c3a307e832f2e69c7ef869e31fc644fde0e7cb3e" }, "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/c3a307e832f2e69c7ef869e31fc644fde0e7cb3e", + "reference": "c3a307e832f2e69c7ef869e31fc644fde0e7cb3e", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" + "php": ">=8.2", + "sebastian/object-reflector": "^4.0", + "sebastian/recursion-context": "^6.0" }, "require-dev": { "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-main": "7.0-dev" } }, "autoload": { @@ -9258,13 +9191,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/7.0.1" }, "funding": [ { @@ -9272,33 +9206,33 @@ "type": "github" } ], - "time": "2022-02-14T08:28:10+00:00" + "time": "2024-03-02T07:32:10+00:00" }, { "name": "sebastian/lines-of-code", - "version": "1.0.3", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" + "reference": "376c5b3f6b43c78fdc049740bca76a7c846706c0" }, "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/376c5b3f6b43c78fdc049740bca76a7c846706c0", + "reference": "376c5b3f6b43c78fdc049740bca76a7c846706c0", "shasum": "" }, "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" + "nikic/php-parser": "^5.0", + "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -9321,7 +9255,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/3.0.0" }, "funding": [ { @@ -9329,34 +9264,34 @@ "type": "github" } ], - "time": "2020-11-28T06:42:11+00:00" + "time": "2024-02-02T06:00:36+00:00" }, { "name": "sebastian/object-enumerator", - "version": "4.0.4", + "version": "6.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" + "reference": "f75f6c460da0bbd9668f43a3dde0ec0ba7faa678" }, "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/f75f6c460da0bbd9668f43a3dde0ec0ba7faa678", + "reference": "f75f6c460da0bbd9668f43a3dde0ec0ba7faa678", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" + "php": ">=8.2", + "sebastian/object-reflector": "^4.0", + "sebastian/recursion-context": "^6.0" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -9378,7 +9313,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/4.0.4" + "security": "https://github.com/sebastianbergmann/object-enumerator/security/policy", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/6.0.0" }, "funding": [ { @@ -9386,32 +9322,32 @@ "type": "github" } ], - "time": "2020-10-26T13:12:34+00:00" + "time": "2024-02-02T06:01:29+00:00" }, { "name": "sebastian/object-reflector", - "version": "2.0.4", + "version": "4.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" + "reference": "bb2a6255d30853425fd38f032eb64ced9f7f132d" }, "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/bb2a6255d30853425fd38f032eb64ced9f7f132d", + "reference": "bb2a6255d30853425fd38f032eb64ced9f7f132d", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -9433,7 +9369,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/2.0.4" + "security": "https://github.com/sebastianbergmann/object-reflector/security/policy", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/4.0.0" }, "funding": [ { @@ -9441,32 +9378,32 @@ "type": "github" } ], - "time": "2020-10-26T13:14:26+00:00" + "time": "2024-02-02T06:02:18+00:00" }, { "name": "sebastian/recursion-context", - "version": "4.0.5", + "version": "6.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1" + "reference": "b75224967b5a466925c6d54e68edd0edf8dd4ed4" }, "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/b75224967b5a466925c6d54e68edd0edf8dd4ed4", + "reference": "b75224967b5a466925c6d54e68edd0edf8dd4ed4", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -9496,62 +9433,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/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" + "security": "https://github.com/sebastianbergmann/recursion-context/security/policy", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/6.0.0" }, "funding": [ { @@ -9559,32 +9442,32 @@ "type": "github" } ], - "time": "2020-09-28T06:45:17+00:00" + "time": "2024-02-02T06:08:48+00:00" }, { "name": "sebastian/type", - "version": "3.2.1", + "version": "5.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7" + "reference": "b8502785eb3523ca0dd4afe9ca62235590020f3f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", - "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8502785eb3523ca0dd4afe9ca62235590020f3f", + "reference": "b8502785eb3523ca0dd4afe9ca62235590020f3f", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^9.5" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.2-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -9607,7 +9490,8 @@ "homepage": "https://github.com/sebastianbergmann/type", "support": { "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/3.2.1" + "security": "https://github.com/sebastianbergmann/type/security/policy", + "source": "https://github.com/sebastianbergmann/type/tree/5.0.0" }, "funding": [ { @@ -9615,29 +9499,29 @@ "type": "github" } ], - "time": "2023-02-03T06:13:03+00:00" + "time": "2024-02-02T06:09:34+00:00" }, { "name": "sebastian/version", - "version": "3.0.2", + "version": "5.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" + "reference": "13999475d2cb1ab33cb73403ba356a814fdbb001" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/13999475d2cb1ab33cb73403ba356a814fdbb001", + "reference": "13999475d2cb1ab33cb73403ba356a814fdbb001", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -9660,7 +9544,8 @@ "homepage": "https://github.com/sebastianbergmann/version", "support": { "issues": "https://github.com/sebastianbergmann/version/issues", - "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" + "security": "https://github.com/sebastianbergmann/version/security/policy", + "source": "https://github.com/sebastianbergmann/version/tree/5.0.0" }, "funding": [ { @@ -9668,20 +9553,20 @@ "type": "github" } ], - "time": "2020-09-28T06:39:44+00:00" + "time": "2024-02-02T06:10:47+00:00" }, { "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": { @@ -9689,6 +9574,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" @@ -9718,7 +9604,7 @@ "spatie" ], "support": { - "source": "https://github.com/spatie/backtrace/tree/1.5.3" + "source": "https://github.com/spatie/backtrace/tree/1.6.1" }, "funding": [ { @@ -9730,39 +9616,38 @@ "type": "other" } ], - "time": "2023-06-28T12:59:17+00:00" + "time": "2024-04-24T13:22:11+00:00" }, { "name": "spatie/flare-client-php", - "version": "1.4.1", + "version": "1.5.1", "source": { "type": "git", "url": "https://github.com/spatie/flare-client-php.git", - "reference": "943894c6a6b00501365ac0b91ae0dce56f2226fa" + "reference": "e27977d534eefe04c154c6fd8460217024054c05" }, "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/e27977d534eefe04c154c6fd8460217024054c05", + "reference": "e27977d534eefe04c154c6fd8460217024054c05", "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 +9677,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.5.1" }, "funding": [ { @@ -9800,20 +9685,20 @@ "type": "github" } ], - "time": "2023-07-06T09:29:49+00:00" + "time": "2024-05-03T15:43:14+00:00" }, { "name": "spatie/ignition", - "version": "1.9.0", + "version": "1.14.1", "source": { "type": "git", "url": "https://github.com/spatie/ignition.git", - "reference": "de24ff1e01814d5043bd6eb4ab36a5a852a04973" + "reference": "c23cc018c5f423d2f413b99f84655fceb6549811" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/de24ff1e01814d5043bd6eb4ab36a5a852a04973", - "reference": "de24ff1e01814d5043bd6eb4ab36a5a852a04973", + "url": "https://api.github.com/repos/spatie/ignition/zipball/c23cc018c5f423d2f413b99f84655fceb6549811", + "reference": "c23cc018c5f423d2f413b99f84655fceb6549811", "shasum": "" }, "require": { @@ -9822,19 +9707,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 +9768,47 @@ "type": "github" } ], - "time": "2023-06-28T13:24:59+00:00" + "time": "2024-05-03T15:56:16+00:00" }, { "name": "spatie/laravel-ignition", - "version": "1.6.4", + "version": "2.7.0", "source": { "type": "git", "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "1a2b4bd3d48c72526c0ba417687e5c56b5cf49bc" + "reference": "f52124d50122611e8a40f628cef5c19ff6cc5b57" }, "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/f52124d50122611e8a40f628cef5c19ff6cc5b57", + "reference": "f52124d50122611e8a40f628cef5c19ff6cc5b57", "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.5", + "spatie/ignition": "^1.14", + "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.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.16", + "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 +9860,31 @@ "type": "github" } ], - "time": "2023-01-03T19:28:04+00:00" + "time": "2024-05-02T13:42:49+00:00" }, { "name": "symfony/yaml", - "version": "v6.3.0", + "version": "v7.0.7", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "a9a8337aa641ef2aa39c3e028f9107ec391e5927" + "reference": "0d3916ae69ea28b59d94b60c4f2b50f4e25adb5c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/a9a8337aa641ef2aa39c3e028f9107ec391e5927", - "reference": "a9a8337aa641ef2aa39c3e028f9107ec391e5927", + "url": "https://api.github.com/repos/symfony/yaml/zipball/0d3916ae69ea28b59d94b60c4f2b50f4e25adb5c", + "reference": "0d3916ae69ea28b59d94b60c4f2b50f4e25adb5c", "shasum": "" }, "require": { - "php": ">=8.1", + "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" + "symfony/console": "^6.4|^7.0" }, "bin": [ "Resources/bin/yaml-lint" @@ -10028,7 +9915,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/v7.0.7" }, "funding": [ { @@ -10044,20 +9931,20 @@ "type": "tidelift" } ], - "time": "2023-04-28T13:28:14+00:00" + "time": "2024-04-28T11:44:19+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 +9973,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 +9981,7 @@ "type": "github" } ], - "time": "2021-07-28T10:34:58+00:00" + "time": "2024-03-03T12:36:25+00:00" } ], "aliases": [], @@ -10103,9 +9990,10 @@ "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": "^8.1", + "php": "8.2.*|8.3.*", "ext-fileinfo": "*", - "ext-sodium": "*" + "ext-sodium": "*", + "ext-imagick": "*" }, "platform-dev": [], "plugin-api-version": "2.6.0" diff --git a/config/app.php b/config/app.php index 65c84762..717ef2ba 100644 --- a/config/app.php +++ b/config/app.php @@ -1,6 +1,7 @@ 'UTC', + 'timezone' => env('APP_TIMEZONE', 'UTC'), /* |-------------------------------------------------------------------------- @@ -77,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'), /* |-------------------------------------------------------------------------- @@ -95,7 +96,7 @@ | */ - 'fallback_locale' => 'en', + 'fallback_locale' => env('APP_FALLBACK_LOCALE', 'en'), /* |-------------------------------------------------------------------------- @@ -108,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', '')) + ), + ], /* |-------------------------------------------------------------------------- @@ -139,8 +146,8 @@ */ 'maintenance' => [ - 'driver' => 'file', - // 'store' => 'redis', + 'driver' => env('APP_MAINTENANCE_DRIVER', 'file'), + 'store' => env('APP_MAINTENANCE_STORE', 'database'), ], /* @@ -154,34 +161,7 @@ | */ - 'providers' => [ - - /* - * 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... */ @@ -194,15 +174,12 @@ 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\FilePathHelperServiceProvider::class, App\Providers\SqsFifoServiceProvider::class, App\Providers\TranscodeServiceProvider::class, App\Providers\TransformServiceProvider::class, - ], + ])->toArray(), /* |-------------------------------------------------------------------------- @@ -218,7 +195,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/config/auth.php b/config/auth.php index d8c6cee7..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,11 +76,11 @@ | 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 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. | @@ -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/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..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,14 +44,15 @@ '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' => [ 'driver' => 'file', 'path' => storage_path('framework/cache/data'), + 'lock_path' => storage_path('framework/cache/data'), ], 'memcached' => [ @@ -75,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/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/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/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..5f23465e 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 [ @@ -11,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. | */ @@ -32,7 +33,7 @@ 'deprecations' => [ 'channel' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), - 'trace' => false, + 'trace' => env('LOG_DEPRECATIONS_TRACE', false), ], /* @@ -40,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, ], @@ -61,21 +61,24 @@ 'driver' => 'single', 'path' => storage_path(sprintf('logs/%s/laravel.log', env('LOG_FOLDER'))), 'level' => env('LOG_LEVEL', 'debug'), + 'replace_placeholders' => true, ], 'daily' => [ '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, ], 'papertrail' => [ @@ -87,6 +90,7 @@ 'port' => env('PAPERTRAIL_PORT'), 'connectionString' => 'tls://'.env('PAPERTRAIL_URL').':'.env('PAPERTRAIL_PORT'), ], + 'processors' => [PsrLogMessageProcessor::class], ], 'stderr' => [ @@ -97,16 +101,20 @@ 'with' => [ 'stream' => 'php://stderr', ], + 'processors' => [PsrLogMessageProcessor::class], ], 'syslog' => [ 'driver' => 'syslog', 'level' => env('LOG_LEVEL', 'debug'), + 'facility' => env('LOG_SYSLOG_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..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,20 +25,22 @@ | 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", - | "postmark", "log", "array", "failover" + | Supported: "smtp", "sendmail", "mailgun", "ses", "ses-v2", + | "postmark", "log", "array", "failover", "roundrobin" | */ 'mailers' => [ + 'smtp' => [ 'transport' => 'smtp', - 'host' => env('MAIL_HOST', 'smtp.mailgun.org'), - 'port' => env('MAIL_PORT', 587), + 'url' => env('MAIL_URL'), + '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'), @@ -49,12 +52,19 @@ 'transport' => 'ses', ], - 'mailgun' => [ - 'transport' => 'mailgun', - ], - 'postmark' => [ 'transport' => 'postmark', + // 'message_stream_id' => env('POSTMARK_MESSAGE_STREAM_ID'), + // 'client' => [ + // 'timeout' => 5, + // ], + ], + + 'mailgun' => [ + 'transport' => 'mailgun', + // 'client' => [ + // 'timeout' => 5, + // ], ], 'sendmail' => [ @@ -78,6 +88,14 @@ 'log', ], ], + + 'roundrobin' => [ + 'transport' => 'roundrobin', + 'mailers' => [ + 'ses', + 'postmark', + ], + ], ], /* @@ -85,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 883b25a3..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,23 +77,41 @@ '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, ], ], + /* + |-------------------------------------------------------------------------- + | 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 |-------------------------------------------------------------------------- | | 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 529cfdc9..764a82fa 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, - 'encrypt_cookies' => App\Http\Middleware\EncryptCookies::class, + 'authenticate_session' => Laravel\Sanctum\Http\Middleware\AuthenticateSession::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 8fed97c0..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,12 +191,27 @@ | | 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'), + + /* + |-------------------------------------------------------------------------- + | 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' => env('SESSION_PARTITIONED_COOKIE', false), ]; 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 2a606fe9..de653d06 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,19 +11,25 @@ */ 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), + 'api_url' => 'http://example.com/transmorpher/notifications', ]; } @@ -31,7 +38,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/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/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']); + } +}; 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/database/seeders/PullpreviewSeeder.php b/database/seeders/PullpreviewSeeder.php index ed8287e0..a32236e2 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://amigor/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-compose.pullpreview.yml b/docker-compose.pullpreview.yml index 2e80f6c2..4ff2daff 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} @@ -17,11 +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} @@ -42,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' @@ -70,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 @@ -83,3 +143,9 @@ networks: volumes: mysql: driver: local + mysql-amigor: + driver: local + app-storage: + driver: local + amigor-storage: + driver: local diff --git a/docker-compose.yml b/docker-compose.yml index 056c50e0..6be62526 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,14 +1,13 @@ # For more information: https://laravel.com/docs/sail -version: '3.8' 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 +23,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/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.2/Dockerfile b/docker/8.2/Dockerfile index 632995e4..89ca4665 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,20 +30,24 @@ 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 php8.2-imagick \ && apt-get install -y jpegoptim \ && apt-get install -y optipng \ && apt-get install -y pngquant \ 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/docker/8.3/Dockerfile b/docker/8.3/Dockerfile new file mode 100644 index 00000000..d8a6f740 --- /dev/null +++ b/docker/8.3/Dockerfile @@ -0,0 +1,73 @@ +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 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/* + +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.1/php.ini b/docker/8.3/php.ini similarity index 80% rename from docker/8.1/php.ini rename to docker/8.3/php.ini index 66d04d5b..0d8ce9e2 100644 --- a/docker/8.1/php.ini +++ b/docker/8.3/php.ini @@ -2,3 +2,4 @@ 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.1/supervisord.conf b/docker/8.3/supervisord.conf similarity index 70% rename from docker/8.1/supervisord.conf rename to docker/8.3/supervisord.conf index 9d284795..656da8a9 100644 --- a/docker/8.1/supervisord.conf +++ b/docker/8.3/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/docker/Dockerfile b/docker/Dockerfile index 18f67875..b05c457f 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -22,9 +22,9 @@ 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 RUN docker-service-enable cron -RUN docker-cronjob '0 2 * * * application php /var/www/html/artisan ffmpeg:delete-temp' +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"] diff --git a/docker/workers.conf b/docker/workers.conf index d3b47bad..b5825b6a 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,21 @@ 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 + +[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/package.json b/package.json index 0b32ba69..4e934caa 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", + "vite": "^5.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/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/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/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/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/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 e9e12a0c..a65ed873 100644 --- a/routes/web.php +++ b/routes/web.php @@ -1,19 +1,12 @@ prefix()), [ImageController::class, 'get'])->name('getDerivative'); diff --git a/tests/CreatesApplication.php b/tests/CreatesApplication.php deleted file mode 100644 index 547152f6..00000000 --- a/tests/CreatesApplication.php +++ /dev/null @@ -1,22 +0,0 @@ -make(Kernel::class)->bootstrap(); - - return $app; - } -} diff --git a/tests/MediaTest.php b/tests/MediaTest.php new file mode 100644 index 00000000..b97e9930 --- /dev/null +++ b/tests/MediaTest.php @@ -0,0 +1,27 @@ +originalsDisk ??= Storage::persistentFake(config(sprintf('transmorpher.disks.%s', MediaStorage::ORIGINALS->value))); + + Sanctum::actingAs( + $this->user ??= User::first() ?: User::factory()->create(), + ['*'] + ); + } +} diff --git a/tests/TestCase.php b/tests/TestCase.php index 2932d4a6..1850fed0 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -2,9 +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 { - use CreatesApplication; + 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/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/CreateUserCommandTest.php b/tests/Unit/CreateUserCommandTest.php index 0971a5fd..02b56f52 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; @@ -16,68 +18,60 @@ class CreateUserCommandTest extends TestCase protected const NAME = 'Oswald'; protected const EMAIL = 'oswald@example.com'; + protected const API_URL = 'http://example.com/transmorpher/notifications'; - /** - * @test - */ + #[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]); } - /** - * @test - */ + #[Test] public function ensureUserHasSanctumToken() { - Artisan::call(CreateUser::class, ['name' => self::NAME, 'email' => self::EMAIL]); + $this->createUser(); $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]); - $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) + #[Test] + #[DataProvider('missingArgumentsDataProvider')] + 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); } - /** - * @test - * @dataProvider invalidArgumentsDataProvider - */ - public function failOnInvalidArguments(string $name, string $email) + #[Test] + #[DataProvider('invalidArgumentsDataProvider')] + 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); } - protected function duplicateEntryDataProvider(): array + public static function duplicateEntryDataProvider(): array { return [ 'duplicate name' => [ @@ -95,67 +89,126 @@ protected function duplicateEntryDataProvider(): array ]; } - protected function missingArgumentsDataProvider(): array + 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 ] ]; } - protected function invalidArgumentsDataProvider(): array + 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/DeleteFfmpegFoldersCommandTest.php b/tests/Unit/DeleteFfmpegFoldersCommandTest.php deleted file mode 100644 index cad30550..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')) - ); - } - - protected 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 - ], - ]; - } -} diff --git a/tests/Unit/ImageTest.php b/tests/Unit/ImageTest.php index 5b1eea4e..a573fde2 100644 --- a/tests/Unit/ImageTest.php +++ b/tests/Unit/ImageTest.php @@ -2,77 +2,450 @@ namespace Tests\Unit; -use FilePathHelper; +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; +use PHPUnit\Framework\Attributes\Depends; +use PHPUnit\Framework\Attributes\Test; use Storage; +use Tests\MediaTest; 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(); - Storage::disk(config('transmorpher.disks.originals'))->assertExists( - FilePathHelper::toOriginalFile(Media::whereIdentifier(self::IDENTIFIER)->first()->Versions()->whereNumber($uploadResponse['version'])->first()), - ); + $media = Media::whereIdentifier(self::IDENTIFIER)->first(); + $version = $media->Versions()->whereNumber($uploadResponse['version'])->first(); + + Storage::disk(config('transmorpher.disks.originals'))->assertExists($version->originalFilePath()); + + return $version; } - /** - * @test - * @depends ensureImageCanBeUploaded - */ - public function ensureProcessedFilesAreAvailable() + #[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', [$this->user->name, $version->Media])); + } + + #[Test] + #[Depends('ensureImageCanBeUploaded')] + public function ensureProcessedFilesAreAvailable(Version $version) + { + $this->createDerivativeForVersion($version)->assertOk(); + + return $version; + } + + #[Test] + #[Depends('ensureProcessedFilesAreAvailable')] + public function ensureUnprocessedFilesAreNotAvailable(Version $version) + { + $version->update(['processed' => 0]); + $getDerivativeResponse = $this->get(route('getDerivative', [$this->user->name, $version->Media])); + + $getDerivativeResponse->assertNotFound(); + } + + protected function assertVersionFilesExist(Version $version): void + { + $this->originalsDisk->assertExists($version->originalFilePath()); + $this->imageDerivativesDisk->assertExists($version->imageDerivativeFilePath()); + } + + protected function assertMediaDirectoryExists(Media $media): void + { + $this->originalsDisk->assertExists($media->baseDirectory()); + } + + protected function assertUserDirectoryExists(): void + { + $this->originalsDisk->assertExists($this->user->name); + $this->imageDerivativesDisk->assertExists($this->user->name); + } + + protected function assertVersionFilesMissing(Version $version): void + { + $this->originalsDisk->assertMissing($version->originalFilePath()); + $this->imageDerivativesDisk->assertMissing($version->imageDerivativeFilePath()); + } + + protected function assertMediaDirectoryMissing(Media $media): void { - $media = self::$user->Media()->whereIdentifier(self::IDENTIFIER)->first(); - $getDerivativeResponse = $this->get(route('getDerivative', [self::$user->name, $media])); + $this->originalsDisk->assertMissing($media->baseDirectory()); + $this->imageDerivativesDisk->assertMissing($media->baseDirectory()); + } - $getDerivativeResponse->assertOk(); + protected function assertUserDirectoryMissing(): void + { + $this->originalsDisk->assertMissing($this->user->name); + $this->imageDerivativesDisk->assertMissing($this->user->name); + } - return $media; + 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(); + $this->createDerivativeForVersion($this->version); + $this->media = $this->version->Media; + $this->uploadSlot = UploadSlot::whereToken($this->uploadToken)->withoutGlobalScopes()->first(); + } + + #[Test] + public function ensureVersionDeletionMethodsWork() + { + $this->setupMediaAndVersion(); + + $this->assertVersionFilesExist($this->version); + + $this->runProtectedMethod($this->version, 'deleteFiles'); + + $this->assertVersionFilesMissing($this->version); + } + + #[Test] + public function ensureMediaDeletionMethodsWork() + { + $this->setupMediaAndVersion(); + + $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 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->setupMediaAndVersion(); + + $this->assertVersionFilesExist($this->version); + $this->assertMediaDirectoryExists($this->media); + $this->assertUserDirectoryExists(); + + $this->runProtectedMethod($this->user, 'deleteRelatedModels'); + $this->runProtectedMethod($this->user, 'deleteMediaDirectories'); + + $this->assertVersionFilesMissing($this->version); + $this->assertMediaDirectoryMissing($this->media); + $this->assertUserDirectoryMissing(); + + $this->assertModelMissing($this->version); + $this->assertModelMissing($this->media); + $this->assertModelMissing($this->uploadSlot); } /** - * @test - * @depends ensureProcessedFilesAreAvailable + * Provides Transformation string scenarios. contextually used in web requests for retrieving derivatives. + * + * @return array */ - public function ensureUnprocessedFilesAreNotAvailable(Media $media) + public static function provideTransformationStrings(): array { - $media->Versions()->first()->update(['processed' => 0]); - $getDerivativeResponse = $this->get(route('getDerivative', [self::$user->name, $media])); + return [ + 'valid_Quality' => [ + 'input' => 'q-50', + 'expectedException' => null, + 'expectedArray' => [ + 'q' => 50, + ] + ], - $getDerivativeResponse->assertNotFound(); + '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' => '', + 'expectedException' => null, + 'expectedArray' => null + ], + + 'invalid_ValueFloat' => [ + 'input' => 'q-1.5', + 'expectedException' => InvalidTransformationValueException::class, + ], + + 'invalid_ValueLeadingZero' => [ + 'input' => 'q-0005', + 'expectedException' => InvalidTransformationValueException::class, + ], + + 'invalid_ValueContainingExponent' => [ + 'input' => 'w-1337e0', + 'expectedException' => InvalidTransformationValueException::class, + ], + + 'invalid_ValueHex' => [ + 'input' => 'h-0x539', + 'expectedException' => InvalidTransformationValueException::class, + ], + + 'invalid_ValueUnderscore' => [ + 'input' => 'h-10_1', + 'expectedException' => 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)); } } diff --git a/tests/Unit/MediaTest.php b/tests/Unit/MediaTest.php deleted file mode 100644 index b7ed5bb8..00000000 --- a/tests/Unit/MediaTest.php +++ /dev/null @@ -1,25 +0,0 @@ -create(), - ['*'] - ); - } -} diff --git a/tests/Unit/VideoTest.php b/tests/Unit/VideoTest.php index dc87d9f9..385dd19c 100644 --- a/tests/Unit/VideoTest.php +++ b/tests/Unit/VideoTest.php @@ -2,62 +2,157 @@ 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 FilePathHelper; +use Artisan; +use File; use Http; +use Illuminate\Contracts\Filesystem\Filesystem; +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 { parent::setUp(); - Storage::persistentFake(config('transmorpher.disks.videoDerivatives')); + $this->videoDerivativesDisk ??= Storage::persistentFake(config(sprintf('transmorpher.disks.%s', MediaStorage::VIDEO_DERIVATIVES->value))); } /** - * @test + * @return TestResponse */ - public function ensureVideoUploadSlotCanBeReserved() + 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'); } - /** - * @test - * @depends ensureVideoUploadSlotCanBeReserved - */ - public function ensureTranscodingIsAbortedWhenNewerVersionExists(string $uploadToken) + protected function uploadVideo(): TestResponse { - Http::fake(); + $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] + public function ensureVideoCanBeUploaded() + { + 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(FilePathHelper::toOriginalFile($outdatedVersion), $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); + } } 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