diff --git a/app/Console/Commands/Grap.php b/app/Console/Commands/Grap.php
index ea06f527..b24d2507 100644
--- a/app/Console/Commands/Grap.php
+++ b/app/Console/Commands/Grap.php
@@ -4,6 +4,7 @@ namespace App\Console\Commands;
use App\Actions\PlayerPerSeason;
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\MakeExcel;
use App\Console\Commands\Grapper\Sofascore\Rose;
@@ -16,14 +17,18 @@ use Illuminate\Console\Command;
class Grap extends Command
{
public static $options = [];
+
public static string $storage;
+
public static string $zipfile;
+
public static string $folder;
+
public static string $excel;
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()
{
@@ -33,25 +38,28 @@ class Grap extends Command
self::$options['base_url'] = 'https://www.sofascore.com/';
if (! self::$options['id']) {
- $txt = 'PARAMETERS' . PHP_EOL;
- $txt .= '--d debug' . PHP_EOL;
- $txt .= '--r restart range' . PHP_EOL;
- $txt .= '--f force' . PHP_EOL;
- $txt .= '--folder' . PHP_EOL;
- $txt .= '-----------------------------------------------------------' . PHP_EOL;
- $txt .= 'FUNCTION' . PHP_EOL;
- $txt .= ' 1 grapper DAILY & subDays ( default 3)' . PHP_EOL;
- $txt .= ' 2 grapper DATE' . PHP_EOL;
- $txt .= ' 3 grapper RANGE' . PHP_EOL;
- $txt .= ' 4 grapper ROSE' . PHP_EOL;
- $txt .= ' 5 import to excel from folder' . PHP_EOL;
- $txt .= ' 6 playeer/season' . PHP_EOL;
- $txt .= ' 7 settings to local' . PHP_EOL;
- $txt .= ' 11 move SQL' . PHP_EOL;
+ $txt = 'PARAMETERS'.PHP_EOL;
+ $txt .= '--d debug'.PHP_EOL;
+ $txt .= '--r restart range'.PHP_EOL;
+ $txt .= '--f force'.PHP_EOL;
+ $txt .= '--R read file'.PHP_EOL;
+ $txt .= '--S save to file'.PHP_EOL;
+ $txt .= '--folder'.PHP_EOL;
+ $txt .= '-----------------------------------------------------------'.PHP_EOL;
+ $txt .= 'FUNCTION'.PHP_EOL;
+ $txt .= ' 1 grapper DAILY & subDays ( default 3)'.PHP_EOL;
+ $txt .= ' 2 grapper DATE'.PHP_EOL;
+ $txt .= ' 3 grapper RANGE'.PHP_EOL;
+ $txt .= ' 4 grapper ROSE'.PHP_EOL;
+ $txt .= ' 5 import to excel from folder'.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('Task Id ' . self::$options['id'], 'gb');
+ Notice::note('Task Id '.self::$options['id'], 'gb');
switch (self::$options['id']) {
@@ -111,6 +119,10 @@ class Grap extends Command
SqlMover::run();
break;
+ case '12':
+ GrapperTest::load();
+ break;
+
default:
Notice::note('function not implemented yet', 'br', 1);
}
diff --git a/app/Console/Commands/Grapper/Sofascore/GrapperTest.php b/app/Console/Commands/Grapper/Sofascore/GrapperTest.php
new file mode 100644
index 00000000..29d368c4
--- /dev/null
+++ b/app/Console/Commands/Grapper/Sofascore/GrapperTest.php
@@ -0,0 +1,66 @@
+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);
+ }
+}
diff --git a/app/Console/Commands/Grapper/Sofascore/Helper/CurlLivescore.php b/app/Console/Commands/Grapper/Sofascore/Helper/CurlLivescore.php
new file mode 100644
index 00000000..25ce3eaa
--- /dev/null
+++ b/app/Console/Commands/Grapper/Sofascore/Helper/CurlLivescore.php
@@ -0,0 +1,61 @@
+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([
'default' => 1,
'sm' => 3,
@@ -67,10 +86,10 @@ class Statistic extends BaseDashboard
Select::make('league_id')
->live()
->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')
->hiddenLabel()
- ->options(fn() => LoadStatisticFixturesLeaguesOptions::load(1))
+ ->options(fn () => LoadStatisticFixturesLeaguesOptions::load(1))
->placeholder('League')
->afterStateUpdated(function (callable $set, $state) {
$set('match_id', null);
@@ -81,7 +100,7 @@ class Statistic extends BaseDashboard
Select::make('match_id')
->live()
->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')
->options(function (Get $get) {
return LoadStatisticFixturesMatchOptions::load($get('league_id'));
@@ -105,12 +124,11 @@ class Statistic extends BaseDashboard
}
})
->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) {
if ($get('match_id')) {
$res = StatisticFixtures::where('id', $get('match_id'))->first();
-
$arr = [];
if ($res) {
$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')
->color('success')
->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')
->selectablePlaceholder(false)
->options([
@@ -189,13 +207,13 @@ class Statistic extends BaseDashboard
->hiddenLabel()
->prefix('SPM')
->placeholder('Similar Past Matches')
- ->suffix(fn(Get $get): string|HtmlString => $get('similar_past_matches') != 'none' ? new HtmlString('
± ' . $get('accuracy') . '
') : '')
+ ->suffix(fn (Get $get): string|HtmlString => $get('similar_past_matches') != 'none' ? new HtmlString('± '.$get('accuracy').'
') : '')
->prefixAction(
Action::make('iconInfo')
->icon('phosphor-question-fill')
// ->color(fn(Get $get): string => $get('similar_past_matches') != 'none' ? 'success' : 'primary')
->color('success')
- ->tooltip(fn() => $this->tooltip_similar_past_matches())
+ ->tooltip(fn () => $this->tooltip_similar_past_matches())
)
->default('none')
->selectablePlaceholder(false)
@@ -212,7 +230,7 @@ class Statistic extends BaseDashboard
Slider::make('accuracy')
->live()
->hiddenLabel()
- ->hidden(fn(Get $get) => $get('similar_past_matches') == 'none')
+ ->hidden(fn (Get $get) => $get('similar_past_matches') == 'none')
->fillTrack()
->minValue(0)
->maxValue(0.25)
@@ -228,17 +246,17 @@ class Statistic extends BaseDashboard
->hiddenLabel()
->allowHtml()
->placeholder('Player')
- ->hidden(fn(Get $get) => $get('similar_past_matches') != 'none')
- ->prefixIconColor(fn(Get $get): string => $get('similar_past_matches') == 'none' ? 'success' : '')
+ ->hidden(fn (Get $get) => $get('similar_past_matches') != 'none')
+ ->prefixIconColor(fn (Get $get): string => $get('similar_past_matches') == 'none' ? 'success' : '')
->prefixIcon('icon-player')
->preload()
->searchable()
- ->extraAttributes(fn() => ['id' => 'player_selector'])
+ ->extraAttributes(fn () => ['id' => 'player_selector'])
->suffixAction(
Action::make('iconInfo')
->icon('phosphor-question-fill')
->color('success')
- ->tooltip(fn() => $this->tooltip_player_info())
+ ->tooltip(fn () => $this->tooltip_player_info())
)
->options(function (Get $get) {
return LoadPlayer::load($get);
@@ -249,7 +267,7 @@ class Statistic extends BaseDashboard
->placeholder('Time on field')
->prefixIcon('phosphor-watch-fill')
->default('all')
- ->hidden(fn(Get $get) => ! $get('ss_player_id'))
+ ->hidden(fn (Get $get) => ! $get('ss_player_id'))
->prefixIconColor('success')
->selectablePlaceholder(false)
->options([
@@ -289,7 +307,7 @@ class Statistic extends BaseDashboard
->placeholder('All Seasons')
->prefixIconColor('success')
// ->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')
->preload()
->options(function (Get $get) {
@@ -298,30 +316,30 @@ class Statistic extends BaseDashboard
DatePicker::make('start_date')
->live()
->hiddenLabel()
- ->hidden(fn(Get $get) => $get('season_or_date') == 'season')
+ ->hidden(fn (Get $get) => $get('season_or_date') == 'season')
->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')
->prefix('Start')
->suffixAction(
Action::make('clear_start')
->icon('phosphor-x')
->color('gray')
- ->action(fn(Set $set) => $set('start_date', null))
+ ->action(fn (Set $set) => $set('start_date', null))
),
DatePicker::make('end_date')
->live()
->hiddenLabel()
- ->hidden(fn(Get $get) => $get('season_or_date') == 'season')
+ ->hidden(fn (Get $get) => $get('season_or_date') == 'season')
->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')
->prefix('End')
->suffixAction(
Action::make('clear_end')
->icon('phosphor-x')
->color('gray')
- ->action(fn(Set $set) => $set('end_date', null))
+ ->action(fn (Set $set) => $set('end_date', null))
),
]);
}
diff --git a/composer.json b/composer.json
index cbe5e486..c6515c37 100644
--- a/composer.json
+++ b/composer.json
@@ -21,6 +21,7 @@
"laravel/tinker": "*",
"mongodb/laravel-mongodb": "^5.1",
"mongodb/mongodb": "^2.2",
+ "neitanod/forceutf8": "^2.0",
"outhebox/blade-flags": "*",
"phpoffice/phpspreadsheet": "^5.9",
"spatie/simple-excel": "^3.9",
diff --git a/composer.lock b/composer.lock
index 3e0f5cd2..881aecbc 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": "b00c887f246ff78cec67da8281097834",
+ "content-hash": "8d70480aebb8cfe694d402279beba062",
"packages": [
{
"name": "agencetwogether/hookshelper",
@@ -2946,16 +2946,16 @@
},
{
"name": "laravel/framework",
- "version": "v12.65.0",
+ "version": "v12.67.0",
"source": {
"type": "git",
"url": "https://github.com/laravel/framework.git",
- "reference": "99a8fb3153f962a323377d6742be08da86bcccb8"
+ "reference": "fe2cdaba052cbb9f350761ccefc7ac221cbdf0b5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/framework/zipball/99a8fb3153f962a323377d6742be08da86bcccb8",
- "reference": "99a8fb3153f962a323377d6742be08da86bcccb8",
+ "url": "https://api.github.com/repos/laravel/framework/zipball/fe2cdaba052cbb9f350761ccefc7ac221cbdf0b5",
+ "reference": "fe2cdaba052cbb9f350761ccefc7ac221cbdf0b5",
"shasum": ""
},
"require": {
@@ -3164,20 +3164,20 @@
"issues": "https://github.com/laravel/framework/issues",
"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",
- "version": "v0.3.22",
+ "version": "v0.3.23",
"source": {
"type": "git",
"url": "https://github.com/laravel/prompts.git",
- "reference": "02b89b39e8972a998db4d5d4ad4719239dd4aee4"
+ "reference": "b7b4c35e5bc47450f6b6238c6cc9c47ba19b2221"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/prompts/zipball/02b89b39e8972a998db4d5d4ad4719239dd4aee4",
- "reference": "02b89b39e8972a998db4d5d4ad4719239dd4aee4",
+ "url": "https://api.github.com/repos/laravel/prompts/zipball/b7b4c35e5bc47450f6b6238c6cc9c47ba19b2221",
+ "reference": "b7b4c35e5bc47450f6b6238c6cc9c47ba19b2221",
"shasum": ""
},
"require": {
@@ -3221,9 +3221,9 @@
"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.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",
@@ -3357,16 +3357,16 @@
},
{
"name": "league/commonmark",
- "version": "2.9.2",
+ "version": "2.10.0",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/commonmark.git",
- "reference": "72e9a87efcf41a8e83be3ed0866b69d77565cb12"
+ "reference": "d2d1aa8b35e072966c89bc0c66cf926e56767dc4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/72e9a87efcf41a8e83be3ed0866b69d77565cb12",
- "reference": "72e9a87efcf41a8e83be3ed0866b69d77565cb12",
+ "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/d2d1aa8b35e072966c89bc0c66cf926e56767dc4",
+ "reference": "d2d1aa8b35e072966c89bc0c66cf926e56767dc4",
"shasum": ""
},
"require": {
@@ -3403,7 +3403,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "2.10-dev"
+ "dev-main": "2.11-dev"
}
},
"autoload": {
@@ -3460,7 +3460,7 @@
"type": "tidelift"
}
],
- "time": "2026-08-11T00:58:45+00:00"
+ "time": "2026-08-11T16:06:25+00:00"
},
{
"name": "league/config",
@@ -4091,16 +4091,16 @@
},
{
"name": "livewire/livewire",
- "version": "v4.4.0",
+ "version": "v4.4.1",
"source": {
"type": "git",
"url": "https://github.com/livewire/livewire.git",
- "reference": "514b29d5a23594d4e4846494f580268b20c2f11e"
+ "reference": "0c925c55b4a5c134f2fb147efa4b9f53a837d866"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/livewire/livewire/zipball/514b29d5a23594d4e4846494f580268b20c2f11e",
- "reference": "514b29d5a23594d4e4846494f580268b20c2f11e",
+ "url": "https://api.github.com/repos/livewire/livewire/zipball/0c925c55b4a5c134f2fb147efa4b9f53a837d866",
+ "reference": "0c925c55b4a5c134f2fb147efa4b9f53a837d866",
"shasum": ""
},
"require": {
@@ -4155,7 +4155,7 @@
"description": "A front-end framework for Laravel.",
"support": {
"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": [
{
@@ -4163,7 +4163,7 @@
"type": "github"
}
],
- "time": "2026-08-10T15:24:22+00:00"
+ "time": "2026-08-18T11:39:06+00:00"
},
{
"name": "maennchen/zipstream-php",
@@ -4352,24 +4352,24 @@
},
{
"name": "masterminds/html5",
- "version": "2.10.1",
+ "version": "2.11.0",
"source": {
"type": "git",
"url": "https://github.com/Masterminds/html5-php.git",
- "reference": "fd5018f6815fff903946d0564977b44ce8010e29"
+ "reference": "a1e7a2f88ee13635d86fc61cfbdf2306a76ddfc7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/fd5018f6815fff903946d0564977b44ce8010e29",
- "reference": "fd5018f6815fff903946d0564977b44ce8010e29",
+ "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/a1e7a2f88ee13635d86fc61cfbdf2306a76ddfc7",
+ "reference": "a1e7a2f88ee13635d86fc61cfbdf2306a76ddfc7",
"shasum": ""
},
"require": {
"ext-dom": "*",
- "php": ">=5.3.0"
+ "php": ">=7.4"
},
"require-dev": {
- "phpunit/phpunit": "^4.8.35 || ^5.7.21 || ^6 || ^7 || ^8 || ^9 || ^10"
+ "phpunit/phpunit": "^6 || ^7 || ^8 || ^9 || ^10"
},
"type": "library",
"extra": {
@@ -4413,9 +4413,9 @@
],
"support": {
"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",
@@ -4705,24 +4705,24 @@
},
{
"name": "mongodb/mongodb",
- "version": "2.2.0",
+ "version": "2.3.0",
"source": {
"type": "git",
- "url": "https://github.com/mongodb/mongo-php-library.git",
- "reference": "bbb13f969e37e047fd822527543df55fdc1c9298"
+ "url": "https://github.com/mongodb/mongo-php-library",
+ "reference": "12e56461166d915e3dd8e4969ad0940ed5207d88"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/mongodb/mongo-php-library/zipball/bbb13f969e37e047fd822527543df55fdc1c9298",
- "reference": "bbb13f969e37e047fd822527543df55fdc1c9298",
+ "url": "https://api.github.com/repos/mongodb/mongo-php-library/zipball/12e56461166d915e3dd8e4969ad0940ed5207d88",
+ "reference": "12e56461166d915e3dd8e4969ad0940ed5207d88",
"shasum": ""
},
"require": {
"composer-runtime-api": "^2.0",
- "ext-mongodb": "^2.2",
+ "ext-mongodb": "^2.3",
"php": "^8.1",
"psr/log": "^1.1.4|^2|^3",
- "symfony/polyfill-php85": "^1.32"
+ "symfony/polyfill-php85": "^1.33"
},
"replace": {
"mongodb/builder": "*"
@@ -4774,11 +4774,7 @@
"mongodb",
"persistence"
],
- "support": {
- "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"
+ "time": "2026-04-28T12:50:06+00:00"
},
{
"name": "monolog/monolog",
@@ -4883,6 +4879,47 @@
],
"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",
"version": "3.13.2",
@@ -5064,16 +5101,16 @@
},
{
"name": "nette/schema",
- "version": "v1.3.5",
+ "version": "v1.3.6",
"source": {
"type": "git",
"url": "https://github.com/nette/schema.git",
- "reference": "f0ab1a3cda782dbc5da270d28545236aa80c4002"
+ "reference": "c54350438cd6914616f790a49cb424605f421562"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nette/schema/zipball/f0ab1a3cda782dbc5da270d28545236aa80c4002",
- "reference": "f0ab1a3cda782dbc5da270d28545236aa80c4002",
+ "url": "https://api.github.com/repos/nette/schema/zipball/c54350438cd6914616f790a49cb424605f421562",
+ "reference": "c54350438cd6914616f790a49cb424605f421562",
"shasum": ""
},
"require": {
@@ -5125,9 +5162,9 @@
],
"support": {
"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",
@@ -5781,16 +5818,16 @@
},
{
"name": "pragmarx/google2fa",
- "version": "v9.0.0",
+ "version": "v9.1.0",
"source": {
"type": "git",
"url": "https://github.com/antonioribeiro/google2fa.git",
- "reference": "e6bc62dd6ae83acc475f57912e27466019a1f2cf"
+ "reference": "f00bc788c555adfb6765c437ff3538e59cd88af1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/antonioribeiro/google2fa/zipball/e6bc62dd6ae83acc475f57912e27466019a1f2cf",
- "reference": "e6bc62dd6ae83acc475f57912e27466019a1f2cf",
+ "url": "https://api.github.com/repos/antonioribeiro/google2fa/zipball/f00bc788c555adfb6765c437ff3538e59cd88af1",
+ "reference": "f00bc788c555adfb6765c437ff3538e59cd88af1",
"shasum": ""
},
"require": {
@@ -5798,8 +5835,11 @@
"php": "^7.1|^8.0"
},
"require-dev": {
- "phpstan/phpstan": "^1.9",
- "phpunit/phpunit": "^7.5.15|^8.5|^9.0"
+ "phpstan/phpstan": "^1.0|^2.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",
"autoload": {
@@ -5822,14 +5862,23 @@
"keywords": [
"2fa",
"Authentication",
+ "MFA",
"Two Factor Authentication",
- "google2fa"
+ "google-authenticator",
+ "google2fa",
+ "hotp",
+ "otp",
+ "rfc4226",
+ "rfc6238",
+ "totp"
],
"support": {
+ "docs": "https://github.com/antonioribeiro/google2fa#readme",
"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",
@@ -10171,16 +10220,16 @@
"packages-dev": [
{
"name": "barryvdh/laravel-debugbar",
- "version": "v4.4.1",
+ "version": "v4.4.2",
"source": {
"type": "git",
"url": "https://github.com/fruitcake/laravel-debugbar.git",
- "reference": "389157fb616e5c5d19d16a88fd9bfcf3e3248e9b"
+ "reference": "18d1c1c64cc5d7794a2c52a2165fe6121e28ed44"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/fruitcake/laravel-debugbar/zipball/389157fb616e5c5d19d16a88fd9bfcf3e3248e9b",
- "reference": "389157fb616e5c5d19d16a88fd9bfcf3e3248e9b",
+ "url": "https://api.github.com/repos/fruitcake/laravel-debugbar/zipball/18d1c1c64cc5d7794a2c52a2165fe6121e28ed44",
+ "reference": "18d1c1c64cc5d7794a2c52a2165fe6121e28ed44",
"shasum": ""
},
"require": {
@@ -10255,7 +10304,7 @@
],
"support": {
"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": [
{
@@ -10267,7 +10316,7 @@
"type": "github"
}
],
- "time": "2026-08-03T06:23:16+00:00"
+ "time": "2026-08-20T12:02:04+00:00"
},
{
"name": "brianium/paratest",
@@ -10647,19 +10696,21 @@
},
{
"name": "hamcrest/hamcrest-php",
- "version": "v2.1.1",
+ "version": "v3.0.0",
"source": {
"type": "git",
"url": "https://github.com/hamcrest/hamcrest-php.git",
- "reference": "f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487"
+ "reference": "b61cd040da1a4925bc90a51c074f5297e7c0fa52"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487",
- "reference": "f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487",
+ "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/b61cd040da1a4925bc90a51c074f5297e7c0fa52",
+ "reference": "b61cd040da1a4925bc90a51c074f5297e7c0fa52",
"shasum": ""
},
"require": {
+ "ext-ctype": "*",
+ "ext-dom": "*",
"php": "^7.4|^8.0"
},
"replace": {
@@ -10668,13 +10719,15 @@
"kodova/hamcrest-php": "*"
},
"require-dev": {
+ "phpstan/phpstan": "^2.1",
+ "phpstan/phpstan-phpunit": "^2.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"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.1-dev"
+ "dev-master": "3.0-dev"
}
},
"autoload": {
@@ -10692,9 +10745,9 @@
],
"support": {
"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",
@@ -10908,16 +10961,16 @@
},
{
"name": "laravel/sail",
- "version": "v1.65.0",
+ "version": "v1.67.0",
"source": {
"type": "git",
"url": "https://github.com/laravel/sail.git",
- "reference": "d4b92139858d2a189a6302ca133e494f58afe20b"
+ "reference": "639e03ac12cf23def171770bcab05758045b2642"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/sail/zipball/d4b92139858d2a189a6302ca133e494f58afe20b",
- "reference": "d4b92139858d2a189a6302ca133e494f58afe20b",
+ "url": "https://api.github.com/repos/laravel/sail/zipball/639e03ac12cf23def171770bcab05758045b2642",
+ "reference": "639e03ac12cf23def171770bcab05758045b2642",
"shasum": ""
},
"require": {
@@ -10967,33 +11020,32 @@
"issues": "https://github.com/laravel/sail/issues",
"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",
- "version": "1.6.12",
+ "version": "1.6.15",
"source": {
"type": "git",
"url": "https://github.com/mockery/mockery.git",
- "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699"
+ "reference": "967a801bd188989a5669bd280f252d51c0fdc9ee"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/mockery/mockery/zipball/1f4efdd7d3beafe9807b08156dfcb176d18f1699",
- "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699",
+ "url": "https://api.github.com/repos/mockery/mockery/zipball/967a801bd188989a5669bd280f252d51c0fdc9ee",
+ "reference": "967a801bd188989a5669bd280f252d51c0fdc9ee",
"shasum": ""
},
"require": {
- "hamcrest/hamcrest-php": "^2.0.1",
- "lib-pcre": ">=7.0",
+ "hamcrest/hamcrest-php": "^2.0 || ^3.0",
"php": ">=7.3"
},
"conflict": {
"phpunit/phpunit": "<8.0"
},
"require-dev": {
- "phpunit/phpunit": "^8.5 || ^9.6.17",
- "symplify/easy-coding-standard": "^12.1.14"
+ "phpunit/phpunit": "^9.6.36",
+ "symplify/easy-coding-standard": "^13.2.17"
},
"type": "library",
"autoload": {
@@ -11050,7 +11102,7 @@
"security": "https://github.com/mockery/mockery/security/advisories",
"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",
@@ -12622,16 +12674,16 @@
},
{
"name": "rector/rector",
- "version": "2.6.1",
+ "version": "2.6.3",
"source": {
"type": "git",
"url": "https://github.com/rectorphp/rector.git",
- "reference": "b8e68f058bca43e01a2e1caa51ef022d6551ed95"
+ "reference": "7e46709996a4b3dc59e1d6ecbb6a38ace335bd58"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/rectorphp/rector/zipball/b8e68f058bca43e01a2e1caa51ef022d6551ed95",
- "reference": "b8e68f058bca43e01a2e1caa51ef022d6551ed95",
+ "url": "https://api.github.com/repos/rectorphp/rector/zipball/7e46709996a4b3dc59e1d6ecbb6a38ace335bd58",
+ "reference": "7e46709996a4b3dc59e1d6ecbb6a38ace335bd58",
"shasum": ""
},
"require": {
@@ -12670,7 +12722,7 @@
],
"support": {
"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": [
{
@@ -12678,7 +12730,7 @@
"type": "github"
}
],
- "time": "2026-08-03T17:30:34+00:00"
+ "time": "2026-08-18T22:01:18+00:00"
},
{
"name": "sebastian/cli-parser",