diff --git a/app/Console/Commands/CheckFtpSongs.php b/app/Console/Commands/CheckFtpSongs.php new file mode 100644 index 0000000..2783b3d --- /dev/null +++ b/app/Console/Commands/CheckFtpSongs.php @@ -0,0 +1,89 @@ +argument('disk')); + + $disks = ($inputDisk === 'ALL') + ? ['DISK01', 'DISK02', 'DISK03', 'DISK04', 'DISK05', 'DISK09', 'DISK10'] + : [$inputDisk]; + foreach ($disks as $diskName) { + $this->info("========== 🔍 處理 {$diskName} =========="); + + $folder = $diskName; + $prefix = $diskName; + + $this->processDisk($folder, $prefix); + $this->newLine(); + } + + $this->info('🎉 所有比對完成!'); + return self::SUCCESS; + } + protected function processDisk(string $folder, string $prefix): void + { + $disk = Storage::disk('ftp_test'); + + $this->info("📂 FTP 目錄: {$folder}"); + $this->info("🎯 DB prefix: {$prefix}"); + + // 1) 取得 FTP 檔案清單 + $this->info('🔍 取得 FTP 檔案列表…'); + $ftpPaths = collect($disk->allFiles($folder)) + ->map(fn ($p) => strtolower(str_replace('\\', '/', ltrim($p, '/')))) + ->filter(fn ($p) => Str::startsWith($p, strtolower($prefix))) + ->unique() + ->values(); + + $this->info("✅ FTP 檔案數:{$ftpPaths->count()}"); + + // 2) 資料庫 songs.filename + $this->info('🗃️ 讀取資料庫 songs.filename…'); + $dbPaths = Song::query() + ->when($prefix, fn ($q) => $q->where('filename', 'like', $prefix . '%')) + ->pluck('filename') + ->map(fn ($p) => strtolower(str_replace('\\', '/', $p))) + ->unique() + ->values(); + + $this->info("✅ DB 記錄數:{$dbPaths->count()}"); + + // 3) 比對 + $missing = $dbPaths->diff($ftpPaths); + $extra = $ftpPaths->diff($dbPaths); + + // 4) 結果 + $this->warn("❌ 缺失檔案(DB 有 / FTP 無):{$missing->count()}"); + $missing->each(fn ($p) => $this->line(" - $p")); + + $this->info("⚠️ 多餘檔案(FTP 有 / DB 無):{$extra->count()}"); + $extra->take(20)->each(fn ($p) => $this->line(" - $p")); + if ($extra->count() > 20) $this->line(' …其餘省略'); + } +} diff --git a/app/Console/Commands/TestFtpConnection.php b/app/Console/Commands/TestFtpConnection.php new file mode 100644 index 0000000..9c46fd1 --- /dev/null +++ b/app/Console/Commands/TestFtpConnection.php @@ -0,0 +1,40 @@ +info("🔼 上傳中..."); + if (!$disk->put($testFile, $testContent)) { + return $this->error("❌ 上傳失敗"); + } + + // 嘗試讀取 + $this->info("📥 下載檢查..."); + $content = $disk->get($testFile); + if ($content !== $testContent) { + return $this->error("❌ 檔案內容不符"); + } + + // 嘗試刪除 + $this->info("🗑️ 刪除測試檔案..."); + if (!$disk->delete($testFile)) { + return $this->error("❌ 刪除失敗"); + } + + $this->info("✅ FTP 測試成功!"); + } +} \ No newline at end of file diff --git a/app/Enums/SongLanguageType.php b/app/Enums/SongLanguageType.php new file mode 100644 index 0000000..a63ec94 --- /dev/null +++ b/app/Enums/SongLanguageType.php @@ -0,0 +1,60 @@ + __('enums.LanguageType.Mandarin'), + self::Taiwanese => __('enums.LanguageType.Taiwanese'), + self::English => __('enums.LanguageType.English'), + self::Japanese => __('enums.LanguageType.Japanese'), + self::Cantonese => __('enums.LanguageType.Cantonese'), + self::Korean => __('enums.LanguageType.Korean'), + self::Vietnamese => __('enums.LanguageType.Vietnamese'), + self::Hakka => __('enums.LanguageType.Hakka'), + self::Other => __('enums.LanguageType.Other'), + }; + } + public static function fromLabelOrName(string $input): self + { + $aliasMap = [ + '英文' => '英語', + '華語' => '國語', + '普通話' => '國語', + '台灣話' => '台語', + '客家話' => '客語', + ]; + // 將別名轉為正式值 + $input = $aliasMap[$input] ?? $input; + foreach (self::cases() as $case) { + if ($case->value === $input || $case->name === $input) { + return $case; + } + } + return self::Unset; + } + public static function options(): array + { + return collect(self::cases()) + ->mapWithKeys(fn($case) => [$case->value => $case->labels()]) + ->toArray(); + } +} \ No newline at end of file diff --git a/app/Http/Controllers/Api/RoomSongController.php b/app/Http/Controllers/Api/RoomSongController.php index f59831c..4fb3520 100644 --- a/app/Http/Controllers/Api/RoomSongController.php +++ b/app/Http/Controllers/Api/RoomSongController.php @@ -108,7 +108,8 @@ class RoomSongController extends Controller $response = (new MachineStatusForwarder( $roomSession->room->branch->external_ip, "/api/room/sync-order-song", - $validated + $validated, + Auth::user()->api_plain_token ))->forward(); } public function syncOrderSong(SyncOrderSongRequest $request) diff --git a/app/Http/Controllers/RoomControlController.php b/app/Http/Controllers/RoomControlController.php index b2500b3..ced1488 100644 --- a/app/Http/Controllers/RoomControlController.php +++ b/app/Http/Controllers/RoomControlController.php @@ -179,7 +179,8 @@ class RoomControlController extends Controller $response = (new MachineStatusForwarder( $branch->external_ip, "/api/room/session", - $validated + $validated, + Auth::user()->api_plain_token ))->forward(); return ApiResponse::success([ 'room' => $room->latestSession, @@ -269,13 +270,12 @@ class RoomControlController extends Controller $room->log_message='HeartBeat'; $room->touch(); // 更新 updated_at $room->save(); - $response = ( - new MachineStatusForwarder( + $response = (new MachineStatusForwarder( $branch->external_ip ?? '', '/api/room/receiveSwitch', - (new RoomResource($room->refresh()))->toArray(request()) - ) - )->forward(); + (new RoomResource($room->refresh()))->toArray(request()), + Auth::user()->api_plain_token + ))->forward(); return ApiResponse::success([ 'data' => MachineStatus::create($validated), ]); @@ -382,7 +382,8 @@ class RoomControlController extends Controller $response = (new MachineStatusForwarder( $branch->external_ip, "/api/room/receiveSwitch", - (new RoomResource($room->refresh()))->toArray(request()) + (new RoomResource($room->refresh()))->toArray(request()), + Auth::user()->api_plain_token ))->forward(); return $validated['command']==='error' ? ApiResponse::error('機房控制失敗') : ApiResponse::success($room); } diff --git a/app/Livewire/Admin/Dashboard.php b/app/Livewire/Admin/Dashboard.php deleted file mode 100644 index 6f0b3bf..0000000 --- a/app/Livewire/Admin/Dashboard.php +++ /dev/null @@ -1,16 +0,0 @@ - '首頁', 'route' => 'welcome'], + ['name' => '新歌快報', 'route' => 'new-songs'], + ['name' => '熱門排行', 'route' => 'top-ranking'], + ['name' => '歌名查詢', 'route' => 'search-song'], + ]; + private array $roomMenus = [ + ['name' => '已點歌曲', 'route' => 'clicked-song'], + ['name' => '聲音控制', 'route' => 'sound-control'], + ['name' => '真情告白', 'route' => 'love-message'], + ]; + public array $adminmenus=[ + ['name' => '操作紀錄', 'route' => 'admin.activity-log', 'icon' => 'clock', 'permission' => null], + ['name' => '包廂狀態紀錄', 'route' => 'admin.room-status-log', 'icon' => 'clock', 'permission' => null], + ['name' => '設備狀態紀錄', 'route' => 'admin.machine-status', 'icon' => 'clock', 'permission' => null], + ['name' => '使用者列表', 'route' => 'admin.users', 'icon' => 'user-circle', 'permission' => 'user-list'], + ['name' => 'Room', 'route' => 'admin.rooms', 'icon' => 'building-library', 'permission' => 'room-list'], + ['name' => 'RoomGrid', 'route' => 'admin.room-grids', 'icon' => 'film', 'permission' => 'room-list'], + ['name' => '文字廣告', 'route' => 'admin.text-ads', 'icon' => 'megaphone', 'permission' => 'text-ad-list'], + ['name' => '文字公告', 'route' => 'admin.broadcast-templates', 'icon' => 'megaphone', 'permission' => 'broadcast-list'], + ]; + public array $menus = []; + + public function mount() + { + // 先放共用的 + $this->menus = $this->commonMenus; + + // 如果有 room_code,再合併 + if (session()->has('room_code')) { + $this->menus = array_merge($this->menus, $this->roomMenus); + } + if (auth()->check()) { + $user = auth()->user(); + foreach ($this->adminmenus as $menu) + if (!$menu['permission'] || $user->can($menu['permission'])) + $this->menus[] = $menu; + } + } + + public function logout(Logout $logout) + { + $logout(); + return redirect('/'); + } + + public function render() + { + return view('livewire.layout.navigation'); + } +} \ No newline at end of file diff --git a/app/Livewire/Modals/StickerModal.php b/app/Livewire/Modals/StickerModal.php new file mode 100644 index 0000000..867291d --- /dev/null +++ b/app/Livewire/Modals/StickerModal.php @@ -0,0 +1,44 @@ +stickers = collect(glob(storage_path('app/public/superstar-pic/*.png'))) + //->map(fn($path) => 'superstar-pic/' . basename($path)) + ->map(fn($path) => basename($path)) + ->toArray(); + } + + public function openModal() + { + $this->showModal = true; + } + public function closeModal() + { + $this->showModal = false; + } + + public function select($sticker) + { + $this->dispatch('stickerSelected', $sticker); + $this->selectedSticker =$sticker; + $this->showModal = false; + } + + public function render() + { + return view('livewire.modals.sticker-modal'); + } +} diff --git a/app/Livewire/Pages/Home.php b/app/Livewire/Pages/Home.php new file mode 100644 index 0000000..01a6ff6 --- /dev/null +++ b/app/Livewire/Pages/Home.php @@ -0,0 +1,25 @@ +forget('room_code'); + $this->roomCode = request()->query('room_code', session('room_code', null)); + if ($this->roomCode) { + session(['room_code' => $this->roomCode]); + } + } + + public function render() + { + return view('livewire.pages.home'); + } +} diff --git a/app/Livewire/Pages/LoveMessage.php b/app/Livewire/Pages/LoveMessage.php new file mode 100644 index 0000000..03ba3c0 --- /dev/null +++ b/app/Livewire/Pages/LoveMessage.php @@ -0,0 +1,38 @@ + 'handleSticker']; + public $message = ''; + public $selectedSticker=null; + + public function handleSticker($sticker) + { + $this->selectedSticker = $sticker; + } + public function submitMessage() + { + // 實際存留言時,可同時存貼圖 + $data = [ + 'message' => $this->message, + 'sticker' => $this->selectedSticker, + 'user' => auth()->user()?->name ?? '訪客', + ]; + // 存到資料庫或送到 API + // ... + session()->flash('success', '留言已送出!'); + + // 重置 + $this->message = ''; + $this->selectedSticker = null; + } + + public function render() + { + return view('livewire.pages.love-message'); + } +} diff --git a/app/Livewire/Pages/OrderedSongList.php b/app/Livewire/Pages/OrderedSongList.php new file mode 100644 index 0000000..63be556 --- /dev/null +++ b/app/Livewire/Pages/OrderedSongList.php @@ -0,0 +1,58 @@ +playing = new EloquentCollection(); + $this->nextSong = new EloquentCollection(); + $this->finished = new EloquentCollection(); + $roomSession = $this->getRoomSession(session('room_code'))?->id ; + if ($roomSession) { + $this->roomSessionId = $roomSession->id; + $this->loadSongs($this->roomSessionId); + } + } + private function getRoomSession($apiToken): ?RoomSession + { + if (!$apiToken) return null; + return RoomSession::where('api_token', $apiToken) + ->whereIn('status', ['active', 'maintain']) + ->first(); + } + + public function refreshSongs() + { + if ($this->roomSessionId) { + $this->loadSongs($this->roomSessionId); + } + } + protected function loadSongs(string $roomSessionId) + { + $this->playing = OrderedSong::forSession($roomSessionId)->playing()->get(); + $this->nextSong = OrderedSong::forSession($roomSessionId)->nextSong()->get(); + $this->finished = OrderedSong::forSession($roomSessionId)->finished()->get(); + } + public function render() + { + return view('livewire.pages.ordered-song-list', [ + 'playing' => $this->playing, + 'nextSong' => $this->nextSong, + 'finished' => $this->finished, + ]); + } +} diff --git a/app/Livewire/Pages/SearchSong.php b/app/Livewire/Pages/SearchSong.php new file mode 100644 index 0000000..feca84c --- /dev/null +++ b/app/Livewire/Pages/SearchSong.php @@ -0,0 +1,105 @@ +searchCategory = $searchCategory; + } + + /** + * 切換語言標籤 + */ + public function selectLanguage(string $lang): void + { + $this->selectedLanguage = $lang; + } + /** + * 搜尋歌手(透過 API) + */ + public function updatedArtistSearch() + { + $search = $this->artistSearch; + + if ($search) { + // 即時搜尋歌手,從資料庫查詢 + $this->artistOptions = \App\Models\Artist::query() + ->where('name', 'like', "{$search}%") + ->limit(100) + ->get(['id', 'name']) + ->toArray(); + } else { + $this->artistOptions = []; + } + } + public function addArtist($id, $name) + { + $this->selectedArtists[$id] = $name; + $this->artistSearch = ''; // 清空搜尋框 + $this->artistOptions = []; + } + + public function removeArtist($id) + { + unset($this->selectedArtists[$id]); + } + + /** + * 點歌 + */ + public function orderSong(int $songId): void + { + // TODO: 加入已點歌曲邏輯,例如: + // auth()->user()->room->addSong($songId); + + $this->dispatchBrowserEvent('notify', [ + 'message' => '已加入已點歌曲' + ]); + } + + /** + * 取得歌曲清單 + */ + protected function loadSongs() + { + return SongLibraryCache::query() + ->when($this->search, fn($q) => $q->where('song_name', 'like', "{$this->search}%")) + ->when($this->selectedLanguage, fn($q) => $q->where('language_name', $this->selectedLanguage)) + ->when($this->selectedArtists, fn ($q) => $q->whereHas('artists', fn ($q2) => $q2->whereIn('id', array_keys($this->selectedArtists)))) + ->when($this->searchCategory === 'New', fn($q) => $q->orderByDesc('add_date')) + ->when($this->searchCategory === 'Hot', fn($q) => $q->orderByDesc('song_counts'), fn($q) => $q->orderByDesc('song_id')) + //->take($this->search || $this->artistSearch ? 100 : 1000) + ->take(1000) + ->get(); + } + + /** + * Render + */ + public function render() + { + $songs = $this->loadSongs(); + + return view('livewire.pages.search-song', [ + 'songs' => $songs, + 'languages' => \App\Enums\SongLanguageType::options(), + 'selectedLanguage' => $this->selectedLanguage, + ]); + } +} \ No newline at end of file diff --git a/app/Livewire/Pages/SoundControl.php b/app/Livewire/Pages/SoundControl.php new file mode 100644 index 0000000..e5a570f --- /dev/null +++ b/app/Livewire/Pages/SoundControl.php @@ -0,0 +1,42 @@ +'音控-01.jpg', 'action'=>'pause'], + ['img'=>'音控-02.jpg', 'action'=>'volume_up'], + ['img'=>'音控-04.jpg', 'action'=>'mic_up'], + ['img'=>'音控-06.jpg', 'action'=>'mute'], + ['img'=>'音控-03.jpg', 'action'=>'volume_down'], + ['img'=>'音控-05.jpg', 'action'=>'mic_down'], + ['img'=>'音控-07.jpg', 'action'=>'original_song'], + ['img'=>'音控-08.jpg', 'action'=>'service'], + ['img'=>'音控-09.jpg', 'action'=>'replay'], + ['img'=>'音控-11.jpg', 'action'=>'male_key'], + ['img'=>'音控-12.jpg', 'action'=>'female_key'], + ['img'=>'音控-10.jpg', 'action'=>'cut'], + ['img'=>'音控-15.jpg', 'action'=>'lower_key'], + ['img'=>'音控-14.jpg', 'action'=>'standard_key'], + ['img'=>'音控-13.jpg', 'action'=>'raise_key'], + ]; + + public function sendVolumeControl(string $action) + { + // 這裡可以加你的 API 或邏輯 + // 範例:發送到後台控制音量 + info("Sound control action: ".$action); + + $this->dispatchBrowserEvent('notify', [ + 'message' => "已執行操作: {$action}" + ]); + } + + public function render() + { + return view('livewire.pages.sound-control'); + } +} diff --git a/app/Livewire/Tables/SongLibraryCacheTable.php b/app/Livewire/Tables/SongLibraryCacheTable.php deleted file mode 100644 index 632c121..0000000 --- a/app/Livewire/Tables/SongLibraryCacheTable.php +++ /dev/null @@ -1,121 +0,0 @@ - 'outside']); - - } - - public function setUp(): array - { - - $actions = []; - - $header = PowerGrid::header() - ->withoutLoading() - ->showToggleColumns(); - - $header->includeViewOnTop('livewire.headers.song-library-cache'); - - $actions[]=$header; - $actions[]=PowerGrid::footer()->showPerPage()->showRecordCount(); - return $actions; - } - - public function datasource(): Builder - { - return SongLibraryCache::query()->orderBy('song_id'); - } - - public function relationSearch(): array - { - return []; - } - - public function fields(): PowerGridFields - { - return PowerGrid::fields() - ->add('song_id') - ->add('song_name') - ->add('song_simplified') - ->add('phonetic_abbr') - ->add('pinyin_abbr') - ->add('strokes_abbr') - ->add('song_number') - ->add('artistA') - ->add('artistB') - ->add('artistA_simplified') - ->add('artistB_simplified') - ->add('artistA_category') - ->add('artistB_category') - ->add('artist_category') - ->add('song_filename') - ->add('song_category') - ->add('language_name') - ->add('add_date_formatted', fn (SongLibraryCache $model) => Carbon::parse($model->add_date)->format('Y-m-d')) - ->add('situation') - ->add('vocal') - ->add('db_change') - ->add('song_counts') - ->add('updated_at_formatted', fn (SongLibraryCache $model) => Carbon::parse($model->updated_at)->format('Y-m-d H:i:s')); - } - - public function columns(): array - { - $column=[]; - $column[]=Column::make(__('song-library-cache.id'), 'song_id'); - $column[]=Column::make(__('song-library-cache.name'), 'song_name')->sortable()->searchable(); - $column[]=Column::make(__('song-library-cache.simplified'), 'song_simplified')->sortable()->searchable()->hidden(true, false); - $column[]=Column::make(__('song-library-cache.name.phinetic'), 'phonetic_abbr')->sortable()->searchable()->hidden(true, false); - $column[]=Column::make(__('song-library-cache.name.pinyin'), 'pinyin_abbr')->sortable()->searchable()->hidden(true, false); - $column[]=Column::make(__('song-library-cache.name.strokes'), 'strokes_abbr')->sortable()->searchable()->hidden(true, false); - $column[]=Column::make(__('song-library-cache.name_length'), 'song_number')->sortable()->searchable()->hidden(true, false); - $column[]=Column::make(__('song-library-cache.artists').'A', 'artistA')->sortable()->searchable(); - $column[]=Column::make(__('song-library-cache.artists').'B', 'artistB')->sortable()->searchable(); - $column[]=Column::make(__('song-library-cache.artists_simplified').'A', 'artistA_simplified')->sortable()->searchable()->hidden(true, false); - $column[]=Column::make(__('song-library-cache.artists_simplified').'B', 'artistB_simplified')->sortable()->searchable()->hidden(true, false); - $column[]=Column::make(__('song-library-cache.artists_category').'A', 'artistA_category')->sortable()->searchable()->hidden(true, false); - $column[]=Column::make(__('song-library-cache.artists_category').'B', 'artistB_category')->sortable()->searchable()->hidden(true, false); - $column[]=Column::make(__('song-library-cache.artists_category'), 'artist_category')->sortable()->searchable()->hidden(true, false); - $column[]=Column::make(__('song-library-cache.filename'), 'song_filename')->sortable()->searchable(); - $column[]=Column::make(__('song-library-cache.categorys'), 'song_category')->sortable()->searchable(); - $column[]=Column::make(__('song-library-cache.language_type'), 'language_name')->sortable()->searchable(); - $column[]=Column::make(__('song-library-cache.adddate'), 'add_date_formatted', 'add_date')->sortable(); - $column[]=Column::make(__('song-library-cache.situation'), 'situation')->sortable()->searchable(); - $column[]=Column::make(__('song-library-cache.vocal'), 'vocal')->sortable()->searchable(); - $column[]=Column::make(__('song-library-cache.db_change'), 'db_change')->sortable()->searchable(); - $column[]=Column::make(__('song-library-cache.counts'), 'song_counts')->sortable()->searchable(); - $column[]=Column::make(__('song-library-cache.updated_at'), 'updated_at_formatted', 'updated_at')->sortable()->hidden(true, false); - return $column; - } - - public function filters(): array - { - return [ - Filter::datepicker('add_date'), - Filter::datetimepicker('updated_at'), - ]; - } - -} diff --git a/app/Models/SongLibraryCache.php b/app/Models/SongLibraryCache.php index 4f208c2..1c42a8f 100644 --- a/app/Models/SongLibraryCache.php +++ b/app/Models/SongLibraryCache.php @@ -38,9 +38,20 @@ class SongLibraryCache extends Model 'song_counts', 'updated_at', ]; - + public function users(){ + return $this->belongsToMany(User::class, 'user_song')->withTimestamps(); + } public function str_artists_plus(): string { return ($this->artistB!=null) ? $this->artistA ." + ".$this->artistB :$this->artistA; } + public function artists(){ + return $this->belongsToMany(Artist::class); + } + public function str_categories(){ + return $this->categories->pluck('name')->implode(', '); + } + public function categories(){ + return $this->belongsToMany(SongCategory::class); + } } diff --git a/app/Models/User.php b/app/Models/User.php index 4324251..c16f5d2 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -41,7 +41,8 @@ class User extends Authenticatable 'birthday', 'gender', 'status', - 'password', + 'email_verified_at', + 'api_plain_token', ]; /** diff --git a/app/Services/MachineStatusForwarder.php b/app/Services/MachineStatusForwarder.php index fb7eded..a4dfac4 100644 --- a/app/Services/MachineStatusForwarder.php +++ b/app/Services/MachineStatusForwarder.php @@ -2,7 +2,6 @@ namespace App\Services; -use App\Models\User; use Illuminate\Support\Facades\Log; use Illuminate\Http\Client\Response; use App\Services\ApiClient; @@ -12,13 +11,14 @@ class MachineStatusForwarder protected string $externalUrl; protected string $endpoint; protected array $validated; - protected ?User $user = null; + protected string $apiPlainToken; - public function __construct(string $externalUrl, string $endpoint, array $validated) + public function __construct(string $externalUrl, string $endpoint, array $validated, string $token=null) { $this->externalUrl = $externalUrl; $this->endpoint = $endpoint; $this->validated = $validated; + $this->$apiPlainToken = $token; } public function forward(): ?Response @@ -30,11 +30,9 @@ class MachineStatusForwarder $mainDomain = implode('.', array_slice($hostParts, 1)); $mainDomainUrl = "{$parsed['scheme']}://{$mainDomain}"; - - $this->user = User::find(2); // 或用 dependency injection 把 User 帶進來 - - if ($this->user && $this->user->api_plain_token) { - $client = new ApiClient($mainDomainUrl, $this->user->api_plain_token); + $token = $this->api_plain_token ?? User::find(2)?->api_plain_token; + if ($token) { + $client = new ApiClient($mainDomainUrl, $token); $response = $client->post($this->endpoint, $this->validated); /* Log::info('✅ Machine status forwarded', [ diff --git a/composer.json b/composer.json index 74a75dd..f49974d 100644 --- a/composer.json +++ b/composer.json @@ -11,6 +11,7 @@ "laravel/framework": "^12.0", "laravel/sanctum": "^4.1", "laravel/tinker": "^2.10.1", + "league/flysystem-ftp": "^3.29", "livewire/livewire": "^3.4", "livewire/volt": "^1.7.0", "maatwebsite/excel": "^3.1", diff --git a/composer.lock b/composer.lock index c3a683b..8bdec59 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "63663f4c74cb0801a13c702e3d004b50", + "content-hash": "6f0cb97f4b8b9103f65e83415509ac86", "packages": [ { "name": "brick/math", @@ -216,16 +216,16 @@ }, { "name": "composer/semver", - "version": "3.4.3", + "version": "3.4.4", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12" + "reference": "198166618906cb2de69b95d7d47e5fa8aa1b2b95" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/4313d26ada5e0c4edfbd1dc481a92ff7bff91f12", - "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12", + "url": "https://api.github.com/repos/composer/semver/zipball/198166618906cb2de69b95d7d47e5fa8aa1b2b95", + "reference": "198166618906cb2de69b95d7d47e5fa8aa1b2b95", "shasum": "" }, "require": { @@ -277,7 +277,7 @@ "support": { "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.4.3" + "source": "https://github.com/composer/semver/tree/3.4.4" }, "funding": [ { @@ -287,13 +287,9 @@ { "url": "https://github.com/composer", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" } ], - "time": "2024-09-19T14:15:21+00:00" + "time": "2025-08-20T19:15:30+00:00" }, { "name": "darkaonline/l5-swagger", @@ -529,33 +525,32 @@ }, { "name": "doctrine/inflector", - "version": "2.0.10", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc" + "reference": "6d6c96277ea252fc1304627204c3d5e6e15faa3b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/5817d0659c5b50c9b950feb9af7b9668e2c436bc", - "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/6d6c96277ea252fc1304627204c3d5e6e15faa3b", + "reference": "6d6c96277ea252fc1304627204c3d5e6e15faa3b", "shasum": "" }, "require": { "php": "^7.2 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^11.0", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-phpunit": "^1.1", - "phpstan/phpstan-strict-rules": "^1.3", - "phpunit/phpunit": "^8.5 || ^9.5", - "vimeo/psalm": "^4.25 || ^5.4" + "doctrine/coding-standard": "^12.0 || ^13.0", + "phpstan/phpstan": "^1.12 || ^2.0", + "phpstan/phpstan-phpunit": "^1.4 || ^2.0", + "phpstan/phpstan-strict-rules": "^1.6 || ^2.0", + "phpunit/phpunit": "^8.5 || ^12.2" }, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" + "Doctrine\\Inflector\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -600,7 +595,7 @@ ], "support": { "issues": "https://github.com/doctrine/inflector/issues", - "source": "https://github.com/doctrine/inflector/tree/2.0.10" + "source": "https://github.com/doctrine/inflector/tree/2.1.0" }, "funding": [ { @@ -616,7 +611,7 @@ "type": "tidelift" } ], - "time": "2024-02-18T20:23:39+00:00" + "time": "2025-08-10T19:31:58+00:00" }, { "name": "doctrine/lexer", @@ -1023,22 +1018,22 @@ }, { "name": "guzzlehttp/guzzle", - "version": "7.9.3", + "version": "7.10.0", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "7b2f29fe81dc4da0ca0ea7d42107a0845946ea77" + "reference": "b51ac707cfa420b7bfd4e4d5e510ba8008e822b4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/7b2f29fe81dc4da0ca0ea7d42107a0845946ea77", - "reference": "7b2f29fe81dc4da0ca0ea7d42107a0845946ea77", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/b51ac707cfa420b7bfd4e4d5e510ba8008e822b4", + "reference": "b51ac707cfa420b7bfd4e4d5e510ba8008e822b4", "shasum": "" }, "require": { "ext-json": "*", - "guzzlehttp/promises": "^1.5.3 || ^2.0.3", - "guzzlehttp/psr7": "^2.7.0", + "guzzlehttp/promises": "^2.3", + "guzzlehttp/psr7": "^2.8", "php": "^7.2.5 || ^8.0", "psr/http-client": "^1.0", "symfony/deprecation-contracts": "^2.2 || ^3.0" @@ -1129,7 +1124,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.9.3" + "source": "https://github.com/guzzle/guzzle/tree/7.10.0" }, "funding": [ { @@ -1145,20 +1140,20 @@ "type": "tidelift" } ], - "time": "2025-03-27T13:37:11+00:00" + "time": "2025-08-23T22:36:01+00:00" }, { "name": "guzzlehttp/promises", - "version": "2.2.0", + "version": "2.3.0", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "7c69f28996b0a6920945dd20b3857e499d9ca96c" + "reference": "481557b130ef3790cf82b713667b43030dc9c957" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/7c69f28996b0a6920945dd20b3857e499d9ca96c", - "reference": "7c69f28996b0a6920945dd20b3857e499d9ca96c", + "url": "https://api.github.com/repos/guzzle/promises/zipball/481557b130ef3790cf82b713667b43030dc9c957", + "reference": "481557b130ef3790cf82b713667b43030dc9c957", "shasum": "" }, "require": { @@ -1166,7 +1161,7 @@ }, "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", - "phpunit/phpunit": "^8.5.39 || ^9.6.20" + "phpunit/phpunit": "^8.5.44 || ^9.6.25" }, "type": "library", "extra": { @@ -1212,7 +1207,7 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/2.2.0" + "source": "https://github.com/guzzle/promises/tree/2.3.0" }, "funding": [ { @@ -1228,20 +1223,20 @@ "type": "tidelift" } ], - "time": "2025-03-27T13:27:01+00:00" + "time": "2025-08-22T14:34:08+00:00" }, { "name": "guzzlehttp/psr7", - "version": "2.7.1", + "version": "2.8.0", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "c2270caaabe631b3b44c85f99e5a04bbb8060d16" + "reference": "21dc724a0583619cd1652f673303492272778051" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/c2270caaabe631b3b44c85f99e5a04bbb8060d16", - "reference": "c2270caaabe631b3b44c85f99e5a04bbb8060d16", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/21dc724a0583619cd1652f673303492272778051", + "reference": "21dc724a0583619cd1652f673303492272778051", "shasum": "" }, "require": { @@ -1257,7 +1252,7 @@ "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", "http-interop/http-factory-tests": "0.9.0", - "phpunit/phpunit": "^8.5.39 || ^9.6.20" + "phpunit/phpunit": "^8.5.44 || ^9.6.25" }, "suggest": { "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" @@ -1328,7 +1323,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.7.1" + "source": "https://github.com/guzzle/psr7/tree/2.8.0" }, "funding": [ { @@ -1344,20 +1339,20 @@ "type": "tidelift" } ], - "time": "2025-03-27T12:30:47+00:00" + "time": "2025-08-23T21:21:41+00:00" }, { "name": "guzzlehttp/uri-template", - "version": "v1.0.4", + "version": "v1.0.5", "source": { "type": "git", "url": "https://github.com/guzzle/uri-template.git", - "reference": "30e286560c137526eccd4ce21b2de477ab0676d2" + "reference": "4f4bbd4e7172148801e76e3decc1e559bdee34e1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/uri-template/zipball/30e286560c137526eccd4ce21b2de477ab0676d2", - "reference": "30e286560c137526eccd4ce21b2de477ab0676d2", + "url": "https://api.github.com/repos/guzzle/uri-template/zipball/4f4bbd4e7172148801e76e3decc1e559bdee34e1", + "reference": "4f4bbd4e7172148801e76e3decc1e559bdee34e1", "shasum": "" }, "require": { @@ -1366,7 +1361,7 @@ }, "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", - "phpunit/phpunit": "^8.5.36 || ^9.6.15", + "phpunit/phpunit": "^8.5.44 || ^9.6.25", "uri-template/tests": "1.0.0" }, "type": "library", @@ -1414,7 +1409,7 @@ ], "support": { "issues": "https://github.com/guzzle/uri-template/issues", - "source": "https://github.com/guzzle/uri-template/tree/v1.0.4" + "source": "https://github.com/guzzle/uri-template/tree/v1.0.5" }, "funding": [ { @@ -1430,20 +1425,20 @@ "type": "tidelift" } ], - "time": "2025-02-03T10:55:03+00:00" + "time": "2025-08-22T14:27:06+00:00" }, { "name": "laravel/framework", - "version": "v12.19.3", + "version": "v12.26.3", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "4e6ec689ef704bb4bd282f29d9dd658dfb4fb262" + "reference": "1a8e961a1801794c36c243bb610210d0a2bd61cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/4e6ec689ef704bb4bd282f29d9dd658dfb4fb262", - "reference": "4e6ec689ef704bb4bd282f29d9dd658dfb4fb262", + "url": "https://api.github.com/repos/laravel/framework/zipball/1a8e961a1801794c36c243bb610210d0a2bd61cb", + "reference": "1a8e961a1801794c36c243bb610210d0a2bd61cb", "shasum": "" }, "require": { @@ -1483,7 +1478,9 @@ "symfony/http-kernel": "^7.2.0", "symfony/mailer": "^7.2.0", "symfony/mime": "^7.2.0", - "symfony/polyfill-php83": "^1.31", + "symfony/polyfill-php83": "^1.33", + "symfony/polyfill-php84": "^1.33", + "symfony/polyfill-php85": "^1.33", "symfony/process": "^7.2.0", "symfony/routing": "^7.2.0", "symfony/uid": "^7.2.0", @@ -1551,7 +1548,7 @@ "league/flysystem-read-only": "^3.25.1", "league/flysystem-sftp-v3": "^3.25.1", "mockery/mockery": "^1.6.10", - "orchestra/testbench-core": "^10.0.0", + "orchestra/testbench-core": "^10.6.0", "pda/pheanstalk": "^5.0.6|^7.0.0", "php-http/discovery": "^1.15", "phpstan/phpstan": "^2.0", @@ -1645,20 +1642,20 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2025-06-18T12:56:23+00:00" + "time": "2025-08-27T13:51:06+00:00" }, { "name": "laravel/prompts", - "version": "v0.3.5", + "version": "v0.3.6", "source": { "type": "git", "url": "https://github.com/laravel/prompts.git", - "reference": "57b8f7efe40333cdb925700891c7d7465325d3b1" + "reference": "86a8b692e8661d0fb308cec64f3d176821323077" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/prompts/zipball/57b8f7efe40333cdb925700891c7d7465325d3b1", - "reference": "57b8f7efe40333cdb925700891c7d7465325d3b1", + "url": "https://api.github.com/repos/laravel/prompts/zipball/86a8b692e8661d0fb308cec64f3d176821323077", + "reference": "86a8b692e8661d0fb308cec64f3d176821323077", "shasum": "" }, "require": { @@ -1702,22 +1699,22 @@ "description": "Add beautiful and user-friendly forms to your command-line applications.", "support": { "issues": "https://github.com/laravel/prompts/issues", - "source": "https://github.com/laravel/prompts/tree/v0.3.5" + "source": "https://github.com/laravel/prompts/tree/v0.3.6" }, - "time": "2025-02-11T13:34:40+00:00" + "time": "2025-07-07T14:17:42+00:00" }, { "name": "laravel/sanctum", - "version": "v4.1.1", + "version": "v4.2.0", "source": { "type": "git", "url": "https://github.com/laravel/sanctum.git", - "reference": "a360a6a1fd2400ead4eb9b6a9c1bb272939194f5" + "reference": "fd6df4f79f48a72992e8d29a9c0ee25422a0d677" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/a360a6a1fd2400ead4eb9b6a9c1bb272939194f5", - "reference": "a360a6a1fd2400ead4eb9b6a9c1bb272939194f5", + "url": "https://api.github.com/repos/laravel/sanctum/zipball/fd6df4f79f48a72992e8d29a9c0ee25422a0d677", + "reference": "fd6df4f79f48a72992e8d29a9c0ee25422a0d677", "shasum": "" }, "require": { @@ -1768,7 +1765,7 @@ "issues": "https://github.com/laravel/sanctum/issues", "source": "https://github.com/laravel/sanctum" }, - "time": "2025-04-23T13:03:38+00:00" + "time": "2025-07-09T19:45:24+00:00" }, { "name": "laravel/serializable-closure", @@ -1899,16 +1896,16 @@ }, { "name": "league/commonmark", - "version": "2.7.0", + "version": "2.7.1", "source": { "type": "git", "url": "https://github.com/thephpleague/commonmark.git", - "reference": "6fbb36d44824ed4091adbcf4c7d4a3923cdb3405" + "reference": "10732241927d3971d28e7ea7b5712721fa2296ca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/6fbb36d44824ed4091adbcf4c7d4a3923cdb3405", - "reference": "6fbb36d44824ed4091adbcf4c7d4a3923cdb3405", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/10732241927d3971d28e7ea7b5712721fa2296ca", + "reference": "10732241927d3971d28e7ea7b5712721fa2296ca", "shasum": "" }, "require": { @@ -1937,7 +1934,7 @@ "symfony/process": "^5.4 | ^6.0 | ^7.0", "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0 | ^7.0", "unleashedtech/php-coding-standard": "^3.1.1", - "vimeo/psalm": "^4.24.0 || ^5.0.0" + "vimeo/psalm": "^4.24.0 || ^5.0.0 || ^6.0.0" }, "suggest": { "symfony/yaml": "v2.3+ required if using the Front Matter extension" @@ -2002,7 +1999,7 @@ "type": "tidelift" } ], - "time": "2025-05-05T12:20:28+00:00" + "time": "2025-07-20T12:47:49+00:00" }, { "name": "league/config", @@ -2088,16 +2085,16 @@ }, { "name": "league/flysystem", - "version": "3.29.1", + "version": "3.30.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "edc1bb7c86fab0776c3287dbd19b5fa278347319" + "reference": "2203e3151755d874bb2943649dae1eb8533ac93e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/edc1bb7c86fab0776c3287dbd19b5fa278347319", - "reference": "edc1bb7c86fab0776c3287dbd19b5fa278347319", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/2203e3151755d874bb2943649dae1eb8533ac93e", + "reference": "2203e3151755d874bb2943649dae1eb8533ac93e", "shasum": "" }, "require": { @@ -2121,13 +2118,13 @@ "composer/semver": "^3.0", "ext-fileinfo": "*", "ext-ftp": "*", - "ext-mongodb": "^1.3", + "ext-mongodb": "^1.3|^2", "ext-zip": "*", "friendsofphp/php-cs-fixer": "^3.5", "google/cloud-storage": "^1.23", "guzzlehttp/psr7": "^2.6", "microsoft/azure-storage-blob": "^1.1", - "mongodb/mongodb": "^1.2", + "mongodb/mongodb": "^1.2|^2", "phpseclib/phpseclib": "^3.0.36", "phpstan/phpstan": "^1.10", "phpunit/phpunit": "^9.5.11|^10.0", @@ -2165,22 +2162,72 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/3.29.1" + "source": "https://github.com/thephpleague/flysystem/tree/3.30.0" }, - "time": "2024-10-08T08:58:34+00:00" + "time": "2025-06-25T13:29:59+00:00" }, { - "name": "league/flysystem-local", + "name": "league/flysystem-ftp", "version": "3.29.0", "source": { "type": "git", - "url": "https://github.com/thephpleague/flysystem-local.git", - "reference": "e0e8d52ce4b2ed154148453d321e97c8e931bd27" + "url": "https://github.com/thephpleague/flysystem-ftp.git", + "reference": "17e8e422cb43a7fefa06ec8ddf36ee8ec936d138" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/e0e8d52ce4b2ed154148453d321e97c8e931bd27", - "reference": "e0e8d52ce4b2ed154148453d321e97c8e931bd27", + "url": "https://api.github.com/repos/thephpleague/flysystem-ftp/zipball/17e8e422cb43a7fefa06ec8ddf36ee8ec936d138", + "reference": "17e8e422cb43a7fefa06ec8ddf36ee8ec936d138", + "shasum": "" + }, + "require": { + "ext-ftp": "*", + "league/flysystem": "^3.0.0", + "league/mime-type-detection": "^1.0.0", + "php": "^8.0.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\Flysystem\\Ftp\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "FTP filesystem adapter for Flysystem.", + "keywords": [ + "Flysystem", + "file", + "files", + "filesystem", + "ftp", + "ftpd" + ], + "support": { + "source": "https://github.com/thephpleague/flysystem-ftp/tree/3.29.0" + }, + "time": "2024-06-12T09:46:12+00:00" + }, + { + "name": "league/flysystem-local", + "version": "3.30.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem-local.git", + "reference": "6691915f77c7fb69adfb87dcd550052dc184ee10" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/6691915f77c7fb69adfb87dcd550052dc184ee10", + "reference": "6691915f77c7fb69adfb87dcd550052dc184ee10", "shasum": "" }, "require": { @@ -2214,9 +2261,9 @@ "local" ], "support": { - "source": "https://github.com/thephpleague/flysystem-local/tree/3.29.0" + "source": "https://github.com/thephpleague/flysystem-local/tree/3.30.0" }, - "time": "2024-08-09T21:24:39+00:00" + "time": "2025-05-21T10:34:19+00:00" }, { "name": "league/mime-type-detection", @@ -2450,16 +2497,16 @@ }, { "name": "livewire/livewire", - "version": "v3.6.3", + "version": "v3.6.4", "source": { "type": "git", "url": "https://github.com/livewire/livewire.git", - "reference": "56aa1bb63a46e06181c56fa64717a7287e19115e" + "reference": "ef04be759da41b14d2d129e670533180a44987dc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/livewire/livewire/zipball/56aa1bb63a46e06181c56fa64717a7287e19115e", - "reference": "56aa1bb63a46e06181c56fa64717a7287e19115e", + "url": "https://api.github.com/repos/livewire/livewire/zipball/ef04be759da41b14d2d129e670533180a44987dc", + "reference": "ef04be759da41b14d2d129e670533180a44987dc", "shasum": "" }, "require": { @@ -2514,7 +2561,7 @@ "description": "A front-end framework for Laravel.", "support": { "issues": "https://github.com/livewire/livewire/issues", - "source": "https://github.com/livewire/livewire/tree/v3.6.3" + "source": "https://github.com/livewire/livewire/tree/v3.6.4" }, "funding": [ { @@ -2522,20 +2569,20 @@ "type": "github" } ], - "time": "2025-04-12T22:26:52+00:00" + "time": "2025-07-17T05:12:15+00:00" }, { "name": "livewire/volt", - "version": "v1.7.1", + "version": "v1.7.2", "source": { "type": "git", "url": "https://github.com/livewire/volt.git", - "reference": "ba3e609fd4c71f8b5783f024baf51715e48e93a6" + "reference": "91ba934e72bbd162442840862959ade24dbe728a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/livewire/volt/zipball/ba3e609fd4c71f8b5783f024baf51715e48e93a6", - "reference": "ba3e609fd4c71f8b5783f024baf51715e48e93a6", + "url": "https://api.github.com/repos/livewire/volt/zipball/91ba934e72bbd162442840862959ade24dbe728a", + "reference": "91ba934e72bbd162442840862959ade24dbe728a", "shasum": "" }, "require": { @@ -2594,20 +2641,20 @@ "issues": "https://github.com/livewire/volt/issues", "source": "https://github.com/livewire/volt" }, - "time": "2025-04-08T15:13:36+00:00" + "time": "2025-08-06T15:40:50+00:00" }, { "name": "maatwebsite/excel", - "version": "3.1.64", + "version": "3.1.67", "source": { "type": "git", "url": "https://github.com/SpartnerNL/Laravel-Excel.git", - "reference": "e25d44a2d91da9179cd2d7fec952313548597a79" + "reference": "e508e34a502a3acc3329b464dad257378a7edb4d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/SpartnerNL/Laravel-Excel/zipball/e25d44a2d91da9179cd2d7fec952313548597a79", - "reference": "e25d44a2d91da9179cd2d7fec952313548597a79", + "url": "https://api.github.com/repos/SpartnerNL/Laravel-Excel/zipball/e508e34a502a3acc3329b464dad257378a7edb4d", + "reference": "e508e34a502a3acc3329b464dad257378a7edb4d", "shasum": "" }, "require": { @@ -2615,7 +2662,7 @@ "ext-json": "*", "illuminate/support": "5.8.*||^6.0||^7.0||^8.0||^9.0||^10.0||^11.0||^12.0", "php": "^7.0||^8.0", - "phpoffice/phpspreadsheet": "^1.29.9", + "phpoffice/phpspreadsheet": "^1.30.0", "psr/simple-cache": "^1.0||^2.0||^3.0" }, "require-dev": { @@ -2663,7 +2710,7 @@ ], "support": { "issues": "https://github.com/SpartnerNL/Laravel-Excel/issues", - "source": "https://github.com/SpartnerNL/Laravel-Excel/tree/3.1.64" + "source": "https://github.com/SpartnerNL/Laravel-Excel/tree/3.1.67" }, "funding": [ { @@ -2675,26 +2722,26 @@ "type": "github" } ], - "time": "2025-02-24T11:12:50+00:00" + "time": "2025-08-26T09:13:16+00:00" }, { "name": "maennchen/zipstream-php", - "version": "3.1.2", + "version": "3.2.0", "source": { "type": "git", "url": "https://github.com/maennchen/ZipStream-PHP.git", - "reference": "aeadcf5c412332eb426c0f9b4485f6accba2a99f" + "reference": "9712d8fa4cdf9240380b01eb4be55ad8dcf71416" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/aeadcf5c412332eb426c0f9b4485f6accba2a99f", - "reference": "aeadcf5c412332eb426c0f9b4485f6accba2a99f", + "url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/9712d8fa4cdf9240380b01eb4be55ad8dcf71416", + "reference": "9712d8fa4cdf9240380b01eb4be55ad8dcf71416", "shasum": "" }, "require": { "ext-mbstring": "*", "ext-zlib": "*", - "php-64bit": "^8.2" + "php-64bit": "^8.3" }, "require-dev": { "brianium/paratest": "^7.7", @@ -2703,7 +2750,7 @@ "guzzlehttp/guzzle": "^7.5", "mikey179/vfsstream": "^1.6", "php-coveralls/php-coveralls": "^2.5", - "phpunit/phpunit": "^11.0", + "phpunit/phpunit": "^12.0", "vimeo/psalm": "^6.0" }, "suggest": { @@ -2745,7 +2792,7 @@ ], "support": { "issues": "https://github.com/maennchen/ZipStream-PHP/issues", - "source": "https://github.com/maennchen/ZipStream-PHP/tree/3.1.2" + "source": "https://github.com/maennchen/ZipStream-PHP/tree/3.2.0" }, "funding": [ { @@ -2753,7 +2800,7 @@ "type": "github" } ], - "time": "2025-01-27T12:07:53+00:00" + "time": "2025-07-17T11:15:13+00:00" }, { "name": "markbaker/complex", @@ -2967,16 +3014,16 @@ }, { "name": "nesbot/carbon", - "version": "3.10.0", + "version": "3.10.2", "source": { "type": "git", "url": "https://github.com/CarbonPHP/carbon.git", - "reference": "c1397390dd0a7e0f11660f0ae20f753d88c1f3d9" + "reference": "76b5c07b8a9d2025ed1610e14cef1f3fd6ad2c24" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/c1397390dd0a7e0f11660f0ae20f753d88c1f3d9", - "reference": "c1397390dd0a7e0f11660f0ae20f753d88c1f3d9", + "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/76b5c07b8a9d2025ed1610e14cef1f3fd6ad2c24", + "reference": "76b5c07b8a9d2025ed1610e14cef1f3fd6ad2c24", "shasum": "" }, "require": { @@ -3068,7 +3115,7 @@ "type": "tidelift" } ], - "time": "2025-06-12T10:24:28+00:00" + "time": "2025-08-02T09:36:06+00:00" }, { "name": "nette/schema", @@ -3134,29 +3181,29 @@ }, { "name": "nette/utils", - "version": "v4.0.7", + "version": "v4.0.8", "source": { "type": "git", "url": "https://github.com/nette/utils.git", - "reference": "e67c4061eb40b9c113b218214e42cb5a0dda28f2" + "reference": "c930ca4e3cf4f17dcfb03037703679d2396d2ede" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/e67c4061eb40b9c113b218214e42cb5a0dda28f2", - "reference": "e67c4061eb40b9c113b218214e42cb5a0dda28f2", + "url": "https://api.github.com/repos/nette/utils/zipball/c930ca4e3cf4f17dcfb03037703679d2396d2ede", + "reference": "c930ca4e3cf4f17dcfb03037703679d2396d2ede", "shasum": "" }, "require": { - "php": "8.0 - 8.4" + "php": "8.0 - 8.5" }, "conflict": { "nette/finder": "<3", "nette/schema": "<1.2.2" }, "require-dev": { - "jetbrains/phpstorm-attributes": "dev-master", + "jetbrains/phpstorm-attributes": "^1.2", "nette/tester": "^2.5", - "phpstan/phpstan": "^1.0", + "phpstan/phpstan-nette": "^2.0@stable", "tracy/tracy": "^2.9" }, "suggest": { @@ -3174,6 +3221,9 @@ } }, "autoload": { + "psr-4": { + "Nette\\": "src" + }, "classmap": [ "src/" ] @@ -3214,22 +3264,22 @@ ], "support": { "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/v4.0.7" + "source": "https://github.com/nette/utils/tree/v4.0.8" }, - "time": "2025-06-03T04:55:08+00:00" + "time": "2025-08-06T21:43:34+00:00" }, { "name": "nikic/php-parser", - "version": "v5.5.0", + "version": "v5.6.1", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "ae59794362fe85e051a58ad36b289443f57be7a9" + "reference": "f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/ae59794362fe85e051a58ad36b289443f57be7a9", - "reference": "ae59794362fe85e051a58ad36b289443f57be7a9", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2", + "reference": "f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2", "shasum": "" }, "require": { @@ -3248,7 +3298,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-master": "5.x-dev" } }, "autoload": { @@ -3272,9 +3322,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.5.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.6.1" }, - "time": "2025-05-31T08:24:38+00:00" + "time": "2025-08-13T20:13:15+00:00" }, { "name": "nunomaduro/termwind", @@ -3365,16 +3415,16 @@ }, { "name": "openspout/openspout", - "version": "v4.30.0", + "version": "v4.31.0", "source": { "type": "git", "url": "https://github.com/openspout/openspout.git", - "reference": "df9b0f4d229c37c3caa5a9252a6ad8a94efb0fb5" + "reference": "90dc2f7ce0b59084b78cd86ca7c5d367759496cd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/openspout/openspout/zipball/df9b0f4d229c37c3caa5a9252a6ad8a94efb0fb5", - "reference": "df9b0f4d229c37c3caa5a9252a6ad8a94efb0fb5", + "url": "https://api.github.com/repos/openspout/openspout/zipball/90dc2f7ce0b59084b78cd86ca7c5d367759496cd", + "reference": "90dc2f7ce0b59084b78cd86ca7c5d367759496cd", "shasum": "" }, "require": { @@ -3384,17 +3434,17 @@ "ext-libxml": "*", "ext-xmlreader": "*", "ext-zip": "*", - "php": "~8.3.0 || ~8.4.0" + "php": "~8.3.0 || ~8.4.0 || ~8.5.0" }, "require-dev": { "ext-zlib": "*", - "friendsofphp/php-cs-fixer": "^3.75.0", - "infection/infection": "^0.29.14", + "friendsofphp/php-cs-fixer": "^3.86.0", + "infection/infection": "^0.31.2", "phpbench/phpbench": "^1.4.1", - "phpstan/phpstan": "^2.1.16", - "phpstan/phpstan-phpunit": "^2.0.6", - "phpstan/phpstan-strict-rules": "^2.0.4", - "phpunit/phpunit": "^12.1.5" + "phpstan/phpstan": "^2.1.22", + "phpstan/phpstan-phpunit": "^2.0.7", + "phpstan/phpstan-strict-rules": "^2.0.6", + "phpunit/phpunit": "^12.3.7" }, "suggest": { "ext-iconv": "To handle non UTF-8 CSV files (if \"php-mbstring\" is not already installed or is too limited)", @@ -3442,7 +3492,7 @@ ], "support": { "issues": "https://github.com/openspout/openspout/issues", - "source": "https://github.com/openspout/openspout/tree/v4.30.0" + "source": "https://github.com/openspout/openspout/tree/v4.31.0" }, "funding": [ { @@ -3454,20 +3504,20 @@ "type": "github" } ], - "time": "2025-05-20T12:33:06+00:00" + "time": "2025-08-29T05:42:48+00:00" }, { "name": "phpoffice/phpspreadsheet", - "version": "1.29.10", + "version": "1.30.0", "source": { "type": "git", "url": "https://github.com/PHPOffice/PhpSpreadsheet.git", - "reference": "c80041b1628c4f18030407134fe88303661d4e4e" + "reference": "2f39286e0136673778b7a142b3f0d141e43d1714" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/c80041b1628c4f18030407134fe88303661d4e4e", - "reference": "c80041b1628c4f18030407134fe88303661d4e4e", + "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/2f39286e0136673778b7a142b3f0d141e43d1714", + "reference": "2f39286e0136673778b7a142b3f0d141e43d1714", "shasum": "" }, "require": { @@ -3558,22 +3608,22 @@ ], "support": { "issues": "https://github.com/PHPOffice/PhpSpreadsheet/issues", - "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/1.29.10" + "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/1.30.0" }, - "time": "2025-02-08T02:56:14+00:00" + "time": "2025-08-10T06:28:02+00:00" }, { "name": "phpoption/phpoption", - "version": "1.9.3", + "version": "1.9.4", "source": { "type": "git", "url": "https://github.com/schmittjoh/php-option.git", - "reference": "e3fac8b24f56113f7cb96af14958c0dd16330f54" + "reference": "638a154f8d4ee6a5cfa96d6a34dfbe0cffa9566d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/e3fac8b24f56113f7cb96af14958c0dd16330f54", - "reference": "e3fac8b24f56113f7cb96af14958c0dd16330f54", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/638a154f8d4ee6a5cfa96d6a34dfbe0cffa9566d", + "reference": "638a154f8d4ee6a5cfa96d6a34dfbe0cffa9566d", "shasum": "" }, "require": { @@ -3581,7 +3631,7 @@ }, "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", - "phpunit/phpunit": "^8.5.39 || ^9.6.20 || ^10.5.28" + "phpunit/phpunit": "^8.5.44 || ^9.6.25 || ^10.5.53 || ^11.5.34" }, "type": "library", "extra": { @@ -3623,7 +3673,7 @@ ], "support": { "issues": "https://github.com/schmittjoh/php-option/issues", - "source": "https://github.com/schmittjoh/php-option/tree/1.9.3" + "source": "https://github.com/schmittjoh/php-option/tree/1.9.4" }, "funding": [ { @@ -3635,20 +3685,20 @@ "type": "tidelift" } ], - "time": "2024-07-20T21:41:07+00:00" + "time": "2025-08-21T11:53:16+00:00" }, { "name": "power-components/livewire-powergrid", - "version": "v6.4.0", + "version": "v6.6.0", "source": { "type": "git", "url": "https://github.com/Power-Components/livewire-powergrid.git", - "reference": "0e1bf69694f585e376ea4b980e23a16225fb8ab9" + "reference": "051e5e420b9290574e812eedce099ec740132b34" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Power-Components/livewire-powergrid/zipball/0e1bf69694f585e376ea4b980e23a16225fb8ab9", - "reference": "0e1bf69694f585e376ea4b980e23a16225fb8ab9", + "url": "https://api.github.com/repos/Power-Components/livewire-powergrid/zipball/051e5e420b9290574e812eedce099ec740132b34", + "reference": "051e5e420b9290574e812eedce099ec740132b34", "shasum": "" }, "require": { @@ -3660,7 +3710,7 @@ "composer/composer": "^2.7.9", "laradumps/laradumps": "^3.2|^4.0", "larastan/larastan": "^2.0|^3.0", - "laravel/pint": "1.17", + "laravel/pint": "^1.24", "laravel/scout": "^10.11.3", "openspout/openspout": "^4.24.5", "orchestra/testbench": "^9.4|^10.0", @@ -3705,7 +3755,7 @@ "homepage": "https://github.com/power-components/livewire-powergrid", "support": { "issues": "https://github.com/Power-Components/livewire-powergrid/issues", - "source": "https://github.com/Power-Components/livewire-powergrid/tree/v6.4.0" + "source": "https://github.com/Power-Components/livewire-powergrid/tree/v6.6.0" }, "funding": [ { @@ -3713,7 +3763,7 @@ "type": "github" } ], - "time": "2025-06-03T20:40:44+00:00" + "time": "2025-08-28T14:29:32+00:00" }, { "name": "psr/cache", @@ -4178,16 +4228,16 @@ }, { "name": "psy/psysh", - "version": "v0.12.8", + "version": "v0.12.10", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "85057ceedee50c49d4f6ecaff73ee96adb3b3625" + "reference": "6e80abe6f2257121f1eb9a4c55bf29d921025b22" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/85057ceedee50c49d4f6ecaff73ee96adb3b3625", - "reference": "85057ceedee50c49d4f6ecaff73ee96adb3b3625", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/6e80abe6f2257121f1eb9a4c55bf29d921025b22", + "reference": "6e80abe6f2257121f1eb9a4c55bf29d921025b22", "shasum": "" }, "require": { @@ -4237,12 +4287,11 @@ "authors": [ { "name": "Justin Hileman", - "email": "justin@justinhileman.info", - "homepage": "http://justinhileman.com" + "email": "justin@justinhileman.info" } ], "description": "An interactive shell for modern PHP.", - "homepage": "http://psysh.org", + "homepage": "https://psysh.org", "keywords": [ "REPL", "console", @@ -4251,9 +4300,9 @@ ], "support": { "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/v0.12.8" + "source": "https://github.com/bobthecow/psysh/tree/v0.12.10" }, - "time": "2025-03-16T03:05:19+00:00" + "time": "2025-08-04T12:39:37+00:00" }, { "name": "ralouphie/getallheaders", @@ -4377,21 +4426,20 @@ }, { "name": "ramsey/uuid", - "version": "4.8.1", + "version": "4.9.0", "source": { "type": "git", "url": "https://github.com/ramsey/uuid.git", - "reference": "fdf4dd4e2ff1813111bd0ad58d7a1ddbb5b56c28" + "reference": "4e0e23cc785f0724a0e838279a9eb03f28b092a0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/fdf4dd4e2ff1813111bd0ad58d7a1ddbb5b56c28", - "reference": "fdf4dd4e2ff1813111bd0ad58d7a1ddbb5b56c28", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/4e0e23cc785f0724a0e838279a9eb03f28b092a0", + "reference": "4e0e23cc785f0724a0e838279a9eb03f28b092a0", "shasum": "" }, "require": { "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11 || ^0.12 || ^0.13", - "ext-json": "*", "php": "^8.0", "ramsey/collection": "^1.2 || ^2.0" }, @@ -4450,9 +4498,9 @@ ], "support": { "issues": "https://github.com/ramsey/uuid/issues", - "source": "https://github.com/ramsey/uuid/tree/4.8.1" + "source": "https://github.com/ramsey/uuid/tree/4.9.0" }, - "time": "2025-06-01T06:28:46+00:00" + "time": "2025-06-25T14:20:11+00:00" }, { "name": "spatie/laravel-activitylog", @@ -4547,16 +4595,16 @@ }, { "name": "spatie/laravel-package-tools", - "version": "1.92.4", + "version": "1.92.7", "source": { "type": "git", "url": "https://github.com/spatie/laravel-package-tools.git", - "reference": "d20b1969f836d210459b78683d85c9cd5c5f508c" + "reference": "f09a799850b1ed765103a4f0b4355006360c49a5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-package-tools/zipball/d20b1969f836d210459b78683d85c9cd5c5f508c", - "reference": "d20b1969f836d210459b78683d85c9cd5c5f508c", + "url": "https://api.github.com/repos/spatie/laravel-package-tools/zipball/f09a799850b1ed765103a4f0b4355006360c49a5", + "reference": "f09a799850b1ed765103a4f0b4355006360c49a5", "shasum": "" }, "require": { @@ -4596,7 +4644,7 @@ ], "support": { "issues": "https://github.com/spatie/laravel-package-tools/issues", - "source": "https://github.com/spatie/laravel-package-tools/tree/1.92.4" + "source": "https://github.com/spatie/laravel-package-tools/tree/1.92.7" }, "funding": [ { @@ -4604,20 +4652,20 @@ "type": "github" } ], - "time": "2025-04-11T15:27:14+00:00" + "time": "2025-07-17T15:46:43+00:00" }, { "name": "spatie/laravel-permission", - "version": "6.20.0", + "version": "6.21.0", "source": { "type": "git", "url": "https://github.com/spatie/laravel-permission.git", - "reference": "31c05679102c73f3b0d05790d2400182745a5615" + "reference": "6a118e8855dfffcd90403aab77bbf35a03db51b3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-permission/zipball/31c05679102c73f3b0d05790d2400182745a5615", - "reference": "31c05679102c73f3b0d05790d2400182745a5615", + "url": "https://api.github.com/repos/spatie/laravel-permission/zipball/6a118e8855dfffcd90403aab77bbf35a03db51b3", + "reference": "6a118e8855dfffcd90403aab77bbf35a03db51b3", "shasum": "" }, "require": { @@ -4679,7 +4727,7 @@ ], "support": { "issues": "https://github.com/spatie/laravel-permission/issues", - "source": "https://github.com/spatie/laravel-permission/tree/6.20.0" + "source": "https://github.com/spatie/laravel-permission/tree/6.21.0" }, "funding": [ { @@ -4687,20 +4735,20 @@ "type": "github" } ], - "time": "2025-06-05T07:33:07+00:00" + "time": "2025-07-23T16:08:05+00:00" }, { "name": "swagger-api/swagger-ui", - "version": "v5.24.2", + "version": "v5.28.0", "source": { "type": "git", "url": "https://github.com/swagger-api/swagger-ui.git", - "reference": "bf7b19dd23765d72b2027dee560a5b6dd737f4f2" + "reference": "01e23904eec6075e032e07f3235607b463d9ecf3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/swagger-api/swagger-ui/zipball/bf7b19dd23765d72b2027dee560a5b6dd737f4f2", - "reference": "bf7b19dd23765d72b2027dee560a5b6dd737f4f2", + "url": "https://api.github.com/repos/swagger-api/swagger-ui/zipball/01e23904eec6075e032e07f3235607b463d9ecf3", + "reference": "01e23904eec6075e032e07f3235607b463d9ecf3", "shasum": "" }, "type": "library", @@ -4746,9 +4794,9 @@ ], "support": { "issues": "https://github.com/swagger-api/swagger-ui/issues", - "source": "https://github.com/swagger-api/swagger-ui/tree/v5.24.2" + "source": "https://github.com/swagger-api/swagger-ui/tree/v5.28.0" }, - "time": "2025-06-16T12:50:04+00:00" + "time": "2025-08-28T13:24:41+00:00" }, { "name": "symfony/clock", @@ -4826,16 +4874,16 @@ }, { "name": "symfony/console", - "version": "v7.3.0", + "version": "v7.3.3", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "66c1440edf6f339fd82ed6c7caa76cb006211b44" + "reference": "cb0102a1c5ac3807cf3fdf8bea96007df7fdbea7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/66c1440edf6f339fd82ed6c7caa76cb006211b44", - "reference": "66c1440edf6f339fd82ed6c7caa76cb006211b44", + "url": "https://api.github.com/repos/symfony/console/zipball/cb0102a1c5ac3807cf3fdf8bea96007df7fdbea7", + "reference": "cb0102a1c5ac3807cf3fdf8bea96007df7fdbea7", "shasum": "" }, "require": { @@ -4900,7 +4948,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.3.0" + "source": "https://github.com/symfony/console/tree/v7.3.3" }, "funding": [ { @@ -4911,12 +4959,16 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-05-24T10:34:04+00:00" + "time": "2025-08-25T06:35:40+00:00" }, { "name": "symfony/css-selector", @@ -5052,16 +5104,16 @@ }, { "name": "symfony/error-handler", - "version": "v7.3.0", + "version": "v7.3.2", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "cf68d225bc43629de4ff54778029aee6dc191b83" + "reference": "0b31a944fcd8759ae294da4d2808cbc53aebd0c3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/cf68d225bc43629de4ff54778029aee6dc191b83", - "reference": "cf68d225bc43629de4ff54778029aee6dc191b83", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/0b31a944fcd8759ae294da4d2808cbc53aebd0c3", + "reference": "0b31a944fcd8759ae294da4d2808cbc53aebd0c3", "shasum": "" }, "require": { @@ -5109,7 +5161,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v7.3.0" + "source": "https://github.com/symfony/error-handler/tree/v7.3.2" }, "funding": [ { @@ -5120,25 +5172,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-05-29T07:19:49+00:00" + "time": "2025-07-07T08:17:57+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v7.3.0", + "version": "v7.3.3", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "497f73ac996a598c92409b44ac43b6690c4f666d" + "reference": "b7dc69e71de420ac04bc9ab830cf3ffebba48191" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/497f73ac996a598c92409b44ac43b6690c4f666d", - "reference": "497f73ac996a598c92409b44ac43b6690c4f666d", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/b7dc69e71de420ac04bc9ab830cf3ffebba48191", + "reference": "b7dc69e71de420ac04bc9ab830cf3ffebba48191", "shasum": "" }, "require": { @@ -5189,7 +5245,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v7.3.0" + "source": "https://github.com/symfony/event-dispatcher/tree/v7.3.3" }, "funding": [ { @@ -5200,12 +5256,16 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-04-22T09:11:45+00:00" + "time": "2025-08-13T11:49:31+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -5285,16 +5345,16 @@ }, { "name": "symfony/finder", - "version": "v7.3.0", + "version": "v7.3.2", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "ec2344cf77a48253bbca6939aa3d2477773ea63d" + "reference": "2a6614966ba1074fa93dae0bc804227422df4dfe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/ec2344cf77a48253bbca6939aa3d2477773ea63d", - "reference": "ec2344cf77a48253bbca6939aa3d2477773ea63d", + "url": "https://api.github.com/repos/symfony/finder/zipball/2a6614966ba1074fa93dae0bc804227422df4dfe", + "reference": "2a6614966ba1074fa93dae0bc804227422df4dfe", "shasum": "" }, "require": { @@ -5329,7 +5389,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v7.3.0" + "source": "https://github.com/symfony/finder/tree/v7.3.2" }, "funding": [ { @@ -5340,25 +5400,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-12-30T19:00:26+00:00" + "time": "2025-07-15T13:41:35+00:00" }, { "name": "symfony/http-foundation", - "version": "v7.3.0", + "version": "v7.3.2", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "4236baf01609667d53b20371486228231eb135fd" + "reference": "6877c122b3a6cc3695849622720054f6e6fa5fa6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/4236baf01609667d53b20371486228231eb135fd", - "reference": "4236baf01609667d53b20371486228231eb135fd", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/6877c122b3a6cc3695849622720054f6e6fa5fa6", + "reference": "6877c122b3a6cc3695849622720054f6e6fa5fa6", "shasum": "" }, "require": { @@ -5408,7 +5472,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v7.3.0" + "source": "https://github.com/symfony/http-foundation/tree/v7.3.2" }, "funding": [ { @@ -5419,25 +5483,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-05-12T14:48:23+00:00" + "time": "2025-07-10T08:47:49+00:00" }, { "name": "symfony/http-kernel", - "version": "v7.3.0", + "version": "v7.3.3", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "ac7b8e163e8c83dce3abcc055a502d4486051a9f" + "reference": "72c304de37e1a1cec6d5d12b81187ebd4850a17b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/ac7b8e163e8c83dce3abcc055a502d4486051a9f", - "reference": "ac7b8e163e8c83dce3abcc055a502d4486051a9f", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/72c304de37e1a1cec6d5d12b81187ebd4850a17b", + "reference": "72c304de37e1a1cec6d5d12b81187ebd4850a17b", "shasum": "" }, "require": { @@ -5522,7 +5590,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v7.3.0" + "source": "https://github.com/symfony/http-kernel/tree/v7.3.3" }, "funding": [ { @@ -5533,25 +5601,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-05-29T07:47:32+00:00" + "time": "2025-08-29T08:23:45+00:00" }, { "name": "symfony/mailer", - "version": "v7.3.0", + "version": "v7.3.3", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "0f375bbbde96ae8c78e4aa3e63aabd486e33364c" + "reference": "a32f3f45f1990db8c4341d5122a7d3a381c7e575" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/0f375bbbde96ae8c78e4aa3e63aabd486e33364c", - "reference": "0f375bbbde96ae8c78e4aa3e63aabd486e33364c", + "url": "https://api.github.com/repos/symfony/mailer/zipball/a32f3f45f1990db8c4341d5122a7d3a381c7e575", + "reference": "a32f3f45f1990db8c4341d5122a7d3a381c7e575", "shasum": "" }, "require": { @@ -5602,7 +5674,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v7.3.0" + "source": "https://github.com/symfony/mailer/tree/v7.3.3" }, "funding": [ { @@ -5613,25 +5685,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-04-04T09:51:09+00:00" + "time": "2025-08-13T11:49:31+00:00" }, { "name": "symfony/mime", - "version": "v7.3.0", + "version": "v7.3.2", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "0e7b19b2f399c31df0cdbe5d8cbf53f02f6cfcd9" + "reference": "e0a0f859148daf1edf6c60b398eb40bfc96697d1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/0e7b19b2f399c31df0cdbe5d8cbf53f02f6cfcd9", - "reference": "0e7b19b2f399c31df0cdbe5d8cbf53f02f6cfcd9", + "url": "https://api.github.com/repos/symfony/mime/zipball/e0a0f859148daf1edf6c60b398eb40bfc96697d1", + "reference": "e0a0f859148daf1edf6c60b398eb40bfc96697d1", "shasum": "" }, "require": { @@ -5686,7 +5762,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v7.3.0" + "source": "https://github.com/symfony/mime/tree/v7.3.2" }, "funding": [ { @@ -5697,16 +5773,20 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-02-19T08:51:26+00:00" + "time": "2025-07-15T13:41:35+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.32.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", @@ -5765,7 +5845,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.32.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.33.0" }, "funding": [ { @@ -5776,6 +5856,10 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" @@ -5785,16 +5869,16 @@ }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.32.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe" + "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", - "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/380872130d3a5dd3ace2f4010d95125fde5d5c70", + "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70", "shasum": "" }, "require": { @@ -5843,7 +5927,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.32.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.33.0" }, "funding": [ { @@ -5854,16 +5938,20 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-09T11:45:10+00:00" + "time": "2025-06-27T09:58:17+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.32.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", @@ -5926,7 +6014,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.32.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.33.0" }, "funding": [ { @@ -5937,6 +6025,10 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" @@ -5946,7 +6038,7 @@ }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.32.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", @@ -6007,7 +6099,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.32.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.33.0" }, "funding": [ { @@ -6018,6 +6110,10 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" @@ -6027,7 +6123,7 @@ }, { "name": "symfony/polyfill-mbstring", - "version": "v1.32.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", @@ -6088,7 +6184,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.32.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.33.0" }, "funding": [ { @@ -6099,6 +6195,10 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" @@ -6108,7 +6208,7 @@ }, { "name": "symfony/polyfill-php80", - "version": "v1.32.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", @@ -6168,7 +6268,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.32.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.33.0" }, "funding": [ { @@ -6179,6 +6279,10 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" @@ -6188,16 +6292,16 @@ }, { "name": "symfony/polyfill-php83", - "version": "v1.32.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php83.git", - "reference": "2fb86d65e2d424369ad2905e83b236a8805ba491" + "reference": "17f6f9a6b1735c0f163024d959f700cfbc5155e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/2fb86d65e2d424369ad2905e83b236a8805ba491", - "reference": "2fb86d65e2d424369ad2905e83b236a8805ba491", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/17f6f9a6b1735c0f163024d959f700cfbc5155e5", + "reference": "17f6f9a6b1735c0f163024d959f700cfbc5155e5", "shasum": "" }, "require": { @@ -6244,7 +6348,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php83/tree/v1.32.0" + "source": "https://github.com/symfony/polyfill-php83/tree/v1.33.0" }, "funding": [ { @@ -6255,16 +6359,180 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-09T11:45:10+00:00" + "time": "2025-07-08T02:45:35+00:00" + }, + { + "name": "symfony/polyfill-php84", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php84.git", + "reference": "d8ced4d875142b6a7426000426b8abc631d6b191" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/d8ced4d875142b6a7426000426b8abc631d6b191", + "reference": "d8ced4d875142b6a7426000426b8abc631d6b191", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php84\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.4+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php84/tree/v1.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-06-24T13:30:11+00:00" + }, + { + "name": "symfony/polyfill-php85", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php85.git", + "reference": "d4e5fcd4ab3d998ab16c0db48e6cbb9a01993f91" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php85/zipball/d4e5fcd4ab3d998ab16c0db48e6cbb9a01993f91", + "reference": "d4e5fcd4ab3d998ab16c0db48e6cbb9a01993f91", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php85\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.5+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php85/tree/v1.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-06-23T16:12:55+00:00" }, { "name": "symfony/polyfill-uuid", - "version": "v1.32.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-uuid.git", @@ -6323,7 +6591,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/polyfill-uuid/tree/v1.32.0" + "source": "https://github.com/symfony/polyfill-uuid/tree/v1.33.0" }, "funding": [ { @@ -6334,6 +6602,10 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" @@ -6343,16 +6615,16 @@ }, { "name": "symfony/process", - "version": "v7.3.0", + "version": "v7.3.3", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "40c295f2deb408d5e9d2d32b8ba1dd61e36f05af" + "reference": "32241012d521e2e8a9d713adb0812bb773b907f1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/40c295f2deb408d5e9d2d32b8ba1dd61e36f05af", - "reference": "40c295f2deb408d5e9d2d32b8ba1dd61e36f05af", + "url": "https://api.github.com/repos/symfony/process/zipball/32241012d521e2e8a9d713adb0812bb773b907f1", + "reference": "32241012d521e2e8a9d713adb0812bb773b907f1", "shasum": "" }, "require": { @@ -6384,7 +6656,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v7.3.0" + "source": "https://github.com/symfony/process/tree/v7.3.3" }, "funding": [ { @@ -6395,25 +6667,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-04-17T09:11:12+00:00" + "time": "2025-08-18T09:42:54+00:00" }, { "name": "symfony/routing", - "version": "v7.3.0", + "version": "v7.3.2", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "8e213820c5fea844ecea29203d2a308019007c15" + "reference": "7614b8ca5fa89b9cd233e21b627bfc5774f586e4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/8e213820c5fea844ecea29203d2a308019007c15", - "reference": "8e213820c5fea844ecea29203d2a308019007c15", + "url": "https://api.github.com/repos/symfony/routing/zipball/7614b8ca5fa89b9cd233e21b627bfc5774f586e4", + "reference": "7614b8ca5fa89b9cd233e21b627bfc5774f586e4", "shasum": "" }, "require": { @@ -6465,7 +6741,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v7.3.0" + "source": "https://github.com/symfony/routing/tree/v7.3.2" }, "funding": [ { @@ -6476,12 +6752,16 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-05-24T20:43:28+00:00" + "time": "2025-07-15T11:36:08+00:00" }, { "name": "symfony/service-contracts", @@ -6568,16 +6848,16 @@ }, { "name": "symfony/string", - "version": "v7.3.0", + "version": "v7.3.2", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "f3570b8c61ca887a9e2938e85cb6458515d2b125" + "reference": "42f505aff654e62ac7ac2ce21033818297ca89ca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/f3570b8c61ca887a9e2938e85cb6458515d2b125", - "reference": "f3570b8c61ca887a9e2938e85cb6458515d2b125", + "url": "https://api.github.com/repos/symfony/string/zipball/42f505aff654e62ac7ac2ce21033818297ca89ca", + "reference": "42f505aff654e62ac7ac2ce21033818297ca89ca", "shasum": "" }, "require": { @@ -6635,7 +6915,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.3.0" + "source": "https://github.com/symfony/string/tree/v7.3.2" }, "funding": [ { @@ -6646,25 +6926,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-04-20T20:19:01+00:00" + "time": "2025-07-10T08:47:49+00:00" }, { "name": "symfony/translation", - "version": "v7.3.0", + "version": "v7.3.3", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "4aba29076a29a3aa667e09b791e5f868973a8667" + "reference": "e0837b4cbcef63c754d89a4806575cada743a38d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/4aba29076a29a3aa667e09b791e5f868973a8667", - "reference": "4aba29076a29a3aa667e09b791e5f868973a8667", + "url": "https://api.github.com/repos/symfony/translation/zipball/e0837b4cbcef63c754d89a4806575cada743a38d", + "reference": "e0837b4cbcef63c754d89a4806575cada743a38d", "shasum": "" }, "require": { @@ -6731,7 +7015,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v7.3.0" + "source": "https://github.com/symfony/translation/tree/v7.3.3" }, "funding": [ { @@ -6742,12 +7026,16 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-05-29T07:19:49+00:00" + "time": "2025-08-01T21:02:37+00:00" }, { "name": "symfony/translation-contracts", @@ -6829,16 +7117,16 @@ }, { "name": "symfony/uid", - "version": "v7.3.0", + "version": "v7.3.1", "source": { "type": "git", "url": "https://github.com/symfony/uid.git", - "reference": "7beeb2b885cd584cd01e126c5777206ae4c3c6a3" + "reference": "a69f69f3159b852651a6bf45a9fdd149520525bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/uid/zipball/7beeb2b885cd584cd01e126c5777206ae4c3c6a3", - "reference": "7beeb2b885cd584cd01e126c5777206ae4c3c6a3", + "url": "https://api.github.com/repos/symfony/uid/zipball/a69f69f3159b852651a6bf45a9fdd149520525bb", + "reference": "a69f69f3159b852651a6bf45a9fdd149520525bb", "shasum": "" }, "require": { @@ -6883,7 +7171,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/uid/tree/v7.3.0" + "source": "https://github.com/symfony/uid/tree/v7.3.1" }, "funding": [ { @@ -6899,20 +7187,20 @@ "type": "tidelift" } ], - "time": "2025-05-24T14:28:13+00:00" + "time": "2025-06-27T19:55:54+00:00" }, { "name": "symfony/var-dumper", - "version": "v7.3.0", + "version": "v7.3.3", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "548f6760c54197b1084e1e5c71f6d9d523f2f78e" + "reference": "34d8d4c4b9597347306d1ec8eb4e1319b1e6986f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/548f6760c54197b1084e1e5c71f6d9d523f2f78e", - "reference": "548f6760c54197b1084e1e5c71f6d9d523f2f78e", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/34d8d4c4b9597347306d1ec8eb4e1319b1e6986f", + "reference": "34d8d4c4b9597347306d1ec8eb4e1319b1e6986f", "shasum": "" }, "require": { @@ -6924,7 +7212,6 @@ "symfony/console": "<6.4" }, "require-dev": { - "ext-iconv": "*", "symfony/console": "^6.4|^7.0", "symfony/http-kernel": "^6.4|^7.0", "symfony/process": "^6.4|^7.0", @@ -6967,7 +7254,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v7.3.0" + "source": "https://github.com/symfony/var-dumper/tree/v7.3.3" }, "funding": [ { @@ -6978,25 +7265,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-04-27T18:39:23+00:00" + "time": "2025-08-13T11:49:31+00:00" }, { "name": "symfony/yaml", - "version": "v7.3.0", + "version": "v7.3.3", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "cea40a48279d58dc3efee8112634cb90141156c2" + "reference": "d4f4a66866fe2451f61296924767280ab5732d9d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/cea40a48279d58dc3efee8112634cb90141156c2", - "reference": "cea40a48279d58dc3efee8112634cb90141156c2", + "url": "https://api.github.com/repos/symfony/yaml/zipball/d4f4a66866fe2451f61296924767280ab5732d9d", + "reference": "d4f4a66866fe2451f61296924767280ab5732d9d", "shasum": "" }, "require": { @@ -7039,7 +7330,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v7.3.0" + "source": "https://github.com/symfony/yaml/tree/v7.3.3" }, "funding": [ { @@ -7050,12 +7341,16 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-04-04T10:10:33+00:00" + "time": "2025-08-27T11:34:33+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", @@ -7523,16 +7818,16 @@ }, { "name": "zircote/swagger-php", - "version": "5.1.3", + "version": "5.3.2", "source": { "type": "git", "url": "https://github.com/zircote/swagger-php.git", - "reference": "b8ba6bd99805c0ae09a38d1b26c1c92820509bd0" + "reference": "d8fa9dc4c3b2fc8651ae780021bb9719b1e63d40" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zircote/swagger-php/zipball/b8ba6bd99805c0ae09a38d1b26c1c92820509bd0", - "reference": "b8ba6bd99805c0ae09a38d1b26c1c92820509bd0", + "url": "https://api.github.com/repos/zircote/swagger-php/zipball/d8fa9dc4c3b2fc8651ae780021bb9719b1e63d40", + "reference": "d8fa9dc4c3b2fc8651ae780021bb9719b1e63d40", "shasum": "" }, "require": { @@ -7603,9 +7898,9 @@ ], "support": { "issues": "https://github.com/zircote/swagger-php/issues", - "source": "https://github.com/zircote/swagger-php/tree/5.1.3" + "source": "https://github.com/zircote/swagger-php/tree/5.3.2" }, - "time": "2025-05-20T03:35:10+00:00" + "time": "2025-08-25T21:57:16+00:00" } ], "packages-dev": [ @@ -7674,16 +7969,16 @@ }, { "name": "filp/whoops", - "version": "2.18.3", + "version": "2.18.4", "source": { "type": "git", "url": "https://github.com/filp/whoops.git", - "reference": "59a123a3d459c5a23055802237cb317f609867e5" + "reference": "d2102955e48b9fd9ab24280a7ad12ed552752c4d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/59a123a3d459c5a23055802237cb317f609867e5", - "reference": "59a123a3d459c5a23055802237cb317f609867e5", + "url": "https://api.github.com/repos/filp/whoops/zipball/d2102955e48b9fd9ab24280a7ad12ed552752c4d", + "reference": "d2102955e48b9fd9ab24280a7ad12ed552752c4d", "shasum": "" }, "require": { @@ -7733,7 +8028,7 @@ ], "support": { "issues": "https://github.com/filp/whoops/issues", - "source": "https://github.com/filp/whoops/tree/2.18.3" + "source": "https://github.com/filp/whoops/tree/2.18.4" }, "funding": [ { @@ -7741,7 +8036,7 @@ "type": "github" } ], - "time": "2025-06-16T00:02:10+00:00" + "time": "2025-08-08T12:00:00+00:00" }, { "name": "hamcrest/hamcrest-php", @@ -7796,16 +8091,16 @@ }, { "name": "laravel/breeze", - "version": "v2.3.7", + "version": "v2.3.8", "source": { "type": "git", "url": "https://github.com/laravel/breeze.git", - "reference": "73149b5d84be3881b2fdda94b2ad289e7905c1a4" + "reference": "1a29c5792818bd4cddf70b5f743a227e02fbcfcd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/breeze/zipball/73149b5d84be3881b2fdda94b2ad289e7905c1a4", - "reference": "73149b5d84be3881b2fdda94b2ad289e7905c1a4", + "url": "https://api.github.com/repos/laravel/breeze/zipball/1a29c5792818bd4cddf70b5f743a227e02fbcfcd", + "reference": "1a29c5792818bd4cddf70b5f743a227e02fbcfcd", "shasum": "" }, "require": { @@ -7853,7 +8148,7 @@ "issues": "https://github.com/laravel/breeze/issues", "source": "https://github.com/laravel/breeze" }, - "time": "2025-06-17T13:07:20+00:00" + "time": "2025-07-18T18:49:59+00:00" }, { "name": "laravel/pail", @@ -7936,16 +8231,16 @@ }, { "name": "laravel/pint", - "version": "v1.22.1", + "version": "v1.24.0", "source": { "type": "git", "url": "https://github.com/laravel/pint.git", - "reference": "941d1927c5ca420c22710e98420287169c7bcaf7" + "reference": "0345f3b05f136801af8c339f9d16ef29e6b4df8a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/pint/zipball/941d1927c5ca420c22710e98420287169c7bcaf7", - "reference": "941d1927c5ca420c22710e98420287169c7bcaf7", + "url": "https://api.github.com/repos/laravel/pint/zipball/0345f3b05f136801af8c339f9d16ef29e6b4df8a", + "reference": "0345f3b05f136801af8c339f9d16ef29e6b4df8a", "shasum": "" }, "require": { @@ -7956,10 +8251,10 @@ "php": "^8.2.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^3.75.0", - "illuminate/view": "^11.44.7", - "larastan/larastan": "^3.4.0", - "laravel-zero/framework": "^11.36.1", + "friendsofphp/php-cs-fixer": "^3.82.2", + "illuminate/view": "^11.45.1", + "larastan/larastan": "^3.5.0", + "laravel-zero/framework": "^11.45.0", "mockery/mockery": "^1.6.12", "nunomaduro/termwind": "^2.3.1", "pestphp/pest": "^2.36.0" @@ -7969,6 +8264,9 @@ ], "type": "project", "autoload": { + "files": [ + "overrides/Runner/Parallel/ProcessFactory.php" + ], "psr-4": { "App\\": "app/", "Database\\Seeders\\": "database/seeders/", @@ -7998,20 +8296,20 @@ "issues": "https://github.com/laravel/pint/issues", "source": "https://github.com/laravel/pint" }, - "time": "2025-05-08T08:38:12+00:00" + "time": "2025-07-10T18:09:32+00:00" }, { "name": "laravel/sail", - "version": "v1.43.1", + "version": "v1.45.0", "source": { "type": "git", "url": "https://github.com/laravel/sail.git", - "reference": "3e7d899232a8c5e3ea4fc6dee7525ad583887e72" + "reference": "019a2933ff4a9199f098d4259713f9bc266a874e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/3e7d899232a8c5e3ea4fc6dee7525ad583887e72", - "reference": "3e7d899232a8c5e3ea4fc6dee7525ad583887e72", + "url": "https://api.github.com/repos/laravel/sail/zipball/019a2933ff4a9199f098d4259713f9bc266a874e", + "reference": "019a2933ff4a9199f098d4259713f9bc266a874e", "shasum": "" }, "require": { @@ -8061,7 +8359,7 @@ "issues": "https://github.com/laravel/sail/issues", "source": "https://github.com/laravel/sail" }, - "time": "2025-05-19T13:19:21+00:00" + "time": "2025-08-25T19:28:31+00:00" }, { "name": "mockery/mockery", @@ -8148,16 +8446,16 @@ }, { "name": "myclabs/deep-copy", - "version": "1.13.1", + "version": "1.13.4", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "1720ddd719e16cf0db4eb1c6eca108031636d46c" + "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/1720ddd719e16cf0db4eb1c6eca108031636d46c", - "reference": "1720ddd719e16cf0db4eb1c6eca108031636d46c", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/07d290f0c47959fd5eed98c95ee5602db07e0b6a", + "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a", "shasum": "" }, "require": { @@ -8196,7 +8494,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.13.1" + "source": "https://github.com/myclabs/DeepCopy/tree/1.13.4" }, "funding": [ { @@ -8204,20 +8502,20 @@ "type": "tidelift" } ], - "time": "2025-04-29T12:36:36+00:00" + "time": "2025-08-01T08:46:24+00:00" }, { "name": "nunomaduro/collision", - "version": "v8.8.1", + "version": "v8.8.2", "source": { "type": "git", "url": "https://github.com/nunomaduro/collision.git", - "reference": "44ccb82e3e21efb5446748d2a3c81a030ac22bd5" + "reference": "60207965f9b7b7a4ce15a0f75d57f9dadb105bdb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/44ccb82e3e21efb5446748d2a3c81a030ac22bd5", - "reference": "44ccb82e3e21efb5446748d2a3c81a030ac22bd5", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/60207965f9b7b7a4ce15a0f75d57f9dadb105bdb", + "reference": "60207965f9b7b7a4ce15a0f75d57f9dadb105bdb", "shasum": "" }, "require": { @@ -8303,7 +8601,7 @@ "type": "patreon" } ], - "time": "2025-06-11T01:04:21+00:00" + "time": "2025-06-25T02:12:12+00:00" }, { "name": "phar-io/manifest", @@ -8425,16 +8723,16 @@ }, { "name": "phpunit/php-code-coverage", - "version": "11.0.10", + "version": "11.0.11", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "1a800a7446add2d79cc6b3c01c45381810367d76" + "reference": "4f7722aa9a7b76aa775e2d9d4e95d1ea16eeeef4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/1a800a7446add2d79cc6b3c01c45381810367d76", - "reference": "1a800a7446add2d79cc6b3c01c45381810367d76", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/4f7722aa9a7b76aa775e2d9d4e95d1ea16eeeef4", + "reference": "4f7722aa9a7b76aa775e2d9d4e95d1ea16eeeef4", "shasum": "" }, "require": { @@ -8491,7 +8789,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/show" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/11.0.11" }, "funding": [ { @@ -8511,7 +8809,7 @@ "type": "tidelift" } ], - "time": "2025-06-18T08:56:18+00:00" + "time": "2025-08-27T14:37:49+00:00" }, { "name": "phpunit/php-file-iterator", @@ -8760,16 +9058,16 @@ }, { "name": "phpunit/phpunit", - "version": "11.5.23", + "version": "11.5.35", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "86ebcd8a3dbcd1857d88505109b2a2b376501cde" + "reference": "d341ee94ee5007b286fc7907b383aae6b5b3cc91" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/86ebcd8a3dbcd1857d88505109b2a2b376501cde", - "reference": "86ebcd8a3dbcd1857d88505109b2a2b376501cde", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/d341ee94ee5007b286fc7907b383aae6b5b3cc91", + "reference": "d341ee94ee5007b286fc7907b383aae6b5b3cc91", "shasum": "" }, "require": { @@ -8779,24 +9077,24 @@ "ext-mbstring": "*", "ext-xml": "*", "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.13.1", + "myclabs/deep-copy": "^1.13.4", "phar-io/manifest": "^2.0.4", "phar-io/version": "^3.2.1", "php": ">=8.2", - "phpunit/php-code-coverage": "^11.0.9", + "phpunit/php-code-coverage": "^11.0.11", "phpunit/php-file-iterator": "^5.1.0", "phpunit/php-invoker": "^5.0.1", "phpunit/php-text-template": "^4.0.1", "phpunit/php-timer": "^7.0.1", "sebastian/cli-parser": "^3.0.2", "sebastian/code-unit": "^3.0.3", - "sebastian/comparator": "^6.3.1", + "sebastian/comparator": "^6.3.2", "sebastian/diff": "^6.0.2", "sebastian/environment": "^7.2.1", "sebastian/exporter": "^6.3.0", "sebastian/global-state": "^7.0.2", "sebastian/object-enumerator": "^6.0.1", - "sebastian/type": "^5.1.2", + "sebastian/type": "^5.1.3", "sebastian/version": "^5.0.2", "staabm/side-effects-detector": "^1.0.5" }, @@ -8841,7 +9139,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.23" + "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.35" }, "funding": [ { @@ -8865,7 +9163,7 @@ "type": "tidelift" } ], - "time": "2025-06-13T05:47:49+00:00" + "time": "2025-08-28T05:13:54+00:00" }, { "name": "sebastian/cli-parser", @@ -9039,16 +9337,16 @@ }, { "name": "sebastian/comparator", - "version": "6.3.1", + "version": "6.3.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "24b8fbc2c8e201bb1308e7b05148d6ab393b6959" + "reference": "85c77556683e6eee4323e4c5468641ca0237e2e8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/24b8fbc2c8e201bb1308e7b05148d6ab393b6959", - "reference": "24b8fbc2c8e201bb1308e7b05148d6ab393b6959", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/85c77556683e6eee4323e4c5468641ca0237e2e8", + "reference": "85c77556683e6eee4323e4c5468641ca0237e2e8", "shasum": "" }, "require": { @@ -9107,15 +9405,27 @@ "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", "security": "https://github.com/sebastianbergmann/comparator/security/policy", - "source": "https://github.com/sebastianbergmann/comparator/tree/6.3.1" + "source": "https://github.com/sebastianbergmann/comparator/tree/6.3.2" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/comparator", + "type": "tidelift" } ], - "time": "2025-03-07T06:57:01+00:00" + "time": "2025-08-10T08:07:46+00:00" }, { "name": "sebastian/complexity", @@ -9632,23 +9942,23 @@ }, { "name": "sebastian/recursion-context", - "version": "6.0.2", + "version": "6.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "694d156164372abbd149a4b85ccda2e4670c0e16" + "reference": "f6458abbf32a6c8174f8f26261475dc133b3d9dc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/694d156164372abbd149a4b85ccda2e4670c0e16", - "reference": "694d156164372abbd149a4b85ccda2e4670c0e16", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/f6458abbf32a6c8174f8f26261475dc133b3d9dc", + "reference": "f6458abbf32a6c8174f8f26261475dc133b3d9dc", "shasum": "" }, "require": { "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^11.0" + "phpunit/phpunit": "^11.3" }, "type": "library", "extra": { @@ -9684,28 +9994,40 @@ "support": { "issues": "https://github.com/sebastianbergmann/recursion-context/issues", "security": "https://github.com/sebastianbergmann/recursion-context/security/policy", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/6.0.2" + "source": "https://github.com/sebastianbergmann/recursion-context/tree/6.0.3" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/recursion-context", + "type": "tidelift" } ], - "time": "2024-07-03T05:10:34+00:00" + "time": "2025-08-13T04:42:22+00:00" }, { "name": "sebastian/type", - "version": "5.1.2", + "version": "5.1.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "a8a7e30534b0eb0c77cd9d07e82de1a114389f5e" + "reference": "f77d2d4e78738c98d9a68d2596fe5e8fa380f449" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/a8a7e30534b0eb0c77cd9d07e82de1a114389f5e", - "reference": "a8a7e30534b0eb0c77cd9d07e82de1a114389f5e", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/f77d2d4e78738c98d9a68d2596fe5e8fa380f449", + "reference": "f77d2d4e78738c98d9a68d2596fe5e8fa380f449", "shasum": "" }, "require": { @@ -9741,15 +10063,27 @@ "support": { "issues": "https://github.com/sebastianbergmann/type/issues", "security": "https://github.com/sebastianbergmann/type/security/policy", - "source": "https://github.com/sebastianbergmann/type/tree/5.1.2" + "source": "https://github.com/sebastianbergmann/type/tree/5.1.3" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/type", + "type": "tidelift" } ], - "time": "2025-03-18T13:35:50+00:00" + "time": "2025-08-09T06:55:48+00:00" }, { "name": "sebastian/version", diff --git a/config/filesystems.php b/config/filesystems.php index 3d671bd..5ec803d 100644 --- a/config/filesystems.php +++ b/config/filesystems.php @@ -60,6 +60,18 @@ return [ 'report' => false, ], + 'ftp_test' => [ + 'driver' => 'ftp', + 'host' => env('FTP_HOST', '192.168.11.16'), + 'username' => env('FTP_USERNAME', 'your_username'), + 'password' => env('FTP_PASSWORD', 'your_password'), + 'port' => 21, + 'root' => '/', // 或指定資料夾 + 'passive' => true, + 'ssl' => false, + 'timeout' => 30, + ], + ], /* diff --git a/config/wireui.php b/config/wireui.php index 16637a6..cbc52dd 100644 --- a/config/wireui.php +++ b/config/wireui.php @@ -18,7 +18,7 @@ return [ | */ - 'prefix' => 'wireui:', + 'prefix' => null, /* |-------------------------------------------------------------------------- diff --git a/database/migrations/0001_01_01_000000_create_users_table.php b/database/migrations/0001_01_01_000000_create_users_table.php index b74937d..c0e3f58 100644 --- a/database/migrations/0001_01_01_000000_create_users_table.php +++ b/database/migrations/0001_01_01_000000_create_users_table.php @@ -20,18 +20,11 @@ return new class extends Migration $table->enum('gender', ['unset','male', 'female', 'other'])->default('unset'); // 性別 $table->tinyInteger('status')->default(0); // 啟動 $table->timestamp('email_verified_at')->nullable(); - $table->string('password'); $table->rememberToken(); $table->text('api_plain_token')->nullable(); $table->timestamps(); }); - Schema::create('password_reset_tokens', function (Blueprint $table) { - $table->string('email')->primary(); - $table->string('token'); - $table->timestamp('created_at')->nullable(); - }); - Schema::create('sessions', function (Blueprint $table) { $table->string('id')->primary(); $table->foreignId('user_id')->nullable()->index(); @@ -48,7 +41,6 @@ return new class extends Migration public function down(): void { Schema::dropIfExists('users'); - Schema::dropIfExists('password_reset_tokens'); Schema::dropIfExists('sessions'); } }; diff --git a/database/migrations/2025_04_20_095641_create_personal_access_tokens_table.php b/database/migrations/2025_04_20_095641_create_personal_access_tokens_table.php deleted file mode 100644 index e828ad8..0000000 --- a/database/migrations/2025_04_20_095641_create_personal_access_tokens_table.php +++ /dev/null @@ -1,33 +0,0 @@ -id(); - $table->morphs('tokenable'); - $table->string('name'); - $table->string('token', 64)->unique(); - $table->text('abilities')->nullable(); - $table->timestamp('last_used_at')->nullable(); - $table->timestamp('expires_at')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::dropIfExists('personal_access_tokens'); - } -}; diff --git a/database/migrations/2025_05_23_041606_create_song_categories_table.php b/database/migrations/2025_05_23_041606_create_song_categories_table.php new file mode 100644 index 0000000..d8558aa --- /dev/null +++ b/database/migrations/2025_05_23_041606_create_song_categories_table.php @@ -0,0 +1,29 @@ +id(); + $table->string('code')->unique(); + $table->string('name')->unique(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('song_categories'); + } +}; diff --git a/database/migrations/2025_05_23_044428_create_song_library_cache_song_category_table.php b/database/migrations/2025_05_23_044428_create_song_library_cache_song_category_table.php new file mode 100644 index 0000000..c370047 --- /dev/null +++ b/database/migrations/2025_05_23_044428_create_song_library_cache_song_category_table.php @@ -0,0 +1,28 @@ +unsignedBigInteger('song_library_cache_id'); + $table->unsignedBigInteger('song_category_id'); + $table->primary(['song_library_cache_id', 'song_category_id']); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('song_library_cache_song_category'); + } +}; diff --git a/database/migrations/2025_05_23_052656_create_artist_song_library_cache_table.php b/database/migrations/2025_05_23_052656_create_artist_song_library_cache_table.php new file mode 100644 index 0000000..2cd61be --- /dev/null +++ b/database/migrations/2025_05_23_052656_create_artist_song_library_cache_table.php @@ -0,0 +1,28 @@ +unsignedBigInteger('song_library_cache_song_id'); + $table->unsignedBigInteger('artist_id'); + $table->primary(['song_library_cache_song_id', 'artist_id']); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('artist_song_library_cache'); + } +}; diff --git a/database/seeders/CreateAdminUserSeeder.php b/database/seeders/CreateAdminUserSeeder.php new file mode 100644 index 0000000..2eba916 --- /dev/null +++ b/database/seeders/CreateAdminUserSeeder.php @@ -0,0 +1,34 @@ + 'admin' + ,'email' => 'admin@gmail.com' + ,'phone' => '0900000000' + ,'api_plain_token' => $token + ]); + + //$forwarder = new MachineStatusForwarder( + // externalUrl: config('services.backend.url'), + // endpoint: '/api/sync', + // validated: [], + // $token + //); + + //$forwarder->forward(); + } +} diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 642bfb1..2d6225d 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -3,7 +3,6 @@ namespace Database\Seeders; use Illuminate\Database\Seeder; -use App\Jobs\TransferSqliteTableJob; class DatabaseSeeder extends Seeder { @@ -12,8 +11,8 @@ class DatabaseSeeder extends Seeder */ public function run(): void { - (new TransferSqliteTableJob('database/User.data', false))->handle(); $this->call([ + CreateAdminUserSeeder::class, BroadcastTemplateSeeder::class, ]); } diff --git a/package-lock.json b/package-lock.json index 9d1111c..88c94a6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,5 +1,5 @@ { - "name": "html", + "name": "KTVCentral", "lockfileVersion": 3, "requires": true, "packages": { diff --git a/resources/css/app.css b/resources/css/app.css index aef7fd4..91cef48 100644 --- a/resources/css/app.css +++ b/resources/css/app.css @@ -6,3 +6,18 @@ @tailwind components; @tailwind utilities; +body { font-family: 'Roboto', sans-serif; margin: 0; padding: 0; background-color: #f4f4f4; } +.container { text-align: center; margin: 20px; } +.header { background: #D32F2F; padding: 10px 0; color: white; font-size: 24px; font-weight: 500; text-align: center; } +.banner { width: 100%; max-width: 600px; margin: 0 auto 20px; } +.banner img { width: 100%; height: auto; } +.content { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; padding: 10px 20px; max-width: 600px; margin: 0 auto; justify-content: center; } +@media (max-width: 600px) { .content { grid-template-columns: repeat(2, 1fr); gap: 10px; } } +@media (max-width: 400px) { .content { grid-template-columns: repeat(2, 1fr); gap: 8px; } .card { width: auto; max-width: 160px; } } +.card { width: 100%; max-width: 180px; margin: 0 auto; display: flex; justify-content: center; align-items: center; + background: linear-gradient(135deg, #FF4081, #FF4081); color: white; border-radius: 10px; text-align: center; + box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); overflow: hidden; cursor: pointer; } +.card:hover { transform: scale(1.05); } +.card img { width: 100%; height: auto; object-fit: contain; } +.section { display: none; } +.section.active { display: block; } diff --git a/resources/lang/zh-tw/enums.php b/resources/lang/zh-tw/enums.php index 9266a12..a0b8c18 100644 --- a/resources/lang/zh-tw/enums.php +++ b/resources/lang/zh-tw/enums.php @@ -15,6 +15,15 @@ return [ 'user.status.Active' => '正常', 'user.status.Suspended' => '停權', 'user.status.Deleting' => '刪除中', + 'LanguageType.Mandarin' => '國語', + 'LanguageType.Taiwanese' => '台語', + 'LanguageType.English' => '英語', + 'LanguageType.Japanese' => '日語', + 'LanguageType.Cantonese' => '粵語', + 'LanguageType.Korean' => '韓語', + 'LanguageType.Vietnamese' => '越語', + 'LanguageType.Hakka' => '客語', + 'LanguageType.Other' => '其他', 'room.status.Active' => '啟用中', 'room.status.Closed' => '待機', diff --git a/resources/views/clicked-song.blade.php b/resources/views/clicked-song.blade.php new file mode 100644 index 0000000..ca8899e --- /dev/null +++ b/resources/views/clicked-song.blade.php @@ -0,0 +1,10 @@ + + +
超級巨星 自助式KTV
+ +
+ + +
\ No newline at end of file diff --git a/resources/views/components/button/flat-card.blade.php b/resources/views/components/button/flat-card.blade.php new file mode 100644 index 0000000..b1846b7 --- /dev/null +++ b/resources/views/components/button/flat-card.blade.php @@ -0,0 +1,19 @@ +@props([ + 'image' => null, + 'href' => null, +]) + +@php +// 使用 Tailwind aspect-auto 保持圖片原始比例 +$classes = 'relative w-full rounded-lg overflow-hidden shadow-md hover:scale-105 transition-transform cursor-pointer'; +@endphp + +@if($href) + merge(['class' => $classes]) }}> + + +@else +
merge(['class' => $classes]) }}> + +
+@endif \ No newline at end of file diff --git a/resources/views/components/layouts/admin.blade.php b/resources/views/components/layouts/admin.blade.php deleted file mode 100644 index 14f4b2a..0000000 --- a/resources/views/components/layouts/admin.blade.php +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - {{ config('app.name', 'Laravel Admin') }} - - - - - - - @vite(['resources/css/app.css', 'resources/js/app.js']) - @livewireStyles - @wireUiScripts - - -
- - {{-- Sidebar --}} - - -
- - {{-- Page Heading --}} - @if (isset($header)) -
-
- {{ $header }} -
-
- @endif - - {{-- Page Content --}} -
- {{ $slot }} -
-
- -
- - @livewireScripts - @livewire('wire-elements-modal') - - - diff --git a/resources/views/components/layouts/app.blade.php b/resources/views/components/layouts/app.blade.php deleted file mode 100644 index fbf0e94..0000000 --- a/resources/views/components/layouts/app.blade.php +++ /dev/null @@ -1,9 +0,0 @@ -@if(auth()->user()->hasRole('User')) - - {{ $slot }} - -@else - - {{ $slot }} - -@endif \ No newline at end of file diff --git a/resources/views/components/layouts/user.blade.php b/resources/views/components/layouts/user.blade.php deleted file mode 100644 index 9596f03..0000000 --- a/resources/views/components/layouts/user.blade.php +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - {{ config('app.name', 'Laravel') }} - - - - - - - @vite(['resources/css/app.css', 'resources/js/app.js']) - @livewireStyles - @wireUiScripts - - -
- - - - @if (isset($header)) -
-
- {{ $header }} -
-
- @endif - - -
- {{ $slot }} -
-
- @livewireScripts - @livewire('wire-elements-modal') - - diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php index 90184d9..2329a7a 100644 --- a/resources/views/layouts/app.blade.php +++ b/resources/views/layouts/app.blade.php @@ -1,39 +1,38 @@ - - - - + + + + - {{ config('app.name', 'Laravel') }} + {{ config('app.name', 'Laravel') }} - - - + + + - - @vite(['resources/css/app.css', 'resources/js/app.js']) - @livewireStyles - @wireUiScripts - - -
- + + @vite(['resources/css/app.css', 'resources/js/app.js']) + @livewireStyles + @wireUiScripts + + + - - @if (isset($header)) -
-
- {{ $header }} -
-
- @endif +
+ + @if (isset($header)) +
+ {{ $header }} +
+ @endif - -
- {{ $slot }} -
-
- @livewireScripts - + +
+ {{ $slot }} +
+
+ @livewireScripts + @livewire('wire-elements-modal') + diff --git a/resources/views/livewire/admin/activity-log.blade.php b/resources/views/livewire/admin/activity-log.blade.php index 0dd49ab..6e59004 100644 --- a/resources/views/livewire/admin/activity-log.blade.php +++ b/resources/views/livewire/admin/activity-log.blade.php @@ -1,3 +1,6 @@ - + + +
超級巨星 自助式KTV
+
-
\ No newline at end of file + \ No newline at end of file diff --git a/resources/views/livewire/admin/broadcast-templates.blade.php b/resources/views/livewire/admin/broadcast-templates.blade.php index 4163499..14888d2 100644 --- a/resources/views/livewire/admin/broadcast-templates.blade.php +++ b/resources/views/livewire/admin/broadcast-templates.blade.php @@ -1,7 +1,10 @@ - - + + +
超級巨星 自助式KTV
+
+ -
\ No newline at end of file + \ No newline at end of file diff --git a/resources/views/livewire/admin/dashboard.blade.php b/resources/views/livewire/admin/dashboard.blade.php deleted file mode 100644 index ad9a90f..0000000 --- a/resources/views/livewire/admin/dashboard.blade.php +++ /dev/null @@ -1,3 +0,0 @@ -
- {{-- To attain knowledge, add things every day; To attain wisdom, subtract things every day. --}} -
diff --git a/resources/views/livewire/admin/machine-status.blade.php b/resources/views/livewire/admin/machine-status.blade.php index 2b6603b..8645070 100644 --- a/resources/views/livewire/admin/machine-status.blade.php +++ b/resources/views/livewire/admin/machine-status.blade.php @@ -1,3 +1,6 @@ - + + +
超級巨星 自助式KTV
+
-
\ No newline at end of file + \ No newline at end of file diff --git a/resources/views/livewire/admin/room-grids.blade.php b/resources/views/livewire/admin/room-grids.blade.php index 4d3f53d..1944aed 100644 --- a/resources/views/livewire/admin/room-grids.blade.php +++ b/resources/views/livewire/admin/room-grids.blade.php @@ -1,4 +1,6 @@ - - + + +
超級巨星 自助式KTV
+
-
\ No newline at end of file + \ No newline at end of file diff --git a/resources/views/livewire/admin/room-status-log.blade.php b/resources/views/livewire/admin/room-status-log.blade.php index ee6b443..c97c313 100644 --- a/resources/views/livewire/admin/room-status-log.blade.php +++ b/resources/views/livewire/admin/room-status-log.blade.php @@ -1,3 +1,6 @@ - + + +
超級巨星 自助式KTV
+
-
\ No newline at end of file + \ No newline at end of file diff --git a/resources/views/livewire/admin/rooms.blade.php b/resources/views/livewire/admin/rooms.blade.php index 9a0ed68..9ca7320 100644 --- a/resources/views/livewire/admin/rooms.blade.php +++ b/resources/views/livewire/admin/rooms.blade.php @@ -1,7 +1,10 @@ - - + + +
超級巨星 自助式KTV
+
+ -
\ No newline at end of file + \ No newline at end of file diff --git a/resources/views/livewire/admin/song-library-cache.blade.php b/resources/views/livewire/admin/song-library-cache.blade.php deleted file mode 100644 index 1693021..0000000 --- a/resources/views/livewire/admin/song-library-cache.blade.php +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/resources/views/livewire/admin/text-ads.blade.php b/resources/views/livewire/admin/text-ads.blade.php index 112ecea..81cd055 100644 --- a/resources/views/livewire/admin/text-ads.blade.php +++ b/resources/views/livewire/admin/text-ads.blade.php @@ -1,7 +1,10 @@ - - + + +
超級巨星 自助式KTV
+
+ -
\ No newline at end of file + \ No newline at end of file diff --git a/resources/views/livewire/admin/users.blade.php b/resources/views/livewire/admin/users.blade.php index f7c030a..58a9a37 100644 --- a/resources/views/livewire/admin/users.blade.php +++ b/resources/views/livewire/admin/users.blade.php @@ -1,3 +1,6 @@ - + + +
超級巨星 自助式KTV
+
-
\ No newline at end of file + \ No newline at end of file diff --git a/resources/views/livewire/forms/broadcast-template-form.blade.php b/resources/views/livewire/forms/broadcast-template-form.blade.php index 3ffb545..92d12f3 100644 --- a/resources/views/livewire/forms/broadcast-template-form.blade.php +++ b/resources/views/livewire/forms/broadcast-template-form.blade.php @@ -1,7 +1,7 @@ - +
- - + - +
- - + +
-
+ \ No newline at end of file diff --git a/resources/views/livewire/forms/broadcast-test-form.blade.php b/resources/views/livewire/forms/broadcast-test-form.blade.php index 0ab7f0f..a9e26fc 100644 --- a/resources/views/livewire/forms/broadcast-test-form.blade.php +++ b/resources/views/livewire/forms/broadcast-test-form.blade.php @@ -1,6 +1,6 @@
- - +
@foreach($variables as $varName => $value) -
- - + +
- +
\ No newline at end of file diff --git a/resources/views/livewire/forms/room-form.blade.php b/resources/views/livewire/forms/room-form.blade.php index f2579a6..a3a9946 100644 --- a/resources/views/livewire/forms/room-form.blade.php +++ b/resources/views/livewire/forms/room-form.blade.php @@ -1,7 +1,7 @@ - +
- - + - +
- - + +
-
+ \ No newline at end of file diff --git a/resources/views/livewire/forms/text-ad-test-form.blade.php b/resources/views/livewire/forms/text-ad-test-form.blade.php index bd83aa5..cbab431 100644 --- a/resources/views/livewire/forms/text-ad-test-form.blade.php +++ b/resources/views/livewire/forms/text-ad-test-form.blade.php @@ -1,6 +1,6 @@
- - +
- - + +
-
+
\ No newline at end of file diff --git a/resources/views/livewire/forms/text-ads-form.blade.php b/resources/views/livewire/forms/text-ads-form.blade.php index 27094b8..6991a6d 100644 --- a/resources/views/livewire/forms/text-ads-form.blade.php +++ b/resources/views/livewire/forms/text-ads-form.blade.php @@ -1,7 +1,7 @@ - +
- - + - + - +
- - + +
-
+ \ No newline at end of file diff --git a/resources/views/livewire/grids/room-grid.blade.php b/resources/views/livewire/grids/room-grid.blade.php index 5c5a67b..177b40f 100644 --- a/resources/views/livewire/grids/room-grid.blade.php +++ b/resources/views/livewire/grids/room-grid.blade.php @@ -1,4 +1,4 @@ - +
{{-- 樓層 Tab --}}
@@ -43,6 +43,6 @@
- + - \ No newline at end of file + \ No newline at end of file diff --git a/resources/views/livewire/headers/broadcast-template.blade.php b/resources/views/livewire/headers/broadcast-template.blade.php index a22d6cf..93c86a1 100644 --- a/resources/views/livewire/headers/broadcast-template.blade.php +++ b/resources/views/livewire/headers/broadcast-template.blade.php @@ -1,6 +1,6 @@ @if ($canCreate) - - - 'Dashboard', 'route' => 'admin.dashboard', 'icon' => 'home', 'permission' => null], - ['label' => 'Song', 'route' => 'admin.song-library-cache', 'icon' => 'clock', 'permission' => null], - ['label' => 'ActivityLog', 'route' => 'admin.activity-log', 'icon' => 'clock', 'permission' => null], - ['label' => 'RoomStatusLog', 'route' => 'admin.room-status-log', 'icon' => 'clock', 'permission' => null], - ['label' => 'MachineStatus', 'route' => 'admin.machine-status', 'icon' => 'clock', 'permission' => null], - ['label' => 'User', 'route' => 'admin.users', 'icon' => 'user-circle', 'permission' => 'user-list'], - ['label' => 'Room', 'route' => 'admin.rooms', 'icon' => 'building-library', 'permission' => 'room-list'], - ['label' => 'RoomGrid', 'route' => 'admin.room-grids', 'icon' => 'film', 'permission' => 'room-list'], - ['label' => 'TextAd', 'route' => 'admin.text-ads', 'icon' => 'megaphone', 'permission' => 'text-ad-list'], - ['label' => 'BroadcastTemplate', 'route' => 'admin.broadcast-templates', 'icon' => 'megaphone', 'permission' => 'broadcast-list'], - ]; - - /** - * Log the current user out of the application. - */ - public function logout(Logout $logout): void - { - $logout(); - - $this->redirect('/', navigate: true); - } -}; ?> - - \ No newline at end of file diff --git a/resources/views/livewire/layout/app/navigation.blade.php b/resources/views/livewire/layout/app/navigation.blade.php deleted file mode 100644 index a06e223..0000000 --- a/resources/views/livewire/layout/app/navigation.blade.php +++ /dev/null @@ -1,110 +0,0 @@ -redirect('/', navigate: true); - } -}; ?> - - diff --git a/resources/views/livewire/layout/navigation.blade.php b/resources/views/livewire/layout/navigation.blade.php new file mode 100644 index 0000000..fbcb863 --- /dev/null +++ b/resources/views/livewire/layout/navigation.blade.php @@ -0,0 +1,44 @@ +
+ + + + + +
\ No newline at end of file diff --git a/resources/views/livewire/modals/room-detail-modal.blade.php b/resources/views/livewire/modals/room-detail-modal.blade.php index 76ca9b4..d1f4962 100644 --- a/resources/views/livewire/modals/room-detail-modal.blade.php +++ b/resources/views/livewire/modals/room-detail-modal.blade.php @@ -1,5 +1,5 @@ - - + + + + + 選擇貼圖 + + +
+ @foreach($stickers as $sticker) + + @endforeach +
+
+
diff --git a/resources/views/livewire/pages/auth/login.blade.php b/resources/views/livewire/pages/auth/login.blade.php index bafe775..003bfef 100644 --- a/resources/views/livewire/pages/auth/login.blade.php +++ b/resources/views/livewire/pages/auth/login.blade.php @@ -47,9 +47,10 @@ new #[Layout('layouts.guest')] class extends Component 'gender' => $userData['gender'], 'status' => $userData['status'], 'email_verified_at' => $userData['email_verified_at'], + 'api_plain_token' => $token, 'created_at' => $userData['created_at'], 'updated_at' => $userData['updated_at'], - 'api_token' => $token, + ] ); @@ -57,13 +58,7 @@ new #[Layout('layouts.guest')] class extends Component Session::regenerate(); - //$this->redirectIntended(default: route('dashboard', absolute: false), navigate: true); - $user = auth()->user(); - if ($user->hasRole('User')) { - $this->redirect(route('dashboard'), navigate: true); - } else { - $this->redirect(route('admin.dashboard'), navigate: true); - } + $this->redirectIntended(default: route('welcome', absolute: false), navigate: true); } }; ?> diff --git a/resources/views/livewire/pages/home.blade.php b/resources/views/livewire/pages/home.blade.php new file mode 100644 index 0000000..613e683 --- /dev/null +++ b/resources/views/livewire/pages/home.blade.php @@ -0,0 +1,15 @@ +
+
+ + + + + @if($roomCode) + + + + + + @endif +
+
diff --git a/resources/views/livewire/pages/love-message.blade.php b/resources/views/livewire/pages/love-message.blade.php new file mode 100644 index 0000000..a6a65a3 --- /dev/null +++ b/resources/views/livewire/pages/love-message.blade.php @@ -0,0 +1,50 @@ +
+
+

