升级到 php8.2

格式化代码
This commit is contained in:
iVampireSP.com 2023-01-05 22:12:47 +08:00
parent b499284855
commit af6c0d97b4
No known key found for this signature in database
GPG Key ID: 2F7B001CA27A8132
13 changed files with 402 additions and 388 deletions

View File

@ -82,24 +82,9 @@ public function handle(): int
return CommandAlias::SUCCESS; return CommandAlias::SUCCESS;
} }
public function addFileToZip(string $path, ZipArchive $zip): void
{
$handler = opendir($path);
while (($filename = readdir($handler)) !== false) {
if ($filename != '.' && $filename != '..') {
if (is_dir($path . '/' . $filename)) {
$this->addFileToZip($path . '/' . $filename, $zip);
} else {
$zip->addFile($path . '/' . $filename);
}
}
}
@closedir($handler);
}
public function upload($node_type) public function upload($node_type)
{ {
$this->warn("正在上传 ${node_type} 文件。"); $this->warn("正在上传 {$node_type} 文件。");
$this->info('正在打包 config 目录。'); $this->info('正在打包 config 目录。');
if ($node_type === 'master') { if ($node_type === 'master') {
@ -114,12 +99,12 @@ public function upload($node_type)
$this->info('正在上传 config 目录。'); $this->info('正在上传 config 目录。');
$cache_key = "${node_type}_config_zip"; $cache_key = "{$node_type}_config_zip";
Cluster::forever($cache_key, file_get_contents($cacheZip)); Cluster::forever($cache_key, file_get_contents($cacheZip));
// md5 // md5
$this->info('正在报告 cache 目录的 MD5 值。'); $this->info('正在报告 cache 目录的 MD5 值。');
$cache_md5_key = "${node_type}_config_zip_md5"; $cache_md5_key = "{$node_type}_config_zip_md5";
Cluster::forever($cache_md5_key, md5_file($cacheZip)); Cluster::forever($cache_md5_key, md5_file($cacheZip));
unlink($cacheZip); unlink($cacheZip);
@ -127,14 +112,29 @@ public function upload($node_type)
// 上传 .env 文件 // 上传 .env 文件
$this->info('正在上传 .env 文件。'); $this->info('正在上传 .env 文件。');
$env_key = "${node_type}_env"; $env_key = "{$node_type}_env";
Cluster::forever($env_key, file_get_contents(base_path('.env'))); Cluster::forever($env_key, file_get_contents(base_path('.env')));
// 上传 .env 文件的 MD5 // 上传 .env 文件的 MD5
$this->info('正在报告 .env 文件的 MD5 值。'); $this->info('正在报告 .env 文件的 MD5 值。');
$env_md5_key = "${node_type}_env_md5"; $env_md5_key = "{$node_type}_env_md5";
Cluster::forever($env_md5_key, md5_file(base_path('.env'))); Cluster::forever($env_md5_key, md5_file(base_path('.env')));
$this->info('完成。'); $this->info('完成。');
} }
public function addFileToZip(string $path, ZipArchive $zip): void
{
$handler = opendir($path);
while (($filename = readdir($handler)) !== false) {
if ($filename != '.' && $filename != '..') {
if (is_dir($path . '/' . $filename)) {
$this->addFileToZip($path . '/' . $filename, $zip);
} else {
$zip->addFile($path . '/' . $filename);
}
}
}
@closedir($handler);
}
} }

View File

@ -137,6 +137,59 @@ public function handle(): int
return CommandAlias::SUCCESS; return CommandAlias::SUCCESS;
} }
private function pipeCommand($command): void
{
$descriptor_spec = [
0 => ['pipe', 'r'],
1 => ['pipe', 'w'],
2 => ['pipe', 'w'],
];
$pipes = [];
$process = proc_open($command, $descriptor_spec, $pipes);
if (is_resource($process)) {
while ($s = fgets($pipes[1])) {
echo $s;
}
}
// 命令结束后,关闭管道
fclose($pipes[0]);
fclose($pipes[1]);
fclose($pipes[2]);
// 关闭进程
proc_close($process);
}
private function report(): void
{
$this->info('正在报告此系统,请保持此命令一直运行。');
Artisan::call('config:cache');
$cpu = $this->getCpuUsage();
while (1) {
Cluster::publish('system_usage', [
'cpu' => $cpu,
]);
sleep(1);
}
}
private function getCpuUsage(): float
{
// 获取 CPU 使用率
$cpu = sys_getloadavg();
return $cpu[0];
}
private function work(): void private function work(): void
{ {
@ -187,57 +240,4 @@ private function dispatchEvent($event, $message = []): void
$events[$event]($message); $events[$event]($message);
} }
} }
private function report(): void
{
$this->info('正在报告此系统,请保持此命令一直运行。');
Artisan::call('config:cache');
$cpu = $this->getCpuUsage();
while (1) {
Cluster::publish('system_usage', [
'cpu' => $cpu,
]);
sleep(1);
}
}
private function getCpuUsage(): float
{
// 获取 CPU 使用率
$cpu = sys_getloadavg();
return $cpu[0];
}
private function pipeCommand($command): void
{
$descriptor_spec = [
0 => ['pipe', 'r'],
1 => ['pipe', 'w'],
2 => ['pipe', 'w'],
];
$process = proc_open($command, $descriptor_spec, $pipes);
if (is_resource($process)) {
while ($s = fgets($pipes[1])) {
echo $s;
}
}
// 命令结束后,关闭管道
fclose($pipes[0]);
fclose($pipes[1]);
fclose($pipes[2]);
// 关闭进程
proc_close($process);
}
} }

View File

