update: laravel

- Laravel 11 introduces a new default application structure with fewer default files. Namely, new Laravel applications contain fewer service providers, middleware, and configuration files.

However, it is not recommend that Laravel 10 applications upgrading to Laravel 11 attempt to migrate their application structure, as Laravel 11 has been carefully tuned to also support the Laravel 10 application structure.
This commit is contained in:
HDVinnie
2024-04-23 16:06:37 -04:00
parent ed392eb196
commit 51fa8ec46b
40 changed files with 841 additions and 843 deletions

View File

@@ -17,8 +17,8 @@ DB_USERNAME=root
DB_PASSWORD=
#PRISTINE_DB_FILE=/home/vagrant/code/database/unit3d_test.sql
BROADCAST_DRIVER=redis
CACHE_DRIVER=redis
BROADCAST_CONNECTION=redis
CACHE_STORE=redis
SESSION_DRIVER=redis
SESSION_CONNECTION=session
SESSION_LIFETIME=120

View File

@@ -36,10 +36,8 @@ class AutoRefundDownload extends Command
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
public function handle(): void
{
$now = Carbon::now();
$MIN_SEEDTIME = config('hitrun.seedtime');

View File

@@ -17,7 +17,7 @@ use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Routing\Controller as BaseController;
class Controller extends BaseController
abstract class Controller extends BaseController
{
use AuthorizesRequests;
use ValidatesRequests;

View File

@@ -41,13 +41,16 @@ class Apikey extends Model
protected $guarded = ['id'];
/**
* The attributes that should be cast.
* Get the attributes that should be cast.
*
* @var array<string, string>
* @return array<string, string>
*/
protected $casts = [
'deleted_at' => 'datetime',
];
protected function casts(): array
{
return [
'deleted_at' => 'datetime',
];
}
/**
* Belongs to a user.

View File

@@ -52,9 +52,17 @@ class Application extends Model
'moderated_at',
];
protected $casts = [
'moderated_at' => 'datetime',
];
/**
* Get the attributes that should be cast.
*
* @return array<string, string>
*/
protected function casts(): array
{
return [
'moderated_at' => 'datetime',
];
}
/**
* The attributes that aren't mass assignable.

View File

@@ -40,16 +40,19 @@ class BonExchange extends Model
public $timestamps = false;
/**
* The Attributes That Should Be Casted To Native Types.
* Get the attributes that should be cast.
*
* @var array<string, string>
* @return array<string, string>
*/
protected $casts = [
'upload' => 'boolean',
'download' => 'boolean',
'personal_freeleech' => 'boolean',
'invite' => 'boolean',
];
protected function casts(): array
{
return [
'upload' => 'boolean',
'download' => 'boolean',
'personal_freeleech' => 'boolean',
'invite' => 'boolean',
];
}
/**
* The attributes that aren't mass assignable.

View File

@@ -51,20 +51,16 @@ class Bot extends Model
use HasFactory;
/**
* Indicates If The Model Should Be Timestamped.
* Get the attributes that should be cast.
*
* @var bool
* @return array<string, string>
*/
public $timestamps = true;
/**
* The Attributes That Should Be Cast To Native Types.
*
* @var array<string, string>
*/
protected $casts = [
'name' => 'string',
];
protected function casts(): array
{
return [
'name' => 'string',
];
}
/**
* The attributes that aren't mass assignable.

View File

@@ -36,13 +36,6 @@ class BotTransaction extends Model
use Auditable;
use HasFactory;
/**
* Indicates If The Model Should Be Timestamped.
*
* @var bool
*/
public $timestamps = true;
/**
* Belongs To A User.
*

View File

@@ -45,16 +45,19 @@ class Category extends Model
public $timestamps = false;
/**
* The Attributes That Should Be Mutated To Dates.
* Get the attributes that should be cast.
*
* @var array<string, string>
* @return array<string, string>
*/
public $casts = [
'music_meta' => 'boolean',
'game_meta' => 'boolean',
'tv_meta' => 'boolean',
'movie_meta' => 'boolean',
];
protected function casts(): array
{
return [
'music_meta' => 'boolean',
'game_meta' => 'boolean',
'tv_meta' => 'boolean',
'movie_meta' => 'boolean',
];
}
/**
* The attributes that aren't mass assignable.

View File

@@ -40,14 +40,17 @@ class EmailUpdate extends Model
protected $guarded = ['id'];
/**
* The attributes that should be cast.
* Get the attributes that should be cast.
*
* @var array<string, string>
* @return array<string, string>
*/
protected $casts = [
'created_at' => 'datetime',
'deleted_at' => 'datetime',
];
protected function casts(): array
{
return [
'created_at' => 'datetime',
'deleted_at' => 'datetime',
];
}
/**
* Belongs to a user.

View File

@@ -42,15 +42,18 @@ class ForumPermission extends Model
public $guarded = [];
/**
* The attributes that should be cast.
* Get the attributes that should be cast.
*
* @var array<string, string>
* @return array<string, string>
*/
protected $casts = [
'read_topic' => 'boolean',
'reply_topic' => 'boolean',
'start_topic' => 'boolean',
];
protected function casts(): array
{
return [
'read_topic' => 'boolean',
'reply_topic' => 'boolean',
'start_topic' => 'boolean',
];
}
/**
* Belongs To A Group.

View File

@@ -32,13 +32,16 @@ class Gift extends Model
public $timestamps = false;
/**
* The attributes that should be cast.
* Get the attributes that should be cast.
*
* @var array<string, string>
* @return array<string, string>
*/
protected $casts = [
'created_at' => 'datetime',
];
protected function casts(): array
{
return [
'created_at' => 'datetime',
];
}
/**
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo<User, self>

View File

@@ -56,13 +56,16 @@ class Group extends Model
use HasFactory;
/**
* The attributes that should be cast.
* Get the attributes that should be cast.
*
* @var array<string, string>
* @return array<string, string>
*/
protected $casts = [
'system_required' => 'boolean',
];
protected function casts(): array
{
return [
'system_required' => 'boolean',
];
}
/**
* The attributes that aren't mass assignable.

View File

@@ -57,15 +57,18 @@ class History extends Model
protected $guarded = [];
/**
* The Attributes That Should Be Mutated To Dates.
* Get the attributes that should be cast.
*
* @var array<string, string>
* @return array<string, string>
*/
protected $casts = [
'completed_at' => 'datetime',
'hitrun' => 'boolean',
'prewarn' => 'boolean',
];
protected function casts(): array
{
return [
'completed_at' => 'datetime',
'hitrun' => 'boolean',
'prewarn' => 'boolean',
];
}
/**
* Belongs To A User.

View File

@@ -34,14 +34,17 @@ class Like extends Model
use HasFactory;
/**
* The Attributes That Should Be Mutated To Dates.
* Get the attributes that should be cast.
*
* @var array<string, string>
* @return array<string, string>
*/
public $casts = [
'like' => 'boolean',
'dislike' => 'boolean',
];
protected function casts(): array
{
return [
'like' => 'boolean',
'dislike' => 'boolean',
];
}
/**
* Belongs To A User.

View File

@@ -41,13 +41,16 @@ class Passkey extends Model
protected $guarded = ['id'];
/**
* The attributes that should be cast.
* Get the attributes that should be cast.
*
* @var array<string, string>
* @return array<string, string>
*/
protected $casts = [
'deleted_at' => 'datetime',
];
protected function casts(): array
{
return [
'deleted_at' => 'datetime',
];
}
/**
* Has Many Torrents.

View File

@@ -41,15 +41,18 @@ class Peer extends Model
use HasFactory;
/**
* The attributes that should be cast.
* Get the attributes that should be cast.
*
* @var array<string, string>
* @return array<string, string>
*/
protected $casts = [
'active' => 'boolean',
'seeder' => 'boolean',
'connectable' => 'boolean',
];
protected function casts(): array
{
return [
'active' => 'boolean',
'seeder' => 'boolean',
'connectable' => 'boolean',
];
}
/**
* Prepare a date for array / JSON serialization.

View File

@@ -32,13 +32,16 @@ class PostTip extends Model
public $timestamps = false;
/**
* The attributes that should be cast.
* Get the attributes that should be cast.
*
* @var array<string, string>
* @return array<string, string>
*/
protected $casts = [
'created_at' => 'datetime',
];
protected function casts(): array
{
return [
'created_at' => 'datetime',
];
}
/**
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo<User, self>

View File

@@ -41,13 +41,16 @@ class Resurrection extends Model
protected $guarded = [];
/**
* The Attributes That Should Be Mutated To Dates.
* Get the attributes that should be cast.
*
* @var array<string, string>
* @return array<string, string>
*/
protected $casts = [
'rewarded' => 'boolean',
];
protected function casts(): array
{
return [
'rewarded' => 'boolean',
];
}
/**
* Belongs To A User.

View File

@@ -47,22 +47,18 @@ class Rss extends Model
protected $table = 'rss';
/**
* Indicates If The Model Should Be Timestamped.
* Get the attributes that should be cast.
*
* @var bool
* @return array<string, string>
*/
public $timestamps = true;
/**
* The Attributes That Should Be Cast To Native Types.
*
* @var array<string, string>
*/
protected $casts = [
'name' => 'string',
'json_torrent' => 'array',
'expected_fields' => 'array',
];
protected function casts(): array
{
return [
'name' => 'string',
'json_torrent' => 'array',
'expected_fields' => 'array',
];
}
/**
* The attributes that aren't mass assignable.

View File

@@ -41,13 +41,16 @@ class Rsskey extends Model
protected $guarded = ['id'];
/**
* The attributes that should be cast.
* Get the attributes that should be cast.
*
* @var array<string, string>
* @return array<string, string>
*/
protected $casts = [
'deleted_at' => 'datetime',
];
protected function casts(): array
{
return [
'deleted_at' => 'datetime',
];
}
/**
* Belongs to a user.

View File

@@ -49,9 +49,17 @@ class Subtitle extends Model
protected $guarded = [];
protected $casts = [
'moderated_at' => 'datetime',
];
/**
* Get the attributes that should be cast.
*
* @return array<string, string>
*/
protected function casts(): array
{
return [
'moderated_at' => 'datetime',
];
}
protected static function booted(): void
{

View File

@@ -41,13 +41,21 @@ class Ticket extends Model
use Auditable;
use HasFactory;
protected $casts = [
'closed_at' => 'datetime',
'reminded_at' => 'datetime',
];
protected $guarded = [];
/**
* Get the attributes that should be cast.
*
* @return array<string, string>
*/
protected function casts(): array
{
return [
'closed_at' => 'datetime',
'reminded_at' => 'datetime',
];
}
/**
* @param Builder<Ticket> $query
* @return Builder<Ticket>

View File

@@ -46,20 +46,28 @@ class Topic extends Model
use Auditable;
use HasFactory;
protected $casts = [
'last_post_created_at' => 'datetime',
'pinned' => 'boolean',
'approved' => 'boolean',
'denied' => 'boolean',
'solved' => 'boolean',
'invalid' => 'boolean',
'bug' => 'boolean',
'suggestion' => 'boolean',
'implemented' => 'boolean',
];
protected $guarded = [];
/**
* Get the attributes that should be cast.
*
* @return array<string, string>
*/
protected function casts(): array
{
return [
'last_post_created_at' => 'datetime',
'pinned' => 'boolean',
'approved' => 'boolean',
'denied' => 'boolean',
'solved' => 'boolean',
'invalid' => 'boolean',
'bug' => 'boolean',
'suggestion' => 'boolean',
'implemented' => 'boolean',
];
}
/**
* Belongs To A Forum.
*

View File

@@ -90,20 +90,23 @@ class Torrent extends Model
protected $guarded = [];
/**
* The Attributes That Should Be Mutated To Dates.
* Get the attributes that should be cast.
*
* @var array<string, string>
* @return array<string, string>
*/
protected $casts = [
'igdb' => 'integer',
'fl_until' => 'datetime',
'du_until' => 'datetime',
'doubleup' => 'boolean',
'refundable' => 'boolean',
'featured' => 'boolean',
'moderated_at' => 'datetime',
'sticky' => 'boolean',
];
protected function casts(): array
{
return [
'igdb' => 'integer',
'fl_until' => 'datetime',
'du_until' => 'datetime',
'doubleup' => 'boolean',
'refundable' => 'boolean',
'featured' => 'boolean',
'moderated_at' => 'datetime',
'sticky' => 'boolean',
];
}
/**
* The attributes that should not be included in audit log.

View File

@@ -55,17 +55,6 @@ class TorrentRequest extends Model
use HasFactory;
use TorrentFilter;
/**
* The Attributes That Should Be Mutated To Dates.
*
* @var array<string, string>
*/
protected $casts = [
'filled_when' => 'datetime',
'approved_when' => 'datetime',
'igdb' => 'integer',
];
/**
* The Database Table Used By The Model.
*
@@ -80,6 +69,20 @@ class TorrentRequest extends Model
*/
protected $guarded = ['id', 'created_at', 'updated_at'];
/**
* Get the attributes that should be cast.
*
* @return array<string, string>
*/
protected function casts(): array
{
return [
'filled_when' => 'datetime',
'approved_when' => 'datetime',
'igdb' => 'integer',
];
}
/**
* Belongs To A User.
*

View File

@@ -32,13 +32,16 @@ class TorrentTip extends Model
public $timestamps = false;
/**
* The attributes that should be cast.
* Get the attributes that should be cast.
*
* @var array<string, string>
* @return array<string, string>
*/
protected $casts = [
'created_at' => 'datetime',
];
protected function casts(): array
{
return [
'created_at' => 'datetime',
];
}
/**
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo<User, self>

View File

@@ -112,23 +112,6 @@ class User extends Authenticatable implements MustVerifyEmail
'two_factor_confirmed_at',
];
/**
* The Attributes That Should Be Mutated To Dates.
*
* @var array<string, string>
*/
protected $casts = [
'last_login' => 'datetime',
'last_action' => 'datetime',
'hidden' => 'boolean',
'can_comment' => 'boolean',
'can_download' => 'boolean',
'can_request' => 'boolean',
'can_invite' => 'boolean',
'can_upload' => 'boolean',
'can_chat' => 'boolean',
];
/**
* The attributes that aren't mass assignable.
*
@@ -136,6 +119,26 @@ class User extends Authenticatable implements MustVerifyEmail
*/
protected $guarded = ['id', 'created_at', 'updated_at'];
/**
* Get the attributes that should be cast.
*
* @return array<string, string>
*/
protected function casts(): array
{
return [
'last_login' => 'datetime',
'last_action' => 'datetime',
'hidden' => 'boolean',
'can_comment' => 'boolean',
'can_download' => 'boolean',
'can_request' => 'boolean',
'can_invite' => 'boolean',
'can_upload' => 'boolean',
'can_chat' => 'boolean',
];
}
/**
* ID of the system user.
*/

View File

@@ -32,13 +32,6 @@ class UserAudible extends Model
{
use HasFactory;
/**
* Indicates If The Model Should Be Timestamped.
*
* @var bool
*/
public $timestamps = true;
/**
* Belongs To A User.
*

View File

@@ -31,13 +31,6 @@ class UserEcho extends Model
{
use HasFactory;
/**
* Indicates If The Model Should Be Timestamped.
*
* @var bool
*/
public $timestamps = true;
/**
* Belongs To A User.
*

View File

@@ -63,20 +63,23 @@ class UserNotification extends Model
public $timestamps = false;
/**
* The Attributes That Should Be Cast To Native Values.
* Get the attributes that should be cast.
*
* @var array<string, string>
* @return array<string, string>
*/
protected $casts = [
'json_account_groups' => 'array',
'json_mention_groups' => 'array',
'json_request_groups' => 'array',
'json_torrent_groups' => 'array',
'json_forum_groups' => 'array',
'json_following_groups' => 'array',
'json_subscription_groups' => 'array',
'json_bon_groups' => 'array',
];
protected function casts(): array
{
return [
'json_account_groups' => 'array',
'json_mention_groups' => 'array',
'json_request_groups' => 'array',
'json_torrent_groups' => 'array',
'json_forum_groups' => 'array',
'json_following_groups' => 'array',
'json_subscription_groups' => 'array',
'json_bon_groups' => 'array',
];
}
/**
* Belongs To A User.

View File

@@ -80,23 +80,26 @@ class UserPrivacy extends Model
protected $table = 'user_privacy';
/**
* The Attributes That Should Be Cast To Native Values.
* Get the attributes that should be cast.
*
* @var array<string, string>
* @return array<string, string>
*/
protected $casts = [
'json_profile_groups' => 'array',
'json_torrent_groups' => 'array',
'json_forum_groups' => 'array',
'json_bon_groups' => 'array',
'json_comment_groups' => 'array',
'json_wishlist_groups' => 'array',
'json_follower_groups' => 'array',
'json_achievement_groups' => 'array',
'json_rank_groups' => 'array',
'json_request_groups' => 'array',
'json_other_groups' => 'array',
];
protected function casts(): array
{
return [
'json_profile_groups' => 'array',
'json_torrent_groups' => 'array',
'json_forum_groups' => 'array',
'json_bon_groups' => 'array',
'json_comment_groups' => 'array',
'json_wishlist_groups' => 'array',
'json_follower_groups' => 'array',
'json_achievement_groups' => 'array',
'json_rank_groups' => 'array',
'json_request_groups' => 'array',
'json_other_groups' => 'array',
];
}
/**
* Belongs To A User.

View File

@@ -43,13 +43,16 @@ class Warning extends Model
protected $guarded = [];
/**
* The Attributes That Should Be Mutated To Dates.
* Get the attributes that should be cast.
*
* @var array<string, string>
* @return array<string, string>
*/
protected $casts = [
'active' => 'boolean',
];
protected function casts(): array
{
return [
'active' => 'boolean',
];
}
/**
* Belongs To A Torrent.

50
artisan
View File

@@ -1,53 +1,15 @@
#!/usr/bin/env php
<?php
define('LARAVEL_START', microtime(true));
use Symfony\Component\Console\Input\ArgvInput;
/*
|--------------------------------------------------------------------------
| Register The Auto Loader
|--------------------------------------------------------------------------
|
| Composer provides a convenient, automatically generated class loader
| for our application. We just need to utilize it! We'll require it
| into the script here so that we do not have to worry about the
| loading of any our classes "manually". Feels great to relax.
|
*/
\define('LARAVEL_START', microtime(true));
// Register the Composer autoloader...
require __DIR__.'/vendor/autoload.php';
$app = require_once __DIR__.'/bootstrap/app.php';
/*
|--------------------------------------------------------------------------
| Run The Artisan Application
|--------------------------------------------------------------------------
|
| When we run the console application, the current CLI command will be
| executed in this console and the response sent back to a terminal
| or another output device for the developers. Here goes nothing!
|
*/
$kernel = $app->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);

BIN
bun.lockb

Binary file not shown.

View File

@@ -25,14 +25,14 @@
"intervention/image": "^2.7.2",
"joypixels/assets": "^v7.0.1",
"laravel/fortify": "1.20.0",
"laravel/framework": "^10.48.4",
"laravel/framework": "^v11.4.0",
"laravel/tinker": "^2.9.0",
"livewire/livewire": "^v3.4.10",
"marcreichel/igdb-laravel": "^3.8.1",
"marcreichel/igdb-laravel": "^4.2.0",
"paragonie/constant_time_encoding": "^2.6.3",
"spatie/laravel-backup": "^8.6.0",
"spatie/laravel-cookie-consent": "^3.3.0",
"spatie/laravel-image-optimizer": "^1.8.0",
"spatie/laravel-image-optimizer": "^1.6.2",
"spatie/ssl-certificate": "^2.6.5",
"symfony/dom-crawler": "^6.4.4",
"theodorejb/polycast": "dev-master",
@@ -48,12 +48,11 @@
"laravel/pint": "^1.15.1",
"laravel/sail": "^1.29.1",
"mockery/mockery": "^1.6.11",
"nunomaduro/collision": "v7.10.0",
"pestphp/pest": "^v2.33.4",
"pestphp/pest-plugin-drift": "^2.5",
"pestphp/pest-plugin-laravel": "^v2.2.0",
"pestphp/pest-plugin-livewire": "^2.1",
"phpunit/phpunit": "10.5.9",
"nunomaduro/collision": "^v8.1.1",
"pestphp/pest": "^v2.34.7",
"pestphp/pest-plugin-laravel": "^v2.3.0",
"pestphp/pest-plugin-livewire": "^v2.1.0",
"phpunit/phpunit": "10.5.17",
"ryoluo/sail-ssl": "^1.3.2",
"spatie/laravel-ignition": "^2.5.1"
},

1016
composer.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -33,7 +33,7 @@ return [
'connections' => [
'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),
@@ -41,7 +41,7 @@ return [
'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', 'forge'),
@@ -67,7 +67,7 @@ return [
'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'),
@@ -107,7 +107,10 @@ return [
|
*/
'migrations' => 'migrations',
'migrations' => [
'table' => 'migrations',
'update_date_on_publish' => false, // disable to preserve original behavior for existing applications
],
/*
|--------------------------------------------------------------------------

View File

@@ -17,8 +17,8 @@
"resolve-url-loader": "^5.0.0",
"sass": "^1.49.9",
"sass-loader": "^12.6.0",
"socket.io": "^2.4.0",
"socket.io-client": "^2.3.1",
"socket.io": "2.4.0",
"socket.io-client": "2.3.1",
"sweetalert2": "^11.4.6",
"virtual-select-plugin": "^1.0.26",
"vue": "^2.6.14",

View File

@@ -1,55 +1,17 @@
<?php
use Illuminate\Contracts\Http\Kernel;
use Illuminate\Http\Request;
\define('LARAVEL_START', microtime(true));
/*
|--------------------------------------------------------------------------
| Check If The Application Is Under Maintenance
|--------------------------------------------------------------------------
|
| If the application is in maintenance / demo mode via the "down" command
| we will load this file so that any pre-rendered content can be shown
| instead of starting the framework, which could cause an exception.
|
*/
// Determine if the application is in maintenance mode...
if (file_exists($maintenance = __DIR__.'/../storage/framework/maintenance.php')) {
require $maintenance;
}
/*
|--------------------------------------------------------------------------
| Register The Auto Loader
|--------------------------------------------------------------------------
|
| Composer provides a convenient, automatically generated class loader for
| this application. We just need to utilize it! We'll simply require it
| into the script here so we don't need to manually load our classes.
|
*/
// Register the Composer autoloader...
require __DIR__.'/../vendor/autoload.php';
/*
|--------------------------------------------------------------------------
| Run The Application
|--------------------------------------------------------------------------
|
| Once we have the application, we can handle the incoming request using
| the application's HTTP kernel. Then, we will send the response back
| to this client's browser, allowing them to enjoy our application.
|
*/
$app = require_once __DIR__.'/../bootstrap/app.php';
$kernel = $app->make(Kernel::class);
$response = $kernel->handle(
$request = Request::capture()
)->send();
$kernel->terminate($request, $response);
// Bootstrap Laravel and handle the request...
(require_once __DIR__.'/../bootstrap/app.php')
->handleRequest(Request::capture());