真情告白

+ +
+ +
+ 字串長度:{{ strlen($message) }} 個單位 +
+
+ + + {{-- 打開貼圖 Modal --}} + +
+ 已選貼圖: + @if($selectedSticker) + + @else + 選擇貼圖 + @endif + 點擊此處選擇 +
+
+
+ +
+
    +
  • 注意:不要使用特殊符號,可能無法正常顯示!
  • +
  • 播歌畫面可顯示的字串長度為64(會員名稱 + 訊息內容)!
  • +
  • 如果非要給這愛加個期限,我希望是一萬年…真情告白,等您留言!(每則留言輪播三次)
  • +
+
+ +
+ diff --git a/resources/views/livewire/pages/ordered-song-list.blade.php b/resources/views/livewire/pages/ordered-song-list.blade.php new file mode 100644 index 0000000..6a5d705 --- /dev/null +++ b/resources/views/livewire/pages/ordered-song-list.blade.php @@ -0,0 +1,88 @@ +
+ + + + + 編號 + 歌曲 + 狀態 + + + + {{-- 正在播放 --}} + + + 🎵 正在播放 + + + @forelse($playing as $song) + + {{ $song->song_id }} + +
+ {{ $song->song_name }} + {{ $song->artist_name }} +
+ + {{ $song->status->labels() }} + + @empty + + + 目前沒有正在播放的歌曲 + + + @endforelse + + {{-- 待播 / 插播 --}} + + + ⏳ 待播 / 插播 + + + @forelse($nextSong as $song) + + {{ $song->song_id }} + +
+ {{ $song->song_name }} + {{ $song->artist_name }} +
+ + {{ $song->status->labels() }} + + @empty + + + 目前沒有待播歌曲 + + + @endforelse + + {{-- 已結束播放 --}} + + + ✅ 已結束播放 + + + @forelse($finished as $song) + + {{ $song->song_id }} + +
+ {{ $song->song_name }} + {{ $song->artist_name }} +
+ + {{ $song->status->labels() }} + + @empty + + + 尚無結束播放的歌曲 + + + @endforelse + +
+
\ No newline at end of file diff --git a/resources/views/livewire/pages/search-song.blade.php b/resources/views/livewire/pages/search-song.blade.php new file mode 100644 index 0000000..7c21ca9 --- /dev/null +++ b/resources/views/livewire/pages/search-song.blade.php @@ -0,0 +1,89 @@ +
+
+ + + + @if(!empty($artistOptions)) +
+ @foreach($artistOptions as $artist) +
+ {{ $artist['name'] }} + @if(in_array($artist['id'], $selectedArtists)) + + @endif +
+ @endforeach +
+ @endif + + + @if($selectedArtists) +
+ @foreach($selectedArtists as $artistId => $artistName) + + {{ $artistName }} + + + @endforeach +
+ @endif +
+ {{-- 搜尋框 --}} +
+ +
+ + {{-- 語言篩選 --}} +
+ @foreach($languages as $key => $label) + + @endforeach +
+ + {{-- 歌曲列表 Table --}} + + + + 編號 + 歌曲 + 操作 + + + + @forelse($songs as $song) + + {{ $song->song_id }} + +
+ {{ $song->song_name }} + {{ $song->str_artists_plus() }} +
+ + 點歌 + + @empty + + + 沒有符合的歌曲 + + + @endforelse +
+ +
\ No newline at end of file diff --git a/resources/views/livewire/pages/sound-control.blade.php b/resources/views/livewire/pages/sound-control.blade.php new file mode 100644 index 0000000..f9e7422 --- /dev/null +++ b/resources/views/livewire/pages/sound-control.blade.php @@ -0,0 +1,10 @@ +
+
+ @foreach($buttons as $btn) + + @endforeach +
+
\ No newline at end of file diff --git a/resources/views/livewire/profile/new-token-form.blade.php b/resources/views/livewire/profile/new-token-form.blade.php index 49a8f2c..efd5b25 100644 --- a/resources/views/livewire/profile/new-token-form.blade.php +++ b/resources/views/livewire/profile/new-token-form.blade.php @@ -76,7 +76,7 @@ new class extends Component @if($token)
- {{ $token }} + {{ $token }}