@ -66,6 +66,16 @@ public function store(Request $request): RedirectResponse
} }
private function rules(): array
{
return [
'id' => 'required|string|max:255',
'name' => 'required|string|max:255',
'url' => 'required|url',
'status' => 'required|string|in:up,down,maintenance',
];
}
/** /**
* Display the specified resource. * Display the specified resource.
* *
@ -165,6 +175,9 @@ public function allows_store(Request $request, Module $module)
return back()->with('success', '已信任该模块。'); return back()->with('success', '已信任该模块。');
} }
// fast login
public function allows_destroy(Module $module, ModuleAllow $allow) public function allows_destroy(Module $module, ModuleAllow $allow)
{ {
$allow->delete(); $allow->delete();
@ -172,8 +185,6 @@ public function allows_destroy(Module $module, ModuleAllow $allow)
return redirect()->route('admin.modules.allows', $module)->with('success', '取消信任完成。'); return redirect()->route('admin.modules.allows', $module)->with('success', '取消信任完成。');
} }
// fast login
public function fast_login(Module $module): View|RedirectResponse public function fast_login(Module $module): View|RedirectResponse
{ {
$resp = $module->baseRequest('post', 'fast-login', []); $resp = $module->baseRequest('post', 'fast-login', []);
@ -185,14 +196,4 @@ public function fast_login(Module $module): View|RedirectResponse
return redirect()->route('admin.modules.show', $module)->with('error', '快速登录失败,可能是模块不支持。'); return redirect()->route('admin.modules.show', $module)->with('error', '快速登录失败,可能是模块不支持。');
} }
} }
private function rules(): array
{
return [
'id' => 'required|string|max:255',
'name' => 'required|string|max:255',
'url' => 'required|url',
'status' => 'required|string|in:up,down,maintenance',
];
}
} }

View File

@ -23,7 +23,8 @@ public function module_reports(Request $request)
return $this->success($servers); return $this->success($servers);
} }
public function nodes() { public function nodes()
{
$nodes = Cluster::nodes(true); $nodes = Cluster::nodes(true);
$current_node_id = Cluster::currentNode()['id']; $current_node_id = Cluster::currentNode()['id'];

View File

@ -2,9 +2,7 @@
namespace App\Http\Middleware; namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Middleware\TrustProxies as Middleware; use Illuminate\Http\Middleware\TrustProxies as Middleware;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Request as RequestAlias; use Symfony\Component\HttpFoundation\Request as RequestAlias;
class TrustProxies extends Middleware class TrustProxies extends Middleware

View File

@ -77,31 +77,6 @@ class Balance extends Model
'amount' => 'decimal:2', 'amount' => 'decimal:2',
]; ];
public function user(): BelongsToAlias
{
return $this->belongsTo(User::class);
}
public function scopeThisUser($query)
{
return $query->where('user_id', auth()->id());
}
public function isPaid(): bool
{
return $this->paid_at !== null;
}
public function isOverdue(): bool
{
return $this->created_at->diffInDays(now()) > 1 && !$this->isPaid();
}
public function canPay(): bool
{
return !$this->isPaid() && !$this->isOverdue();
}
protected static function boot() protected static function boot()
{ {
parent::boot(); parent::boot();
@ -113,4 +88,29 @@ protected static function boot()
$balance->order_id = date('YmdHis') . $balance->id . rand(1000, 9999); $balance->order_id = date('YmdHis') . $balance->id . rand(1000, 9999);
}); });
} }
public function user(): BelongsToAlias
{
return $this->belongsTo(User::class);
}
public function scopeThisUser($query)
{
return $query->where('user_id', auth()->id());
}
public function canPay(): bool
{
return !$this->isPaid() && !$this->isOverdue();
}
public function isPaid(): bool
{
return $this->paid_at !== null;
}
public function isOverdue(): bool
{
return $this->created_at->diffInDays(now()) > 1 && !$this->isPaid();
}
} }

View File

@ -124,22 +124,6 @@ class User extends Authenticatable
'birthday_at' => 'date', 'birthday_at' => 'date',
]; ];
public function hosts(): HasMany
{
return $this->hasMany(Host::class);
}
public function user_group(): BelongsTo
{
return $this->belongsTo(UserGroup::class);
}
public function scopeBirthday()
{
return $this->select(['id', 'name', 'birthday_at', 'email_md5', 'created_at'])->whereMonth('birthday_at', now()->month)
->whereDay('birthday_at', now()->day);
}
protected static function boot() protected static function boot()
{ {
parent::boot(); parent::boot();
@ -159,4 +143,20 @@ protected static function boot()
} }
}); });
} }
public function hosts(): HasMany
{
return $this->hasMany(Host::class);
}
public function user_group(): BelongsTo
{
return $this->belongsTo(UserGroup::class);
}
public function scopeBirthday()
{
return $this->select(['id', 'name', 'birthday_at', 'email_md5', 'created_at'])->whereMonth('birthday_at', now()->month)
->whereDay('birthday_at', now()->day);
}
} }

View File

@ -73,38 +73,6 @@ class Reply extends Model
'role' 'role'
]; ];
public function scopeWorkOrderId($query, $work_order_id)
{
return $query->where('work_order_id', $work_order_id);
}
public function scopeWithUser($query)
{
return $query->with(['user' => function ($query) {
$query->select('id', 'name', 'email_md5');
}]);
}
public function workOrder(): BelongsTo
{
return $this->belongsTo(WorkOrder::class, 'work_order_id', 'id');
}
public function module(): BelongsTo
{
return $this->belongsTo(Module::class);
}
public function user(): BelongsTo
{
return $this->belongsTo(User::class);
}
public function safeDelete(): void
{
dispatch(new \App\Jobs\Module\WorkOrder\Reply($this, 'delete'));
}
protected static function boot() protected static function boot()
{ {
parent::boot(); parent::boot();
@ -159,4 +127,36 @@ protected static function boot()
dispatch(new \App\Jobs\Module\WorkOrder\Reply($model, 'patch')); dispatch(new \App\Jobs\Module\WorkOrder\Reply($model, 'patch'));
}); });
} }
public function scopeWorkOrderId($query, $work_order_id)
{
return $query->where('work_order_id', $work_order_id);
}
public function scopeWithUser($query)
{
return $query->with(['user' => function ($query) {
$query->select('id', 'name', 'email_md5');
}]);
}
public function workOrder(): BelongsTo
{
return $this->belongsTo(WorkOrder::class, 'work_order_id', 'id');
}
public function module(): BelongsTo
{
return $this->belongsTo(Module::class);
}
public function user(): BelongsTo
{
return $this->belongsTo(User::class);
}
public function safeDelete(): void
{
dispatch(new \App\Jobs\Module\WorkOrder\Reply($this, 'delete'));
}
} }

View File

@ -89,6 +89,52 @@ class WorkOrder extends Model
'notify' => 'boolean' 'notify' => 'boolean'
]; ];
protected static function boot()
{
parent::boot();
static::creating(function (self $model) {
$model->uuid = Str::uuid()->toString();
if ($model->host_id) {
$model->load(['host']);
$model->module_id = $model->host->module_id;
}
if (auth('sanctum')->check()) {
$model->user_id = auth()->id();
if ($model->host_id) {
if (!$model->user_id == $model->host->user_id) {
throw new CommonException('user_id not match host user_id');
}
}
} else {
if (!$model->user_id) {
throw new CommonException('user_id is required');
}
}
if ($model->host_id) {
$model->host->load('module');
$module = $model->host->module;
if ($module === null) {
$model->status = 'open';
} else {
$model->status = 'pending';
}
}
$model->notify = true;
});
// updated
static::updated(function ($model) {
dispatch(new WorkOrderJob($model, 'put'));
});
}
public function scopeThisModule($query) public function scopeThisModule($query)
{ {
return $query->where('module_id', auth('module')->id()); return $query->where('module_id', auth('module')->id());
@ -147,50 +193,4 @@ public function safeDelete(): bool
return true; return true;
} }
protected static function boot()
{
parent::boot();
static::creating(function (self $model) {
$model->uuid = Str::uuid()->toString();
if ($model->host_id) {
$model->load(['host']);
$model->module_id = $model->host->module_id;
}
if (auth('sanctum')->check()) {
$model->user_id = auth()->id();
if ($model->host_id) {
if (!$model->user_id == $model->host->user_id) {
throw new CommonException('user_id not match host user_id');
}
}
} else {
if (!$model->user_id) {
throw new CommonException('user_id is required');
}
}
if ($model->host_id) {
$model->host->load('module');
$module = $model->host->module;
if ($module === null) {
$model->status = 'open';
} else {
$model->status = 'pending';
}
}
$model->notify = true;
});
// updated
static::updated(function ($model) {
dispatch(new WorkOrderJob($model, 'put'));
});
}
} }

View File

@ -2,7 +2,6 @@
namespace App\Providers; namespace App\Providers;
use App\Http\Middleware\TrustProxies;
use App\Models\PersonalAccessToken; use App\Models\PersonalAccessToken;
use Illuminate\Pagination\Paginator; use Illuminate\Pagination\Paginator;
use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Http;

View File

@ -9,6 +9,11 @@ class Cluster
public static string $prefix = 'cluster:'; public static string $prefix = 'cluster:';
public static function isCluster(): bool
{
return self::isMaster() || self::isSlave();
}
public static function isMaster(): bool public static function isMaster(): bool
{ {
return config('settings.node.type') === 'master'; return config('settings.node.type') === 'master';
@ -19,11 +24,6 @@ public static function isSlave(): bool
return config('settings.node.type') === 'slave'; return config('settings.node.type') === 'slave';
} }
public static function isCluster(): bool
{
return self::isMaster() || self::isSlave();
}
public static function publish($event, $data = []): void public static function publish($event, $data = []): void
{ {
Redis::publish('cluster_ready', json_encode([ Redis::publish('cluster_ready', json_encode([
@ -40,6 +40,28 @@ public static function publish($event, $data = []): void
self::registerThisNode(false); self::registerThisNode(false);
} }
public static function registerThisNode($report = true): void
{
$node_id = config('settings.node.id');
Cluster::hset('nodes', $node_id, [
'type' => config('settings.node.type'),
'id' => $node_id,
'ip' => config('settings.node.ip'),
// utc +8 timestamp
'last_heartbeat' => time(),
]);
if ($report) {
Cluster::publish('node.ok');
}
}
public static function hset($key, $value, $data = []): void
{
Redis::hset(self::$prefix . $key, $value, json_encode($data));
}
/** /**
* @param string|array $events 事件名称 * @param string|array $events 事件名称
* @param $callback callable 回调函数,接收一个参数,为事件数据。 * @param $callback callable 回调函数,接收一个参数,为事件数据。
@ -71,21 +93,11 @@ public static function listen(string|array $events, callable $callback, bool $ig
}); });
} }
public static function hset($key, $value, $data = []): void
{
Redis::hset(self::$prefix . $key, $value, json_encode($data));
}
public static function get($key, $default = null): string|array|null public static function get($key, $default = null): string|array|null
{ {
return Redis::get(self::$prefix . $key, $default); return Redis::get(self::$prefix . $key, $default);
} }
public static function set($key, $value, $ttl = null): void
{
Redis::set(self::$prefix . $key, $value, $ttl);
}
public static function forget($key): void public static function forget($key): void
{ {
Redis::forget(self::$prefix . $key); Redis::forget(self::$prefix . $key);
@ -97,6 +109,11 @@ public static function forever($key, $value): void
self::set($key, $value, -1); self::set($key, $value, -1);
} }
public static function set($key, $value, $ttl = null): void
{
Redis::set(self::$prefix . $key, $value, $ttl);
}
public static function hget($key, $hashKey, $default = []): string|array|null public static function hget($key, $hashKey, $default = []): string|array|null
{ {
$value = Redis::hget(self::$prefix . $key, $hashKey); $value = Redis::hget(self::$prefix . $key, $hashKey);
@ -104,13 +121,6 @@ public static function hget($key, $hashKey, $default = []): string|array|null
return $value ?: $default; return $value ?: $default;
} }
public static function hgetAll($hashKey, $default = []): array
{
$value = Redis::hgetall(self::$prefix . $hashKey);
return $value ?: $default;
}
public static function nodes($hide_ip = false): array public static function nodes($hide_ip = false): array
{ {
$nodes = self::hgetAll('nodes'); $nodes = self::hgetAll('nodes');
@ -126,21 +136,11 @@ public static function nodes($hide_ip = false): array
return $nodes; return $nodes;
} }
public static function registerThisNode($report = true): void public static function hgetAll($hashKey, $default = []): array
{ {
$node_id = config('settings.node.id'); $value = Redis::hgetall(self::$prefix . $hashKey);
Cluster::hset('nodes', $node_id, [ return $value ?: $default;
'type' => config('settings.node.type'),
'id' => $node_id,
'ip' => config('settings.node.ip'),
// utc +8 timestamp
'last_heartbeat' => time(),
]);
if ($report) {
Cluster::publish('node.ok');
}
} }
public static function currentNode() public static function currentNode()

View File

@ -8,7 +8,7 @@
], ],
"license": "MIT", "license": "MIT",
"require": { "require": {
"php": "^8.1", "php": "^8.2",
"ext-zip": "^1.19", "ext-zip": "^1.19",
"doctrine/dbal": "^3.4", "doctrine/dbal": "^3.4",
"erusev/parsedown": "^1.7", "erusev/parsedown": "^1.7",

303
composer.lock generated
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": "81fa8fb300376dbf0ae3eb8771d2018f", "content-hash": "7354c998d6e06ecf6a4dd7c044db632e",
"packages": [ "packages": [
{ {
"name": "bacon/bacon-qr-code", "name": "bacon/bacon-qr-code",
@ -813,16 +813,16 @@
}, },
{ {
"name": "doctrine/lexer", "name": "doctrine/lexer",
"version": "1.2.3", "version": "2.1.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/doctrine/lexer.git", "url": "https://github.com/doctrine/lexer.git",
"reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229" "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/doctrine/lexer/zipball/c268e882d4dbdd85e36e4ad69e02dc284f89d229", "url": "https://api.github.com/repos/doctrine/lexer/zipball/39ab8fcf5a51ce4b85ca97c7a7d033eb12831124",
"reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229", "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124",
"shasum": "", "shasum": "",
"mirrors": [ "mirrors": [
{ {
@ -832,18 +832,20 @@
] ]
}, },
"require": { "require": {
"doctrine/deprecations": "^1.0",
"php": "^7.1 || ^8.0" "php": "^7.1 || ^8.0"
}, },
"require-dev": { "require-dev": {
"doctrine/coding-standard": "^9.0", "doctrine/coding-standard": "^9 || ^10",
"phpstan/phpstan": "^1.3", "phpstan/phpstan": "^1.3",
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
"vimeo/psalm": "^4.11" "psalm/plugin-phpunit": "^0.18.3",
"vimeo/psalm": "^4.11 || ^5.0"
}, },
"type": "library", "type": "library",
"autoload": { "autoload": {
"psr-4": { "psr-4": {
"Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" "Doctrine\\Common\\Lexer\\": "src"
} }
}, },
"notification-url": "https://packagist.org/downloads/", "notification-url": "https://packagist.org/downloads/",
@ -875,7 +877,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/doctrine/lexer/issues", "issues": "https://github.com/doctrine/lexer/issues",
"source": "https://github.com/doctrine/lexer/tree/1.2.3" "source": "https://github.com/doctrine/lexer/tree/2.1.0"
}, },
"funding": [ "funding": [
{ {
@ -891,7 +893,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2022-02-28T11:07:21+00:00" "time": "2022-12-14T08:49:07+00:00"
}, },
{ {
"name": "dragonmantank/cron-expression", "name": "dragonmantank/cron-expression",
@ -962,16 +964,16 @@
}, },
{ {
"name": "egulias/email-validator", "name": "egulias/email-validator",
"version": "3.2.1", "version": "3.2.4",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/egulias/EmailValidator.git", "url": "https://github.com/egulias/EmailValidator.git",
"reference": "f88dcf4b14af14a98ad96b14b2b317969eab6715" "reference": "5f35e41eba05fdfbabd95d72f83795c835fb7ed2"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/egulias/EmailValidator/zipball/f88dcf4b14af14a98ad96b14b2b317969eab6715", "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/5f35e41eba05fdfbabd95d72f83795c835fb7ed2",
"reference": "f88dcf4b14af14a98ad96b14b2b317969eab6715", "reference": "5f35e41eba05fdfbabd95d72f83795c835fb7ed2",
"shasum": "", "shasum": "",
"mirrors": [ "mirrors": [
{ {
@ -981,7 +983,7 @@
] ]
}, },
"require": { "require": {
"doctrine/lexer": "^1.2", "doctrine/lexer": "^1.2|^2",
"php": ">=7.2", "php": ">=7.2",
"symfony/polyfill-intl-idn": "^1.15" "symfony/polyfill-intl-idn": "^1.15"
}, },
@ -1024,7 +1026,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/egulias/EmailValidator/issues", "issues": "https://github.com/egulias/EmailValidator/issues",
"source": "https://github.com/egulias/EmailValidator/tree/3.2.1" "source": "https://github.com/egulias/EmailValidator/tree/3.2.4"
}, },
"funding": [ "funding": [
{ {
@ -1032,7 +1034,7 @@
"type": "github" "type": "github"
} }
], ],
"time": "2022-06-18T20:57:19+00:00" "time": "2022-12-30T14:09:25+00:00"
}, },
{ {
"name": "erusev/parsedown", "name": "erusev/parsedown",
@ -3156,16 +3158,16 @@
}, },
{ {
"name": "nesbot/carbon", "name": "nesbot/carbon",
"version": "2.64.0", "version": "2.64.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/briannesbitt/Carbon.git", "url": "https://github.com/briannesbitt/Carbon.git",
"reference": "889546413c97de2d05063b8cb7b193c2531ea211" "reference": "f2e59963f4c4f4fdfb9fcfd752e8d2e2b79a4e2c"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/889546413c97de2d05063b8cb7b193c2531ea211", "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/f2e59963f4c4f4fdfb9fcfd752e8d2e2b79a4e2c",
"reference": "889546413c97de2d05063b8cb7b193c2531ea211", "reference": "f2e59963f4c4f4fdfb9fcfd752e8d2e2b79a4e2c",
"shasum": "", "shasum": "",
"mirrors": [ "mirrors": [
{ {
@ -3260,7 +3262,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2022-11-26T17:36:00+00:00" "time": "2023-01-01T23:17:36+00:00"
}, },
{ {
"name": "nette/schema", "name": "nette/schema",
@ -4663,16 +4665,16 @@
}, },
{ {
"name": "ramsey/collection", "name": "ramsey/collection",
"version": "1.2.2", "version": "1.3.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/ramsey/collection.git", "url": "https://github.com/ramsey/collection.git",
"reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" "reference": "ad7475d1c9e70b190ecffc58f2d989416af339b4"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", "url": "https://api.github.com/repos/ramsey/collection/zipball/ad7475d1c9e70b190ecffc58f2d989416af339b4",
"reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", "reference": "ad7475d1c9e70b190ecffc58f2d989416af339b4",
"shasum": "", "shasum": "",
"mirrors": [ "mirrors": [
{ {
@ -4682,29 +4684,40 @@
] ]
}, },
"require": { "require": {
"php": "^7.3 || ^8", "php": "^7.4 || ^8.0",
"symfony/polyfill-php81": "^1.23" "symfony/polyfill-php81": "^1.23"
}, },
"require-dev": { "require-dev": {
"captainhook/captainhook": "^5.3", "captainhook/plugin-composer": "^5.3",
"dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", "ergebnis/composer-normalize": "^2.28.3",
"ergebnis/composer-normalize": "^2.6", "fakerphp/faker": "^1.21",
"fakerphp/faker": "^1.5", "hamcrest/hamcrest-php": "^2.0",
"hamcrest/hamcrest-php": "^2", "jangregor/phpstan-prophecy": "^1.0",
"jangregor/phpstan-prophecy": "^0.8", "mockery/mockery": "^1.5",
"mockery/mockery": "^1.3", "php-parallel-lint/php-console-highlighter": "^1.0",
"php-parallel-lint/php-parallel-lint": "^1.3",
"phpcsstandards/phpcsutils": "^1.0.0-rc1",
"phpspec/prophecy-phpunit": "^2.0", "phpspec/prophecy-phpunit": "^2.0",
"phpstan/extension-installer": "^1", "phpstan/extension-installer": "^1.2",
"phpstan/phpstan": "^0.12.32", "phpstan/phpstan": "^1.9",
"phpstan/phpstan-mockery": "^0.12.5", "phpstan/phpstan-mockery": "^1.1",
"phpstan/phpstan-phpunit": "^0.12.11", "phpstan/phpstan-phpunit": "^1.3",
"phpunit/phpunit": "^8.5 || ^9", "phpunit/phpunit": "^9.5",
"psy/psysh": "^0.10.4", "psalm/plugin-mockery": "^1.1",
"slevomat/coding-standard": "^6.3", "psalm/plugin-phpunit": "^0.18.4",
"squizlabs/php_codesniffer": "^3.5", "ramsey/coding-standard": "^2.0.3",
"vimeo/psalm": "^4.4" "ramsey/conventional-commits": "^1.3",
"vimeo/psalm": "^5.4"
}, },
"type": "library", "type": "library",
"extra": {
"captainhook": {
"force-install": true
},
"ramsey/conventional-commits": {
"configFile": "conventional-commits.json"
}
},
"autoload": { "autoload": {
"psr-4": { "psr-4": {
"Ramsey\\Collection\\": "src/" "Ramsey\\Collection\\": "src/"
@ -4732,7 +4745,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/ramsey/collection/issues", "issues": "https://github.com/ramsey/collection/issues",
"source": "https://github.com/ramsey/collection/tree/1.2.2" "source": "https://github.com/ramsey/collection/tree/1.3.0"
}, },
"funding": [ "funding": [
{ {
@ -4744,7 +4757,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2021-10-10T03:01:02+00:00" "time": "2022-12-27T19:12:24+00:00"
}, },
{ {
"name": "ramsey/uuid", "name": "ramsey/uuid",
@ -5705,16 +5718,16 @@
}, },
{ {
"name": "symfony/error-handler", "name": "symfony/error-handler",
"version": "v6.2.1", "version": "v6.2.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/error-handler.git", "url": "https://github.com/symfony/error-handler.git",
"reference": "b4e41f62c1124378863ff2705158a60da3e4c6b9" "reference": "0926124c95d220499e2baf0fb465772af3a4eddb"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/error-handler/zipball/b4e41f62c1124378863ff2705158a60da3e4c6b9", "url": "https://api.github.com/repos/symfony/error-handler/zipball/0926124c95d220499e2baf0fb465772af3a4eddb",
"reference": "b4e41f62c1124378863ff2705158a60da3e4c6b9", "reference": "0926124c95d220499e2baf0fb465772af3a4eddb",
"shasum": "", "shasum": "",
"mirrors": [ "mirrors": [
{ {
@ -5762,7 +5775,7 @@
"description": "Provides tools to manage errors and ease debugging PHP code", "description": "Provides tools to manage errors and ease debugging PHP code",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/error-handler/tree/v6.2.1" "source": "https://github.com/symfony/error-handler/tree/v6.2.3"
}, },
"funding": [ "funding": [
{ {
@ -5778,20 +5791,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2022-12-01T21:07:46+00:00" "time": "2022-12-19T14:33:49+00:00"
}, },
{ {
"name": "symfony/event-dispatcher", "name": "symfony/event-dispatcher",
"version": "v6.2.0", "version": "v6.2.2",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/event-dispatcher.git", "url": "https://github.com/symfony/event-dispatcher.git",
"reference": "9efb1618fabee89515fe031314e8ed5625f85a53" "reference": "3ffeb31139b49bf6ef0bc09d1db95eac053388d1"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/9efb1618fabee89515fe031314e8ed5625f85a53", "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/3ffeb31139b49bf6ef0bc09d1db95eac053388d1",
"reference": "9efb1618fabee89515fe031314e8ed5625f85a53", "reference": "3ffeb31139b49bf6ef0bc09d1db95eac053388d1",
"shasum": "", "shasum": "",
"mirrors": [ "mirrors": [
{ {
@ -5851,7 +5864,7 @@
"description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/event-dispatcher/tree/v6.2.0" "source": "https://github.com/symfony/event-dispatcher/tree/v6.2.2"
}, },
"funding": [ "funding": [
{ {
@ -5867,7 +5880,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2022-11-02T09:08:04+00:00" "time": "2022-12-14T16:11:27+00:00"
}, },
{ {
"name": "symfony/event-dispatcher-contracts", "name": "symfony/event-dispatcher-contracts",
@ -5956,16 +5969,16 @@
}, },
{ {
"name": "symfony/finder", "name": "symfony/finder",
"version": "v6.1.3", "version": "v6.2.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/finder.git", "url": "https://github.com/symfony/finder.git",
"reference": "39696bff2c2970b3779a5cac7bf9f0b88fc2b709" "reference": "81eefbddfde282ee33b437ba5e13d7753211ae8e"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/finder/zipball/39696bff2c2970b3779a5cac7bf9f0b88fc2b709", "url": "https://api.github.com/repos/symfony/finder/zipball/81eefbddfde282ee33b437ba5e13d7753211ae8e",
"reference": "39696bff2c2970b3779a5cac7bf9f0b88fc2b709", "reference": "81eefbddfde282ee33b437ba5e13d7753211ae8e",
"shasum": "", "shasum": "",
"mirrors": [ "mirrors": [
{ {
@ -6006,7 +6019,7 @@
"description": "Finds files and directories via an intuitive fluent interface", "description": "Finds files and directories via an intuitive fluent interface",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/finder/tree/v6.1.3" "source": "https://github.com/symfony/finder/tree/v6.2.3"
}, },
"funding": [ "funding": [
{ {
@ -6022,20 +6035,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2022-07-29T07:42:06+00:00" "time": "2022-12-22T17:55:15+00:00"
}, },
{ {
"name": "symfony/http-client", "name": "symfony/http-client",
"version": "v6.2.0", "version": "v6.2.2",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/http-client.git", "url": "https://github.com/symfony/http-client.git",
"reference": "153540b6ed72eecdcb42dc847f8d8cf2e2516e8e" "reference": "7054ad466f836309aef511789b9c697bc986d8ce"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/http-client/zipball/153540b6ed72eecdcb42dc847f8d8cf2e2516e8e", "url": "https://api.github.com/repos/symfony/http-client/zipball/7054ad466f836309aef511789b9c697bc986d8ce",
"reference": "153540b6ed72eecdcb42dc847f8d8cf2e2516e8e", "reference": "7054ad466f836309aef511789b9c697bc986d8ce",
"shasum": "", "shasum": "",
"mirrors": [ "mirrors": [
{ {
@ -6097,7 +6110,7 @@
"description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously", "description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/http-client/tree/v6.2.0" "source": "https://github.com/symfony/http-client/tree/v6.2.2"
}, },
"funding": [ "funding": [
{ {
@ -6113,7 +6126,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2022-11-14T10:13:36+00:00" "time": "2022-12-14T16:11:27+00:00"
}, },
{ {
"name": "symfony/http-client-contracts", "name": "symfony/http-client-contracts",
@ -6204,16 +6217,16 @@
}, },
{ {
"name": "symfony/http-foundation", "name": "symfony/http-foundation",
"version": "v6.2.1", "version": "v6.2.2",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/http-foundation.git", "url": "https://github.com/symfony/http-foundation.git",
"reference": "d0bbd5a7e81b38f32504399b9199f265505b7bac" "reference": "ddf4dd35de1623e7c02013523e6c2137b67b636f"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/d0bbd5a7e81b38f32504399b9199f265505b7bac", "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ddf4dd35de1623e7c02013523e6c2137b67b636f",
"reference": "d0bbd5a7e81b38f32504399b9199f265505b7bac", "reference": "ddf4dd35de1623e7c02013523e6c2137b67b636f",
"shasum": "", "shasum": "",
"mirrors": [ "mirrors": [
{ {
@ -6268,7 +6281,7 @@
"description": "Defines an object-oriented layer for the HTTP specification", "description": "Defines an object-oriented layer for the HTTP specification",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/http-foundation/tree/v6.2.1" "source": "https://github.com/symfony/http-foundation/tree/v6.2.2"
}, },
"funding": [ "funding": [
{ {
@ -6284,20 +6297,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2022-12-04T18:26:13+00:00" "time": "2022-12-14T16:11:27+00:00"
}, },
{ {
"name": "symfony/http-kernel", "name": "symfony/http-kernel",
"version": "v6.2.2", "version": "v6.2.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/http-kernel.git", "url": "https://github.com/symfony/http-kernel.git",
"reference": "860a0189969b755cd571709bd32313aa8599867a" "reference": "56c0c0d051579d25aec059a21dfe469634396a0f"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/860a0189969b755cd571709bd32313aa8599867a", "url": "https://api.github.com/repos/symfony/http-kernel/zipball/56c0c0d051579d25aec059a21dfe469634396a0f",
"reference": "860a0189969b755cd571709bd32313aa8599867a", "reference": "56c0c0d051579d25aec059a21dfe469634396a0f",
"shasum": "", "shasum": "",
"mirrors": [ "mirrors": [
{ {
@ -6385,7 +6398,7 @@
"description": "Provides a structured process for converting a Request into a Response", "description": "Provides a structured process for converting a Request into a Response",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/http-kernel/tree/v6.2.2" "source": "https://github.com/symfony/http-kernel/tree/v6.2.3"
}, },
"funding": [ "funding": [
{ {
@ -6401,7 +6414,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2022-12-16T19:38:34+00:00" "time": "2022-12-28T15:05:50+00:00"
}, },
{ {
"name": "symfony/mailer", "name": "symfony/mailer",
@ -6490,16 +6503,16 @@
}, },
{ {
"name": "symfony/mime", "name": "symfony/mime",
"version": "v6.2.0", "version": "v6.2.2",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/mime.git", "url": "https://github.com/symfony/mime.git",
"reference": "1e8005a7cbd79fb824ad81308ef2a76592a08bc0" "reference": "8c98bf40406e791043890a163f6f6599b9cfa1ed"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/mime/zipball/1e8005a7cbd79fb824ad81308ef2a76592a08bc0", "url": "https://api.github.com/repos/symfony/mime/zipball/8c98bf40406e791043890a163f6f6599b9cfa1ed",
"reference": "1e8005a7cbd79fb824ad81308ef2a76592a08bc0", "reference": "8c98bf40406e791043890a163f6f6599b9cfa1ed",
"shasum": "", "shasum": "",
"mirrors": [ "mirrors": [
{ {
@ -6559,7 +6572,7 @@
"mime-type" "mime-type"
], ],
"support": { "support": {
"source": "https://github.com/symfony/mime/tree/v6.2.0" "source": "https://github.com/symfony/mime/tree/v6.2.2"
}, },
"funding": [ "funding": [
{ {
@ -6575,7 +6588,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2022-11-28T12:28:19+00:00" "time": "2022-12-14T16:38:10+00:00"
}, },
{ {
"name": "symfony/polyfill-ctype", "name": "symfony/polyfill-ctype",
@ -8079,16 +8092,16 @@
}, },
{ {
"name": "symfony/var-dumper", "name": "symfony/var-dumper",
"version": "v6.2.1", "version": "v6.2.2",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/var-dumper.git", "url": "https://github.com/symfony/var-dumper.git",
"reference": "1e7544c8698627b908657e5276854d52ab70087a" "reference": "6168f544827e897f708a684f75072a8c33a5e309"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/var-dumper/zipball/1e7544c8698627b908657e5276854d52ab70087a", "url": "https://api.github.com/repos/symfony/var-dumper/zipball/6168f544827e897f708a684f75072a8c33a5e309",
"reference": "1e7544c8698627b908657e5276854d52ab70087a", "reference": "6168f544827e897f708a684f75072a8c33a5e309",
"shasum": "", "shasum": "",
"mirrors": [ "mirrors": [
{ {
@ -8153,7 +8166,7 @@
"dump" "dump"
], ],
"support": { "support": {
"source": "https://github.com/symfony/var-dumper/tree/v6.2.1" "source": "https://github.com/symfony/var-dumper/tree/v6.2.2"
}, },
"funding": [ "funding": [
{ {
@ -8169,20 +8182,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2022-12-03T22:32:58+00:00" "time": "2022-12-14T16:11:27+00:00"
}, },
{ {
"name": "symfony/yaml", "name": "symfony/yaml",
"version": "v6.2.0", "version": "v6.2.2",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/yaml.git", "url": "https://github.com/symfony/yaml.git",
"reference": "f2570f21bd4adc3589aa3133323273995109bae0" "reference": "6ed8243aa5f2cb5a57009f826b5e7fb3c4200cf3"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/yaml/zipball/f2570f21bd4adc3589aa3133323273995109bae0", "url": "https://api.github.com/repos/symfony/yaml/zipball/6ed8243aa5f2cb5a57009f826b5e7fb3c4200cf3",
"reference": "f2570f21bd4adc3589aa3133323273995109bae0", "reference": "6ed8243aa5f2cb5a57009f826b5e7fb3c4200cf3",
"shasum": "", "shasum": "",
"mirrors": [ "mirrors": [
{ {
@ -8233,7 +8246,7 @@
"description": "Loads and dumps YAML files", "description": "Loads and dumps YAML files",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/yaml/tree/v6.2.0" "source": "https://github.com/symfony/yaml/tree/v6.2.2"
}, },
"funding": [ "funding": [
{ {
@ -8249,20 +8262,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2022-11-25T19:00:27+00:00" "time": "2022-12-14T16:11:27+00:00"
}, },
{ {
"name": "tijsverkoyen/css-to-inline-styles", "name": "tijsverkoyen/css-to-inline-styles",
"version": "2.2.5", "version": "2.2.6",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git",
"reference": "4348a3a06651827a27d989ad1d13efec6bb49b19" "reference": "c42125b83a4fa63b187fdf29f9c93cb7733da30c"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/4348a3a06651827a27d989ad1d13efec6bb49b19", "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/c42125b83a4fa63b187fdf29f9c93cb7733da30c",
"reference": "4348a3a06651827a27d989ad1d13efec6bb49b19", "reference": "c42125b83a4fa63b187fdf29f9c93cb7733da30c",
"shasum": "", "shasum": "",
"mirrors": [ "mirrors": [
{ {
@ -8306,9 +8319,9 @@
"homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles",
"support": { "support": {
"issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues",
"source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.5" "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.6"
}, },
"time": "2022-09-12T13:28:28+00:00" "time": "2023-01-03T09:29:04+00:00"
}, },
{ {
"name": "vlucas/phpdotenv", "name": "vlucas/phpdotenv",
@ -8830,16 +8843,16 @@
}, },
{ {
"name": "doctrine/instantiator", "name": "doctrine/instantiator",
"version": "1.4.1", "version": "1.5.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/doctrine/instantiator.git", "url": "https://github.com/doctrine/instantiator.git",
"reference": "10dcfce151b967d20fde1b34ae6640712c3891bc" "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc", "url": "https://api.github.com/repos/doctrine/instantiator/zipball/0a0fa9780f5d4e507415a065172d26a98d02047b",
"reference": "10dcfce151b967d20fde1b34ae6640712c3891bc", "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b",
"shasum": "", "shasum": "",
"mirrors": [ "mirrors": [
{ {
@ -8852,14 +8865,14 @@
"php": "^7.1 || ^8.0" "php": "^7.1 || ^8.0"
}, },
"require-dev": { "require-dev": {
"doctrine/coding-standard": "^9", "doctrine/coding-standard": "^9 || ^11",
"ext-pdo": "*", "ext-pdo": "*",
"ext-phar": "*", "ext-phar": "*",
"phpbench/phpbench": "^0.16 || ^1", "phpbench/phpbench": "^0.16 || ^1",
"phpstan/phpstan": "^1.4", "phpstan/phpstan": "^1.4",
"phpstan/phpstan-phpunit": "^1", "phpstan/phpstan-phpunit": "^1",
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
"vimeo/psalm": "^4.22" "vimeo/psalm": "^4.30 || ^5.4"
}, },
"type": "library", "type": "library",
"autoload": { "autoload": {
@ -8886,7 +8899,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/doctrine/instantiator/issues", "issues": "https://github.com/doctrine/instantiator/issues",
"source": "https://github.com/doctrine/instantiator/tree/1.4.1" "source": "https://github.com/doctrine/instantiator/tree/1.5.0"
}, },
"funding": [ "funding": [
{ {
@ -8902,7 +8915,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2022-03-03T08:28:38+00:00" "time": "2022-12-30T00:15:36+00:00"
}, },
{ {
"name": "fakerphp/faker", "name": "fakerphp/faker",
@ -9234,16 +9247,16 @@
}, },
{ {
"name": "laravel/sail", "name": "laravel/sail",
"version": "v1.16.6", "version": "v1.17.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/laravel/sail.git", "url": "https://github.com/laravel/sail.git",
"reference": "2e8be54590bde421eb04e461a1421302a5b22cca" "reference": "7d69da7b2bdb8cbe8da6663eb2ae0e00c884bf80"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/laravel/sail/zipball/2e8be54590bde421eb04e461a1421302a5b22cca", "url": "https://api.github.com/repos/laravel/sail/zipball/7d69da7b2bdb8cbe8da6663eb2ae0e00c884bf80",
"reference": "2e8be54590bde421eb04e461a1421302a5b22cca", "reference": "7d69da7b2bdb8cbe8da6663eb2ae0e00c884bf80",
"shasum": "", "shasum": "",
"mirrors": [ "mirrors": [
{ {
@ -9296,20 +9309,20 @@
"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": "2022-12-19T15:41:32+00:00" "time": "2022-12-22T14:46:08+00:00"
}, },
{ {
"name": "laravel/telescope", "name": "laravel/telescope",
"version": "v4.10.2", "version": "v4.11.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/laravel/telescope.git", "url": "https://github.com/laravel/telescope.git",
"reference": "3b1220b71ee08ac7be6be074635df50c2b83ab51" "reference": "a910e64a9464312ed0a26ccecbf7a1f969f20806"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/laravel/telescope/zipball/3b1220b71ee08ac7be6be074635df50c2b83ab51", "url": "https://api.github.com/repos/laravel/telescope/zipball/a910e64a9464312ed0a26ccecbf7a1f969f20806",
"reference": "3b1220b71ee08ac7be6be074635df50c2b83ab51", "reference": "a910e64a9464312ed0a26ccecbf7a1f969f20806",
"shasum": "", "shasum": "",
"mirrors": [ "mirrors": [
{ {
@ -9321,7 +9334,7 @@
"require": { "require": {
"ext-json": "*", "ext-json": "*",
"laravel/framework": "^8.37|^9.0", "laravel/framework": "^8.37|^9.0",
"php": "^7.3|^8.0", "php": "^8.0",
"symfony/var-dumper": "^5.0|^6.0" "symfony/var-dumper": "^5.0|^6.0"
}, },
"require-dev": { "require-dev": {
@ -9368,9 +9381,9 @@
], ],
"support": { "support": {
"issues": "https://github.com/laravel/telescope/issues", "issues": "https://github.com/laravel/telescope/issues",
"source": "https://github.com/laravel/telescope/tree/v4.10.2" "source": "https://github.com/laravel/telescope/tree/v4.11.0"
}, },
"time": "2022-12-19T11:20:10+00:00" "time": "2023-01-03T09:40:48+00:00"
}, },
{ {
"name": "mockery/mockery", "name": "mockery/mockery",
@ -9517,16 +9530,16 @@
}, },
{ {
"name": "nunomaduro/collision", "name": "nunomaduro/collision",
"version": "v6.3.1", "version": "v6.4.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/nunomaduro/collision.git", "url": "https://github.com/nunomaduro/collision.git",
"reference": "0f6349c3ed5dd28467087b08fb59384bb458a22b" "reference": "f05978827b9343cba381ca05b8c7deee346b6015"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/nunomaduro/collision/zipball/0f6349c3ed5dd28467087b08fb59384bb458a22b", "url": "https://api.github.com/repos/nunomaduro/collision/zipball/f05978827b9343cba381ca05b8c7deee346b6015",
"reference": "0f6349c3ed5dd28467087b08fb59384bb458a22b", "reference": "f05978827b9343cba381ca05b8c7deee346b6015",
"shasum": "", "shasum": "",
"mirrors": [ "mirrors": [
{ {
@ -9607,7 +9620,7 @@
"type": "patreon" "type": "patreon"
} }
], ],
"time": "2022-09-29T12:29:49+00:00" "time": "2023-01-03T12:54:54+00:00"
}, },
{ {
"name": "phar-io/manifest", "name": "phar-io/manifest",
@ -9734,16 +9747,16 @@
}, },
{ {
"name": "phpstan/phpstan", "name": "phpstan/phpstan",
"version": "1.9.3", "version": "1.9.7",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/phpstan/phpstan.git", "url": "https://github.com/phpstan/phpstan.git",
"reference": "709999b91448d4f2bb07daffffedc889b33e461c" "reference": "0501435cd342eac7664bd62155b1ef907fc60b6f"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/709999b91448d4f2bb07daffffedc889b33e461c", "url": "https://api.github.com/repos/phpstan/phpstan/zipball/0501435cd342eac7664bd62155b1ef907fc60b6f",
"reference": "709999b91448d4f2bb07daffffedc889b33e461c", "reference": "0501435cd342eac7664bd62155b1ef907fc60b6f",
"shasum": "", "shasum": "",
"mirrors": [ "mirrors": [
{ {
@ -9779,7 +9792,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/phpstan/phpstan/issues", "issues": "https://github.com/phpstan/phpstan/issues",
"source": "https://github.com/phpstan/phpstan/tree/1.9.3" "source": "https://github.com/phpstan/phpstan/tree/1.9.7"
}, },
"funding": [ "funding": [
{ {
@ -9795,20 +9808,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2022-12-13T10:28:10+00:00" "time": "2023-01-04T21:59:57+00:00"
}, },
{ {
"name": "phpunit/php-code-coverage", "name": "phpunit/php-code-coverage",
"version": "9.2.22", "version": "9.2.23",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
"reference": "e4bf60d2220b4baaa0572986b5d69870226b06df" "reference": "9f1f0f9a2fbb680b26d1cf9b61b6eac43a6e4e9c"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/e4bf60d2220b4baaa0572986b5d69870226b06df", "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/9f1f0f9a2fbb680b26d1cf9b61b6eac43a6e4e9c",
"reference": "e4bf60d2220b4baaa0572986b5d69870226b06df", "reference": "9f1f0f9a2fbb680b26d1cf9b61b6eac43a6e4e9c",
"shasum": "", "shasum": "",
"mirrors": [ "mirrors": [
{ {
@ -9870,7 +9883,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
"source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.22" "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.23"
}, },
"funding": [ "funding": [
{ {
@ -9878,7 +9891,7 @@
"type": "github" "type": "github"
} }
], ],
"time": "2022-12-18T16:40:55+00:00" "time": "2022-12-28T12:41:10+00:00"
}, },
{ {
"name": "phpunit/php-file-iterator", "name": "phpunit/php-file-iterator",
@ -11696,8 +11709,10 @@
"prefer-stable": true, "prefer-stable": true,
"prefer-lowest": false, "prefer-lowest": false,
"platform": { "platform": {
"php": "^8.1", "php": "^8.2",
"ext-zip": "^1.19" "ext-zip": "^1.19",
"ext-pcntl": "*",
"ext-posix": "*"
}, },
"platform-dev": [], "platform-dev": [],
"plugin-api-version": "2.3.0" "plugin-api-version": "2.3.0"