diff --git a/app/Http/Controllers/ApplicationController.php b/app/Http/Controllers/ApplicationController.php
new file mode 100644
index 000000000..ca7c4b659
--- /dev/null
+++ b/app/Http/Controllers/ApplicationController.php
@@ -0,0 +1,67 @@
+load(['projects'])->projects->where('uuid', request()->route('project_uuid'))->first();
+ if (!$project) {
+ return redirect()->route('home');
+ }
+ $environment = $project->load(['environments'])->environments->where('name', request()->route('environment_name'))->first()->load(['applications']);
+ if (!$environment) {
+ return redirect()->route('home');
+ }
+ $application = $environment->applications->where('uuid', request()->route('application_uuid'))->first();
+ if (!$application) {
+ return redirect()->route('home');
+ }
+ return view('project.applications.configuration', ['application' => $application]);
+ }
+ public function deployments()
+ {
+ $project = session('currentTeam')->load(['projects'])->projects->where('uuid', request()->route('project_uuid'))->first();
+ if (!$project) {
+ return redirect()->route('home');
+ }
+ $environment = $project->load(['environments'])->environments->where('name', request()->route('environment_name'))->first()->load(['applications']);
+ if (!$environment) {
+ return redirect()->route('home');
+ }
+ $application = $environment->applications->where('uuid', request()->route('application_uuid'))->first();
+ if (!$application) {
+ return redirect()->route('home');
+ }
+ return view('project.applications.deployments', ['application' => $application, 'deployments' => $application->deployments()]);
+ }
+
+ public function deployment()
+ {
+ $deployment_uuid = request()->route('deployment_uuid');
+
+ $project = session('currentTeam')->load(['projects'])->projects->where('uuid', request()->route('project_uuid'))->first();
+ if (!$project) {
+ return redirect()->route('home');
+ }
+ $environment = $project->load(['environments'])->environments->where('name', request()->route('environment_name'))->first()->load(['applications']);
+ if (!$environment) {
+ return redirect()->route('home');
+ }
+ $application = $environment->applications->where('uuid', request()->route('application_uuid'))->first();
+ if (!$application) {
+ return redirect()->route('home');
+ }
+ $activity = Activity::where('properties->deployment_uuid', '=', $deployment_uuid)->first();
+
+ return view('project.applications.deployment', [
+ 'application' => $application,
+ 'activity' => $activity,
+ 'deployment_uuid' => $deployment_uuid,
+ ]);
+ }
+}
diff --git a/app/Http/Controllers/ProjectController.php b/app/Http/Controllers/ProjectController.php
index 1bcb848f7..1c1b220fc 100644
--- a/app/Http/Controllers/ProjectController.php
+++ b/app/Http/Controllers/ProjectController.php
@@ -13,6 +13,9 @@ class ProjectController extends Controller
return redirect()->route('home');
}
$project->load(['environments']);
+ if (count($project->environments) == 1) {
+ return redirect()->route('project.resources', ['project_uuid' => $project->uuid, 'environment_name' => $project->environments->first()->name]);
+ }
return view('project.environments', ['project' => $project]);
}
@@ -29,7 +32,7 @@ class ProjectController extends Controller
return view('project.resources', ['project' => $project, 'environment' => $environment]);
}
- public function application()
+ public function application_configuration()
{
$project = session('currentTeam')->load(['projects'])->projects->where('uuid', request()->route('project_uuid'))->first();
if (!$project) {
@@ -43,10 +46,26 @@ class ProjectController extends Controller
if (!$application) {
return redirect()->route('home');
}
- return view('project.application', ['application' => $application, 'deployments' => $application->deployments()]);
+ return view('project.applications.configuration', ['application' => $application]);
+ }
+ public function application_deployments()
+ {
+ $project = session('currentTeam')->load(['projects'])->projects->where('uuid', request()->route('project_uuid'))->first();
+ if (!$project) {
+ return redirect()->route('home');
+ }
+ $environment = $project->load(['environments'])->environments->where('name', request()->route('environment_name'))->first()->load(['applications']);
+ if (!$environment) {
+ return redirect()->route('home');
+ }
+ $application = $environment->applications->where('uuid', request()->route('application_uuid'))->first();
+ if (!$application) {
+ return redirect()->route('home');
+ }
+ return view('project.applications.deployments', ['application' => $application, 'deployments' => $application->deployments()]);
}
- public function deployment()
+ public function application_deployment()
{
$deployment_uuid = request()->route('deployment_uuid');
@@ -64,7 +83,8 @@ class ProjectController extends Controller
}
$activity = Activity::where('properties->deployment_uuid', '=', $deployment_uuid)->first();
- return view('project.deployment', [
+ return view('project.applications.deployment', [
+ 'application' => $application,
'activity' => $activity,
'deployment_uuid' => $deployment_uuid,
]);
diff --git a/app/Http/Livewire/Application/Destination.php b/app/Http/Livewire/Application/Destination.php
new file mode 100644
index 000000000..a630941cc
--- /dev/null
+++ b/app/Http/Livewire/Application/Destination.php
@@ -0,0 +1,10 @@
+ 'required|min:6',
+ 'application.fqdn' => 'nullable',
+ 'application.git_repository' => 'required',
+ 'application.git_branch' => 'required',
+ 'application.git_commit_sha' => 'nullable',
+ 'application.build_pack' => 'required',
+ 'application.base_directory' => 'required',
+ 'application.publish_directory' => 'nullable',
+ 'application.ports_exposes' => 'nullable',
+ ];
+ public function instantSave()
+ {
+ // @TODO: find another way
+ $this->application->settings->is_git_submodules_allowed = $this->is_git_submodules_allowed;
+ $this->application->settings->is_git_lfs_allowed = $this->is_git_lfs_allowed;
+ $this->application->settings->is_debug = $this->is_debug;
+ $this->application->settings->is_previews = $this->is_previews;
+ $this->application->settings->is_bot = $this->is_bot;
+ $this->application->settings->is_custom_ssl = $this->is_custom_ssl;
+ $this->application->settings->is_http2 = $this->is_http2;
+ $this->application->settings->is_auto_deploy = $this->is_auto_deploy;
+ $this->application->settings->is_dual_cert = $this->is_dual_cert;
+ $this->application->settings->save();
+ }
+ public function mount()
+ {
+ $this->application = Application::find($this->applicationId)->with('destination', 'settings')->first();
+ $this->is_git_submodules_allowed = $this->application->settings->is_git_submodules_allowed;
+ $this->is_git_lfs_allowed = $this->application->settings->is_git_lfs_allowed;
+ $this->is_debug = $this->application->settings->is_debug;
+ $this->is_previews = $this->application->settings->is_previews;
+ $this->is_bot = $this->application->settings->is_bot;
+ $this->is_custom_ssl = $this->application->settings->is_custom_ssl;
+ $this->is_http2 = $this->application->settings->is_http2;
+ $this->is_auto_deploy = $this->application->settings->is_auto_deploy;
+ $this->is_dual_cert = $this->application->settings->is_dual_cert;
+
+ }
+ public function submit()
+ {
+ $this->application->save();
+ }
+}
diff --git a/app/Http/Livewire/Application/Source.php b/app/Http/Livewire/Application/Source.php
new file mode 100644
index 000000000..f4981846b
--- /dev/null
+++ b/app/Http/Livewire/Application/Source.php
@@ -0,0 +1,22 @@
+ 'required',
+ 'application.git_branch' => 'required',
+ 'application.git_commit_sha' => 'nullable',
+ ];
+ public function mount()
+ {
+ $this->application = Application::find($this->applicationId)->first();
+ }
+}
diff --git a/app/Http/Livewire/Application/Storages.php b/app/Http/Livewire/Application/Storages.php
new file mode 100644
index 000000000..340c897ad
--- /dev/null
+++ b/app/Http/Livewire/Application/Storages.php
@@ -0,0 +1,11 @@
+application = Application::find($this->applicationId);
- $this->fill([
- 'name' => $this->application->name,
- 'fqdn' => $this->application->fqdn,
- 'git_repository' => $this->application->git_repository,
- 'git_branch' => $this->application->git_branch,
- 'git_commit_sha' => $this->application->git_commit_sha,
- ]);
- }
-
-}
diff --git a/app/Http/Livewire/CheckUpdate.php b/app/Http/Livewire/CheckUpdate.php
index 17b83387e..964c360f0 100644
--- a/app/Http/Livewire/CheckUpdate.php
+++ b/app/Http/Livewire/CheckUpdate.php
@@ -22,8 +22,4 @@ class CheckUpdate extends Component
$this->currentVersion = config('coolify.version');
version_compare($this->currentVersion, $this->latestVersion, '<') ? $this->updateAvailable = true : $this->updateAvailable = false;
}
- public function render()
- {
- return view('livewire.check-update');
- }
}
diff --git a/app/Http/Livewire/DeployApplication.php b/app/Http/Livewire/DeployApplication.php
index 8531ed7db..4294c08d6 100644
--- a/app/Http/Livewire/DeployApplication.php
+++ b/app/Http/Livewire/DeployApplication.php
@@ -4,6 +4,7 @@ namespace App\Http\Livewire;
use App\Jobs\DeployApplicationJob;
use App\Models\Application;
+use Illuminate\Support\Facades\Route;
use Livewire\Component;
use Visus\Cuid2\Cuid2;
@@ -14,36 +15,51 @@ class DeployApplication extends Component
public $status;
public Application $application;
public $destination;
+ public array $parameters;
protected string $deployment_uuid;
protected array $command = [];
protected $source;
- public function mount($applicationId)
+ public function mount()
{
- $this->application = Application::find($applicationId)->first();
+ $this->parameters = Route::current()->parameters();
+ $this->application = Application::find($this->applicationId)->first();
$this->destination = $this->application->destination->getMorphClass()::where('id', $this->application->destination->id)->first();
}
-
- public function render()
- {
- return view('livewire.deploy-application');
- }
-
-
- public function start()
+ protected function setDeploymentUuid()
{
// Create Deployment ID
$this->deployment_uuid = new Cuid2(7);
+ $this->parameters['deployment_uuid'] = $this->deployment_uuid;
+ }
+ protected function redirectToDeployment()
+ {
+ return redirect()->route('project.applications.deployment', $this->parameters);
+ }
+ public function start()
+ {
+ $this->setDeploymentUuid();
dispatch(new DeployApplicationJob(
deployment_uuid: $this->deployment_uuid,
application_uuid: $this->application->uuid,
+ force_rebuild: false,
));
- $currentUrl = url()->previous();
- $deploymentUrl = "$currentUrl/deployment/$this->deployment_uuid";
- return redirect($deploymentUrl);
+ return $this->redirectToDeployment();
+ }
+ public function forceRebuild()
+ {
+ $this->setDeploymentUuid();
+
+ dispatch(new DeployApplicationJob(
+ deployment_uuid: $this->deployment_uuid,
+ application_uuid: $this->application->uuid,
+ force_rebuild: true,
+ ));
+
+ return $this->redirectToDeployment();
}
public function stop()
diff --git a/app/Http/Livewire/PollActivity.php b/app/Http/Livewire/PollActivity.php
index da8ed5252..b10fc8da6 100644
--- a/app/Http/Livewire/PollActivity.php
+++ b/app/Http/Livewire/PollActivity.php
@@ -24,9 +24,4 @@ class PollActivity extends Component
$this->isKeepAliveOn = false;
}
}
-
- public function render()
- {
- return view('livewire.poll-activity');
- }
}
diff --git a/app/Http/Livewire/PollDeployment.php b/app/Http/Livewire/PollDeployment.php
new file mode 100644
index 000000000..d58cf4f24
--- /dev/null
+++ b/app/Http/Livewire/PollDeployment.php
@@ -0,0 +1,19 @@
+deployment_uuid', '=', $this->deployment_uuid)->first();
+ $this->created_at = $activity->created_at;
+ $this->status = data_get($activity, 'properties.status');
+ }
+}
diff --git a/app/Http/Livewire/RunCommand.php b/app/Http/Livewire/RunCommand.php
index 5bb84a56f..9eaa2bbd1 100755
--- a/app/Http/Livewire/RunCommand.php
+++ b/app/Http/Livewire/RunCommand.php
@@ -27,10 +27,6 @@ class RunCommand extends Component
$this->servers = Server::all();
$this->server = $this->servers[0]->uuid;
}
- public function render()
- {
- return view('livewire.run-command');
- }
public function runCommand()
{
diff --git a/app/Http/Livewire/SwitchTeam.php b/app/Http/Livewire/SwitchTeam.php
index edb68852a..089ccf76b 100644
--- a/app/Http/Livewire/SwitchTeam.php
+++ b/app/Http/Livewire/SwitchTeam.php
@@ -19,8 +19,4 @@ class SwitchTeam extends Component
session(['currentTeam' => $team_to_switch_to]);
return redirect(request()->header('Referer'));
}
- public function render()
- {
- return view('livewire.switch-team');
- }
}
diff --git a/app/Jobs/DeployApplicationJob.php b/app/Jobs/DeployApplicationJob.php
index f9a6e1a07..ac2a87ddb 100644
--- a/app/Jobs/DeployApplicationJob.php
+++ b/app/Jobs/DeployApplicationJob.php
@@ -43,6 +43,7 @@ class DeployApplicationJob implements ShouldQueue
public function __construct(
public string $deployment_uuid,
public string $application_uuid,
+ public bool $force_rebuild = false,
) {
$this->application = Application::query()
->where('uuid', $this->application_uuid)
@@ -86,7 +87,7 @@ class DeployApplicationJob implements ShouldQueue
// Set wildcard domain
if (!$this->application->settings->is_bot && !$this->application->fqdn && $wildcard_domain) {
- $this->application->fqdn = $this->application->uuid . '.' . $wildcard_domain;
+ $this->application->fqdn = 'http://' . $this->application->uuid . '.' . $wildcard_domain;
$this->application->save();
}
$this->workdir = "/artifacts/{$this->deployment_uuid}";
@@ -116,24 +117,26 @@ class DeployApplicationJob implements ShouldQueue
$this->executeNow([$this->execute_in_builder("cd {$this->workdir} && git rev-parse HEAD")], 'commit_sha', hideFromOutput: true);
$this->git_commit = $this->activity->properties->get('commit_sha');
- $this->executeNow([
- "docker inspect {$this->application->uuid} --format '{{json .Config.Image}}' 2>&1",
- ], 'stopped_container_image', hideFromOutput: true, ignoreErrors: true);
- $image = $this->activity->properties->get('stopped_container_image');
- if (isset($image)) {
- $image = explode(':', str_replace('"', '', $image))[1];
- if ($image == $this->git_commit) {
- $this->executeNow([
- "echo 'Application found locally with the same Git Commit SHA. Starting it...'"
- ]);
- $this->executeNow([
- "docker start {$this->application->uuid}"
- ], hideFromOutput: true);
+ if (!$this->force_rebuild) {
+ $this->executeNow([
+ "docker inspect {$this->application->uuid} --format '{{json .Config.Image}}' 2>&1",
+ ], 'stopped_container_image', hideFromOutput: true, ignoreErrors: true);
+ $image = $this->activity->properties->get('stopped_container_image');
+ if (isset($image)) {
+ $image = explode(':', str_replace('"', '', $image))[1];
+ if ($image == $this->git_commit) {
+ $this->executeNow([
+ "echo -n 'Application found locally with the same Git Commit SHA. Starting it... '"
+ ]);
+ $this->executeNow([
+ "docker start {$this->application->uuid}"
+ ], hideFromOutput: true);
- $this->executeNow([
- "echo 'Done. 🎉'",
- ], isFinished: true);
- return;
+ $this->executeNow([
+ "echo 'Done. 🎉'",
+ ], isFinished: true);
+ return;
+ }
}
}
$this->executeNow([
@@ -211,10 +214,10 @@ class DeployApplicationJob implements ShouldQueue
'container_name' => $this->application->uuid,
'restart' => 'always',
'environment' => [
- 'PORT' => $this->application->ports_exposes[0]
+ 'PORT' => $this->application->ports_exposes_array[0]
],
'labels' => $this->set_labels_for_applications(),
- 'expose' => $this->application->ports_exposes,
+ 'expose' => $this->application->ports_exposes_array,
'networks' => [
$this->destination->network,
],
@@ -238,8 +241,8 @@ class DeployApplicationJob implements ShouldQueue
]
]
];
- if (count($this->application->ports_mappings) > 0) {
- $docker_compose['services'][$this->application->uuid]['ports'] = $this->application->ports_mappings;
+ if (count($this->application->ports_mappings_array) > 0) {
+ $docker_compose['services'][$this->application->uuid]['ports'] = $this->application->ports_mappings_array;
}
if (count($persistentStorages) > 0) {
$docker_compose['services'][$this->application->uuid]['volumes'] = $persistentStorages;
@@ -274,7 +277,7 @@ class DeployApplicationJob implements ShouldQueue
private function generate_healthcheck_commands()
{
if (!$this->application->health_check_port) {
- $this->application->health_check_port = $this->application->ports_exposes[0];
+ $this->application->health_check_port = $this->application->ports_exposes_array[0];
}
if ($this->application->health_check_path) {
$generated_healthchecks_commands = [
@@ -366,6 +369,19 @@ class DeployApplicationJob implements ShouldQueue
throw new \RuntimeException($result->errorOutput());
}
}
+ private function setGitImportSettings($git_clone_command)
+ {
+ if ($this->application->git_commit_sha) {
+ $git_clone_command = "{$git_clone_command} && cd {$this->workdir} && git checkout {$this->application->git_commit_sha}";
+ }
+ if ($this->application->settings->is_git_submodules_allowed) {
+ $git_clone_command = "{$git_clone_command} && cd {$this->workdir} && git submodule update --init --recursive";
+ }
+ if ($this->application->settings->is_git_lfs_allowed) {
+ $git_clone_command = "{$git_clone_command} && cd {$this->workdir} && git lfs pull";
+ }
+ return $git_clone_command;
+ }
private function gitImport()
{
$source_html_url = data_get($this->application, 'source.html_url');
@@ -373,19 +389,28 @@ class DeployApplicationJob implements ShouldQueue
$source_html_url_host = $url['host'];
$source_html_url_scheme = $url['scheme'];
+ $git_clone_command = "git clone -q -b {$this->application->git_branch}";
+
if ($this->application->source->getMorphClass() == 'App\Models\GithubApp') {
if ($this->source->is_public) {
+ $git_clone_command = "{$git_clone_command} {$this->source->html_url}/{$this->application->git_repository}.git {$this->workdir}";
+ $git_clone_command = $this->setGitImportSettings($git_clone_command);
+ dump($git_clone_command);
return [
- $this->execute_in_builder("git clone -q -b {$this->application->git_branch} {$this->source->html_url}/{$this->application->git_repository}.git {$this->workdir}")
+ $this->execute_in_builder($git_clone_command)
];
} else {
if (!$this->application->source->app_id) {
$private_key = base64_encode($this->application->source->privateKey->private_key);
+
+ $git_clone_command = "GIT_SSH_COMMAND=\"ssh -o LogLevel=ERROR -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i /root/.ssh/id_rsa\" {$git_clone_command} git@$source_html_url_host:{$this->application->git_repository}.git {$this->workdir}";
+ $git_clone_command = $this->setGitImportSettings($git_clone_command);
+
return [
$this->execute_in_builder("mkdir -p /root/.ssh"),
$this->execute_in_builder("echo '{$private_key}' | base64 -d > /root/.ssh/id_rsa"),
$this->execute_in_builder("chmod 600 /root/.ssh/id_rsa"),
- $this->execute_in_builder("GIT_SSH_COMMAND=\"ssh -o LogLevel=ERROR -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i /root/.ssh/id_rsa\" git clone -q -b {$this->application->git_branch} git@$source_html_url_host:{$this->application->git_repository}.git {$this->workdir}")
+ $this->execute_in_builder($git_clone_command)
];
} else {
$github_access_token = $this->generate_jwt_token_for_github();
diff --git a/app/Models/Application.php b/app/Models/Application.php
index 69272808b..723ddeebb 100644
--- a/app/Models/Application.php
+++ b/app/Models/Application.php
@@ -37,23 +37,23 @@ class Application extends BaseModel
return $this->morphMany(LocalPersistentVolume::class, 'resource');
}
- public function portsMappings(): Attribute
+ public function portsMappingsArray(): Attribute
{
return Attribute::make(
- get: fn (string|null $portsMappings) =>
- is_null($portsMappings)
+ get: fn () =>
+ is_null($this->ports_mappings)
? []
- : explode(',', $portsMappings)
+ : explode(',', $this->ports_mappings)
);
}
- public function portsExposes(): Attribute
+ public function portsExposesArray(): Attribute
{
return Attribute::make(
- get: fn (string|null $portsExposes) =>
- is_null($portsExposes)
+ get: fn () =>
+ is_null($this->ports_exposes)
? []
- : explode(',', $portsExposes)
+ : explode(',', $this->ports_exposes)
);
}
diff --git a/app/Models/ApplicationSetting.php b/app/Models/ApplicationSetting.php
index 9acad2ae9..a664f8d3c 100644
--- a/app/Models/ApplicationSetting.php
+++ b/app/Models/ApplicationSetting.php
@@ -6,6 +6,10 @@ use Illuminate\Database\Eloquent\Model;
class ApplicationSetting extends Model
{
+ protected $fillable = [
+ 'is_git_submodules_allowed',
+ 'is_git_lfs_allowed',
+ ];
public function application()
{
return $this->belongsTo(Application::class);
diff --git a/app/Models/GithubApp.php b/app/Models/GithubApp.php
index fd7dd0775..5e16fa574 100644
--- a/app/Models/GithubApp.php
+++ b/app/Models/GithubApp.php
@@ -4,6 +4,9 @@ namespace App\Models;
class GithubApp extends BaseModel
{
+ protected $casts = [
+ 'is_public' => 'boolean',
+ ];
public function applications()
{
return $this->morphMany(Application::class, 'source');
diff --git a/app/View/Components/Input.php b/app/View/Components/Input.php
new file mode 100644
index 000000000..07879b157
--- /dev/null
+++ b/app/View/Components/Input.php
@@ -0,0 +1,32 @@
+ 'production',
'project_id' => $project_1->id,
]);
- Environment::create([
- 'id' => 2,
- 'name' => 'staging',
- 'project_id' => $project_1->id,
- ]);
}
}
diff --git a/package-lock.json b/package-lock.json
index 63682f793..548ee1836 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -4,13 +4,16 @@
"requires": true,
"packages": {
"": {
+ "dependencies": {
+ "alpinejs": "3.12.0"
+ },
"devDependencies": {
- "autoprefixer": "^10.4.14",
- "axios": "^1.1.2",
- "laravel-vite-plugin": "^0.7.2",
- "postcss": "^8.4.21",
- "tailwindcss": "^3.2.7",
- "vite": "^4.0.0"
+ "autoprefixer": "10.4.14",
+ "axios": "1.3.6",
+ "laravel-vite-plugin": "0.7.4",
+ "postcss": "8.4.23",
+ "tailwindcss": "3.3.1",
+ "vite": "4.3.1"
}
},
"node_modules/@esbuild/android-arm": {
@@ -365,6 +368,60 @@
"node": ">=12"
}
},
+ "node_modules/@jridgewell/gen-mapping": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
+ "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/set-array": "^1.0.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
+ "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/set-array": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
+ "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.4.15",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
+ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
+ "dev": true
+ },
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.18",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz",
+ "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/resolve-uri": "3.1.0",
+ "@jridgewell/sourcemap-codec": "1.4.14"
+ }
+ },
+ "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.4.14",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
+ "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
+ "dev": true
+ },
"node_modules/@nodelib/fs.scandir": {
"version": "2.1.5",
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
@@ -400,38 +457,33 @@
"node": ">= 8"
}
},
- "node_modules/acorn": {
- "version": "7.4.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
- "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
- "dev": true,
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/acorn-node": {
- "version": "1.8.2",
- "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz",
- "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==",
- "dev": true,
+ "node_modules/@vue/reactivity": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.1.5.tgz",
+ "integrity": "sha512-1tdfLmNjWG6t/CsPldh+foumYFo3cpyCHgBYQ34ylaMsJ+SNHQ1kApMIa8jN+i593zQuaw3AdWH0nJTARzCFhg==",
"dependencies": {
- "acorn": "^7.0.0",
- "acorn-walk": "^7.0.0",
- "xtend": "^4.0.2"
+ "@vue/shared": "3.1.5"
}
},
- "node_modules/acorn-walk": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz",
- "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==",
- "dev": true,
- "engines": {
- "node": ">=0.4.0"
+ "node_modules/@vue/shared": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.1.5.tgz",
+ "integrity": "sha512-oJ4F3TnvpXaQwZJNF3ZK+kLPHKarDmJjJ6jyzVNDKH9md1dptjC7lWR//jrGuLdek/U6iltWxqAnYOu8gCiOvA=="
+ },
+ "node_modules/alpinejs": {
+ "version": "3.12.0",
+ "resolved": "https://registry.npmjs.org/alpinejs/-/alpinejs-3.12.0.tgz",
+ "integrity": "sha512-YENcRBA9dlwR8PsZNFMTHbmdlTNwd1BkCeivPvOzzCKHas6AfwNRsDK9UEFmE5dXTMEZjnnpCTxV8vkdpWiOCw==",
+ "dependencies": {
+ "@vue/reactivity": "~3.1.1"
}
},
+ "node_modules/any-promise": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
+ "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==",
+ "dev": true
+ },
"node_modules/anymatch": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
@@ -491,9 +543,9 @@
}
},
"node_modules/axios": {
- "version": "1.3.4",
- "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.4.tgz",
- "integrity": "sha512-toYm+Bsyl6VC5wSkfkbbNB6ROv7KY93PEBBL6xyDczaIHasAiv4wPqQ/c4RjoQzipxRD2W5g21cOqQulZ7rHwQ==",
+ "version": "1.3.6",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.6.tgz",
+ "integrity": "sha512-PEcdkk7JcdPiMDkvM4K6ZBRYq9keuVJsToxm2zQIM70Qqo2WHTdJZMXcG9X+RmRp2VPNUQC8W1RAGbgt6b1yMg==",
"dev": true,
"dependencies": {
"follow-redirects": "^1.15.0",
@@ -501,6 +553,12 @@
"proxy-from-env": "^1.1.0"
}
},
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true
+ },
"node_modules/binary-extensions": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
@@ -510,6 +568,16 @@
"node": ">=8"
}
},
+ "node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
"node_modules/braces": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
@@ -632,6 +700,21 @@
"node": ">= 0.8"
}
},
+ "node_modules/commander": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
+ "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "dev": true
+ },
"node_modules/cssesc": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
@@ -644,15 +727,6 @@
"node": ">=4"
}
},
- "node_modules/defined": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz",
- "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==",
- "dev": true,
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
@@ -662,23 +736,6 @@
"node": ">=0.4.0"
}
},
- "node_modules/detective": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz",
- "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==",
- "dev": true,
- "dependencies": {
- "acorn-node": "^1.8.2",
- "defined": "^1.0.0",
- "minimist": "^1.2.6"
- },
- "bin": {
- "detective": "bin/detective.js"
- },
- "engines": {
- "node": ">=0.8.0"
- }
- },
"node_modules/didyoumean": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
@@ -839,6 +896,12 @@
"url": "https://www.patreon.com/infusion"
}
},
+ "node_modules/fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+ "dev": true
+ },
"node_modules/fsevents": {
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
@@ -859,6 +922,26 @@
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
"dev": true
},
+ "node_modules/glob": {
+ "version": "7.1.6",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
+ "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
+ "dev": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/glob-parent": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
@@ -883,6 +966,22 @@
"node": ">= 0.4.0"
}
},
+ "node_modules/inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "dev": true,
+ "dependencies": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
"node_modules/is-binary-path": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
@@ -937,6 +1036,15 @@
"node": ">=0.12.0"
}
},
+ "node_modules/jiti": {
+ "version": "1.18.2",
+ "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.18.2.tgz",
+ "integrity": "sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==",
+ "dev": true,
+ "bin": {
+ "jiti": "bin/jiti.js"
+ }
+ },
"node_modules/laravel-vite-plugin": {
"version": "0.7.4",
"resolved": "https://registry.npmjs.org/laravel-vite-plugin/-/laravel-vite-plugin-0.7.4.tgz",
@@ -962,6 +1070,12 @@
"node": ">=10"
}
},
+ "node_modules/lines-and-columns": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
+ "dev": true
+ },
"node_modules/merge2": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
@@ -1005,20 +1119,40 @@
"node": ">= 0.6"
}
},
- "node_modules/minimist": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
- "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/mz": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
+ "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
+ "dev": true,
+ "dependencies": {
+ "any-promise": "^1.0.0",
+ "object-assign": "^4.0.1",
+ "thenify-all": "^1.0.0"
}
},
"node_modules/nanoid": {
- "version": "3.3.4",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
- "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
+ "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",
"dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
"bin": {
"nanoid": "bin/nanoid.cjs"
},
@@ -1050,6 +1184,15 @@
"node": ">=0.10.0"
}
},
+ "node_modules/object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/object-hash": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
@@ -1059,6 +1202,24 @@
"node": ">= 6"
}
},
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "dev": true,
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/path-parse": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
@@ -1092,10 +1253,19 @@
"node": ">=0.10.0"
}
},
+ "node_modules/pirates": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz",
+ "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
"node_modules/postcss": {
- "version": "8.4.21",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz",
- "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==",
+ "version": "8.4.23",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.23.tgz",
+ "integrity": "sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==",
"dev": true,
"funding": [
{
@@ -1105,10 +1275,14 @@
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
}
],
"dependencies": {
- "nanoid": "^3.3.4",
+ "nanoid": "^3.3.6",
"picocolors": "^1.0.0",
"source-map-js": "^1.0.2"
},
@@ -1306,9 +1480,9 @@
}
},
"node_modules/rollup": {
- "version": "3.19.1",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.19.1.tgz",
- "integrity": "sha512-lAbrdN7neYCg/8WaoWn/ckzCtz+jr70GFfYdlf50OF7387HTg+wiuiqJRFYawwSPpqfqDNYqK7smY/ks2iAudg==",
+ "version": "3.21.0",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.21.0.tgz",
+ "integrity": "sha512-ANPhVcyeHvYdQMUyCbczy33nbLzI7RzrBje4uvNiTDJGIMtlKoOStmympwr9OtS1LZxiDmE2wvxHyVhoLtf1KQ==",
"dev": true,
"bin": {
"rollup": "dist/bin/rollup"
@@ -1353,6 +1527,28 @@
"node": ">=0.10.0"
}
},
+ "node_modules/sucrase": {
+ "version": "3.32.0",
+ "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.32.0.tgz",
+ "integrity": "sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.2",
+ "commander": "^4.0.0",
+ "glob": "7.1.6",
+ "lines-and-columns": "^1.1.6",
+ "mz": "^2.7.0",
+ "pirates": "^4.0.1",
+ "ts-interface-checker": "^0.1.9"
+ },
+ "bin": {
+ "sucrase": "bin/sucrase",
+ "sucrase-node": "bin/sucrase-node"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/supports-preserve-symlinks-flag": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
@@ -1366,20 +1562,20 @@
}
},
"node_modules/tailwindcss": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.2.7.tgz",
- "integrity": "sha512-B6DLqJzc21x7wntlH/GsZwEXTBttVSl1FtCzC8WP4oBc/NKef7kaax5jeihkkCEWc831/5NDJ9gRNDK6NEioQQ==",
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.1.tgz",
+ "integrity": "sha512-Vkiouc41d4CEq0ujXl6oiGFQ7bA3WEhUZdTgXAhtKxSy49OmKs8rEfQmupsfF0IGW8fv2iQkp1EVUuapCFrZ9g==",
"dev": true,
"dependencies": {
"arg": "^5.0.2",
"chokidar": "^3.5.3",
"color-name": "^1.1.4",
- "detective": "^5.2.1",
"didyoumean": "^1.2.2",
"dlv": "^1.1.3",
"fast-glob": "^3.2.12",
"glob-parent": "^6.0.2",
"is-glob": "^4.0.3",
+ "jiti": "^1.17.2",
"lilconfig": "^2.0.6",
"micromatch": "^4.0.5",
"normalize-path": "^3.0.0",
@@ -1393,7 +1589,8 @@
"postcss-selector-parser": "^6.0.11",
"postcss-value-parser": "^4.2.0",
"quick-lru": "^5.1.1",
- "resolve": "^1.22.1"
+ "resolve": "^1.22.1",
+ "sucrase": "^3.29.0"
},
"bin": {
"tailwind": "lib/cli.js",
@@ -1406,6 +1603,27 @@
"postcss": "^8.0.9"
}
},
+ "node_modules/thenify": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
+ "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
+ "dev": true,
+ "dependencies": {
+ "any-promise": "^1.0.0"
+ }
+ },
+ "node_modules/thenify-all": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
+ "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",
+ "dev": true,
+ "dependencies": {
+ "thenify": ">= 3.1.0 < 4"
+ },
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
"node_modules/to-regex-range": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
@@ -1418,6 +1636,12 @@
"node": ">=8.0"
}
},
+ "node_modules/ts-interface-checker": {
+ "version": "0.1.13",
+ "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
+ "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==",
+ "dev": true
+ },
"node_modules/update-browserslist-db": {
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz",
@@ -1451,15 +1675,14 @@
"dev": true
},
"node_modules/vite": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/vite/-/vite-4.2.0.tgz",
- "integrity": "sha512-AbDTyzzwuKoRtMIRLGNxhLRuv1FpRgdIw+1y6AQG73Q5+vtecmvzKo/yk8X/vrHDpETRTx01ABijqUHIzBXi0g==",
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-4.3.1.tgz",
+ "integrity": "sha512-EPmfPLAI79Z/RofuMvkIS0Yr091T2ReUoXQqc5ppBX/sjFRhHKiPPF/R46cTdoci/XgeQpB23diiJxq5w30vdg==",
"dev": true,
"dependencies": {
"esbuild": "^0.17.5",
"postcss": "^8.4.21",
- "resolve": "^1.22.1",
- "rollup": "^3.18.0"
+ "rollup": "^3.20.2"
},
"bin": {
"vite": "bin/vite.js"
@@ -1512,14 +1735,11 @@
"vite": "^2 || ^3 || ^4"
}
},
- "node_modules/xtend": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
- "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
- "dev": true,
- "engines": {
- "node": ">=0.4"
- }
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "dev": true
},
"node_modules/yaml": {
"version": "1.10.2",
diff --git a/package.json b/package.json
index 766187be7..689df4d60 100644
--- a/package.json
+++ b/package.json
@@ -5,11 +5,14 @@
"build": "vite build"
},
"devDependencies": {
- "autoprefixer": "^10.4.14",
- "axios": "^1.1.2",
- "laravel-vite-plugin": "^0.7.2",
- "postcss": "^8.4.21",
- "tailwindcss": "^3.2.7",
- "vite": "^4.0.0"
+ "autoprefixer": "10.4.14",
+ "axios": "1.3.6",
+ "laravel-vite-plugin": "0.7.4",
+ "postcss": "8.4.23",
+ "tailwindcss": "3.3.1",
+ "vite": "4.3.1"
+ },
+ "dependencies": {
+ "alpinejs": "3.12.0"
}
}
diff --git a/resources/js/app.js b/resources/js/app.js
index e59d6a0ad..2205ac5f6 100644
--- a/resources/js/app.js
+++ b/resources/js/app.js
@@ -1 +1,4 @@
-import './bootstrap';
+// import './bootstrap';
+import Alpine from 'alpinejs'
+window.Alpine = Alpine
+Alpine.start()
diff --git a/resources/views/components/applications/layout.blade.php b/resources/views/components/applications/layout.blade.php
new file mode 100644
index 000000000..24de20df5
--- /dev/null
+++ b/resources/views/components/applications/layout.blade.php
@@ -0,0 +1,7 @@
+{{ $title ?? 'NOT SET' }}
+