From e035ff1512d37589ec6664bf66de0ef876a3df00 Mon Sep 17 00:00:00 2001
From: NekoCH <96158157+ex-hentai@users.noreply.github.com>
Date: Sun, 9 Mar 2025 14:34:25 +0800
Subject: [PATCH] passkey support
---
README-EN.md | 2 +-
README.md | 2 +-
.../Resources/User/UserPasskeyResource.php | 102 ++
.../Pages/ManageUserPasskey.php | 17 +
app/Models/Passkey.php | 32 +
app/Repositories/UserPasskeyRepository.php | 252 +++
composer.json | 3 +-
composer.lock | 1465 +++++++++--------
...4_17_091208_create_user_passkeys_table.php | 26 +
public/ajax.php | 47 +-
public/js/passkey.js | 169 ++
public/login.php | 2 +
public/usercp.php | 3 +
resources/lang/en/passkey.php | 21 +
resources/lang/zh_CN/passkey.php | 21 +
15 files changed, 1463 insertions(+), 701 deletions(-)
create mode 100644 app/Filament/Resources/User/UserPasskeyResource.php
create mode 100644 app/Filament/Resources/User/UserPasskeyResource/Pages/ManageUserPasskey.php
create mode 100644 app/Models/Passkey.php
create mode 100644 app/Repositories/UserPasskeyRepository.php
create mode 100644 database/migrations/2025_04_17_091208_create_user_passkeys_table.php
create mode 100644 public/js/passkey.js
create mode 100644 resources/lang/en/passkey.php
create mode 100644 resources/lang/zh_CN/passkey.php
diff --git a/README-EN.md b/README-EN.md
index 03282a5b..9feb4016 100644
--- a/README-EN.md
+++ b/README-EN.md
@@ -40,7 +40,7 @@ Welcome to participate in internationalization work, click [here](https://github
- Section H&R
- TGBot
## System Requirements
-- PHP: 8.2|8.3|8.4, must have extensions: bcmath, ctype, curl, fileinfo, json, mbstring, openssl, pdo_mysql, tokenizer, xml, mysqli, gd, redis, pcntl, sockets, posix, gmp, zend opcache, zip, intl, pdo_sqlite, sqlite3
+- PHP: 8.2|8.3|8.4|8.5, must have extensions: bcmath, ctype, curl, fileinfo, json, mbstring, openssl, pdo_mysql, tokenizer, xml, mysqli, gd, redis, pcntl, sockets, posix, gmp, zend opcache, zip, intl, pdo_sqlite, sqlite3
- Mysql: 5.7 latest version or above
- Redis:4.0.0 or above
- Others: supervisor, rsync
diff --git a/README.md b/README.md
index 4d6e8335..f58c49c4 100644
--- a/README.md
+++ b/README.md
@@ -40,7 +40,7 @@
- TGBot
## 系统要求
-- PHP: 8.2|8.3|8.4,必须扩展:bcmath, ctype, curl, fileinfo, json, mbstring, openssl, pdo_mysql, tokenizer, xml, mysqli, gd, redis, pcntl, sockets, posix, gmp, zend opcache, zip, intl, pdo_sqlite, sqlite3
+- PHP: 8.2|8.3|8.4|8.5,必须扩展:bcmath, ctype, curl, fileinfo, json, mbstring, openssl, pdo_mysql, tokenizer, xml, mysqli, gd, redis, pcntl, sockets, posix, gmp, zend opcache, zip, intl, pdo_sqlite, sqlite3
- Mysql: 5.7 最新版或以上版本
- Redis:4.0.0 或以上版本
- 其他:supervisor, rsync
diff --git a/app/Filament/Resources/User/UserPasskeyResource.php b/app/Filament/Resources/User/UserPasskeyResource.php
new file mode 100644
index 00000000..69b4cb59
--- /dev/null
+++ b/app/Filament/Resources/User/UserPasskeyResource.php
@@ -0,0 +1,102 @@
+schema([
+ //
+ ]);
+ }
+
+ public static function table(Table $table): Table
+ {
+ return $table
+ ->columns([
+ Tables\Columns\TextColumn::make('id')->sortable()
+ ,
+ Tables\Columns\TextColumn::make('user_id')
+ ->formatStateUsing(fn($state) => username_for_admin($state))
+ ->label(__('label.username'))
+ ,
+ Tables\Columns\TextColumn::make('AAGUID')
+ ->label("AAGUID")
+ ,
+ Tables\Columns\TextColumn::make('credential_id')
+ ->label(__('passkey.fields.credential_id'))
+ ,
+ Tables\Columns\TextColumn::make('counter')
+ ->label(__('passkey.fields.counter'))
+ ,
+ Tables\Columns\TextColumn::make('created_at')
+ ->label(__('label.created_at'))
+ ,
+ ])
+ ->defaultSort('id', 'desc')
+ ->filters([
+ Tables\Filters\Filter::make('user_id')
+ ->form([
+ Forms\Components\TextInput::make('uid')
+ ->label(__('label.username'))
+ ->placeholder('UID')
+ ,
+ ])->query(function (Builder $query, array $data) {
+ return $query->when($data['uid'], fn(Builder $query, $value) => $query->where("user_id", $value));
+ })
+ ,
+ Tables\Filters\Filter::make('credential_id')
+ ->form([
+ Forms\Components\TextInput::make('credential_id')
+ ->label(__('passkey.fields.credential_id'))
+ ->placeholder('Credential ID')
+ ,
+ ])->query(function (Builder $query, array $data) {
+ return $query->when($data['credential_id'], fn(Builder $query, $value) => $query->where("credential_id", $value));
+ })
+ ,
+ ])
+ ->actions([
+ Tables\Actions\DeleteAction::make(),
+ ])
+ ->bulkActions([
+ Tables\Actions\DeleteBulkAction::make(),
+ ]);
+ }
+
+ public static function getPages(): array
+ {
+ return [
+ 'index' => Pages\ManageUserPasskey::route('/'),
+ ];
+ }
+}
diff --git a/app/Filament/Resources/User/UserPasskeyResource/Pages/ManageUserPasskey.php b/app/Filament/Resources/User/UserPasskeyResource/Pages/ManageUserPasskey.php
new file mode 100644
index 00000000..fb0455b1
--- /dev/null
+++ b/app/Filament/Resources/User/UserPasskeyResource/Pages/ManageUserPasskey.php
@@ -0,0 +1,17 @@
+belongsTo(User::class, 'user_id');
+ }
+
+ public function AAGUID() {
+ $guid = $this->AAGUID;
+ return sprintf(
+ '%s-%s-%s-%s-%s',
+ substr($guid, 0, 8),
+ substr($guid, 8, 4),
+ substr($guid, 12, 4),
+ substr($guid, 16, 4),
+ substr($guid, 20, 12)
+ );
+ }
+
+}
diff --git a/app/Repositories/UserPasskeyRepository.php b/app/Repositories/UserPasskeyRepository.php
new file mode 100644
index 00000000..a91c7ff6
--- /dev/null
+++ b/app/Repositories/UserPasskeyRepository.php
@@ -0,0 +1,252 @@
+getRequestHost(), $formats);
+ }
+
+ public static function getCreateArgs($userId, $userName)
+ {
+ $WebAuthn = self::createWebAuthn();
+
+ $passkey = Passkey::query()->where('user_id', '=', $userId)->get();
+
+ $credentialIds = array_map(function ($item) {
+ return hex2bin($item['credential_id']);
+ }, $passkey->toArray());
+
+ $createArgs = $WebAuthn->getCreateArgs(bin2hex($userId), $userName, $userName, 60 * 4, true, 'preferred', null, $credentialIds);
+
+ NexusDB::cache_put("{$userId}_passkey_challenge", $WebAuthn->getChallenge(), 60 * 4);
+
+ return $createArgs;
+ }
+
+ public static function processCreate($userId, $clientDataJSON, $attestationObject)
+ {
+ $WebAuthn = self::createWebAuthn();
+
+ $clientDataJSON = !empty($clientDataJSON) ? base64_decode($clientDataJSON) : null;
+ $attestationObject = !empty($attestationObject) ? base64_decode($attestationObject) : null;
+ $challenge = NexusDB::cache_get("{$userId}_passkey_challenge") ?? null;
+
+ $data = $WebAuthn->processCreate($clientDataJSON, $attestationObject, $challenge, false, true, false);
+
+ self::insertUserPasskey(
+ $userId,
+ bin2hex($data->AAGUID),
+ bin2hex($data->credentialId),
+ $data->credentialPublicKey,
+ $data->signatureCounter
+ );
+
+ return true;
+ }
+
+ public static function getGetArgs()
+ {
+ $WebAuthn = self::createWebAuthn();
+
+ $getArgs = $WebAuthn->getGetArgs(null, 60 * 4, true, true, true, true, true, 'preferred');
+
+ return $getArgs;
+ }
+
+ public static function insertUserPasskey($userId, $AAGUID, $credentialId, $publicKey, $counter)
+ {
+ $params = [
+ 'user_id' => $userId,
+ 'AAGUID' => $AAGUID,
+ 'credential_id' => $credentialId,
+ 'public_key' => $publicKey,
+ 'counter' => $counter,
+ ];
+ Passkey::query()->create($params);
+ }
+
+ public static function processGet($challenge, $id, $clientDataJSON, $authenticatorData, $signature, $userHandle)
+ {
+ $WebAuthn = self::createWebAuthn();
+
+ $clientDataJSON = !empty($clientDataJSON) ? base64_decode($clientDataJSON) : null;
+ $id = !empty($id) ? base64_decode($id) : null;
+ $authenticatorData = !empty($authenticatorData) ? base64_decode($authenticatorData) : null;
+ $signature = !empty($signature) ? base64_decode($signature) : null;
+ $userHandle = !empty($userHandle) ? base64_decode($userHandle) : null;
+ $challenge = !empty($challenge) ? base64_decode($challenge) : null;
+
+ $passkey = Passkey::query()->where('credential_id', '=', bin2hex($id))->first();
+ $credentialPublicKey = $passkey->public_key;
+
+ if ($credentialPublicKey === null) {
+ throw new RuntimeException(nexus_trans('passkey.passkey_unknown'));
+ }
+
+ if ($userHandle !== bin2hex($passkey->user_id)) {
+ throw new RuntimeException(nexus_trans('passkey.passkey_invalid'));
+ }
+
+ try {
+ $WebAuthn->processGet($clientDataJSON, $authenticatorData, $signature, $credentialPublicKey, $challenge, null, 'preferred');
+ } catch (Exception $e) {
+ throw new RuntimeException(nexus_trans('passkey.passkey_error') . "\n" . $e->getMessage());
+ }
+
+ $user = $passkey->user;
+ if (!$user) {
+ throw new RuntimeException(nexus_trans('passkey.passkey_user_not_found'));
+ }
+ $user->checkIsNormal();
+
+ $ip = getip();
+ $userRep = new UserRepository();
+ $userRep->saveLoginLog($user->id, $ip, 'Web', true);
+
+ logincookie($user->id, $user->auth_key);
+ return true;
+ }
+
+ public static function delete($userId, $credentialId)
+ {
+ return Passkey::query()->where('user_id', '=', $userId)->where('credential_id', '=', $credentialId)->delete();
+ }
+
+ public static function getList($userId)
+ {
+ return Passkey::query()->where('user_id', '=', $userId)->get();
+ }
+
+ public static function getAaguids()
+ {
+ return NexusDB::remember("aaguids", 60 * 60 * 24 * 14, function () {
+ return json_decode(file_get_contents("https://raw.githubusercontent.com/passkeydeveloper/passkey-authenticator-aaguids/refs/heads/main/combined_aaguid.json"), true);
+ });
+ }
+
+ private static $passkeyvg = 'data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20216%20216%22%20xml%3Aspace%3D%22preserve%22%3E%3Cg%2F%3E%3Cpath%20style%3D%22fill%3Anone%22%20d%3D%22M0%200h216v216H0z%22%2F%3E%3Cpath%20d%3D%22M172.32%2096.79c0%2013.78-8.48%2025.5-20.29%2029.78l7.14%2011.83-10.57%2013%2010.57%2012.71-17.04%2022.87-12.01-12.82V125.7c-10.68-4.85-18.15-15.97-18.15-28.91%200-17.4%2013.51-31.51%2030.18-31.51%2016.66%200%2030.17%2014.11%2030.17%2031.51m-30.18%204.82c4.02%200%207.28-3.4%207.28-7.6s-3.26-7.61-7.28-7.61-7.28%203.4-7.28%207.61c-.01%204.2%203.26%207.6%207.28%207.6%22%20style%3D%22fill-rule%3Aevenodd%3Bclip-rule%3Aevenodd%3Bfill%3A%23353535%22%2F%3E%3Cpath%20d%3D%22M172.41%2096.88c0%2013.62-8.25%2025.23-19.83%2029.67l6.58%2011.84-9.73%2013%209.73%2012.71-17.03%2023.05v-85.54c4.02%200%207.28-3.41%207.28-7.6%200-4.2-3.26-7.61-7.28-7.61V65.28c16.73%200%2030.28%2014.15%2030.28%2031.6m-52.17%2034.55c-9.75-8-16.3-20.3-17.2-34.27H50.8c-10.96%200-19.84%209.01-19.84%2020.13v25.17c0%205.56%204.44%2010.07%209.92%2010.07h69.44c5.48%200%209.92-4.51%209.92-10.07z%22%20style%3D%22fill-rule%3Aevenodd%3Bclip-rule%3Aevenodd%22%2F%3E%3Cpath%20d%3D%22M73.16%2091.13c-2.42-.46-4.82-.89-7.11-1.86-8.65-3.63-13.69-10.32-15.32-19.77-1.12-6.47-.59-12.87%202.03-18.92%203.72-8.6%2010.39-13.26%2019.15-14.84%205.24-.94%2010.46-.73%2015.5%201.15%207.59%202.82%2012.68%208.26%2015.03%2016.24%202.38%208.05%202.03%2016.1-1.56%2023.72-3.72%207.96-10.21%2012.23-18.42%2013.9-.68.14-1.37.27-2.05.41-2.41-.03-4.83-.03-7.25-.03%22%20style%3D%22fill%3A%23141313%22%2F%3E%3C%2Fsvg%3E';
+
+ public static function renderLogin()
+ {
+ printf('
', self::$passkeyvg, nexus_trans('passkey.passkey'), nexus_trans('passkey.passkey'));
+ ?>
+
+ %s
%s', nexus_trans('passkey.passkey_create'), nexus_trans('passkey.passkey_desc'));
+ ?>
+
+ | %s | ', nexus_trans('passkey.passkey_empty'));
+ } else {
+ $AAGUIDS = self::getAaguids();
+ foreach ($passkeys as $passkey) {
+ ?>
+
+
+
+ AAGUID()];
+ if (isset($meta)) {
+ printf('  %s (%s)', $meta['icon_dark'], $meta['name'], $meta['name'], $passkey->credential_id);
+ } else {
+ printf('  %s', self::$passkeyvg, $passkey->credential_id, $passkey->credential_id);
+ }
+ printf(' %s%s ', nexus_trans('passkey.passkey_created_at'), gettime($passkey->created_at));
+ printf(' ', $passkey->credential_id, nexus_trans('passkey.passkey_delete'))
+ ?>
+
+ |
+
+
+
+
+ =8.2 <8.5",
+ "php": ">=8.2",
"ext-bcmath": "*",
"ext-curl": "*",
"ext-gd": "*",
@@ -49,6 +49,7 @@
"laravel/passport": "^12.0",
"laravel/sanctum": "^4.0",
"laravel/tinker": "^2.5",
+ "lbuchs/webauthn": "^2.2",
"league/flysystem-sftp-v3": "^3.0",
"meilisearch/meilisearch-php": "^1.0",
"orangehill/iseed": "^3.0",
diff --git a/composer.lock b/composer.lock
index 0013333a..62b57582 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,20 +4,20 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "282076e99007f806ed211e60021107e0",
+ "content-hash": "a4e381852542cfa642548a084130dc77",
"packages": [
{
"name": "anourvalar/eloquent-serialize",
- "version": "1.3.4",
+ "version": "1.3.5",
"source": {
"type": "git",
"url": "https://github.com/AnourValar/eloquent-serialize.git",
- "reference": "0934a98866e02b73e38696961a9d7984b834c9d9"
+ "reference": "1a7dead8d532657e5358f8f27c0349373517681e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/AnourValar/eloquent-serialize/zipball/0934a98866e02b73e38696961a9d7984b834c9d9",
- "reference": "0934a98866e02b73e38696961a9d7984b834c9d9",
+ "url": "https://api.github.com/repos/AnourValar/eloquent-serialize/zipball/1a7dead8d532657e5358f8f27c0349373517681e",
+ "reference": "1a7dead8d532657e5358f8f27c0349373517681e",
"shasum": ""
},
"require": {
@@ -68,9 +68,9 @@
],
"support": {
"issues": "https://github.com/AnourValar/eloquent-serialize/issues",
- "source": "https://github.com/AnourValar/eloquent-serialize/tree/1.3.4"
+ "source": "https://github.com/AnourValar/eloquent-serialize/tree/1.3.5"
},
- "time": "2025-07-30T15:45:57+00:00"
+ "time": "2025-12-04T13:38:21+00:00"
},
{
"name": "blade-ui-kit/blade-heroicons",
@@ -224,16 +224,16 @@
},
{
"name": "brick/math",
- "version": "0.14.0",
+ "version": "0.14.1",
"source": {
"type": "git",
"url": "https://github.com/brick/math.git",
- "reference": "113a8ee2656b882d4c3164fa31aa6e12cbb7aaa2"
+ "reference": "f05858549e5f9d7bb45875a75583240a38a281d0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/brick/math/zipball/113a8ee2656b882d4c3164fa31aa6e12cbb7aaa2",
- "reference": "113a8ee2656b882d4c3164fa31aa6e12cbb7aaa2",
+ "url": "https://api.github.com/repos/brick/math/zipball/f05858549e5f9d7bb45875a75583240a38a281d0",
+ "reference": "f05858549e5f9d7bb45875a75583240a38a281d0",
"shasum": ""
},
"require": {
@@ -272,7 +272,7 @@
],
"support": {
"issues": "https://github.com/brick/math/issues",
- "source": "https://github.com/brick/math/tree/0.14.0"
+ "source": "https://github.com/brick/math/tree/0.14.1"
},
"funding": [
{
@@ -280,7 +280,7 @@
"type": "github"
}
],
- "time": "2025-08-29T12:40:03+00:00"
+ "time": "2025-11-24T14:40:29+00:00"
},
{
"name": "calebporzio/sushi",
@@ -407,16 +407,16 @@
},
{
"name": "chillerlan/php-qrcode",
- "version": "5.0.4",
+ "version": "5.0.5",
"source": {
"type": "git",
"url": "https://github.com/chillerlan/php-qrcode.git",
- "reference": "390393e97a6e42ccae0e0d6205b8d4200f7ddc43"
+ "reference": "7b66282572fc14075c0507d74d9837dab25b38d6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/chillerlan/php-qrcode/zipball/390393e97a6e42ccae0e0d6205b8d4200f7ddc43",
- "reference": "390393e97a6e42ccae0e0d6205b8d4200f7ddc43",
+ "url": "https://api.github.com/repos/chillerlan/php-qrcode/zipball/7b66282572fc14075c0507d74d9837dab25b38d6",
+ "reference": "7b66282572fc14075c0507d74d9837dab25b38d6",
"shasum": ""
},
"require": {
@@ -427,7 +427,7 @@
"require-dev": {
"chillerlan/php-authenticator": "^4.3.1 || ^5.2.1",
"ext-fileinfo": "*",
- "phan/phan": "^5.5.1",
+ "phan/phan": "^5.5.2",
"phpcompatibility/php-compatibility": "10.x-dev",
"phpmd/phpmd": "^2.15",
"phpunit/phpunit": "^9.6",
@@ -496,7 +496,7 @@
"type": "Ko-Fi"
}
],
- "time": "2025-09-19T17:30:27+00:00"
+ "time": "2025-11-23T23:51:44+00:00"
},
{
"name": "chillerlan/php-settings-container",
@@ -566,16 +566,16 @@
},
{
"name": "composer/ca-bundle",
- "version": "1.5.8",
+ "version": "1.5.10",
"source": {
"type": "git",
"url": "https://github.com/composer/ca-bundle.git",
- "reference": "719026bb30813accb68271fee7e39552a58e9f65"
+ "reference": "961a5e4056dd2e4a2eedcac7576075947c28bf63"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/ca-bundle/zipball/719026bb30813accb68271fee7e39552a58e9f65",
- "reference": "719026bb30813accb68271fee7e39552a58e9f65",
+ "url": "https://api.github.com/repos/composer/ca-bundle/zipball/961a5e4056dd2e4a2eedcac7576075947c28bf63",
+ "reference": "961a5e4056dd2e4a2eedcac7576075947c28bf63",
"shasum": ""
},
"require": {
@@ -622,7 +622,7 @@
"support": {
"irc": "irc://irc.freenode.org/composer",
"issues": "https://github.com/composer/ca-bundle/issues",
- "source": "https://github.com/composer/ca-bundle/tree/1.5.8"
+ "source": "https://github.com/composer/ca-bundle/tree/1.5.10"
},
"funding": [
{
@@ -634,7 +634,7 @@
"type": "github"
}
],
- "time": "2025-08-20T18:49:47+00:00"
+ "time": "2025-12-08T15:06:51+00:00"
},
{
"name": "cybercog/laravel-clickhouse",
@@ -642,25 +642,25 @@
"source": {
"type": "git",
"url": "https://github.com/cybercog/laravel-clickhouse.git",
- "reference": "ba90e0916ab0b7af594fa6c3874de9091afbd923"
+ "reference": "7b7aa5eb856c9d94ca450b7c7ff45d7a8a1381c5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/cybercog/laravel-clickhouse/zipball/ba90e0916ab0b7af594fa6c3874de9091afbd923",
- "reference": "ba90e0916ab0b7af594fa6c3874de9091afbd923",
+ "url": "https://api.github.com/repos/cybercog/laravel-clickhouse/zipball/7b7aa5eb856c9d94ca450b7c7ff45d7a8a1381c5",
+ "reference": "7b7aa5eb856c9d94ca450b7c7ff45d7a8a1381c5",
"shasum": ""
},
"require": {
- "illuminate/console": "^8.0|^9.0|^10.1.3|^11.0|^12.0",
- "illuminate/contracts": "^8.0|^9.0|^10.1.3|^11.0|^12.0",
- "illuminate/filesystem": "^8.0|^9.0|^10.1.3|^11.0|^12.0",
- "illuminate/support": "^8.0|^9.0|^10.1.3|^11.0|^12.0",
- "php": "^7.4|^8.0",
+ "illuminate/console": "^11.0|^12.0",
+ "illuminate/contracts": "^11.0|^12.0",
+ "illuminate/filesystem": "^11.0|^12.0",
+ "illuminate/support": "^11.0|^12.0",
+ "php": "^8.2",
"smi2/phpclickhouse": "^1.5.3"
},
"require-dev": {
- "orchestra/testbench": "^7.0|^8.0|^9.0|^10.0",
- "phpunit/phpunit": "^9.6|^10.5|^11.5"
+ "orchestra/testbench": "^9.0|^10.0",
+ "phpunit/phpunit": "^11.5"
},
"default-branch": true,
"type": "library",
@@ -712,7 +712,7 @@
"type": "custom"
}
],
- "time": "2025-06-16T07:24:59+00:00"
+ "time": "2025-11-23T12:00:05+00:00"
},
{
"name": "danharrin/date-format-converter",
@@ -1130,29 +1130,28 @@
},
{
"name": "dragonmantank/cron-expression",
- "version": "v3.4.0",
+ "version": "v3.6.0",
"source": {
"type": "git",
"url": "https://github.com/dragonmantank/cron-expression.git",
- "reference": "8c784d071debd117328803d86b2097615b457500"
+ "reference": "d61a8a9604ec1f8c3d150d09db6ce98b32675013"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/8c784d071debd117328803d86b2097615b457500",
- "reference": "8c784d071debd117328803d86b2097615b457500",
+ "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/d61a8a9604ec1f8c3d150d09db6ce98b32675013",
+ "reference": "d61a8a9604ec1f8c3d150d09db6ce98b32675013",
"shasum": ""
},
"require": {
- "php": "^7.2|^8.0",
- "webmozart/assert": "^1.0"
+ "php": "^8.2|^8.3|^8.4|^8.5"
},
"replace": {
"mtdowling/cron-expression": "^1.0"
},
"require-dev": {
- "phpstan/extension-installer": "^1.0",
- "phpstan/phpstan": "^1.0",
- "phpunit/phpunit": "^7.0|^8.0|^9.0"
+ "phpstan/extension-installer": "^1.4.3",
+ "phpstan/phpstan": "^1.12.32|^2.1.31",
+ "phpunit/phpunit": "^8.5.48|^9.0"
},
"type": "library",
"extra": {
@@ -1183,7 +1182,7 @@
],
"support": {
"issues": "https://github.com/dragonmantank/cron-expression/issues",
- "source": "https://github.com/dragonmantank/cron-expression/tree/v3.4.0"
+ "source": "https://github.com/dragonmantank/cron-expression/tree/v3.6.0"
},
"funding": [
{
@@ -1191,7 +1190,7 @@
"type": "github"
}
],
- "time": "2024-10-09T13:47:03+00:00"
+ "time": "2025-10-31T18:51:33+00:00"
},
{
"name": "egulias/email-validator",
@@ -1440,16 +1439,16 @@
},
{
"name": "filament/actions",
- "version": "v4.1.0",
+ "version": "v4.3.1",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/actions.git",
- "reference": "4ec445a337f5d547469896dff3d4f30c5c394d71"
+ "reference": "8c436949d3fa5cc79a2aeb0b6d1741c5555e9d33"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/filamentphp/actions/zipball/4ec445a337f5d547469896dff3d4f30c5c394d71",
- "reference": "4ec445a337f5d547469896dff3d4f30c5c394d71",
+ "url": "https://api.github.com/repos/filamentphp/actions/zipball/8c436949d3fa5cc79a2aeb0b6d1741c5555e9d33",
+ "reference": "8c436949d3fa5cc79a2aeb0b6d1741c5555e9d33",
"shasum": ""
},
"require": {
@@ -1458,7 +1457,7 @@
"filament/infolists": "self.version",
"filament/notifications": "self.version",
"filament/support": "self.version",
- "league/csv": "^9.16",
+ "league/csv": "^9.27",
"openspout/openspout": "^4.23",
"php": "^8.2"
},
@@ -1485,20 +1484,20 @@
"issues": "https://github.com/filamentphp/filament/issues",
"source": "https://github.com/filamentphp/filament"
},
- "time": "2025-09-29T08:02:20+00:00"
+ "time": "2025-12-09T09:55:17+00:00"
},
{
"name": "filament/filament",
- "version": "v4.1.0",
+ "version": "v4.3.1",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/panels.git",
- "reference": "5aeda3f8bb64e85ec3eb16bc7f5bee65b134f66c"
+ "reference": "2387e41380a304c411d420b17e965e11a8e24711"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/filamentphp/panels/zipball/5aeda3f8bb64e85ec3eb16bc7f5bee65b134f66c",
- "reference": "5aeda3f8bb64e85ec3eb16bc7f5bee65b134f66c",
+ "url": "https://api.github.com/repos/filamentphp/panels/zipball/2387e41380a304c411d420b17e965e11a8e24711",
+ "reference": "2387e41380a304c411d420b17e965e11a8e24711",
"shasum": ""
},
"require": {
@@ -1512,7 +1511,7 @@
"filament/tables": "self.version",
"filament/widgets": "self.version",
"php": "^8.2",
- "pragmarx/google2fa": "^8.0",
+ "pragmarx/google2fa": "^8.0|^9.0",
"pragmarx/google2fa-qrcode": "^3.0"
},
"type": "library",
@@ -1542,20 +1541,20 @@
"issues": "https://github.com/filamentphp/filament/issues",
"source": "https://github.com/filamentphp/filament"
},
- "time": "2025-09-29T08:02:23+00:00"
+ "time": "2025-12-09T09:56:39+00:00"
},
{
"name": "filament/forms",
- "version": "v4.1.0",
+ "version": "v4.3.1",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/forms.git",
- "reference": "d6482a25e5f0a876a24a638df221c52011678363"
+ "reference": "6f4843f45906e0583997d2543fb747e07720a774"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/filamentphp/forms/zipball/d6482a25e5f0a876a24a638df221c52011678363",
- "reference": "d6482a25e5f0a876a24a638df221c52011678363",
+ "url": "https://api.github.com/repos/filamentphp/forms/zipball/6f4843f45906e0583997d2543fb747e07720a774",
+ "reference": "6f4843f45906e0583997d2543fb747e07720a774",
"shasum": ""
},
"require": {
@@ -1592,20 +1591,20 @@
"issues": "https://github.com/filamentphp/filament/issues",
"source": "https://github.com/filamentphp/filament"
},
- "time": "2025-09-29T08:02:24+00:00"
+ "time": "2025-12-09T09:53:27+00:00"
},
{
"name": "filament/infolists",
- "version": "v4.1.0",
+ "version": "v4.3.1",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/infolists.git",
- "reference": "0817b9c0e5e15e0e19b57e01322083b80cf4b715"
+ "reference": "0a85cf19262610d607d873644d4fb33e620fe126"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/filamentphp/infolists/zipball/0817b9c0e5e15e0e19b57e01322083b80cf4b715",
- "reference": "0817b9c0e5e15e0e19b57e01322083b80cf4b715",
+ "url": "https://api.github.com/repos/filamentphp/infolists/zipball/0a85cf19262610d607d873644d4fb33e620fe126",
+ "reference": "0a85cf19262610d607d873644d4fb33e620fe126",
"shasum": ""
},
"require": {
@@ -1637,20 +1636,20 @@
"issues": "https://github.com/filamentphp/filament/issues",
"source": "https://github.com/filamentphp/filament"
},
- "time": "2025-09-29T08:02:20+00:00"
+ "time": "2025-11-28T11:18:41+00:00"
},
{
"name": "filament/notifications",
- "version": "v4.1.0",
+ "version": "v4.3.1",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/notifications.git",
- "reference": "33c1d2291747873838c0eedea73c9f7e9784eee7"
+ "reference": "f8657e9b98f549f316daf74cf24a659b85a10e12"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/filamentphp/notifications/zipball/33c1d2291747873838c0eedea73c9f7e9784eee7",
- "reference": "33c1d2291747873838c0eedea73c9f7e9784eee7",
+ "url": "https://api.github.com/repos/filamentphp/notifications/zipball/f8657e9b98f549f316daf74cf24a659b85a10e12",
+ "reference": "f8657e9b98f549f316daf74cf24a659b85a10e12",
"shasum": ""
},
"require": {
@@ -1684,20 +1683,66 @@
"issues": "https://github.com/filamentphp/filament/issues",
"source": "https://github.com/filamentphp/filament"
},
- "time": "2025-09-29T08:02:25+00:00"
+ "time": "2025-11-28T11:21:34+00:00"
},
{
- "name": "filament/schemas",
- "version": "v4.1.0",
+ "name": "filament/query-builder",
+ "version": "v4.3.1",
"source": {
"type": "git",
- "url": "https://github.com/filamentphp/schemas.git",
- "reference": "d5709fcc269c268436ae74292338f77e4f5a2aa4"
+ "url": "https://github.com/filamentphp/query-builder.git",
+ "reference": "2f7e138801e7630c56a7588651497a7f468a9149"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/filamentphp/schemas/zipball/d5709fcc269c268436ae74292338f77e4f5a2aa4",
- "reference": "d5709fcc269c268436ae74292338f77e4f5a2aa4",
+ "url": "https://api.github.com/repos/filamentphp/query-builder/zipball/2f7e138801e7630c56a7588651497a7f468a9149",
+ "reference": "2f7e138801e7630c56a7588651497a7f468a9149",
+ "shasum": ""
+ },
+ "require": {
+ "filament/actions": "self.version",
+ "filament/forms": "self.version",
+ "filament/schemas": "self.version",
+ "filament/support": "self.version",
+ "php": "^8.2"
+ },
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "Filament\\QueryBuilder\\QueryBuilderServiceProvider"
+ ]
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Filament\\QueryBuilder\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "A powerful query builder component for Filament.",
+ "homepage": "https://github.com/filamentphp/filament",
+ "support": {
+ "issues": "https://github.com/filamentphp/filament/issues",
+ "source": "https://github.com/filamentphp/filament"
+ },
+ "time": "2025-12-09T09:54:30+00:00"
+ },
+ {
+ "name": "filament/schemas",
+ "version": "v4.3.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/filamentphp/schemas.git",
+ "reference": "02ec53daed03d2feae75832db0920c4357079133"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/filamentphp/schemas/zipball/02ec53daed03d2feae75832db0920c4357079133",
+ "reference": "02ec53daed03d2feae75832db0920c4357079133",
"shasum": ""
},
"require": {
@@ -1729,20 +1774,20 @@
"issues": "https://github.com/filamentphp/filament/issues",
"source": "https://github.com/filamentphp/filament"
},
- "time": "2025-09-29T08:02:21+00:00"
+ "time": "2025-12-05T14:53:55+00:00"
},
{
"name": "filament/support",
- "version": "v4.1.0",
+ "version": "v4.3.1",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/support.git",
- "reference": "4fc9653075d5be21154da130386826b7d9230ae6"
+ "reference": "7c644018cc5c9a74503039ecf7ff10f340123a8c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/filamentphp/support/zipball/4fc9653075d5be21154da130386826b7d9230ae6",
- "reference": "4fc9653075d5be21154da130386826b7d9230ae6",
+ "url": "https://api.github.com/repos/filamentphp/support/zipball/7c644018cc5c9a74503039ecf7ff10f340123a8c",
+ "reference": "7c644018cc5c9a74503039ecf7ff10f340123a8c",
"shasum": ""
},
"require": {
@@ -1787,25 +1832,26 @@
"issues": "https://github.com/filamentphp/filament/issues",
"source": "https://github.com/filamentphp/filament"
},
- "time": "2025-09-29T08:02:19+00:00"
+ "time": "2025-12-05T14:53:38+00:00"
},
{
"name": "filament/tables",
- "version": "v4.1.0",
+ "version": "v4.3.1",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/tables.git",
- "reference": "c3dc3ff22cc76b4ed21353c66b3669d0c5c4cd9c"
+ "reference": "93227775fff27b0662c5f82e2e7ca6ad20cdf42c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/filamentphp/tables/zipball/c3dc3ff22cc76b4ed21353c66b3669d0c5c4cd9c",
- "reference": "c3dc3ff22cc76b4ed21353c66b3669d0c5c4cd9c",
+ "url": "https://api.github.com/repos/filamentphp/tables/zipball/93227775fff27b0662c5f82e2e7ca6ad20cdf42c",
+ "reference": "93227775fff27b0662c5f82e2e7ca6ad20cdf42c",
"shasum": ""
},
"require": {
"filament/actions": "self.version",
"filament/forms": "self.version",
+ "filament/query-builder": "self.version",
"filament/support": "self.version",
"php": "^8.2"
},
@@ -1832,20 +1878,20 @@
"issues": "https://github.com/filamentphp/filament/issues",
"source": "https://github.com/filamentphp/filament"
},
- "time": "2025-09-29T08:02:20+00:00"
+ "time": "2025-12-09T09:54:45+00:00"
},
{
"name": "filament/widgets",
- "version": "v4.1.0",
+ "version": "v4.3.1",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/widgets.git",
- "reference": "5ad3577cf0d3f485678c617facb009f7cef978ac"
+ "reference": "555102cf4aea7f24977d24dd36f4bad0f7be528c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/filamentphp/widgets/zipball/5ad3577cf0d3f485678c617facb009f7cef978ac",
- "reference": "5ad3577cf0d3f485678c617facb009f7cef978ac",
+ "url": "https://api.github.com/repos/filamentphp/widgets/zipball/555102cf4aea7f24977d24dd36f4bad0f7be528c",
+ "reference": "555102cf4aea7f24977d24dd36f4bad0f7be528c",
"shasum": ""
},
"require": {
@@ -1876,7 +1922,7 @@
"issues": "https://github.com/filamentphp/filament/issues",
"source": "https://github.com/filamentphp/filament"
},
- "time": "2025-09-21T21:08:23+00:00"
+ "time": "2025-12-09T09:56:57+00:00"
},
{
"name": "firebase/php-jwt",
@@ -2017,31 +2063,31 @@
},
{
"name": "fruitcake/php-cors",
- "version": "v1.3.0",
+ "version": "v1.4.0",
"source": {
"type": "git",
"url": "https://github.com/fruitcake/php-cors.git",
- "reference": "3d158f36e7875e2f040f37bc0573956240a5a38b"
+ "reference": "38aaa6c3fd4c157ffe2a4d10aa8b9b16ba8de379"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/3d158f36e7875e2f040f37bc0573956240a5a38b",
- "reference": "3d158f36e7875e2f040f37bc0573956240a5a38b",
+ "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/38aaa6c3fd4c157ffe2a4d10aa8b9b16ba8de379",
+ "reference": "38aaa6c3fd4c157ffe2a4d10aa8b9b16ba8de379",
"shasum": ""
},
"require": {
- "php": "^7.4|^8.0",
- "symfony/http-foundation": "^4.4|^5.4|^6|^7"
+ "php": "^8.1",
+ "symfony/http-foundation": "^5.4|^6.4|^7.3|^8"
},
"require-dev": {
- "phpstan/phpstan": "^1.4",
+ "phpstan/phpstan": "^2",
"phpunit/phpunit": "^9",
- "squizlabs/php_codesniffer": "^3.5"
+ "squizlabs/php_codesniffer": "^4"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.2-dev"
+ "dev-master": "1.3-dev"
}
},
"autoload": {
@@ -2072,7 +2118,7 @@
],
"support": {
"issues": "https://github.com/fruitcake/php-cors/issues",
- "source": "https://github.com/fruitcake/php-cors/tree/v1.3.0"
+ "source": "https://github.com/fruitcake/php-cors/tree/v1.4.0"
},
"funding": [
{
@@ -2084,7 +2130,7 @@
"type": "github"
}
],
- "time": "2023-10-12T05:21:21+00:00"
+ "time": "2025-12-03T09:33:47+00:00"
},
{
"name": "geoip2/geoip2",
@@ -2810,16 +2856,16 @@
},
{
"name": "kirschbaum-development/eloquent-power-joins",
- "version": "4.2.8",
+ "version": "4.2.11",
"source": {
"type": "git",
"url": "https://github.com/kirschbaum-development/eloquent-power-joins.git",
- "reference": "d67c7e2efa886d2ef8bb29e86c3ddb9438ac6390"
+ "reference": "0e3e3372992e4bf82391b3c7b84b435c3db73588"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/kirschbaum-development/eloquent-power-joins/zipball/d67c7e2efa886d2ef8bb29e86c3ddb9438ac6390",
- "reference": "d67c7e2efa886d2ef8bb29e86c3ddb9438ac6390",
+ "url": "https://api.github.com/repos/kirschbaum-development/eloquent-power-joins/zipball/0e3e3372992e4bf82391b3c7b84b435c3db73588",
+ "reference": "0e3e3372992e4bf82391b3c7b84b435c3db73588",
"shasum": ""
},
"require": {
@@ -2867,22 +2913,22 @@
],
"support": {
"issues": "https://github.com/kirschbaum-development/eloquent-power-joins/issues",
- "source": "https://github.com/kirschbaum-development/eloquent-power-joins/tree/4.2.8"
+ "source": "https://github.com/kirschbaum-development/eloquent-power-joins/tree/4.2.11"
},
- "time": "2025-08-14T18:43:05+00:00"
+ "time": "2025-12-17T00:37:48+00:00"
},
{
"name": "laravel/framework",
- "version": "v12.32.5",
+ "version": "v12.43.1",
"source": {
"type": "git",
"url": "https://github.com/laravel/framework.git",
- "reference": "77b2740391cd2a825ba59d6fada45e9b8b9bcc5a"
+ "reference": "195b893593a9298edee177c0844132ebaa02102f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/framework/zipball/77b2740391cd2a825ba59d6fada45e9b8b9bcc5a",
- "reference": "77b2740391cd2a825ba59d6fada45e9b8b9bcc5a",
+ "url": "https://api.github.com/repos/laravel/framework/zipball/195b893593a9298edee177c0844132ebaa02102f",
+ "reference": "195b893593a9298edee177c0844132ebaa02102f",
"shasum": ""
},
"require": {
@@ -2970,6 +3016,7 @@
"illuminate/process": "self.version",
"illuminate/queue": "self.version",
"illuminate/redis": "self.version",
+ "illuminate/reflection": "self.version",
"illuminate/routing": "self.version",
"illuminate/session": "self.version",
"illuminate/support": "self.version",
@@ -2994,13 +3041,13 @@
"league/flysystem-sftp-v3": "^3.25.1",
"mockery/mockery": "^1.6.10",
"opis/json-schema": "^2.4.1",
- "orchestra/testbench-core": "^10.6.5",
+ "orchestra/testbench-core": "^10.8.1",
"pda/pheanstalk": "^5.0.6|^7.0.0",
"php-http/discovery": "^1.15",
"phpstan/phpstan": "^2.0",
"phpunit/phpunit": "^10.5.35|^11.5.3|^12.0.1",
"predis/predis": "^2.3|^3.0",
- "resend/resend-php": "^0.10.0",
+ "resend/resend-php": "^0.10.0|^1.0",
"symfony/cache": "^7.2.0",
"symfony/http-client": "^7.2.0",
"symfony/psr-http-message-bridge": "^7.2.0",
@@ -3034,7 +3081,7 @@
"predis/predis": "Required to use the predis connector (^2.3|^3.0).",
"psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).",
"pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^6.0|^7.0).",
- "resend/resend-php": "Required to enable support for the Resend mail transport (^0.10.0).",
+ "resend/resend-php": "Required to enable support for the Resend mail transport (^0.10.0|^1.0).",
"symfony/cache": "Required to PSR-6 cache bridge (^7.2).",
"symfony/filesystem": "Required to enable support for relative symbolic links (^7.2).",
"symfony/http-client": "Required to enable support for the Symfony API mail transports (^7.2).",
@@ -3056,6 +3103,7 @@
"src/Illuminate/Filesystem/functions.php",
"src/Illuminate/Foundation/helpers.php",
"src/Illuminate/Log/functions.php",
+ "src/Illuminate/Reflection/helpers.php",
"src/Illuminate/Support/functions.php",
"src/Illuminate/Support/helpers.php"
],
@@ -3064,7 +3112,8 @@
"Illuminate\\Support\\": [
"src/Illuminate/Macroable/",
"src/Illuminate/Collections/",
- "src/Illuminate/Conditionable/"
+ "src/Illuminate/Conditionable/",
+ "src/Illuminate/Reflection/"
]
}
},
@@ -3088,20 +3137,20 @@
"issues": "https://github.com/laravel/framework/issues",
"source": "https://github.com/laravel/framework"
},
- "time": "2025-09-30T17:39:22+00:00"
+ "time": "2025-12-16T18:53:08+00:00"
},
{
"name": "laravel/horizon",
- "version": "v5.34.0",
+ "version": "v5.41.0",
"source": {
"type": "git",
"url": "https://github.com/laravel/horizon.git",
- "reference": "c110ff6ed494b57beb6b4102a92bb4bf896bb774"
+ "reference": "eb6738246ab9d3450b705126b9794dfb0ea371b3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/horizon/zipball/c110ff6ed494b57beb6b4102a92bb4bf896bb774",
- "reference": "c110ff6ed494b57beb6b4102a92bb4bf896bb774",
+ "url": "https://api.github.com/repos/laravel/horizon/zipball/eb6738246ab9d3450b705126b9794dfb0ea371b3",
+ "reference": "eb6738246ab9d3450b705126b9794dfb0ea371b3",
"shasum": ""
},
"require": {
@@ -3121,9 +3170,8 @@
},
"require-dev": {
"mockery/mockery": "^1.0",
- "orchestra/testbench": "^7.0|^8.0|^9.0|^10.0",
+ "orchestra/testbench": "^7.55|^8.36|^9.15|^10.8",
"phpstan/phpstan": "^1.10|^2.0",
- "phpunit/phpunit": "^9.0|^10.4|^11.5|^12.0",
"predis/predis": "^1.1|^2.0|^3.0"
},
"suggest": {
@@ -3166,9 +3214,9 @@
],
"support": {
"issues": "https://github.com/laravel/horizon/issues",
- "source": "https://github.com/laravel/horizon/tree/v5.34.0"
+ "source": "https://github.com/laravel/horizon/tree/v5.41.0"
},
- "time": "2025-09-12T15:15:45+00:00"
+ "time": "2025-12-14T15:55:28+00:00"
},
{
"name": "laravel/passport",
@@ -3248,16 +3296,16 @@
},
{
"name": "laravel/prompts",
- "version": "v0.3.7",
+ "version": "v0.3.8",
"source": {
"type": "git",
"url": "https://github.com/laravel/prompts.git",
- "reference": "a1891d362714bc40c8d23b0b1d7090f022ea27cc"
+ "reference": "096748cdfb81988f60090bbb839ce3205ace0d35"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/prompts/zipball/a1891d362714bc40c8d23b0b1d7090f022ea27cc",
- "reference": "a1891d362714bc40c8d23b0b1d7090f022ea27cc",
+ "url": "https://api.github.com/repos/laravel/prompts/zipball/096748cdfb81988f60090bbb839ce3205ace0d35",
+ "reference": "096748cdfb81988f60090bbb839ce3205ace0d35",
"shasum": ""
},
"require": {
@@ -3273,7 +3321,7 @@
"require-dev": {
"illuminate/collections": "^10.0|^11.0|^12.0",
"mockery/mockery": "^1.5",
- "pestphp/pest": "^2.3|^3.4",
+ "pestphp/pest": "^2.3|^3.4|^4.0",
"phpstan/phpstan": "^1.12.28",
"phpstan/phpstan-mockery": "^1.1.3"
},
@@ -3301,22 +3349,22 @@
"description": "Add beautiful and user-friendly forms to your command-line applications.",
"support": {
"issues": "https://github.com/laravel/prompts/issues",
- "source": "https://github.com/laravel/prompts/tree/v0.3.7"
+ "source": "https://github.com/laravel/prompts/tree/v0.3.8"
},
- "time": "2025-09-19T13:47:56+00:00"
+ "time": "2025-11-21T20:52:52+00:00"
},
{
"name": "laravel/sanctum",
- "version": "v4.2.0",
+ "version": "v4.2.1",
"source": {
"type": "git",
"url": "https://github.com/laravel/sanctum.git",
- "reference": "fd6df4f79f48a72992e8d29a9c0ee25422a0d677"
+ "reference": "f5fb373be39a246c74a060f2cf2ae2c2145b3664"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/sanctum/zipball/fd6df4f79f48a72992e8d29a9c0ee25422a0d677",
- "reference": "fd6df4f79f48a72992e8d29a9c0ee25422a0d677",
+ "url": "https://api.github.com/repos/laravel/sanctum/zipball/f5fb373be39a246c74a060f2cf2ae2c2145b3664",
+ "reference": "f5fb373be39a246c74a060f2cf2ae2c2145b3664",
"shasum": ""
},
"require": {
@@ -3330,9 +3378,8 @@
},
"require-dev": {
"mockery/mockery": "^1.6",
- "orchestra/testbench": "^9.0|^10.0",
- "phpstan/phpstan": "^1.10",
- "phpunit/phpunit": "^11.3"
+ "orchestra/testbench": "^9.15|^10.8",
+ "phpstan/phpstan": "^1.10"
},
"type": "library",
"extra": {
@@ -3367,20 +3414,20 @@
"issues": "https://github.com/laravel/sanctum/issues",
"source": "https://github.com/laravel/sanctum"
},
- "time": "2025-07-09T19:45:24+00:00"
+ "time": "2025-11-21T13:59:03+00:00"
},
{
"name": "laravel/serializable-closure",
- "version": "v2.0.5",
+ "version": "v2.0.7",
"source": {
"type": "git",
"url": "https://github.com/laravel/serializable-closure.git",
- "reference": "3832547db6e0e2f8bb03d4093857b378c66eceed"
+ "reference": "cb291e4c998ac50637c7eeb58189c14f5de5b9dd"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/3832547db6e0e2f8bb03d4093857b378c66eceed",
- "reference": "3832547db6e0e2f8bb03d4093857b378c66eceed",
+ "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/cb291e4c998ac50637c7eeb58189c14f5de5b9dd",
+ "reference": "cb291e4c998ac50637c7eeb58189c14f5de5b9dd",
"shasum": ""
},
"require": {
@@ -3389,7 +3436,7 @@
"require-dev": {
"illuminate/support": "^10.0|^11.0|^12.0",
"nesbot/carbon": "^2.67|^3.0",
- "pestphp/pest": "^2.36|^3.0",
+ "pestphp/pest": "^2.36|^3.0|^4.0",
"phpstan/phpstan": "^2.0",
"symfony/var-dumper": "^6.2.0|^7.0.0"
},
@@ -3428,20 +3475,20 @@
"issues": "https://github.com/laravel/serializable-closure/issues",
"source": "https://github.com/laravel/serializable-closure"
},
- "time": "2025-09-22T17:29:40+00:00"
+ "time": "2025-11-21T20:52:36+00:00"
},
{
"name": "laravel/tinker",
- "version": "v2.10.1",
+ "version": "v2.10.2",
"source": {
"type": "git",
"url": "https://github.com/laravel/tinker.git",
- "reference": "22177cc71807d38f2810c6204d8f7183d88a57d3"
+ "reference": "3bcb5f62d6f837e0f093a601e26badafb127bd4c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/tinker/zipball/22177cc71807d38f2810c6204d8f7183d88a57d3",
- "reference": "22177cc71807d38f2810c6204d8f7183d88a57d3",
+ "url": "https://api.github.com/repos/laravel/tinker/zipball/3bcb5f62d6f837e0f093a601e26badafb127bd4c",
+ "reference": "3bcb5f62d6f837e0f093a601e26badafb127bd4c",
"shasum": ""
},
"require": {
@@ -3492,40 +3539,85 @@
],
"support": {
"issues": "https://github.com/laravel/tinker/issues",
- "source": "https://github.com/laravel/tinker/tree/v2.10.1"
+ "source": "https://github.com/laravel/tinker/tree/v2.10.2"
},
- "time": "2025-01-27T14:24:01+00:00"
+ "time": "2025-11-20T16:29:12+00:00"
},
{
- "name": "lcobucci/clock",
- "version": "3.3.1",
+ "name": "lbuchs/webauthn",
+ "version": "v2.2.0",
"source": {
"type": "git",
- "url": "https://github.com/lcobucci/clock.git",
- "reference": "db3713a61addfffd615b79bf0bc22f0ccc61b86b"
+ "url": "https://github.com/lbuchs/WebAuthn.git",
+ "reference": "20adb4a240c3997bd8cac7dc4dde38ab0bea0ed1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/lcobucci/clock/zipball/db3713a61addfffd615b79bf0bc22f0ccc61b86b",
- "reference": "db3713a61addfffd615b79bf0bc22f0ccc61b86b",
+ "url": "https://api.github.com/repos/lbuchs/WebAuthn/zipball/20adb4a240c3997bd8cac7dc4dde38ab0bea0ed1",
+ "reference": "20adb4a240c3997bd8cac7dc4dde38ab0bea0ed1",
"shasum": ""
},
"require": {
- "php": "~8.2.0 || ~8.3.0 || ~8.4.0",
+ "php": ">=8.0.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "lbuchs\\WebAuthn\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Lukas Buchs",
+ "role": "Developer"
+ }
+ ],
+ "description": "A simple PHP WebAuthn (FIDO2) server library",
+ "homepage": "https://github.com/lbuchs/webauthn",
+ "keywords": [
+ "Authentication",
+ "webauthn"
+ ],
+ "support": {
+ "issues": "https://github.com/lbuchs/WebAuthn/issues",
+ "source": "https://github.com/lbuchs/WebAuthn/tree/v2.2.0"
+ },
+ "time": "2024-07-04T07:17:40+00:00"
+ },
+ {
+ "name": "lcobucci/clock",
+ "version": "3.5.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/lcobucci/clock.git",
+ "reference": "a3139d9e97d47826f27e6a17bb63f13621f86058"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/lcobucci/clock/zipball/a3139d9e97d47826f27e6a17bb63f13621f86058",
+ "reference": "a3139d9e97d47826f27e6a17bb63f13621f86058",
+ "shasum": ""
+ },
+ "require": {
+ "php": "~8.3.0 || ~8.4.0 || ~8.5.0",
"psr/clock": "^1.0"
},
"provide": {
"psr/clock-implementation": "1.0"
},
"require-dev": {
- "infection/infection": "^0.29",
- "lcobucci/coding-standard": "^11.1.0",
+ "infection/infection": "^0.31",
+ "lcobucci/coding-standard": "^11.2.0",
"phpstan/extension-installer": "^1.3.1",
- "phpstan/phpstan": "^1.10.25",
- "phpstan/phpstan-deprecation-rules": "^1.1.3",
- "phpstan/phpstan-phpunit": "^1.3.13",
- "phpstan/phpstan-strict-rules": "^1.5.1",
- "phpunit/phpunit": "^11.3.6"
+ "phpstan/phpstan": "^2.0.0",
+ "phpstan/phpstan-deprecation-rules": "^2.0.0",
+ "phpstan/phpstan-phpunit": "^2.0.0",
+ "phpstan/phpstan-strict-rules": "^2.0.0",
+ "phpunit/phpunit": "^12.0.0"
},
"type": "library",
"autoload": {
@@ -3546,7 +3638,7 @@
"description": "Yet another clock abstraction",
"support": {
"issues": "https://github.com/lcobucci/clock/issues",
- "source": "https://github.com/lcobucci/clock/tree/3.3.1"
+ "source": "https://github.com/lcobucci/clock/tree/3.5.0"
},
"funding": [
{
@@ -3558,26 +3650,26 @@
"type": "patreon"
}
],
- "time": "2024-09-24T20:45:14+00:00"
+ "time": "2025-10-27T09:03:17+00:00"
},
{
"name": "lcobucci/jwt",
- "version": "5.5.0",
+ "version": "5.6.0",
"source": {
"type": "git",
"url": "https://github.com/lcobucci/jwt.git",
- "reference": "a835af59b030d3f2967725697cf88300f579088e"
+ "reference": "bb3e9f21e4196e8afc41def81ef649c164bca25e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/lcobucci/jwt/zipball/a835af59b030d3f2967725697cf88300f579088e",
- "reference": "a835af59b030d3f2967725697cf88300f579088e",
+ "url": "https://api.github.com/repos/lcobucci/jwt/zipball/bb3e9f21e4196e8afc41def81ef649c164bca25e",
+ "reference": "bb3e9f21e4196e8afc41def81ef649c164bca25e",
"shasum": ""
},
"require": {
"ext-openssl": "*",
"ext-sodium": "*",
- "php": "~8.2.0 || ~8.3.0 || ~8.4.0",
+ "php": "~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0",
"psr/clock": "^1.0"
},
"require-dev": {
@@ -3619,7 +3711,7 @@
],
"support": {
"issues": "https://github.com/lcobucci/jwt/issues",
- "source": "https://github.com/lcobucci/jwt/tree/5.5.0"
+ "source": "https://github.com/lcobucci/jwt/tree/5.6.0"
},
"funding": [
{
@@ -3631,20 +3723,20 @@
"type": "patreon"
}
],
- "time": "2025-01-26T21:29:45+00:00"
+ "time": "2025-10-17T11:30:53+00:00"
},
{
"name": "league/commonmark",
- "version": "2.7.1",
+ "version": "2.8.0",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/commonmark.git",
- "reference": "10732241927d3971d28e7ea7b5712721fa2296ca"
+ "reference": "4efa10c1e56488e658d10adf7b7b7dcd19940bfb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/10732241927d3971d28e7ea7b5712721fa2296ca",
- "reference": "10732241927d3971d28e7ea7b5712721fa2296ca",
+ "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/4efa10c1e56488e658d10adf7b7b7dcd19940bfb",
+ "reference": "4efa10c1e56488e658d10adf7b7b7dcd19940bfb",
"shasum": ""
},
"require": {
@@ -3681,7 +3773,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "2.8-dev"
+ "dev-main": "2.9-dev"
}
},
"autoload": {
@@ -3738,7 +3830,7 @@
"type": "tidelift"
}
],
- "time": "2025-07-20T12:47:49+00:00"
+ "time": "2025-11-26T21:48:24+00:00"
},
{
"name": "league/config",
@@ -3824,16 +3916,16 @@
},
{
"name": "league/csv",
- "version": "9.26.0",
+ "version": "9.27.1",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/csv.git",
- "reference": "7fce732754d043f3938899e5183e2d0f3d31b571"
+ "reference": "26de738b8fccf785397d05ee2fc07b6cd8749797"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/thephpleague/csv/zipball/7fce732754d043f3938899e5183e2d0f3d31b571",
- "reference": "7fce732754d043f3938899e5183e2d0f3d31b571",
+ "url": "https://api.github.com/repos/thephpleague/csv/zipball/26de738b8fccf785397d05ee2fc07b6cd8749797",
+ "reference": "26de738b8fccf785397d05ee2fc07b6cd8749797",
"shasum": ""
},
"require": {
@@ -3911,7 +4003,7 @@
"type": "github"
}
],
- "time": "2025-10-01T11:24:54+00:00"
+ "time": "2025-10-25T08:35:20+00:00"
},
{
"name": "league/event",
@@ -3969,16 +4061,16 @@
},
{
"name": "league/flysystem",
- "version": "3.30.0",
+ "version": "3.30.2",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/flysystem.git",
- "reference": "2203e3151755d874bb2943649dae1eb8533ac93e"
+ "reference": "5966a8ba23e62bdb518dd9e0e665c2dbd4b5b277"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/2203e3151755d874bb2943649dae1eb8533ac93e",
- "reference": "2203e3151755d874bb2943649dae1eb8533ac93e",
+ "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/5966a8ba23e62bdb518dd9e0e665c2dbd4b5b277",
+ "reference": "5966a8ba23e62bdb518dd9e0e665c2dbd4b5b277",
"shasum": ""
},
"require": {
@@ -4046,22 +4138,22 @@
],
"support": {
"issues": "https://github.com/thephpleague/flysystem/issues",
- "source": "https://github.com/thephpleague/flysystem/tree/3.30.0"
+ "source": "https://github.com/thephpleague/flysystem/tree/3.30.2"
},
- "time": "2025-06-25T13:29:59+00:00"
+ "time": "2025-11-10T17:13:11+00:00"
},
{
"name": "league/flysystem-local",
- "version": "3.30.0",
+ "version": "3.30.2",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/flysystem-local.git",
- "reference": "6691915f77c7fb69adfb87dcd550052dc184ee10"
+ "reference": "ab4f9d0d672f601b102936aa728801dd1a11968d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/6691915f77c7fb69adfb87dcd550052dc184ee10",
- "reference": "6691915f77c7fb69adfb87dcd550052dc184ee10",
+ "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/ab4f9d0d672f601b102936aa728801dd1a11968d",
+ "reference": "ab4f9d0d672f601b102936aa728801dd1a11968d",
"shasum": ""
},
"require": {
@@ -4095,9 +4187,9 @@
"local"
],
"support": {
- "source": "https://github.com/thephpleague/flysystem-local/tree/3.30.0"
+ "source": "https://github.com/thephpleague/flysystem-local/tree/3.30.2"
},
- "time": "2025-05-21T10:34:19+00:00"
+ "time": "2025-11-10T11:23:37+00:00"
},
{
"name": "league/flysystem-sftp-v3",
@@ -4294,33 +4386,38 @@
},
{
"name": "league/uri",
- "version": "7.5.1",
+ "version": "7.7.0",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/uri.git",
- "reference": "81fb5145d2644324614cc532b28efd0215bda430"
+ "reference": "8d587cddee53490f9b82bf203d3a9aa7ea4f9807"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/thephpleague/uri/zipball/81fb5145d2644324614cc532b28efd0215bda430",
- "reference": "81fb5145d2644324614cc532b28efd0215bda430",
+ "url": "https://api.github.com/repos/thephpleague/uri/zipball/8d587cddee53490f9b82bf203d3a9aa7ea4f9807",
+ "reference": "8d587cddee53490f9b82bf203d3a9aa7ea4f9807",
"shasum": ""
},
"require": {
- "league/uri-interfaces": "^7.5",
- "php": "^8.1"
+ "league/uri-interfaces": "^7.7",
+ "php": "^8.1",
+ "psr/http-factory": "^1"
},
"conflict": {
"league/uri-schemes": "^1.0"
},
"suggest": {
"ext-bcmath": "to improve IPV4 host parsing",
+ "ext-dom": "to convert the URI into an HTML anchor tag",
"ext-fileinfo": "to create Data URI from file contennts",
"ext-gmp": "to improve IPV4 host parsing",
"ext-intl": "to handle IDN host with the best performance",
+ "ext-uri": "to use the PHP native URI class",
"jeremykendall/php-domain-parser": "to resolve Public Suffix and Top Level Domain",
"league/uri-components": "Needed to easily manipulate URI objects components",
+ "league/uri-polyfill": "Needed to backport the PHP URI extension for older versions of PHP",
"php-64bit": "to improve IPV4 host parsing",
+ "rowbot/url": "to handle WHATWG URL",
"symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present"
},
"type": "library",
@@ -4348,6 +4445,7 @@
"description": "URI manipulation library",
"homepage": "https://uri.thephpleague.com",
"keywords": [
+ "URN",
"data-uri",
"file-uri",
"ftp",
@@ -4360,9 +4458,11 @@
"psr-7",
"query-string",
"querystring",
+ "rfc2141",
"rfc3986",
"rfc3987",
"rfc6570",
+ "rfc8141",
"uri",
"uri-template",
"url",
@@ -4372,7 +4472,7 @@
"docs": "https://uri.thephpleague.com",
"forum": "https://thephpleague.slack.com",
"issues": "https://github.com/thephpleague/uri-src/issues",
- "source": "https://github.com/thephpleague/uri/tree/7.5.1"
+ "source": "https://github.com/thephpleague/uri/tree/7.7.0"
},
"funding": [
{
@@ -4380,34 +4480,37 @@
"type": "github"
}
],
- "time": "2024-12-08T08:40:02+00:00"
+ "time": "2025-12-07T16:02:06+00:00"
},
{
"name": "league/uri-components",
- "version": "7.5.1",
+ "version": "7.7.0",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/uri-components.git",
- "reference": "4aabf0e2f2f9421ffcacab35be33e4fb5e63c44f"
+ "reference": "005f8693ce8c1f16f80e88a05cbf08da04c1c374"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/thephpleague/uri-components/zipball/4aabf0e2f2f9421ffcacab35be33e4fb5e63c44f",
- "reference": "4aabf0e2f2f9421ffcacab35be33e4fb5e63c44f",
+ "url": "https://api.github.com/repos/thephpleague/uri-components/zipball/005f8693ce8c1f16f80e88a05cbf08da04c1c374",
+ "reference": "005f8693ce8c1f16f80e88a05cbf08da04c1c374",
"shasum": ""
},
"require": {
- "league/uri": "^7.5",
+ "league/uri": "^7.7",
"php": "^8.1"
},
"suggest": {
+ "bakame/aide-uri": "A polyfill for PHP8.1 until PHP8.4 to add support to PHP Native URI parser",
"ext-bcmath": "to improve IPV4 host parsing",
"ext-fileinfo": "to create Data URI from file contennts",
"ext-gmp": "to improve IPV4 host parsing",
"ext-intl": "to handle IDN host with the best performance",
"ext-mbstring": "to use the sorting algorithm of URLSearchParams",
"jeremykendall/php-domain-parser": "to resolve Public Suffix and Top Level Domain",
+ "league/uri-polyfill": "Needed to backport the PHP URI extension for older versions of PHP",
"php-64bit": "to improve IPV4 host parsing",
+ "rowbot/url": "to handle WHATWG URL",
"symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present"
},
"type": "library",
@@ -4454,7 +4557,7 @@
"docs": "https://uri.thephpleague.com",
"forum": "https://thephpleague.slack.com",
"issues": "https://github.com/thephpleague/uri-src/issues",
- "source": "https://github.com/thephpleague/uri-components/tree/7.5.1"
+ "source": "https://github.com/thephpleague/uri-components/tree/7.7.0"
},
"funding": [
{
@@ -4462,26 +4565,25 @@
"type": "github"
}
],
- "time": "2024-12-08T08:40:02+00:00"
+ "time": "2025-12-07T16:02:56+00:00"
},
{
"name": "league/uri-interfaces",
- "version": "7.5.0",
+ "version": "7.7.0",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/uri-interfaces.git",
- "reference": "08cfc6c4f3d811584fb09c37e2849e6a7f9b0742"
+ "reference": "62ccc1a0435e1c54e10ee6022df28d6c04c2946c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/08cfc6c4f3d811584fb09c37e2849e6a7f9b0742",
- "reference": "08cfc6c4f3d811584fb09c37e2849e6a7f9b0742",
+ "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/62ccc1a0435e1c54e10ee6022df28d6c04c2946c",
+ "reference": "62ccc1a0435e1c54e10ee6022df28d6c04c2946c",
"shasum": ""
},
"require": {
"ext-filter": "*",
"php": "^8.1",
- "psr/http-factory": "^1",
"psr/http-message": "^1.1 || ^2.0"
},
"suggest": {
@@ -4489,6 +4591,7 @@
"ext-gmp": "to improve IPV4 host parsing",
"ext-intl": "to handle IDN host with the best performance",
"php-64bit": "to improve IPV4 host parsing",
+ "rowbot/url": "to handle WHATWG URL",
"symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present"
},
"type": "library",
@@ -4513,7 +4616,7 @@
"homepage": "https://nyamsprod.com"
}
],
- "description": "Common interfaces and classes for URI representation and interaction",
+ "description": "Common tools for parsing and resolving RFC3987/RFC3986 URI",
"homepage": "https://uri.thephpleague.com",
"keywords": [
"data-uri",
@@ -4538,7 +4641,7 @@
"docs": "https://uri.thephpleague.com",
"forum": "https://thephpleague.slack.com",
"issues": "https://github.com/thephpleague/uri-src/issues",
- "source": "https://github.com/thephpleague/uri-interfaces/tree/7.5.0"
+ "source": "https://github.com/thephpleague/uri-interfaces/tree/7.7.0"
},
"funding": [
{
@@ -4546,20 +4649,20 @@
"type": "github"
}
],
- "time": "2024-12-08T08:18:47+00:00"
+ "time": "2025-12-07T16:03:21+00:00"
},
{
"name": "livewire/livewire",
- "version": "v3.6.4",
+ "version": "v3.7.3",
"source": {
"type": "git",
"url": "https://github.com/livewire/livewire.git",
- "reference": "ef04be759da41b14d2d129e670533180a44987dc"
+ "reference": "a5384df9fbd3eaf02e053bc49aabc8ace293fc1c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/livewire/livewire/zipball/ef04be759da41b14d2d129e670533180a44987dc",
- "reference": "ef04be759da41b14d2d129e670533180a44987dc",
+ "url": "https://api.github.com/repos/livewire/livewire/zipball/a5384df9fbd3eaf02e053bc49aabc8ace293fc1c",
+ "reference": "a5384df9fbd3eaf02e053bc49aabc8ace293fc1c",
"shasum": ""
},
"require": {
@@ -4614,7 +4717,7 @@
"description": "A front-end framework for Laravel.",
"support": {
"issues": "https://github.com/livewire/livewire/issues",
- "source": "https://github.com/livewire/livewire/tree/v3.6.4"
+ "source": "https://github.com/livewire/livewire/tree/v3.7.3"
},
"funding": [
{
@@ -4622,7 +4725,7 @@
"type": "github"
}
],
- "time": "2025-07-17T05:12:15+00:00"
+ "time": "2025-12-19T02:00:29+00:00"
},
{
"name": "masterminds/html5",
@@ -4693,16 +4796,16 @@
},
{
"name": "maxmind-db/reader",
- "version": "v1.12.1",
+ "version": "v1.13.1",
"source": {
"type": "git",
"url": "https://github.com/maxmind/MaxMind-DB-Reader-php.git",
- "reference": "815939e006b7e68062b540ec9e86aaa8be2b6ce4"
+ "reference": "2194f58d0f024ce923e685cdf92af3daf9951908"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/maxmind/MaxMind-DB-Reader-php/zipball/815939e006b7e68062b540ec9e86aaa8be2b6ce4",
- "reference": "815939e006b7e68062b540ec9e86aaa8be2b6ce4",
+ "url": "https://api.github.com/repos/maxmind/MaxMind-DB-Reader-php/zipball/2194f58d0f024ce923e685cdf92af3daf9951908",
+ "reference": "2194f58d0f024ce923e685cdf92af3daf9951908",
"shasum": ""
},
"require": {
@@ -4715,12 +4818,13 @@
"friendsofphp/php-cs-fixer": "3.*",
"phpstan/phpstan": "*",
"phpunit/phpunit": ">=8.0.0,<10.0.0",
- "squizlabs/php_codesniffer": "3.*"
+ "squizlabs/php_codesniffer": "4.*"
},
"suggest": {
"ext-bcmath": "bcmath or gmp is required for decoding larger integers with the pure PHP decoder",
"ext-gmp": "bcmath or gmp is required for decoding larger integers with the pure PHP decoder",
- "ext-maxminddb": "A C-based database decoder that provides significantly faster lookups"
+ "ext-maxminddb": "A C-based database decoder that provides significantly faster lookups",
+ "maxmind-db/reader-ext": "C extension for significantly faster IP lookups (install via PIE: pie install maxmind-db/reader-ext)"
},
"type": "library",
"autoload": {
@@ -4750,22 +4854,22 @@
],
"support": {
"issues": "https://github.com/maxmind/MaxMind-DB-Reader-php/issues",
- "source": "https://github.com/maxmind/MaxMind-DB-Reader-php/tree/v1.12.1"
+ "source": "https://github.com/maxmind/MaxMind-DB-Reader-php/tree/v1.13.1"
},
- "time": "2025-05-05T20:56:32+00:00"
+ "time": "2025-11-21T22:24:26+00:00"
},
{
"name": "maxmind/web-service-common",
- "version": "v0.10.0",
+ "version": "v0.11.0",
"source": {
"type": "git",
"url": "https://github.com/maxmind/web-service-common-php.git",
- "reference": "d7c7c42fc31bff26e0ded73a6e187bcfb193f9c4"
+ "reference": "5b9e3d3472213361eebdb3ab8879e91b8952091b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/maxmind/web-service-common-php/zipball/d7c7c42fc31bff26e0ded73a6e187bcfb193f9c4",
- "reference": "d7c7c42fc31bff26e0ded73a6e187bcfb193f9c4",
+ "url": "https://api.github.com/repos/maxmind/web-service-common-php/zipball/5b9e3d3472213361eebdb3ab8879e91b8952091b",
+ "reference": "5b9e3d3472213361eebdb3ab8879e91b8952091b",
"shasum": ""
},
"require": {
@@ -4778,7 +4882,7 @@
"friendsofphp/php-cs-fixer": "3.*",
"phpstan/phpstan": "*",
"phpunit/phpunit": "^8.0 || ^9.0",
- "squizlabs/php_codesniffer": "3.*"
+ "squizlabs/php_codesniffer": "4.*"
},
"type": "library",
"autoload": {
@@ -4801,9 +4905,9 @@
"homepage": "https://github.com/maxmind/web-service-common-php",
"support": {
"issues": "https://github.com/maxmind/web-service-common-php/issues",
- "source": "https://github.com/maxmind/web-service-common-php/tree/v0.10.0"
+ "source": "https://github.com/maxmind/web-service-common-php/tree/v0.11.0"
},
- "time": "2024-11-14T23:14:52+00:00"
+ "time": "2025-11-20T18:33:17+00:00"
},
{
"name": "meilisearch/meilisearch-php",
@@ -4990,16 +5094,16 @@
},
{
"name": "nesbot/carbon",
- "version": "3.10.3",
+ "version": "3.11.0",
"source": {
"type": "git",
"url": "https://github.com/CarbonPHP/carbon.git",
- "reference": "8e3643dcd149ae0fe1d2ff4f2c8e4bbfad7c165f"
+ "reference": "bdb375400dcd162624531666db4799b36b64e4a1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/8e3643dcd149ae0fe1d2ff4f2c8e4bbfad7c165f",
- "reference": "8e3643dcd149ae0fe1d2ff4f2c8e4bbfad7c165f",
+ "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/bdb375400dcd162624531666db4799b36b64e4a1",
+ "reference": "bdb375400dcd162624531666db4799b36b64e4a1",
"shasum": ""
},
"require": {
@@ -5007,9 +5111,9 @@
"ext-json": "*",
"php": "^8.1",
"psr/clock": "^1.0",
- "symfony/clock": "^6.3.12 || ^7.0",
+ "symfony/clock": "^6.3.12 || ^7.0 || ^8.0",
"symfony/polyfill-mbstring": "^1.0",
- "symfony/translation": "^4.4.18 || ^5.2.1 || ^6.0 || ^7.0"
+ "symfony/translation": "^4.4.18 || ^5.2.1 || ^6.0 || ^7.0 || ^8.0"
},
"provide": {
"psr/clock-implementation": "1.0"
@@ -5091,7 +5195,7 @@
"type": "tidelift"
}
],
- "time": "2025-09-06T13:39:36+00:00"
+ "time": "2025-12-02T21:04:28+00:00"
},
{
"name": "nette/php-generator",
@@ -5167,25 +5271,25 @@
},
{
"name": "nette/schema",
- "version": "v1.3.2",
+ "version": "v1.3.3",
"source": {
"type": "git",
"url": "https://github.com/nette/schema.git",
- "reference": "da801d52f0354f70a638673c4a0f04e16529431d"
+ "reference": "2befc2f42d7c715fd9d95efc31b1081e5d765004"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nette/schema/zipball/da801d52f0354f70a638673c4a0f04e16529431d",
- "reference": "da801d52f0354f70a638673c4a0f04e16529431d",
+ "url": "https://api.github.com/repos/nette/schema/zipball/2befc2f42d7c715fd9d95efc31b1081e5d765004",
+ "reference": "2befc2f42d7c715fd9d95efc31b1081e5d765004",
"shasum": ""
},
"require": {
"nette/utils": "^4.0",
- "php": "8.1 - 8.4"
+ "php": "8.1 - 8.5"
},
"require-dev": {
"nette/tester": "^2.5.2",
- "phpstan/phpstan-nette": "^1.0",
+ "phpstan/phpstan-nette": "^2.0@stable",
"tracy/tracy": "^2.8"
},
"type": "library",
@@ -5195,6 +5299,9 @@
}
},
"autoload": {
+ "psr-4": {
+ "Nette\\": "src"
+ },
"classmap": [
"src/"
]
@@ -5223,26 +5330,26 @@
],
"support": {
"issues": "https://github.com/nette/schema/issues",
- "source": "https://github.com/nette/schema/tree/v1.3.2"
+ "source": "https://github.com/nette/schema/tree/v1.3.3"
},
- "time": "2024-10-06T23:10:23+00:00"
+ "time": "2025-10-30T22:57:59+00:00"
},
{
"name": "nette/utils",
- "version": "v4.0.8",
+ "version": "v4.1.0",
"source": {
"type": "git",
"url": "https://github.com/nette/utils.git",
- "reference": "c930ca4e3cf4f17dcfb03037703679d2396d2ede"
+ "reference": "fa1f0b8261ed150447979eb22e373b7b7ad5a8e0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nette/utils/zipball/c930ca4e3cf4f17dcfb03037703679d2396d2ede",
- "reference": "c930ca4e3cf4f17dcfb03037703679d2396d2ede",
+ "url": "https://api.github.com/repos/nette/utils/zipball/fa1f0b8261ed150447979eb22e373b7b7ad5a8e0",
+ "reference": "fa1f0b8261ed150447979eb22e373b7b7ad5a8e0",
"shasum": ""
},
"require": {
- "php": "8.0 - 8.5"
+ "php": "8.2 - 8.5"
},
"conflict": {
"nette/finder": "<3",
@@ -5265,7 +5372,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "4.0-dev"
+ "dev-master": "4.1-dev"
}
},
"autoload": {
@@ -5312,22 +5419,22 @@
],
"support": {
"issues": "https://github.com/nette/utils/issues",
- "source": "https://github.com/nette/utils/tree/v4.0.8"
+ "source": "https://github.com/nette/utils/tree/v4.1.0"
},
- "time": "2025-08-06T21:43:34+00:00"
+ "time": "2025-12-01T17:49:23+00:00"
},
{
"name": "nikic/php-parser",
- "version": "v5.6.1",
+ "version": "v5.7.0",
"source": {
"type": "git",
"url": "https://github.com/nikic/PHP-Parser.git",
- "reference": "f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2"
+ "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2",
- "reference": "f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2",
+ "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/dca41cd15c2ac9d055ad70dbfd011130757d1f82",
+ "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82",
"shasum": ""
},
"require": {
@@ -5370,37 +5477,37 @@
],
"support": {
"issues": "https://github.com/nikic/PHP-Parser/issues",
- "source": "https://github.com/nikic/PHP-Parser/tree/v5.6.1"
+ "source": "https://github.com/nikic/PHP-Parser/tree/v5.7.0"
},
- "time": "2025-08-13T20:13:15+00:00"
+ "time": "2025-12-06T11:56:16+00:00"
},
{
"name": "nunomaduro/termwind",
- "version": "v2.3.1",
+ "version": "v2.3.3",
"source": {
"type": "git",
"url": "https://github.com/nunomaduro/termwind.git",
- "reference": "dfa08f390e509967a15c22493dc0bac5733d9123"
+ "reference": "6fb2a640ff502caace8e05fd7be3b503a7e1c017"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/dfa08f390e509967a15c22493dc0bac5733d9123",
- "reference": "dfa08f390e509967a15c22493dc0bac5733d9123",
+ "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/6fb2a640ff502caace8e05fd7be3b503a7e1c017",
+ "reference": "6fb2a640ff502caace8e05fd7be3b503a7e1c017",
"shasum": ""
},
"require": {
"ext-mbstring": "*",
"php": "^8.2",
- "symfony/console": "^7.2.6"
+ "symfony/console": "^7.3.6"
},
"require-dev": {
- "illuminate/console": "^11.44.7",
- "laravel/pint": "^1.22.0",
+ "illuminate/console": "^11.46.1",
+ "laravel/pint": "^1.25.1",
"mockery/mockery": "^1.6.12",
- "pestphp/pest": "^2.36.0 || ^3.8.2",
- "phpstan/phpstan": "^1.12.25",
+ "pestphp/pest": "^2.36.0 || ^3.8.4 || ^4.1.3",
+ "phpstan/phpstan": "^1.12.32",
"phpstan/phpstan-strict-rules": "^1.6.2",
- "symfony/var-dumper": "^7.2.6",
+ "symfony/var-dumper": "^7.3.5",
"thecodingmachine/phpstan-strict-rules": "^1.0.0"
},
"type": "library",
@@ -5443,7 +5550,7 @@
],
"support": {
"issues": "https://github.com/nunomaduro/termwind/issues",
- "source": "https://github.com/nunomaduro/termwind/tree/v2.3.1"
+ "source": "https://github.com/nunomaduro/termwind/tree/v2.3.3"
},
"funding": [
{
@@ -5459,7 +5566,7 @@
"type": "github"
}
],
- "time": "2025-05-08T08:14:37+00:00"
+ "time": "2025-11-20T02:34:59+00:00"
},
{
"name": "nyholm/psr7",
@@ -5541,16 +5648,16 @@
},
{
"name": "openspout/openspout",
- "version": "v4.28.5",
+ "version": "v4.32.0",
"source": {
"type": "git",
"url": "https://github.com/openspout/openspout.git",
- "reference": "ab05a09fe6fce57c90338f83280648a9786ce36b"
+ "reference": "41f045c1f632e1474e15d4c7bc3abcb4a153563d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/openspout/openspout/zipball/ab05a09fe6fce57c90338f83280648a9786ce36b",
- "reference": "ab05a09fe6fce57c90338f83280648a9786ce36b",
+ "url": "https://api.github.com/repos/openspout/openspout/zipball/41f045c1f632e1474e15d4c7bc3abcb4a153563d",
+ "reference": "41f045c1f632e1474e15d4c7bc3abcb4a153563d",
"shasum": ""
},
"require": {
@@ -5560,17 +5667,17 @@
"ext-libxml": "*",
"ext-xmlreader": "*",
"ext-zip": "*",
- "php": "~8.2.0 || ~8.3.0 || ~8.4.0"
+ "php": "~8.3.0 || ~8.4.0 || ~8.5.0"
},
"require-dev": {
"ext-zlib": "*",
- "friendsofphp/php-cs-fixer": "^3.68.3",
- "infection/infection": "^0.29.10",
- "phpbench/phpbench": "^1.4.0",
- "phpstan/phpstan": "^2.1.2",
- "phpstan/phpstan-phpunit": "^2.0.4",
- "phpstan/phpstan-strict-rules": "^2",
- "phpunit/phpunit": "^11.5.4"
+ "friendsofphp/php-cs-fixer": "^3.86.0",
+ "infection/infection": "^0.31.2",
+ "phpbench/phpbench": "^1.4.1",
+ "phpstan/phpstan": "^2.1.22",
+ "phpstan/phpstan-phpunit": "^2.0.7",
+ "phpstan/phpstan-strict-rules": "^2.0.6",
+ "phpunit/phpunit": "^12.3.7"
},
"suggest": {
"ext-iconv": "To handle non UTF-8 CSV files (if \"php-mbstring\" is not already installed or is too limited)",
@@ -5618,7 +5725,7 @@
],
"support": {
"issues": "https://github.com/openspout/openspout/issues",
- "source": "https://github.com/openspout/openspout/tree/v4.28.5"
+ "source": "https://github.com/openspout/openspout/tree/v4.32.0"
},
"funding": [
{
@@ -5630,7 +5737,7 @@
"type": "github"
}
],
- "time": "2025-01-30T13:51:11+00:00"
+ "time": "2025-09-03T16:03:54+00:00"
},
{
"name": "orangehill/iseed",
@@ -6018,16 +6125,16 @@
},
{
"name": "phpseclib/phpseclib",
- "version": "3.0.46",
+ "version": "3.0.48",
"source": {
"type": "git",
"url": "https://github.com/phpseclib/phpseclib.git",
- "reference": "56483a7de62a6c2a6635e42e93b8a9e25d4f0ec6"
+ "reference": "64065a5679c50acb886e82c07aa139b0f757bb89"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/56483a7de62a6c2a6635e42e93b8a9e25d4f0ec6",
- "reference": "56483a7de62a6c2a6635e42e93b8a9e25d4f0ec6",
+ "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/64065a5679c50acb886e82c07aa139b0f757bb89",
+ "reference": "64065a5679c50acb886e82c07aa139b0f757bb89",
"shasum": ""
},
"require": {
@@ -6108,7 +6215,7 @@
],
"support": {
"issues": "https://github.com/phpseclib/phpseclib/issues",
- "source": "https://github.com/phpseclib/phpseclib/tree/3.0.46"
+ "source": "https://github.com/phpseclib/phpseclib/tree/3.0.48"
},
"funding": [
{
@@ -6124,20 +6231,20 @@
"type": "tidelift"
}
],
- "time": "2025-06-26T16:29:55+00:00"
+ "time": "2025-12-15T11:51:42+00:00"
},
{
"name": "pragmarx/google2fa",
- "version": "v8.0.3",
+ "version": "v9.0.0",
"source": {
"type": "git",
"url": "https://github.com/antonioribeiro/google2fa.git",
- "reference": "6f8d87ebd5afbf7790bde1ffc7579c7c705e0fad"
+ "reference": "e6bc62dd6ae83acc475f57912e27466019a1f2cf"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/antonioribeiro/google2fa/zipball/6f8d87ebd5afbf7790bde1ffc7579c7c705e0fad",
- "reference": "6f8d87ebd5afbf7790bde1ffc7579c7c705e0fad",
+ "url": "https://api.github.com/repos/antonioribeiro/google2fa/zipball/e6bc62dd6ae83acc475f57912e27466019a1f2cf",
+ "reference": "e6bc62dd6ae83acc475f57912e27466019a1f2cf",
"shasum": ""
},
"require": {
@@ -6174,27 +6281,27 @@
],
"support": {
"issues": "https://github.com/antonioribeiro/google2fa/issues",
- "source": "https://github.com/antonioribeiro/google2fa/tree/v8.0.3"
+ "source": "https://github.com/antonioribeiro/google2fa/tree/v9.0.0"
},
- "time": "2024-09-05T11:56:40+00:00"
+ "time": "2025-09-19T22:51:08+00:00"
},
{
"name": "pragmarx/google2fa-qrcode",
- "version": "v3.0.1",
+ "version": "v3.0.0",
"source": {
"type": "git",
"url": "https://github.com/antonioribeiro/google2fa-qrcode.git",
- "reference": "c23ebcc3a50de0d1566016a6dd1486e183bb78e1"
+ "reference": "ce4d8a729b6c93741c607cfb2217acfffb5bf76b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/antonioribeiro/google2fa-qrcode/zipball/c23ebcc3a50de0d1566016a6dd1486e183bb78e1",
- "reference": "c23ebcc3a50de0d1566016a6dd1486e183bb78e1",
+ "url": "https://api.github.com/repos/antonioribeiro/google2fa-qrcode/zipball/ce4d8a729b6c93741c607cfb2217acfffb5bf76b",
+ "reference": "ce4d8a729b6c93741c607cfb2217acfffb5bf76b",
"shasum": ""
},
"require": {
"php": ">=7.1",
- "pragmarx/google2fa": "^4.0|^5.0|^6.0|^7.0|^8.0"
+ "pragmarx/google2fa": ">=4.0"
},
"require-dev": {
"bacon/bacon-qr-code": "^2.0",
@@ -6241,9 +6348,9 @@
],
"support": {
"issues": "https://github.com/antonioribeiro/google2fa-qrcode/issues",
- "source": "https://github.com/antonioribeiro/google2fa-qrcode/tree/v3.0.1"
+ "source": "https://github.com/antonioribeiro/google2fa-qrcode/tree/v3.0.0"
},
- "time": "2025-09-19T23:02:26+00:00"
+ "time": "2021-08-15T12:53:48+00:00"
},
{
"name": "psr/cache",
@@ -6708,16 +6815,16 @@
},
{
"name": "psy/psysh",
- "version": "v0.12.12",
+ "version": "v0.12.18",
"source": {
"type": "git",
"url": "https://github.com/bobthecow/psysh.git",
- "reference": "cd23863404a40ccfaf733e3af4db2b459837f7e7"
+ "reference": "ddff0ac01beddc251786fe70367cd8bbdb258196"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/bobthecow/psysh/zipball/cd23863404a40ccfaf733e3af4db2b459837f7e7",
- "reference": "cd23863404a40ccfaf733e3af4db2b459837f7e7",
+ "url": "https://api.github.com/repos/bobthecow/psysh/zipball/ddff0ac01beddc251786fe70367cd8bbdb258196",
+ "reference": "ddff0ac01beddc251786fe70367cd8bbdb258196",
"shasum": ""
},
"require": {
@@ -6725,18 +6832,19 @@
"ext-tokenizer": "*",
"nikic/php-parser": "^5.0 || ^4.0",
"php": "^8.0 || ^7.4",
- "symfony/console": "^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4",
- "symfony/var-dumper": "^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4"
+ "symfony/console": "^8.0 || ^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4",
+ "symfony/var-dumper": "^8.0 || ^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4"
},
"conflict": {
"symfony/console": "4.4.37 || 5.3.14 || 5.3.15 || 5.4.3 || 5.4.4 || 6.0.3 || 6.0.4"
},
"require-dev": {
- "bamarni/composer-bin-plugin": "^1.2"
+ "bamarni/composer-bin-plugin": "^1.2",
+ "composer/class-map-generator": "^1.6"
},
"suggest": {
+ "composer/class-map-generator": "Improved tab completion performance with better class discovery.",
"ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)",
- "ext-pdo-sqlite": "The doc command requires SQLite to work.",
"ext-posix": "If you have PCNTL, you'll want the POSIX extension as well."
},
"bin": [
@@ -6780,9 +6888,9 @@
],
"support": {
"issues": "https://github.com/bobthecow/psysh/issues",
- "source": "https://github.com/bobthecow/psysh/tree/v0.12.12"
+ "source": "https://github.com/bobthecow/psysh/tree/v0.12.18"
},
- "time": "2025-09-20T13:46:31+00:00"
+ "time": "2025-12-17T14:35:46+00:00"
},
{
"name": "ralouphie/getallheaders",
@@ -6906,20 +7014,20 @@
},
{
"name": "ramsey/uuid",
- "version": "4.9.1",
+ "version": "4.9.2",
"source": {
"type": "git",
"url": "https://github.com/ramsey/uuid.git",
- "reference": "81f941f6f729b1e3ceea61d9d014f8b6c6800440"
+ "reference": "8429c78ca35a09f27565311b98101e2826affde0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/ramsey/uuid/zipball/81f941f6f729b1e3ceea61d9d014f8b6c6800440",
- "reference": "81f941f6f729b1e3ceea61d9d014f8b6c6800440",
+ "url": "https://api.github.com/repos/ramsey/uuid/zipball/8429c78ca35a09f27565311b98101e2826affde0",
+ "reference": "8429c78ca35a09f27565311b98101e2826affde0",
"shasum": ""
},
"require": {
- "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11 || ^0.12 || ^0.13 || ^0.14",
+ "brick/math": "^0.8.16 || ^0.9 || ^0.10 || ^0.11 || ^0.12 || ^0.13 || ^0.14",
"php": "^8.0",
"ramsey/collection": "^1.2 || ^2.0"
},
@@ -6978,9 +7086,9 @@
],
"support": {
"issues": "https://github.com/ramsey/uuid/issues",
- "source": "https://github.com/ramsey/uuid/tree/4.9.1"
+ "source": "https://github.com/ramsey/uuid/tree/4.9.2"
},
- "time": "2025-09-04T20:59:21+00:00"
+ "time": "2025-12-14T04:43:48+00:00"
},
{
"name": "react/promise",
@@ -7644,16 +7752,16 @@
},
{
"name": "stichoza/google-translate-php",
- "version": "v5.3.0",
+ "version": "v5.3.1",
"source": {
"type": "git",
"url": "https://github.com/Stichoza/google-translate-php.git",
- "reference": "2891310296cc115786d7c135a47a4ed53cd38df1"
+ "reference": "4d9a267ac063c16967df67dcba30a71fbfb5f550"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Stichoza/google-translate-php/zipball/2891310296cc115786d7c135a47a4ed53cd38df1",
- "reference": "2891310296cc115786d7c135a47a4ed53cd38df1",
+ "url": "https://api.github.com/repos/Stichoza/google-translate-php/zipball/4d9a267ac063c16967df67dcba30a71fbfb5f550",
+ "reference": "4d9a267ac063c16967df67dcba30a71fbfb5f550",
"shasum": ""
},
"require": {
@@ -7693,7 +7801,7 @@
],
"support": {
"issues": "https://github.com/Stichoza/google-translate-php/issues",
- "source": "https://github.com/Stichoza/google-translate-php/tree/v5.3.0"
+ "source": "https://github.com/Stichoza/google-translate-php/tree/v5.3.1"
},
"funding": [
{
@@ -7721,26 +7829,25 @@
"type": "patreon"
}
],
- "time": "2025-05-20T08:38:25+00:00"
+ "time": "2025-11-01T22:45:28+00:00"
},
{
"name": "symfony/clock",
- "version": "v7.3.0",
+ "version": "v8.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/clock.git",
- "reference": "b81435fbd6648ea425d1ee96a2d8e68f4ceacd24"
+ "reference": "832119f9b8dbc6c8e6f65f30c5969eca1e88764f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/clock/zipball/b81435fbd6648ea425d1ee96a2d8e68f4ceacd24",
- "reference": "b81435fbd6648ea425d1ee96a2d8e68f4ceacd24",
+ "url": "https://api.github.com/repos/symfony/clock/zipball/832119f9b8dbc6c8e6f65f30c5969eca1e88764f",
+ "reference": "832119f9b8dbc6c8e6f65f30c5969eca1e88764f",
"shasum": ""
},
"require": {
- "php": ">=8.2",
- "psr/clock": "^1.0",
- "symfony/polyfill-php83": "^1.28"
+ "php": ">=8.4",
+ "psr/clock": "^1.0"
},
"provide": {
"psr/clock-implementation": "1.0"
@@ -7779,7 +7886,7 @@
"time"
],
"support": {
- "source": "https://github.com/symfony/clock/tree/v7.3.0"
+ "source": "https://github.com/symfony/clock/tree/v8.0.0"
},
"funding": [
{
@@ -7790,25 +7897,29 @@
"url": "https://github.com/fabpot",
"type": "github"
},
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
- "time": "2024-09-25T14:21:43+00:00"
+ "time": "2025-11-12T15:46:48+00:00"
},
{
"name": "symfony/console",
- "version": "v7.3.4",
+ "version": "v7.4.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
- "reference": "2b9c5fafbac0399a20a2e82429e2bd735dcfb7db"
+ "reference": "6d9f0fbf2ec2e9785880096e3abd0ca0c88b506e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/2b9c5fafbac0399a20a2e82429e2bd735dcfb7db",
- "reference": "2b9c5fafbac0399a20a2e82429e2bd735dcfb7db",
+ "url": "https://api.github.com/repos/symfony/console/zipball/6d9f0fbf2ec2e9785880096e3abd0ca0c88b506e",
+ "reference": "6d9f0fbf2ec2e9785880096e3abd0ca0c88b506e",
"shasum": ""
},
"require": {
@@ -7816,7 +7927,7 @@
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/polyfill-mbstring": "~1.0",
"symfony/service-contracts": "^2.5|^3",
- "symfony/string": "^7.2"
+ "symfony/string": "^7.2|^8.0"
},
"conflict": {
"symfony/dependency-injection": "<6.4",
@@ -7830,16 +7941,16 @@
},
"require-dev": {
"psr/log": "^1|^2|^3",
- "symfony/config": "^6.4|^7.0",
- "symfony/dependency-injection": "^6.4|^7.0",
- "symfony/event-dispatcher": "^6.4|^7.0",
- "symfony/http-foundation": "^6.4|^7.0",
- "symfony/http-kernel": "^6.4|^7.0",
- "symfony/lock": "^6.4|^7.0",
- "symfony/messenger": "^6.4|^7.0",
- "symfony/process": "^6.4|^7.0",
- "symfony/stopwatch": "^6.4|^7.0",
- "symfony/var-dumper": "^6.4|^7.0"
+ "symfony/config": "^6.4|^7.0|^8.0",
+ "symfony/dependency-injection": "^6.4|^7.0|^8.0",
+ "symfony/event-dispatcher": "^6.4|^7.0|^8.0",
+ "symfony/http-foundation": "^6.4|^7.0|^8.0",
+ "symfony/http-kernel": "^6.4|^7.0|^8.0",
+ "symfony/lock": "^6.4|^7.0|^8.0",
+ "symfony/messenger": "^6.4|^7.0|^8.0",
+ "symfony/process": "^6.4|^7.0|^8.0",
+ "symfony/stopwatch": "^6.4|^7.0|^8.0",
+ "symfony/var-dumper": "^6.4|^7.0|^8.0"
},
"type": "library",
"autoload": {
@@ -7873,7 +7984,7 @@
"terminal"
],
"support": {
- "source": "https://github.com/symfony/console/tree/v7.3.4"
+ "source": "https://github.com/symfony/console/tree/v7.4.1"
},
"funding": [
{
@@ -7893,24 +8004,24 @@
"type": "tidelift"
}
],
- "time": "2025-09-22T15:31:00+00:00"
+ "time": "2025-12-05T15:23:39+00:00"
},
{
"name": "symfony/css-selector",
- "version": "v7.3.0",
+ "version": "v8.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/css-selector.git",
- "reference": "601a5ce9aaad7bf10797e3663faefce9e26c24e2"
+ "reference": "6225bd458c53ecdee056214cb4a2ffaf58bd592b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/css-selector/zipball/601a5ce9aaad7bf10797e3663faefce9e26c24e2",
- "reference": "601a5ce9aaad7bf10797e3663faefce9e26c24e2",
+ "url": "https://api.github.com/repos/symfony/css-selector/zipball/6225bd458c53ecdee056214cb4a2ffaf58bd592b",
+ "reference": "6225bd458c53ecdee056214cb4a2ffaf58bd592b",
"shasum": ""
},
"require": {
- "php": ">=8.2"
+ "php": ">=8.4"
},
"type": "library",
"autoload": {
@@ -7942,7 +8053,7 @@
"description": "Converts CSS selectors to XPath expressions",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/css-selector/tree/v7.3.0"
+ "source": "https://github.com/symfony/css-selector/tree/v8.0.0"
},
"funding": [
{
@@ -7953,12 +8064,16 @@
"url": "https://github.com/fabpot",
"type": "github"
},
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
- "time": "2024-09-25T14:21:43+00:00"
+ "time": "2025-10-30T14:17:19+00:00"
},
{
"name": "symfony/deprecation-contracts",
@@ -8029,32 +8144,33 @@
},
{
"name": "symfony/error-handler",
- "version": "v7.3.4",
+ "version": "v7.4.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/error-handler.git",
- "reference": "99f81bc944ab8e5dae4f21b4ca9972698bbad0e4"
+ "reference": "48be2b0653594eea32dcef130cca1c811dcf25c2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/error-handler/zipball/99f81bc944ab8e5dae4f21b4ca9972698bbad0e4",
- "reference": "99f81bc944ab8e5dae4f21b4ca9972698bbad0e4",
+ "url": "https://api.github.com/repos/symfony/error-handler/zipball/48be2b0653594eea32dcef130cca1c811dcf25c2",
+ "reference": "48be2b0653594eea32dcef130cca1c811dcf25c2",
"shasum": ""
},
"require": {
"php": ">=8.2",
"psr/log": "^1|^2|^3",
- "symfony/var-dumper": "^6.4|^7.0"
+ "symfony/polyfill-php85": "^1.32",
+ "symfony/var-dumper": "^6.4|^7.0|^8.0"
},
"conflict": {
"symfony/deprecation-contracts": "<2.5",
"symfony/http-kernel": "<6.4"
},
"require-dev": {
- "symfony/console": "^6.4|^7.0",
+ "symfony/console": "^6.4|^7.0|^8.0",
"symfony/deprecation-contracts": "^2.5|^3",
- "symfony/http-kernel": "^6.4|^7.0",
- "symfony/serializer": "^6.4|^7.0",
+ "symfony/http-kernel": "^6.4|^7.0|^8.0",
+ "symfony/serializer": "^6.4|^7.0|^8.0",
"symfony/webpack-encore-bundle": "^1.0|^2.0"
},
"bin": [
@@ -8086,7 +8202,7 @@
"description": "Provides tools to manage errors and ease debugging PHP code",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/error-handler/tree/v7.3.4"
+ "source": "https://github.com/symfony/error-handler/tree/v7.4.0"
},
"funding": [
{
@@ -8106,28 +8222,28 @@
"type": "tidelift"
}
],
- "time": "2025-09-11T10:12:26+00:00"
+ "time": "2025-11-05T14:29:59+00:00"
},
{
"name": "symfony/event-dispatcher",
- "version": "v7.3.3",
+ "version": "v8.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
- "reference": "b7dc69e71de420ac04bc9ab830cf3ffebba48191"
+ "reference": "573f95783a2ec6e38752979db139f09fec033f03"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/b7dc69e71de420ac04bc9ab830cf3ffebba48191",
- "reference": "b7dc69e71de420ac04bc9ab830cf3ffebba48191",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/573f95783a2ec6e38752979db139f09fec033f03",
+ "reference": "573f95783a2ec6e38752979db139f09fec033f03",
"shasum": ""
},
"require": {
- "php": ">=8.2",
+ "php": ">=8.4",
"symfony/event-dispatcher-contracts": "^2.5|^3"
},
"conflict": {
- "symfony/dependency-injection": "<6.4",
+ "symfony/security-http": "<7.4",
"symfony/service-contracts": "<2.5"
},
"provide": {
@@ -8136,13 +8252,14 @@
},
"require-dev": {
"psr/log": "^1|^2|^3",
- "symfony/config": "^6.4|^7.0",
- "symfony/dependency-injection": "^6.4|^7.0",
- "symfony/error-handler": "^6.4|^7.0",
- "symfony/expression-language": "^6.4|^7.0",
- "symfony/http-foundation": "^6.4|^7.0",
+ "symfony/config": "^7.4|^8.0",
+ "symfony/dependency-injection": "^7.4|^8.0",
+ "symfony/error-handler": "^7.4|^8.0",
+ "symfony/expression-language": "^7.4|^8.0",
+ "symfony/framework-bundle": "^7.4|^8.0",
+ "symfony/http-foundation": "^7.4|^8.0",
"symfony/service-contracts": "^2.5|^3",
- "symfony/stopwatch": "^6.4|^7.0"
+ "symfony/stopwatch": "^7.4|^8.0"
},
"type": "library",
"autoload": {
@@ -8170,7 +8287,7 @@
"description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/event-dispatcher/tree/v7.3.3"
+ "source": "https://github.com/symfony/event-dispatcher/tree/v8.0.0"
},
"funding": [
{
@@ -8190,7 +8307,7 @@
"type": "tidelift"
}
],
- "time": "2025-08-13T11:49:31+00:00"
+ "time": "2025-10-30T14:17:19+00:00"
},
{
"name": "symfony/event-dispatcher-contracts",
@@ -8270,23 +8387,23 @@
},
{
"name": "symfony/finder",
- "version": "v7.3.2",
+ "version": "v7.4.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/finder.git",
- "reference": "2a6614966ba1074fa93dae0bc804227422df4dfe"
+ "reference": "340b9ed7320570f319028a2cbec46d40535e94bd"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/finder/zipball/2a6614966ba1074fa93dae0bc804227422df4dfe",
- "reference": "2a6614966ba1074fa93dae0bc804227422df4dfe",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/340b9ed7320570f319028a2cbec46d40535e94bd",
+ "reference": "340b9ed7320570f319028a2cbec46d40535e94bd",
"shasum": ""
},
"require": {
"php": ">=8.2"
},
"require-dev": {
- "symfony/filesystem": "^6.4|^7.0"
+ "symfony/filesystem": "^6.4|^7.0|^8.0"
},
"type": "library",
"autoload": {
@@ -8314,7 +8431,7 @@
"description": "Finds files and directories via an intuitive fluent interface",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/finder/tree/v7.3.2"
+ "source": "https://github.com/symfony/finder/tree/v7.4.0"
},
"funding": [
{
@@ -8334,27 +8451,28 @@
"type": "tidelift"
}
],
- "time": "2025-07-15T13:41:35+00:00"
+ "time": "2025-11-05T05:42:40+00:00"
},
{
"name": "symfony/html-sanitizer",
- "version": "v7.3.3",
+ "version": "v7.4.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/html-sanitizer.git",
- "reference": "8740fc48979f649dee8b8fc51a2698e5c190bf12"
+ "reference": "5b0bbcc3600030b535dd0b17a0e8c56243f96d7f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/html-sanitizer/zipball/8740fc48979f649dee8b8fc51a2698e5c190bf12",
- "reference": "8740fc48979f649dee8b8fc51a2698e5c190bf12",
+ "url": "https://api.github.com/repos/symfony/html-sanitizer/zipball/5b0bbcc3600030b535dd0b17a0e8c56243f96d7f",
+ "reference": "5b0bbcc3600030b535dd0b17a0e8c56243f96d7f",
"shasum": ""
},
"require": {
"ext-dom": "*",
"league/uri": "^6.5|^7.0",
"masterminds/html5": "^2.7.2",
- "php": ">=8.2"
+ "php": ">=8.2",
+ "symfony/deprecation-contracts": "^2.5|^3"
},
"type": "library",
"autoload": {
@@ -8387,7 +8505,7 @@
"sanitizer"
],
"support": {
- "source": "https://github.com/symfony/html-sanitizer/tree/v7.3.3"
+ "source": "https://github.com/symfony/html-sanitizer/tree/v7.4.0"
},
"funding": [
{
@@ -8407,27 +8525,26 @@
"type": "tidelift"
}
],
- "time": "2025-08-12T10:34:03+00:00"
+ "time": "2025-10-30T13:39:42+00:00"
},
{
"name": "symfony/http-foundation",
- "version": "v7.3.4",
+ "version": "v7.4.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-foundation.git",
- "reference": "c061c7c18918b1b64268771aad04b40be41dd2e6"
+ "reference": "bd1af1e425811d6f077db240c3a588bdb405cd27"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-foundation/zipball/c061c7c18918b1b64268771aad04b40be41dd2e6",
- "reference": "c061c7c18918b1b64268771aad04b40be41dd2e6",
+ "url": "https://api.github.com/repos/symfony/http-foundation/zipball/bd1af1e425811d6f077db240c3a588bdb405cd27",
+ "reference": "bd1af1e425811d6f077db240c3a588bdb405cd27",
"shasum": ""
},
"require": {
"php": ">=8.2",
- "symfony/deprecation-contracts": "^2.5|^3.0",
- "symfony/polyfill-mbstring": "~1.1",
- "symfony/polyfill-php83": "^1.27"
+ "symfony/deprecation-contracts": "^2.5|^3",
+ "symfony/polyfill-mbstring": "^1.1"
},
"conflict": {
"doctrine/dbal": "<3.6",
@@ -8436,13 +8553,13 @@
"require-dev": {
"doctrine/dbal": "^3.6|^4",
"predis/predis": "^1.1|^2.0",
- "symfony/cache": "^6.4.12|^7.1.5",
- "symfony/clock": "^6.4|^7.0",
- "symfony/dependency-injection": "^6.4|^7.0",
- "symfony/expression-language": "^6.4|^7.0",
- "symfony/http-kernel": "^6.4|^7.0",
- "symfony/mime": "^6.4|^7.0",
- "symfony/rate-limiter": "^6.4|^7.0"
+ "symfony/cache": "^6.4.12|^7.1.5|^8.0",
+ "symfony/clock": "^6.4|^7.0|^8.0",
+ "symfony/dependency-injection": "^6.4|^7.0|^8.0",
+ "symfony/expression-language": "^6.4|^7.0|^8.0",
+ "symfony/http-kernel": "^6.4|^7.0|^8.0",
+ "symfony/mime": "^6.4|^7.0|^8.0",
+ "symfony/rate-limiter": "^6.4|^7.0|^8.0"
},
"type": "library",
"autoload": {
@@ -8470,7 +8587,7 @@
"description": "Defines an object-oriented layer for the HTTP specification",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/http-foundation/tree/v7.3.4"
+ "source": "https://github.com/symfony/http-foundation/tree/v7.4.1"
},
"funding": [
{
@@ -8490,29 +8607,29 @@
"type": "tidelift"
}
],
- "time": "2025-09-16T08:38:17+00:00"
+ "time": "2025-12-07T11:13:10+00:00"
},
{
"name": "symfony/http-kernel",
- "version": "v7.3.4",
+ "version": "v7.4.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-kernel.git",
- "reference": "b796dffea7821f035047235e076b60ca2446e3cf"
+ "reference": "f6e6f0a5fa8763f75a504b930163785fb6dd055f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-kernel/zipball/b796dffea7821f035047235e076b60ca2446e3cf",
- "reference": "b796dffea7821f035047235e076b60ca2446e3cf",
+ "url": "https://api.github.com/repos/symfony/http-kernel/zipball/f6e6f0a5fa8763f75a504b930163785fb6dd055f",
+ "reference": "f6e6f0a5fa8763f75a504b930163785fb6dd055f",
"shasum": ""
},
"require": {
"php": ">=8.2",
"psr/log": "^1|^2|^3",
"symfony/deprecation-contracts": "^2.5|^3",
- "symfony/error-handler": "^6.4|^7.0",
- "symfony/event-dispatcher": "^7.3",
- "symfony/http-foundation": "^7.3",
+ "symfony/error-handler": "^6.4|^7.0|^8.0",
+ "symfony/event-dispatcher": "^7.3|^8.0",
+ "symfony/http-foundation": "^7.4|^8.0",
"symfony/polyfill-ctype": "^1.8"
},
"conflict": {
@@ -8522,6 +8639,7 @@
"symfony/console": "<6.4",
"symfony/dependency-injection": "<6.4",
"symfony/doctrine-bridge": "<6.4",
+ "symfony/flex": "<2.10",
"symfony/form": "<6.4",
"symfony/http-client": "<6.4",
"symfony/http-client-contracts": "<2.5",
@@ -8539,27 +8657,27 @@
},
"require-dev": {
"psr/cache": "^1.0|^2.0|^3.0",
- "symfony/browser-kit": "^6.4|^7.0",
- "symfony/clock": "^6.4|^7.0",
- "symfony/config": "^6.4|^7.0",
- "symfony/console": "^6.4|^7.0",
- "symfony/css-selector": "^6.4|^7.0",
- "symfony/dependency-injection": "^6.4|^7.0",
- "symfony/dom-crawler": "^6.4|^7.0",
- "symfony/expression-language": "^6.4|^7.0",
- "symfony/finder": "^6.4|^7.0",
+ "symfony/browser-kit": "^6.4|^7.0|^8.0",
+ "symfony/clock": "^6.4|^7.0|^8.0",
+ "symfony/config": "^6.4|^7.0|^8.0",
+ "symfony/console": "^6.4|^7.0|^8.0",
+ "symfony/css-selector": "^6.4|^7.0|^8.0",
+ "symfony/dependency-injection": "^6.4|^7.0|^8.0",
+ "symfony/dom-crawler": "^6.4|^7.0|^8.0",
+ "symfony/expression-language": "^6.4|^7.0|^8.0",
+ "symfony/finder": "^6.4|^7.0|^8.0",
"symfony/http-client-contracts": "^2.5|^3",
- "symfony/process": "^6.4|^7.0",
- "symfony/property-access": "^7.1",
- "symfony/routing": "^6.4|^7.0",
- "symfony/serializer": "^7.1",
- "symfony/stopwatch": "^6.4|^7.0",
- "symfony/translation": "^6.4|^7.0",
+ "symfony/process": "^6.4|^7.0|^8.0",
+ "symfony/property-access": "^7.1|^8.0",
+ "symfony/routing": "^6.4|^7.0|^8.0",
+ "symfony/serializer": "^7.1|^8.0",
+ "symfony/stopwatch": "^6.4|^7.0|^8.0",
+ "symfony/translation": "^6.4|^7.0|^8.0",
"symfony/translation-contracts": "^2.5|^3",
- "symfony/uid": "^6.4|^7.0",
- "symfony/validator": "^6.4|^7.0",
- "symfony/var-dumper": "^6.4|^7.0",
- "symfony/var-exporter": "^6.4|^7.0",
+ "symfony/uid": "^6.4|^7.0|^8.0",
+ "symfony/validator": "^6.4|^7.0|^8.0",
+ "symfony/var-dumper": "^6.4|^7.0|^8.0",
+ "symfony/var-exporter": "^6.4|^7.0|^8.0",
"twig/twig": "^3.12"
},
"type": "library",
@@ -8588,7 +8706,7 @@
"description": "Provides a structured process for converting a Request into a Response",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/http-kernel/tree/v7.3.4"
+ "source": "https://github.com/symfony/http-kernel/tree/v7.4.2"
},
"funding": [
{
@@ -8608,20 +8726,20 @@
"type": "tidelift"
}
],
- "time": "2025-09-27T12:32:17+00:00"
+ "time": "2025-12-08T07:43:37+00:00"
},
{
"name": "symfony/mailer",
- "version": "v7.3.4",
+ "version": "v7.4.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/mailer.git",
- "reference": "ab97ef2f7acf0216955f5845484235113047a31d"
+ "reference": "a3d9eea8cfa467ece41f0f54ba28185d74bd53fd"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/mailer/zipball/ab97ef2f7acf0216955f5845484235113047a31d",
- "reference": "ab97ef2f7acf0216955f5845484235113047a31d",
+ "url": "https://api.github.com/repos/symfony/mailer/zipball/a3d9eea8cfa467ece41f0f54ba28185d74bd53fd",
+ "reference": "a3d9eea8cfa467ece41f0f54ba28185d74bd53fd",
"shasum": ""
},
"require": {
@@ -8629,8 +8747,8 @@
"php": ">=8.2",
"psr/event-dispatcher": "^1",
"psr/log": "^1|^2|^3",
- "symfony/event-dispatcher": "^6.4|^7.0",
- "symfony/mime": "^7.2",
+ "symfony/event-dispatcher": "^6.4|^7.0|^8.0",
+ "symfony/mime": "^7.2|^8.0",
"symfony/service-contracts": "^2.5|^3"
},
"conflict": {
@@ -8641,10 +8759,10 @@
"symfony/twig-bridge": "<6.4"
},
"require-dev": {
- "symfony/console": "^6.4|^7.0",
- "symfony/http-client": "^6.4|^7.0",
- "symfony/messenger": "^6.4|^7.0",
- "symfony/twig-bridge": "^6.4|^7.0"
+ "symfony/console": "^6.4|^7.0|^8.0",
+ "symfony/http-client": "^6.4|^7.0|^8.0",
+ "symfony/messenger": "^6.4|^7.0|^8.0",
+ "symfony/twig-bridge": "^6.4|^7.0|^8.0"
},
"type": "library",
"autoload": {
@@ -8672,7 +8790,7 @@
"description": "Helps sending emails",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/mailer/tree/v7.3.4"
+ "source": "https://github.com/symfony/mailer/tree/v7.4.0"
},
"funding": [
{
@@ -8692,24 +8810,25 @@
"type": "tidelift"
}
],
- "time": "2025-09-17T05:51:54+00:00"
+ "time": "2025-11-21T15:26:00+00:00"
},
{
"name": "symfony/mime",
- "version": "v7.3.4",
+ "version": "v7.4.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/mime.git",
- "reference": "b1b828f69cbaf887fa835a091869e55df91d0e35"
+ "reference": "bdb02729471be5d047a3ac4a69068748f1a6be7a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/mime/zipball/b1b828f69cbaf887fa835a091869e55df91d0e35",
- "reference": "b1b828f69cbaf887fa835a091869e55df91d0e35",
+ "url": "https://api.github.com/repos/symfony/mime/zipball/bdb02729471be5d047a3ac4a69068748f1a6be7a",
+ "reference": "bdb02729471be5d047a3ac4a69068748f1a6be7a",
"shasum": ""
},
"require": {
"php": ">=8.2",
+ "symfony/deprecation-contracts": "^2.5|^3",
"symfony/polyfill-intl-idn": "^1.10",
"symfony/polyfill-mbstring": "^1.0"
},
@@ -8724,11 +8843,11 @@
"egulias/email-validator": "^2.1.10|^3.1|^4",
"league/html-to-markdown": "^5.0",
"phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0",
- "symfony/dependency-injection": "^6.4|^7.0",
- "symfony/process": "^6.4|^7.0",
- "symfony/property-access": "^6.4|^7.0",
- "symfony/property-info": "^6.4|^7.0",
- "symfony/serializer": "^6.4.3|^7.0.3"
+ "symfony/dependency-injection": "^6.4|^7.0|^8.0",
+ "symfony/process": "^6.4|^7.0|^8.0",
+ "symfony/property-access": "^6.4|^7.0|^8.0",
+ "symfony/property-info": "^6.4|^7.0|^8.0",
+ "symfony/serializer": "^6.4.3|^7.0.3|^8.0"
},
"type": "library",
"autoload": {
@@ -8760,7 +8879,7 @@
"mime-type"
],
"support": {
- "source": "https://github.com/symfony/mime/tree/v7.3.4"
+ "source": "https://github.com/symfony/mime/tree/v7.4.0"
},
"funding": [
{
@@ -8780,7 +8899,7 @@
"type": "tidelift"
}
],
- "time": "2025-09-16T08:38:17+00:00"
+ "time": "2025-11-16T10:14:42+00:00"
},
{
"name": "symfony/polyfill-ctype",
@@ -9693,16 +9812,16 @@
},
{
"name": "symfony/process",
- "version": "v7.3.4",
+ "version": "v7.4.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
- "reference": "f24f8f316367b30810810d4eb30c543d7003ff3b"
+ "reference": "7ca8dc2d0dcf4882658313aba8be5d9fd01026c8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/process/zipball/f24f8f316367b30810810d4eb30c543d7003ff3b",
- "reference": "f24f8f316367b30810810d4eb30c543d7003ff3b",
+ "url": "https://api.github.com/repos/symfony/process/zipball/7ca8dc2d0dcf4882658313aba8be5d9fd01026c8",
+ "reference": "7ca8dc2d0dcf4882658313aba8be5d9fd01026c8",
"shasum": ""
},
"require": {
@@ -9734,7 +9853,7 @@
"description": "Executes commands in sub-processes",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/process/tree/v7.3.4"
+ "source": "https://github.com/symfony/process/tree/v7.4.0"
},
"funding": [
{
@@ -9754,26 +9873,26 @@
"type": "tidelift"
}
],
- "time": "2025-09-11T10:12:26+00:00"
+ "time": "2025-10-16T11:21:06+00:00"
},
{
"name": "symfony/psr-http-message-bridge",
- "version": "v7.3.0",
+ "version": "v7.4.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/psr-http-message-bridge.git",
- "reference": "03f2f72319e7acaf2a9f6fcbe30ef17eec51594f"
+ "reference": "0101ff8bd0506703b045b1670960302d302a726c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/03f2f72319e7acaf2a9f6fcbe30ef17eec51594f",
- "reference": "03f2f72319e7acaf2a9f6fcbe30ef17eec51594f",
+ "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/0101ff8bd0506703b045b1670960302d302a726c",
+ "reference": "0101ff8bd0506703b045b1670960302d302a726c",
"shasum": ""
},
"require": {
"php": ">=8.2",
"psr/http-message": "^1.0|^2.0",
- "symfony/http-foundation": "^6.4|^7.0"
+ "symfony/http-foundation": "^6.4|^7.0|^8.0"
},
"conflict": {
"php-http/discovery": "<1.15",
@@ -9783,11 +9902,12 @@
"nyholm/psr7": "^1.1",
"php-http/discovery": "^1.15",
"psr/log": "^1.1.4|^2|^3",
- "symfony/browser-kit": "^6.4|^7.0",
- "symfony/config": "^6.4|^7.0",
- "symfony/event-dispatcher": "^6.4|^7.0",
- "symfony/framework-bundle": "^6.4|^7.0",
- "symfony/http-kernel": "^6.4|^7.0"
+ "symfony/browser-kit": "^6.4|^7.0|^8.0",
+ "symfony/config": "^6.4|^7.0|^8.0",
+ "symfony/event-dispatcher": "^6.4|^7.0|^8.0",
+ "symfony/framework-bundle": "^6.4.13|^7.1.6|^8.0",
+ "symfony/http-kernel": "^6.4.13|^7.1.6|^8.0",
+ "symfony/runtime": "^6.4.13|^7.1.6|^8.0"
},
"type": "symfony-bridge",
"autoload": {
@@ -9821,7 +9941,7 @@
"psr-7"
],
"support": {
- "source": "https://github.com/symfony/psr-http-message-bridge/tree/v7.3.0"
+ "source": "https://github.com/symfony/psr-http-message-bridge/tree/v7.4.0"
},
"funding": [
{
@@ -9832,25 +9952,29 @@
"url": "https://github.com/fabpot",
"type": "github"
},
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
- "time": "2024-09-26T08:57:56+00:00"
+ "time": "2025-11-13T08:38:49+00:00"
},
{
"name": "symfony/routing",
- "version": "v7.3.4",
+ "version": "v7.4.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/routing.git",
- "reference": "8dc648e159e9bac02b703b9fbd937f19ba13d07c"
+ "reference": "4720254cb2644a0b876233d258a32bf017330db7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/routing/zipball/8dc648e159e9bac02b703b9fbd937f19ba13d07c",
- "reference": "8dc648e159e9bac02b703b9fbd937f19ba13d07c",
+ "url": "https://api.github.com/repos/symfony/routing/zipball/4720254cb2644a0b876233d258a32bf017330db7",
+ "reference": "4720254cb2644a0b876233d258a32bf017330db7",
"shasum": ""
},
"require": {
@@ -9864,11 +9988,11 @@
},
"require-dev": {
"psr/log": "^1|^2|^3",
- "symfony/config": "^6.4|^7.0",
- "symfony/dependency-injection": "^6.4|^7.0",
- "symfony/expression-language": "^6.4|^7.0",
- "symfony/http-foundation": "^6.4|^7.0",
- "symfony/yaml": "^6.4|^7.0"
+ "symfony/config": "^6.4|^7.0|^8.0",
+ "symfony/dependency-injection": "^6.4|^7.0|^8.0",
+ "symfony/expression-language": "^6.4|^7.0|^8.0",
+ "symfony/http-foundation": "^6.4|^7.0|^8.0",
+ "symfony/yaml": "^6.4|^7.0|^8.0"
},
"type": "library",
"autoload": {
@@ -9902,7 +10026,7 @@
"url"
],
"support": {
- "source": "https://github.com/symfony/routing/tree/v7.3.4"
+ "source": "https://github.com/symfony/routing/tree/v7.4.0"
},
"funding": [
{
@@ -9922,20 +10046,20 @@
"type": "tidelift"
}
],
- "time": "2025-09-11T10:12:26+00:00"
+ "time": "2025-11-27T13:27:24+00:00"
},
{
"name": "symfony/service-contracts",
- "version": "v3.6.0",
+ "version": "v3.6.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/service-contracts.git",
- "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4"
+ "reference": "45112560a3ba2d715666a509a0bc9521d10b6c43"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f021b05a130d35510bd6b25fe9053c2a8a15d5d4",
- "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4",
+ "url": "https://api.github.com/repos/symfony/service-contracts/zipball/45112560a3ba2d715666a509a0bc9521d10b6c43",
+ "reference": "45112560a3ba2d715666a509a0bc9521d10b6c43",
"shasum": ""
},
"require": {
@@ -9989,7 +10113,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/service-contracts/tree/v3.6.0"
+ "source": "https://github.com/symfony/service-contracts/tree/v3.6.1"
},
"funding": [
{
@@ -10000,43 +10124,47 @@
"url": "https://github.com/fabpot",
"type": "github"
},
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
- "time": "2025-04-25T09:37:31+00:00"
+ "time": "2025-07-15T11:30:57+00:00"
},
{
"name": "symfony/string",
- "version": "v7.3.4",
+ "version": "v8.0.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/string.git",
- "reference": "f96476035142921000338bad71e5247fbc138872"
+ "reference": "ba65a969ac918ce0cc3edfac6cdde847eba231dc"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/string/zipball/f96476035142921000338bad71e5247fbc138872",
- "reference": "f96476035142921000338bad71e5247fbc138872",
+ "url": "https://api.github.com/repos/symfony/string/zipball/ba65a969ac918ce0cc3edfac6cdde847eba231dc",
+ "reference": "ba65a969ac918ce0cc3edfac6cdde847eba231dc",
"shasum": ""
},
"require": {
- "php": ">=8.2",
- "symfony/polyfill-ctype": "~1.8",
- "symfony/polyfill-intl-grapheme": "~1.0",
- "symfony/polyfill-intl-normalizer": "~1.0",
- "symfony/polyfill-mbstring": "~1.0"
+ "php": ">=8.4",
+ "symfony/polyfill-ctype": "^1.8",
+ "symfony/polyfill-intl-grapheme": "^1.33",
+ "symfony/polyfill-intl-normalizer": "^1.0",
+ "symfony/polyfill-mbstring": "^1.0"
},
"conflict": {
"symfony/translation-contracts": "<2.5"
},
"require-dev": {
- "symfony/emoji": "^7.1",
- "symfony/http-client": "^6.4|^7.0",
- "symfony/intl": "^6.4|^7.0",
+ "symfony/emoji": "^7.4|^8.0",
+ "symfony/http-client": "^7.4|^8.0",
+ "symfony/intl": "^7.4|^8.0",
"symfony/translation-contracts": "^2.5|^3.0",
- "symfony/var-exporter": "^6.4|^7.0"
+ "symfony/var-exporter": "^7.4|^8.0"
},
"type": "library",
"autoload": {
@@ -10075,7 +10203,7 @@
"utf8"
],
"support": {
- "source": "https://github.com/symfony/string/tree/v7.3.4"
+ "source": "https://github.com/symfony/string/tree/v8.0.1"
},
"funding": [
{
@@ -10095,38 +10223,31 @@
"type": "tidelift"
}
],
- "time": "2025-09-11T14:36:48+00:00"
+ "time": "2025-12-01T09:13:36+00:00"
},
{
"name": "symfony/translation",
- "version": "v7.3.4",
+ "version": "v8.0.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation.git",
- "reference": "ec25870502d0c7072d086e8ffba1420c85965174"
+ "reference": "770e3b8b0ba8360958abedcabacd4203467333ca"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/translation/zipball/ec25870502d0c7072d086e8ffba1420c85965174",
- "reference": "ec25870502d0c7072d086e8ffba1420c85965174",
+ "url": "https://api.github.com/repos/symfony/translation/zipball/770e3b8b0ba8360958abedcabacd4203467333ca",
+ "reference": "770e3b8b0ba8360958abedcabacd4203467333ca",
"shasum": ""
},
"require": {
- "php": ">=8.2",
- "symfony/deprecation-contracts": "^2.5|^3",
- "symfony/polyfill-mbstring": "~1.0",
- "symfony/translation-contracts": "^2.5|^3.0"
+ "php": ">=8.4",
+ "symfony/polyfill-mbstring": "^1.0",
+ "symfony/translation-contracts": "^3.6.1"
},
"conflict": {
"nikic/php-parser": "<5.0",
- "symfony/config": "<6.4",
- "symfony/console": "<6.4",
- "symfony/dependency-injection": "<6.4",
"symfony/http-client-contracts": "<2.5",
- "symfony/http-kernel": "<6.4",
- "symfony/service-contracts": "<2.5",
- "symfony/twig-bundle": "<6.4",
- "symfony/yaml": "<6.4"
+ "symfony/service-contracts": "<2.5"
},
"provide": {
"symfony/translation-implementation": "2.3|3.0"
@@ -10134,17 +10255,17 @@
"require-dev": {
"nikic/php-parser": "^5.0",
"psr/log": "^1|^2|^3",
- "symfony/config": "^6.4|^7.0",
- "symfony/console": "^6.4|^7.0",
- "symfony/dependency-injection": "^6.4|^7.0",
- "symfony/finder": "^6.4|^7.0",
+ "symfony/config": "^7.4|^8.0",
+ "symfony/console": "^7.4|^8.0",
+ "symfony/dependency-injection": "^7.4|^8.0",
+ "symfony/finder": "^7.4|^8.0",
"symfony/http-client-contracts": "^2.5|^3.0",
- "symfony/http-kernel": "^6.4|^7.0",
- "symfony/intl": "^6.4|^7.0",
+ "symfony/http-kernel": "^7.4|^8.0",
+ "symfony/intl": "^7.4|^8.0",
"symfony/polyfill-intl-icu": "^1.21",
- "symfony/routing": "^6.4|^7.0",
+ "symfony/routing": "^7.4|^8.0",
"symfony/service-contracts": "^2.5|^3",
- "symfony/yaml": "^6.4|^7.0"
+ "symfony/yaml": "^7.4|^8.0"
},
"type": "library",
"autoload": {
@@ -10175,7 +10296,7 @@
"description": "Provides tools to internationalize your application",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/translation/tree/v7.3.4"
+ "source": "https://github.com/symfony/translation/tree/v8.0.1"
},
"funding": [
{
@@ -10195,20 +10316,20 @@
"type": "tidelift"
}
],
- "time": "2025-09-07T11:39:36+00:00"
+ "time": "2025-12-01T09:13:36+00:00"
},
{
"name": "symfony/translation-contracts",
- "version": "v3.6.0",
+ "version": "v3.6.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation-contracts.git",
- "reference": "df210c7a2573f1913b2d17cc95f90f53a73d8f7d"
+ "reference": "65a8bc82080447fae78373aa10f8d13b38338977"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/df210c7a2573f1913b2d17cc95f90f53a73d8f7d",
- "reference": "df210c7a2573f1913b2d17cc95f90f53a73d8f7d",
+ "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/65a8bc82080447fae78373aa10f8d13b38338977",
+ "reference": "65a8bc82080447fae78373aa10f8d13b38338977",
"shasum": ""
},
"require": {
@@ -10257,7 +10378,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/translation-contracts/tree/v3.6.0"
+ "source": "https://github.com/symfony/translation-contracts/tree/v3.6.1"
},
"funding": [
{
@@ -10268,25 +10389,29 @@
"url": "https://github.com/fabpot",
"type": "github"
},
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
- "time": "2024-09-27T08:32:26+00:00"
+ "time": "2025-07-15T13:41:35+00:00"
},
{
"name": "symfony/uid",
- "version": "v7.3.1",
+ "version": "v7.4.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/uid.git",
- "reference": "a69f69f3159b852651a6bf45a9fdd149520525bb"
+ "reference": "2498e9f81b7baa206f44de583f2f48350b90142c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/uid/zipball/a69f69f3159b852651a6bf45a9fdd149520525bb",
- "reference": "a69f69f3159b852651a6bf45a9fdd149520525bb",
+ "url": "https://api.github.com/repos/symfony/uid/zipball/2498e9f81b7baa206f44de583f2f48350b90142c",
+ "reference": "2498e9f81b7baa206f44de583f2f48350b90142c",
"shasum": ""
},
"require": {
@@ -10294,7 +10419,7 @@
"symfony/polyfill-uuid": "^1.15"
},
"require-dev": {
- "symfony/console": "^6.4|^7.0"
+ "symfony/console": "^6.4|^7.0|^8.0"
},
"type": "library",
"autoload": {
@@ -10331,7 +10456,7 @@
"uuid"
],
"support": {
- "source": "https://github.com/symfony/uid/tree/v7.3.1"
+ "source": "https://github.com/symfony/uid/tree/v7.4.0"
},
"funding": [
{
@@ -10342,25 +10467,29 @@
"url": "https://github.com/fabpot",
"type": "github"
},
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
- "time": "2025-06-27T19:55:54+00:00"
+ "time": "2025-09-25T11:02:55+00:00"
},
{
"name": "symfony/var-dumper",
- "version": "v7.3.4",
+ "version": "v7.4.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-dumper.git",
- "reference": "b8abe7daf2730d07dfd4b2ee1cecbf0dd2fbdabb"
+ "reference": "41fd6c4ae28c38b294b42af6db61446594a0dece"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/var-dumper/zipball/b8abe7daf2730d07dfd4b2ee1cecbf0dd2fbdabb",
- "reference": "b8abe7daf2730d07dfd4b2ee1cecbf0dd2fbdabb",
+ "url": "https://api.github.com/repos/symfony/var-dumper/zipball/41fd6c4ae28c38b294b42af6db61446594a0dece",
+ "reference": "41fd6c4ae28c38b294b42af6db61446594a0dece",
"shasum": ""
},
"require": {
@@ -10372,10 +10501,10 @@
"symfony/console": "<6.4"
},
"require-dev": {
- "symfony/console": "^6.4|^7.0",
- "symfony/http-kernel": "^6.4|^7.0",
- "symfony/process": "^6.4|^7.0",
- "symfony/uid": "^6.4|^7.0",
+ "symfony/console": "^6.4|^7.0|^8.0",
+ "symfony/http-kernel": "^6.4|^7.0|^8.0",
+ "symfony/process": "^6.4|^7.0|^8.0",
+ "symfony/uid": "^6.4|^7.0|^8.0",
"twig/twig": "^3.12"
},
"bin": [
@@ -10414,7 +10543,7 @@
"dump"
],
"support": {
- "source": "https://github.com/symfony/var-dumper/tree/v7.3.4"
+ "source": "https://github.com/symfony/var-dumper/tree/v7.4.0"
},
"funding": [
{
@@ -10434,27 +10563,27 @@
"type": "tidelift"
}
],
- "time": "2025-09-11T10:12:26+00:00"
+ "time": "2025-10-27T20:36:44+00:00"
},
{
"name": "tijsverkoyen/css-to-inline-styles",
- "version": "v2.3.0",
+ "version": "v2.4.0",
"source": {
"type": "git",
"url": "https://github.com/tijsverkoyen/CssToInlineStyles.git",
- "reference": "0d72ac1c00084279c1816675284073c5a337c20d"
+ "reference": "f0292ccf0ec75843d65027214426b6b163b48b41"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/0d72ac1c00084279c1816675284073c5a337c20d",
- "reference": "0d72ac1c00084279c1816675284073c5a337c20d",
+ "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/f0292ccf0ec75843d65027214426b6b163b48b41",
+ "reference": "f0292ccf0ec75843d65027214426b6b163b48b41",
"shasum": ""
},
"require": {
"ext-dom": "*",
"ext-libxml": "*",
"php": "^7.4 || ^8.0",
- "symfony/css-selector": "^5.4 || ^6.0 || ^7.0"
+ "symfony/css-selector": "^5.4 || ^6.0 || ^7.0 || ^8.0"
},
"require-dev": {
"phpstan/phpstan": "^2.0",
@@ -10487,9 +10616,9 @@
"homepage": "https://github.com/tijsverkoyen/CssToInlineStyles",
"support": {
"issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues",
- "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/v2.3.0"
+ "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/v2.4.0"
},
- "time": "2024-12-21T16:25:41+00:00"
+ "time": "2025-12-02T11:56:42+00:00"
},
{
"name": "ueberdosis/tiptap-php",
@@ -10717,64 +10846,6 @@
}
],
"time": "2024-11-21T01:49:47+00:00"
- },
- {
- "name": "webmozart/assert",
- "version": "1.11.0",
- "source": {
- "type": "git",
- "url": "https://github.com/webmozarts/assert.git",
- "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991",
- "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991",
- "shasum": ""
- },
- "require": {
- "ext-ctype": "*",
- "php": "^7.2 || ^8.0"
- },
- "conflict": {
- "phpstan/phpstan": "<0.12.20",
- "vimeo/psalm": "<4.6.1 || 4.6.2"
- },
- "require-dev": {
- "phpunit/phpunit": "^8.5.13"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.10-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Webmozart\\Assert\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Bernhard Schussek",
- "email": "bschussek@gmail.com"
- }
- ],
- "description": "Assertions to validate method input/output with nice error messages.",
- "keywords": [
- "assert",
- "check",
- "validate"
- ],
- "support": {
- "issues": "https://github.com/webmozarts/assert/issues",
- "source": "https://github.com/webmozarts/assert/tree/1.11.0"
- },
- "time": "2022-06-03T18:03:27+00:00"
}
],
"packages-dev": [
@@ -11401,23 +11472,23 @@
},
{
"name": "laravel-lang/config",
- "version": "1.14.0",
+ "version": "1.15.0",
"source": {
"type": "git",
"url": "https://github.com/Laravel-Lang/config.git",
- "reference": "0f6a41a1d5f4bde6ff59fbfd9e349ac64b737c69"
+ "reference": "080b7cf77eeebdd7e7c267f1b2c3c7fc20408f3c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Laravel-Lang/config/zipball/0f6a41a1d5f4bde6ff59fbfd9e349ac64b737c69",
- "reference": "0f6a41a1d5f4bde6ff59fbfd9e349ac64b737c69",
+ "url": "https://api.github.com/repos/Laravel-Lang/config/zipball/080b7cf77eeebdd7e7c267f1b2c3c7fc20408f3c",
+ "reference": "080b7cf77eeebdd7e7c267f1b2c3c7fc20408f3c",
"shasum": ""
},
"require": {
"archtechx/enums": "^1.0",
"illuminate/config": "^10.0 || ^11.0 || ^12.0",
"illuminate/support": "^10.0 || ^11.0 || ^12.0",
- "laravel-lang/locale-list": "^1.5",
+ "laravel-lang/locale-list": "^1.6",
"php": "^8.1"
},
"require-dev": {
@@ -11469,22 +11540,22 @@
],
"support": {
"issues": "https://github.com/Laravel-Lang/config/issues",
- "source": "https://github.com/Laravel-Lang/config/tree/1.14.0"
+ "source": "https://github.com/Laravel-Lang/config/tree/1.15.0"
},
- "time": "2025-04-11T07:31:54+00:00"
+ "time": "2025-12-04T09:58:46+00:00"
},
{
"name": "laravel-lang/lang",
- "version": "15.25.0",
+ "version": "15.26.3",
"source": {
"type": "git",
"url": "https://github.com/Laravel-Lang/lang.git",
- "reference": "4db5447efd09546a2dff3f2e00cfbf182cdc0abb"
+ "reference": "a32a00e3239d33af5000b947a488387040369e5c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Laravel-Lang/lang/zipball/4db5447efd09546a2dff3f2e00cfbf182cdc0abb",
- "reference": "4db5447efd09546a2dff3f2e00cfbf182cdc0abb",
+ "url": "https://api.github.com/repos/Laravel-Lang/lang/zipball/a32a00e3239d33af5000b947a488387040369e5c",
+ "reference": "a32a00e3239d33af5000b947a488387040369e5c",
"shasum": ""
},
"require": {
@@ -11535,20 +11606,20 @@
"issues": "https://github.com/Laravel-Lang/lang/issues",
"source": "https://github.com/Laravel-Lang/lang"
},
- "time": "2025-09-14T01:43:56+00:00"
+ "time": "2025-12-09T12:42:35+00:00"
},
{
"name": "laravel-lang/locale-list",
- "version": "1.5.1",
+ "version": "1.6.0",
"source": {
"type": "git",
"url": "https://github.com/Laravel-Lang/locale-list.git",
- "reference": "060475db218a97a54612163112b44782024d79c1"
+ "reference": "98227230d737b32279f8376a3149be43965513c6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Laravel-Lang/locale-list/zipball/060475db218a97a54612163112b44782024d79c1",
- "reference": "060475db218a97a54612163112b44782024d79c1",
+ "url": "https://api.github.com/repos/Laravel-Lang/locale-list/zipball/98227230d737b32279f8376a3149be43965513c6",
+ "reference": "98227230d737b32279f8376a3149be43965513c6",
"shasum": ""
},
"require": {
@@ -11592,7 +11663,7 @@
"issues": "https://github.com/Laravel-Lang/locale-list/issues",
"source": "https://github.com/Laravel-Lang/locale-list"
},
- "time": "2025-06-23T09:39:26+00:00"
+ "time": "2025-11-16T18:22:05+00:00"
},
{
"name": "laravel-lang/locales",
@@ -11669,16 +11740,16 @@
},
{
"name": "laravel-lang/native-country-names",
- "version": "1.5.1",
+ "version": "1.6.0",
"source": {
"type": "git",
"url": "https://github.com/Laravel-Lang/native-country-names.git",
- "reference": "70eba5c3b7a4035da085123a81c076e52367b30c"
+ "reference": "22a9d18d9094fdf0b3384f37feefd3c7d91f1db9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Laravel-Lang/native-country-names/zipball/70eba5c3b7a4035da085123a81c076e52367b30c",
- "reference": "70eba5c3b7a4035da085123a81c076e52367b30c",
+ "url": "https://api.github.com/repos/Laravel-Lang/native-country-names/zipball/22a9d18d9094fdf0b3384f37feefd3c7d91f1db9",
+ "reference": "22a9d18d9094fdf0b3384f37feefd3c7d91f1db9",
"shasum": ""
},
"require": {
@@ -11737,20 +11808,20 @@
"issues": "https://github.com/Laravel-Lang/native-country-names/issues",
"source": "https://github.com/Laravel-Lang/native-country-names"
},
- "time": "2025-06-23T09:38:47+00:00"
+ "time": "2025-11-18T07:59:31+00:00"
},
{
"name": "laravel-lang/native-currency-names",
- "version": "1.6.1",
+ "version": "1.7.0",
"source": {
"type": "git",
"url": "https://github.com/Laravel-Lang/native-currency-names.git",
- "reference": "b376c69778be7184f7292cb92424ac7d7415d55d"
+ "reference": "cc871b6d2574b4397728b78e4522e6cfd53cdb79"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Laravel-Lang/native-currency-names/zipball/b376c69778be7184f7292cb92424ac7d7415d55d",
- "reference": "b376c69778be7184f7292cb92424ac7d7415d55d",
+ "url": "https://api.github.com/repos/Laravel-Lang/native-currency-names/zipball/cc871b6d2574b4397728b78e4522e6cfd53cdb79",
+ "reference": "cc871b6d2574b4397728b78e4522e6cfd53cdb79",
"shasum": ""
},
"require": {
@@ -11806,20 +11877,20 @@
"issues": "https://github.com/Laravel-Lang/native-currency-names/issues",
"source": "https://github.com/Laravel-Lang/native-currency-names"
},
- "time": "2025-06-23T09:38:58+00:00"
+ "time": "2025-11-18T07:53:26+00:00"
},
{
"name": "laravel-lang/native-locale-names",
- "version": "2.5.1",
+ "version": "2.6.1",
"source": {
"type": "git",
"url": "https://github.com/Laravel-Lang/native-locale-names.git",
- "reference": "38278ef43fb3460c9fb7a056ac2e8043e4faa963"
+ "reference": "a5fe634a4db570160dbf3ac68882d281fc88436e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Laravel-Lang/native-locale-names/zipball/38278ef43fb3460c9fb7a056ac2e8043e4faa963",
- "reference": "38278ef43fb3460c9fb7a056ac2e8043e4faa963",
+ "url": "https://api.github.com/repos/Laravel-Lang/native-locale-names/zipball/a5fe634a4db570160dbf3ac68882d281fc88436e",
+ "reference": "a5fe634a4db570160dbf3ac68882d281fc88436e",
"shasum": ""
},
"require": {
@@ -11830,7 +11901,7 @@
"require-dev": {
"illuminate/support": "^10.31 || ^11.0 || ^12.0",
"laravel-lang/locale-list": "^1.2",
- "pestphp/pest": "^2.24.3",
+ "pestphp/pest": "^2.24.3 || ^3.0",
"punic/punic": "^3.8",
"symfony/console": "^6.3 || ^7.0",
"symfony/process": "^6.3 || ^7.0",
@@ -11872,7 +11943,7 @@
"issues": "https://github.com/Laravel-Lang/native-locale-names/issues",
"source": "https://github.com/Laravel-Lang/native-locale-names"
},
- "time": "2025-06-23T09:38:52+00:00"
+ "time": "2025-11-18T08:10:42+00:00"
},
{
"name": "laravel-lang/publisher",
@@ -12117,16 +12188,16 @@
},
{
"name": "nunomaduro/collision",
- "version": "v8.8.2",
+ "version": "v8.8.3",
"source": {
"type": "git",
"url": "https://github.com/nunomaduro/collision.git",
- "reference": "60207965f9b7b7a4ce15a0f75d57f9dadb105bdb"
+ "reference": "1dc9e88d105699d0fee8bb18890f41b274f6b4c4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nunomaduro/collision/zipball/60207965f9b7b7a4ce15a0f75d57f9dadb105bdb",
- "reference": "60207965f9b7b7a4ce15a0f75d57f9dadb105bdb",
+ "url": "https://api.github.com/repos/nunomaduro/collision/zipball/1dc9e88d105699d0fee8bb18890f41b274f6b4c4",
+ "reference": "1dc9e88d105699d0fee8bb18890f41b274f6b4c4",
"shasum": ""
},
"require": {
@@ -12148,7 +12219,7 @@
"laravel/sanctum": "^4.1.1",
"laravel/tinker": "^2.10.1",
"orchestra/testbench-core": "^9.12.0 || ^10.4",
- "pestphp/pest": "^3.8.2",
+ "pestphp/pest": "^3.8.2 || ^4.0.0",
"sebastian/environment": "^7.2.1 || ^8.0"
},
"type": "library",
@@ -12212,7 +12283,7 @@
"type": "patreon"
}
],
- "time": "2025-06-25T02:12:12+00:00"
+ "time": "2025-11-20T02:55:25+00:00"
},
{
"name": "phar-io/manifest",
@@ -12669,16 +12740,16 @@
},
{
"name": "phpunit/phpunit",
- "version": "11.5.42",
+ "version": "11.5.46",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "1c6cb5dfe412af3d0dfd414cfd110e3b9cfdbc3c"
+ "reference": "75dfe79a2aa30085b7132bb84377c24062193f33"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/1c6cb5dfe412af3d0dfd414cfd110e3b9cfdbc3c",
- "reference": "1c6cb5dfe412af3d0dfd414cfd110e3b9cfdbc3c",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/75dfe79a2aa30085b7132bb84377c24062193f33",
+ "reference": "75dfe79a2aa30085b7132bb84377c24062193f33",
"shasum": ""
},
"require": {
@@ -12750,7 +12821,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
"security": "https://github.com/sebastianbergmann/phpunit/security/policy",
- "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.42"
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.46"
},
"funding": [
{
@@ -12774,7 +12845,7 @@
"type": "tidelift"
}
],
- "time": "2025-09-28T12:09:13+00:00"
+ "time": "2025-12-06T08:01:15+00:00"
},
{
"name": "sebastian/cli-parser",
@@ -13816,16 +13887,16 @@
},
{
"name": "theseer/tokenizer",
- "version": "1.2.3",
+ "version": "1.3.1",
"source": {
"type": "git",
"url": "https://github.com/theseer/tokenizer.git",
- "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2"
+ "reference": "b7489ce515e168639d17feec34b8847c326b0b3c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2",
- "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2",
+ "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b7489ce515e168639d17feec34b8847c326b0b3c",
+ "reference": "b7489ce515e168639d17feec34b8847c326b0b3c",
"shasum": ""
},
"require": {
@@ -13854,7 +13925,7 @@
"description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
"support": {
"issues": "https://github.com/theseer/tokenizer/issues",
- "source": "https://github.com/theseer/tokenizer/tree/1.2.3"
+ "source": "https://github.com/theseer/tokenizer/tree/1.3.1"
},
"funding": [
{
@@ -13862,7 +13933,7 @@
"type": "github"
}
],
- "time": "2024-03-03T12:36:25+00:00"
+ "time": "2025-11-17T20:03:58+00:00"
}
],
"aliases": [],
@@ -13874,7 +13945,7 @@
"prefer-stable": true,
"prefer-lowest": false,
"platform": {
- "php": ">=8.2 <8.5",
+ "php": ">=8.2",
"ext-bcmath": "*",
"ext-curl": "*",
"ext-gd": "*",
diff --git a/database/migrations/2025_04_17_091208_create_user_passkeys_table.php b/database/migrations/2025_04_17_091208_create_user_passkeys_table.php
new file mode 100644
index 00000000..9c233e49
--- /dev/null
+++ b/database/migrations/2025_04_17_091208_create_user_passkeys_table.php
@@ -0,0 +1,26 @@
+id();
+ $table->unsignedMediumInteger('user_id');
+ $table->text('AAGUID')->nullable();
+ $table->text('credential_id');
+ $table->text('public_key');
+ $table->unsignedInteger('counter')->nullable();
+ $table->timestamps();
+ });
+ }
+
+ public function down(): void
+ {
+ Schema::dropIfExists('user_passkeys');
+ }
+};
diff --git a/public/ajax.php b/public/ajax.php
index a3422bfd..41a00499 100644
--- a/public/ajax.php
+++ b/public/ajax.php
@@ -1,11 +1,14 @@
tokens()->where('id', $params['id'])->delete();
return true;
}
+
+ public static function getPasskeyCreateArgs($params)
+ {
+ global $CURUSER;
+ $rep = new \App\Repositories\UserPasskeyRepository();
+ return $rep->getCreateArgs($CURUSER['id'], $CURUSER['username']);
+ }
+
+ public static function processPasskeyCreate($params)
+ {
+ global $CURUSER;
+ $rep = new \App\Repositories\UserPasskeyRepository();
+ return $rep->processCreate($CURUSER['id'], $params['clientDataJSON'], $params['attestationObject']);
+ }
+
+ public static function deletePasskey($params)
+ {
+ global $CURUSER;
+ $rep = new \App\Repositories\UserPasskeyRepository();
+ return $rep->delete($CURUSER['id'], $params['credentialId']);
+ }
+
+ public static function getPasskeyList($params)
+ {
+ global $CURUSER;
+ $rep = new \App\Repositories\UserPasskeyRepository();
+ return $rep->getList($CURUSER['id']);
+ }
+
+ public static function getPasskeyGetArgs($params)
+ {
+ global $CURUSER;
+ $rep = new \App\Repositories\UserPasskeyRepository();
+ return $rep->getGetArgs();
+ }
+
+ public static function processPasskeyGet($params)
+ {
+ global $CURUSER;
+ $rep = new \App\Repositories\UserPasskeyRepository();
+ return $rep->processGet($params['challenge'], $params['id'], $params['clientDataJSON'], $params['authenticatorData'], $params['signature'], $params['userHandle']);
+ }
}
$class = 'AjaxInterface';
diff --git a/public/js/passkey.js b/public/js/passkey.js
new file mode 100644
index 00000000..9a87c342
--- /dev/null
+++ b/public/js/passkey.js
@@ -0,0 +1,169 @@
+const Passkey = (() => {
+ const apiUrl = '/ajax.php';
+
+ const supported = () => {
+ return window.PublicKeyCredential;
+ }
+
+ const conditionalSupported = () => {
+ return supported() && PublicKeyCredential.isConditionalMediationAvailable;
+ }
+
+ const isCMA = async () => {
+ return await PublicKeyCredential.isConditionalMediationAvailable();
+ }
+
+ const getCreateArgs = async () => {
+ const getArgsParams = new URLSearchParams();
+ getArgsParams.set('action', 'getPasskeyCreateArgs');
+
+ const response = await fetch(apiUrl, {
+ method: 'POST',
+ body: getArgsParams,
+ });
+ const data = await response.json();
+ if (data.ret !== 0) {
+ throw new Error(data.msg);
+ }
+
+ const createArgs = data.data;
+ recursiveBase64StrToArrayBuffer(createArgs);
+ return createArgs;
+ }
+
+ const createRegistration = async () => {
+ const createArgs = await getCreateArgs();
+
+ const cred = await navigator.credentials.create(createArgs);
+
+ const processCreateParams = new URLSearchParams();
+ processCreateParams.set('action', 'processPasskeyCreate');
+ processCreateParams.set('params[transports]', cred.response.getTransports ? cred.response.getTransports() : null)
+ processCreateParams.set('params[clientDataJSON]', cred.response.clientDataJSON ? arrayBufferToBase64(cred.response.clientDataJSON) : null);
+ processCreateParams.set('params[attestationObject]', cred.response.attestationObject ? arrayBufferToBase64(cred.response.attestationObject) : null);
+
+ const response = await fetch(apiUrl, {
+ method: 'POST',
+ body: processCreateParams,
+ });
+ const data = await response.json();
+ if (data.ret !== 0) {
+ throw new Error(data.msg);
+ }
+ }
+
+ const getGetArgs = async () => {
+ const getArgsParams = new URLSearchParams();
+ getArgsParams.set('action', 'getPasskeyGetArgs');
+
+ const response = await fetch(apiUrl, {
+ method: 'POST',
+ body: getArgsParams,
+ });
+ const data = await response.json();
+ if (data.ret !== 0) {
+ throw new Error(data.msg);
+ }
+
+ const getArgs = data.data;
+ recursiveBase64StrToArrayBuffer(getArgs);
+ return getArgs;
+ }
+
+ let abortController;
+
+ const checkRegistration = async (conditional, showLoading) => {
+ if (abortController) {
+ abortController.abort()
+ abortController = null;
+ }
+ if (!conditional) showLoading();
+ const getArgs = await getGetArgs();
+ if (conditional) {
+ abortController = new AbortController();
+ getArgs.signal = abortController.signal;
+ getArgs.mediation = 'conditional';
+ }
+
+ const cred = await navigator.credentials.get(getArgs);
+
+ if (conditional) showLoading();
+
+ const processGetParams = new URLSearchParams();
+ processGetParams.set('action', 'processPasskeyGet');
+ processGetParams.set('params[challenge]', arrayBufferToBase64(getArgs['publicKey']['challenge']));
+ processGetParams.set('params[id]', cred.rawId ? arrayBufferToBase64(cred.rawId) : null);
+ processGetParams.set('params[clientDataJSON]', cred.response.clientDataJSON ? arrayBufferToBase64(cred.response.clientDataJSON) : null);
+ processGetParams.set('params[authenticatorData]', cred.response.authenticatorData ? arrayBufferToBase64(cred.response.authenticatorData) : null);
+ processGetParams.set('params[signature]', cred.response.signature ? arrayBufferToBase64(cred.response.signature) : null);
+ processGetParams.set('params[userHandle]', cred.response.userHandle ? arrayBufferToBase64(cred.response.userHandle) : null);
+
+ const response = await fetch(apiUrl, {
+ method: 'POST',
+ body: processGetParams,
+ });
+ const data = await response.json();
+ if (data.ret !== 0) {
+ throw new Error(data.msg);
+ }
+ }
+
+ const deleteRegistration = async (credentialId) => {
+ const deleteParams = new URLSearchParams();
+ deleteParams.set('action', 'deletePasskey');
+ deleteParams.set('params[credentialId]', credentialId);
+
+ const response = await fetch(apiUrl, {
+ method: 'POST',
+ body: deleteParams,
+ });
+ const data = await response.json();
+ if (data.ret !== 0) {
+ throw new Error(data.msg);
+ }
+ }
+
+ const recursiveBase64StrToArrayBuffer = (obj) => {
+ let prefix = '=?BINARY?B?';
+ let suffix = '?=';
+ if (typeof obj === 'object') {
+ for (let key in obj) {
+ if (typeof obj[key] === 'string') {
+ let str = obj[key];
+ if (str.substring(0, prefix.length) === prefix && str.substring(str.length - suffix.length) === suffix) {
+ str = str.substring(prefix.length, str.length - suffix.length);
+
+ let binary_string = window.atob(str);
+ let len = binary_string.length;
+ let bytes = new Uint8Array(len);
+ for (let i = 0; i < len; i++) {
+ bytes[i] = binary_string.charCodeAt(i);
+ }
+ obj[key] = bytes.buffer;
+ }
+ } else {
+ recursiveBase64StrToArrayBuffer(obj[key]);
+ }
+ }
+ }
+ }
+
+ const arrayBufferToBase64 = (buffer) => {
+ let binary = '';
+ let bytes = new Uint8Array(buffer);
+ let len = bytes.byteLength;
+ for (let i = 0; i < len; i++) {
+ binary += String.fromCharCode(bytes[i]);
+ }
+ return window.btoa(binary);
+ }
+
+ return {
+ supported: supported,
+ conditionalSupported: conditionalSupported,
+ createRegistration: createRegistration,
+ checkRegistration: checkRegistration,
+ deleteRegistration: deleteRegistration,
+ isCMA: isCMA,
+ }
+})();
diff --git a/public/login.php b/public/login.php
index 9aac3024..0520c8db 100644
--- a/public/login.php
+++ b/public/login.php
@@ -92,6 +92,7 @@ if (isset($returnto)) {
if ($useChallengeResponseAuthentication) {
print('');
}
+\App\Repositories\UserPasskeyRepository::renderLogin();
?>
");
?>
';
tr_small($lang_usercp['row_two_step_secret'], $twoStepY, 1);
}
+ printf('| %s | ', nexus_trans('passkey.passkey'));
+ \App\Repositories\UserPasskeyRepository::renderList($CURUSER['id']);
+ printf(' |
');
if ($disableemailchange != 'no' && $smtptype != 'none') //system-wide setting
tr_small($lang_usercp['row_email_address'], "
".$lang_usercp['text_email_address_note']."", 1);
diff --git a/resources/lang/en/passkey.php b/resources/lang/en/passkey.php
new file mode 100644
index 00000000..5185da54
--- /dev/null
+++ b/resources/lang/en/passkey.php
@@ -0,0 +1,21 @@
+ 'Passkey',
+ 'passkey' => 'Passkey',
+ 'passkey_desc' => 'Passkey are a secure and convenient way to authenticate without the need for passwords. They can be used across multiple devices.',
+ 'passkey_create' => 'Create Passkey',
+ 'passkey_empty' => 'No passkey found.',
+ 'passkey_created_at' => 'Created at:',
+ 'passkey_delete_confirm' => 'Are you sure you want to delete this passkey? This action cannot be undone.',
+ 'passkey_delete' => 'Delete',
+ 'passkey_unknown' => 'An error occurred while processing your request.',
+ 'passkey_invalid' => 'Invalid passkey data.',
+ 'passkey_error' => 'An error occurred while processing your request. Please try again later.',
+ 'passkey_user_not_found' => 'User not found.',
+ 'passkey_not_supported' => 'Your browser does not support passkey. Please use a modern browser to create and manage your passkey.',
+ 'fields' => [
+ 'credential_id' => 'Credential ID',
+ 'counter' => 'Counter',
+ ],
+];
diff --git a/resources/lang/zh_CN/passkey.php b/resources/lang/zh_CN/passkey.php
new file mode 100644
index 00000000..3b699b76
--- /dev/null
+++ b/resources/lang/zh_CN/passkey.php
@@ -0,0 +1,21 @@
+ ' 通 行 密 钥 ',
+ 'passkey' => '通行密钥',
+ 'passkey_desc' => '通行密钥是一种安全、方便的身份验证方式,无需输入密码。通行密钥可在多台设备上使用。',
+ 'passkey_create' => '创建通行密钥',
+ 'passkey_empty' => '没有通行密钥。',
+ 'passkey_created_at' => '创建于:',
+ 'passkey_delete_confirm' => '您确实要删除此通行密钥吗?此操作无法撤消。',
+ 'passkey_delete' => '删除',
+ 'passkey_unknown' => '处理您的请求时出错。',
+ 'passkey_invalid' => '通行密钥数据无效。',
+ 'passkey_error' => '处理您的请求时出错。请稍后重试。',
+ 'passkey_user_not_found' => '未找到用户。',
+ 'passkey_not_supported' => '您的浏览器不支持通行密钥。请使用现代浏览器创建和管理您的通行密钥。',
+ 'fields' => [
+ 'credential_id' => '凭据 ID',
+ 'counter' => '计数',
+ ],
+];