diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 000000000..289ee8140 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,23 @@ +/.phpunit.cache +/node_modules +/public/build +/public/hot +/public/storage +/storage/*.key +/vendor +.env +.env.backup +.env.production +.phpunit.result.cache +Homestead.json +Homestead.yaml +auth.json +npm-debug.log +yarn-error.log +/.fleet +/.idea +/.vscode +/.npm +/.bash_history +/_volumes/* + diff --git a/.env.example b/.env.example index 23e5cb752..fa6643f26 100644 --- a/.env.example +++ b/.env.example @@ -14,6 +14,7 @@ APP_KEY= APP_DEBUG=true APP_URL=http://localhost APP_PORT=8000 + DUSK_DRIVER_URL=http://selenium:4444 DB_CONNECTION=pgsql diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml index 1716e5c37..468b37c5d 100644 --- a/.github/workflows/docker-image.yml +++ b/.github/workflows/docker-image.yml @@ -29,12 +29,12 @@ jobs: -v "$(pwd):/app" \ -w /app composer:2 \ composer install --ignore-platform-reqs - ./vendor/bin/sail build + ./vendor/bin/spin build - name: Start the stack run: | - ./vendor/bin/sail up -d - ./vendor/bin/sail artisan key:generate - ./vendor/bin/sail artisan migrate:fresh --seed + ./vendor/bin/spin up -d + ./vendor/bin/spin exec coolify php artisan key:generate + ./vendor/bin/spin exec coolify php artisan migrate:fresh --seed - name: Test (missing E2E tests) run: | - ./vendor/bin/sail artisan test + ./vendor/bin/spin exec coolify php artisan test diff --git a/.gitignore b/.gitignore index 92d1e443d..2f7d79a71 100644 --- a/.gitignore +++ b/.gitignore @@ -19,3 +19,4 @@ yarn-error.log /.vscode /.npm /.bash_history +/_volumes/* diff --git a/app/Actions/Fortify/CreateNewUser.php b/app/Actions/Fortify/CreateNewUser.php index 7bf18d0a4..01dd464cf 100644 --- a/app/Actions/Fortify/CreateNewUser.php +++ b/app/Actions/Fortify/CreateNewUser.php @@ -2,7 +2,9 @@ namespace App\Actions\Fortify; +use App\Models\Team; use App\Models\User; +use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Validator; use Illuminate\Validation\Rule; @@ -31,10 +33,24 @@ public function create(array $input): User 'password' => $this->passwordRules(), ])->validate(); - return User::create([ + $team = Team::create([ + 'name' => explode(' ', $input['name'], 2)[0] . "'s Team", + 'personal_team' => true, + ]); + + $user = User::create([ 'name' => $input['name'], 'email' => $input['email'], 'password' => Hash::make($input['password']), + 'is_root_user' => User::count() == 0 ? true : false, ]); + + DB::table('team_user')->insert([ + 'user_id' => $user->id, + 'team_id' => $team->id, + 'role' => 'admin', + ]); + session(['currentTeam' => $user->currentTeam = $team]); + return $user; } } diff --git a/app/Http/Controllers/ProjectController.php b/app/Http/Controllers/ProjectController.php index 7a0594e69..1bcb848f7 100644 --- a/app/Http/Controllers/ProjectController.php +++ b/app/Http/Controllers/ProjectController.php @@ -8,10 +8,11 @@ class ProjectController extends Controller { public function environments() { - $project = session('currentTeam')->load(['projects'])->projects->where('uuid', request()->route('project_uuid'))->first()->load(['environments']); + $project = session('currentTeam')->load(['projects'])->projects->where('uuid', request()->route('project_uuid'))->first(); if (!$project) { return redirect()->route('home'); } + $project->load(['environments']); return view('project.environments', ['project' => $project]); } diff --git a/app/Models/Team.php b/app/Models/Team.php index 55ffe6afb..2128ffca7 100644 --- a/app/Models/Team.php +++ b/app/Models/Team.php @@ -9,6 +9,7 @@ class Team extends BaseModel ]; protected $fillable = [ 'name', + 'personal_team' ]; public function projects() { return $this->hasMany(Project::class); diff --git a/composer.json b/composer.json index 94fa1ffd4..6e55ddadc 100644 --- a/composer.json +++ b/composer.json @@ -6,28 +6,29 @@ "license": "MIT", "require": { "php": "^8.2", - "guzzlehttp/guzzle": "^7.2", - "laravel/fortify": "^1.16", - "laravel/framework": "^10.0", - "laravel/sanctum": "^3.2", - "laravel/tinker": "^2.8", - "lcobucci/jwt": "^5.0", - "livewire/livewire": "^2.12", - "spatie/laravel-activitylog": "^4.7", - "spatie/laravel-data": "^3.2", - "spatie/laravel-ray": "^1.32", - "visus/cuid2": "^2.0" + "guzzlehttp/guzzle": "^7.5.0", + "laravel/fortify": "^v1.16.0", + "laravel/framework": "^v10.7.1", + "laravel/sanctum": "^v3.2.1", + "laravel/tinker": "^v2.8.1", + "lcobucci/jwt": "^5.0.0", + "livewire/livewire": "^v2.12.3", + "spatie/laravel-activitylog": "^4.7.3", + "spatie/laravel-data": "^3.4.3", + "spatie/laravel-ray": "^1.32.4", + "visus/cuid2": "^2.0.0" }, "require-dev": { - "fakerphp/faker": "^1.9.1", - "laravel/dusk": "^7.7", - "laravel/pint": "^1.0", - "laravel/sail": "^1.18", - "mockery/mockery": "^1.4.4", - "nunomaduro/collision": "^7.0", - "pestphp/pest": "^2.0", - "phpunit/phpunit": "^10.0", - "spatie/laravel-ignition": "^2.0" + "fakerphp/faker": "^v1.21.0", + "laravel/dusk": "^v7.7.0", + "laravel/pint": "^v1.8.0", + "laravel/sail": "^v1.21.4", + "mockery/mockery": "^1.5.1", + "nunomaduro/collision": "^v7.4.0", + "pestphp/pest": "^v2.4.0", + "phpunit/phpunit": "^10.0.19", + "serversideup/spin": "^v1.1.0", + "spatie/laravel-ignition": "^2.1.0" }, "autoload": { "files": [ diff --git a/composer.lock b/composer.lock index 432cb4ad4..cc2bd8dad 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "f6c39647206d4c1157c2be1d960de5cc", + "content-hash": "ba8dc47d08c4ccc16ec9953aa8fc8da7", "packages": [ { "name": "bacon/bacon-qr-code", @@ -1193,16 +1193,16 @@ }, { "name": "laravel/framework", - "version": "v10.5.1", + "version": "v10.7.1", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "485f22333e8c1dff5bae0fe0421c1e2e139713de" + "reference": "ddbbb2b50388721fe63312bb4469cae13163fd36" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/485f22333e8c1dff5bae0fe0421c1e2e139713de", - "reference": "485f22333e8c1dff5bae0fe0421c1e2e139713de", + "url": "https://api.github.com/repos/laravel/framework/zipball/ddbbb2b50388721fe63312bb4469cae13163fd36", + "reference": "ddbbb2b50388721fe63312bb4469cae13163fd36", "shasum": "" }, "require": { @@ -1301,7 +1301,7 @@ "league/flysystem-read-only": "^3.3", "league/flysystem-sftp-v3": "^3.0", "mockery/mockery": "^1.5.1", - "orchestra/testbench-core": "^8.1", + "orchestra/testbench-core": "^8.4", "pda/pheanstalk": "^4.0", "phpstan/phpdoc-parser": "^1.15", "phpstan/phpstan": "^1.4.7", @@ -1389,7 +1389,7 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2023-03-29T15:09:16+00:00" + "time": "2023-04-11T14:11:49+00:00" }, { "name": "laravel/sanctum", @@ -1849,16 +1849,16 @@ }, { "name": "league/flysystem", - "version": "3.12.3", + "version": "3.14.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "81e87e74dd5213795c7846d65089712d2dda90ce" + "reference": "e2a279d7f47d9098e479e8b21f7fb8b8de230158" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/81e87e74dd5213795c7846d65089712d2dda90ce", - "reference": "81e87e74dd5213795c7846d65089712d2dda90ce", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/e2a279d7f47d9098e479e8b21f7fb8b8de230158", + "reference": "e2a279d7f47d9098e479e8b21f7fb8b8de230158", "shasum": "" }, "require": { @@ -1920,7 +1920,7 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/3.12.3" + "source": "https://github.com/thephpleague/flysystem/tree/3.14.0" }, "funding": [ { @@ -1930,13 +1930,9 @@ { "url": "https://github.com/frankdejonge", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" } ], - "time": "2023-02-18T15:32:41+00:00" + "time": "2023-04-11T18:11:47+00:00" }, { "name": "league/mime-type-detection", @@ -2816,16 +2812,16 @@ }, { "name": "phpstan/phpdoc-parser", - "version": "1.16.1", + "version": "1.18.1", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "e27e92d939e2e3636f0a1f0afaba59692c0bf571" + "reference": "22dcdfd725ddf99583bfe398fc624ad6c5004a0f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/e27e92d939e2e3636f0a1f0afaba59692c0bf571", - "reference": "e27e92d939e2e3636f0a1f0afaba59692c0bf571", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/22dcdfd725ddf99583bfe398fc624ad6c5004a0f", + "reference": "22dcdfd725ddf99583bfe398fc624ad6c5004a0f", "shasum": "" }, "require": { @@ -2855,9 +2851,9 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.16.1" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.18.1" }, - "time": "2023-02-07T18:11:17+00:00" + "time": "2023-04-07T11:51:11+00:00" }, { "name": "pimple/pimple", @@ -3117,21 +3113,21 @@ }, { "name": "psr/http-client", - "version": "1.0.1", + "version": "1.0.2", "source": { "type": "git", "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" + "reference": "0955afe48220520692d2d09f7ab7e0f93ffd6a31" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/0955afe48220520692d2d09f7ab7e0f93ffd6a31", + "reference": "0955afe48220520692d2d09f7ab7e0f93ffd6a31", "shasum": "" }, "require": { "php": "^7.0 || ^8.0", - "psr/http-message": "^1.0" + "psr/http-message": "^1.0 || ^2.0" }, "type": "library", "extra": { @@ -3151,7 +3147,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for HTTP clients", @@ -3163,27 +3159,27 @@ "psr-18" ], "support": { - "source": "https://github.com/php-fig/http-client/tree/master" + "source": "https://github.com/php-fig/http-client/tree/1.0.2" }, - "time": "2020-06-29T06:28:15+00:00" + "time": "2023-04-10T20:12:12+00:00" }, { "name": "psr/http-factory", - "version": "1.0.1", + "version": "1.0.2", "source": { "type": "git", "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" + "reference": "e616d01114759c4c489f93b099585439f795fe35" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35", + "reference": "e616d01114759c4c489f93b099585439f795fe35", "shasum": "" }, "require": { "php": ">=7.0.0", - "psr/http-message": "^1.0" + "psr/http-message": "^1.0 || ^2.0" }, "type": "library", "extra": { @@ -3203,7 +3199,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interfaces for PSR-7 HTTP message factories", @@ -3218,31 +3214,31 @@ "response" ], "support": { - "source": "https://github.com/php-fig/http-factory/tree/master" + "source": "https://github.com/php-fig/http-factory/tree/1.0.2" }, - "time": "2019-04-30T12:38:16+00:00" + "time": "2023-04-10T20:10:41+00:00" }, { "name": "psr/http-message", - "version": "1.0.1", + "version": "1.1", "source": { "type": "git", "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/cb6ce4845ce34a8ad9e68117c10ee90a29919eba", + "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": "^7.2 || ^8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.1.x-dev" } }, "autoload": { @@ -3271,9 +3267,9 @@ "response" ], "support": { - "source": "https://github.com/php-fig/http-message/tree/master" + "source": "https://github.com/php-fig/http-message/tree/1.1" }, - "time": "2016-08-06T14:39:51+00:00" + "time": "2023-04-04T09:50:52+00:00" }, { "name": "psr/log", @@ -3378,16 +3374,16 @@ }, { "name": "psy/psysh", - "version": "v0.11.14", + "version": "v0.11.15", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "8c2e264def7a8263a68ef6f0b55ce90b77d41e17" + "reference": "5350ce0ec8ecf2c5b5cf554cd2496f97b444af85" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/8c2e264def7a8263a68ef6f0b55ce90b77d41e17", - "reference": "8c2e264def7a8263a68ef6f0b55ce90b77d41e17", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/5350ce0ec8ecf2c5b5cf554cd2496f97b444af85", + "reference": "5350ce0ec8ecf2c5b5cf554cd2496f97b444af85", "shasum": "" }, "require": { @@ -3448,9 +3444,9 @@ ], "support": { "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/v0.11.14" + "source": "https://github.com/bobthecow/psysh/tree/v0.11.15" }, - "time": "2023-03-28T03:41:01+00:00" + "time": "2023-04-07T21:57:09+00:00" }, { "name": "ralouphie/getallheaders", @@ -3832,16 +3828,16 @@ }, { "name": "spatie/laravel-data", - "version": "3.2.1", + "version": "3.4.3", "source": { "type": "git", "url": "https://github.com/spatie/laravel-data.git", - "reference": "b6b9d964c37263083e09ade16a9ebe613f4ed5ec" + "reference": "f573c7a5e35acce4fea7ccba8fa8d6449cf1e987" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-data/zipball/b6b9d964c37263083e09ade16a9ebe613f4ed5ec", - "reference": "b6b9d964c37263083e09ade16a9ebe613f4ed5ec", + "url": "https://api.github.com/repos/spatie/laravel-data/zipball/f573c7a5e35acce4fea7ccba8fa8d6449cf1e987", + "reference": "f573c7a5e35acce4fea7ccba8fa8d6449cf1e987", "shasum": "" }, "require": { @@ -3903,7 +3899,7 @@ ], "support": { "issues": "https://github.com/spatie/laravel-data/issues", - "source": "https://github.com/spatie/laravel-data/tree/3.2.1" + "source": "https://github.com/spatie/laravel-data/tree/3.4.3" }, "funding": [ { @@ -3911,7 +3907,7 @@ "type": "github" } ], - "time": "2023-03-24T08:31:07+00:00" + "time": "2023-04-12T10:50:15+00:00" }, { "name": "spatie/laravel-package-tools", @@ -4186,16 +4182,16 @@ }, { "name": "symfony/console", - "version": "v6.2.7", + "version": "v6.2.8", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "cbad09eb8925b6ad4fb721c7a179344dc4a19d45" + "reference": "3582d68a64a86ec25240aaa521ec8bc2342b369b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/cbad09eb8925b6ad4fb721c7a179344dc4a19d45", - "reference": "cbad09eb8925b6ad4fb721c7a179344dc4a19d45", + "url": "https://api.github.com/repos/symfony/console/zipball/3582d68a64a86ec25240aaa521ec8bc2342b369b", + "reference": "3582d68a64a86ec25240aaa521ec8bc2342b369b", "shasum": "" }, "require": { @@ -4257,12 +4253,12 @@ "homepage": "https://symfony.com", "keywords": [ "cli", - "command line", + "command-line", "console", "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.2.7" + "source": "https://github.com/symfony/console/tree/v6.2.8" }, "funding": [ { @@ -4278,7 +4274,7 @@ "type": "tidelift" } ], - "time": "2023-02-25T17:00:03+00:00" + "time": "2023-03-29T21:42:15+00:00" }, { "name": "symfony/css-selector", @@ -4485,16 +4481,16 @@ }, { "name": "symfony/event-dispatcher", - "version": "v6.2.7", + "version": "v6.2.8", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "404b307de426c1c488e5afad64403e5f145e82a5" + "reference": "04046f35fd7d72f9646e721fc2ecb8f9c67d3339" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/404b307de426c1c488e5afad64403e5f145e82a5", - "reference": "404b307de426c1c488e5afad64403e5f145e82a5", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/04046f35fd7d72f9646e721fc2ecb8f9c67d3339", + "reference": "04046f35fd7d72f9646e721fc2ecb8f9c67d3339", "shasum": "" }, "require": { @@ -4548,7 +4544,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.2.7" + "source": "https://github.com/symfony/event-dispatcher/tree/v6.2.8" }, "funding": [ { @@ -4564,7 +4560,7 @@ "type": "tidelift" } ], - "time": "2023-02-14T08:44:56+00:00" + "time": "2023-03-20T16:06:02+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -4711,16 +4707,16 @@ }, { "name": "symfony/http-foundation", - "version": "v6.2.7", + "version": "v6.2.8", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "5fc3038d4a594223f9ea42e4e985548f3fcc9a3b" + "reference": "511a524affeefc191939348823ac75e9921c2112" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/5fc3038d4a594223f9ea42e4e985548f3fcc9a3b", - "reference": "5fc3038d4a594223f9ea42e4e985548f3fcc9a3b", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/511a524affeefc191939348823ac75e9921c2112", + "reference": "511a524affeefc191939348823ac75e9921c2112", "shasum": "" }, "require": { @@ -4769,7 +4765,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.2.7" + "source": "https://github.com/symfony/http-foundation/tree/v6.2.8" }, "funding": [ { @@ -4785,20 +4781,20 @@ "type": "tidelift" } ], - "time": "2023-02-21T10:54:55+00:00" + "time": "2023-03-29T21:42:15+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.2.7", + "version": "v6.2.8", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "ca0680ad1e2d678536cc20e0ae33f9e4e5d2becd" + "reference": "9563229e56076070d92ca30c089e801e8a4629a3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/ca0680ad1e2d678536cc20e0ae33f9e4e5d2becd", - "reference": "ca0680ad1e2d678536cc20e0ae33f9e4e5d2becd", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9563229e56076070d92ca30c089e801e8a4629a3", + "reference": "9563229e56076070d92ca30c089e801e8a4629a3", "shasum": "" }, "require": { @@ -4880,7 +4876,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.2.7" + "source": "https://github.com/symfony/http-kernel/tree/v6.2.8" }, "funding": [ { @@ -4896,20 +4892,20 @@ "type": "tidelift" } ], - "time": "2023-02-28T13:26:41+00:00" + "time": "2023-03-31T12:00:10+00:00" }, { "name": "symfony/mailer", - "version": "v6.2.7", + "version": "v6.2.8", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "e4f84c633b72ec70efc50b8016871c3bc43e691e" + "reference": "bfcfa015c67e19c6fdb7ca6fe70700af1e740a17" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/e4f84c633b72ec70efc50b8016871c3bc43e691e", - "reference": "e4f84c633b72ec70efc50b8016871c3bc43e691e", + "url": "https://api.github.com/repos/symfony/mailer/zipball/bfcfa015c67e19c6fdb7ca6fe70700af1e740a17", + "reference": "bfcfa015c67e19c6fdb7ca6fe70700af1e740a17", "shasum": "" }, "require": { @@ -4959,7 +4955,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v6.2.7" + "source": "https://github.com/symfony/mailer/tree/v6.2.8" }, "funding": [ { @@ -4975,7 +4971,7 @@ "type": "tidelift" } ], - "time": "2023-02-21T10:35:38+00:00" + "time": "2023-03-14T15:00:05+00:00" }, { "name": "symfony/mime", @@ -5803,16 +5799,16 @@ }, { "name": "symfony/process", - "version": "v6.2.7", + "version": "v6.2.8", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "680e8a2ea6b3f87aecc07a6a65a203ae573d1902" + "reference": "75ed64103df4f6615e15a7fe38b8111099f47416" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/680e8a2ea6b3f87aecc07a6a65a203ae573d1902", - "reference": "680e8a2ea6b3f87aecc07a6a65a203ae573d1902", + "url": "https://api.github.com/repos/symfony/process/zipball/75ed64103df4f6615e15a7fe38b8111099f47416", + "reference": "75ed64103df4f6615e15a7fe38b8111099f47416", "shasum": "" }, "require": { @@ -5844,7 +5840,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v6.2.7" + "source": "https://github.com/symfony/process/tree/v6.2.8" }, "funding": [ { @@ -5860,20 +5856,20 @@ "type": "tidelift" } ], - "time": "2023-02-24T10:42:00+00:00" + "time": "2023-03-09T16:20:02+00:00" }, { "name": "symfony/routing", - "version": "v6.2.7", + "version": "v6.2.8", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "fa643fa4c56de161f8bc8c0492a76a60140b50e4" + "reference": "69062e2823f03b82265d73a966999660f0e1e404" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/fa643fa4c56de161f8bc8c0492a76a60140b50e4", - "reference": "fa643fa4c56de161f8bc8c0492a76a60140b50e4", + "url": "https://api.github.com/repos/symfony/routing/zipball/69062e2823f03b82265d73a966999660f0e1e404", + "reference": "69062e2823f03b82265d73a966999660f0e1e404", "shasum": "" }, "require": { @@ -5932,7 +5928,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v6.2.7" + "source": "https://github.com/symfony/routing/tree/v6.2.8" }, "funding": [ { @@ -5948,7 +5944,7 @@ "type": "tidelift" } ], - "time": "2023-02-14T08:53:37+00:00" + "time": "2023-03-14T15:00:05+00:00" }, { "name": "symfony/service-contracts", @@ -6099,16 +6095,16 @@ }, { "name": "symfony/string", - "version": "v6.2.7", + "version": "v6.2.8", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "67b8c1eec78296b85dc1c7d9743830160218993d" + "reference": "193e83bbd6617d6b2151c37fff10fa7168ebddef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/67b8c1eec78296b85dc1c7d9743830160218993d", - "reference": "67b8c1eec78296b85dc1c7d9743830160218993d", + "url": "https://api.github.com/repos/symfony/string/zipball/193e83bbd6617d6b2151c37fff10fa7168ebddef", + "reference": "193e83bbd6617d6b2151c37fff10fa7168ebddef", "shasum": "" }, "require": { @@ -6165,7 +6161,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.2.7" + "source": "https://github.com/symfony/string/tree/v6.2.8" }, "funding": [ { @@ -6181,20 +6177,20 @@ "type": "tidelift" } ], - "time": "2023-02-24T10:42:00+00:00" + "time": "2023-03-20T16:06:02+00:00" }, { "name": "symfony/translation", - "version": "v6.2.7", + "version": "v6.2.8", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "90db1c6138c90527917671cd9ffa9e8b359e3a73" + "reference": "817535dbb1721df8b3a8f2489dc7e50bcd6209b5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/90db1c6138c90527917671cd9ffa9e8b359e3a73", - "reference": "90db1c6138c90527917671cd9ffa9e8b359e3a73", + "url": "https://api.github.com/repos/symfony/translation/zipball/817535dbb1721df8b3a8f2489dc7e50bcd6209b5", + "reference": "817535dbb1721df8b3a8f2489dc7e50bcd6209b5", "shasum": "" }, "require": { @@ -6263,7 +6259,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v6.2.7" + "source": "https://github.com/symfony/translation/tree/v6.2.8" }, "funding": [ { @@ -6279,7 +6275,7 @@ "type": "tidelift" } ], - "time": "2023-02-24T10:42:00+00:00" + "time": "2023-03-31T09:14:44+00:00" }, { "name": "symfony/translation-contracts", @@ -6438,16 +6434,16 @@ }, { "name": "symfony/var-dumper", - "version": "v6.2.7", + "version": "v6.2.8", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "cf8d4ca1ddc1e3cc242375deb8fc23e54f5e2a1e" + "reference": "d37ab6787be2db993747b6218fcc96e8e3bb4bd0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/cf8d4ca1ddc1e3cc242375deb8fc23e54f5e2a1e", - "reference": "cf8d4ca1ddc1e3cc242375deb8fc23e54f5e2a1e", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/d37ab6787be2db993747b6218fcc96e8e3bb4bd0", + "reference": "d37ab6787be2db993747b6218fcc96e8e3bb4bd0", "shasum": "" }, "require": { @@ -6506,7 +6502,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.2.7" + "source": "https://github.com/symfony/var-dumper/tree/v6.2.8" }, "funding": [ { @@ -6522,7 +6518,7 @@ "type": "tidelift" } ], - "time": "2023-02-24T10:42:00+00:00" + "time": "2023-03-29T21:42:15+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", @@ -7287,16 +7283,16 @@ }, { "name": "filp/whoops", - "version": "2.15.1", + "version": "2.15.2", "source": { "type": "git", "url": "https://github.com/filp/whoops.git", - "reference": "e864ac957acd66e1565f25efda61e37791a5db0b" + "reference": "aac9304c5ed61bf7b1b7a6064bf9806ab842ce73" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/e864ac957acd66e1565f25efda61e37791a5db0b", - "reference": "e864ac957acd66e1565f25efda61e37791a5db0b", + "url": "https://api.github.com/repos/filp/whoops/zipball/aac9304c5ed61bf7b1b7a6064bf9806ab842ce73", + "reference": "aac9304c5ed61bf7b1b7a6064bf9806ab842ce73", "shasum": "" }, "require": { @@ -7346,7 +7342,7 @@ ], "support": { "issues": "https://github.com/filp/whoops/issues", - "source": "https://github.com/filp/whoops/tree/2.15.1" + "source": "https://github.com/filp/whoops/tree/2.15.2" }, "funding": [ { @@ -7354,7 +7350,7 @@ "type": "github" } ], - "time": "2023-03-06T18:09:13+00:00" + "time": "2023-04-12T12:00:00+00:00" }, { "name": "hamcrest/hamcrest-php", @@ -7541,16 +7537,16 @@ }, { "name": "laravel/pint", - "version": "v1.7.0", + "version": "v1.8.0", "source": { "type": "git", "url": "https://github.com/laravel/pint.git", - "reference": "d55381c73b7308e1b8a124084e804193a179092e" + "reference": "4b8f2ef22bfcddd1d163cfd282e3f42ee1a5cce2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/pint/zipball/d55381c73b7308e1b8a124084e804193a179092e", - "reference": "d55381c73b7308e1b8a124084e804193a179092e", + "url": "https://api.github.com/repos/laravel/pint/zipball/4b8f2ef22bfcddd1d163cfd282e3f42ee1a5cce2", + "reference": "4b8f2ef22bfcddd1d163cfd282e3f42ee1a5cce2", "shasum": "" }, "require": { @@ -7561,13 +7557,13 @@ "php": "^8.1.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^3.14.4", - "illuminate/view": "^10.0.0", - "laravel-zero/framework": "^10.0.0", + "friendsofphp/php-cs-fixer": "^3.16.0", + "illuminate/view": "^10.5.1", + "laravel-zero/framework": "^10.0.2", "mockery/mockery": "^1.5.1", - "nunomaduro/larastan": "^2.4.0", + "nunomaduro/larastan": "^2.5.1", "nunomaduro/termwind": "^1.15.1", - "pestphp/pest": "^1.22.4" + "pestphp/pest": "^2.4.0" }, "bin": [ "builds/pint" @@ -7603,20 +7599,20 @@ "issues": "https://github.com/laravel/pint/issues", "source": "https://github.com/laravel/pint" }, - "time": "2023-03-21T10:55:35+00:00" + "time": "2023-04-04T13:08:09+00:00" }, { "name": "laravel/sail", - "version": "v1.21.3", + "version": "v1.21.4", "source": { "type": "git", "url": "https://github.com/laravel/sail.git", - "reference": "3042ff8cf403817c340d5a7762b2d32900239f46" + "reference": "5e59b4a57181020477e2b18943b27493638e3f89" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/3042ff8cf403817c340d5a7762b2d32900239f46", - "reference": "3042ff8cf403817c340d5a7762b2d32900239f46", + "url": "https://api.github.com/repos/laravel/sail/zipball/5e59b4a57181020477e2b18943b27493638e3f89", + "reference": "5e59b4a57181020477e2b18943b27493638e3f89", "shasum": "" }, "require": { @@ -7668,7 +7664,7 @@ "issues": "https://github.com/laravel/sail/issues", "source": "https://github.com/laravel/sail" }, - "time": "2023-03-13T01:22:10+00:00" + "time": "2023-03-30T12:28:55+00:00" }, { "name": "mockery/mockery", @@ -7866,16 +7862,16 @@ }, { "name": "nunomaduro/collision", - "version": "v7.3.3", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/nunomaduro/collision.git", - "reference": "c680af93e414110b36056029f63120e6bc78f6e3" + "reference": "42bab217d4913d6610f341d0468cec860aae165e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/c680af93e414110b36056029f63120e6bc78f6e3", - "reference": "c680af93e414110b36056029f63120e6bc78f6e3", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/42bab217d4913d6610f341d0468cec860aae165e", + "reference": "42bab217d4913d6610f341d0468cec860aae165e", "shasum": "" }, "require": { @@ -7889,15 +7885,15 @@ }, "require-dev": { "brianium/paratest": "^7.1.2", - "laravel/framework": "^10.4.1", + "laravel/framework": "^10.5.1", "laravel/pint": "^1.7.0", - "laravel/sail": "^1.21.2", + "laravel/sail": "^1.21.3", "laravel/sanctum": "^3.2.1", "laravel/tinker": "^2.8.1", "nunomaduro/larastan": "^2.5.1", - "orchestra/testbench-core": "^8.1.1", - "pestphp/pest": "^2.0.2", - "phpunit/phpunit": "^10.0.17", + "orchestra/testbench-core": "^8.2.0", + "pestphp/pest": "^2.3.0", + "phpunit/phpunit": "^10.0.19", "sebastian/environment": "^6.0.0", "spatie/laravel-ignition": "^2.0.0" }, @@ -7958,28 +7954,28 @@ "type": "patreon" } ], - "time": "2023-03-23T21:41:35+00:00" + "time": "2023-03-31T08:17:12+00:00" }, { "name": "pestphp/pest", - "version": "v2.3.0", + "version": "v2.4.0", "source": { "type": "git", "url": "https://github.com/pestphp/pest.git", - "reference": "5ae061d2080ea09608fe37fb05ebadcd183cef85" + "reference": "12c75524a2548e787ade52023d6e2d5725dba9bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pestphp/pest/zipball/5ae061d2080ea09608fe37fb05ebadcd183cef85", - "reference": "5ae061d2080ea09608fe37fb05ebadcd183cef85", + "url": "https://api.github.com/repos/pestphp/pest/zipball/12c75524a2548e787ade52023d6e2d5725dba9bb", + "reference": "12c75524a2548e787ade52023d6e2d5725dba9bb", "shasum": "" }, "require": { "brianium/paratest": "^7.1.2", - "nunomaduro/collision": "^7.3.3", + "nunomaduro/collision": "^7.4.0", "nunomaduro/termwind": "^1.15.1", "pestphp/pest-plugin": "^2.0.1", - "pestphp/pest-plugin-arch": "^2.0.2", + "pestphp/pest-plugin-arch": "^2.1.1", "php": "^8.1.0", "phpunit/phpunit": "^10.0.19" }, @@ -7988,8 +7984,8 @@ "webmozart/assert": "<1.11.0" }, "require-dev": { - "pestphp/pest-dev-tools": "^2.5.0", - "symfony/process": "^6.2.7" + "pestphp/pest-dev-tools": "^2.6.0", + "symfony/process": "^6.2.8" }, "bin": [ "bin/pest" @@ -8045,7 +8041,7 @@ ], "support": { "issues": "https://github.com/pestphp/pest/issues", - "source": "https://github.com/pestphp/pest/tree/v2.3.0" + "source": "https://github.com/pestphp/pest/tree/v2.4.0" }, "funding": [ { @@ -8057,7 +8053,7 @@ "type": "github" } ], - "time": "2023-03-28T09:16:29+00:00" + "time": "2023-04-02T20:12:31+00:00" }, { "name": "pestphp/pest-plugin", @@ -8130,26 +8126,27 @@ }, { "name": "pestphp/pest-plugin-arch", - "version": "v2.0.2", + "version": "v2.1.1", "source": { "type": "git", "url": "https://github.com/pestphp/pest-plugin-arch.git", - "reference": "02ce3fd7cf795f30be72cb4935f6ad99b077d278" + "reference": "eb458dee939014a7f796147fa011db5e73dac63c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pestphp/pest-plugin-arch/zipball/02ce3fd7cf795f30be72cb4935f6ad99b077d278", - "reference": "02ce3fd7cf795f30be72cb4935f6ad99b077d278", + "url": "https://api.github.com/repos/pestphp/pest-plugin-arch/zipball/eb458dee939014a7f796147fa011db5e73dac63c", + "reference": "eb458dee939014a7f796147fa011db5e73dac63c", "shasum": "" }, "require": { - "pestphp/pest-plugin": "^2.0.0", + "nunomaduro/collision": "^7.4.0", + "pestphp/pest-plugin": "^2.0.1", "php": "^8.1", "ta-tikoma/phpunit-architecture-test": "^0.7.2" }, "require-dev": { - "pestphp/pest": "^2.2.2", - "pestphp/pest-dev-tools": "^2.5.0" + "pestphp/pest": "^2.3.0", + "pestphp/pest-dev-tools": "^2.6.0" }, "type": "library", "autoload": { @@ -8177,7 +8174,7 @@ "unit" ], "support": { - "source": "https://github.com/pestphp/pest-plugin-arch/tree/v2.0.2" + "source": "https://github.com/pestphp/pest-plugin-arch/tree/v2.1.1" }, "funding": [ { @@ -8189,7 +8186,7 @@ "type": "github" } ], - "time": "2023-03-24T11:18:19+00:00" + "time": "2023-04-02T19:43:12+00:00" }, { "name": "phar-io/manifest", @@ -9213,16 +9210,16 @@ }, { "name": "sebastian/environment", - "version": "6.0.0", + "version": "6.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "b6f3694c6386c7959915a0037652e0c40f6f69cc" + "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/b6f3694c6386c7959915a0037652e0c40f6f69cc", - "reference": "b6f3694c6386c7959915a0037652e0c40f6f69cc", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/43c751b41d74f96cbbd4e07b7aec9675651e2951", + "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951", "shasum": "" }, "require": { @@ -9264,7 +9261,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/6.0.0" + "security": "https://github.com/sebastianbergmann/environment/security/policy", + "source": "https://github.com/sebastianbergmann/environment/tree/6.0.1" }, "funding": [ { @@ -9272,7 +9270,7 @@ "type": "github" } ], - "time": "2023-02-03T07:03:04+00:00" + "time": "2023-04-11T05:39:26+00:00" }, { "name": "sebastian/exporter", @@ -9754,17 +9752,62 @@ "time": "2023-02-07T11:34:05+00:00" }, { - "name": "spatie/flare-client-php", - "version": "1.3.5", + "name": "serversideup/spin", + "version": "v1.1.0", "source": { "type": "git", - "url": "https://github.com/spatie/flare-client-php.git", - "reference": "3e5dd5ac4928f3d2d036bd02de5eb83fd0ef1f42" + "url": "https://github.com/serversideup/spin.git", + "reference": "03bb69dbdc6d6a68b82b4bb4cfeb7accc4f8758f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/3e5dd5ac4928f3d2d036bd02de5eb83fd0ef1f42", - "reference": "3e5dd5ac4928f3d2d036bd02de5eb83fd0ef1f42", + "url": "https://api.github.com/repos/serversideup/spin/zipball/03bb69dbdc6d6a68b82b4bb4cfeb7accc4f8758f", + "reference": "03bb69dbdc6d6a68b82b4bb4cfeb7accc4f8758f", + "shasum": "" + }, + "bin": [ + "bin/spin" + ], + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-3.0-or-later" + ], + "authors": [ + { + "name": "Dan Pastori", + "homepage": "https://twitter.com/danpastori" + }, + { + "name": "Jay Rogers", + "homepage": "https://twitter.com/jaydrogers" + } + ], + "description": "Replicate your production environment locally using Docker. Just run \"spin up\". It's really that easy.", + "support": { + "issues": "https://github.com/serversideup/spin/issues", + "source": "https://github.com/serversideup/spin/tree/v1.1.0" + }, + "funding": [ + { + "url": "https://github.com/serversideup", + "type": "github" + } + ], + "time": "2022-05-20T15:13:10+00:00" + }, + { + "name": "spatie/flare-client-php", + "version": "1.3.6", + "source": { + "type": "git", + "url": "https://github.com/spatie/flare-client-php.git", + "reference": "530ac81255af79f114344286e4275f8869c671e2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/530ac81255af79f114344286e4275f8869c671e2", + "reference": "530ac81255af79f114344286e4275f8869c671e2", "shasum": "" }, "require": { @@ -9812,7 +9855,7 @@ ], "support": { "issues": "https://github.com/spatie/flare-client-php/issues", - "source": "https://github.com/spatie/flare-client-php/tree/1.3.5" + "source": "https://github.com/spatie/flare-client-php/tree/1.3.6" }, "funding": [ { @@ -9820,37 +9863,46 @@ "type": "github" } ], - "time": "2023-01-23T15:58:46+00:00" + "time": "2023-04-12T07:57:12+00:00" }, { "name": "spatie/ignition", - "version": "1.4.5", + "version": "1.5.0", "source": { "type": "git", "url": "https://github.com/spatie/ignition.git", - "reference": "cc09114b7057bd217b676f047544b33f5b6247e6" + "reference": "4db9c9626e4d7745efbe0b512157326190b41b65" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/cc09114b7057bd217b676f047544b33f5b6247e6", - "reference": "cc09114b7057bd217b676f047544b33f5b6247e6", + "url": "https://api.github.com/repos/spatie/ignition/zipball/4db9c9626e4d7745efbe0b512157326190b41b65", + "reference": "4db9c9626e4d7745efbe0b512157326190b41b65", "shasum": "" }, "require": { "ext-json": "*", "ext-mbstring": "*", "php": "^8.0", + "spatie/backtrace": "^1.4", "spatie/flare-client-php": "^1.1", "symfony/console": "^5.4|^6.0", "symfony/var-dumper": "^5.4|^6.0" }, "require-dev": { + "illuminate/cache": "^9.52", "mockery/mockery": "^1.4", "pestphp/pest": "^1.20", "phpstan/extension-installer": "^1.1", "phpstan/phpstan-deprecation-rules": "^1.0", "phpstan/phpstan-phpunit": "^1.0", - "symfony/process": "^5.4|^6.0" + "psr/simple-cache-implementation": "*", + "symfony/cache": "^6.2", + "symfony/process": "^5.4|^6.0", + "vlucas/phpdotenv": "^5.5" + }, + "suggest": { + "openai-php/client": "Require get solutions from OpenAI", + "simple-cache-implementation": "To cache solutions from OpenAI" }, "type": "library", "extra": { @@ -9894,20 +9946,20 @@ "type": "github" } ], - "time": "2023-02-28T16:49:47+00:00" + "time": "2023-04-12T09:07:50+00:00" }, { "name": "spatie/laravel-ignition", - "version": "2.0.0", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "70c0e2a22c5c4b691a34db8c98bd6d695660a97a" + "reference": "3718dfb91bc5aff340af26507a61f0f9605f81e8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/70c0e2a22c5c4b691a34db8c98bd6d695660a97a", - "reference": "70c0e2a22c5c4b691a34db8c98bd6d695660a97a", + "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/3718dfb91bc5aff340af26507a61f0f9605f81e8", + "reference": "3718dfb91bc5aff340af26507a61f0f9605f81e8", "shasum": "" }, "require": { @@ -9917,18 +9969,24 @@ "illuminate/support": "^10.0", "php": "^8.1", "spatie/flare-client-php": "^1.3.5", - "spatie/ignition": "^1.4.3", + "spatie/ignition": "^1.5.0", "symfony/console": "^6.2.3", "symfony/var-dumper": "^6.2.3" }, "require-dev": { "livewire/livewire": "^2.11", "mockery/mockery": "^1.5.1", + "openai-php/client": "^0.3.4", "orchestra/testbench": "^8.0", "pestphp/pest": "^1.22.3", "phpstan/extension-installer": "^1.2", "phpstan/phpstan-deprecation-rules": "^1.1.1", - "phpstan/phpstan-phpunit": "^1.3.3" + "phpstan/phpstan-phpunit": "^1.3.3", + "vlucas/phpdotenv": "^5.5" + }, + "suggest": { + "openai-php/client": "Require get solutions from OpenAI", + "psr/simple-cache-implementation": "Needed to cache solutions from OpenAI" }, "type": "library", "extra": { @@ -9939,9 +9997,6 @@ "aliases": { "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" } - }, - "branch-alias": { - "dev-main": "2.0-dev" } }, "autoload": { @@ -9983,7 +10038,7 @@ "type": "github" } ], - "time": "2023-01-24T07:20:39+00:00" + "time": "2023-04-12T09:26:00+00:00" }, { "name": "symfony/yaml", diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml new file mode 100644 index 000000000..1eb7897fa --- /dev/null +++ b/docker-compose.dev.yml @@ -0,0 +1,60 @@ +version: '3.8' + +x-testing-host: &testing-host-base + image: coolify-testing-host + build: + dockerfile: Dockerfile + context: ./docker/testing-host + volumes: + - /var/run/docker.sock:/var/run/docker.sock + - ./docker/testing-host/supervisord.conf:/etc/supervisor/conf.d/supervisord.conf + networks: + - coolify + + +services: + coolify: + build: + context: . + dockerfile: ./docker/dev-ssu/Dockerfile + ports: + - "${APP_PORT:-8000}:80" + environment: + PUID: "${USERID:-1000}" + PGID: "${GROUPID:-1000}" + SSL_MODE: "off" + AUTORUN_LARAVEL_STORAGE_LINK: "false" + AUTORUN_LARAVEL_MIGRATION: "false" + env_file: + - .env + volumes: + - .:/var/www/html/:cached + postgres: + ports: + - "${FORWARD_DB_PORT:-5432}:5432" + env_file: + - .env + environment: + POSTGRES_USER: "${DB_USERNAME}" + POSTGRES_PASSWORD: "${DB_PASSWORD}" + POSTGRES_DB: "${DB_DATABASE}" + POSTGRES_HOST_AUTH_METHOD: "trust" + volumes: + - ./_volumes/database/:/var/lib/postgresql/data + vite: + image: node:19 + working_dir: /var/www/html + ports: + - "${VITE_PORT:-5173}:${VITE_PORT:-5173}" + volumes: + - .:/var/www/html:cached + command: sh -c "npm install && npm run dev" + testing-host: + <<: *testing-host-base + container_name: coolify-testing-host + testing-host2: + <<: *testing-host-base + container_name: coolify-testing-host-2 + + + diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml new file mode 100644 index 000000000..c0292d408 --- /dev/null +++ b/docker-compose.prod.yml @@ -0,0 +1,49 @@ +version: '3.8' +services: + coolify: + container_name: coolify + build: + context: . + dockerfile: ./docker/prod-ssu/Dockerfile + environment: + - APP_ENV=production + - APP_DEBUG + - APP_NAME + - APP_KEY + - APP_URL + - DB_CONNECTION + - DB_HOST + - DB_PORT + - DB_DATABASE + - DB_USERNAME + - DB_PASSWORD + - QUEUE_CONNECTION + - SSL_MODE=off + - AUTORUN_LARAVEL_MIGRATION=true + ports: + - "${APP_PORT:-8000}:80" + depends_on: + postgres: + condition: service_healthy + postgres: + container_name: coolify-db + volumes: + - coolify-db:/var/lib/postgresql/data + environment: + POSTGRES_USER: "${DB_USERNAME}" + POSTGRES_PASSWORD: "${DB_PASSWORD}" + POSTGRES_DB: "${DB_DATABASE}" + healthcheck: + test: + [ + "CMD-SHELL", + "pg_isready -U ${DB_USERNAME}", + "-d", + "${DB_DATABASE}" + ] + interval: 2s + retries: 5 + timeout: 2s +volumes: + coolify-db: + name: coolify-db diff --git a/docker-compose.yaml b/docker-compose.yaml deleted file mode 100644 index 350c9a31e..000000000 --- a/docker-compose.yaml +++ /dev/null @@ -1,86 +0,0 @@ -version: '3.8' - -x-testing-host: &testing-host-base - image: coolify-testing-host - build: - dockerfile: Dockerfile - context: ./docker/testing-host - volumes: - - /var/run/docker.sock:/var/run/docker.sock - - ./docker/testing-host/supervisord.conf:/etc/supervisor/conf.d/supervisord.conf - networks: - - coolify - -services: - php: - hostname: coolify.test - image: "coolify:${TAG:-4}" - extra_hosts: - - 'host.docker.internal:host-gateway' - build: - context: ./docker/dev - dockerfile: Dockerfile - args: - WWWGROUP: '${WWWGROUP}' - ports: - - "${APP_PORT:-8000}:80" - - "${VITE_PORT:-5173}:${VITE_PORT:-5173}" - environment: - WWWUSER: "${WWWUSER}" - LARAVEL_SAIL: 1 - XDEBUG_MODE: "${SAIL_XDEBUG_MODE:-off}" - XDEBUG_CONFIG: "${SAIL_XDEBUG_CONFIG:-client_host=host.docker.internal}" - volumes: - - .:/var/www/html - networks: - - coolify - depends_on: - postgres: - condition: service_healthy - selenium: - condition: service_started - postgres: - image: postgres:15-alpine - ports: - - "${FORWARD_DB_PORT:-5432}:5432" - volumes: - - db-coolify:/var/lib/postgresql/data - networks: - - coolify - environment: - POSTGRES_USER: "${DB_USERNAME}" - POSTGRES_PASSWORD: "${DB_PASSWORD}" - POSTGRES_DB: "${DB_DATABASE}" - POSTGRES_HOST_AUTH_METHOD: "trust" - healthcheck: - test: - [ - "CMD-SHELL", - "pg_isready -U coolify", - "-d", - "coolify" - ] - retries: 5 - timeout: 10s - selenium: - image: seleniarm/standalone-chromium - extra_hosts: - - 'host.docker.internal:host-gateway' - volumes: - - '/dev/shm:/dev/shm' - networks: - - coolify - testing-host: - <<: *testing-host-base - container_name: coolify-testing-host - testing-host2: - <<: *testing-host-base - container_name: coolify-testing-host-2 - -volumes: - db-coolify: - driver: local - -networks: - coolify: - driver: bridge diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 000000000..094a02c97 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,16 @@ +version: '3.8' +services: + coolify: + working_dir: /var/www/html + networks: + - coolify + depends_on: + - postgres + + postgres: + image: postgres:15-alpine + networks: + - coolify +networks: + coolify: + driver: bridge diff --git a/docker/dev-ssu/Dockerfile b/docker/dev-ssu/Dockerfile new file mode 100644 index 000000000..3314a40ac --- /dev/null +++ b/docker/dev-ssu/Dockerfile @@ -0,0 +1,8 @@ +FROM serversideup/php:8.2-fpm-nginx +ARG POSTGRES_VERSION=15 +RUN apt-get update && apt-get install -y php-pgsql openssh-client +RUN apt-get -y autoremove \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/* + +COPY --chmod=755 docker/dev-ssu/etc/s6-overlay/ /etc/s6-overlay/ diff --git a/docker/dev-ssu/etc/s6-overlay/s6-rc.d/queue-worker/run b/docker/dev-ssu/etc/s6-overlay/s6-rc.d/queue-worker/run new file mode 100644 index 000000000..79fc840ee --- /dev/null +++ b/docker/dev-ssu/etc/s6-overlay/s6-rc.d/queue-worker/run @@ -0,0 +1,2 @@ +#!/command/execlineb -P +su - webuser -c "php /var/www/html/artisan queue:listen --timeout=600 --rest=1 --memory=512" diff --git a/docker/dev-ssu/etc/s6-overlay/s6-rc.d/queue-worker/type b/docker/dev-ssu/etc/s6-overlay/s6-rc.d/queue-worker/type new file mode 100644 index 000000000..5883cff0c --- /dev/null +++ b/docker/dev-ssu/etc/s6-overlay/s6-rc.d/queue-worker/type @@ -0,0 +1 @@ +longrun diff --git a/docker/dev-ssu/etc/s6-overlay/s6-rc.d/scheduler-worker/run b/docker/dev-ssu/etc/s6-overlay/s6-rc.d/scheduler-worker/run new file mode 100644 index 000000000..8021572af --- /dev/null +++ b/docker/dev-ssu/etc/s6-overlay/s6-rc.d/scheduler-worker/run @@ -0,0 +1,2 @@ +#!/command/execlineb -P +su - webuser -c "php /var/www/html/artisan schedule:work" diff --git a/docker/dev-ssu/etc/s6-overlay/s6-rc.d/scheduler-worker/type b/docker/dev-ssu/etc/s6-overlay/s6-rc.d/scheduler-worker/type new file mode 100644 index 000000000..5883cff0c --- /dev/null +++ b/docker/dev-ssu/etc/s6-overlay/s6-rc.d/scheduler-worker/type @@ -0,0 +1 @@ +longrun diff --git a/docker/dev-ssu/etc/s6-overlay/s6-rc.d/user/contents.d/queue-worker b/docker/dev-ssu/etc/s6-overlay/s6-rc.d/user/contents.d/queue-worker new file mode 100644 index 000000000..e69de29bb diff --git a/docker/dev-ssu/etc/s6-overlay/s6-rc.d/user/contents.d/scheduler-worker b/docker/dev-ssu/etc/s6-overlay/s6-rc.d/user/contents.d/scheduler-worker new file mode 100644 index 000000000..e69de29bb diff --git a/docker/prod-ssu/Dockerfile b/docker/prod-ssu/Dockerfile new file mode 100644 index 000000000..04164cff5 --- /dev/null +++ b/docker/prod-ssu/Dockerfile @@ -0,0 +1,21 @@ +FROM node:19 as static-assets +WORKDIR /app +COPY . . +RUN npm install +RUN npm run build + +FROM serversideup/php:8.2-fpm-nginx +WORKDIR /var/www/html +ARG POSTGRES_VERSION=15 +RUN apt-get update && apt-get install -y php-pgsql openssh-client git git-lfs +RUN apt-get -y autoremove \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/* + +COPY --chmod=755 docker/prod-ssu/etc/s6-overlay/ /etc/s6-overlay/ +COPY --chown=9999:9999 . . +COPY --from=static-assets --chown=9999:9999 /app/public/build /var/www/html/public/build + +RUN composer install --no-dev --optimize-autoloader +RUN php artisan route:cache +RUN php artisan view:cache diff --git a/docker/prod-ssu/etc/s6-overlay/s6-rc.d/queue-worker/run b/docker/prod-ssu/etc/s6-overlay/s6-rc.d/queue-worker/run new file mode 100644 index 000000000..cab060631 --- /dev/null +++ b/docker/prod-ssu/etc/s6-overlay/s6-rc.d/queue-worker/run @@ -0,0 +1,2 @@ +#!/command/execlineb -P +su - webuser -c "php /var/www/html/artisan queue:work --timeout=600 --rest=1 --memory=512" diff --git a/docker/prod-ssu/etc/s6-overlay/s6-rc.d/queue-worker/type b/docker/prod-ssu/etc/s6-overlay/s6-rc.d/queue-worker/type new file mode 100644 index 000000000..5883cff0c --- /dev/null +++ b/docker/prod-ssu/etc/s6-overlay/s6-rc.d/queue-worker/type @@ -0,0 +1 @@ +longrun diff --git a/docker/prod-ssu/etc/s6-overlay/s6-rc.d/scheduler-worker/run b/docker/prod-ssu/etc/s6-overlay/s6-rc.d/scheduler-worker/run new file mode 100644 index 000000000..8021572af --- /dev/null +++ b/docker/prod-ssu/etc/s6-overlay/s6-rc.d/scheduler-worker/run @@ -0,0 +1,2 @@ +#!/command/execlineb -P +su - webuser -c "php /var/www/html/artisan schedule:work" diff --git a/docker/prod-ssu/etc/s6-overlay/s6-rc.d/scheduler-worker/type b/docker/prod-ssu/etc/s6-overlay/s6-rc.d/scheduler-worker/type new file mode 100644 index 000000000..5883cff0c --- /dev/null +++ b/docker/prod-ssu/etc/s6-overlay/s6-rc.d/scheduler-worker/type @@ -0,0 +1 @@ +longrun diff --git a/docker/prod-ssu/etc/s6-overlay/s6-rc.d/user/contents.d/queue-worker b/docker/prod-ssu/etc/s6-overlay/s6-rc.d/user/contents.d/queue-worker new file mode 100644 index 000000000..e69de29bb diff --git a/docker/prod-ssu/etc/s6-overlay/s6-rc.d/user/contents.d/scheduler-worker b/docker/prod-ssu/etc/s6-overlay/s6-rc.d/user/contents.d/scheduler-worker new file mode 100644 index 000000000..e69de29bb diff --git a/resources/views/livewire/poll-activity.blade.php b/resources/views/livewire/poll-activity.blade.php index c02964a56..c48f1e440 100644 --- a/resources/views/livewire/poll-activity.blade.php +++ b/resources/views/livewire/poll-activity.blade.php @@ -1,3 +1,3 @@
-
{{ \App\Actions\RemoteProcess\RunRemoteProcess::decodeOutput($activity) }}
+
{{ \App\Actions\RemoteProcess\RunRemoteProcess::decodeOutput($activity) }}