Please copy this token now. You won't be able to see it again.

@endif diff --git a/resources/views/love-message.blade.php b/resources/views/love-message.blade.php new file mode 100644 index 0000000..2be6155 --- /dev/null +++ b/resources/views/love-message.blade.php @@ -0,0 +1,10 @@ + + +
超級巨星 自助式KTV
+ +
+ + +
\ No newline at end of file diff --git a/resources/views/new-songs.blade.php b/resources/views/new-songs.blade.php new file mode 100644 index 0000000..11919e3 --- /dev/null +++ b/resources/views/new-songs.blade.php @@ -0,0 +1,12 @@ + + +
超級巨星 自助式KTV
+ +
+ +
+ Wolf Fox Logo +
+
\ No newline at end of file diff --git a/resources/views/search-song.blade.php b/resources/views/search-song.blade.php new file mode 100644 index 0000000..3351d52 --- /dev/null +++ b/resources/views/search-song.blade.php @@ -0,0 +1,9 @@ + + +
超級巨星 自助式KTV
+ +
+ +
\ No newline at end of file diff --git a/resources/views/sound-control.blade.php b/resources/views/sound-control.blade.php new file mode 100644 index 0000000..7cb25e7 --- /dev/null +++ b/resources/views/sound-control.blade.php @@ -0,0 +1,10 @@ + + +
超級巨星 自助式KTV
+ +
+ + +
\ No newline at end of file diff --git a/resources/views/top-ranking.blade.php b/resources/views/top-ranking.blade.php new file mode 100644 index 0000000..c88557a --- /dev/null +++ b/resources/views/top-ranking.blade.php @@ -0,0 +1,12 @@ + + +
超級巨星 自助式KTV
+ +
+ +
+ Wolf Fox Logo +
+
\ No newline at end of file diff --git a/resources/views/welcome.blade.php b/resources/views/welcome.blade.php index 0464add..c928255 100644 --- a/resources/views/welcome.blade.php +++ b/resources/views/welcome.blade.php @@ -1,145 +1,10 @@ - - - - - - - Laravel - - - - - - - @vite(['resources/css/app.css', 'resources/js/app.js']) - - -
- - + + +
超級巨星 自助式KTV
+ - - +
+ + +
\ No newline at end of file diff --git a/routes/web.php b/routes/web.php index e7fbfb0..43e8100 100644 --- a/routes/web.php +++ b/routes/web.php @@ -5,11 +5,20 @@ use Illuminate\Support\Facades\Route; use App\Livewire\Admin\Dashboard as AdminDashboard; -Route::redirect('/', '/login'); +//Route::redirect('/', '/login'); +Route::view('/', 'welcome'); -Route::view('dashboard', 'dashboard') - ->middleware(['auth', 'verified']) - ->name('dashboard'); +Route::view('/welcome', 'welcome')->name('welcome'); +Route::view('/new-songs', 'new-songs')->name('new-songs'); +Route::view('/top-ranking', 'top-ranking')->name('top-ranking'); +Route::view('/search-song', 'search-song')->name('search-song'); +Route::view('/clicked-song', 'clicked-song')->name('clicked-song'); +Route::view('/sound-control', 'sound-control')->name('sound-control'); +Route::view('/love-message', 'love-message')->name('love-message'); + +//Route::view('dashboard', 'dashboard') +// ->middleware(['auth', 'verified']) +//. ->name('dashboard'); Route::view('profile', 'profile') ->middleware(['auth']) @@ -18,8 +27,6 @@ Route::view('profile', 'profile') require __DIR__.'/auth.php'; Route::middleware(['auth'])->prefix('admin')->name('admin.')->group(function () { - Route::get('/dashboard', AdminDashboard::class)->name('dashboard'); - Route::get('/song-library-cache', function () {return view('livewire.admin.song-library-cache');})->name('song-library-cache'); Route::get('/activity-log', function () {return view('livewire.admin.activity-log');})->name('activity-log'); Route::get('/room-status-log', function () {return view('livewire.admin.room-status-log');})->name('room-status-log'); Route::get('/machine-status', function () {return view('livewire.admin.machine-status');})->name('machine-status');