Merge pull request #1288 from coollabsio/next

v4.0.0-beta.67
This commit is contained in:
Andras Bacsai 2023-10-06 10:24:13 +02:00 committed by GitHub
commit 1bfedf69f2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
16 changed files with 244 additions and 255 deletions

View File

@ -92,6 +92,7 @@ public function new()
$generatedValue = $value; $generatedValue = $value;
if ($value->contains('SERVICE_')) { if ($value->contains('SERVICE_')) {
$command = $value->after('SERVICE_')->beforeLast('_'); $command = $value->after('SERVICE_')->beforeLast('_');
// TODO: make it shared with Service.php
switch ($command->value()) { switch ($command->value()) {
case 'PASSWORD': case 'PASSWORD':
$generatedValue = Str::password(symbols: false); $generatedValue = Str::password(symbols: false);

View File

@ -29,7 +29,8 @@ public function resetToDefault()
public function generate_real_url() public function generate_real_url()
{ {
if (data_get($this->application, 'fqdn')) { if (data_get($this->application, 'fqdn')) {
$url = Url::fromString($this->application->fqdn); $firstFqdn = Str::of($this->application->fqdn)->before(',');
$url = Url::fromString($firstFqdn);
$host = $url->getHost(); $host = $url->getHost();
$this->preview_url_template = Str::of($this->application->preview_url_template)->replace('{{domain}}', $host); $this->preview_url_template = Str::of($this->application->preview_url_template)->replace('{{domain}}', $host);
} }

View File

@ -52,9 +52,9 @@ class ApplicationDeploymentJob implements ShouldQueue, ShouldBeEncrypted
private string $container_name; private string $container_name;
private string|null $currently_running_container_name = null; private string|null $currently_running_container_name = null;
private string $basedir;
private string $workdir; private string $workdir;
private string $configuration_dir; private string $configuration_dir;
private string $build_workdir;
private string $build_image_name; private string $build_image_name;
private string $production_image_name; private string $production_image_name;
private bool $is_debug_enabled; private bool $is_debug_enabled;
@ -84,11 +84,12 @@ public function __construct(int $application_deployment_queue_id)
$this->destination = $this->application->destination->getMorphClass()::where('id', $this->application->destination->id)->first(); $this->destination = $this->application->destination->getMorphClass()::where('id', $this->application->destination->id)->first();
$this->server = $this->destination->server; $this->server = $this->destination->server;
$this->workdir = "/artifacts/{$this->deployment_uuid}"; $this->basedir = "/artifacts/{$this->deployment_uuid}";
$this->workdir = "{$this->basedir}" . rtrim($this->application->base_directory, '/');
$this->configuration_dir = application_configuration_dir() . "/{$this->application->uuid}"; $this->configuration_dir = application_configuration_dir() . "/{$this->application->uuid}";
$this->build_workdir = "{$this->workdir}" . rtrim($this->application->base_directory, '/');
$this->is_debug_enabled = $this->application->settings->is_debug_enabled; $this->is_debug_enabled = $this->application->settings->is_debug_enabled;
ray($this->basedir,$this->workdir);
$this->container_name = generateApplicationContainerName($this->application, $this->pull_request_id); $this->container_name = generateApplicationContainerName($this->application, $this->pull_request_id);
savePrivateKeyToFs($this->server); savePrivateKeyToFs($this->server);
$this->saved_outputs = collect(); $this->saved_outputs = collect();
@ -161,12 +162,12 @@ public function handle(): void
] ]
); );
} }
$this->execute_remote_command( // $this->execute_remote_command(
[ // [
"docker rm -f {$this->deployment_uuid} >/dev/null 2>&1", // "docker rm -f {$this->deployment_uuid} >/dev/null 2>&1",
"hidden" => true, // "hidden" => true,
] // ]
); // );
} }
} }
private function deploy_docker_compose() private function deploy_docker_compose()
@ -391,7 +392,7 @@ private function prepare_builder_image()
"hidden" => true, "hidden" => true,
], ],
[ [
"command" => executeInDocker($this->deployment_uuid, "mkdir -p {$this->workdir}") "command" => executeInDocker($this->deployment_uuid, "mkdir -p {$this->basedir}")
], ],
); );
} }
@ -402,13 +403,13 @@ private function clone_repository()
{ {
$this->execute_remote_command( $this->execute_remote_command(
[ [
"echo -n 'Importing {$this->application->git_repository}:{$this->application->git_branch} (commit sha {$this->application->git_commit_sha}) to {$this->workdir}. '" "echo -n 'Importing {$this->application->git_repository}:{$this->application->git_branch} (commit sha {$this->application->git_commit_sha}) to {$this->basedir}. '"
], ],
[ [
$this->importing_git_repository() $this->importing_git_repository(), "hidden" => true
], ],
[ [
executeInDocker($this->deployment_uuid, "cd {$this->workdir} && git rev-parse HEAD"), executeInDocker($this->deployment_uuid, "cd {$this->basedir} && git rev-parse HEAD"),
"hidden" => true, "hidden" => true,
"save" => "git_commit_sha" "save" => "git_commit_sha"
], ],
@ -432,16 +433,16 @@ private function importing_git_repository()
if ($this->source->getMorphClass() == 'App\Models\GithubApp') { if ($this->source->getMorphClass() == 'App\Models\GithubApp') {
if ($this->source->is_public) { if ($this->source->is_public) {
$git_clone_command = "{$git_clone_command} {$this->source->html_url}/{$this->application->git_repository} {$this->workdir}"; $git_clone_command = "{$git_clone_command} {$this->source->html_url}/{$this->application->git_repository} {$this->basedir}";
$git_clone_command = $this->set_git_import_settings($git_clone_command); $git_clone_command = $this->set_git_import_settings($git_clone_command);
$commands->push(executeInDocker($this->deployment_uuid, $git_clone_command)); $commands->push(executeInDocker($this->deployment_uuid, $git_clone_command));
} else { } else {
$github_access_token = generate_github_installation_token($this->source); $github_access_token = generate_github_installation_token($this->source);
$commands->push(executeInDocker($this->deployment_uuid, "git clone -q -b {$this->application->git_branch} $source_html_url_scheme://x-access-token:$github_access_token@$source_html_url_host/{$this->application->git_repository}.git {$this->workdir}")); $commands->push(executeInDocker($this->deployment_uuid, "git clone -q -b {$this->application->git_branch} $source_html_url_scheme://x-access-token:$github_access_token@$source_html_url_host/{$this->application->git_repository}.git {$this->basedir}"));
} }
if ($this->pull_request_id !== 0) { if ($this->pull_request_id !== 0) {
$commands->push(executeInDocker($this->deployment_uuid, "cd {$this->workdir} && git fetch origin pull/{$this->pull_request_id}/head:$pr_branch_name && git checkout $pr_branch_name")); $commands->push(executeInDocker($this->deployment_uuid, "cd {$this->basedir} && git fetch origin pull/{$this->pull_request_id}/head:$pr_branch_name && git checkout $pr_branch_name"));
} }
return $commands->implode(' && '); return $commands->implode(' && ');
} }
@ -463,13 +464,13 @@ private function importing_git_repository()
private function set_git_import_settings($git_clone_command) private function set_git_import_settings($git_clone_command)
{ {
if ($this->application->git_commit_sha !== 'HEAD') { if ($this->application->git_commit_sha !== 'HEAD') {
$git_clone_command = "{$git_clone_command} && cd {$this->workdir} && git -c advice.detachedHead=false checkout {$this->application->git_commit_sha} >/dev/null 2>&1"; $git_clone_command = "{$git_clone_command} && cd {$this->basedir} && git -c advice.detachedHead=false checkout {$this->application->git_commit_sha} >/dev/null 2>&1";
} }
if ($this->application->settings->is_git_submodules_enabled) { if ($this->application->settings->is_git_submodules_enabled) {
$git_clone_command = "{$git_clone_command} && cd {$this->workdir} && git submodule update --init --recursive"; $git_clone_command = "{$git_clone_command} && cd {$this->basedir} && git submodule update --init --recursive";
} }
if ($this->application->settings->is_git_lfs_enabled) { if ($this->application->settings->is_git_lfs_enabled) {
$git_clone_command = "{$git_clone_command} && cd {$this->workdir} && git lfs pull"; $git_clone_command = "{$git_clone_command} && cd {$this->basedir} && git lfs pull";
} }
return $git_clone_command; return $git_clone_command;
} }
@ -477,17 +478,24 @@ private function set_git_import_settings($git_clone_command)
private function cleanup_git() private function cleanup_git()
{ {
$this->execute_remote_command( $this->execute_remote_command(
[executeInDocker($this->deployment_uuid, "rm -fr {$this->workdir}/.git")], [executeInDocker($this->deployment_uuid, "rm -fr {$this->basedir}/.git")],
); );
} }
private function generate_nixpacks_confs() private function generate_nixpacks_confs()
{ {
$this->execute_remote_command( $this->execute_remote_command(
[ [
"echo -n 'Generating nixpacks configuration.'", "echo -n 'Generating nixpacks configuration.'",
]
);
$nixpacks_command = $this->nixpacks_build_cmd();
$this->execute_remote_command(
[
"echo -n Running: $nixpacks_command",
], ],
[$this->nixpacks_build_cmd()], [executeInDocker($this->deployment_uuid, $nixpacks_command)],
[executeInDocker($this->deployment_uuid, "cp {$this->workdir}/.nixpacks/Dockerfile {$this->workdir}/Dockerfile")], [executeInDocker($this->deployment_uuid, "cp {$this->workdir}/.nixpacks/Dockerfile {$this->workdir}/Dockerfile")],
[executeInDocker($this->deployment_uuid, "rm -f {$this->workdir}/.nixpacks/Dockerfile")] [executeInDocker($this->deployment_uuid, "rm -f {$this->workdir}/.nixpacks/Dockerfile")]
); );
@ -496,7 +504,7 @@ private function generate_nixpacks_confs()
private function nixpacks_build_cmd() private function nixpacks_build_cmd()
{ {
$this->generate_env_variables(); $this->generate_env_variables();
$nixpacks_command = "nixpacks build -o {$this->workdir} {$this->env_args} --no-error-without-start"; $nixpacks_command = "nixpacks build --no-cache -o {$this->workdir} {$this->env_args} --no-error-without-start";
if ($this->application->build_command) { if ($this->application->build_command) {
$nixpacks_command .= " --build-cmd \"{$this->application->build_command}\""; $nixpacks_command .= " --build-cmd \"{$this->application->build_command}\"";
} }
@ -507,7 +515,7 @@ private function nixpacks_build_cmd()
$nixpacks_command .= " --install-cmd \"{$this->application->install_command}\""; $nixpacks_command .= " --install-cmd \"{$this->application->install_command}\"";
} }
$nixpacks_command .= " {$this->workdir}"; $nixpacks_command .= " {$this->workdir}";
return executeInDocker($this->deployment_uuid, $nixpacks_command); return $nixpacks_command;
} }
private function generate_env_variables() private function generate_env_variables()
@ -673,7 +681,7 @@ private function generate_healthcheck_commands()
private function build_image() private function build_image()
{ {
$this->execute_remote_command([ $this->execute_remote_command([
"echo -n 'Building docker image for your application.'", "echo -n 'Building docker image for your application. To check the current progress, click on Show Debug Logs.'",
]); ]);
if ($this->application->settings->is_static) { if ($this->application->settings->is_static) {

View File

@ -117,7 +117,7 @@ public function saveComposeConfigs()
public function parse(bool $isNew = false): Collection public function parse(bool $isNew = false): Collection
{ {
// ray()->clearAll(); ray()->clearAll();
if ($this->docker_compose_raw) { if ($this->docker_compose_raw) {
try { try {
$yaml = Yaml::parse($this->docker_compose_raw); $yaml = Yaml::parse($this->docker_compose_raw);
@ -550,15 +550,17 @@ public function parse(bool $isNew = false): Collection
data_forget($service, 'volumes.*.content'); data_forget($service, 'volumes.*.content');
data_forget($service, 'volumes.*.isDirectory'); data_forget($service, 'volumes.*.isDirectory');
// Remove unnecessary variables from service.environment // Remove unnecessary variables from service.environment
$withoutServiceEnvs = collect([]); // $withoutServiceEnvs = collect([]);
collect(data_get($service, 'environment'))->each(function ($value, $key) use ($withoutServiceEnvs) { // collect(data_get($service, 'environment'))->each(function ($value, $key) use ($withoutServiceEnvs) {
if (!Str::of($key)->startsWith('$SERVICE_') && !Str::of($value)->startsWith('SERVICE_')) { // ray($key, $value);
$k = Str::of($value)->before("="); // if (!Str::of($key)->startsWith('$SERVICE_') && !Str::of($value)->startsWith('SERVICE_')) {
$v = Str::of($value)->after("="); // $k = Str::of($value)->before("=");
$withoutServiceEnvs->put($k->value(), $v->value()); // $v = Str::of($value)->after("=");
} // $withoutServiceEnvs->put($k->value(), $v->value());
}); // }
data_set($service, 'environment', $withoutServiceEnvs->toArray()); // });
// ray($withoutServiceEnvs);
// data_set($service, 'environment', $withoutServiceEnvs->toArray());
return $service; return $service;
}); });
$finalServices = [ $finalServices = [
@ -568,7 +570,7 @@ public function parse(bool $isNew = false): Collection
'networks' => $topLevelNetworks->toArray(), 'networks' => $topLevelNetworks->toArray(),
]; ];
$this->docker_compose_raw = Yaml::dump($yaml, 10, 2); $this->docker_compose_raw = Yaml::dump($yaml, 10, 2);
$this->docker_compose = Yaml::dump($finalServices, 10, 2); $this->docker_compose = Yaml::dump($finalServices, 10, 2);
$this->save(); $this->save();
$this->saveComposeConfigs(); $this->saveComposeConfigs();
return collect([]); return collect([]);

View File

@ -15,7 +15,6 @@ public function send(SendsEmail $notifiable, Notification $notification): void
try { try {
$this->bootConfigs($notifiable); $this->bootConfigs($notifiable);
$recepients = $notifiable->getRecepients($notification); $recepients = $notifiable->getRecepients($notification);
ray($recepients);
if (count($recepients) === 0) { if (count($recepients) === 0) {
throw new Exception('No email recipients found'); throw new Exception('No email recipients found');
} }

View File

@ -353,13 +353,14 @@ function setNotificationChannels($notifiable, $event)
$isEmailEnabled = isEmailEnabled($notifiable); $isEmailEnabled = isEmailEnabled($notifiable);
$isDiscordEnabled = data_get($notifiable, 'discord_enabled'); $isDiscordEnabled = data_get($notifiable, 'discord_enabled');
$isTelegramEnabled = data_get($notifiable, 'telegram_enabled'); $isTelegramEnabled = data_get($notifiable, 'telegram_enabled');
$isSubscribedToEmailEvent = data_get($notifiable, "smtp_notifications_$event");
$isSubscribedToDiscordEvent = data_get($notifiable, "discord_notifications_$event"); $isSubscribedToDiscordEvent = data_get($notifiable, "discord_notifications_$event");
$isSubscribedToTelegramEvent = data_get($notifiable, "telegram_notifications_$event"); $isSubscribedToTelegramEvent = data_get($notifiable, "telegram_notifications_$event");
if ($isDiscordEnabled && $isSubscribedToDiscordEvent) { if ($isDiscordEnabled && $isSubscribedToDiscordEvent) {
$channels[] = DiscordChannel::class; $channels[] = DiscordChannel::class;
} }
if ($isEmailEnabled) { if ($isEmailEnabled && $isSubscribedToEmailEvent) {
$channels[] = EmailChannel::class; $channels[] = EmailChannel::class;
} }
if ($isTelegramEnabled && $isSubscribedToTelegramEvent) { if ($isTelegramEnabled && $isSubscribedToTelegramEvent) {
@ -406,7 +407,7 @@ function generateFqdn(Server $server, string $random)
$host = $url->getHost(); $host = $url->getHost();
$path = $url->getPath() === '/' ? '' : $url->getPath(); $path = $url->getPath() === '/' ? '' : $url->getPath();
$scheme = $url->getScheme(); $scheme = $url->getScheme();
$finalFqdn = "$scheme://{$random}.$host$path" ; $finalFqdn = "$scheme://{$random}.$host$path";
return $finalFqdn; return $finalFqdn;
} }
function sslip(Server $server) function sslip(Server $server)
@ -431,7 +432,7 @@ function getServiceTemplates()
$services = $services->merge($deprecated); $services = $services->merge($deprecated);
$version = config('version'); $version = config('version');
$services = $services->map(function ($service) use ($version) { $services = $services->map(function ($service) use ($version) {
if (version_compare($version, data_get($service,'minVersion', '0.0.0'), '<')) { if (version_compare($version, data_get($service, 'minVersion', '0.0.0'), '<')) {
$service->disabled = true; $service->disabled = true;
} }
return $service; return $service;

313
composer.lock generated
View File

@ -62,16 +62,16 @@
}, },
{ {
"name": "aws/aws-sdk-php", "name": "aws/aws-sdk-php",
"version": "3.281.12", "version": "3.283.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/aws/aws-sdk-php.git", "url": "https://github.com/aws/aws-sdk-php.git",
"reference": "22a92f08758db2b152843ea0875eeee5a467d8ff" "reference": "5084c03431ecda0003e35d7fc7a12eeca4242685"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/22a92f08758db2b152843ea0875eeee5a467d8ff", "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/5084c03431ecda0003e35d7fc7a12eeca4242685",
"reference": "22a92f08758db2b152843ea0875eeee5a467d8ff", "reference": "5084c03431ecda0003e35d7fc7a12eeca4242685",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -151,9 +151,9 @@
"support": { "support": {
"forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80", "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80",
"issues": "https://github.com/aws/aws-sdk-php/issues", "issues": "https://github.com/aws/aws-sdk-php/issues",
"source": "https://github.com/aws/aws-sdk-php/tree/3.281.12" "source": "https://github.com/aws/aws-sdk-php/tree/3.283.0"
}, },
"time": "2023-09-22T18:12:27+00:00" "time": "2023-10-04T18:08:32+00:00"
}, },
{ {
"name": "bacon/bacon-qr-code", "name": "bacon/bacon-qr-code",
@ -603,16 +603,16 @@
}, },
{ {
"name": "doctrine/dbal", "name": "doctrine/dbal",
"version": "3.6.7", "version": "3.7.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/doctrine/dbal.git", "url": "https://github.com/doctrine/dbal.git",
"reference": "8e0e268052b4a8974cb00215bb2892787021614f" "reference": "00d03067f07482f025d41ab55e4ba0db5eca2cdf"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/doctrine/dbal/zipball/8e0e268052b4a8974cb00215bb2892787021614f", "url": "https://api.github.com/repos/doctrine/dbal/zipball/00d03067f07482f025d41ab55e4ba0db5eca2cdf",
"reference": "8e0e268052b4a8974cb00215bb2892787021614f", "reference": "00d03067f07482f025d41ab55e4ba0db5eca2cdf",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -628,9 +628,9 @@
"doctrine/coding-standard": "12.0.0", "doctrine/coding-standard": "12.0.0",
"fig/log-test": "^1", "fig/log-test": "^1",
"jetbrains/phpstorm-stubs": "2023.1", "jetbrains/phpstorm-stubs": "2023.1",
"phpstan/phpstan": "1.10.34", "phpstan/phpstan": "1.10.35",
"phpstan/phpstan-strict-rules": "^1.5", "phpstan/phpstan-strict-rules": "^1.5",
"phpunit/phpunit": "9.6.12", "phpunit/phpunit": "9.6.13",
"psalm/plugin-phpunit": "0.18.4", "psalm/plugin-phpunit": "0.18.4",
"slevomat/coding-standard": "8.13.1", "slevomat/coding-standard": "8.13.1",
"squizlabs/php_codesniffer": "3.7.2", "squizlabs/php_codesniffer": "3.7.2",
@ -696,7 +696,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/doctrine/dbal/issues", "issues": "https://github.com/doctrine/dbal/issues",
"source": "https://github.com/doctrine/dbal/tree/3.6.7" "source": "https://github.com/doctrine/dbal/tree/3.7.0"
}, },
"funding": [ "funding": [
{ {
@ -712,20 +712,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2023-09-19T20:15:41+00:00" "time": "2023-09-26T20:56:55+00:00"
}, },
{ {
"name": "doctrine/deprecations", "name": "doctrine/deprecations",
"version": "v1.1.1", "version": "1.1.2",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/doctrine/deprecations.git", "url": "https://github.com/doctrine/deprecations.git",
"reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3" "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/doctrine/deprecations/zipball/612a3ee5ab0d5dd97b7cf3874a6efe24325efac3", "url": "https://api.github.com/repos/doctrine/deprecations/zipball/4f2d4f2836e7ec4e7a8625e75c6aa916004db931",
"reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3", "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -757,9 +757,9 @@
"homepage": "https://www.doctrine-project.org/", "homepage": "https://www.doctrine-project.org/",
"support": { "support": {
"issues": "https://github.com/doctrine/deprecations/issues", "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.2"
}, },
"time": "2023-06-03T09:27:29+00:00" "time": "2023-09-27T20:04:15+00:00"
}, },
{ {
"name": "doctrine/event-manager", "name": "doctrine/event-manager",
@ -1869,16 +1869,16 @@
}, },
{ {
"name": "laravel/framework", "name": "laravel/framework",
"version": "v10.24.0", "version": "v10.26.2",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/laravel/framework.git", "url": "https://github.com/laravel/framework.git",
"reference": "bcebd0a4c015d5c38aeec299d355a42451dd3726" "reference": "6e5440f7c518f26b4495e5d7e4796ec239e26df9"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/laravel/framework/zipball/bcebd0a4c015d5c38aeec299d355a42451dd3726", "url": "https://api.github.com/repos/laravel/framework/zipball/6e5440f7c518f26b4495e5d7e4796ec239e26df9",
"reference": "bcebd0a4c015d5c38aeec299d355a42451dd3726", "reference": "6e5440f7c518f26b4495e5d7e4796ec239e26df9",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -1896,7 +1896,7 @@
"ext-tokenizer": "*", "ext-tokenizer": "*",
"fruitcake/php-cors": "^1.2", "fruitcake/php-cors": "^1.2",
"guzzlehttp/uri-template": "^1.0", "guzzlehttp/uri-template": "^1.0",
"laravel/prompts": "^0.1", "laravel/prompts": "^0.1.9",
"laravel/serializable-closure": "^1.3", "laravel/serializable-closure": "^1.3",
"league/commonmark": "^2.2.1", "league/commonmark": "^2.2.1",
"league/flysystem": "^3.8.0", "league/flysystem": "^3.8.0",
@ -1978,7 +1978,7 @@
"league/flysystem-read-only": "^3.3", "league/flysystem-read-only": "^3.3",
"league/flysystem-sftp-v3": "^3.0", "league/flysystem-sftp-v3": "^3.0",
"mockery/mockery": "^1.5.1", "mockery/mockery": "^1.5.1",
"orchestra/testbench-core": "^8.10", "orchestra/testbench-core": "^8.12",
"pda/pheanstalk": "^4.0", "pda/pheanstalk": "^4.0",
"phpstan/phpstan": "^1.4.7", "phpstan/phpstan": "^1.4.7",
"phpunit/phpunit": "^10.0.7", "phpunit/phpunit": "^10.0.7",
@ -2065,7 +2065,7 @@
"issues": "https://github.com/laravel/framework/issues", "issues": "https://github.com/laravel/framework/issues",
"source": "https://github.com/laravel/framework" "source": "https://github.com/laravel/framework"
}, },
"time": "2023-09-19T15:25:04+00:00" "time": "2023-10-03T14:24:20+00:00"
}, },
{ {
"name": "laravel/horizon", "name": "laravel/horizon",
@ -2147,16 +2147,16 @@
}, },
{ {
"name": "laravel/prompts", "name": "laravel/prompts",
"version": "v0.1.8", "version": "v0.1.11",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/laravel/prompts.git", "url": "https://github.com/laravel/prompts.git",
"reference": "68dcc65babf92e1fb43cba0b3f78fc3d8002709c" "reference": "cce65a90e64712909ea1adc033e1d88de8455ffd"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/laravel/prompts/zipball/68dcc65babf92e1fb43cba0b3f78fc3d8002709c", "url": "https://api.github.com/repos/laravel/prompts/zipball/cce65a90e64712909ea1adc033e1d88de8455ffd",
"reference": "68dcc65babf92e1fb43cba0b3f78fc3d8002709c", "reference": "cce65a90e64712909ea1adc033e1d88de8455ffd",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -2165,6 +2165,10 @@
"php": "^8.1", "php": "^8.1",
"symfony/console": "^6.2" "symfony/console": "^6.2"
}, },
"conflict": {
"illuminate/console": ">=10.17.0 <10.25.0",
"laravel/framework": ">=10.17.0 <10.25.0"
},
"require-dev": { "require-dev": {
"mockery/mockery": "^1.5", "mockery/mockery": "^1.5",
"pestphp/pest": "^2.3", "pestphp/pest": "^2.3",
@ -2175,6 +2179,11 @@
"ext-pcntl": "Required for the spinner to be animated." "ext-pcntl": "Required for the spinner to be animated."
}, },
"type": "library", "type": "library",
"extra": {
"branch-alias": {
"dev-main": "0.1.x-dev"
}
},
"autoload": { "autoload": {
"files": [ "files": [
"src/helpers.php" "src/helpers.php"
@ -2189,9 +2198,9 @@
], ],
"support": { "support": {
"issues": "https://github.com/laravel/prompts/issues", "issues": "https://github.com/laravel/prompts/issues",
"source": "https://github.com/laravel/prompts/tree/v0.1.8" "source": "https://github.com/laravel/prompts/tree/v0.1.11"
}, },
"time": "2023-09-19T15:33:56+00:00" "time": "2023-10-03T01:07:35+00:00"
}, },
{ {
"name": "laravel/sanctum", "name": "laravel/sanctum",
@ -3442,16 +3451,16 @@
}, },
{ {
"name": "nesbot/carbon", "name": "nesbot/carbon",
"version": "2.70.0", "version": "2.71.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/briannesbitt/Carbon.git", "url": "https://github.com/briannesbitt/Carbon.git",
"reference": "d3298b38ea8612e5f77d38d1a99438e42f70341d" "reference": "98276233188583f2ff845a0f992a235472d9466a"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/d3298b38ea8612e5f77d38d1a99438e42f70341d", "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/98276233188583f2ff845a0f992a235472d9466a",
"reference": "d3298b38ea8612e5f77d38d1a99438e42f70341d", "reference": "98276233188583f2ff845a0f992a235472d9466a",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -3544,7 +3553,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2023-09-07T16:43:50+00:00" "time": "2023-09-25T11:31:05+00:00"
}, },
{ {
"name": "nette/schema", "name": "nette/schema",
@ -4767,16 +4776,16 @@
}, },
{ {
"name": "phpstan/phpdoc-parser", "name": "phpstan/phpdoc-parser",
"version": "1.24.1", "version": "1.24.2",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/phpstan/phpdoc-parser.git", "url": "https://github.com/phpstan/phpdoc-parser.git",
"reference": "9f854d275c2dbf84915a5c0ec9a2d17d2cd86b01" "reference": "bcad8d995980440892759db0c32acae7c8e79442"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/9f854d275c2dbf84915a5c0ec9a2d17d2cd86b01", "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/bcad8d995980440892759db0c32acae7c8e79442",
"reference": "9f854d275c2dbf84915a5c0ec9a2d17d2cd86b01", "reference": "bcad8d995980440892759db0c32acae7c8e79442",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -4808,9 +4817,9 @@
"description": "PHPDoc parser with support for nullable, intersection and generic types", "description": "PHPDoc parser with support for nullable, intersection and generic types",
"support": { "support": {
"issues": "https://github.com/phpstan/phpdoc-parser/issues", "issues": "https://github.com/phpstan/phpdoc-parser/issues",
"source": "https://github.com/phpstan/phpdoc-parser/tree/1.24.1" "source": "https://github.com/phpstan/phpdoc-parser/tree/1.24.2"
}, },
"time": "2023-09-18T12:18:02+00:00" "time": "2023-09-26T12:28:12+00:00"
}, },
{ {
"name": "pimple/pimple", "name": "pimple/pimple",
@ -6011,16 +6020,16 @@
}, },
{ {
"name": "sentry/sentry-laravel", "name": "sentry/sentry-laravel",
"version": "3.8.0", "version": "3.8.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/getsentry/sentry-laravel.git", "url": "https://github.com/getsentry/sentry-laravel.git",
"reference": "c7e7611553f9f90af10ed98dde1a680220f02e4d" "reference": "b6142a80fa9360a10b786d2da032339602d0e362"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/getsentry/sentry-laravel/zipball/c7e7611553f9f90af10ed98dde1a680220f02e4d", "url": "https://api.github.com/repos/getsentry/sentry-laravel/zipball/b6142a80fa9360a10b786d2da032339602d0e362",
"reference": "c7e7611553f9f90af10ed98dde1a680220f02e4d", "reference": "b6142a80fa9360a10b786d2da032339602d0e362",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -6087,7 +6096,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/getsentry/sentry-laravel/issues", "issues": "https://github.com/getsentry/sentry-laravel/issues",
"source": "https://github.com/getsentry/sentry-laravel/tree/3.8.0" "source": "https://github.com/getsentry/sentry-laravel/tree/3.8.1"
}, },
"funding": [ "funding": [
{ {
@ -6099,7 +6108,7 @@
"type": "custom" "type": "custom"
} }
], ],
"time": "2023-09-05T11:02:34+00:00" "time": "2023-10-04T10:21:16+00:00"
}, },
{ {
"name": "spatie/backtrace", "name": "spatie/backtrace",
@ -6748,16 +6757,16 @@
}, },
{ {
"name": "stripe/stripe-php", "name": "stripe/stripe-php",
"version": "v12.4.0", "version": "v12.5.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/stripe/stripe-php.git", "url": "https://github.com/stripe/stripe-php.git",
"reference": "7d0a90772fc1c179e370971264318208533324b9" "reference": "a4249b4a90437844f6c35e8701f8c68acd206f56"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/stripe/stripe-php/zipball/7d0a90772fc1c179e370971264318208533324b9", "url": "https://api.github.com/repos/stripe/stripe-php/zipball/a4249b4a90437844f6c35e8701f8c68acd206f56",
"reference": "7d0a90772fc1c179e370971264318208533324b9", "reference": "a4249b4a90437844f6c35e8701f8c68acd206f56",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -6802,9 +6811,9 @@
], ],
"support": { "support": {
"issues": "https://github.com/stripe/stripe-php/issues", "issues": "https://github.com/stripe/stripe-php/issues",
"source": "https://github.com/stripe/stripe-php/tree/v12.4.0" "source": "https://github.com/stripe/stripe-php/tree/v12.5.0"
}, },
"time": "2023-09-21T22:55:47+00:00" "time": "2023-09-28T23:06:27+00:00"
}, },
{ {
"name": "symfony/console", "name": "symfony/console",
@ -7030,16 +7039,16 @@
}, },
{ {
"name": "symfony/error-handler", "name": "symfony/error-handler",
"version": "v6.3.2", "version": "v6.3.5",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/error-handler.git", "url": "https://github.com/symfony/error-handler.git",
"reference": "85fd65ed295c4078367c784e8a5a6cee30348b7a" "reference": "1f69476b64fb47105c06beef757766c376b548c4"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/error-handler/zipball/85fd65ed295c4078367c784e8a5a6cee30348b7a", "url": "https://api.github.com/repos/symfony/error-handler/zipball/1f69476b64fb47105c06beef757766c376b548c4",
"reference": "85fd65ed295c4078367c784e8a5a6cee30348b7a", "reference": "1f69476b64fb47105c06beef757766c376b548c4",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -7084,7 +7093,7 @@
"description": "Provides tools to manage errors and ease debugging PHP code", "description": "Provides tools to manage errors and ease debugging PHP code",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/error-handler/tree/v6.3.2" "source": "https://github.com/symfony/error-handler/tree/v6.3.5"
}, },
"funding": [ "funding": [
{ {
@ -7100,7 +7109,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2023-07-16T17:05:46+00:00" "time": "2023-09-12T06:57:20+00:00"
}, },
{ {
"name": "symfony/event-dispatcher", "name": "symfony/event-dispatcher",
@ -7260,16 +7269,16 @@
}, },
{ {
"name": "symfony/finder", "name": "symfony/finder",
"version": "v6.3.3", "version": "v6.3.5",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/finder.git", "url": "https://github.com/symfony/finder.git",
"reference": "9915db259f67d21eefee768c1abcf1cc61b1fc9e" "reference": "a1b31d88c0e998168ca7792f222cbecee47428c4"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/finder/zipball/9915db259f67d21eefee768c1abcf1cc61b1fc9e", "url": "https://api.github.com/repos/symfony/finder/zipball/a1b31d88c0e998168ca7792f222cbecee47428c4",
"reference": "9915db259f67d21eefee768c1abcf1cc61b1fc9e", "reference": "a1b31d88c0e998168ca7792f222cbecee47428c4",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -7304,7 +7313,7 @@
"description": "Finds files and directories via an intuitive fluent interface", "description": "Finds files and directories via an intuitive fluent interface",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/finder/tree/v6.3.3" "source": "https://github.com/symfony/finder/tree/v6.3.5"
}, },
"funding": [ "funding": [
{ {
@ -7320,20 +7329,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2023-07-31T08:31:44+00:00" "time": "2023-09-26T12:56:25+00:00"
}, },
{ {
"name": "symfony/http-client", "name": "symfony/http-client",
"version": "v6.3.2", "version": "v6.3.5",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/http-client.git", "url": "https://github.com/symfony/http-client.git",
"reference": "15f9f4bad62bfcbe48b5dedd866f04a08fc7ff00" "reference": "213e564da4cbf61acc9728d97e666bcdb868c10d"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/http-client/zipball/15f9f4bad62bfcbe48b5dedd866f04a08fc7ff00", "url": "https://api.github.com/repos/symfony/http-client/zipball/213e564da4cbf61acc9728d97e666bcdb868c10d",
"reference": "15f9f4bad62bfcbe48b5dedd866f04a08fc7ff00", "reference": "213e564da4cbf61acc9728d97e666bcdb868c10d",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -7396,7 +7405,7 @@
"http" "http"
], ],
"support": { "support": {
"source": "https://github.com/symfony/http-client/tree/v6.3.2" "source": "https://github.com/symfony/http-client/tree/v6.3.5"
}, },
"funding": [ "funding": [
{ {
@ -7412,7 +7421,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2023-07-05T08:41:27+00:00" "time": "2023-09-29T15:57:12+00:00"
}, },
{ {
"name": "symfony/http-client-contracts", "name": "symfony/http-client-contracts",
@ -7494,16 +7503,16 @@
}, },
{ {
"name": "symfony/http-foundation", "name": "symfony/http-foundation",
"version": "v6.3.4", "version": "v6.3.5",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/http-foundation.git", "url": "https://github.com/symfony/http-foundation.git",
"reference": "cac1556fdfdf6719668181974104e6fcfa60e844" "reference": "b50f5e281d722cb0f4c296f908bacc3e2b721957"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/cac1556fdfdf6719668181974104e6fcfa60e844", "url": "https://api.github.com/repos/symfony/http-foundation/zipball/b50f5e281d722cb0f4c296f908bacc3e2b721957",
"reference": "cac1556fdfdf6719668181974104e6fcfa60e844", "reference": "b50f5e281d722cb0f4c296f908bacc3e2b721957",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -7551,7 +7560,7 @@
"description": "Defines an object-oriented layer for the HTTP specification", "description": "Defines an object-oriented layer for the HTTP specification",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/http-foundation/tree/v6.3.4" "source": "https://github.com/symfony/http-foundation/tree/v6.3.5"
}, },
"funding": [ "funding": [
{ {
@ -7567,20 +7576,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2023-08-22T08:20:46+00:00" "time": "2023-09-04T21:33:54+00:00"
}, },
{ {
"name": "symfony/http-kernel", "name": "symfony/http-kernel",
"version": "v6.3.4", "version": "v6.3.5",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/http-kernel.git", "url": "https://github.com/symfony/http-kernel.git",
"reference": "36abb425b4af863ae1fe54d8a8b8b4c76a2bccdb" "reference": "9f991a964368bee8d883e8d57ced4fe9fff04dfc"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/36abb425b4af863ae1fe54d8a8b8b4c76a2bccdb", "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9f991a964368bee8d883e8d57ced4fe9fff04dfc",
"reference": "36abb425b4af863ae1fe54d8a8b8b4c76a2bccdb", "reference": "9f991a964368bee8d883e8d57ced4fe9fff04dfc",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -7664,7 +7673,7 @@
"description": "Provides a structured process for converting a Request into a Response", "description": "Provides a structured process for converting a Request into a Response",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/http-kernel/tree/v6.3.4" "source": "https://github.com/symfony/http-kernel/tree/v6.3.5"
}, },
"funding": [ "funding": [
{ {
@ -7680,20 +7689,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2023-08-26T13:54:49+00:00" "time": "2023-09-30T06:37:04+00:00"
}, },
{ {
"name": "symfony/mailer", "name": "symfony/mailer",
"version": "v6.3.0", "version": "v6.3.5",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/mailer.git", "url": "https://github.com/symfony/mailer.git",
"reference": "7b03d9be1dea29bfec0a6c7b603f5072a4c97435" "reference": "d89611a7830d51b5e118bca38e390dea92f9ea06"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/mailer/zipball/7b03d9be1dea29bfec0a6c7b603f5072a4c97435", "url": "https://api.github.com/repos/symfony/mailer/zipball/d89611a7830d51b5e118bca38e390dea92f9ea06",
"reference": "7b03d9be1dea29bfec0a6c7b603f5072a4c97435", "reference": "d89611a7830d51b5e118bca38e390dea92f9ea06",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -7744,7 +7753,7 @@
"description": "Helps sending emails", "description": "Helps sending emails",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/mailer/tree/v6.3.0" "source": "https://github.com/symfony/mailer/tree/v6.3.5"
}, },
"funding": [ "funding": [
{ {
@ -7760,20 +7769,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2023-05-29T12:49:39+00:00" "time": "2023-09-06T09:47:15+00:00"
}, },
{ {
"name": "symfony/mime", "name": "symfony/mime",
"version": "v6.3.3", "version": "v6.3.5",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/mime.git", "url": "https://github.com/symfony/mime.git",
"reference": "9a0cbd52baa5ba5a5b1f0cacc59466f194730f98" "reference": "d5179eedf1cb2946dbd760475ebf05c251ef6a6e"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/mime/zipball/9a0cbd52baa5ba5a5b1f0cacc59466f194730f98", "url": "https://api.github.com/repos/symfony/mime/zipball/d5179eedf1cb2946dbd760475ebf05c251ef6a6e",
"reference": "9a0cbd52baa5ba5a5b1f0cacc59466f194730f98", "reference": "d5179eedf1cb2946dbd760475ebf05c251ef6a6e",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -7828,7 +7837,7 @@
"mime-type" "mime-type"
], ],
"support": { "support": {
"source": "https://github.com/symfony/mime/tree/v6.3.3" "source": "https://github.com/symfony/mime/tree/v6.3.5"
}, },
"funding": [ "funding": [
{ {
@ -7844,7 +7853,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2023-07-31T07:08:24+00:00" "time": "2023-09-29T06:59:36+00:00"
}, },
{ {
"name": "symfony/options-resolver", "name": "symfony/options-resolver",
@ -8886,16 +8895,16 @@
}, },
{ {
"name": "symfony/routing", "name": "symfony/routing",
"version": "v6.3.3", "version": "v6.3.5",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/routing.git", "url": "https://github.com/symfony/routing.git",
"reference": "e7243039ab663822ff134fbc46099b5fdfa16f6a" "reference": "82616e59acd3e3d9c916bba798326cb7796d7d31"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/routing/zipball/e7243039ab663822ff134fbc46099b5fdfa16f6a", "url": "https://api.github.com/repos/symfony/routing/zipball/82616e59acd3e3d9c916bba798326cb7796d7d31",
"reference": "e7243039ab663822ff134fbc46099b5fdfa16f6a", "reference": "82616e59acd3e3d9c916bba798326cb7796d7d31",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -8949,7 +8958,7 @@
"url" "url"
], ],
"support": { "support": {
"source": "https://github.com/symfony/routing/tree/v6.3.3" "source": "https://github.com/symfony/routing/tree/v6.3.5"
}, },
"funding": [ "funding": [
{ {
@ -8965,7 +8974,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2023-07-31T07:08:24+00:00" "time": "2023-09-20T16:05:51+00:00"
}, },
{ {
"name": "symfony/service-contracts", "name": "symfony/service-contracts",
@ -9113,16 +9122,16 @@
}, },
{ {
"name": "symfony/string", "name": "symfony/string",
"version": "v6.3.2", "version": "v6.3.5",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/string.git", "url": "https://github.com/symfony/string.git",
"reference": "53d1a83225002635bca3482fcbf963001313fb68" "reference": "13d76d0fb049051ed12a04bef4f9de8715bea339"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/string/zipball/53d1a83225002635bca3482fcbf963001313fb68", "url": "https://api.github.com/repos/symfony/string/zipball/13d76d0fb049051ed12a04bef4f9de8715bea339",
"reference": "53d1a83225002635bca3482fcbf963001313fb68", "reference": "13d76d0fb049051ed12a04bef4f9de8715bea339",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -9179,7 +9188,7 @@
"utf8" "utf8"
], ],
"support": { "support": {
"source": "https://github.com/symfony/string/tree/v6.3.2" "source": "https://github.com/symfony/string/tree/v6.3.5"
}, },
"funding": [ "funding": [
{ {
@ -9195,7 +9204,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2023-07-05T08:41:27+00:00" "time": "2023-09-18T10:38:32+00:00"
}, },
{ {
"name": "symfony/translation", "name": "symfony/translation",
@ -9446,16 +9455,16 @@
}, },
{ {
"name": "symfony/var-dumper", "name": "symfony/var-dumper",
"version": "v6.3.4", "version": "v6.3.5",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/var-dumper.git", "url": "https://github.com/symfony/var-dumper.git",
"reference": "2027be14f8ae8eae999ceadebcda5b4909b81d45" "reference": "3d9999376be5fea8de47752837a3e1d1c5f69ef5"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/var-dumper/zipball/2027be14f8ae8eae999ceadebcda5b4909b81d45", "url": "https://api.github.com/repos/symfony/var-dumper/zipball/3d9999376be5fea8de47752837a3e1d1c5f69ef5",
"reference": "2027be14f8ae8eae999ceadebcda5b4909b81d45", "reference": "3d9999376be5fea8de47752837a3e1d1c5f69ef5",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -9510,7 +9519,7 @@
"dump" "dump"
], ],
"support": { "support": {
"source": "https://github.com/symfony/var-dumper/tree/v6.3.4" "source": "https://github.com/symfony/var-dumper/tree/v6.3.5"
}, },
"funding": [ "funding": [
{ {
@ -9526,7 +9535,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2023-08-24T14:51:05+00:00" "time": "2023-09-12T10:11:35+00:00"
}, },
{ {
"name": "symfony/yaml", "name": "symfony/yaml",
@ -10249,16 +10258,16 @@
"packages-dev": [ "packages-dev": [
{ {
"name": "brianium/paratest", "name": "brianium/paratest",
"version": "v7.2.7", "version": "v7.2.8",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/paratestphp/paratest.git", "url": "https://github.com/paratestphp/paratest.git",
"reference": "1526eb4fd195f65075456dee394d14742ae0a66c" "reference": "882b02d197328138686bb06ce7d8cbb98fc0a16c"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/paratestphp/paratest/zipball/1526eb4fd195f65075456dee394d14742ae0a66c", "url": "https://api.github.com/repos/paratestphp/paratest/zipball/882b02d197328138686bb06ce7d8cbb98fc0a16c",
"reference": "1526eb4fd195f65075456dee394d14742ae0a66c", "reference": "882b02d197328138686bb06ce7d8cbb98fc0a16c",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -10328,7 +10337,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/paratestphp/paratest/issues", "issues": "https://github.com/paratestphp/paratest/issues",
"source": "https://github.com/paratestphp/paratest/tree/v7.2.7" "source": "https://github.com/paratestphp/paratest/tree/v7.2.8"
}, },
"funding": [ "funding": [
{ {
@ -10340,7 +10349,7 @@
"type": "paypal" "type": "paypal"
} }
], ],
"time": "2023-09-14T14:10:09+00:00" "time": "2023-10-04T13:38:04+00:00"
}, },
{ {
"name": "fakerphp/faker", "name": "fakerphp/faker",
@ -10595,16 +10604,16 @@
}, },
{ {
"name": "laravel/dusk", "name": "laravel/dusk",
"version": "v7.11.0", "version": "v7.11.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/laravel/dusk.git", "url": "https://github.com/laravel/dusk.git",
"reference": "89ec34a35737303bf3e75f0e8b958d7fcd1cf486" "reference": "076865d1057a4951f796342aa6a8f97a317e7638"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/laravel/dusk/zipball/89ec34a35737303bf3e75f0e8b958d7fcd1cf486", "url": "https://api.github.com/repos/laravel/dusk/zipball/076865d1057a4951f796342aa6a8f97a317e7638",
"reference": "89ec34a35737303bf3e75f0e8b958d7fcd1cf486", "reference": "076865d1057a4951f796342aa6a8f97a317e7638",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -10665,9 +10674,9 @@
], ],
"support": { "support": {
"issues": "https://github.com/laravel/dusk/issues", "issues": "https://github.com/laravel/dusk/issues",
"source": "https://github.com/laravel/dusk/tree/v7.11.0" "source": "https://github.com/laravel/dusk/tree/v7.11.1"
}, },
"time": "2023-09-12T11:13:00+00:00" "time": "2023-09-26T13:23:43+00:00"
}, },
{ {
"name": "laravel/pint", "name": "laravel/pint",
@ -10974,16 +10983,16 @@
}, },
{ {
"name": "pestphp/pest", "name": "pestphp/pest",
"version": "v2.19.2", "version": "v2.20.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/pestphp/pest.git", "url": "https://github.com/pestphp/pest.git",
"reference": "6bc9da3fe1154d75a65262618b4a7032f267c04f" "reference": "a8b785f69e44ae3f902cbf08fe6b79359ba46945"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/pestphp/pest/zipball/6bc9da3fe1154d75a65262618b4a7032f267c04f", "url": "https://api.github.com/repos/pestphp/pest/zipball/a8b785f69e44ae3f902cbf08fe6b79359ba46945",
"reference": "6bc9da3fe1154d75a65262618b4a7032f267c04f", "reference": "a8b785f69e44ae3f902cbf08fe6b79359ba46945",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -11061,7 +11070,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/pestphp/pest/issues", "issues": "https://github.com/pestphp/pest/issues",
"source": "https://github.com/pestphp/pest/tree/v2.19.2" "source": "https://github.com/pestphp/pest/tree/v2.20.0"
}, },
"funding": [ "funding": [
{ {
@ -11073,7 +11082,7 @@
"type": "github" "type": "github"
} }
], ],
"time": "2023-09-19T10:48:16+00:00" "time": "2023-09-29T18:05:52+00:00"
}, },
{ {
"name": "pestphp/pest-plugin", "name": "pestphp/pest-plugin",
@ -11445,16 +11454,16 @@
}, },
{ {
"name": "phpstan/phpstan", "name": "phpstan/phpstan",
"version": "1.10.35", "version": "1.10.37",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/phpstan/phpstan.git", "url": "https://github.com/phpstan/phpstan.git",
"reference": "e730e5facb75ffe09dfb229795e8c01a459f26c3" "reference": "058ba07e92f744d4dcf6061ae75283d0c6456f2e"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/e730e5facb75ffe09dfb229795e8c01a459f26c3", "url": "https://api.github.com/repos/phpstan/phpstan/zipball/058ba07e92f744d4dcf6061ae75283d0c6456f2e",
"reference": "e730e5facb75ffe09dfb229795e8c01a459f26c3", "reference": "058ba07e92f744d4dcf6061ae75283d0c6456f2e",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -11503,20 +11512,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2023-09-19T15:27:56+00:00" "time": "2023-10-02T16:18:37+00:00"
}, },
{ {
"name": "phpunit/php-code-coverage", "name": "phpunit/php-code-coverage",
"version": "10.1.6", "version": "10.1.7",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
"reference": "56f33548fe522c8d82da7ff3824b42829d324364" "reference": "355324ca4980b8916c18b9db29f3ef484078f26e"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/56f33548fe522c8d82da7ff3824b42829d324364", "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/355324ca4980b8916c18b9db29f3ef484078f26e",
"reference": "56f33548fe522c8d82da7ff3824b42829d324364", "reference": "355324ca4980b8916c18b9db29f3ef484078f26e",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -11573,7 +11582,7 @@
"support": { "support": {
"issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
"security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy",
"source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.6" "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.7"
}, },
"funding": [ "funding": [
{ {
@ -11581,7 +11590,7 @@
"type": "github" "type": "github"
} }
], ],
"time": "2023-09-19T04:59:03+00:00" "time": "2023-10-04T15:34:17+00:00"
}, },
{ {
"name": "phpunit/php-file-iterator", "name": "phpunit/php-file-iterator",
@ -12173,16 +12182,16 @@
}, },
{ {
"name": "sebastian/complexity", "name": "sebastian/complexity",
"version": "3.0.1", "version": "3.1.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/sebastianbergmann/complexity.git", "url": "https://github.com/sebastianbergmann/complexity.git",
"reference": "c70b73893e10757af9c6a48929fa6a333b56a97a" "reference": "68cfb347a44871f01e33ab0ef8215966432f6957"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/c70b73893e10757af9c6a48929fa6a333b56a97a", "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68cfb347a44871f01e33ab0ef8215966432f6957",
"reference": "c70b73893e10757af9c6a48929fa6a333b56a97a", "reference": "68cfb347a44871f01e33ab0ef8215966432f6957",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -12195,7 +12204,7 @@
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-main": "3.0-dev" "dev-main": "3.1-dev"
} }
}, },
"autoload": { "autoload": {
@ -12219,7 +12228,7 @@
"support": { "support": {
"issues": "https://github.com/sebastianbergmann/complexity/issues", "issues": "https://github.com/sebastianbergmann/complexity/issues",
"security": "https://github.com/sebastianbergmann/complexity/security/policy", "security": "https://github.com/sebastianbergmann/complexity/security/policy",
"source": "https://github.com/sebastianbergmann/complexity/tree/3.0.1" "source": "https://github.com/sebastianbergmann/complexity/tree/3.1.0"
}, },
"funding": [ "funding": [
{ {
@ -12227,7 +12236,7 @@
"type": "github" "type": "github"
} }
], ],
"time": "2023-08-31T09:55:53+00:00" "time": "2023-09-28T11:50:59+00:00"
}, },
{ {
"name": "sebastian/diff", "name": "sebastian/diff",

View File

@ -31,9 +31,9 @@
'ultimate' => 25, 'ultimate' => 25,
], ],
'email' => [ 'email' => [
'zero' => false, 'zero' => true,
'self-hosted' => true, 'self-hosted' => true,
'basic' => false, 'basic' => true,
'pro' => true, 'pro' => true,
'ultimate' => true, 'ultimate' => true,
], ],

View File

@ -7,7 +7,7 @@
// The release version of your application // The release version of your application
// Example with dynamic git hash: trim(exec('git --git-dir ' . base_path('.git') . ' log --pretty="%h" -n1 HEAD')) // Example with dynamic git hash: trim(exec('git --git-dir ' . base_path('.git') . ' log --pretty="%h" -n1 HEAD'))
'release' => '4.0.0-beta.66', 'release' => '4.0.0-beta.67',
// When left empty or `null` the Laravel environment will be used // When left empty or `null` the Laravel environment will be used
'environment' => config('app.env'), 'environment' => config('app.env'),

View File

@ -1,3 +1,3 @@
<?php <?php
return '4.0.0-beta.66'; return '4.0.0-beta.67';

View File

@ -22,29 +22,15 @@
@if (data_get($team, 'discord_enabled')) @if (data_get($team, 'discord_enabled'))
<h2 class="mt-4">Subscribe to events</h2> <h2 class="mt-4">Subscribe to events</h2>
<div class="w-64"> <div class="w-64">
@if (isDev()) @if (isDev())
<h3 class="mt-4">Test</h3> <x-forms.checkbox instantSave="saveModel" id="team.discord_notifications_test" label="Test" />
<div class="flex items-end gap-10">
<x-forms.checkbox instantSave="saveModel" id="team.discord_notifications_test" label="Enabled" />
</div>
@endif @endif
<h3 class="mt-4">Container Status Changes</h3> <x-forms.checkbox instantSave="saveModel" id="team.discord_notifications_status_changes"
<div class="flex items-end gap-10"> label="Container Status Changes" />
<x-forms.checkbox instantSave="saveModel" id="team.discord_notifications_status_changes" <x-forms.checkbox instantSave="saveModel" id="team.discord_notifications_deployments"
label="Enabled" /> label="Application Deployments" />
</div> <x-forms.checkbox instantSave="saveModel" id="team.discord_notifications_database_backups"
<h3 class="mt-4">Application Deployments</h3> label="Backup Status" />
<div class="flex items-end gap-10">
<x-forms.checkbox instantSave="saveModel" id="team.discord_notifications_deployments"
label="Enabled" />
</div>
<h3 class="mt-4">Backup Status</h3>
<div class="flex items-end gap-10">
<x-forms.checkbox instantSave="saveModel" id="team.discord_notifications_database_backups"
label="Enabled" />
</div>
</div> </div>
@endif @endif
</div> </div>

View File

@ -104,24 +104,14 @@ class="text-white normal-case btn btn-xs no-animation btn-primary">
<h2 class="mt-4">Subscribe to events</h2> <h2 class="mt-4">Subscribe to events</h2>
<div class="w-64"> <div class="w-64">
@if (isDev()) @if (isDev())
<h3 class="mt-4">Test</h3> <x-forms.checkbox instantSave="saveModel" id="team.smtp_notifications_test" label="Test" />
<div class="flex items-end gap-10">
<x-forms.checkbox instantSave="saveModel" id="team.smtp_notifications_test" label="Enabled" />
</div>
@endif @endif
<h3 class="mt-4">Container Status Changes</h3> <x-forms.checkbox instantSave="saveModel" id="team.smtp_notifications_status_changes"
<div class="flex items-end gap-10"> label="Container Status Changes" />
<x-forms.checkbox instantSave="saveModel" id="team.smtp_notifications_status_changes" label="Enabled" /> <x-forms.checkbox instantSave="saveModel" id="team.smtp_notifications_deployments"
</div> label="Application Deployments" />
<h3 class="mt-4">Application Deployments</h3> <x-forms.checkbox instantSave="saveModel" id="team.smtp_notifications_database_backups"
<div class="flex items-end gap-10"> label="Backup Status" />
<x-forms.checkbox instantSave="saveModel" id="team.smtp_notifications_deployments" label="Enabled" />
</div>
<h3 class="mt-4">Backup Status</h3>
<div class="flex items-end gap-10">
<x-forms.checkbox instantSave="saveModel" id="team.smtp_notifications_database_backups"
label="Enabled" />
</div>
</div> </div>
@endif @endif
</div> </div>

View File

@ -27,34 +27,30 @@
<h2 class="mt-4">Subscribe to events</h2> <h2 class="mt-4">Subscribe to events</h2>
<div class="w-96"> <div class="w-96">
@if (isDev()) @if (isDev())
<h3 class="mt-4">Test</h3> <div class="w-64">
<div class="flex items-end gap-10"> <x-forms.checkbox instantSave="saveModel" id="team.telegram_notifications_test" label="Test" />
<x-forms.checkbox instantSave="saveModel" id="team.telegram_notifications_test" label="Enabled" />
<x-forms.input <x-forms.input
helper="If you are using Group chat with Topics, you can specify the topics ID. If empty, General topic will be used." helper="If you are using Group chat with Topics, you can specify the topics ID. If empty, General topic will be used."
id="team.telegram_notifications_test_message_thread_id" label="Custom Topic ID" /> id="team.telegram_notifications_test_message_thread_id" label="Custom Topic ID" />
</div> </div>
@endif @endif
<h3 class="mt-4">Container Status Changes</h3> <div class="w-64">
<div class="flex items-end gap-10">
<x-forms.checkbox instantSave="saveModel" id="team.telegram_notifications_status_changes" <x-forms.checkbox instantSave="saveModel" id="team.telegram_notifications_status_changes"
label="Enabled" /> label="Container Status Changes" />
<x-forms.input <x-forms.input
helper="If you are using Group chat with Topics, you can specify the topics ID. If empty, General topic will be used." helper="If you are using Group chat with Topics, you can specify the topics ID. If empty, General topic will be used."
id="team.telegram_notifications_status_changes_message_thread_id" label="Custom Topic ID" /> id="team.telegram_notifications_status_changes_message_thread_id" label="Custom Topic ID" />
</div> </div>
<h3 class="mt-4">Application Deployments</h3> <div class="w-64">
<div class="flex items-end gap-10">
<x-forms.checkbox instantSave="saveModel" id="team.telegram_notifications_deployments" <x-forms.checkbox instantSave="saveModel" id="team.telegram_notifications_deployments"
label="Enabled" /> label="Application Deployments" />
<x-forms.input <x-forms.input
helper="If you are using Group chat with Topics, you can specify the topics ID. If empty, General topic will be used." helper="If you are using Group chat with Topics, you can specify the topics ID. If empty, General topic will be used."
id="team.telegram_notifications_deployments_message_thread_id" label="Custom Topic ID" /> id="team.telegram_notifications_deployments_message_thread_id" label="Custom Topic ID" />
</div> </div>
<h3 class="mt-4">Backup Status</h3> <div class="w-64">
<div class="flex items-end gap-10">
<x-forms.checkbox instantSave="saveModel" id="team.telegram_notifications_database_backups" <x-forms.checkbox instantSave="saveModel" id="team.telegram_notifications_database_backups"
label="Enabled" /> label="Backup Status" />
<x-forms.input <x-forms.input
helper="If you are using Group chat with Topics, you can specify the topics ID. If empty, General topic will be used." helper="If you are using Group chat with Topics, you can specify the topics ID. If empty, General topic will be used."
id="team.telegram_notifications_database_backups_message_thread_id" label="Custom Topic ID" /> id="team.telegram_notifications_database_backups_message_thread_id" label="Custom Topic ID" />

View File

@ -15,8 +15,8 @@
<div class="flex items-end gap-2"> <div class="flex items-end gap-2">
<x-forms.input placeholder="https://coolify.io" id="application.fqdn" label="Domains" <x-forms.input placeholder="https://coolify.io" id="application.fqdn" label="Domains"
helper="You can specify one domain with path or more with comma. You can specify a port to bind the domain to.<br><br><span class='text-helper'>Example</span><br>- http://app.coolify.io, https://cloud.coolify.io/dashboard<br>- http://app.coolify.io/api/v3<br>- http://app.coolify.io:3000 -> app.coolify.io will point to port 3000 inside the container. " /> helper="You can specify one domain with path or more with comma. You can specify a port to bind the domain to.<br><br><span class='text-helper'>Example</span><br>- http://app.coolify.io, https://cloud.coolify.io/dashboard<br>- http://app.coolify.io/api/v3<br>- http://app.coolify.io:3000 -> app.coolify.io will point to port 3000 inside the container. " />
<x-forms.button wire:click="getWildcardDomain">Generate Domain <x-forms.button wire:click="getWildcardDomain">Generate Domain
</x-forms.button> </x-forms.button>
</div> </div>
@if (!$application->dockerfile) @if (!$application->dockerfile)
<div class="flex items-end gap-2"> <div class="flex items-end gap-2">
@ -42,7 +42,7 @@
</div> </div>
<div class="flex flex-col gap-2 xl:flex-row"> <div class="flex flex-col gap-2 xl:flex-row">
<x-forms.input placeholder="/" id="application.base_directory" label="Base Directory" <x-forms.input placeholder="/" id="application.base_directory" label="Base Directory"
helper="Directory to use as root. Useful for monorepos. WIP" disabled /> helper="Directory to use as root. Useful for monorepos." />
@if ($application->settings->is_static) @if ($application->settings->is_static)
<x-forms.input placeholder="/dist" id="application.publish_directory" label="Publish Directory" <x-forms.input placeholder="/dist" id="application.publish_directory" label="Publish Directory"
required /> required />

View File

@ -3,11 +3,7 @@
<h1>Logs</h1> <h1>Logs</h1>
<livewire:project.application.heading :application="$resource" /> <livewire:project.application.heading :application="$resource" />
<div class="pt-4"> <div class="pt-4">
@if (Str::of($status)->startsWith('running')) <livewire:project.shared.get-logs :server="$server" :container="$container" />
<livewire:project.shared.get-logs :server="$server" :container="$container" />
@else
Application is not running.
@endif
</div> </div>
@elseif ($type === 'database') @elseif ($type === 'database')
<h1>Logs</h1> <h1>Logs</h1>

View File

@ -4,7 +4,7 @@
"version": "3.12.36" "version": "3.12.36"
}, },
"v4": { "v4": {
"version": "4.0.0-beta.66" "version": "4.0.0-beta.67"
} }
} }
} }