diff --git a/app/Http/Controllers/Admin/PasskeysController.php b/app/Http/Controllers/Admin/PasskeysController.php
index 5fdca622..49ca481b 100644
--- a/app/Http/Controllers/Admin/PasskeysController.php
+++ b/app/Http/Controllers/Admin/PasskeysController.php
@@ -19,7 +19,6 @@ use Illuminate\Support\Facades\Auth;
use Illuminate\View\View;
use ParagonIE\ConstantTime\Base64UrlSafe;
use Throwable;
-use Webauthn\AttestationStatement\AttestationObjectLoader;
use Webauthn\AttestationStatement\AttestationStatementSupportManager;
use Webauthn\AttestationStatement\NoneAttestationStatementSupport;
use Webauthn\AuthenticationExtensions\ExtensionOutputCheckerHandler;
@@ -28,9 +27,11 @@ use Webauthn\AuthenticatorAssertionResponseValidator;
use Webauthn\AuthenticatorAttestationResponse;
use Webauthn\AuthenticatorAttestationResponseValidator;
use Webauthn\AuthenticatorSelectionCriteria;
+use Webauthn\CeremonyStep\CeremonyStepManagerFactory;
+use Webauthn\Denormalizer\WebauthnSerializerFactory;
use Webauthn\Exception\WebauthnException;
+use Webauthn\PublicKeyCredential;
use Webauthn\PublicKeyCredentialCreationOptions;
-use Webauthn\PublicKeyCredentialLoader;
use Webauthn\PublicKeyCredentialParameters;
use Webauthn\PublicKeyCredentialRequestOptions;
use Webauthn\PublicKeyCredentialRpEntity;
@@ -109,39 +110,57 @@ class PasskeysController extends Controller
$user = auth()->user();
$publicKeyCredentialCreationOptionsData = session('create_options');
+ // Unset session data to mitigate replay attacks
+ session()->forget('create_options');
if (empty($publicKeyCredentialCreationOptionsData)) {
throw new WebAuthnException('No public key credential request options found');
}
- $publicKeyCredentialCreationOptions = PublicKeyCredentialCreationOptions::createFromString($publicKeyCredentialCreationOptionsData);
- // Unset session data to mitigate replay attacks
- session()->forget('create_options');
+ $attestationStatementSupportManager = new AttestationStatementSupportManager();
+ $attestationStatementSupportManager->add(new NoneAttestationStatementSupport());
- $attestationSupportManager = AttestationStatementSupportManager::create();
- $attestationSupportManager->add(NoneAttestationStatementSupport::create());
- $attestationObjectLoader = AttestationObjectLoader::create($attestationSupportManager);
- $publicKeyCredentialLoader = PublicKeyCredentialLoader::create($attestationObjectLoader);
+ $webauthnSerializer = (new WebauthnSerializerFactory(
+ $attestationStatementSupportManager
+ ))->create();
- $publicKeyCredential = $publicKeyCredentialLoader->load(json_encode($request->all(), JSON_THROW_ON_ERROR));
+ $publicKeyCredential = $webauthnSerializer->deserialize(
+ json_encode($request->all(), JSON_THROW_ON_ERROR),
+ PublicKeyCredential::class,
+ 'json'
+ );
if (! $publicKeyCredential->response instanceof AuthenticatorAttestationResponse) {
throw new WebAuthnException('Invalid response type');
}
- $attestationStatementSupportManager = AttestationStatementSupportManager::create();
- $attestationStatementSupportManager->add(NoneAttestationStatementSupport::create());
+ $algorithmManager = new Manager();
+ $algorithmManager->add(new Ed25519());
+ $algorithmManager->add(new ES256());
+ $algorithmManager->add(new RS256());
- $authenticatorAttestationResponseValidator = AuthenticatorAttestationResponseValidator::create(
- attestationStatementSupportManager: $attestationStatementSupportManager,
- publicKeyCredentialSourceRepository: null,
- tokenBindingHandler: null,
- extensionOutputCheckerHandler: ExtensionOutputCheckerHandler::create(),
+ $ceremonyStepManagerFactory = new CeremonyStepManagerFactory();
+ $ceremonyStepManagerFactory->setAlgorithmManager($algorithmManager);
+ $ceremonyStepManagerFactory->setAttestationStatementSupportManager(
+ $attestationStatementSupportManager
+ );
+ $ceremonyStepManagerFactory->setExtensionOutputCheckerHandler(
+ ExtensionOutputCheckerHandler::create()
);
-
$securedRelyingPartyId = [];
if (App::environment('local', 'development')) {
$securedRelyingPartyId = [config('url.longurl')];
}
+ $ceremonyStepManagerFactory->setSecuredRelyingPartyId($securedRelyingPartyId);
+
+ $authenticatorAttestationResponseValidator = AuthenticatorAttestationResponseValidator::create(
+ ceremonyStepManager: $ceremonyStepManagerFactory->creationCeremony()
+ );
+
+ $publicKeyCredentialCreationOptions = $webauthnSerializer->deserialize(
+ $publicKeyCredentialCreationOptionsData,
+ PublicKeyCredentialCreationOptions::class,
+ 'json'
+ );
$publicKeyCredentialSource = $authenticatorAttestationResponseValidator->check(
authenticatorAttestationResponse: $publicKeyCredential->response,
@@ -187,14 +206,18 @@ class PasskeysController extends Controller
], 400);
}
- $publicKeyCredentialRequestOptions = PublicKeyCredentialRequestOptions::createFromString($requestOptions);
+ $attestationStatementSupportManager = new AttestationStatementSupportManager();
+ $attestationStatementSupportManager->add(new NoneAttestationStatementSupport());
- $attestationSupportManager = AttestationStatementSupportManager::create();
- $attestationSupportManager->add(NoneAttestationStatementSupport::create());
- $attestationObjectLoader = AttestationObjectLoader::create($attestationSupportManager);
- $publicKeyCredentialLoader = PublicKeyCredentialLoader::create($attestationObjectLoader);
+ $webauthnSerializer = (new WebauthnSerializerFactory(
+ $attestationStatementSupportManager
+ ))->create();
- $publicKeyCredential = $publicKeyCredentialLoader->load(json_encode($request->all(), JSON_THROW_ON_ERROR));
+ $publicKeyCredential = $webauthnSerializer->deserialize(
+ json_encode($request->all(), JSON_THROW_ON_ERROR),
+ PublicKeyCredential::class,
+ 'json'
+ );
if (! $publicKeyCredential->response instanceof AuthenticatorAssertionResponse) {
return response()->json([
@@ -211,28 +234,47 @@ class PasskeysController extends Controller
], 404);
}
- $credential = PublicKeyCredentialSource::createFromArray(json_decode($passkey->passkey, true, 512, JSON_THROW_ON_ERROR));
+ $publicKeyCredentialSource = $webauthnSerializer->deserialize(
+ $passkey->passkey,
+ PublicKeyCredentialSource::class,
+ 'json'
+ );
- $algorithmManager = Manager::create();
+ $algorithmManager = new Manager();
$algorithmManager->add(new Ed25519());
$algorithmManager->add(new ES256());
$algorithmManager->add(new RS256());
- $authenticatorAssertionResponseValidator = new AuthenticatorAssertionResponseValidator(
- publicKeyCredentialSourceRepository: null,
- tokenBindingHandler: null,
- extensionOutputCheckerHandler: ExtensionOutputCheckerHandler::create(),
- algorithmManager: $algorithmManager,
- );
+ $attestationStatementSupportManager = new AttestationStatementSupportManager();
+ $attestationStatementSupportManager->add(new NoneAttestationStatementSupport());
+ $ceremonyStepManagerFactory = new CeremonyStepManagerFactory();
+ $ceremonyStepManagerFactory->setAlgorithmManager($algorithmManager);
+ $ceremonyStepManagerFactory->setAttestationStatementSupportManager(
+ $attestationStatementSupportManager
+ );
+ $ceremonyStepManagerFactory->setExtensionOutputCheckerHandler(
+ ExtensionOutputCheckerHandler::create()
+ );
$securedRelyingPartyId = [];
if (App::environment('local', 'development')) {
$securedRelyingPartyId = [config('url.longurl')];
}
+ $ceremonyStepManagerFactory->setSecuredRelyingPartyId($securedRelyingPartyId);
+
+ $authenticatorAssertionResponseValidator = AuthenticatorAssertionResponseValidator::create(
+ ceremonyStepManager: $ceremonyStepManagerFactory->requestCeremony()
+ );
+
+ $publicKeyCredentialRequestOptions = $webauthnSerializer->deserialize(
+ $requestOptions,
+ PublicKeyCredentialRequestOptions::class,
+ 'json'
+ );
try {
$authenticatorAssertionResponseValidator->check(
- credentialId: $credential,
+ credentialId: $publicKeyCredentialSource,
authenticatorAssertionResponse: $publicKeyCredential->response,
publicKeyCredentialRequestOptions: $publicKeyCredentialRequestOptions,
request: config('url.longurl'),
diff --git a/app/Http/Controllers/IndieAuthController.php b/app/Http/Controllers/IndieAuthController.php
new file mode 100644
index 00000000..845107ce
--- /dev/null
+++ b/app/Http/Controllers/IndieAuthController.php
@@ -0,0 +1,202 @@
+all(), [
+ 'response_type' => 'required:string',
+ 'client_id' => 'required',
+ 'redirect_uri' => 'required',
+ 'state' => 'required',
+ 'code_challenge' => 'required:string',
+ 'code_challenge_method' => 'required:string',
+ ], [
+ 'response_type' => 'response_type is required',
+ 'client_id.required' => 'client_id is required to display which app is asking for authentication',
+ 'redirect_uri.required' => 'redirect_uri is required so we can progress successful requests',
+ 'state.required' => 'state is required',
+ 'code_challenge.required' => 'code_challenge is required',
+ 'code_challenge_method.required' => 'code_challenge_method is required',
+ ]);
+
+ if ($validator->fails()) {
+ return view('indieauth.error')->withErrors($validator);
+ }
+
+ if ($request->get('response_type') !== 'code') {
+ return view('indieauth.error')->withErrors(['response_type' => 'only a response_type of "code" is supported']);
+ }
+
+ if (mb_strtoupper($request->get('code_challenge_method')) !== 'S256') {
+ return view('indieauth.error')->withErrors(['code_challenge_method' => 'only a code_challenge_method of "S256" is supported']);
+ }
+
+ if (! $this->isValidRedirectUri($request->get('client_id'), $request->get('redirect_uri'))) {
+ return view('indieauth.error')->withErrors(['redirect_uri' => 'redirect_uri is not valid for this client_id']);
+ }
+
+ $scopes = $request->get('scopes', '');
+ $scopes = explode(' ', $scopes);
+
+ return view('indieauth.start', [
+ 'me' => $request->get('me'),
+ 'client_id' => $request->get('client_id'),
+ 'redirect_uri' => $request->get('redirect_uri'),
+ 'state' => $request->get('state'),
+ 'scopes' => $scopes,
+ 'code_challenge' => $request->get('code_challenge'),
+ 'code_challenge_method' => $request->get('code_challenge_method'),
+ ]);
+ }
+
+ /**
+ * Confirm an IndieAuth approval request.
+ *
+ * Generates an auth code and redirects the user back to the client app.
+ *
+ * @throws RandomException
+ */
+ public function confirm(Request $request): JsonResponse
+ {
+ $authCode = bin2hex(random_bytes(16));
+
+ $cacheKey = hash('xxh3', $request->get('client_id'));
+
+ $indieAuthRequestData = [
+ 'code_challenge' => $request->get('code_challenge'),
+ 'code_challenge_method' => $request->get('code_challenge_method'),
+ 'client_id' => $request->get('client_id'),
+ 'auth_code' => $authCode,
+ ];
+
+ Cache::put($cacheKey, $indieAuthRequestData, now()->addMinutes(10));
+
+ $redirectUri = new Uri($request->get('redirect_uri'));
+ $redirectUri = Uri::withQueryValues($redirectUri, [
+ 'code' => $authCode,
+ 'me' => $request->get('me'),
+ 'state' => $request->get('state'),
+ ]);
+
+ // For now just dump URL scheme
+ return response()->json([
+ 'redirect_uri' => $redirectUri,
+ ]);
+ }
+
+ /**
+ * Process a POST request to the IndieAuth endpoint.
+ *
+ * This is the second step in the IndieAuth flow, where the client app sends the auth code to the IndieAuth endpoint.
+ * @throws SodiumException
+ */
+ public function processCodeExchange(Request $request): JsonResponse
+ {
+ // First check all the data is present
+ $validator = Validator::make($request->all(), [
+ 'grant_type' => 'required:string',
+ 'code' => 'required:string',
+ 'client_id' => 'required',
+ 'redirect_uri' => 'required',
+ 'code_verifier' => 'required',
+ ]);
+
+ if ($validator->fails()) {
+ return response()->json($validator->errors(), 400);
+ }
+
+ if ($request->get('grant_type') !== 'authorization_code') {
+ return response()->json(['error' => 'only a grant_type of "authorization_code" is supported'], 400);
+ }
+
+ // Check cache for auth code
+ $cacheKey = hash('xxh3', $request->get('client_id'));
+ $indieAuthRequestData = Cache::pull($cacheKey);
+
+ if ($indieAuthRequestData === null) {
+ return response()->json(['error' => 'code is invalid'], 404);
+ }
+
+ if ($indieAuthRequestData['auth_code'] !== $request->get('code')) {
+ return response()->json(['error' => 'code is invalid'], 400);
+ }
+
+ // Check code verifier
+ if (! hash_equals(
+ $indieAuthRequestData['code_challenge'],
+ sodium_bin2base64(
+ hash('sha256', $request->get('code_verifier'), true),
+ SODIUM_BASE64_VARIANT_URLSAFE_NO_PADDING
+ )
+ )) {
+ return response()->json(['error' => 'code_verifier is invalid'], 400);
+ }
+
+ return response()->json([
+ 'me' => config('app.url'),
+ ]);
+ }
+
+ protected function isValidRedirectUri(string $clientId, string $redirectUri): bool
+ {
+ // If client_id is not a valid URL, then it's not valid
+ $clientIdParsed = \Mf2\parseUriToComponents($clientId);
+ if (! isset($clientIdParsed['authority'])) {
+ ray($clientIdParsed);
+
+ return false;
+ }
+
+ // If redirect_uri is not a valid URL, then it's not valid
+ $redirectUriParsed = \Mf2\parseUriToComponents($redirectUri);
+ if (! isset($redirectUriParsed['authority'])) {
+ ray($redirectUriParsed);
+
+ return false;
+ }
+
+ // If client_id and redirect_uri are the same host, then it's valid
+ if ($clientIdParsed['authority'] === $redirectUriParsed['authority']) {
+ return true;
+ }
+
+ // Otherwise we need to check the redirect_uri is in the client_id's redirect_uris
+ $guzzle = resolve(Client::class);
+
+ try {
+ $clientInfo = $guzzle->get($clientId);
+ } catch (Exception $e) {
+ ray('Failed to fetch client info', $e->getMessage());
+
+ return false;
+ }
+
+ $clientInfoParsed = \Mf2\parse($clientInfo->getBody()->getContents(), $clientId);
+
+ $redirectUris = $clientInfoParsed['rels']['redirect_uri'] ?? [];
+
+ return in_array($redirectUri, $redirectUris);
+ }
+}
diff --git a/app/Http/Middleware/MyAuthMiddleware.php b/app/Http/Middleware/MyAuthMiddleware.php
index 26c8315f..d0a938bc 100644
--- a/app/Http/Middleware/MyAuthMiddleware.php
+++ b/app/Http/Middleware/MyAuthMiddleware.php
@@ -20,6 +20,8 @@ class MyAuthMiddleware
{
if (Auth::check() === false) {
// they’re not logged in, so send them to login form
+ redirect()->setIntendedUrl($request->url());
+
return redirect()->route('login');
}
diff --git a/composer.json b/composer.json
index 3d0f9aca..decfe606 100644
--- a/composer.json
+++ b/composer.json
@@ -10,6 +10,7 @@
"ext-intl": "*",
"ext-json": "*",
"ext-pgsql": "*",
+ "ext-sodium": "*",
"cviebrock/eloquent-sluggable": "^11.0",
"guzzlehttp/guzzle": "^7.2",
"indieauth/client": "^1.1",
@@ -26,9 +27,12 @@
"league/commonmark": "^2.0",
"league/flysystem-aws-s3-v3": "^3.0",
"mf2/mf2": "~0.3",
+ "phpdocumentor/reflection-docblock": "^5.3",
"spatie/commonmark-highlighter": "^3.0",
"spatie/laravel-ignition": "^2.1",
"symfony/html-sanitizer": "^7.0",
+ "symfony/property-access": "^7.0",
+ "symfony/serializer": "^7.0",
"web-auth/webauthn-lib": "^4.7"
},
"require-dev": {
diff --git a/composer.lock b/composer.lock
index 893bc61f..d81c7837 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "8d335e0fa1848b7448208fc90ead613e",
+ "content-hash": "c8d12b416f44f430d0c44692a7eb0a45",
"packages": [
{
"name": "aws/aws-crt-php",
@@ -157,25 +157,25 @@
},
{
"name": "brick/math",
- "version": "0.11.0",
+ "version": "0.12.1",
"source": {
"type": "git",
"url": "https://github.com/brick/math.git",
- "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478"
+ "reference": "f510c0a40911935b77b86859eb5223d58d660df1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/brick/math/zipball/0ad82ce168c82ba30d1c01ec86116ab52f589478",
- "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478",
+ "url": "https://api.github.com/repos/brick/math/zipball/f510c0a40911935b77b86859eb5223d58d660df1",
+ "reference": "f510c0a40911935b77b86859eb5223d58d660df1",
"shasum": ""
},
"require": {
- "php": "^8.0"
+ "php": "^8.1"
},
"require-dev": {
"php-coveralls/php-coveralls": "^2.2",
- "phpunit/phpunit": "^9.0",
- "vimeo/psalm": "5.0.0"
+ "phpunit/phpunit": "^10.1",
+ "vimeo/psalm": "5.16.0"
},
"type": "library",
"autoload": {
@@ -195,12 +195,17 @@
"arithmetic",
"bigdecimal",
"bignum",
+ "bignumber",
"brick",
- "math"
+ "decimal",
+ "integer",
+ "math",
+ "mathematics",
+ "rational"
],
"support": {
"issues": "https://github.com/brick/math/issues",
- "source": "https://github.com/brick/math/tree/0.11.0"
+ "source": "https://github.com/brick/math/tree/0.12.1"
},
"funding": [
{
@@ -208,7 +213,7 @@
"type": "github"
}
],
- "time": "2023-01-15T23:15:59+00:00"
+ "time": "2023-11-29T23:19:16+00:00"
},
{
"name": "carbonphp/carbon-doctrine-types",
@@ -653,6 +658,53 @@
},
"time": "2022-10-27T11:44:00+00:00"
},
+ {
+ "name": "doctrine/deprecations",
+ "version": "1.1.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/deprecations.git",
+ "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/deprecations/zipball/dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab",
+ "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1 || ^8.0"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^9",
+ "phpstan/phpstan": "1.4.10 || 1.10.15",
+ "phpstan/phpstan-phpunit": "^1.0",
+ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
+ "psalm/plugin-phpunit": "0.18.4",
+ "psr/log": "^1 || ^2 || ^3",
+ "vimeo/psalm": "4.30.0 || 5.12.0"
+ },
+ "suggest": {
+ "psr/log": "Allows logging deprecations via PSR-3 logger implementation"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.",
+ "homepage": "https://www.doctrine-project.org/",
+ "support": {
+ "issues": "https://github.com/doctrine/deprecations/issues",
+ "source": "https://github.com/doctrine/deprecations/tree/1.1.3"
+ },
+ "time": "2024-01-30T19:34:25+00:00"
+ },
{
"name": "doctrine/inflector",
"version": "2.0.10",
@@ -1947,16 +1999,16 @@
},
{
"name": "laravel/framework",
- "version": "v11.1.1",
+ "version": "v11.7.0",
"source": {
"type": "git",
"url": "https://github.com/laravel/framework.git",
- "reference": "1437cea6d2b04cbc83743fbb208e1a01efccd9ec"
+ "reference": "e5ac72f513f635f208024aa76b8a04efc1b47f93"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/framework/zipball/1437cea6d2b04cbc83743fbb208e1a01efccd9ec",
- "reference": "1437cea6d2b04cbc83743fbb208e1a01efccd9ec",
+ "url": "https://api.github.com/repos/laravel/framework/zipball/e5ac72f513f635f208024aa76b8a04efc1b47f93",
+ "reference": "e5ac72f513f635f208024aa76b8a04efc1b47f93",
"shasum": ""
},
"require": {
@@ -1975,7 +2027,7 @@
"fruitcake/php-cors": "^1.3",
"guzzlehttp/guzzle": "^7.8",
"guzzlehttp/uri-template": "^1.0",
- "laravel/prompts": "^0.1.15",
+ "laravel/prompts": "^0.1.18",
"laravel/serializable-closure": "^1.3",
"league/commonmark": "^2.2.1",
"league/flysystem": "^3.8.0",
@@ -2059,7 +2111,7 @@
"league/flysystem-sftp-v3": "^3.0",
"mockery/mockery": "^1.6",
"nyholm/psr7": "^1.2",
- "orchestra/testbench-core": "^9.0.6",
+ "orchestra/testbench-core": "^9.0.15",
"pda/pheanstalk": "^5.0",
"phpstan/phpstan": "^1.4.7",
"phpunit/phpunit": "^10.5|^11.0",
@@ -2148,7 +2200,7 @@
"issues": "https://github.com/laravel/framework/issues",
"source": "https://github.com/laravel/framework"
},
- "time": "2024-03-28T15:07:18+00:00"
+ "time": "2024-05-07T13:41:51+00:00"
},
{
"name": "laravel/horizon",
@@ -2231,16 +2283,16 @@
},
{
"name": "laravel/prompts",
- "version": "v0.1.17",
+ "version": "v0.1.21",
"source": {
"type": "git",
"url": "https://github.com/laravel/prompts.git",
- "reference": "8ee9f87f7f9eadcbe21e9e72cd4176b2f06cd5b5"
+ "reference": "23ea808e8a145653e0ab29e30d4385e49f40a920"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/prompts/zipball/8ee9f87f7f9eadcbe21e9e72cd4176b2f06cd5b5",
- "reference": "8ee9f87f7f9eadcbe21e9e72cd4176b2f06cd5b5",
+ "url": "https://api.github.com/repos/laravel/prompts/zipball/23ea808e8a145653e0ab29e30d4385e49f40a920",
+ "reference": "23ea808e8a145653e0ab29e30d4385e49f40a920",
"shasum": ""
},
"require": {
@@ -2280,11 +2332,12 @@
"license": [
"MIT"
],
+ "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.1.17"
+ "source": "https://github.com/laravel/prompts/tree/v0.1.21"
},
- "time": "2024-03-13T16:05:43+00:00"
+ "time": "2024-04-30T12:46:16+00:00"
},
{
"name": "laravel/sanctum",
@@ -2881,16 +2934,16 @@
},
{
"name": "league/flysystem",
- "version": "3.26.0",
+ "version": "3.27.0",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/flysystem.git",
- "reference": "072735c56cc0da00e10716dd90d5a7f7b40b36be"
+ "reference": "4729745b1ab737908c7d055148c9a6b3e959832f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/072735c56cc0da00e10716dd90d5a7f7b40b36be",
- "reference": "072735c56cc0da00e10716dd90d5a7f7b40b36be",
+ "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/4729745b1ab737908c7d055148c9a6b3e959832f",
+ "reference": "4729745b1ab737908c7d055148c9a6b3e959832f",
"shasum": ""
},
"require": {
@@ -2955,7 +3008,7 @@
],
"support": {
"issues": "https://github.com/thephpleague/flysystem/issues",
- "source": "https://github.com/thephpleague/flysystem/tree/3.26.0"
+ "source": "https://github.com/thephpleague/flysystem/tree/3.27.0"
},
"funding": [
{
@@ -2967,7 +3020,7 @@
"type": "github"
}
],
- "time": "2024-03-25T11:49:53+00:00"
+ "time": "2024-04-07T19:17:50+00:00"
},
{
"name": "league/flysystem-aws-s3-v3",
@@ -3454,16 +3507,16 @@
},
{
"name": "monolog/monolog",
- "version": "3.5.0",
+ "version": "3.6.0",
"source": {
"type": "git",
"url": "https://github.com/Seldaek/monolog.git",
- "reference": "c915e2634718dbc8a4a15c61b0e62e7a44e14448"
+ "reference": "4b18b21a5527a3d5ffdac2fd35d3ab25a9597654"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Seldaek/monolog/zipball/c915e2634718dbc8a4a15c61b0e62e7a44e14448",
- "reference": "c915e2634718dbc8a4a15c61b0e62e7a44e14448",
+ "url": "https://api.github.com/repos/Seldaek/monolog/zipball/4b18b21a5527a3d5ffdac2fd35d3ab25a9597654",
+ "reference": "4b18b21a5527a3d5ffdac2fd35d3ab25a9597654",
"shasum": ""
},
"require": {
@@ -3486,7 +3539,7 @@
"phpstan/phpstan": "^1.9",
"phpstan/phpstan-deprecation-rules": "^1.0",
"phpstan/phpstan-strict-rules": "^1.4",
- "phpunit/phpunit": "^10.1",
+ "phpunit/phpunit": "^10.5.17",
"predis/predis": "^1.1 || ^2",
"ruflin/elastica": "^7",
"symfony/mailer": "^5.4 || ^6",
@@ -3539,7 +3592,7 @@
],
"support": {
"issues": "https://github.com/Seldaek/monolog/issues",
- "source": "https://github.com/Seldaek/monolog/tree/3.5.0"
+ "source": "https://github.com/Seldaek/monolog/tree/3.6.0"
},
"funding": [
{
@@ -3551,7 +3604,7 @@
"type": "tidelift"
}
],
- "time": "2023-10-27T15:32:31+00:00"
+ "time": "2024-04-12T21:02:21+00:00"
},
{
"name": "mtdowling/jmespath.php",
@@ -3621,16 +3674,16 @@
},
{
"name": "nesbot/carbon",
- "version": "3.2.2",
+ "version": "3.3.1",
"source": {
"type": "git",
"url": "https://github.com/briannesbitt/Carbon.git",
- "reference": "2d69b6de67e2a3c0652d0c9dfcfda8b4563c4cee"
+ "reference": "8ff64b92c1b1ec84fcde9f8bb9ff2ca34cb8a77a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/2d69b6de67e2a3c0652d0c9dfcfda8b4563c4cee",
- "reference": "2d69b6de67e2a3c0652d0c9dfcfda8b4563c4cee",
+ "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/8ff64b92c1b1ec84fcde9f8bb9ff2ca34cb8a77a",
+ "reference": "8ff64b92c1b1ec84fcde9f8bb9ff2ca34cb8a77a",
"shasum": ""
},
"require": {
@@ -3723,7 +3776,7 @@
"type": "tidelift"
}
],
- "time": "2024-03-28T12:59:49+00:00"
+ "time": "2024-05-01T06:54:22+00:00"
},
{
"name": "nette/schema",
@@ -4126,6 +4179,174 @@
},
"time": "2022-06-14T06:56:20+00:00"
},
+ {
+ "name": "phpdocumentor/reflection-common",
+ "version": "2.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
+ "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b",
+ "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-2.x": "2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jaap van Otterdijk",
+ "email": "opensource@ijaap.nl"
+ }
+ ],
+ "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
+ "homepage": "http://www.phpdoc.org",
+ "keywords": [
+ "FQSEN",
+ "phpDocumentor",
+ "phpdoc",
+ "reflection",
+ "static analysis"
+ ],
+ "support": {
+ "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues",
+ "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x"
+ },
+ "time": "2020-06-27T09:03:43+00:00"
+ },
+ {
+ "name": "phpdocumentor/reflection-docblock",
+ "version": "5.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
+ "reference": "622548b623e81ca6d78b721c5e029f4ce664f170"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170",
+ "reference": "622548b623e81ca6d78b721c5e029f4ce664f170",
+ "shasum": ""
+ },
+ "require": {
+ "ext-filter": "*",
+ "php": "^7.2 || ^8.0",
+ "phpdocumentor/reflection-common": "^2.2",
+ "phpdocumentor/type-resolver": "^1.3",
+ "webmozart/assert": "^1.9.1"
+ },
+ "require-dev": {
+ "mockery/mockery": "~1.3.2",
+ "psalm/phar": "^4.8"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "me@mikevanriel.com"
+ },
+ {
+ "name": "Jaap van Otterdijk",
+ "email": "account@ijaap.nl"
+ }
+ ],
+ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
+ "support": {
+ "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
+ "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0"
+ },
+ "time": "2021-10-19T17:43:47+00:00"
+ },
+ {
+ "name": "phpdocumentor/type-resolver",
+ "version": "1.8.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/TypeResolver.git",
+ "reference": "153ae662783729388a584b4361f2545e4d841e3c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/153ae662783729388a584b4361f2545e4d841e3c",
+ "reference": "153ae662783729388a584b4361f2545e4d841e3c",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/deprecations": "^1.0",
+ "php": "^7.3 || ^8.0",
+ "phpdocumentor/reflection-common": "^2.0",
+ "phpstan/phpdoc-parser": "^1.13"
+ },
+ "require-dev": {
+ "ext-tokenizer": "*",
+ "phpbench/phpbench": "^1.2",
+ "phpstan/extension-installer": "^1.1",
+ "phpstan/phpstan": "^1.8",
+ "phpstan/phpstan-phpunit": "^1.1",
+ "phpunit/phpunit": "^9.5",
+ "rector/rector": "^0.13.9",
+ "vimeo/psalm": "^4.25"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-1.x": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "me@mikevanriel.com"
+ }
+ ],
+ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
+ "support": {
+ "issues": "https://github.com/phpDocumentor/TypeResolver/issues",
+ "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.8.2"
+ },
+ "time": "2024-02-23T11:10:43+00:00"
+ },
{
"name": "phpoption/phpoption",
"version": "1.9.2",
@@ -4201,6 +4422,53 @@
],
"time": "2023-11-12T21:59:55+00:00"
},
+ {
+ "name": "phpstan/phpdoc-parser",
+ "version": "1.26.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpstan/phpdoc-parser.git",
+ "reference": "231e3186624c03d7e7c890ec662b81e6b0405227"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/231e3186624c03d7e7c890ec662b81e6b0405227",
+ "reference": "231e3186624c03d7e7c890ec662b81e6b0405227",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "require-dev": {
+ "doctrine/annotations": "^2.0",
+ "nikic/php-parser": "^4.15",
+ "php-parallel-lint/php-parallel-lint": "^1.2",
+ "phpstan/extension-installer": "^1.0",
+ "phpstan/phpstan": "^1.5",
+ "phpstan/phpstan-phpunit": "^1.1",
+ "phpstan/phpstan-strict-rules": "^1.0",
+ "phpunit/phpunit": "^9.5",
+ "symfony/process": "^5.2"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "PHPStan\\PhpDocParser\\": [
+ "src/"
+ ]
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "PHPDoc parser with support for nullable, intersection and generic types",
+ "support": {
+ "issues": "https://github.com/phpstan/phpdoc-parser/issues",
+ "source": "https://github.com/phpstan/phpdoc-parser/tree/1.26.0"
+ },
+ "time": "2024-02-23T16:05:55+00:00"
+ },
{
"name": "psr/clock",
"version": "1.0.0",
@@ -4827,20 +5095,20 @@
},
{
"name": "ramsey/uuid",
- "version": "4.7.5",
+ "version": "4.7.6",
"source": {
"type": "git",
"url": "https://github.com/ramsey/uuid.git",
- "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e"
+ "reference": "91039bc1faa45ba123c4328958e620d382ec7088"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/ramsey/uuid/zipball/5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e",
- "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e",
+ "url": "https://api.github.com/repos/ramsey/uuid/zipball/91039bc1faa45ba123c4328958e620d382ec7088",
+ "reference": "91039bc1faa45ba123c4328958e620d382ec7088",
"shasum": ""
},
"require": {
- "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11",
+ "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11 || ^0.12",
"ext-json": "*",
"php": "^8.0",
"ramsey/collection": "^1.2 || ^2.0"
@@ -4903,7 +5171,7 @@
],
"support": {
"issues": "https://github.com/ramsey/uuid/issues",
- "source": "https://github.com/ramsey/uuid/tree/4.7.5"
+ "source": "https://github.com/ramsey/uuid/tree/4.7.6"
},
"funding": [
{
@@ -4915,7 +5183,7 @@
"type": "tidelift"
}
],
- "time": "2023-11-08T05:53:05+00:00"
+ "time": "2024-04-27T21:32:50+00:00"
},
{
"name": "scrivo/highlight.php",
@@ -5551,16 +5819,16 @@
},
{
"name": "symfony/clock",
- "version": "v7.0.5",
+ "version": "v7.0.7",
"source": {
"type": "git",
"url": "https://github.com/symfony/clock.git",
- "reference": "8b9d08887353d627d5f6c3bf3373b398b49051c2"
+ "reference": "2008671acb4a30b01c453de193cf9c80549ebda6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/clock/zipball/8b9d08887353d627d5f6c3bf3373b398b49051c2",
- "reference": "8b9d08887353d627d5f6c3bf3373b398b49051c2",
+ "url": "https://api.github.com/repos/symfony/clock/zipball/2008671acb4a30b01c453de193cf9c80549ebda6",
+ "reference": "2008671acb4a30b01c453de193cf9c80549ebda6",
"shasum": ""
},
"require": {
@@ -5605,7 +5873,7 @@
"time"
],
"support": {
- "source": "https://github.com/symfony/clock/tree/v7.0.5"
+ "source": "https://github.com/symfony/clock/tree/v7.0.7"
},
"funding": [
{
@@ -5621,20 +5889,20 @@
"type": "tidelift"
}
],
- "time": "2024-03-02T12:46:12+00:00"
+ "time": "2024-04-18T09:29:19+00:00"
},
{
"name": "symfony/console",
- "version": "v7.0.4",
+ "version": "v7.0.7",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
- "reference": "6b099f3306f7c9c2d2786ed736d0026b2903205f"
+ "reference": "c981e0e9380ce9f146416bde3150c79197ce9986"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/6b099f3306f7c9c2d2786ed736d0026b2903205f",
- "reference": "6b099f3306f7c9c2d2786ed736d0026b2903205f",
+ "url": "https://api.github.com/repos/symfony/console/zipball/c981e0e9380ce9f146416bde3150c79197ce9986",
+ "reference": "c981e0e9380ce9f146416bde3150c79197ce9986",
"shasum": ""
},
"require": {
@@ -5698,7 +5966,7 @@
"terminal"
],
"support": {
- "source": "https://github.com/symfony/console/tree/v7.0.4"
+ "source": "https://github.com/symfony/console/tree/v7.0.7"
},
"funding": [
{
@@ -5714,20 +5982,20 @@
"type": "tidelift"
}
],
- "time": "2024-02-22T20:27:20+00:00"
+ "time": "2024-04-18T09:29:19+00:00"
},
{
"name": "symfony/css-selector",
- "version": "v7.0.3",
+ "version": "v7.0.7",
"source": {
"type": "git",
"url": "https://github.com/symfony/css-selector.git",
- "reference": "ec60a4edf94e63b0556b6a0888548bb400a3a3be"
+ "reference": "b08a4ad89e84b29cec285b7b1f781a7ae51cf4bc"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/css-selector/zipball/ec60a4edf94e63b0556b6a0888548bb400a3a3be",
- "reference": "ec60a4edf94e63b0556b6a0888548bb400a3a3be",
+ "url": "https://api.github.com/repos/symfony/css-selector/zipball/b08a4ad89e84b29cec285b7b1f781a7ae51cf4bc",
+ "reference": "b08a4ad89e84b29cec285b7b1f781a7ae51cf4bc",
"shasum": ""
},
"require": {
@@ -5763,7 +6031,7 @@
"description": "Converts CSS selectors to XPath expressions",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/css-selector/tree/v7.0.3"
+ "source": "https://github.com/symfony/css-selector/tree/v7.0.7"
},
"funding": [
{
@@ -5779,20 +6047,20 @@
"type": "tidelift"
}
],
- "time": "2024-01-23T15:02:46+00:00"
+ "time": "2024-04-18T09:29:19+00:00"
},
{
"name": "symfony/deprecation-contracts",
- "version": "v3.4.0",
+ "version": "v3.5.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/deprecation-contracts.git",
- "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf"
+ "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf",
- "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf",
+ "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1",
+ "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1",
"shasum": ""
},
"require": {
@@ -5801,7 +6069,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "3.4-dev"
+ "dev-main": "3.5-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -5830,7 +6098,7 @@
"description": "A generic function and convention to trigger deprecation notices",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/deprecation-contracts/tree/v3.4.0"
+ "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.0"
},
"funding": [
{
@@ -5846,20 +6114,20 @@
"type": "tidelift"
}
],
- "time": "2023-05-23T14:45:45+00:00"
+ "time": "2024-04-18T09:32:20+00:00"
},
{
"name": "symfony/error-handler",
- "version": "v7.0.4",
+ "version": "v7.0.7",
"source": {
"type": "git",
"url": "https://github.com/symfony/error-handler.git",
- "reference": "677b24759decff69e65b1e9d1471d90f95ced880"
+ "reference": "cf97429887e40480c847bfeb6c3991e1e2c086ab"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/error-handler/zipball/677b24759decff69e65b1e9d1471d90f95ced880",
- "reference": "677b24759decff69e65b1e9d1471d90f95ced880",
+ "url": "https://api.github.com/repos/symfony/error-handler/zipball/cf97429887e40480c847bfeb6c3991e1e2c086ab",
+ "reference": "cf97429887e40480c847bfeb6c3991e1e2c086ab",
"shasum": ""
},
"require": {
@@ -5905,7 +6173,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.0.4"
+ "source": "https://github.com/symfony/error-handler/tree/v7.0.7"
},
"funding": [
{
@@ -5921,20 +6189,20 @@
"type": "tidelift"
}
],
- "time": "2024-02-22T20:27:20+00:00"
+ "time": "2024-04-18T09:29:19+00:00"
},
{
"name": "symfony/event-dispatcher",
- "version": "v7.0.3",
+ "version": "v7.0.7",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
- "reference": "834c28d533dd0636f910909d01b9ff45cc094b5e"
+ "reference": "db2a7fab994d67d92356bb39c367db115d9d30f9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/834c28d533dd0636f910909d01b9ff45cc094b5e",
- "reference": "834c28d533dd0636f910909d01b9ff45cc094b5e",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/db2a7fab994d67d92356bb39c367db115d9d30f9",
+ "reference": "db2a7fab994d67d92356bb39c367db115d9d30f9",
"shasum": ""
},
"require": {
@@ -5985,7 +6253,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.0.3"
+ "source": "https://github.com/symfony/event-dispatcher/tree/v7.0.7"
},
"funding": [
{
@@ -6001,20 +6269,20 @@
"type": "tidelift"
}
],
- "time": "2024-01-23T15:02:46+00:00"
+ "time": "2024-04-18T09:29:19+00:00"
},
{
"name": "symfony/event-dispatcher-contracts",
- "version": "v3.4.0",
+ "version": "v3.5.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher-contracts.git",
- "reference": "a76aed96a42d2b521153fb382d418e30d18b59df"
+ "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/a76aed96a42d2b521153fb382d418e30d18b59df",
- "reference": "a76aed96a42d2b521153fb382d418e30d18b59df",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/8f93aec25d41b72493c6ddff14e916177c9efc50",
+ "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50",
"shasum": ""
},
"require": {
@@ -6024,7 +6292,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "3.4-dev"
+ "dev-main": "3.5-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -6061,7 +6329,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.4.0"
+ "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.5.0"
},
"funding": [
{
@@ -6077,20 +6345,20 @@
"type": "tidelift"
}
],
- "time": "2023-05-23T14:45:45+00:00"
+ "time": "2024-04-18T09:32:20+00:00"
},
{
"name": "symfony/finder",
- "version": "v7.0.0",
+ "version": "v7.0.7",
"source": {
"type": "git",
"url": "https://github.com/symfony/finder.git",
- "reference": "6e5688d69f7cfc4ed4a511e96007e06c2d34ce56"
+ "reference": "4d58f0f4fe95a30d7b538d71197135483560b97c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/finder/zipball/6e5688d69f7cfc4ed4a511e96007e06c2d34ce56",
- "reference": "6e5688d69f7cfc4ed4a511e96007e06c2d34ce56",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/4d58f0f4fe95a30d7b538d71197135483560b97c",
+ "reference": "4d58f0f4fe95a30d7b538d71197135483560b97c",
"shasum": ""
},
"require": {
@@ -6125,7 +6393,7 @@
"description": "Finds files and directories via an intuitive fluent interface",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/finder/tree/v7.0.0"
+ "source": "https://github.com/symfony/finder/tree/v7.0.7"
},
"funding": [
{
@@ -6141,7 +6409,7 @@
"type": "tidelift"
}
],
- "time": "2023-10-31T17:59:56+00:00"
+ "time": "2024-04-28T11:44:19+00:00"
},
{
"name": "symfony/html-sanitizer",
@@ -6214,16 +6482,16 @@
},
{
"name": "symfony/http-foundation",
- "version": "v7.0.4",
+ "version": "v7.0.7",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-foundation.git",
- "reference": "439fdfdd344943254b1ef6278613e79040548045"
+ "reference": "0194e064b8bdc29381462f790bab04e1cac8fdc8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-foundation/zipball/439fdfdd344943254b1ef6278613e79040548045",
- "reference": "439fdfdd344943254b1ef6278613e79040548045",
+ "url": "https://api.github.com/repos/symfony/http-foundation/zipball/0194e064b8bdc29381462f790bab04e1cac8fdc8",
+ "reference": "0194e064b8bdc29381462f790bab04e1cac8fdc8",
"shasum": ""
},
"require": {
@@ -6271,7 +6539,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.0.4"
+ "source": "https://github.com/symfony/http-foundation/tree/v7.0.7"
},
"funding": [
{
@@ -6287,20 +6555,20 @@
"type": "tidelift"
}
],
- "time": "2024-02-08T19:22:56+00:00"
+ "time": "2024-04-18T09:29:19+00:00"
},
{
"name": "symfony/http-kernel",
- "version": "v7.0.5",
+ "version": "v7.0.7",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-kernel.git",
- "reference": "37c24ca28f65e3121a68f3dd4daeb36fb1fa2a72"
+ "reference": "e07bb9bd86e7cd8ba2d3d9c618eec9d1bbe06d25"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-kernel/zipball/37c24ca28f65e3121a68f3dd4daeb36fb1fa2a72",
- "reference": "37c24ca28f65e3121a68f3dd4daeb36fb1fa2a72",
+ "url": "https://api.github.com/repos/symfony/http-kernel/zipball/e07bb9bd86e7cd8ba2d3d9c618eec9d1bbe06d25",
+ "reference": "e07bb9bd86e7cd8ba2d3d9c618eec9d1bbe06d25",
"shasum": ""
},
"require": {
@@ -6354,6 +6622,7 @@
"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",
"twig/twig": "^3.0.4"
},
@@ -6383,7 +6652,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.0.5"
+ "source": "https://github.com/symfony/http-kernel/tree/v7.0.7"
},
"funding": [
{
@@ -6399,20 +6668,20 @@
"type": "tidelift"
}
],
- "time": "2024-03-04T21:05:24+00:00"
+ "time": "2024-04-29T12:20:25+00:00"
},
{
"name": "symfony/mailer",
- "version": "v7.0.4",
+ "version": "v7.0.7",
"source": {
"type": "git",
"url": "https://github.com/symfony/mailer.git",
- "reference": "72e16d87bf50a3ce195b9470c06bb9d7b816ea85"
+ "reference": "4ff41a7c7998a88cfdc31b5841ef64d9246fc56a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/mailer/zipball/72e16d87bf50a3ce195b9470c06bb9d7b816ea85",
- "reference": "72e16d87bf50a3ce195b9470c06bb9d7b816ea85",
+ "url": "https://api.github.com/repos/symfony/mailer/zipball/4ff41a7c7998a88cfdc31b5841ef64d9246fc56a",
+ "reference": "4ff41a7c7998a88cfdc31b5841ef64d9246fc56a",
"shasum": ""
},
"require": {
@@ -6463,7 +6732,7 @@
"description": "Helps sending emails",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/mailer/tree/v7.0.4"
+ "source": "https://github.com/symfony/mailer/tree/v7.0.7"
},
"funding": [
{
@@ -6479,20 +6748,20 @@
"type": "tidelift"
}
],
- "time": "2024-02-03T21:34:19+00:00"
+ "time": "2024-04-18T09:29:19+00:00"
},
{
"name": "symfony/mime",
- "version": "v7.0.3",
+ "version": "v7.0.7",
"source": {
"type": "git",
"url": "https://github.com/symfony/mime.git",
- "reference": "c1ffe24ba6fdc3e3f0f3fcb93519103b326a3716"
+ "reference": "3adbf110c306546f6f00337f421d2edca0e8d3c0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/mime/zipball/c1ffe24ba6fdc3e3f0f3fcb93519103b326a3716",
- "reference": "c1ffe24ba6fdc3e3f0f3fcb93519103b326a3716",
+ "url": "https://api.github.com/repos/symfony/mime/zipball/3adbf110c306546f6f00337f421d2edca0e8d3c0",
+ "reference": "3adbf110c306546f6f00337f421d2edca0e8d3c0",
"shasum": ""
},
"require": {
@@ -6512,6 +6781,7 @@
"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|^7.0"
@@ -6546,7 +6816,7 @@
"mime-type"
],
"support": {
- "source": "https://github.com/symfony/mime/tree/v7.0.3"
+ "source": "https://github.com/symfony/mime/tree/v7.0.7"
},
"funding": [
{
@@ -6562,7 +6832,7 @@
"type": "tidelift"
}
],
- "time": "2024-01-30T08:34:29+00:00"
+ "time": "2024-04-18T09:29:19+00:00"
},
{
"name": "symfony/polyfill-ctype",
@@ -7277,16 +7547,16 @@
},
{
"name": "symfony/process",
- "version": "v7.0.4",
+ "version": "v7.0.7",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
- "reference": "0e7727191c3b71ebec6d529fa0e50a01ca5679e9"
+ "reference": "3839e56b94dd1dbd13235d27504e66baf23faba0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/process/zipball/0e7727191c3b71ebec6d529fa0e50a01ca5679e9",
- "reference": "0e7727191c3b71ebec6d529fa0e50a01ca5679e9",
+ "url": "https://api.github.com/repos/symfony/process/zipball/3839e56b94dd1dbd13235d27504e66baf23faba0",
+ "reference": "3839e56b94dd1dbd13235d27504e66baf23faba0",
"shasum": ""
},
"require": {
@@ -7318,7 +7588,7 @@
"description": "Executes commands in sub-processes",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/process/tree/v7.0.4"
+ "source": "https://github.com/symfony/process/tree/v7.0.7"
},
"funding": [
{
@@ -7334,20 +7604,179 @@
"type": "tidelift"
}
],
- "time": "2024-02-22T20:27:20+00:00"
+ "time": "2024-04-18T09:29:19+00:00"
},
{
- "name": "symfony/routing",
- "version": "v7.0.5",
+ "name": "symfony/property-access",
+ "version": "v7.0.4",
"source": {
"type": "git",
- "url": "https://github.com/symfony/routing.git",
- "reference": "ba6bf07d43289c6a4b4591ddb75bc3bc5f069c19"
+ "url": "https://github.com/symfony/property-access.git",
+ "reference": "44e3746d4de8d0961a44ee332c74dd0918266127"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/routing/zipball/ba6bf07d43289c6a4b4591ddb75bc3bc5f069c19",
- "reference": "ba6bf07d43289c6a4b4591ddb75bc3bc5f069c19",
+ "url": "https://api.github.com/repos/symfony/property-access/zipball/44e3746d4de8d0961a44ee332c74dd0918266127",
+ "reference": "44e3746d4de8d0961a44ee332c74dd0918266127",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.2",
+ "symfony/property-info": "^6.4|^7.0"
+ },
+ "require-dev": {
+ "symfony/cache": "^6.4|^7.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\PropertyAccess\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides functions to read and write from/to an object or array using a simple string notation",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "access",
+ "array",
+ "extraction",
+ "index",
+ "injection",
+ "object",
+ "property",
+ "property-path",
+ "reflection"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/property-access/tree/v7.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-02-16T13:44:10+00:00"
+ },
+ {
+ "name": "symfony/property-info",
+ "version": "v7.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/property-info.git",
+ "reference": "e160f92ea827243abf2dbf36b8460b1377194406"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/property-info/zipball/e160f92ea827243abf2dbf36b8460b1377194406",
+ "reference": "e160f92ea827243abf2dbf36b8460b1377194406",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.2",
+ "symfony/string": "^6.4|^7.0"
+ },
+ "conflict": {
+ "phpdocumentor/reflection-docblock": "<5.2",
+ "phpdocumentor/type-resolver": "<1.5.1",
+ "symfony/dependency-injection": "<6.4",
+ "symfony/serializer": "<6.4"
+ },
+ "require-dev": {
+ "phpdocumentor/reflection-docblock": "^5.2",
+ "phpstan/phpdoc-parser": "^1.0",
+ "symfony/cache": "^6.4|^7.0",
+ "symfony/dependency-injection": "^6.4|^7.0",
+ "symfony/serializer": "^6.4|^7.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\PropertyInfo\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Kévin Dunglas",
+ "email": "dunglas@gmail.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Extracts information about PHP class' properties using metadata of popular sources",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "doctrine",
+ "phpdoc",
+ "property",
+ "symfony",
+ "type",
+ "validator"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/property-info/tree/v7.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-01-23T15:02:46+00:00"
+ },
+ {
+ "name": "symfony/routing",
+ "version": "v7.0.7",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/routing.git",
+ "reference": "9f82bf7766ccc9c22ab7aeb9bebb98351483fa5b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/routing/zipball/9f82bf7766ccc9c22ab7aeb9bebb98351483fa5b",
+ "reference": "9f82bf7766ccc9c22ab7aeb9bebb98351483fa5b",
"shasum": ""
},
"require": {
@@ -7399,7 +7828,7 @@
"url"
],
"support": {
- "source": "https://github.com/symfony/routing/tree/v7.0.5"
+ "source": "https://github.com/symfony/routing/tree/v7.0.7"
},
"funding": [
{
@@ -7415,25 +7844,121 @@
"type": "tidelift"
}
],
- "time": "2024-02-27T12:34:35+00:00"
+ "time": "2024-04-18T09:29:19+00:00"
},
{
- "name": "symfony/service-contracts",
- "version": "v3.4.1",
+ "name": "symfony/serializer",
+ "version": "v7.0.4",
"source": {
"type": "git",
- "url": "https://github.com/symfony/service-contracts.git",
- "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0"
+ "url": "https://github.com/symfony/serializer.git",
+ "reference": "c71d61c6c37804e10981960e5f5ebc2c8f0a4fbb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/service-contracts/zipball/fe07cbc8d837f60caf7018068e350cc5163681a0",
- "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0",
+ "url": "https://api.github.com/repos/symfony/serializer/zipball/c71d61c6c37804e10981960e5f5ebc2c8f0a4fbb",
+ "reference": "c71d61c6c37804e10981960e5f5ebc2c8f0a4fbb",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.2",
+ "symfony/polyfill-ctype": "~1.8"
+ },
+ "conflict": {
+ "phpdocumentor/reflection-docblock": "<3.2.2",
+ "phpdocumentor/type-resolver": "<1.4.0",
+ "symfony/dependency-injection": "<6.4",
+ "symfony/property-access": "<6.4",
+ "symfony/property-info": "<6.4",
+ "symfony/uid": "<6.4",
+ "symfony/validator": "<6.4",
+ "symfony/yaml": "<6.4"
+ },
+ "require-dev": {
+ "phpdocumentor/reflection-docblock": "^3.2|^4.0|^5.0",
+ "seld/jsonlint": "^1.10",
+ "symfony/cache": "^6.4|^7.0",
+ "symfony/config": "^6.4|^7.0",
+ "symfony/console": "^6.4|^7.0",
+ "symfony/dependency-injection": "^6.4|^7.0",
+ "symfony/error-handler": "^6.4|^7.0",
+ "symfony/filesystem": "^6.4|^7.0",
+ "symfony/form": "^6.4|^7.0",
+ "symfony/http-foundation": "^6.4|^7.0",
+ "symfony/http-kernel": "^6.4|^7.0",
+ "symfony/messenger": "^6.4|^7.0",
+ "symfony/mime": "^6.4|^7.0",
+ "symfony/property-access": "^6.4|^7.0",
+ "symfony/property-info": "^6.4|^7.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/yaml": "^6.4|^7.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Serializer\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/serializer/tree/v7.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-02-22T20:27:20+00:00"
+ },
+ {
+ "name": "symfony/service-contracts",
+ "version": "v3.5.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/service-contracts.git",
+ "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/service-contracts/zipball/bd1d9e59a81d8fa4acdcea3f617c581f7475a80f",
+ "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f",
"shasum": ""
},
"require": {
"php": ">=8.1",
- "psr/container": "^1.1|^2.0"
+ "psr/container": "^1.1|^2.0",
+ "symfony/deprecation-contracts": "^2.5|^3"
},
"conflict": {
"ext-psr": "<1.1|>=2"
@@ -7441,7 +7966,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "3.4-dev"
+ "dev-main": "3.5-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -7481,7 +8006,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/service-contracts/tree/v3.4.1"
+ "source": "https://github.com/symfony/service-contracts/tree/v3.5.0"
},
"funding": [
{
@@ -7497,20 +8022,20 @@
"type": "tidelift"
}
],
- "time": "2023-12-26T14:02:43+00:00"
+ "time": "2024-04-18T09:32:20+00:00"
},
{
"name": "symfony/string",
- "version": "v7.0.4",
+ "version": "v7.0.7",
"source": {
"type": "git",
"url": "https://github.com/symfony/string.git",
- "reference": "f5832521b998b0bec40bee688ad5de98d4cf111b"
+ "reference": "e405b5424dc2528e02e31ba26b83a79fd4eb8f63"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/string/zipball/f5832521b998b0bec40bee688ad5de98d4cf111b",
- "reference": "f5832521b998b0bec40bee688ad5de98d4cf111b",
+ "url": "https://api.github.com/repos/symfony/string/zipball/e405b5424dc2528e02e31ba26b83a79fd4eb8f63",
+ "reference": "e405b5424dc2528e02e31ba26b83a79fd4eb8f63",
"shasum": ""
},
"require": {
@@ -7567,7 +8092,7 @@
"utf8"
],
"support": {
- "source": "https://github.com/symfony/string/tree/v7.0.4"
+ "source": "https://github.com/symfony/string/tree/v7.0.7"
},
"funding": [
{
@@ -7583,20 +8108,20 @@
"type": "tidelift"
}
],
- "time": "2024-02-01T13:17:36+00:00"
+ "time": "2024-04-18T09:29:19+00:00"
},
{
"name": "symfony/translation",
- "version": "v7.0.4",
+ "version": "v7.0.7",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation.git",
- "reference": "5b75e872f7d135d7abb4613809fadc8d9f3d30a0"
+ "reference": "1515e03afaa93e6419aba5d5c9d209159317100b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/translation/zipball/5b75e872f7d135d7abb4613809fadc8d9f3d30a0",
- "reference": "5b75e872f7d135d7abb4613809fadc8d9f3d30a0",
+ "url": "https://api.github.com/repos/symfony/translation/zipball/1515e03afaa93e6419aba5d5c9d209159317100b",
+ "reference": "1515e03afaa93e6419aba5d5c9d209159317100b",
"shasum": ""
},
"require": {
@@ -7661,7 +8186,7 @@
"description": "Provides tools to internationalize your application",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/translation/tree/v7.0.4"
+ "source": "https://github.com/symfony/translation/tree/v7.0.7"
},
"funding": [
{
@@ -7677,20 +8202,20 @@
"type": "tidelift"
}
],
- "time": "2024-02-22T20:27:20+00:00"
+ "time": "2024-04-18T09:29:19+00:00"
},
{
"name": "symfony/translation-contracts",
- "version": "v3.4.1",
+ "version": "v3.5.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation-contracts.git",
- "reference": "06450585bf65e978026bda220cdebca3f867fde7"
+ "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/06450585bf65e978026bda220cdebca3f867fde7",
- "reference": "06450585bf65e978026bda220cdebca3f867fde7",
+ "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/b9d2189887bb6b2e0367a9fc7136c5239ab9b05a",
+ "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a",
"shasum": ""
},
"require": {
@@ -7699,7 +8224,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "3.4-dev"
+ "dev-main": "3.5-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -7739,7 +8264,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/translation-contracts/tree/v3.4.1"
+ "source": "https://github.com/symfony/translation-contracts/tree/v3.5.0"
},
"funding": [
{
@@ -7755,20 +8280,20 @@
"type": "tidelift"
}
],
- "time": "2023-12-26T14:02:43+00:00"
+ "time": "2024-04-18T09:32:20+00:00"
},
{
"name": "symfony/uid",
- "version": "v7.0.3",
+ "version": "v7.0.7",
"source": {
"type": "git",
"url": "https://github.com/symfony/uid.git",
- "reference": "87cedaf3fabd7b733859d4d77aa4ca598259054b"
+ "reference": "4f3a5d181999e25918586c8369de09e7814e7be2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/uid/zipball/87cedaf3fabd7b733859d4d77aa4ca598259054b",
- "reference": "87cedaf3fabd7b733859d4d77aa4ca598259054b",
+ "url": "https://api.github.com/repos/symfony/uid/zipball/4f3a5d181999e25918586c8369de09e7814e7be2",
+ "reference": "4f3a5d181999e25918586c8369de09e7814e7be2",
"shasum": ""
},
"require": {
@@ -7813,7 +8338,7 @@
"uuid"
],
"support": {
- "source": "https://github.com/symfony/uid/tree/v7.0.3"
+ "source": "https://github.com/symfony/uid/tree/v7.0.7"
},
"funding": [
{
@@ -7829,20 +8354,20 @@
"type": "tidelift"
}
],
- "time": "2024-01-23T15:02:46+00:00"
+ "time": "2024-04-18T09:29:19+00:00"
},
{
"name": "symfony/var-dumper",
- "version": "v7.0.4",
+ "version": "v7.0.7",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-dumper.git",
- "reference": "e03ad7c1535e623edbb94c22cc42353e488c6670"
+ "reference": "d1627b66fd87c8b4d90cabe5671c29d575690924"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/var-dumper/zipball/e03ad7c1535e623edbb94c22cc42353e488c6670",
- "reference": "e03ad7c1535e623edbb94c22cc42353e488c6670",
+ "url": "https://api.github.com/repos/symfony/var-dumper/zipball/d1627b66fd87c8b4d90cabe5671c29d575690924",
+ "reference": "d1627b66fd87c8b4d90cabe5671c29d575690924",
"shasum": ""
},
"require": {
@@ -7896,7 +8421,7 @@
"dump"
],
"support": {
- "source": "https://github.com/symfony/var-dumper/tree/v7.0.4"
+ "source": "https://github.com/symfony/var-dumper/tree/v7.0.7"
},
"funding": [
{
@@ -7912,7 +8437,7 @@
"type": "tidelift"
}
],
- "time": "2024-02-15T11:33:06+00:00"
+ "time": "2024-04-18T09:29:19+00:00"
},
{
"name": "tijsverkoyen/css-to-inline-styles",
@@ -9162,53 +9687,6 @@
},
"time": "2019-12-04T15:06:13+00:00"
},
- {
- "name": "doctrine/deprecations",
- "version": "1.1.3",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/deprecations.git",
- "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/deprecations/zipball/dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab",
- "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab",
- "shasum": ""
- },
- "require": {
- "php": "^7.1 || ^8.0"
- },
- "require-dev": {
- "doctrine/coding-standard": "^9",
- "phpstan/phpstan": "1.4.10 || 1.10.15",
- "phpstan/phpstan-phpunit": "^1.0",
- "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
- "psalm/plugin-phpunit": "0.18.4",
- "psr/log": "^1 || ^2 || ^3",
- "vimeo/psalm": "4.30.0 || 5.12.0"
- },
- "suggest": {
- "psr/log": "Allows logging deprecations via PSR-3 logger implementation"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.",
- "homepage": "https://www.doctrine-project.org/",
- "support": {
- "issues": "https://github.com/doctrine/deprecations/issues",
- "source": "https://github.com/doctrine/deprecations/tree/1.1.3"
- },
- "time": "2024-01-30T19:34:25+00:00"
- },
{
"name": "fakerphp/faker",
"version": "v1.23.1",
@@ -10612,221 +11090,6 @@
},
"time": "2023-10-20T12:21:20+00:00"
},
- {
- "name": "phpdocumentor/reflection-common",
- "version": "2.2.0",
- "source": {
- "type": "git",
- "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
- "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b",
- "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b",
- "shasum": ""
- },
- "require": {
- "php": "^7.2 || ^8.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-2.x": "2.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "phpDocumentor\\Reflection\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Jaap van Otterdijk",
- "email": "opensource@ijaap.nl"
- }
- ],
- "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
- "homepage": "http://www.phpdoc.org",
- "keywords": [
- "FQSEN",
- "phpDocumentor",
- "phpdoc",
- "reflection",
- "static analysis"
- ],
- "support": {
- "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues",
- "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x"
- },
- "time": "2020-06-27T09:03:43+00:00"
- },
- {
- "name": "phpdocumentor/reflection-docblock",
- "version": "5.3.0",
- "source": {
- "type": "git",
- "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
- "reference": "622548b623e81ca6d78b721c5e029f4ce664f170"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170",
- "reference": "622548b623e81ca6d78b721c5e029f4ce664f170",
- "shasum": ""
- },
- "require": {
- "ext-filter": "*",
- "php": "^7.2 || ^8.0",
- "phpdocumentor/reflection-common": "^2.2",
- "phpdocumentor/type-resolver": "^1.3",
- "webmozart/assert": "^1.9.1"
- },
- "require-dev": {
- "mockery/mockery": "~1.3.2",
- "psalm/phar": "^4.8"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "phpDocumentor\\Reflection\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Mike van Riel",
- "email": "me@mikevanriel.com"
- },
- {
- "name": "Jaap van Otterdijk",
- "email": "account@ijaap.nl"
- }
- ],
- "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
- "support": {
- "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
- "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0"
- },
- "time": "2021-10-19T17:43:47+00:00"
- },
- {
- "name": "phpdocumentor/type-resolver",
- "version": "1.8.2",
- "source": {
- "type": "git",
- "url": "https://github.com/phpDocumentor/TypeResolver.git",
- "reference": "153ae662783729388a584b4361f2545e4d841e3c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/153ae662783729388a584b4361f2545e4d841e3c",
- "reference": "153ae662783729388a584b4361f2545e4d841e3c",
- "shasum": ""
- },
- "require": {
- "doctrine/deprecations": "^1.0",
- "php": "^7.3 || ^8.0",
- "phpdocumentor/reflection-common": "^2.0",
- "phpstan/phpdoc-parser": "^1.13"
- },
- "require-dev": {
- "ext-tokenizer": "*",
- "phpbench/phpbench": "^1.2",
- "phpstan/extension-installer": "^1.1",
- "phpstan/phpstan": "^1.8",
- "phpstan/phpstan-phpunit": "^1.1",
- "phpunit/phpunit": "^9.5",
- "rector/rector": "^0.13.9",
- "vimeo/psalm": "^4.25"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-1.x": "1.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "phpDocumentor\\Reflection\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Mike van Riel",
- "email": "me@mikevanriel.com"
- }
- ],
- "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
- "support": {
- "issues": "https://github.com/phpDocumentor/TypeResolver/issues",
- "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.8.2"
- },
- "time": "2024-02-23T11:10:43+00:00"
- },
- {
- "name": "phpstan/phpdoc-parser",
- "version": "1.26.0",
- "source": {
- "type": "git",
- "url": "https://github.com/phpstan/phpdoc-parser.git",
- "reference": "231e3186624c03d7e7c890ec662b81e6b0405227"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/231e3186624c03d7e7c890ec662b81e6b0405227",
- "reference": "231e3186624c03d7e7c890ec662b81e6b0405227",
- "shasum": ""
- },
- "require": {
- "php": "^7.2 || ^8.0"
- },
- "require-dev": {
- "doctrine/annotations": "^2.0",
- "nikic/php-parser": "^4.15",
- "php-parallel-lint/php-parallel-lint": "^1.2",
- "phpstan/extension-installer": "^1.0",
- "phpstan/phpstan": "^1.5",
- "phpstan/phpstan-phpunit": "^1.1",
- "phpstan/phpstan-strict-rules": "^1.0",
- "phpunit/phpunit": "^9.5",
- "symfony/process": "^5.2"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "PHPStan\\PhpDocParser\\": [
- "src/"
- ]
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "PHPDoc parser with support for nullable, intersection and generic types",
- "support": {
- "issues": "https://github.com/phpstan/phpdoc-parser/issues",
- "source": "https://github.com/phpstan/phpdoc-parser/tree/1.26.0"
- },
- "time": "2024-02-23T16:05:55+00:00"
- },
{
"name": "phpstan/phpstan",
"version": "1.10.63",
@@ -13346,7 +13609,8 @@
"ext-dom": "*",
"ext-intl": "*",
"ext-json": "*",
- "ext-pgsql": "*"
+ "ext-pgsql": "*",
+ "ext-sodium": "*"
},
"platform-dev": [],
"plugin-api-version": "2.6.0"
diff --git a/docker-compose.yml b/docker-compose.yml
index 5fb2a542..3db9674f 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,5 +1,4 @@
# For more information: https://laravel.com/docs/sail
-version: '3'
services:
laravel.test:
build:
@@ -18,6 +17,7 @@ services:
LARAVEL_SAIL: 1
XDEBUG_MODE: '${SAIL_XDEBUG_MODE:-off}'
XDEBUG_CONFIG: '${SAIL_XDEBUG_CONFIG:-client_host=host.docker.internal}'
+ IGNITION_LOCAL_SITES_PATH: '${PWD}'
volumes:
- '.:/var/www/html'
networks:
diff --git a/public/assets/css/app.css b/public/assets/css/app.css
index 9e91b28a..12bddcc2 100644
--- a/public/assets/css/app.css
+++ b/public/assets/css/app.css
@@ -5,3 +5,4 @@
@import url('code.css');
@import url('content.css');
@import url('notes.css');
+@import url('indieauth.css');
diff --git a/public/assets/css/app.css.br b/public/assets/css/app.css.br
index e58c83d2..8a4bcff6 100644
Binary files a/public/assets/css/app.css.br and b/public/assets/css/app.css.br differ
diff --git a/public/assets/css/indieauth.css b/public/assets/css/indieauth.css
new file mode 100644
index 00000000..0ea0a600
--- /dev/null
+++ b/public/assets/css/indieauth.css
@@ -0,0 +1,15 @@
+.indieauth {
+ .error {
+ color: var(--color-danger);
+ background-color: var(--color-danger-shadow);
+ border: 1px solid var(--color-danger);
+ border-radius: .5rem;
+
+ display: flex;
+ padding-inline: 1rem;
+ padding-block: .5rem;
+ width: fit-content;
+
+ margin-block-end: 1rem;
+ }
+}
diff --git a/public/assets/css/indieauth.css.br b/public/assets/css/indieauth.css.br
new file mode 100644
index 00000000..de2684d3
Binary files /dev/null and b/public/assets/css/indieauth.css.br differ
diff --git a/public/assets/css/variables.css b/public/assets/css/variables.css
index cd0b7448..b0e81a89 100644
--- a/public/assets/css/variables.css
+++ b/public/assets/css/variables.css
@@ -20,4 +20,6 @@
--color-link-visited: oklch(70.44% 0.21 304.41deg);
--color-primary-shadow: oklch(19.56% 0.054 125.505deg / 40%);
--rss-color-link: oklch(67.59% 0.189 42.04deg);
+ --color-danger: oklch(64.41% 0.281 23.29deg);
+ --color-danger-shadow: oklch(64.41% 0.281 23.29deg / 10%);
}
diff --git a/public/assets/css/variables.css.br b/public/assets/css/variables.css.br
index b55500f3..d0a36c5d 100644
Binary files a/public/assets/css/variables.css.br and b/public/assets/css/variables.css.br differ
diff --git a/public/assets/js/app.js.br b/public/assets/js/app.js.br
index 203d1bf1..e9e8716c 100644
Binary files a/public/assets/js/app.js.br and b/public/assets/js/app.js.br differ
diff --git a/public/assets/js/auth.js.br b/public/assets/js/auth.js.br
index f87cfc8b..08d60602 100644
Binary files a/public/assets/js/auth.js.br and b/public/assets/js/auth.js.br differ
diff --git a/resources/views/indieauth/error.blade.php b/resources/views/indieauth/error.blade.php
new file mode 100644
index 00000000..6846c0bb
--- /dev/null
+++ b/resources/views/indieauth/error.blade.php
@@ -0,0 +1,12 @@
+@extends('master')
+
+@section('title')IndieAuth « @stop
+
+@section('content')
+ IndieAuth
+ @foreach ($errors->all() as $message)
+