This commit is contained in:
salam committed 2026-08-21 12:11:29 +02:00
1 parent 28ed78c864
commit 59f2eeec11
8 files changed
+342 -132

No files matched your search

+29 -17
View File
@@ -4,6 +4,7 @@ namespace App\Console\Commands;
use App\Actions\PlayerPerSeason; use App\Actions\PlayerPerSeason;
use App\Console\Commands\Grapper\Sofascore\Grapper; use App\Console\Commands\Grapper\Sofascore\Grapper;
use App\Console\Commands\Grapper\Sofascore\GrapperTest;
use App\Console\Commands\Grapper\Sofascore\Helper\SetStorage; use App\Console\Commands\Grapper\Sofascore\Helper\SetStorage;
use App\Console\Commands\Grapper\Sofascore\MakeExcel; use App\Console\Commands\Grapper\Sofascore\MakeExcel;
use App\Console\Commands\Grapper\Sofascore\Rose; use App\Console\Commands\Grapper\Sofascore\Rose;
@@ -16,14 +17,18 @@ use Illuminate\Console\Command;
class Grap extends Command class Grap extends Command
{ {
public static $options = []; public static $options = [];
public static string $storage; public static string $storage;
public static string $zipfile; public static string $zipfile;
public static string $folder; public static string $folder;
public static string $excel; public static string $excel;
public static string $useragent = '4'; public static string $useragent = '4';
protected $signature = 'grp {id=0} {day=0} {--folder=} {--d} {--r} {--f}'; protected $signature = 'grp {id=0} {day=0} {--folder=} {--d} {--r} {--f} {--R} {--S}';
public function handle() public function handle()
{ {
@@ -33,25 +38,28 @@ class Grap extends Command
self::$options['base_url'] = 'https://www.sofascore.com/'; self::$options['base_url'] = 'https://www.sofascore.com/';
if (! self::$options['id']) { if (! self::$options['id']) {
$txt = 'PARAMETERS' . PHP_EOL; $txt = 'PARAMETERS'.PHP_EOL;
$txt .= '--d debug' . PHP_EOL; $txt .= '--d debug'.PHP_EOL;
$txt .= '--r restart range' . PHP_EOL; $txt .= '--r restart range'.PHP_EOL;
$txt .= '--f force' . PHP_EOL; $txt .= '--f force'.PHP_EOL;
$txt .= '--folder' . PHP_EOL; $txt .= '--R read file'.PHP_EOL;
$txt .= '-----------------------------------------------------------' . PHP_EOL; $txt .= '--S save to file'.PHP_EOL;
$txt .= 'FUNCTION' . PHP_EOL; $txt .= '--folder'.PHP_EOL;
$txt .= ' 1 grapper DAILY & subDays ( default 3)' . PHP_EOL; $txt .= '-----------------------------------------------------------'.PHP_EOL;
$txt .= ' 2 grapper DATE' . PHP_EOL; $txt .= 'FUNCTION'.PHP_EOL;
$txt .= ' 3 grapper RANGE' . PHP_EOL; $txt .= ' 1 grapper DAILY & subDays ( default 3)'.PHP_EOL;
$txt .= ' 4 grapper ROSE' . PHP_EOL; $txt .= ' 2 grapper DATE'.PHP_EOL;
$txt .= ' 5 import to excel from folder' . PHP_EOL; $txt .= ' 3 grapper RANGE'.PHP_EOL;
$txt .= ' 6 playeer/season' . PHP_EOL; $txt .= ' 4 grapper ROSE'.PHP_EOL;
$txt .= ' 7 settings to local' . PHP_EOL; $txt .= ' 5 import to excel from folder'.PHP_EOL;
$txt .= ' 11 move SQL' . PHP_EOL; $txt .= ' 6 playeer/season'.PHP_EOL;
$txt .= ' 7 settings to local'.PHP_EOL;
$txt .= ' 11 move SQL'.PHP_EOL;
$txt .= ' 12 testing url for grapping'.PHP_EOL;
Notice::note($txt, 'b', 1); Notice::note($txt, 'b', 1);
} }
Notice::note('Task Id ' . self::$options['id'], 'gb'); Notice::note('Task Id '.self::$options['id'], 'gb');
switch (self::$options['id']) { switch (self::$options['id']) {
@@ -111,6 +119,10 @@ class Grap extends Command
SqlMover::run(); SqlMover::run();
break; break;
case '12':
GrapperTest::load();
break;
default: default:
Notice::note('function not implemented yet', 'br', 1); Notice::note('function not implemented yet', 'br', 1);
} }
@@ -0,0 +1,66 @@
<?php
namespace App\Console\Commands\Grapper\Sofascore;
use App\Console\Commands\Grap;
use App\Console\Commands\Grapper\Sofascore\Helper\CurlLivescore;
use App\Utilities\Notice;
use DOMDocument;
use DOMXPath;
class GrapperTest
{
public static $testfiles = '/Testfiles/';
public static function load()
{
$read = Grap::$options['R'] ?? 0;
$save = Grap::$options['S'] ?? 0;
$testfile = 'livescore.txt';
$path = __DIR__.self::$testfiles.$testfile;
Notice::note('Grapper testing '.$testfile, 'b');
$url = 'https://www.livescore.in/horse-racing/canada/woodbine-2020/';
if ($read) {
Notice::note('data read localy', 'p');
$data = file_get_contents($path);
} else {
$data = CurlLivescore::load($url);
}
if ($save) {
file_put_contents($path, $data);
Notice::note('file saved localy', 'g');
}
$dom = new DOMDocument;
// Prevent warnings caused by HTML5 tags that native DOMDocument doesn't fully understand
libxml_use_internal_errors(true);
// Use mb_convert_encoding to ensure DOMDocument treats the input as UTF-8
$dom->loadHTML(mb_convert_encoding($data, 'HTML-ENTITIES', 'UTF-8'));
libxml_clear_errors();
// 3. Use XPath to query specific HTML elements
$xpath = new DOMXPath($dom);
// Example: Target match rows or team names (Update classes based on actual DOM structure)
// Modern livescore sites often use classes like '.event__match' or '.event__participant'
$teams = $xpath->query("//div[contains(@class, 'event__participant')]");
foreach ($teams as $team) {
echo trim($team->nodeValue).PHP_EOL;
}
Notice::note($data, 'p', 1);
}
}
@@ -0,0 +1,61 @@
<?php
namespace App\Console\Commands\Grapper\Sofascore\Helper;
use App\Console\Commands\Grap;
use App\Utilities\Notice;
// use ForceUTF8\Encoding;
class CurlLivescore
{
public static function load(string $url)
{
$debug = Grap::$options['d'] ?? 0;
if ($debug) {
Notice::note($url, 'b');
}
$useragents = [];
$useragents[1] = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.2.1 Safari/605.1.15';
$useragents[2] = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.3.1 Safari/605.1.15';
$useragents[3] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36';
$useragents[4] = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.1 Safari/605.1.15';
$useragents[5] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36 Edg/134.0.0.0';
$useragents[6] = 'Mozilla/5.0 (X11; CrOS x86_64 14541.0.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36';
$headers = [
'GET /horse-racing/canada/woodbine-2020/ HTTP/1.1',
'Host: www.livescore.in',
'User-Agent: '.$useragents[Grap::$useragent],
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language: de,en-US;q=0.9,en;q=0.8',
'Accept-Encoding: gzip, deflate, br, zstd',
'Referer: https://www.livescore.in/horse-racing/canada/woodbine/archive/',
'Upgrade-Insecure-Requests: 1',
'Sec-Fetch-Dest: document',
'Sec-Fetch-Mode: navigate',
'Sec-Fetch-Site: same-origin',
'Sec-Fetch-User: ?1',
'Connection: keep-alive',
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_ENCODING, '');
$data = curl_exec($ch);
// $data = Encoding::toUTF8($data);
// $data = gzdecode($data);
// $data = json_decode($data, true);
return $data;
}
}
Whitespace-only changes.
+41 -23
View File
@@ -15,6 +15,7 @@ use Filament\Forms\Components\DatePicker;
use Filament\Forms\Components\Radio; use Filament\Forms\Components\Radio;
use Filament\Forms\Components\Select; use Filament\Forms\Components\Select;
use Filament\Forms\Components\Slider; use Filament\Forms\Components\Slider;
use Filament\Forms\Components\ToggleButtons;
use Filament\Pages\Dashboard as BaseDashboard; use Filament\Pages\Dashboard as BaseDashboard;
use Filament\Pages\Dashboard\Concerns\HasFiltersForm; use Filament\Pages\Dashboard\Concerns\HasFiltersForm;
use Filament\Schemas\Components\Grid; use Filament\Schemas\Components\Grid;
@@ -23,7 +24,6 @@ use Filament\Schemas\Components\Utilities\Set;
use Filament\Schemas\Schema; use Filament\Schemas\Schema;
use Filament\Support\RawJs; use Filament\Support\RawJs;
use Illuminate\Contracts\Support\Htmlable; use Illuminate\Contracts\Support\Htmlable;
use Illuminate\Contracts\View\View;
use Illuminate\Support\HtmlString; use Illuminate\Support\HtmlString;
class Statistic extends BaseDashboard class Statistic extends BaseDashboard
@@ -57,6 +57,25 @@ class Statistic extends BaseDashboard
{ {
return $schema return $schema
->components([ ->components([
// ToggleButtons::make('status')
// ->columnSpanFull()
// ->hiddenLabel()
// ->inline()
// ->default(1)
// ->options([
// '1' => 'Soccer',
// '3' => 'Basketball',
// '2' => 'Ice Hockey',
// '5' => 'Tennis',
// '27' => 'Horse Racing',
// ])
// ->icons([
// '1' => 'icon-soccerball',
// '3' => 'icon-basketball',
// '2' => 'icon-icehockey',
// '5' => 'icon-tennisball',
// '27' => 'icon-horseracing',
// ]),
Grid::make([ Grid::make([
'default' => 1, 'default' => 1,
'sm' => 3, 'sm' => 3,
@@ -67,10 +86,10 @@ class Statistic extends BaseDashboard
Select::make('league_id') Select::make('league_id')
->live() ->live()
->searchable() ->searchable()
->prefixIconColor(fn(Get $get): string => $get('league_id') ? 'success' : 'danger') ->prefixIconColor(fn (Get $get): string => $get('league_id') ? 'success' : 'danger')
->prefixIcon('phosphor-trophy-fill') ->prefixIcon('phosphor-trophy-fill')
->hiddenLabel() ->hiddenLabel()
->options(fn() => LoadStatisticFixturesLeaguesOptions::load(1)) ->options(fn () => LoadStatisticFixturesLeaguesOptions::load(1))
->placeholder('League') ->placeholder('League')
->afterStateUpdated(function (callable $set, $state) { ->afterStateUpdated(function (callable $set, $state) {
$set('match_id', null); $set('match_id', null);
@@ -81,7 +100,7 @@ class Statistic extends BaseDashboard
Select::make('match_id') Select::make('match_id')
->live() ->live()
->hiddenLabel() ->hiddenLabel()
->prefixIconColor(fn(Get $get): string => $get('match_id') ? 'success' : 'danger') ->prefixIconColor(fn (Get $get): string => $get('match_id') ? 'success' : 'danger')
->prefixIcon('phosphor-calendar-check-fill') ->prefixIcon('phosphor-calendar-check-fill')
->options(function (Get $get) { ->options(function (Get $get) {
return LoadStatisticFixturesMatchOptions::load($get('league_id')); return LoadStatisticFixturesMatchOptions::load($get('league_id'));
@@ -105,12 +124,11 @@ class Statistic extends BaseDashboard
} }
}) })
->prefixIcon('phosphor-users-three-fill') ->prefixIcon('phosphor-users-three-fill')
->hidden(fn(Get $get) => $get('similar_past_matches') != 'none') ->hidden(fn (Get $get) => $get('similar_past_matches') != 'none')
->options(function (Get $get) { ->options(function (Get $get) {
if ($get('match_id')) { if ($get('match_id')) {
$res = StatisticFixtures::where('id', $get('match_id'))->first(); $res = StatisticFixtures::where('id', $get('match_id'))->first();
$arr = []; $arr = [];
if ($res) { if ($res) {
$arr[$res->home_id] = SofaScoreRosa::query()->where('ss_team_id', $res->home_id)->value('ss_team_name'); $arr[$res->home_id] = SofaScoreRosa::query()->where('ss_team_id', $res->home_id)->value('ss_team_name');
@@ -134,9 +152,9 @@ class Statistic extends BaseDashboard
Action::make('iconInfo') Action::make('iconInfo')
->color('success') ->color('success')
->icon('phosphor-question-fill') ->icon('phosphor-question-fill')
->tooltip(fn() => 'Team Position') ->tooltip(fn () => 'Team Position')
) )
->hidden(fn(Get $get) => $get('similar_past_matches') != 'none') ->hidden(fn (Get $get) => $get('similar_past_matches') != 'none')
->default('all') ->default('all')
->selectablePlaceholder(false) ->selectablePlaceholder(false)
->options([ ->options([
@@ -189,13 +207,13 @@ class Statistic extends BaseDashboard
->hiddenLabel() ->hiddenLabel()
->prefix('SPM') ->prefix('SPM')
->placeholder('Similar Past Matches') ->placeholder('Similar Past Matches')
->suffix(fn(Get $get): string|HtmlString => $get('similar_past_matches') != 'none' ? new HtmlString('<div class="text-center w-24 font-bold rounded p-1 bg-blue-600 dark:bg-blue-700 text-white dark:text-gray-300">± ' . $get('accuracy') . '</div>') : '') ->suffix(fn (Get $get): string|HtmlString => $get('similar_past_matches') != 'none' ? new HtmlString('<div class="text-center w-24 font-bold rounded p-1 bg-blue-600 dark:bg-blue-700 text-white dark:text-gray-300">± '.$get('accuracy').'</div>') : '')
->prefixAction( ->prefixAction(
Action::make('iconInfo') Action::make('iconInfo')
->icon('phosphor-question-fill') ->icon('phosphor-question-fill')
// ->color(fn(Get $get): string => $get('similar_past_matches') != 'none' ? 'success' : 'primary') // ->color(fn(Get $get): string => $get('similar_past_matches') != 'none' ? 'success' : 'primary')
->color('success') ->color('success')
->tooltip(fn() => $this->tooltip_similar_past_matches()) ->tooltip(fn () => $this->tooltip_similar_past_matches())
) )
->default('none') ->default('none')
->selectablePlaceholder(false) ->selectablePlaceholder(false)
@@ -212,7 +230,7 @@ class Statistic extends BaseDashboard
Slider::make('accuracy') Slider::make('accuracy')
->live() ->live()
->hiddenLabel() ->hiddenLabel()
->hidden(fn(Get $get) => $get('similar_past_matches') == 'none') ->hidden(fn (Get $get) => $get('similar_past_matches') == 'none')
->fillTrack() ->fillTrack()
->minValue(0) ->minValue(0)
->maxValue(0.25) ->maxValue(0.25)
@@ -228,17 +246,17 @@ class Statistic extends BaseDashboard
->hiddenLabel() ->hiddenLabel()
->allowHtml() ->allowHtml()
->placeholder('Player') ->placeholder('Player')
->hidden(fn(Get $get) => $get('similar_past_matches') != 'none') ->hidden(fn (Get $get) => $get('similar_past_matches') != 'none')
->prefixIconColor(fn(Get $get): string => $get('similar_past_matches') == 'none' ? 'success' : '') ->prefixIconColor(fn (Get $get): string => $get('similar_past_matches') == 'none' ? 'success' : '')
->prefixIcon('icon-player') ->prefixIcon('icon-player')
->preload() ->preload()
->searchable() ->searchable()
->extraAttributes(fn() => ['id' => 'player_selector']) ->extraAttributes(fn () => ['id' => 'player_selector'])
->suffixAction( ->suffixAction(
Action::make('iconInfo') Action::make('iconInfo')
->icon('phosphor-question-fill') ->icon('phosphor-question-fill')
->color('success') ->color('success')
->tooltip(fn() => $this->tooltip_player_info()) ->tooltip(fn () => $this->tooltip_player_info())
) )
->options(function (Get $get) { ->options(function (Get $get) {
return LoadPlayer::load($get); return LoadPlayer::load($get);
@@ -249,7 +267,7 @@ class Statistic extends BaseDashboard
->placeholder('Time on field') ->placeholder('Time on field')
->prefixIcon('phosphor-watch-fill') ->prefixIcon('phosphor-watch-fill')
->default('all') ->default('all')
->hidden(fn(Get $get) => ! $get('ss_player_id')) ->hidden(fn (Get $get) => ! $get('ss_player_id'))
->prefixIconColor('success') ->prefixIconColor('success')
->selectablePlaceholder(false) ->selectablePlaceholder(false)
->options([ ->options([
@@ -289,7 +307,7 @@ class Statistic extends BaseDashboard
->placeholder('All Seasons') ->placeholder('All Seasons')
->prefixIconColor('success') ->prefixIconColor('success')
// ->prefixIconColor(fn(Get $get): string => $get('season') ? 'success' : 'primary') // ->prefixIconColor(fn(Get $get): string => $get('season') ? 'success' : 'primary')
->hidden(fn(Get $get) => $get('season_or_date') == 'date') ->hidden(fn (Get $get) => $get('season_or_date') == 'date')
->prefixIcon('phosphor-calendar-star-fill') ->prefixIcon('phosphor-calendar-star-fill')
->preload() ->preload()
->options(function (Get $get) { ->options(function (Get $get) {
@@ -298,30 +316,30 @@ class Statistic extends BaseDashboard
DatePicker::make('start_date') DatePicker::make('start_date')
->live() ->live()
->hiddenLabel() ->hiddenLabel()
->hidden(fn(Get $get) => $get('season_or_date') == 'season') ->hidden(fn (Get $get) => $get('season_or_date') == 'season')
->native(false) ->native(false)
->prefixIconColor(fn(Get $get): string => $get('start_date') ? 'success' : 'primary') ->prefixIconColor(fn (Get $get): string => $get('start_date') ? 'success' : 'primary')
->prefixIcon('phosphor-calendar-fill') ->prefixIcon('phosphor-calendar-fill')
->prefix('Start') ->prefix('Start')
->suffixAction( ->suffixAction(
Action::make('clear_start') Action::make('clear_start')
->icon('phosphor-x') ->icon('phosphor-x')
->color('gray') ->color('gray')
->action(fn(Set $set) => $set('start_date', null)) ->action(fn (Set $set) => $set('start_date', null))
), ),
DatePicker::make('end_date') DatePicker::make('end_date')
->live() ->live()
->hiddenLabel() ->hiddenLabel()
->hidden(fn(Get $get) => $get('season_or_date') == 'season') ->hidden(fn (Get $get) => $get('season_or_date') == 'season')
->native(false) ->native(false)
->prefixIconColor(fn(Get $get): string => $get('end_date') ? 'success' : 'primary') ->prefixIconColor(fn (Get $get): string => $get('end_date') ? 'success' : 'primary')
->prefixIcon('phosphor-calendar-fill') ->prefixIcon('phosphor-calendar-fill')
->prefix('End') ->prefix('End')
->suffixAction( ->suffixAction(
Action::make('clear_end') Action::make('clear_end')
->icon('phosphor-x') ->icon('phosphor-x')
->color('gray') ->color('gray')
->action(fn(Set $set) => $set('end_date', null)) ->action(fn (Set $set) => $set('end_date', null))
), ),
]); ]);
} }
+1
View File
@@ -21,6 +21,7 @@
"laravel/tinker": "*", "laravel/tinker": "*",
"mongodb/laravel-mongodb": "^5.1", "mongodb/laravel-mongodb": "^5.1",
"mongodb/mongodb": "^2.2", "mongodb/mongodb": "^2.2",
"neitanod/forceutf8": "^2.0",
"outhebox/blade-flags": "*", "outhebox/blade-flags": "*",
"phpoffice/phpspreadsheet": "^5.9", "phpoffice/phpspreadsheet": "^5.9",
"spatie/simple-excel": "^3.9", "spatie/simple-excel": "^3.9",
Generated
+144 -92
View File
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "b00c887f246ff78cec67da8281097834", "content-hash": "8d70480aebb8cfe694d402279beba062",
"packages": [ "packages": [
{ {
"name": "agencetwogether/hookshelper", "name": "agencetwogether/hookshelper",
@@ -2946,16 +2946,16 @@
}, },
{ {
"name": "laravel/framework", "name": "laravel/framework",
"version": "v12.65.0", "version": "v12.67.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/laravel/framework.git", "url": "https://github.com/laravel/framework.git",
"reference": "99a8fb3153f962a323377d6742be08da86bcccb8" "reference": "fe2cdaba052cbb9f350761ccefc7ac221cbdf0b5"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/laravel/framework/zipball/99a8fb3153f962a323377d6742be08da86bcccb8", "url": "https://api.github.com/repos/laravel/framework/zipball/fe2cdaba052cbb9f350761ccefc7ac221cbdf0b5",
"reference": "99a8fb3153f962a323377d6742be08da86bcccb8", "reference": "fe2cdaba052cbb9f350761ccefc7ac221cbdf0b5",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -3164,20 +3164,20 @@
"issues": "https://github.com/laravel/framework/issues", "issues": "https://github.com/laravel/framework/issues",
"source": "https://github.com/laravel/framework" "source": "https://github.com/laravel/framework"
}, },
"time": "2026-08-05T15:33:16+00:00" "time": "2026-08-18T13:37:47+00:00"
}, },
{ {
"name": "laravel/prompts", "name": "laravel/prompts",
"version": "v0.3.22", "version": "v0.3.23",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/laravel/prompts.git", "url": "https://github.com/laravel/prompts.git",
"reference": "02b89b39e8972a998db4d5d4ad4719239dd4aee4" "reference": "b7b4c35e5bc47450f6b6238c6cc9c47ba19b2221"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/laravel/prompts/zipball/02b89b39e8972a998db4d5d4ad4719239dd4aee4", "url": "https://api.github.com/repos/laravel/prompts/zipball/b7b4c35e5bc47450f6b6238c6cc9c47ba19b2221",
"reference": "02b89b39e8972a998db4d5d4ad4719239dd4aee4", "reference": "b7b4c35e5bc47450f6b6238c6cc9c47ba19b2221",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -3221,9 +3221,9 @@
"description": "Add beautiful and user-friendly forms to your command-line applications.", "description": "Add beautiful and user-friendly forms to your command-line applications.",
"support": { "support": {
"issues": "https://github.com/laravel/prompts/issues", "issues": "https://github.com/laravel/prompts/issues",
"source": "https://github.com/laravel/prompts/tree/v0.3.22" "source": "https://github.com/laravel/prompts/tree/v0.3.23"
}, },
"time": "2026-08-04T14:50:50+00:00" "time": "2026-08-11T18:58:24+00:00"
}, },
{ {
"name": "laravel/serializable-closure", "name": "laravel/serializable-closure",
@@ -3357,16 +3357,16 @@
}, },
{ {
"name": "league/commonmark", "name": "league/commonmark",
"version": "2.9.2", "version": "2.10.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/thephpleague/commonmark.git", "url": "https://github.com/thephpleague/commonmark.git",
"reference": "72e9a87efcf41a8e83be3ed0866b69d77565cb12" "reference": "d2d1aa8b35e072966c89bc0c66cf926e56767dc4"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/thephpleague/commonmark/zipball/72e9a87efcf41a8e83be3ed0866b69d77565cb12", "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/d2d1aa8b35e072966c89bc0c66cf926e56767dc4",
"reference": "72e9a87efcf41a8e83be3ed0866b69d77565cb12", "reference": "d2d1aa8b35e072966c89bc0c66cf926e56767dc4",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -3403,7 +3403,7 @@
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-main": "2.10-dev" "dev-main": "2.11-dev"
} }
}, },
"autoload": { "autoload": {
@@ -3460,7 +3460,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2026-08-11T00:58:45+00:00" "time": "2026-08-11T16:06:25+00:00"
}, },
{ {
"name": "league/config", "name": "league/config",
@@ -4091,16 +4091,16 @@
}, },
{ {
"name": "livewire/livewire", "name": "livewire/livewire",
"version": "v4.4.0", "version": "v4.4.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/livewire/livewire.git", "url": "https://github.com/livewire/livewire.git",
"reference": "514b29d5a23594d4e4846494f580268b20c2f11e" "reference": "0c925c55b4a5c134f2fb147efa4b9f53a837d866"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/livewire/livewire/zipball/514b29d5a23594d4e4846494f580268b20c2f11e", "url": "https://api.github.com/repos/livewire/livewire/zipball/0c925c55b4a5c134f2fb147efa4b9f53a837d866",
"reference": "514b29d5a23594d4e4846494f580268b20c2f11e", "reference": "0c925c55b4a5c134f2fb147efa4b9f53a837d866",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -4155,7 +4155,7 @@
"description": "A front-end framework for Laravel.", "description": "A front-end framework for Laravel.",
"support": { "support": {
"issues": "https://github.com/livewire/livewire/issues", "issues": "https://github.com/livewire/livewire/issues",
"source": "https://github.com/livewire/livewire/tree/v4.4.0" "source": "https://github.com/livewire/livewire/tree/v4.4.1"
}, },
"funding": [ "funding": [
{ {
@@ -4163,7 +4163,7 @@
"type": "github" "type": "github"
} }
], ],
"time": "2026-08-10T15:24:22+00:00" "time": "2026-08-18T11:39:06+00:00"
}, },
{ {
"name": "maennchen/zipstream-php", "name": "maennchen/zipstream-php",
@@ -4352,24 +4352,24 @@
}, },
{ {
"name": "masterminds/html5", "name": "masterminds/html5",
"version": "2.10.1", "version": "2.11.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/Masterminds/html5-php.git", "url": "https://github.com/Masterminds/html5-php.git",
"reference": "fd5018f6815fff903946d0564977b44ce8010e29" "reference": "a1e7a2f88ee13635d86fc61cfbdf2306a76ddfc7"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/Masterminds/html5-php/zipball/fd5018f6815fff903946d0564977b44ce8010e29", "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/a1e7a2f88ee13635d86fc61cfbdf2306a76ddfc7",
"reference": "fd5018f6815fff903946d0564977b44ce8010e29", "reference": "a1e7a2f88ee13635d86fc61cfbdf2306a76ddfc7",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"ext-dom": "*", "ext-dom": "*",
"php": ">=5.3.0" "php": ">=7.4"
}, },
"require-dev": { "require-dev": {
"phpunit/phpunit": "^4.8.35 || ^5.7.21 || ^6 || ^7 || ^8 || ^9 || ^10" "phpunit/phpunit": "^6 || ^7 || ^8 || ^9 || ^10"
}, },
"type": "library", "type": "library",
"extra": { "extra": {
@@ -4413,9 +4413,9 @@
], ],
"support": { "support": {
"issues": "https://github.com/Masterminds/html5-php/issues", "issues": "https://github.com/Masterminds/html5-php/issues",
"source": "https://github.com/Masterminds/html5-php/tree/2.10.1" "source": "https://github.com/Masterminds/html5-php/tree/2.11.0"
}, },
"time": "2026-06-23T18:43:15+00:00" "time": "2026-08-18T06:18:41+00:00"
}, },
{ {
"name": "maxmind-db/reader", "name": "maxmind-db/reader",
@@ -4705,24 +4705,24 @@
}, },
{ {
"name": "mongodb/mongodb", "name": "mongodb/mongodb",
"version": "2.2.0", "version": "2.3.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/mongodb/mongo-php-library.git", "url": "https://github.com/mongodb/mongo-php-library",
"reference": "bbb13f969e37e047fd822527543df55fdc1c9298" "reference": "12e56461166d915e3dd8e4969ad0940ed5207d88"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/mongodb/mongo-php-library/zipball/bbb13f969e37e047fd822527543df55fdc1c9298", "url": "https://api.github.com/repos/mongodb/mongo-php-library/zipball/12e56461166d915e3dd8e4969ad0940ed5207d88",
"reference": "bbb13f969e37e047fd822527543df55fdc1c9298", "reference": "12e56461166d915e3dd8e4969ad0940ed5207d88",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"composer-runtime-api": "^2.0", "composer-runtime-api": "^2.0",
"ext-mongodb": "^2.2", "ext-mongodb": "^2.3",
"php": "^8.1", "php": "^8.1",
"psr/log": "^1.1.4|^2|^3", "psr/log": "^1.1.4|^2|^3",
"symfony/polyfill-php85": "^1.32" "symfony/polyfill-php85": "^1.33"
}, },
"replace": { "replace": {
"mongodb/builder": "*" "mongodb/builder": "*"
@@ -4774,11 +4774,7 @@
"mongodb", "mongodb",
"persistence" "persistence"
], ],
"support": { "time": "2026-04-28T12:50:06+00:00"
"issues": "https://github.com/mongodb/mongo-php-library/issues",
"source": "https://github.com/mongodb/mongo-php-library/tree/2.2.0"
},
"time": "2026-02-11T11:39:56+00:00"
}, },
{ {
"name": "monolog/monolog", "name": "monolog/monolog",
@@ -4883,6 +4879,47 @@
], ],
"time": "2026-01-02T08:56:05+00:00" "time": "2026-01-02T08:56:05+00:00"
}, },
{
"name": "neitanod/forceutf8",
"version": "v2.0.4",
"source": {
"type": "git",
"url": "https://github.com/neitanod/forceutf8.git",
"reference": "c1fbe70bfb5ad41b8ec5785056b0e308b40d4831"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/neitanod/forceutf8/zipball/c1fbe70bfb5ad41b8ec5785056b0e308b40d4831",
"reference": "c1fbe70bfb5ad41b8ec5785056b0e308b40d4831",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"type": "library",
"autoload": {
"psr-0": {
"ForceUTF8\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Sebastián Grignoli",
"email": "grignoli@gmail.com"
}
],
"description": "PHP Class Encoding featuring popular Encoding::toUTF8() function --formerly known as forceUTF8()-- that fixes mixed encoded strings.",
"homepage": "https://github.com/neitanod/forceutf8",
"support": {
"issues": "https://github.com/neitanod/forceutf8/issues",
"source": "https://github.com/neitanod/forceutf8/tree/master"
},
"time": "2019-12-10T14:09:14+00:00"
},
{ {
"name": "nesbot/carbon", "name": "nesbot/carbon",
"version": "3.13.2", "version": "3.13.2",
@@ -5064,16 +5101,16 @@
}, },
{ {
"name": "nette/schema", "name": "nette/schema",
"version": "v1.3.5", "version": "v1.3.6",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/nette/schema.git", "url": "https://github.com/nette/schema.git",
"reference": "f0ab1a3cda782dbc5da270d28545236aa80c4002" "reference": "c54350438cd6914616f790a49cb424605f421562"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/nette/schema/zipball/f0ab1a3cda782dbc5da270d28545236aa80c4002", "url": "https://api.github.com/repos/nette/schema/zipball/c54350438cd6914616f790a49cb424605f421562",
"reference": "f0ab1a3cda782dbc5da270d28545236aa80c4002", "reference": "c54350438cd6914616f790a49cb424605f421562",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -5125,9 +5162,9 @@
], ],
"support": { "support": {
"issues": "https://github.com/nette/schema/issues", "issues": "https://github.com/nette/schema/issues",
"source": "https://github.com/nette/schema/tree/v1.3.5" "source": "https://github.com/nette/schema/tree/v1.3.6"
}, },
"time": "2026-02-23T03:47:12+00:00" "time": "2026-08-16T21:58:41+00:00"
}, },
{ {
"name": "nette/utils", "name": "nette/utils",
@@ -5781,16 +5818,16 @@
}, },
{ {
"name": "pragmarx/google2fa", "name": "pragmarx/google2fa",
"version": "v9.0.0", "version": "v9.1.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/antonioribeiro/google2fa.git", "url": "https://github.com/antonioribeiro/google2fa.git",
"reference": "e6bc62dd6ae83acc475f57912e27466019a1f2cf" "reference": "f00bc788c555adfb6765c437ff3538e59cd88af1"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/antonioribeiro/google2fa/zipball/e6bc62dd6ae83acc475f57912e27466019a1f2cf", "url": "https://api.github.com/repos/antonioribeiro/google2fa/zipball/f00bc788c555adfb6765c437ff3538e59cd88af1",
"reference": "e6bc62dd6ae83acc475f57912e27466019a1f2cf", "reference": "f00bc788c555adfb6765c437ff3538e59cd88af1",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -5798,8 +5835,11 @@
"php": "^7.1|^8.0" "php": "^7.1|^8.0"
}, },
"require-dev": { "require-dev": {
"phpstan/phpstan": "^1.9", "phpstan/phpstan": "^1.0|^2.0",
"phpunit/phpunit": "^7.5.15|^8.5|^9.0" "phpstan/phpstan-phpunit": "^1.0|^2.0",
"phpunit/phpunit": "~9|~10|~11|~12|~13",
"psalm/plugin-phpunit": "^0.19|^0.20",
"vimeo/psalm": "^5.26|^6.13"
}, },
"type": "library", "type": "library",
"autoload": { "autoload": {
@@ -5822,14 +5862,23 @@
"keywords": [ "keywords": [
"2fa", "2fa",
"Authentication", "Authentication",
"MFA",
"Two Factor Authentication", "Two Factor Authentication",
"google2fa" "google-authenticator",
"google2fa",
"hotp",
"otp",
"rfc4226",
"rfc6238",
"totp"
], ],
"support": { "support": {
"docs": "https://github.com/antonioribeiro/google2fa#readme",
"issues": "https://github.com/antonioribeiro/google2fa/issues", "issues": "https://github.com/antonioribeiro/google2fa/issues",
"source": "https://github.com/antonioribeiro/google2fa/tree/v9.0.0" "security": "https://github.com/antonioribeiro/google2fa/security/policy",
"source": "https://github.com/antonioribeiro/google2fa"
}, },
"time": "2025-09-19T22:51:08+00:00" "time": "2026-08-15T13:22:01+00:00"
}, },
{ {
"name": "pragmarx/google2fa-qrcode", "name": "pragmarx/google2fa-qrcode",
@@ -10171,16 +10220,16 @@
"packages-dev": [ "packages-dev": [
{ {
"name": "barryvdh/laravel-debugbar", "name": "barryvdh/laravel-debugbar",
"version": "v4.4.1", "version": "v4.4.2",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/fruitcake/laravel-debugbar.git", "url": "https://github.com/fruitcake/laravel-debugbar.git",
"reference": "389157fb616e5c5d19d16a88fd9bfcf3e3248e9b" "reference": "18d1c1c64cc5d7794a2c52a2165fe6121e28ed44"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/fruitcake/laravel-debugbar/zipball/389157fb616e5c5d19d16a88fd9bfcf3e3248e9b", "url": "https://api.github.com/repos/fruitcake/laravel-debugbar/zipball/18d1c1c64cc5d7794a2c52a2165fe6121e28ed44",
"reference": "389157fb616e5c5d19d16a88fd9bfcf3e3248e9b", "reference": "18d1c1c64cc5d7794a2c52a2165fe6121e28ed44",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -10255,7 +10304,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/fruitcake/laravel-debugbar/issues", "issues": "https://github.com/fruitcake/laravel-debugbar/issues",
"source": "https://github.com/fruitcake/laravel-debugbar/tree/v4.4.1" "source": "https://github.com/fruitcake/laravel-debugbar/tree/v4.4.2"
}, },
"funding": [ "funding": [
{ {
@@ -10267,7 +10316,7 @@
"type": "github" "type": "github"
} }
], ],
"time": "2026-08-03T06:23:16+00:00" "time": "2026-08-20T12:02:04+00:00"
}, },
{ {
"name": "brianium/paratest", "name": "brianium/paratest",
@@ -10647,19 +10696,21 @@
}, },
{ {
"name": "hamcrest/hamcrest-php", "name": "hamcrest/hamcrest-php",
"version": "v2.1.1", "version": "v3.0.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/hamcrest/hamcrest-php.git", "url": "https://github.com/hamcrest/hamcrest-php.git",
"reference": "f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487" "reference": "b61cd040da1a4925bc90a51c074f5297e7c0fa52"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487", "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/b61cd040da1a4925bc90a51c074f5297e7c0fa52",
"reference": "f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487", "reference": "b61cd040da1a4925bc90a51c074f5297e7c0fa52",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"ext-ctype": "*",
"ext-dom": "*",
"php": "^7.4|^8.0" "php": "^7.4|^8.0"
}, },
"replace": { "replace": {
@@ -10668,13 +10719,15 @@
"kodova/hamcrest-php": "*" "kodova/hamcrest-php": "*"
}, },
"require-dev": { "require-dev": {
"phpstan/phpstan": "^2.1",
"phpstan/phpstan-phpunit": "^2.0",
"phpunit/php-file-iterator": "^1.4 || ^2.0 || ^3.0", "phpunit/php-file-iterator": "^1.4 || ^2.0 || ^3.0",
"phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0 || ^8.0 || ^9.0" "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0 || ^8.0 || ^9.0"
}, },
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "2.1-dev" "dev-master": "3.0-dev"
} }
}, },
"autoload": { "autoload": {
@@ -10692,9 +10745,9 @@
], ],
"support": { "support": {
"issues": "https://github.com/hamcrest/hamcrest-php/issues", "issues": "https://github.com/hamcrest/hamcrest-php/issues",
"source": "https://github.com/hamcrest/hamcrest-php/tree/v2.1.1" "source": "https://github.com/hamcrest/hamcrest-php/tree/v3.0.0"
}, },
"time": "2025-04-30T06:54:44+00:00" "time": "2026-03-17T11:56:53+00:00"
}, },
{ {
"name": "jean85/pretty-package-versions", "name": "jean85/pretty-package-versions",
@@ -10908,16 +10961,16 @@
}, },
{ {
"name": "laravel/sail", "name": "laravel/sail",
"version": "v1.65.0", "version": "v1.67.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/laravel/sail.git", "url": "https://github.com/laravel/sail.git",
"reference": "d4b92139858d2a189a6302ca133e494f58afe20b" "reference": "639e03ac12cf23def171770bcab05758045b2642"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/laravel/sail/zipball/d4b92139858d2a189a6302ca133e494f58afe20b", "url": "https://api.github.com/repos/laravel/sail/zipball/639e03ac12cf23def171770bcab05758045b2642",
"reference": "d4b92139858d2a189a6302ca133e494f58afe20b", "reference": "639e03ac12cf23def171770bcab05758045b2642",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -10967,33 +11020,32 @@
"issues": "https://github.com/laravel/sail/issues", "issues": "https://github.com/laravel/sail/issues",
"source": "https://github.com/laravel/sail" "source": "https://github.com/laravel/sail"
}, },
"time": "2026-08-03T18:00:17+00:00" "time": "2026-08-12T13:55:56+00:00"
}, },
{ {
"name": "mockery/mockery", "name": "mockery/mockery",
"version": "1.6.12", "version": "1.6.15",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/mockery/mockery.git", "url": "https://github.com/mockery/mockery.git",
"reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699" "reference": "967a801bd188989a5669bd280f252d51c0fdc9ee"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/mockery/mockery/zipball/1f4efdd7d3beafe9807b08156dfcb176d18f1699", "url": "https://api.github.com/repos/mockery/mockery/zipball/967a801bd188989a5669bd280f252d51c0fdc9ee",
"reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699", "reference": "967a801bd188989a5669bd280f252d51c0fdc9ee",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"hamcrest/hamcrest-php": "^2.0.1", "hamcrest/hamcrest-php": "^2.0 || ^3.0",
"lib-pcre": ">=7.0",
"php": ">=7.3" "php": ">=7.3"
}, },
"conflict": { "conflict": {
"phpunit/phpunit": "<8.0" "phpunit/phpunit": "<8.0"
}, },
"require-dev": { "require-dev": {
"phpunit/phpunit": "^8.5 || ^9.6.17", "phpunit/phpunit": "^9.6.36",
"symplify/easy-coding-standard": "^12.1.14" "symplify/easy-coding-standard": "^13.2.17"
}, },
"type": "library", "type": "library",
"autoload": { "autoload": {
@@ -11050,7 +11102,7 @@
"security": "https://github.com/mockery/mockery/security/advisories", "security": "https://github.com/mockery/mockery/security/advisories",
"source": "https://github.com/mockery/mockery" "source": "https://github.com/mockery/mockery"
}, },
"time": "2024-05-16T03:13:13+00:00" "time": "2026-08-19T19:37:52+00:00"
}, },
{ {
"name": "myclabs/deep-copy", "name": "myclabs/deep-copy",
@@ -12622,16 +12674,16 @@
}, },
{ {
"name": "rector/rector", "name": "rector/rector",
"version": "2.6.1", "version": "2.6.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/rectorphp/rector.git", "url": "https://github.com/rectorphp/rector.git",
"reference": "b8e68f058bca43e01a2e1caa51ef022d6551ed95" "reference": "7e46709996a4b3dc59e1d6ecbb6a38ace335bd58"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/rectorphp/rector/zipball/b8e68f058bca43e01a2e1caa51ef022d6551ed95", "url": "https://api.github.com/repos/rectorphp/rector/zipball/7e46709996a4b3dc59e1d6ecbb6a38ace335bd58",
"reference": "b8e68f058bca43e01a2e1caa51ef022d6551ed95", "reference": "7e46709996a4b3dc59e1d6ecbb6a38ace335bd58",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -12670,7 +12722,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/rectorphp/rector/issues", "issues": "https://github.com/rectorphp/rector/issues",
"source": "https://github.com/rectorphp/rector/tree/2.6.1" "source": "https://github.com/rectorphp/rector/tree/2.6.3"
}, },
"funding": [ "funding": [
{ {
@@ -12678,7 +12730,7 @@
"type": "github" "type": "github"
} }
], ],
"time": "2026-08-03T17:30:34+00:00" "time": "2026-08-18T22:01:18+00:00"
}, },
{ {
"name": "sebastian/cli-parser", "name": "sebastian/cli-parser",