diff --git a/composer.lock b/composer.lock index aef76b8c32551bb14b5d1efeaa87b7976ac99705..b8d3fbdae33a1772c1a78d5189bb1238de3183dc 100644 --- a/composer.lock +++ b/composer.lock @@ -492,16 +492,16 @@ }, { "name": "doctrine/dbal", - "version": "3.7.3", + "version": "3.8.0", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "ce594cbc39a4866c544f1a970d285ff0548221ad" + "reference": "d244f2e6e6bf32bff5174e6729b57214923ecec9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/ce594cbc39a4866c544f1a970d285ff0548221ad", - "reference": "ce594cbc39a4866c544f1a970d285ff0548221ad", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/d244f2e6e6bf32bff5174e6729b57214923ecec9", + "reference": "d244f2e6e6bf32bff5174e6729b57214923ecec9", "shasum": "" }, "require": { @@ -585,7 +585,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.7.3" + "source": "https://github.com/doctrine/dbal/tree/3.8.0" }, "funding": [ { @@ -601,7 +601,7 @@ "type": "tidelift" } ], - "time": "2024-01-21T07:53:09+00:00" + "time": "2024-01-25T21:44:02+00:00" }, { "name": "doctrine/deprecations", @@ -1084,16 +1084,16 @@ }, { "name": "doctrine/orm", - "version": "2.17.3", + "version": "2.17.4", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "398ab0547aaf90bdb352b560a94c24f44ff00670" + "reference": "ccfc97c32f63aaa0988ac6aa42e71c5590bb794d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/398ab0547aaf90bdb352b560a94c24f44ff00670", - "reference": "398ab0547aaf90bdb352b560a94c24f44ff00670", + "url": "https://api.github.com/repos/doctrine/orm/zipball/ccfc97c32f63aaa0988ac6aa42e71c5590bb794d", + "reference": "ccfc97c32f63aaa0988ac6aa42e71c5590bb794d", "shasum": "" }, "require": { @@ -1179,9 +1179,9 @@ ], "support": { "issues": "https://github.com/doctrine/orm/issues", - "source": "https://github.com/doctrine/orm/tree/2.17.3" + "source": "https://github.com/doctrine/orm/tree/2.17.4" }, - "time": "2024-01-16T21:32:04+00:00" + "time": "2024-01-26T19:41:16+00:00" }, { "name": "doctrine/persistence", @@ -5413,16 +5413,16 @@ }, { "name": "webonyx/graphql-php", - "version": "v15.9.0", + "version": "v15.9.1", "source": { "type": "git", "url": "https://github.com/webonyx/graphql-php.git", - "reference": "84a9e2ccd06c8d643bc1e3cf9cf0076cbfa3dc36" + "reference": "d6c965ecbd78cd5260ebc083978562f8c9409d63" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webonyx/graphql-php/zipball/84a9e2ccd06c8d643bc1e3cf9cf0076cbfa3dc36", - "reference": "84a9e2ccd06c8d643bc1e3cf9cf0076cbfa3dc36", + "url": "https://api.github.com/repos/webonyx/graphql-php/zipball/d6c965ecbd78cd5260ebc083978562f8c9409d63", + "reference": "d6c965ecbd78cd5260ebc083978562f8c9409d63", "shasum": "" }, "require": { @@ -5440,7 +5440,7 @@ "nyholm/psr7": "^1.5", "phpbench/phpbench": "^1.2", "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "1.10.56", + "phpstan/phpstan": "1.10.57", "phpstan/phpstan-phpunit": "1.3.15", "phpstan/phpstan-strict-rules": "1.5.2", "phpunit/phpunit": "^9.5 || ^10", @@ -5475,7 +5475,7 @@ ], "support": { "issues": "https://github.com/webonyx/graphql-php/issues", - "source": "https://github.com/webonyx/graphql-php/tree/v15.9.0" + "source": "https://github.com/webonyx/graphql-php/tree/v15.9.1" }, "funding": [ { @@ -5483,7 +5483,7 @@ "type": "open_collective" } ], - "time": "2024-01-21T09:37:43+00:00" + "time": "2024-01-25T09:10:40+00:00" } ], "packages-dev": [ diff --git a/src/Command/TestHttpResponders.php b/src/Command/TestHttpResponders.php index 946537d9301d1db408a2514937a063485fa11f1b..750760256359e5184e9108388f4bcfa03e9e043d 100644 --- a/src/Command/TestHttpResponders.php +++ b/src/Command/TestHttpResponders.php @@ -13,6 +13,7 @@ use Distantmagic\Resonance\HttpResponderAggregate; use Distantmagic\Resonance\HttpResponderInterface; use Distantmagic\Resonance\InspectableSwooleResponse; use Distantmagic\Resonance\JsonSchemaValidator; +use Distantmagic\Resonance\SwooleCoroutineHelper; use Distantmagic\Resonance\TestableHttpResponseCollection; use Ds\Map; use RuntimeException; @@ -20,8 +21,6 @@ use Swoole\Http\Request; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; -use function Swoole\Coroutine\run; - #[ConsoleCommand( name: 'test:http-responders', description: 'Test HTTP responders' @@ -52,27 +51,19 @@ final class TestHttpResponders extends Command ->get($testableHttpResponse) ; - /** - * @var bool - */ - $coroutineResult = run(function () use ( - &$isValid, + $isValid = $isValid and SwooleCoroutineHelper::mustRun(function () use ( $output, $httpResponder, $testableHttpResponse, $potentialResponses - ) { - $isValid = $isValid and $this->testResponses( + ): bool { + return $this->testResponses( $output, $httpResponder, $testableHttpResponse, $potentialResponses, ); }); - - if (!$coroutineResult) { - throw new RuntimeException('Unable to start coroutine loop'); - } } } @@ -103,7 +94,7 @@ final class TestHttpResponders extends Command if (!$respondsWith) { throw new RuntimeException(sprintf( - 'Unexpected response status code: %d', + 'Unhandled response status code: %d', $response->mockStatus, )); } diff --git a/src/CoroutineCommand.php b/src/CoroutineCommand.php index 21f7249ec374577cb6637edc0e96921b091bfcdc..3c29c62a769a0f8977f7cc18cd1bad3cf7b8a1d9 100644 --- a/src/CoroutineCommand.php +++ b/src/CoroutineCommand.php @@ -7,9 +7,6 @@ namespace Distantmagic\Resonance; use Symfony\Component\Console\Command\Command as SymfonyCommand; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; -use Throwable; - -use function Swoole\Coroutine\run; abstract class CoroutineCommand extends SymfonyCommand { @@ -32,32 +29,8 @@ abstract class CoroutineCommand extends SymfonyCommand 'log_level' => $this->swooleConfiguration->logLevel, ]); - /** - * @var null|Throwable - */ - $exception = null; - - $result = 0; - - /** - * @var bool - */ - $coroutineResult = run(function () use (&$exception, $input, $output, &$result) { - try { - $result = $this->executeInCoroutine($input, $output); - } catch (Throwable $throwable) { - $exception = $throwable; - } + return SwooleCoroutineHelper::mustRun(function () use ($input, $output): int { + return $this->executeInCoroutine($input, $output); }); - - if ($exception) { - throw $exception; - } - - if (!$coroutineResult) { - return Command::FAILURE; - } - - return $result; } } diff --git a/src/CronJobRunner.php b/src/CronJobRunner.php index 501ed80f7bab512c80db649c22522a080fa652ba..fdf776eb70627afd1179d917c8acb49650b874d3 100644 --- a/src/CronJobRunner.php +++ b/src/CronJobRunner.php @@ -6,9 +6,6 @@ namespace Distantmagic\Resonance; use Distantmagic\Resonance\Attribute\Singleton; use Psr\Log\LoggerInterface; -use RuntimeException; - -use function Swoole\Coroutine\go; #[Singleton] readonly class CronJobRunner @@ -17,13 +14,9 @@ readonly class CronJobRunner public function runCronJob(CronRegisteredJob $cronRegisteredJob): void { - $cid = go(function () use ($cronRegisteredJob) { + SwooleCoroutineHelper::mustGo(function () use ($cronRegisteredJob) { $this->logger->info(sprintf('cron_job_start(%s)', $cronRegisteredJob->name)); $cronRegisteredJob->cronJob->onCronTick(); }); - - if (!is_int($cid)) { - throw new RuntimeException('Unable to start CRON job: '.$cronRegisteredJob->name); - } } } diff --git a/src/DatabaseConnectionPoolConfiguration.php b/src/DatabaseConnectionPoolConfiguration.php index 91a5374c556c681a3b2acffb0be5941c96e37051..2da56a894f5d2e5cc6d29e560164192173335f1b 100644 --- a/src/DatabaseConnectionPoolConfiguration.php +++ b/src/DatabaseConnectionPoolConfiguration.php @@ -9,8 +9,11 @@ use SensitiveParameter; readonly class DatabaseConnectionPoolConfiguration { /** - * @param non-empty-string $host - * @param non-empty-string $username + * @psalm-taint-source file $unixSocket + * + * @param non-empty-string $host + * @param null|non-empty-string $unixSocket + * @param non-empty-string $username */ public function __construct( #[SensitiveParameter] diff --git a/src/DependencyInjectionContainer.php b/src/DependencyInjectionContainer.php index 566c4d2567c68534f1ba5e8f178892e2c17f4d75..d33a58000535249c24d2108d64f4ae1118b63622 100644 --- a/src/DependencyInjectionContainer.php +++ b/src/DependencyInjectionContainer.php @@ -14,9 +14,6 @@ use ReflectionClass; use ReflectionFunction; use ReflectionFunctionAbstract; use Swoole\Event; -use Throwable; - -use function Swoole\Coroutine\run; readonly class DependencyInjectionContainer { @@ -67,40 +64,15 @@ readonly class DependencyInjectionContainer */ public function call(Closure $function): mixed { - /** - * Bringing this reference out of the coroutine event loops allows the - * console component to catch that exception and format it. - * - * @var null|Throwable - */ - $exception = null; - /** * @var null|array<string,mixed> */ - $parameters = null; - - /** - * @var bool $coroutineResult - */ - $coroutineResult = run(function () use (&$exception, $function, &$parameters) { - try { - $reflectionFunction = new ReflectionFunction($function); + $parameters = SwooleCoroutineHelper::mustRun(function () use ($function) { + $reflectionFunction = new ReflectionFunction($function); - $parameters = $this->makeParameters($reflectionFunction, new DependencyStack()); - } catch (Throwable $throwable) { - $exception = $throwable; - } + return $this->makeParameters($reflectionFunction, new DependencyStack()); }); - if ($exception) { - throw $exception; - } - - if (!$coroutineResult) { - throw new DependencyInjectionContainerException('Unable to start event loop'); - } - if (!is_array($parameters)) { throw new DependencyInjectionContainerException('Unable to build function parameters'); } @@ -121,40 +93,15 @@ readonly class DependencyInjectionContainer */ public function make(string $className): object { - /** - * @var null|Throwable - */ - $exception = null; - - /** - * @var null|TSingleton - */ - $ret = null; - - /** - * @var bool $coroutineResult - */ - $coroutineResult = run(function () use ($className, &$exception, &$ret) { + $ret = SwooleCoroutineHelper::mustRun(function () use ($className): object { $stack = new DependencyStack(); - try { - if ($this->dependencyProviders->hasKey($className)) { - $ret = $this->makeSingleton($className, $stack); - } else { - $ret = $this->makeClass($className, $stack); - } - } catch (Throwable $throwable) { - $exception = $throwable; + if ($this->dependencyProviders->hasKey($className)) { + return $this->makeSingleton($className, $stack); } - }); - - if ($exception) { - throw $exception; - } - if (!$coroutineResult) { - throw new DependencyInjectionContainerException('Unable to start event loop'); - } + return $this->makeClass($className, $stack); + }); return $this->assertClass($className, $ret); } diff --git a/src/DoctrineConsoleRunner.php b/src/DoctrineConsoleRunner.php index 95d47c2a0764759cf7906073b135650bd085a804..7540251a5053d1213b456cf253ee76d4d53ff128 100644 --- a/src/DoctrineConsoleRunner.php +++ b/src/DoctrineConsoleRunner.php @@ -8,8 +8,6 @@ use Doctrine\ORM\Tools\Console\ConsoleRunner; use Swoole\Runtime; use Symfony\Component\Console\Application; -use function Swoole\Coroutine\run; - final readonly class DoctrineConsoleRunner { public static function run(DependencyInjectionContainer $container): never @@ -24,14 +22,11 @@ final readonly class DoctrineConsoleRunner ConsoleRunner::addCommands($cli, $entityManagerProvider); - /** - * @var bool - */ - $coroutineResult = run(static function () use ($cli) { - $cli->run(); + $errorCode = SwooleCoroutineHelper::mustRun(static function () use ($cli): int { + return $cli->run(); }); - exit((int) !$coroutineResult); + exit($errorCode); }); } diff --git a/src/HttpRequestLanguageDetector.php b/src/HttpRequestLanguageDetector.php index 2bdb713f90596875db12bac6626e9aa5a4aead03..d6cd8caa68aac7d560753abcfe17fae13afbb902 100644 --- a/src/HttpRequestLanguageDetector.php +++ b/src/HttpRequestLanguageDetector.php @@ -51,7 +51,7 @@ final class HttpRequestLanguageDetector foreach ($acceptHeader->sorted as $language) { $primaryLanguage = $this->extractPrimaryLanguageFromString($language); - if ($primaryLanguage) { + if (is_string($primaryLanguage)) { return $primaryLanguage; } } diff --git a/src/HttpResponder/GraphQL.php b/src/HttpResponder/GraphQL.php index 42d36b48d38c617196e1b866db58678ead8c2522..5fcc1c4f0371b406e5056de4bdbaaaa3341f69bc 100644 --- a/src/HttpResponder/GraphQL.php +++ b/src/HttpResponder/GraphQL.php @@ -29,12 +29,9 @@ final readonly class GraphQL extends HttpResponder public function respond(Request $request, Response $response): HttpInterceptableInterface|HttpResponderInterface { - /** - * @var false|string $requestContent - */ $requestContent = $request->getContent(); - if (empty($requestContent)) { + if (false === $requestContent) { return $this->badRequest; } diff --git a/src/InputValidatedData/FrontMatter.php b/src/InputValidatedData/FrontMatter.php index 1e7bb74ad865ecc71b63d69a31368e6267716c99..ca977328fa3080eb46628430e28e1639d5564080 100644 --- a/src/InputValidatedData/FrontMatter.php +++ b/src/InputValidatedData/FrontMatter.php @@ -12,7 +12,12 @@ readonly class FrontMatter extends InputValidatedData { /** * @param array<FrontMatterCollectionReference> $collections + * @param non-empty-string $description + * @param non-empty-string $layout + * @param null|non-empty-string $next + * @param null|non-empty-string $parent * @param array<string> $registerStylesheets + * @param non-empty-string $title */ public function __construct( public array $collections, diff --git a/src/InputValidator/FrontMatterValidator.php b/src/InputValidator/FrontMatterValidator.php index 1206614b29508e2e7eec87d125166344c52e4230..0737d64469f3c3a82353c2f96ea05c973d30cba9 100644 --- a/src/InputValidator/FrontMatterValidator.php +++ b/src/InputValidator/FrontMatterValidator.php @@ -11,6 +11,7 @@ use Distantmagic\Resonance\InputValidator; use Distantmagic\Resonance\JsonSchema; use Distantmagic\Resonance\StaticPageContentType; use Generator; +use RuntimeException; /** * @extends InputValidator<FrontMatter, object{ @@ -32,16 +33,28 @@ readonly class FrontMatterValidator extends InputValidator { $collections = iterator_to_array($this->normalizeDataCollections($data->collections)); + $description = trim($data->description); + + if (empty($description)) { + throw new RuntimeException('Description cannot be empty'); + } + + $title = trim($data->title); + + if (empty($title)) { + throw new RuntimeException('Title cannot be empty'); + } + return new FrontMatter( collections: $collections, contentType: StaticPageContentType::from($data->content_type), - description: trim($data->description), + description: $description, isDraft: $data->draft, layout: $data->layout, next: $data->next ?? null, parent: $data->parent ?? null, registerStylesheets: $data->register_stylesheets, - title: trim($data->title), + title: $title, ); } diff --git a/src/LlamaCppClient.php b/src/LlamaCppClient.php index 163c830225a9477ad57212228d986263f3bc7411..06c7ba225eb2b666ad8040719debea16db4ba783 100644 --- a/src/LlamaCppClient.php +++ b/src/LlamaCppClient.php @@ -143,7 +143,7 @@ readonly class LlamaCppClient 'Content-Type: application/json', ]; - if ($this->llamaCppConfiguration->apiKey) { + if (is_string($this->llamaCppConfiguration->apiKey)) { $headers[] = sprintf('Authorization: Bearer %s', $this->llamaCppConfiguration->apiKey); } @@ -162,7 +162,7 @@ readonly class LlamaCppClient $channel = new Channel(1); $requestData = json_encode($request); - $cid = go(function () use ($channel, $path, $requestData) { + SwooleCoroutineHelper::mustGo(function () use ($channel, $path, $requestData) { $curlHandle = $this->createCurlHandle(); try { @@ -177,7 +177,7 @@ readonly class LlamaCppClient return 0; }); - if (!curl_exec($curlHandle)) { + if (false === curl_exec($curlHandle)) { $curlErrno = curl_errno($curlHandle); if (CURLE_WRITE_ERROR !== $curlErrno) { @@ -193,10 +193,6 @@ readonly class LlamaCppClient } }); - if (!is_int($cid)) { - throw new RuntimeException('Unable to start a coroutine'); - } - /** * @var SwooleChannelIterator<string> */ diff --git a/src/OAuth2AccessTokenRepository.php b/src/OAuth2AccessTokenRepository.php index 6f5eeffec195dcbb8608fd20346f8176e6becdd9..c0e2a682f871238b662e3243fdbafddfb791afa6 100644 --- a/src/OAuth2AccessTokenRepository.php +++ b/src/OAuth2AccessTokenRepository.php @@ -86,7 +86,7 @@ readonly class OAuth2AccessTokenRepository implements AccessTokenRepositoryInter $userId = $accessTokenEntity->getUserIdentifier(); $user = null; - if ($userId) { + if (!is_null($userId)) { $user = $this->entityRepository->findUser( $entityManager, $userId, diff --git a/src/OAuth2AuthCodeRepository.php b/src/OAuth2AuthCodeRepository.php index 6de186dc7f9da4ef7cb610c003fbb0894a7bcdb5..62d28945c1cbabf81800fca43d62b1fa11752a49 100644 --- a/src/OAuth2AuthCodeRepository.php +++ b/src/OAuth2AuthCodeRepository.php @@ -62,7 +62,7 @@ readonly class OAuth2AuthCodeRepository implements AuthCodeRepositoryInterface $userId = $authCodeEntity->getUserIdentifier(); $user = null; - if ($userId) { + if (!is_null($userId)) { $user = $this->entityRepository->findUser( $entityManager, $userId, diff --git a/src/OAuth2ClientRepository.php b/src/OAuth2ClientRepository.php index 72ec76e474c1be16ab51fa19ab633c6d2400704a..b8ce6eefbf1ad7bc1422f872d8a7b715ac4b35ca 100644 --- a/src/OAuth2ClientRepository.php +++ b/src/OAuth2ClientRepository.php @@ -60,7 +60,7 @@ readonly class OAuth2ClientRepository implements ClientRepositoryInterface } if (($client instanceof OAuth2SecretAwareClient)) { - if (!$clientSecret) { + if (is_null($clientSecret)) { return $client->isSecretRequired(); } @@ -70,7 +70,7 @@ readonly class OAuth2ClientRepository implements ClientRepositoryInterface } if (($client instanceof OAuth2GrantAwareClient)) { - if (!$grantType) { + if (is_null($grantType)) { return $client->isGrantTypeRequired(); } diff --git a/src/OpenAPIRouteParameterExtractor/DoctrineEntityRouteParameterExtractor.php b/src/OpenAPIRouteParameterExtractor/DoctrineEntityRouteParameterExtractor.php index 321e3dd13497de4425cafd79d4558ae47a0573b3..3c73fbcc724e51694aea576b371bc8b53c3078cf 100644 --- a/src/OpenAPIRouteParameterExtractor/DoctrineEntityRouteParameterExtractor.php +++ b/src/OpenAPIRouteParameterExtractor/DoctrineEntityRouteParameterExtractor.php @@ -76,7 +76,7 @@ readonly class DoctrineEntityRouteParameterExtractor extends OpenAPIRouteParamet ->getTypeOfField($attribute->lookupField) ; - if (!$parameterFieldType) { + if (is_null($parameterFieldType)) { throw new RuntimeException('Unable do determine Doctrine parameter field type'); } diff --git a/src/OpenAPISchemaComponentsSecuritySchemesOAuth2.php b/src/OpenAPISchemaComponentsSecuritySchemesOAuth2.php index b752595aa843668ddc0df1819c0b12b26e4044dd..c4b3fb591828231ab6c580d85281656b13b0f993 100644 --- a/src/OpenAPISchemaComponentsSecuritySchemesOAuth2.php +++ b/src/OpenAPISchemaComponentsSecuritySchemesOAuth2.php @@ -63,7 +63,7 @@ readonly class OpenAPISchemaComponentsSecuritySchemesOAuth2 implements JsonSeria default => $grantIdentifier, }; - if ($openAPIGrantIdentifier) { + if (is_string($openAPIGrantIdentifier)) { $flows[$openAPIGrantIdentifier] = $serializedFlow; } } diff --git a/src/PHPFileReflectionClassIterator.php b/src/PHPFileReflectionClassIterator.php index 93168a6662968cc06842d715202eef97a76209c9..d444801473e0853e3ea4aafb62bae5b1138abab5 100644 --- a/src/PHPFileReflectionClassIterator.php +++ b/src/PHPFileReflectionClassIterator.php @@ -51,7 +51,7 @@ readonly class PHPFileReflectionClassIterator implements IteratorAggregate { $namespace = $this->readNamespace($file); - if (!$namespace) { + if (is_null($namespace)) { return null; } diff --git a/src/PsrServerRequestConverter.php b/src/PsrServerRequestConverter.php index 4e135015a3523eaab6f4a2a678b825571e19e89d..7426e9398ae791bd810327bc2c6d6e00646feef4 100644 --- a/src/PsrServerRequestConverter.php +++ b/src/PsrServerRequestConverter.php @@ -55,9 +55,6 @@ readonly class PsrServerRequestConverter $serverUppercase[mb_strtoupper((string) $key)] = $value; } - /** - * @var false|string $requestContent - */ $requestContent = $request->getContent(); $serverRequest = $this->serverRequestCreator->fromArrays( @@ -67,7 +64,7 @@ readonly class PsrServerRequestConverter is_array($request->get) ? $request->get : [], is_array($request->post) ? $request->post : [], is_array($request->files) ? $request->files : [], - $requestContent ?: null, + false === $requestContent ? null : $requestContent, ); $this->serverRequests->offsetSet($request, $serverRequest); diff --git a/src/SingletonProvider/ConfigurationFileProvider.php b/src/SingletonProvider/ConfigurationFileProvider.php index d4c10f987020e5a5495893790affeb8ae12827fa..3351ffa97041ac1ec53175327f4434cd29106e20 100644 --- a/src/SingletonProvider/ConfigurationFileProvider.php +++ b/src/SingletonProvider/ConfigurationFileProvider.php @@ -27,7 +27,7 @@ final readonly class ConfigurationFileProvider extends SingletonProvider scanner_mode: INI_SCANNER_TYPED, ); - if (!$iniConfig) { + if (false === $iniConfig) { throw new RuntimeException('Unable to parse configuration file: '.$filename); } diff --git a/src/SingletonProvider/ConfigurationProvider/DatabaseConfigurationProvider.php b/src/SingletonProvider/ConfigurationProvider/DatabaseConfigurationProvider.php index def66fcfe77e3b85f99ee9db5951956b733034ba..b2e277cbd6dd1fbff88d758f00890b18849d2135 100644 --- a/src/SingletonProvider/ConfigurationProvider/DatabaseConfigurationProvider.php +++ b/src/SingletonProvider/ConfigurationProvider/DatabaseConfigurationProvider.php @@ -23,7 +23,7 @@ use Distantmagic\Resonance\SingletonProvider\ConfigurationProvider; * pool_prefill: bool, * pool_size: int, * port: int, - * unix_socket: string, + * unix_socket: null|non-empty-string, * username: non-empty-string, * }> * > diff --git a/src/SingletonProvider/DatabaseConnectionPoolRepositoryProvider.php b/src/SingletonProvider/DatabaseConnectionPoolRepositoryProvider.php index e3ee66a1e5ea92706767bade713984c5102b42b2..9c19340b4780c330db784555db5f6943156ebf15 100644 --- a/src/SingletonProvider/DatabaseConnectionPoolRepositoryProvider.php +++ b/src/SingletonProvider/DatabaseConnectionPoolRepositoryProvider.php @@ -32,12 +32,12 @@ final readonly class DatabaseConnectionPoolRepositoryProvider extends SingletonP foreach ($this->databaseConfiguration->connectionPoolConfiguration as $name => $connectionPoolConfiguration) { $pdoConfig = new PDOConfig(); - if ($connectionPoolConfiguration->host) { + if (is_string($connectionPoolConfiguration->host)) { $pdoConfig->withHost($connectionPoolConfiguration->host); $pdoConfig->withPort($connectionPoolConfiguration->port); } - if ($connectionPoolConfiguration->unixSocket) { + if (is_string($connectionPoolConfiguration->unixSocket)) { $pdoConfig->withUnixSocket($connectionPoolConfiguration->unixSocket); } diff --git a/src/StaticPageForestGenerator.php b/src/StaticPageForestGenerator.php index 3fce6da59a2c213efcab78827903ee18ce401a72..a513fc4527d53d0360c8150acb9a0d883ace2f04 100644 --- a/src/StaticPageForestGenerator.php +++ b/src/StaticPageForestGenerator.php @@ -43,7 +43,7 @@ readonly class StaticPageForestGenerator implements IteratorAggregate $node = new Node($staticPage); $nodes->put($staticPage, $node); - if (empty($staticPage->frontMatter->parent)) { + if (is_null($staticPage->frontMatter->parent)) { $heads->add($node); } } @@ -51,7 +51,7 @@ readonly class StaticPageForestGenerator implements IteratorAggregate foreach ($this->staticPagesCollection as $staticPage) { $parentBasename = $staticPage->frontMatter->parent; - if (!empty($parentBasename)) { + if (!is_null($parentBasename)) { $nodes ->get($this->getStaticPage($parentBasename)) ->addChild($nodes->get($staticPage)) diff --git a/src/SwooleCoroutineHelper.php b/src/SwooleCoroutineHelper.php new file mode 100644 index 0000000000000000000000000000000000000000..47384cf3da7ad100bac011102f8dc1686873961a --- /dev/null +++ b/src/SwooleCoroutineHelper.php @@ -0,0 +1,76 @@ +<?php + +declare(strict_types=1); + +namespace Distantmagic\Resonance; + +use RuntimeException; +use Throwable; + +use function Swoole\Coroutine\go; +use function Swoole\Coroutine\run; + +final readonly class SwooleCoroutineHelper +{ + /** + * @param callable() $callback + */ + public static function mustGo(callable $callback): void + { + /** + * @var false|int $cid + */ + $cid = go($callback); + + if (!is_int($cid)) { + throw new RuntimeException('Unable to start a coroutine'); + } + } + + /** + * @template TReturn + * + * @param callable():TReturn $callback + * + * @return TReturn + */ + public static function mustRun(callable $callback): mixed + { + /** + * @var null|TReturn $ret + */ + $ret = null; + + /** + * Bringing this reference out of the coroutine event loops allows the + * console component to catch that exception and format it. + * + * @var null|Throwable + */ + $exception = null; + + /** + * @var bool + */ + $coroutineResult = run(static function () use ($callback, &$exception, &$ret) { + try { + $ret = $callback(); + } catch (Throwable $throwable) { + $exception = $throwable; + } + }); + + if (!$coroutineResult) { + throw new RuntimeException('Unable to start coroutine loop'); + } + + if ($exception) { + throw $exception; + } + + /** + * @var TReturn might also be null, so no way to check for that + */ + return $ret; + } +} diff --git a/src/WebSocketServerController.php b/src/WebSocketServerController.php index d3e770e4e29855321726ad437ae254df86d18e9e..aac55c37f7a076160fec704d4eafc7ffdea4b2d2 100644 --- a/src/WebSocketServerController.php +++ b/src/WebSocketServerController.php @@ -119,9 +119,6 @@ final readonly class WebSocketServerController implements ServerPipeMessageHandl return; } - /** - * @var int $fd - */ $fd = $request->fd; $this->protocolControllers->put($fd, $controllerResolution->controller); @@ -167,12 +164,7 @@ final readonly class WebSocketServerController implements ServerPipeMessageHandl { $this->logger->error(self::MESSAGE_UNEXPECTED_ONOPEN); - /** - * @var int $fd - */ - $fd = $request->fd; - - $server->disconnect($fd, SWOOLE_WEBSOCKET_CLOSE_SERVER_ERROR); + $server->disconnect($request->fd, SWOOLE_WEBSOCKET_CLOSE_SERVER_ERROR); } private function isSecWebSocketKeyValid(string $secWebSocketKey): bool diff --git a/tools/php-cs-fixer/composer.lock b/tools/php-cs-fixer/composer.lock index 26f3740393021387df26fa1e53bc0527bc9dabda..d78b8eaf84a8712ddce5dbbfc903339982c97374 100644 --- a/tools/php-cs-fixer/composer.lock +++ b/tools/php-cs-fixer/composer.lock @@ -8,16 +8,16 @@ "packages": [ { "name": "composer/pcre", - "version": "3.1.0", + "version": "3.1.1", "source": { "type": "git", "url": "https://github.com/composer/pcre.git", - "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2" + "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", - "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", + "url": "https://api.github.com/repos/composer/pcre/zipball/00104306927c7a0919b4ced2aaa6782c1e61a3c9", + "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9", "shasum": "" }, "require": { @@ -59,7 +59,7 @@ ], "support": { "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/3.1.0" + "source": "https://github.com/composer/pcre/tree/3.1.1" }, "funding": [ { @@ -75,20 +75,20 @@ "type": "tidelift" } ], - "time": "2022-11-17T09:50:14+00:00" + "time": "2023-10-11T07:11:09+00:00" }, { "name": "composer/semver", - "version": "3.3.2", + "version": "3.4.0", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9" + "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/3953f23262f2bff1919fc82183ad9acb13ff62c9", - "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9", + "url": "https://api.github.com/repos/composer/semver/zipball/35e8d0af4486141bc745f23a29cc2091eb624a32", + "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32", "shasum": "" }, "require": { @@ -138,9 +138,9 @@ "versioning" ], "support": { - "irc": "irc://irc.freenode.org/composer", + "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.3.2" + "source": "https://github.com/composer/semver/tree/3.4.0" }, "funding": [ { @@ -156,7 +156,7 @@ "type": "tidelift" } ], - "time": "2022-04-01T19:23:25+00:00" + "time": "2023-08-31T09:50:34+00:00" }, { "name": "composer/xdebug-handler", @@ -224,208 +224,50 @@ ], "time": "2022-02-25T21:32:43+00:00" }, - { - "name": "doctrine/annotations", - "version": "2.0.1", - "source": { - "type": "git", - "url": "https://github.com/doctrine/annotations.git", - "reference": "e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f", - "reference": "e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^2 || ^3", - "ext-tokenizer": "*", - "php": "^7.2 || ^8.0", - "psr/cache": "^1 || ^2 || ^3" - }, - "require-dev": { - "doctrine/cache": "^2.0", - "doctrine/coding-standard": "^10", - "phpstan/phpstan": "^1.8.0", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "symfony/cache": "^5.4 || ^6", - "vimeo/psalm": "^4.10" - }, - "suggest": { - "php": "PHP 8.0 or higher comes with attributes, a native replacement for annotations" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "Docblock Annotations Parser", - "homepage": "https://www.doctrine-project.org/projects/annotations.html", - "keywords": [ - "annotations", - "docblock", - "parser" - ], - "support": { - "issues": "https://github.com/doctrine/annotations/issues", - "source": "https://github.com/doctrine/annotations/tree/2.0.1" - }, - "time": "2023-02-02T22:02:53+00:00" - }, - { - "name": "doctrine/lexer", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "84a527db05647743d50373e0ec53a152f2cde568" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/84a527db05647743d50373e0ec53a152f2cde568", - "reference": "84a527db05647743d50373e0ec53a152f2cde568", - "shasum": "" - }, - "require": { - "php": "^8.1" - }, - "require-dev": { - "doctrine/coding-standard": "^10", - "phpstan/phpstan": "^1.9", - "phpunit/phpunit": "^9.5", - "psalm/plugin-phpunit": "^0.18.3", - "vimeo/psalm": "^5.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", - "homepage": "https://www.doctrine-project.org/projects/lexer.html", - "keywords": [ - "annotations", - "docblock", - "lexer", - "parser", - "php" - ], - "support": { - "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/3.0.0" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", - "type": "tidelift" - } - ], - "time": "2022-12-15T16:57:16+00:00" - }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.21.1", + "version": "v3.48.0", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "229b55b3eae4729a8e2a321441ba40fcb3720b86" + "reference": "a92472c6fb66349de25211f31c77eceae3df024e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/229b55b3eae4729a8e2a321441ba40fcb3720b86", - "reference": "229b55b3eae4729a8e2a321441ba40fcb3720b86", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/a92472c6fb66349de25211f31c77eceae3df024e", + "reference": "a92472c6fb66349de25211f31c77eceae3df024e", "shasum": "" }, "require": { - "composer/semver": "^3.3", + "composer/semver": "^3.4", "composer/xdebug-handler": "^3.0.3", - "doctrine/annotations": "^2", - "doctrine/lexer": "^2 || ^3", + "ext-filter": "*", "ext-json": "*", "ext-tokenizer": "*", - "php": "^8.0.1", + "php": "^7.4 || ^8.0", "sebastian/diff": "^4.0 || ^5.0", - "symfony/console": "^5.4 || ^6.0", - "symfony/event-dispatcher": "^5.4 || ^6.0", - "symfony/filesystem": "^5.4 || ^6.0", - "symfony/finder": "^5.4 || ^6.0", - "symfony/options-resolver": "^5.4 || ^6.0", - "symfony/polyfill-mbstring": "^1.27", - "symfony/polyfill-php80": "^1.27", - "symfony/polyfill-php81": "^1.27", - "symfony/process": "^5.4 || ^6.0", - "symfony/stopwatch": "^5.4 || ^6.0" + "symfony/console": "^5.4 || ^6.0 || ^7.0", + "symfony/event-dispatcher": "^5.4 || ^6.0 || ^7.0", + "symfony/filesystem": "^5.4 || ^6.0 || ^7.0", + "symfony/finder": "^5.4 || ^6.0 || ^7.0", + "symfony/options-resolver": "^5.4 || ^6.0 || ^7.0", + "symfony/polyfill-mbstring": "^1.28", + "symfony/polyfill-php80": "^1.28", + "symfony/polyfill-php81": "^1.28", + "symfony/process": "^5.4 || ^6.0 || ^7.0", + "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0" }, "require-dev": { + "facile-it/paraunit": "^1.3 || ^2.0", "justinrainbow/json-schema": "^5.2", - "keradus/cli-executor": "^2.0", + "keradus/cli-executor": "^2.1", "mikey179/vfsstream": "^1.6.11", - "php-coveralls/php-coveralls": "^2.5.3", + "php-coveralls/php-coveralls": "^2.7", "php-cs-fixer/accessible-object": "^1.1", - "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.2", - "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.2.1", - "phpspec/prophecy": "^1.16", - "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.5", - "phpunitgoodpractices/polyfill": "^1.6", - "phpunitgoodpractices/traits": "^1.9.2", - "symfony/phpunit-bridge": "^6.2.3", - "symfony/yaml": "^5.4 || ^6.0" + "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.4", + "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.4", + "phpunit/phpunit": "^9.6 || ^10.5.5", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0" }, "suggest": { "ext-dom": "For handling output formats in XML", @@ -463,7 +305,7 @@ ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.21.1" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.48.0" }, "funding": [ { @@ -471,56 +313,7 @@ "type": "github" } ], - "time": "2023-07-05T21:50:25+00:00" - }, - { - "name": "psr/cache", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/cache.git", - "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", - "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", - "shasum": "" - }, - "require": { - "php": ">=8.0.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Cache\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for caching libraries", - "keywords": [ - "cache", - "psr", - "psr-6" - ], - "support": { - "source": "https://github.com/php-fig/cache/tree/3.0.0" - }, - "time": "2021-02-03T23:26:27+00:00" + "time": "2024-01-19T21:44:39+00:00" }, { "name": "psr/container", @@ -677,16 +470,16 @@ }, { "name": "sebastian/diff", - "version": "5.0.3", + "version": "5.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "912dc2fbe3e3c1e7873313cc801b100b6c68c87b" + "reference": "fbf413a49e54f6b9b17e12d900ac7f6101591b7f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/912dc2fbe3e3c1e7873313cc801b100b6c68c87b", - "reference": "912dc2fbe3e3c1e7873313cc801b100b6c68c87b", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/fbf413a49e54f6b9b17e12d900ac7f6101591b7f", + "reference": "fbf413a49e54f6b9b17e12d900ac7f6101591b7f", "shasum": "" }, "require": { @@ -699,7 +492,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "5.0-dev" + "dev-main": "5.1-dev" } }, "autoload": { @@ -732,7 +525,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", "security": "https://github.com/sebastianbergmann/diff/security/policy", - "source": "https://github.com/sebastianbergmann/diff/tree/5.0.3" + "source": "https://github.com/sebastianbergmann/diff/tree/5.1.0" }, "funding": [ { @@ -740,47 +533,50 @@ "type": "github" } ], - "time": "2023-05-01T07:48:21+00:00" + "time": "2023-12-22T10:55:06+00:00" }, { "name": "symfony/console", - "version": "v6.3.0", + "version": "v7.0.2", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "8788808b07cf0bdd6e4b7fdd23d8ddb1470c83b7" + "reference": "f8587c4cdc5acad67af71c37db34ef03af91e59c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/8788808b07cf0bdd6e4b7fdd23d8ddb1470c83b7", - "reference": "8788808b07cf0bdd6e4b7fdd23d8ddb1470c83b7", + "url": "https://api.github.com/repos/symfony/console/zipball/f8587c4cdc5acad67af71c37db34ef03af91e59c", + "reference": "f8587c4cdc5acad67af71c37db34ef03af91e59c", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", + "php": ">=8.2", "symfony/polyfill-mbstring": "~1.0", "symfony/service-contracts": "^2.5|^3", - "symfony/string": "^5.4|^6.0" + "symfony/string": "^6.4|^7.0" }, "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" + "symfony/dependency-injection": "<6.4", + "symfony/dotenv": "<6.4", + "symfony/event-dispatcher": "<6.4", + "symfony/lock": "<6.4", + "symfony/process": "<6.4" }, "provide": { "psr/log-implementation": "1.0|2.0|3.0" }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" + "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" }, "type": "library", "autoload": { @@ -814,7 +610,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.3.0" + "source": "https://github.com/symfony/console/tree/v7.0.2" }, "funding": [ { @@ -830,11 +626,11 @@ "type": "tidelift" } ], - "time": "2023-05-29T12:49:39+00:00" + "time": "2023-12-10T16:54:46+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.3.0", + "version": "v3.4.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", @@ -881,7 +677,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.3.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.4.0" }, "funding": [ { @@ -901,24 +697,24 @@ }, { "name": "symfony/event-dispatcher", - "version": "v6.3.0", + "version": "v7.0.2", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "3af8ac1a3f98f6dbc55e10ae59c9e44bfc38dfaa" + "reference": "098b62ae81fdd6cbf941f355059f617db28f4f9a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/3af8ac1a3f98f6dbc55e10ae59c9e44bfc38dfaa", - "reference": "3af8ac1a3f98f6dbc55e10ae59c9e44bfc38dfaa", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/098b62ae81fdd6cbf941f355059f617db28f4f9a", + "reference": "098b62ae81fdd6cbf941f355059f617db28f4f9a", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/event-dispatcher-contracts": "^2.5|^3" }, "conflict": { - "symfony/dependency-injection": "<5.4", + "symfony/dependency-injection": "<6.4", "symfony/service-contracts": "<2.5" }, "provide": { @@ -927,13 +723,13 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", + "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/service-contracts": "^2.5|^3", - "symfony/stopwatch": "^5.4|^6.0" + "symfony/stopwatch": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -961,7 +757,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/v6.3.0" + "source": "https://github.com/symfony/event-dispatcher/tree/v7.0.2" }, "funding": [ { @@ -977,11 +773,11 @@ "type": "tidelift" } ], - "time": "2023-04-21T14:41:17+00:00" + "time": "2023-12-27T22:24:19+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.3.0", + "version": "v3.4.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", @@ -1037,7 +833,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.3.0" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.4.0" }, "funding": [ { @@ -1057,20 +853,20 @@ }, { "name": "symfony/filesystem", - "version": "v6.3.1", + "version": "v7.0.0", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "edd36776956f2a6fcf577edb5b05eb0e3bdc52ae" + "reference": "7da8ea2362a283771478c5f7729cfcb43a76b8b7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/edd36776956f2a6fcf577edb5b05eb0e3bdc52ae", - "reference": "edd36776956f2a6fcf577edb5b05eb0e3bdc52ae", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/7da8ea2362a283771478c5f7729cfcb43a76b8b7", + "reference": "7da8ea2362a283771478c5f7729cfcb43a76b8b7", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.8" }, @@ -1100,7 +896,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v6.3.1" + "source": "https://github.com/symfony/filesystem/tree/v7.0.0" }, "funding": [ { @@ -1116,27 +912,27 @@ "type": "tidelift" } ], - "time": "2023-06-01T08:30:39+00:00" + "time": "2023-07-27T06:33:22+00:00" }, { "name": "symfony/finder", - "version": "v6.3.0", + "version": "v7.0.0", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "d9b01ba073c44cef617c7907ce2419f8d00d75e2" + "reference": "6e5688d69f7cfc4ed4a511e96007e06c2d34ce56" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/d9b01ba073c44cef617c7907ce2419f8d00d75e2", - "reference": "d9b01ba073c44cef617c7907ce2419f8d00d75e2", + "url": "https://api.github.com/repos/symfony/finder/zipball/6e5688d69f7cfc4ed4a511e96007e06c2d34ce56", + "reference": "6e5688d69f7cfc4ed4a511e96007e06c2d34ce56", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "require-dev": { - "symfony/filesystem": "^6.0" + "symfony/filesystem": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -1164,7 +960,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v6.3.0" + "source": "https://github.com/symfony/finder/tree/v7.0.0" }, "funding": [ { @@ -1180,24 +976,24 @@ "type": "tidelift" } ], - "time": "2023-04-02T01:25:41+00:00" + "time": "2023-10-31T17:59:56+00:00" }, { "name": "symfony/options-resolver", - "version": "v6.3.0", + "version": "v7.0.0", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "a10f19f5198d589d5c33333cffe98dc9820332dd" + "reference": "700ff4096e346f54cb628ea650767c8130f1001f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/a10f19f5198d589d5c33333cffe98dc9820332dd", - "reference": "a10f19f5198d589d5c33333cffe98dc9820332dd", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/700ff4096e346f54cb628ea650767c8130f1001f", + "reference": "700ff4096e346f54cb628ea650767c8130f1001f", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3" }, "type": "library", @@ -1231,7 +1027,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v6.3.0" + "source": "https://github.com/symfony/options-resolver/tree/v7.0.0" }, "funding": [ { @@ -1247,20 +1043,20 @@ "type": "tidelift" } ], - "time": "2023-05-12T14:21:09+00:00" + "time": "2023-08-08T10:20:21+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "5bbc823adecdae860bb64756d639ecfec17b050a" + "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a", - "reference": "5bbc823adecdae860bb64756d639ecfec17b050a", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", + "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", "shasum": "" }, "require": { @@ -1275,7 +1071,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -1313,7 +1109,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0" }, "funding": [ { @@ -1329,20 +1125,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "511a08c03c1960e08a883f4cffcacd219b758354" + "reference": "875e90aeea2777b6f135677f618529449334a612" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/511a08c03c1960e08a883f4cffcacd219b758354", - "reference": "511a08c03c1960e08a883f4cffcacd219b758354", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/875e90aeea2777b6f135677f618529449334a612", + "reference": "875e90aeea2777b6f135677f618529449334a612", "shasum": "" }, "require": { @@ -1354,7 +1150,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -1394,7 +1190,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.28.0" }, "funding": [ { @@ -1410,20 +1206,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6" + "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6", - "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", + "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", "shasum": "" }, "require": { @@ -1435,7 +1231,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -1478,7 +1274,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.28.0" }, "funding": [ { @@ -1494,20 +1290,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" + "reference": "42292d99c55abe617799667f454222c54c60e229" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534", - "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229", + "reference": "42292d99c55abe617799667f454222c54c60e229", "shasum": "" }, "require": { @@ -1522,7 +1318,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -1561,7 +1357,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0" }, "funding": [ { @@ -1577,20 +1373,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-07-28T09:04:16+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936" + "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", - "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/6caa57379c4aec19c0a12a38b59b26487dcfe4b5", + "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5", "shasum": "" }, "require": { @@ -1599,7 +1395,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -1644,7 +1440,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.28.0" }, "funding": [ { @@ -1660,20 +1456,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-php81", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a" + "reference": "7581cd600fa9fd681b797d00b02f068e2f13263b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/707403074c8ea6e2edaf8794b0157a0bfa52157a", - "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/7581cd600fa9fd681b797d00b02f068e2f13263b", + "reference": "7581cd600fa9fd681b797d00b02f068e2f13263b", "shasum": "" }, "require": { @@ -1682,7 +1478,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -1723,7 +1519,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.28.0" }, "funding": [ { @@ -1739,24 +1535,24 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/process", - "version": "v6.3.0", + "version": "v7.0.2", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "8741e3ed7fe2e91ec099e02446fb86667a0f1628" + "reference": "acd3eb5cb02382c1cb0287ba29b2908cc6ffa83a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/8741e3ed7fe2e91ec099e02446fb86667a0f1628", - "reference": "8741e3ed7fe2e91ec099e02446fb86667a0f1628", + "url": "https://api.github.com/repos/symfony/process/zipball/acd3eb5cb02382c1cb0287ba29b2908cc6ffa83a", + "reference": "acd3eb5cb02382c1cb0287ba29b2908cc6ffa83a", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "type": "library", "autoload": { @@ -1784,7 +1580,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v6.3.0" + "source": "https://github.com/symfony/process/tree/v7.0.2" }, "funding": [ { @@ -1800,25 +1596,25 @@ "type": "tidelift" } ], - "time": "2023-05-19T08:06:44+00:00" + "time": "2023-12-24T09:15:37+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.3.0", + "version": "v3.4.1", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4" + "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/40da9cc13ec349d9e4966ce18b5fbcd724ab10a4", - "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/fe07cbc8d837f60caf7018068e350cc5163681a0", + "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0", "shasum": "" }, "require": { "php": ">=8.1", - "psr/container": "^2.0" + "psr/container": "^1.1|^2.0" }, "conflict": { "ext-psr": "<1.1|>=2" @@ -1866,7 +1662,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.3.0" + "source": "https://github.com/symfony/service-contracts/tree/v3.4.1" }, "funding": [ { @@ -1882,24 +1678,24 @@ "type": "tidelift" } ], - "time": "2023-05-23T14:45:45+00:00" + "time": "2023-12-26T14:02:43+00:00" }, { "name": "symfony/stopwatch", - "version": "v6.3.0", + "version": "v7.0.0", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2" + "reference": "7bbfa3dd564a0ce12eb4acaaa46823c740f9cb7a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2", - "reference": "fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/7bbfa3dd564a0ce12eb4acaaa46823c740f9cb7a", + "reference": "7bbfa3dd564a0ce12eb4acaaa46823c740f9cb7a", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/service-contracts": "^2.5|^3" }, "type": "library", @@ -1928,7 +1724,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v6.3.0" + "source": "https://github.com/symfony/stopwatch/tree/v7.0.0" }, "funding": [ { @@ -1944,24 +1740,24 @@ "type": "tidelift" } ], - "time": "2023-02-16T10:14:28+00:00" + "time": "2023-07-05T13:06:06+00:00" }, { "name": "symfony/string", - "version": "v6.3.0", + "version": "v7.0.2", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "f2e190ee75ff0f5eced645ec0be5c66fac81f51f" + "reference": "cc78f14f91f5e53b42044d0620961c48028ff9f5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/f2e190ee75ff0f5eced645ec0be5c66fac81f51f", - "reference": "f2e190ee75ff0f5eced645ec0be5c66fac81f51f", + "url": "https://api.github.com/repos/symfony/string/zipball/cc78f14f91f5e53b42044d0620961c48028ff9f5", + "reference": "cc78f14f91f5e53b42044d0620961c48028ff9f5", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-intl-grapheme": "~1.0", "symfony/polyfill-intl-normalizer": "~1.0", @@ -1971,11 +1767,11 @@ "symfony/translation-contracts": "<2.5" }, "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/intl": "^6.2", + "symfony/error-handler": "^6.4|^7.0", + "symfony/http-client": "^6.4|^7.0", + "symfony/intl": "^6.4|^7.0", "symfony/translation-contracts": "^2.5|^3.0", - "symfony/var-exporter": "^5.4|^6.0" + "symfony/var-exporter": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -2014,7 +1810,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.3.0" + "source": "https://github.com/symfony/string/tree/v7.0.2" }, "funding": [ { @@ -2030,7 +1826,7 @@ "type": "tidelift" } ], - "time": "2023-03-21T21:06:29+00:00" + "time": "2023-12-10T16:54:46+00:00" } ], "packages-dev": [], diff --git a/tools/psalm/composer.lock b/tools/psalm/composer.lock index 1d8ce1679960bed4969f37c2fed8efc6ce8ef2e5..f14ec1b9c0a8b805167298940e60f867ffaa77bd 100644 --- a/tools/psalm/composer.lock +++ b/tools/psalm/composer.lock @@ -577,16 +577,16 @@ }, { "name": "fidry/cpu-core-counter", - "version": "0.5.1", + "version": "1.0.0", "source": { "type": "git", "url": "https://github.com/theofidry/cpu-core-counter.git", - "reference": "b58e5a3933e541dc286cc91fc4f3898bbc6f1623" + "reference": "85193c0b0cb5c47894b5eaec906e946f054e7077" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/b58e5a3933e541dc286cc91fc4f3898bbc6f1623", - "reference": "b58e5a3933e541dc286cc91fc4f3898bbc6f1623", + "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/85193c0b0cb5c47894b5eaec906e946f054e7077", + "reference": "85193c0b0cb5c47894b5eaec906e946f054e7077", "shasum": "" }, "require": { @@ -594,13 +594,13 @@ }, "require-dev": { "fidry/makefile": "^0.2.0", + "fidry/php-cs-fixer-config": "^1.1.2", "phpstan/extension-installer": "^1.2.0", "phpstan/phpstan": "^1.9.2", "phpstan/phpstan-deprecation-rules": "^1.0.0", "phpstan/phpstan-phpunit": "^1.2.2", "phpstan/phpstan-strict-rules": "^1.4.4", - "phpunit/phpunit": "^9.5.26 || ^8.5.31", - "theofidry/php-cs-fixer-config": "^1.0", + "phpunit/phpunit": "^8.5.31 || ^9.5.26", "webmozarts/strict-phpunit": "^7.5" }, "type": "library", @@ -626,7 +626,7 @@ ], "support": { "issues": "https://github.com/theofidry/cpu-core-counter/issues", - "source": "https://github.com/theofidry/cpu-core-counter/tree/0.5.1" + "source": "https://github.com/theofidry/cpu-core-counter/tree/1.0.0" }, "funding": [ { @@ -634,20 +634,20 @@ "type": "github" } ], - "time": "2022-12-24T12:35:10+00:00" + "time": "2023-09-17T21:38:23+00:00" }, { "name": "netresearch/jsonmapper", - "version": "v4.2.0", + "version": "v4.4.0", "source": { "type": "git", "url": "https://github.com/cweiske/jsonmapper.git", - "reference": "f60565f8c0566a31acf06884cdaa591867ecc956" + "reference": "18133a2d8c24e10e58e02b700308ed3a4a60c97f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/f60565f8c0566a31acf06884cdaa591867ecc956", - "reference": "f60565f8c0566a31acf06884cdaa591867ecc956", + "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/18133a2d8c24e10e58e02b700308ed3a4a60c97f", + "reference": "18133a2d8c24e10e58e02b700308ed3a4a60c97f", "shasum": "" }, "require": { @@ -658,7 +658,7 @@ "php": ">=7.1" }, "require-dev": { - "phpunit/phpunit": "~7.5 || ~8.0 || ~9.0", + "phpunit/phpunit": "~7.5 || ~8.0 || ~9.0 || ~10.0", "squizlabs/php_codesniffer": "~3.5" }, "type": "library", @@ -683,9 +683,9 @@ "support": { "email": "cweiske@cweiske.de", "issues": "https://github.com/cweiske/jsonmapper/issues", - "source": "https://github.com/cweiske/jsonmapper/tree/v4.2.0" + "source": "https://github.com/cweiske/jsonmapper/tree/v4.4.0" }, - "time": "2023-04-09T17:37:40+00:00" + "time": "2024-01-28T07:31:37+00:00" }, { "name": "nikic/php-parser", @@ -855,16 +855,16 @@ }, { "name": "phpdocumentor/type-resolver", - "version": "1.7.3", + "version": "1.8.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419" + "reference": "fad452781b3d774e3337b0c0b245dd8e5a4455fc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419", - "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/fad452781b3d774e3337b0c0b245dd8e5a4455fc", + "reference": "fad452781b3d774e3337b0c0b245dd8e5a4455fc", "shasum": "" }, "require": { @@ -907,22 +907,22 @@ "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.7.3" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.8.0" }, - "time": "2023-08-12T11:01:26+00:00" + "time": "2024-01-11T11:49:22+00:00" }, { "name": "phpstan/phpdoc-parser", - "version": "1.24.4", + "version": "1.25.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "6bd0c26f3786cd9b7c359675cb789e35a8e07496" + "reference": "bd84b629c8de41aa2ae82c067c955e06f1b00240" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/6bd0c26f3786cd9b7c359675cb789e35a8e07496", - "reference": "6bd0c26f3786cd9b7c359675cb789e35a8e07496", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/bd84b629c8de41aa2ae82c067c955e06f1b00240", + "reference": "bd84b629c8de41aa2ae82c067c955e06f1b00240", "shasum": "" }, "require": { @@ -954,9 +954,9 @@ "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.24.4" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.25.0" }, - "time": "2023-11-26T18:29:22+00:00" + "time": "2024-01-04T17:06:16+00:00" }, { "name": "psr/container", @@ -1063,16 +1063,16 @@ }, { "name": "sebastian/diff", - "version": "5.0.3", + "version": "5.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "912dc2fbe3e3c1e7873313cc801b100b6c68c87b" + "reference": "fbf413a49e54f6b9b17e12d900ac7f6101591b7f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/912dc2fbe3e3c1e7873313cc801b100b6c68c87b", - "reference": "912dc2fbe3e3c1e7873313cc801b100b6c68c87b", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/fbf413a49e54f6b9b17e12d900ac7f6101591b7f", + "reference": "fbf413a49e54f6b9b17e12d900ac7f6101591b7f", "shasum": "" }, "require": { @@ -1085,7 +1085,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "5.0-dev" + "dev-main": "5.1-dev" } }, "autoload": { @@ -1118,7 +1118,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", "security": "https://github.com/sebastianbergmann/diff/security/policy", - "source": "https://github.com/sebastianbergmann/diff/tree/5.0.3" + "source": "https://github.com/sebastianbergmann/diff/tree/5.1.0" }, "funding": [ { @@ -1126,7 +1126,7 @@ "type": "github" } ], - "time": "2023-05-01T07:48:21+00:00" + "time": "2023-12-22T10:55:06+00:00" }, { "name": "spatie/array-to-xml", @@ -1193,16 +1193,16 @@ }, { "name": "symfony/console", - "version": "v7.0.1", + "version": "v7.0.2", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "cdce5c684b2f920bb1343deecdfba356ffad83d5" + "reference": "f8587c4cdc5acad67af71c37db34ef03af91e59c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/cdce5c684b2f920bb1343deecdfba356ffad83d5", - "reference": "cdce5c684b2f920bb1343deecdfba356ffad83d5", + "url": "https://api.github.com/repos/symfony/console/zipball/f8587c4cdc5acad67af71c37db34ef03af91e59c", + "reference": "f8587c4cdc5acad67af71c37db34ef03af91e59c", "shasum": "" }, "require": { @@ -1266,7 +1266,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.0.1" + "source": "https://github.com/symfony/console/tree/v7.0.2" }, "funding": [ { @@ -1282,7 +1282,7 @@ "type": "tidelift" } ], - "time": "2023-12-01T15:10:06+00:00" + "time": "2023-12-10T16:54:46+00:00" }, { "name": "symfony/filesystem", @@ -1679,21 +1679,21 @@ }, { "name": "symfony/service-contracts", - "version": "v3.4.0", + "version": "v3.4.1", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "b3313c2dbffaf71c8de2934e2ea56ed2291a3838" + "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/b3313c2dbffaf71c8de2934e2ea56ed2291a3838", - "reference": "b3313c2dbffaf71c8de2934e2ea56ed2291a3838", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/fe07cbc8d837f60caf7018068e350cc5163681a0", + "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0", "shasum": "" }, "require": { "php": ">=8.1", - "psr/container": "^2.0" + "psr/container": "^1.1|^2.0" }, "conflict": { "ext-psr": "<1.1|>=2" @@ -1741,7 +1741,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.4.0" + "source": "https://github.com/symfony/service-contracts/tree/v3.4.1" }, "funding": [ { @@ -1757,20 +1757,20 @@ "type": "tidelift" } ], - "time": "2023-07-30T20:28:31+00:00" + "time": "2023-12-26T14:02:43+00:00" }, { "name": "symfony/string", - "version": "v7.0.0", + "version": "v7.0.2", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "92bd2bfbba476d4a1838e5e12168bef2fd1e6620" + "reference": "cc78f14f91f5e53b42044d0620961c48028ff9f5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/92bd2bfbba476d4a1838e5e12168bef2fd1e6620", - "reference": "92bd2bfbba476d4a1838e5e12168bef2fd1e6620", + "url": "https://api.github.com/repos/symfony/string/zipball/cc78f14f91f5e53b42044d0620961c48028ff9f5", + "reference": "cc78f14f91f5e53b42044d0620961c48028ff9f5", "shasum": "" }, "require": { @@ -1827,7 +1827,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.0.0" + "source": "https://github.com/symfony/string/tree/v7.0.2" }, "funding": [ { @@ -1843,20 +1843,20 @@ "type": "tidelift" } ], - "time": "2023-11-29T08:40:23+00:00" + "time": "2023-12-10T16:54:46+00:00" }, { "name": "vimeo/psalm", - "version": "5.17.0", + "version": "5.20.0", "source": { "type": "git", "url": "https://github.com/vimeo/psalm.git", - "reference": "c620f6e80d0abfca532b00bda366062aaedf6e5d" + "reference": "3f284e96c9d9be6fe6b15c79416e1d1903dcfef4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/c620f6e80d0abfca532b00bda366062aaedf6e5d", - "reference": "c620f6e80d0abfca532b00bda366062aaedf6e5d", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/3f284e96c9d9be6fe6b15c79416e1d1903dcfef4", + "reference": "3f284e96c9d9be6fe6b15c79416e1d1903dcfef4", "shasum": "" }, "require": { @@ -1875,7 +1875,7 @@ "ext-tokenizer": "*", "felixfbecker/advanced-json-rpc": "^3.1", "felixfbecker/language-server-protocol": "^1.5.2", - "fidry/cpu-core-counter": "^0.4.1 || ^0.5.1", + "fidry/cpu-core-counter": "^0.4.1 || ^0.5.1 || ^1.0.0", "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0", "nikic/php-parser": "^4.16", "php": "^7.4 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0", @@ -1953,7 +1953,7 @@ "issues": "https://github.com/vimeo/psalm/issues", "source": "https://github.com/vimeo/psalm" }, - "time": "2023-12-03T20:21:41+00:00" + "time": "2024-01-18T12:15:06+00:00" }, { "name": "webmozart/assert",