From 4853ca444e98a05cd8bb9209dc2743e24d6a2651 Mon Sep 17 00:00:00 2001
From: Benjamin Dalsass <95754414+bdalsass@users.noreply.github.com>
Date: Mon, 23 Feb 2026 06:54:26 +0100
Subject: [PATCH] =?UTF-8?q?N=C2=B08910=20-=20Upgrade=20Symfony=20packages?=
=?UTF-8?q?=20(#811)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
composer.lock | 389 +++++++--------
lib/bin/patch-type-declarations.bat | 5 +
lib/bin/yaml-lint.bat | 5 +
lib/composer/autoload_classmap.php | 57 ++-
lib/composer/autoload_static.php | 57 ++-
lib/composer/installed.json | 451 +++++++++---------
lib/composer/installed.php | 190 ++++----
lib/symfony/cache/Adapter/AbstractAdapter.php | 6 +-
.../cache/Adapter/AbstractTagAwareAdapter.php | 6 +-
lib/symfony/cache/Adapter/ApcuAdapter.php | 19 +-
lib/symfony/cache/Adapter/ArrayAdapter.php | 10 +-
lib/symfony/cache/Adapter/ChainAdapter.php | 6 +-
.../cache/Adapter/DoctrineDbalAdapter.php | 4 +-
.../cache/Adapter/MemcachedAdapter.php | 4 +-
.../cache/Adapter/ParameterNormalizer.php | 2 +-
lib/symfony/cache/Adapter/PdoAdapter.php | 22 +-
lib/symfony/cache/Adapter/PhpArrayAdapter.php | 43 +-
lib/symfony/cache/Adapter/PhpFilesAdapter.php | 15 +-
lib/symfony/cache/Adapter/ProxyAdapter.php | 2 +-
.../cache/Adapter/RedisTagAwareAdapter.php | 18 +-
lib/symfony/cache/Adapter/TagAwareAdapter.php | 9 +-
.../cache/Adapter/TraceableAdapter.php | 2 +-
lib/symfony/cache/CacheItem.php | 17 +-
.../DataCollector/CacheDataCollector.php | 21 +-
.../DependencyInjection/CachePoolPass.php | 27 +-
.../CachePoolPrunerPass.php | 11 +-
lib/symfony/cache/LockRegistry.php | 9 +-
.../Messenger/EarlyExpirationDispatcher.php | 4 +-
.../Messenger/EarlyExpirationMessage.php | 5 +
lib/symfony/cache/Psr16Cache.php | 6 +-
.../cache/Traits/AbstractAdapterTrait.php | 9 +-
.../cache/Traits/CachedValueInterface.php | 20 +
lib/symfony/cache/Traits/ContractsTrait.php | 8 +-
.../cache/Traits/FilesystemCommonTrait.php | 11 +-
lib/symfony/cache/Traits/FilesystemTrait.php | 2 +-
...s6ProxyTrait.php => Redis61ProxyTrait.php} | 4 +-
.../cache/Traits/Redis62ProxyTrait.php | 52 ++
.../cache/Traits/Redis63ProxyTrait.php | 162 +++++++
lib/symfony/cache/Traits/Redis6Proxy.php | 4 +-
...Trait.php => RedisCluster61ProxyTrait.php} | 4 +-
.../cache/Traits/RedisCluster62ProxyTrait.php | 47 ++
.../cache/Traits/RedisCluster63ProxyTrait.php | 162 +++++++
.../cache/Traits/RedisCluster6Proxy.php | 4 +-
lib/symfony/cache/Traits/RedisTrait.php | 77 +--
.../cache/Traits/Relay/BgsaveTrait.php | 36 ++
lib/symfony/cache/Traits/Relay/CopyTrait.php | 36 ++
lib/symfony/cache/Traits/Relay/FtTrait.php | 132 +++++
.../cache/Traits/Relay/GeosearchTrait.php | 36 ++
.../cache/Traits/Relay/GetWithMetaTrait.php | 32 ++
.../cache/Traits/Relay/GetrangeTrait.php | 36 ++
lib/symfony/cache/Traits/Relay/HsetTrait.php | 36 ++
.../cache/Traits/Relay/IsTrackedTrait.php | 32 ++
lib/symfony/cache/Traits/Relay/MoveTrait.php | 46 ++
.../Traits/Relay/NullableReturnTrait.php | 96 ++++
.../cache/Traits/Relay/PfcountTrait.php | 36 ++
.../cache/Traits/Relay/Relay11Trait.php | 132 +++++
.../cache/Traits/Relay/Relay121Trait.php | 51 ++
.../cache/Traits/Relay/Relay12Trait.php | 107 +++++
.../cache/Traits/Relay/Relay20Trait.php | 47 ++
.../cache/Traits/Relay/SwapdbTrait.php | 32 ++
lib/symfony/cache/Traits/RelayProxy.php | 112 ++---
lib/symfony/cache/Traits/RelayProxyTrait.php | 9 -
.../Builder/ArrayNodeDefinition.php | 2 +-
.../Definition/Dumper/YamlReferenceDumper.php | 2 +-
.../Resource/ClassExistenceResource.php | 18 +-
lib/symfony/config/Resource/GlobResource.php | 27 +-
.../Resource/ReflectionClassResource.php | 12 +-
lib/symfony/console/Application.php | 48 +-
lib/symfony/console/Helper/QuestionHelper.php | 79 +--
.../console/Helper/SymfonyQuestionHelper.php | 6 +-
lib/symfony/console/Helper/TableStyle.php | 10 +-
.../console/Helper/TerminalInputHelper.php | 156 ++++++
lib/symfony/console/Input/ArgvInput.php | 2 +-
.../console/Question/ChoiceQuestion.php | 8 +-
lib/symfony/console/Resources/completion.bash | 2 +-
.../console/SignalRegistry/SignalRegistry.php | 61 ++-
lib/symfony/console/Tester/TesterTrait.php | 6 +-
.../Attribute/Autowire.php | 2 +-
.../Compiler/AnalyzeServiceReferencesPass.php | 14 +-
.../Compiler/CheckDefinitionValidityPass.php | 4 +
.../Compiler/CheckTypeDeclarationsPass.php | 7 +-
.../Compiler/DefinitionErrorExceptionPass.php | 6 +-
.../Compiler/InlineServiceDefinitionsPass.php | 2 +-
.../Compiler/PassConfig.php | 3 +-
.../Compiler/RemoveBuildParametersPass.php | 7 +-
.../ReplaceAliasByActualDefinitionPass.php | 10 +-
.../Compiler/ResolveBindingsPass.php | 12 +-
.../Compiler/ResolveClassPass.php | 14 +-
.../Compiler/ResolveHotPathPass.php | 2 +-
.../ResolveReferencesToAliasesPass.php | 6 +-
.../Compiler/ServiceReferenceGraph.php | 4 +-
.../Compiler/ServiceReferenceGraphEdge.php | 9 +-
.../dependency-injection/ContainerBuilder.php | 2 +-
.../dependency-injection/Dumper/PhpDumper.php | 61 ++-
.../dependency-injection/EnvVarProcessor.php | 2 +-
.../Configurator/AbstractConfigurator.php | 7 +-
.../Loader/FileLoader.php | 2 +-
.../Loader/PhpFileLoader.php | 5 +-
.../dotenv/Command/DotenvDumpCommand.php | 8 +-
lib/symfony/error-handler/BufferingLogger.php | 7 +-
.../error-handler/DebugClassLoader.php | 2 +-
.../ErrorRenderer/FileLinkFormatter.php | 7 +-
lib/symfony/finder/Finder.php | 55 +--
lib/symfony/finder/Glob.php | 7 +
lib/symfony/form/AbstractRendererEngine.php | 22 +-
.../DateTimeToLocalizedStringTransformer.php | 60 ++-
.../NumberToLocalizedStringTransformer.php | 2 +-
.../form/Extension/Core/Type/EnumType.php | 12 +-
.../form/Extension/Core/Type/MoneyType.php | 6 +
.../form/Extension/Core/Type/TextareaType.php | 35 +-
lib/symfony/form/FormBuilder.php | 288 +++++------
.../Resources/translations/validators.nb.xlf | 2 +-
.../Resources/translations/validators.no.xlf | 2 +-
lib/symfony/form/Util/OrderedHashMap.php | 15 +-
lib/symfony/form/Util/StringUtil.php | 8 +
lib/symfony/framework-bundle/CHANGELOG.md | 1 +
.../Command/CachePoolPruneCommand.php | 13 +-
.../Command/ConfigDebugCommand.php | 2 +-
.../SecretsEncryptFromLocalCommand.php | 11 +-
.../Controller/AbstractController.php | 4 +
.../TestServiceContainerWeakRefPass.php | 5 +-
.../DependencyInjection/Configuration.php | 60 ++-
.../FrameworkExtension.php | 35 +-
.../Resources/config/schema/symfony-1.0.xsd | 3 +-
.../framework-bundle/Test/KernelTestCase.php | 22 +
.../framework-bundle/Test/TestContainer.php | 12 +-
lib/symfony/http-foundation/AcceptHeader.php | 204 +++++++-
lib/symfony/http-foundation/Request.php | 2 +-
.../Storage/Handler/PdoSessionHandler.php | 23 +-
.../Storage/Handler/SessionHandlerFactory.php | 1 +
.../RequestPayloadValueResolver.php | 10 +-
.../DataCollector/DumpDataCollector.php | 17 +-
.../EventListener/CacheAttributeListener.php | 32 +-
lib/symfony/http-kernel/HttpCache/Store.php | 10 +-
lib/symfony/http-kernel/Kernel.php | 37 +-
.../mailer/Transport/Smtp/SmtpTransport.php | 20 +-
lib/symfony/mime/Email.php | 2 +-
lib/symfony/mime/Encoder/QpContentEncoder.php | 6 +-
lib/symfony/mime/Encoder/QpEncoder.php | 6 +-
lib/symfony/mime/MimeTypes.php | 375 +++++++++++----
lib/symfony/mime/Part/MessagePart.php | 8 +-
.../mime/Resources/bin/update_mime_types.php | 2 +-
.../options-resolver/OptionsResolver.php | 7 +-
lib/symfony/property-access/composer.json | 2 +-
.../Extractor/PhpDocExtractor.php | 76 ++-
.../Extractor/PhpStanExtractor.php | 21 +-
.../Extractor/ReflectionExtractor.php | 66 ++-
.../property-info/Util/PhpDocTypeHelper.php | 37 +-
lib/symfony/property-info/composer.json | 2 +-
.../Configurator/CollectionConfigurator.php | 7 +-
.../Configurator/ImportConfigurator.php | 7 +-
.../Configurator/Traits/PrefixTrait.php | 10 +
.../Dumper/CompiledUrlMatcherDumper.php | 7 +-
.../Dumper/CompiledUrlMatcherTrait.php | 6 +-
.../Matcher/RedirectableUrlMatcher.php | 2 +-
.../routing/Matcher/TraceableUrlMatcher.php | 2 +-
lib/symfony/routing/Matcher/UrlMatcher.php | 5 +-
lib/symfony/routing/Route.php | 2 +-
lib/symfony/routing/RouteCollection.php | 8 +-
.../Resources/translations/security.da.xlf | 2 +-
.../Resources/translations/security.fi.xlf | 12 +-
.../Resources/translations/security.gl.xlf | 2 +-
.../Resources/translations/security.lb.xlf | 2 +-
.../Resources/translations/security.nb.xlf | 2 +-
.../Resources/translations/security.no.xlf | 2 +-
.../Resources/translations/security.sv.xlf | 2 +-
.../string/Inflector/EnglishInflector.php | 13 +
lib/symfony/string/Slugger/AsciiSlugger.php | 4 +-
lib/symfony/string/UnicodeString.php | 38 ++
lib/symfony/string/composer.json | 3 +-
.../translation-contracts/TranslatorTrait.php | 6 +
.../twig-bridge/Form/TwigRendererEngine.php | 6 +-
lib/symfony/twig-bridge/composer.json | 4 +-
lib/symfony/twig-bundle/TemplateIterator.php | 6 +
.../Resources/translations/validators.be.xlf | 4 +-
.../Resources/translations/validators.el.xlf | 146 +++---
.../Resources/translations/validators.es.xlf | 46 +-
.../Resources/translations/validators.fa.xlf | 44 +-
.../translations/validators.zh_CN.xlf | 44 +-
.../views/Profiler/toolbar_js.html.twig | 2 +-
lib/symfony/yaml/Inline.php | 4 +
lib/symfony/yaml/Parser.php | 8 +
lib/twig/twig/CHANGELOG | 33 +-
lib/twig/twig/phpstan-baseline.neon | 25 -
lib/twig/twig/phpstan.neon.dist | 9 -
lib/twig/twig/splitsh.json | 15 +
lib/twig/twig/src/Attribute/AsTwigFilter.php | 18 +-
.../twig/src/Attribute/AsTwigFunction.php | 14 +-
lib/twig/twig/src/Attribute/AsTwigTest.php | 10 +-
lib/twig/twig/src/Environment.php | 16 +-
lib/twig/twig/src/Error/Error.php | 6 +-
lib/twig/twig/src/ExpressionParser.php | 4 +-
.../ExpressionParser/Infix/ArgumentsTrait.php | 6 +-
.../Infix/AssignmentExpressionParser.php | 66 +++
.../Infix/DotExpressionParser.php | 10 +-
.../InfixExpressionParserInterface.php | 4 +
.../Prefix/LiteralExpressionParser.php | 12 +-
.../Prefix/UnaryOperatorExpressionParser.php | 3 +-
.../PrefixExpressionParserInterface.php | 4 +
.../twig/src/Extension/AttributeExtension.php | 7 +-
lib/twig/twig/src/Extension/CoreExtension.php | 26 +-
.../twig/src/Extension/ExtensionInterface.php | 3 +
lib/twig/twig/src/ExtensionSet.php | 20 +
lib/twig/twig/src/Lexer.php | 2 +-
lib/twig/twig/src/Node/EmbedNode.php | 2 +-
.../src/Node/Expression/ArrayExpression.php | 33 ++
.../Node/Expression/Binary/MatchesBinary.php | 2 +-
.../Expression/Binary/NotSameAsBinary.php | 23 +
.../Binary/ObjectDestructuringSetBinary.php | 71 +++
.../Node/Expression/Binary/SameAsBinary.php | 23 +
.../Binary/SequenceDestructuringSetBinary.php | 67 +++
.../src/Node/Expression/Binary/SetBinary.php | 44 ++
.../src/Node/Expression/EmptyExpression.php | 33 ++
.../FunctionNode/EnumCasesFunction.php | 9 +
.../Expression/FunctionNode/EnumFunction.php | 9 +
.../src/Node/Expression/GetAttrExpression.php | 33 +-
.../src/Node/Expression/Test/DefinedTest.php | 8 -
lib/twig/twig/src/Node/TypesNode.php | 9 +
lib/twig/twig/src/Parser.php | 27 +-
lib/twig/twig/src/Resources/debug.php | 4 +-
lib/twig/twig/src/Resources/string_loader.php | 4 +-
lib/twig/twig/src/Runtime/EscaperRuntime.php | 28 +-
lib/twig/twig/src/Template.php | 4 +-
.../twig/src/TokenParser/GuardTokenParser.php | 8 +-
224 files changed, 4758 insertions(+), 1778 deletions(-)
create mode 100755 lib/bin/patch-type-declarations.bat
create mode 100755 lib/bin/yaml-lint.bat
create mode 100644 lib/symfony/cache/Traits/CachedValueInterface.php
rename lib/symfony/cache/Traits/{Redis6ProxyTrait.php => Redis61ProxyTrait.php} (98%)
create mode 100644 lib/symfony/cache/Traits/Redis62ProxyTrait.php
create mode 100644 lib/symfony/cache/Traits/Redis63ProxyTrait.php
rename lib/symfony/cache/Traits/{RedisCluster6ProxyTrait.php => RedisCluster61ProxyTrait.php} (95%)
create mode 100644 lib/symfony/cache/Traits/RedisCluster62ProxyTrait.php
create mode 100644 lib/symfony/cache/Traits/RedisCluster63ProxyTrait.php
create mode 100644 lib/symfony/cache/Traits/Relay/BgsaveTrait.php
create mode 100644 lib/symfony/cache/Traits/Relay/CopyTrait.php
create mode 100644 lib/symfony/cache/Traits/Relay/FtTrait.php
create mode 100644 lib/symfony/cache/Traits/Relay/GeosearchTrait.php
create mode 100644 lib/symfony/cache/Traits/Relay/GetWithMetaTrait.php
create mode 100644 lib/symfony/cache/Traits/Relay/GetrangeTrait.php
create mode 100644 lib/symfony/cache/Traits/Relay/HsetTrait.php
create mode 100644 lib/symfony/cache/Traits/Relay/IsTrackedTrait.php
create mode 100644 lib/symfony/cache/Traits/Relay/MoveTrait.php
create mode 100644 lib/symfony/cache/Traits/Relay/NullableReturnTrait.php
create mode 100644 lib/symfony/cache/Traits/Relay/PfcountTrait.php
create mode 100644 lib/symfony/cache/Traits/Relay/Relay11Trait.php
create mode 100644 lib/symfony/cache/Traits/Relay/Relay121Trait.php
create mode 100644 lib/symfony/cache/Traits/Relay/Relay12Trait.php
create mode 100644 lib/symfony/cache/Traits/Relay/Relay20Trait.php
create mode 100644 lib/symfony/cache/Traits/Relay/SwapdbTrait.php
create mode 100644 lib/symfony/console/Helper/TerminalInputHelper.php
delete mode 100644 lib/twig/twig/phpstan-baseline.neon
delete mode 100644 lib/twig/twig/phpstan.neon.dist
create mode 100644 lib/twig/twig/splitsh.json
create mode 100644 lib/twig/twig/src/ExpressionParser/Infix/AssignmentExpressionParser.php
create mode 100644 lib/twig/twig/src/Node/Expression/Binary/NotSameAsBinary.php
create mode 100644 lib/twig/twig/src/Node/Expression/Binary/ObjectDestructuringSetBinary.php
create mode 100644 lib/twig/twig/src/Node/Expression/Binary/SameAsBinary.php
create mode 100644 lib/twig/twig/src/Node/Expression/Binary/SequenceDestructuringSetBinary.php
create mode 100644 lib/twig/twig/src/Node/Expression/Binary/SetBinary.php
create mode 100644 lib/twig/twig/src/Node/Expression/EmptyExpression.php
diff --git a/composer.lock b/composer.lock
index 5a6f85f40..be99d6b17 100644
--- a/composer.lock
+++ b/composer.lock
@@ -1721,16 +1721,16 @@
},
{
"name": "symfony/cache",
- "version": "v6.4.12",
+ "version": "v6.4.33",
"source": {
"type": "git",
"url": "https://github.com/symfony/cache.git",
- "reference": "a463451b7f6ac4a47b98dbfc78ec2d3560c759d8"
+ "reference": "5b088fa41eb9568748dc255c45e4054c387ba73b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/cache/zipball/a463451b7f6ac4a47b98dbfc78ec2d3560c759d8",
- "reference": "a463451b7f6ac4a47b98dbfc78ec2d3560c759d8",
+ "url": "https://api.github.com/repos/symfony/cache/zipball/5b088fa41eb9568748dc255c45e4054c387ba73b",
+ "reference": "5b088fa41eb9568748dc255c45e4054c387ba73b",
"shasum": ""
},
"require": {
@@ -1797,7 +1797,7 @@
"psr6"
],
"support": {
- "source": "https://github.com/symfony/cache/tree/v6.4.12"
+ "source": "https://github.com/symfony/cache/tree/v6.4.33"
},
"funding": [
{
@@ -1808,12 +1808,16 @@
"url": "https://github.com/fabpot",
"type": "github"
},
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
- "time": "2024-09-16T16:01:33+00:00"
+ "time": "2026-01-27T15:05:20+00:00"
},
{
"name": "symfony/cache-contracts",
@@ -1893,16 +1897,16 @@
},
{
"name": "symfony/config",
- "version": "v6.4.24",
+ "version": "v6.4.32",
"source": {
"type": "git",
"url": "https://github.com/symfony/config.git",
- "reference": "80e2cf005cf17138c97193be0434cdcfd1b2212e"
+ "reference": "d445badf0ad2c2a492e38c0378c39997a56ef97b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/config/zipball/80e2cf005cf17138c97193be0434cdcfd1b2212e",
- "reference": "80e2cf005cf17138c97193be0434cdcfd1b2212e",
+ "url": "https://api.github.com/repos/symfony/config/zipball/d445badf0ad2c2a492e38c0378c39997a56ef97b",
+ "reference": "d445badf0ad2c2a492e38c0378c39997a56ef97b",
"shasum": ""
},
"require": {
@@ -1948,7 +1952,7 @@
"description": "Helps you find, load, combine, autofill and validate configuration values of any kind",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/config/tree/v6.4.24"
+ "source": "https://github.com/symfony/config/tree/v6.4.32"
},
"funding": [
{
@@ -1968,20 +1972,20 @@
"type": "tidelift"
}
],
- "time": "2025-07-26T13:50:30+00:00"
+ "time": "2026-01-13T08:40:30+00:00"
},
{
"name": "symfony/console",
- "version": "v6.4.25",
+ "version": "v6.4.32",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
- "reference": "273fd29ff30ba0a88ca5fb83f7cf1ab69306adae"
+ "reference": "0bc2199c6c1f05276b05956f1ddc63f6d7eb5fc3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/273fd29ff30ba0a88ca5fb83f7cf1ab69306adae",
- "reference": "273fd29ff30ba0a88ca5fb83f7cf1ab69306adae",
+ "url": "https://api.github.com/repos/symfony/console/zipball/0bc2199c6c1f05276b05956f1ddc63f6d7eb5fc3",
+ "reference": "0bc2199c6c1f05276b05956f1ddc63f6d7eb5fc3",
"shasum": ""
},
"require": {
@@ -2046,7 +2050,7 @@
"terminal"
],
"support": {
- "source": "https://github.com/symfony/console/tree/v6.4.25"
+ "source": "https://github.com/symfony/console/tree/v6.4.32"
},
"funding": [
{
@@ -2066,7 +2070,7 @@
"type": "tidelift"
}
],
- "time": "2025-08-22T10:21:53+00:00"
+ "time": "2026-01-13T08:45:59+00:00"
},
{
"name": "symfony/css-selector",
@@ -2139,16 +2143,16 @@
},
{
"name": "symfony/dependency-injection",
- "version": "v6.4.25",
+ "version": "v6.4.32",
"source": {
"type": "git",
"url": "https://github.com/symfony/dependency-injection.git",
- "reference": "900da8a42eceeb4a13a0ec34caa7db49328daff3"
+ "reference": "b17882e933c4c606620247b6708ab53aa3b88753"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/900da8a42eceeb4a13a0ec34caa7db49328daff3",
- "reference": "900da8a42eceeb4a13a0ec34caa7db49328daff3",
+ "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/b17882e933c4c606620247b6708ab53aa3b88753",
+ "reference": "b17882e933c4c606620247b6708ab53aa3b88753",
"shasum": ""
},
"require": {
@@ -2200,7 +2204,7 @@
"description": "Allows you to standardize and centralize the way objects are constructed in your application",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/dependency-injection/tree/v6.4.25"
+ "source": "https://github.com/symfony/dependency-injection/tree/v6.4.32"
},
"funding": [
{
@@ -2220,7 +2224,7 @@
"type": "tidelift"
}
],
- "time": "2025-08-13T09:41:44+00:00"
+ "time": "2026-01-23T10:54:33+00:00"
},
{
"name": "symfony/deprecation-contracts",
@@ -2291,16 +2295,16 @@
},
{
"name": "symfony/dotenv",
- "version": "v6.4.24",
+ "version": "v6.4.30",
"source": {
"type": "git",
"url": "https://github.com/symfony/dotenv.git",
- "reference": "234b6c602f12b00693f4b0d1054386fb30dfc8ff"
+ "reference": "924edbc9631b75302def0258ed1697948b17baf6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dotenv/zipball/234b6c602f12b00693f4b0d1054386fb30dfc8ff",
- "reference": "234b6c602f12b00693f4b0d1054386fb30dfc8ff",
+ "url": "https://api.github.com/repos/symfony/dotenv/zipball/924edbc9631b75302def0258ed1697948b17baf6",
+ "reference": "924edbc9631b75302def0258ed1697948b17baf6",
"shasum": ""
},
"require": {
@@ -2345,7 +2349,7 @@
"environment"
],
"support": {
- "source": "https://github.com/symfony/dotenv/tree/v6.4.24"
+ "source": "https://github.com/symfony/dotenv/tree/v6.4.30"
},
"funding": [
{
@@ -2365,20 +2369,20 @@
"type": "tidelift"
}
],
- "time": "2025-07-10T08:14:14+00:00"
+ "time": "2025-11-14T17:33:48+00:00"
},
{
"name": "symfony/error-handler",
- "version": "v6.4.24",
+ "version": "v6.4.32",
"source": {
"type": "git",
"url": "https://github.com/symfony/error-handler.git",
- "reference": "30fd0b3cf0e972e82636038ce4db0e4fe777112c"
+ "reference": "8c18400784fcb014dc73c8d5601a9576af7f8ad4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/error-handler/zipball/30fd0b3cf0e972e82636038ce4db0e4fe777112c",
- "reference": "30fd0b3cf0e972e82636038ce4db0e4fe777112c",
+ "url": "https://api.github.com/repos/symfony/error-handler/zipball/8c18400784fcb014dc73c8d5601a9576af7f8ad4",
+ "reference": "8c18400784fcb014dc73c8d5601a9576af7f8ad4",
"shasum": ""
},
"require": {
@@ -2424,7 +2428,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/v6.4.24"
+ "source": "https://github.com/symfony/error-handler/tree/v6.4.32"
},
"funding": [
{
@@ -2444,20 +2448,20 @@
"type": "tidelift"
}
],
- "time": "2025-07-24T08:25:04+00:00"
+ "time": "2026-01-19T19:28:19+00:00"
},
{
"name": "symfony/event-dispatcher",
- "version": "v6.4.25",
+ "version": "v6.4.32",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
- "reference": "b0cf3162020603587363f0551cd3be43958611ff"
+ "reference": "99d7e101826e6610606b9433248f80c1997cd20b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/b0cf3162020603587363f0551cd3be43958611ff",
- "reference": "b0cf3162020603587363f0551cd3be43958611ff",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/99d7e101826e6610606b9433248f80c1997cd20b",
+ "reference": "99d7e101826e6610606b9433248f80c1997cd20b",
"shasum": ""
},
"require": {
@@ -2508,7 +2512,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.4.25"
+ "source": "https://github.com/symfony/event-dispatcher/tree/v6.4.32"
},
"funding": [
{
@@ -2528,7 +2532,7 @@
"type": "tidelift"
}
],
- "time": "2025-08-13T09:41:44+00:00"
+ "time": "2026-01-05T11:13:48+00:00"
},
{
"name": "symfony/event-dispatcher-contracts",
@@ -2608,16 +2612,16 @@
},
{
"name": "symfony/filesystem",
- "version": "v6.4.24",
+ "version": "v6.4.30",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
- "reference": "75ae2edb7cdcc0c53766c30b0a2512b8df574bd8"
+ "reference": "441c6b69f7222aadae7cbf5df588496d5ee37789"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/filesystem/zipball/75ae2edb7cdcc0c53766c30b0a2512b8df574bd8",
- "reference": "75ae2edb7cdcc0c53766c30b0a2512b8df574bd8",
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/441c6b69f7222aadae7cbf5df588496d5ee37789",
+ "reference": "441c6b69f7222aadae7cbf5df588496d5ee37789",
"shasum": ""
},
"require": {
@@ -2654,7 +2658,7 @@
"description": "Provides basic utilities for the filesystem",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/filesystem/tree/v6.4.24"
+ "source": "https://github.com/symfony/filesystem/tree/v6.4.30"
},
"funding": [
{
@@ -2674,20 +2678,20 @@
"type": "tidelift"
}
],
- "time": "2025-07-10T08:14:14+00:00"
+ "time": "2025-11-26T14:43:45+00:00"
},
{
"name": "symfony/finder",
- "version": "v6.4.24",
+ "version": "v6.4.33",
"source": {
"type": "git",
"url": "https://github.com/symfony/finder.git",
- "reference": "73089124388c8510efb8d2d1689285d285937b08"
+ "reference": "24965ca011dac87431729640feef8bcf7b5523e0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/finder/zipball/73089124388c8510efb8d2d1689285d285937b08",
- "reference": "73089124388c8510efb8d2d1689285d285937b08",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/24965ca011dac87431729640feef8bcf7b5523e0",
+ "reference": "24965ca011dac87431729640feef8bcf7b5523e0",
"shasum": ""
},
"require": {
@@ -2722,7 +2726,7 @@
"description": "Finds files and directories via an intuitive fluent interface",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/finder/tree/v6.4.24"
+ "source": "https://github.com/symfony/finder/tree/v6.4.33"
},
"funding": [
{
@@ -2742,20 +2746,20 @@
"type": "tidelift"
}
],
- "time": "2025-07-15T12:02:45+00:00"
+ "time": "2026-01-26T13:03:48+00:00"
},
{
"name": "symfony/form",
- "version": "v6.4.26",
+ "version": "v6.4.32",
"source": {
"type": "git",
"url": "https://github.com/symfony/form.git",
- "reference": "b40cdbe70be9274ea807ef61da7d0f8d1c70dc51"
+ "reference": "b758162fb45024f898640ec27f4ac90be0dbfb8f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/form/zipball/b40cdbe70be9274ea807ef61da7d0f8d1c70dc51",
- "reference": "b40cdbe70be9274ea807ef61da7d0f8d1c70dc51",
+ "url": "https://api.github.com/repos/symfony/form/zipball/b758162fb45024f898640ec27f4ac90be0dbfb8f",
+ "reference": "b758162fb45024f898640ec27f4ac90be0dbfb8f",
"shasum": ""
},
"require": {
@@ -2823,7 +2827,7 @@
"description": "Allows to easily create, process and reuse HTML forms",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/form/tree/v6.4.26"
+ "source": "https://github.com/symfony/form/tree/v6.4.32"
},
"funding": [
{
@@ -2843,20 +2847,20 @@
"type": "tidelift"
}
],
- "time": "2025-09-20T07:40:41+00:00"
+ "time": "2026-01-22T20:17:27+00:00"
},
{
"name": "symfony/framework-bundle",
- "version": "v6.4.25",
+ "version": "v6.4.33",
"source": {
"type": "git",
"url": "https://github.com/symfony/framework-bundle.git",
- "reference": "1d6a764b58e4f780df00f71c20ba3a61095ea447"
+ "reference": "9ef2d0b63b9e855ba351e770a603d89699115801"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/1d6a764b58e4f780df00f71c20ba3a61095ea447",
- "reference": "1d6a764b58e4f780df00f71c20ba3a61095ea447",
+ "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/9ef2d0b63b9e855ba351e770a603d89699115801",
+ "reference": "9ef2d0b63b9e855ba351e770a603d89699115801",
"shasum": ""
},
"require": {
@@ -2976,7 +2980,7 @@
"description": "Provides a tight integration between Symfony components and the Symfony full-stack framework",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/framework-bundle/tree/v6.4.25"
+ "source": "https://github.com/symfony/framework-bundle/tree/v6.4.33"
},
"funding": [
{
@@ -2996,20 +3000,20 @@
"type": "tidelift"
}
],
- "time": "2025-08-26T10:44:20+00:00"
+ "time": "2026-01-26T14:46:41+00:00"
},
{
"name": "symfony/http-foundation",
- "version": "v6.4.29",
+ "version": "v6.4.33",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-foundation.git",
- "reference": "b03d11e015552a315714c127d8d1e0f9e970ec88"
+ "reference": "f1a490cc9d595ba7ebe684220e625d1e472ad278"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-foundation/zipball/b03d11e015552a315714c127d8d1e0f9e970ec88",
- "reference": "b03d11e015552a315714c127d8d1e0f9e970ec88",
+ "url": "https://api.github.com/repos/symfony/http-foundation/zipball/f1a490cc9d595ba7ebe684220e625d1e472ad278",
+ "reference": "f1a490cc9d595ba7ebe684220e625d1e472ad278",
"shasum": ""
},
"require": {
@@ -3057,7 +3061,7 @@
"description": "Defines an object-oriented layer for the HTTP specification",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/http-foundation/tree/v6.4.29"
+ "source": "https://github.com/symfony/http-foundation/tree/v6.4.33"
},
"funding": [
{
@@ -3077,20 +3081,20 @@
"type": "tidelift"
}
],
- "time": "2025-11-08T16:40:12+00:00"
+ "time": "2026-01-27T15:04:55+00:00"
},
{
"name": "symfony/http-kernel",
- "version": "v6.4.25",
+ "version": "v6.4.33",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-kernel.git",
- "reference": "a0ee3cea5cabf4ed960fd2ef57668ceeacdb6e15"
+ "reference": "73fa5c999d7f741ca544a97d3c791cc97890ae4d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-kernel/zipball/a0ee3cea5cabf4ed960fd2ef57668ceeacdb6e15",
- "reference": "a0ee3cea5cabf4ed960fd2ef57668ceeacdb6e15",
+ "url": "https://api.github.com/repos/symfony/http-kernel/zipball/73fa5c999d7f741ca544a97d3c791cc97890ae4d",
+ "reference": "73fa5c999d7f741ca544a97d3c791cc97890ae4d",
"shasum": ""
},
"require": {
@@ -3175,7 +3179,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/v6.4.25"
+ "source": "https://github.com/symfony/http-kernel/tree/v6.4.33"
},
"funding": [
{
@@ -3195,20 +3199,20 @@
"type": "tidelift"
}
],
- "time": "2025-08-29T07:55:45+00:00"
+ "time": "2026-01-28T10:02:13+00:00"
},
{
"name": "symfony/mailer",
- "version": "v6.4.25",
+ "version": "v6.4.31",
"source": {
"type": "git",
"url": "https://github.com/symfony/mailer.git",
- "reference": "628b43b45a3e6b15c8a633fb22df547ed9b492a2"
+ "reference": "8835f93333474780fda1b987cae37e33c3e026ca"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/mailer/zipball/628b43b45a3e6b15c8a633fb22df547ed9b492a2",
- "reference": "628b43b45a3e6b15c8a633fb22df547ed9b492a2",
+ "url": "https://api.github.com/repos/symfony/mailer/zipball/8835f93333474780fda1b987cae37e33c3e026ca",
+ "reference": "8835f93333474780fda1b987cae37e33c3e026ca",
"shasum": ""
},
"require": {
@@ -3259,7 +3263,7 @@
"description": "Helps sending emails",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/mailer/tree/v6.4.25"
+ "source": "https://github.com/symfony/mailer/tree/v6.4.31"
},
"funding": [
{
@@ -3279,20 +3283,20 @@
"type": "tidelift"
}
],
- "time": "2025-08-13T09:41:44+00:00"
+ "time": "2025-12-12T07:33:25+00:00"
},
{
"name": "symfony/mime",
- "version": "v6.4.24",
+ "version": "v6.4.32",
"source": {
"type": "git",
"url": "https://github.com/symfony/mime.git",
- "reference": "664d5e844a2de5e11c8255d0aef6bc15a9660ac7"
+ "reference": "7409686879ca36c09fc970a5fa8ff6e93504dba4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/mime/zipball/664d5e844a2de5e11c8255d0aef6bc15a9660ac7",
- "reference": "664d5e844a2de5e11c8255d0aef6bc15a9660ac7",
+ "url": "https://api.github.com/repos/symfony/mime/zipball/7409686879ca36c09fc970a5fa8ff6e93504dba4",
+ "reference": "7409686879ca36c09fc970a5fa8ff6e93504dba4",
"shasum": ""
},
"require": {
@@ -3348,7 +3352,7 @@
"mime-type"
],
"support": {
- "source": "https://github.com/symfony/mime/tree/v6.4.24"
+ "source": "https://github.com/symfony/mime/tree/v6.4.32"
},
"funding": [
{
@@ -3368,20 +3372,20 @@
"type": "tidelift"
}
],
- "time": "2025-07-15T12:02:45+00:00"
+ "time": "2026-01-04T11:53:14+00:00"
},
{
"name": "symfony/options-resolver",
- "version": "v6.4.25",
+ "version": "v6.4.30",
"source": {
"type": "git",
"url": "https://github.com/symfony/options-resolver.git",
- "reference": "d28e7e2db8a73e9511df892d36445f61314bbebe"
+ "reference": "eeaa8cabe54c7b3516938c72a4a161c0cc80a34f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/options-resolver/zipball/d28e7e2db8a73e9511df892d36445f61314bbebe",
- "reference": "d28e7e2db8a73e9511df892d36445f61314bbebe",
+ "url": "https://api.github.com/repos/symfony/options-resolver/zipball/eeaa8cabe54c7b3516938c72a4a161c0cc80a34f",
+ "reference": "eeaa8cabe54c7b3516938c72a4a161c0cc80a34f",
"shasum": ""
},
"require": {
@@ -3419,7 +3423,7 @@
"options"
],
"support": {
- "source": "https://github.com/symfony/options-resolver/tree/v6.4.25"
+ "source": "https://github.com/symfony/options-resolver/tree/v6.4.30"
},
"funding": [
{
@@ -3439,20 +3443,20 @@
"type": "tidelift"
}
],
- "time": "2025-08-04T17:06:28+00:00"
+ "time": "2025-11-12T13:06:53+00:00"
},
{
"name": "symfony/password-hasher",
- "version": "v6.4.24",
+ "version": "v6.4.32",
"source": {
"type": "git",
"url": "https://github.com/symfony/password-hasher.git",
- "reference": "dcab5ac87450aaed26483ba49c2ce86808da7557"
+ "reference": "fbdfa5a2ca218ec8bb9029517426df2d780bdba9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/password-hasher/zipball/dcab5ac87450aaed26483ba49c2ce86808da7557",
- "reference": "dcab5ac87450aaed26483ba49c2ce86808da7557",
+ "url": "https://api.github.com/repos/symfony/password-hasher/zipball/fbdfa5a2ca218ec8bb9029517426df2d780bdba9",
+ "reference": "fbdfa5a2ca218ec8bb9029517426df2d780bdba9",
"shasum": ""
},
"require": {
@@ -3495,7 +3499,7 @@
"password"
],
"support": {
- "source": "https://github.com/symfony/password-hasher/tree/v6.4.24"
+ "source": "https://github.com/symfony/password-hasher/tree/v6.4.32"
},
"funding": [
{
@@ -3515,7 +3519,7 @@
"type": "tidelift"
}
],
- "time": "2025-07-10T08:14:14+00:00"
+ "time": "2026-01-01T21:24:53+00:00"
},
{
"name": "symfony/polyfill-ctype",
@@ -4109,22 +4113,22 @@
},
{
"name": "symfony/property-access",
- "version": "v6.4.25",
+ "version": "v6.4.32",
"source": {
"type": "git",
"url": "https://github.com/symfony/property-access.git",
- "reference": "fedc771326d4978a7d3167fa009a509b06a2e168"
+ "reference": "6dfa655ac9e9860c05cabb287f34da86b18c237e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/property-access/zipball/fedc771326d4978a7d3167fa009a509b06a2e168",
- "reference": "fedc771326d4978a7d3167fa009a509b06a2e168",
+ "url": "https://api.github.com/repos/symfony/property-access/zipball/6dfa655ac9e9860c05cabb287f34da86b18c237e",
+ "reference": "6dfa655ac9e9860c05cabb287f34da86b18c237e",
"shasum": ""
},
"require": {
"php": ">=8.1",
"symfony/deprecation-contracts": "^2.5|^3",
- "symfony/property-info": "^5.4|^6.0|^7.0"
+ "symfony/property-info": "^6.4.32|~7.3.10|^7.4.4"
},
"require-dev": {
"symfony/cache": "^5.4|^6.0|^7.0"
@@ -4166,7 +4170,7 @@
"reflection"
],
"support": {
- "source": "https://github.com/symfony/property-access/tree/v6.4.25"
+ "source": "https://github.com/symfony/property-access/tree/v6.4.32"
},
"funding": [
{
@@ -4186,20 +4190,20 @@
"type": "tidelift"
}
],
- "time": "2025-08-12T15:42:57+00:00"
+ "time": "2026-01-05T08:25:17+00:00"
},
{
"name": "symfony/property-info",
- "version": "v6.4.24",
+ "version": "v6.4.33",
"source": {
"type": "git",
"url": "https://github.com/symfony/property-info.git",
- "reference": "1056ae3621eeddd78d7c5ec074f1c1784324eec6"
+ "reference": "7d961dbb543fcfaa57fa55e555edd466e90160be"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/property-info/zipball/1056ae3621eeddd78d7c5ec074f1c1784324eec6",
- "reference": "1056ae3621eeddd78d7c5ec074f1c1784324eec6",
+ "url": "https://api.github.com/repos/symfony/property-info/zipball/7d961dbb543fcfaa57fa55e555edd466e90160be",
+ "reference": "7d961dbb543fcfaa57fa55e555edd466e90160be",
"shasum": ""
},
"require": {
@@ -4208,7 +4212,7 @@
},
"conflict": {
"doctrine/annotations": "<1.12",
- "phpdocumentor/reflection-docblock": "<5.2",
+ "phpdocumentor/reflection-docblock": "<5.2|>=6",
"phpdocumentor/type-resolver": "<1.5.1",
"symfony/cache": "<5.4",
"symfony/dependency-injection": "<5.4|>=6.0,<6.4",
@@ -4256,7 +4260,7 @@
"validator"
],
"support": {
- "source": "https://github.com/symfony/property-info/tree/v6.4.24"
+ "source": "https://github.com/symfony/property-info/tree/v6.4.33"
},
"funding": [
{
@@ -4276,20 +4280,20 @@
"type": "tidelift"
}
],
- "time": "2025-07-14T16:38:25+00:00"
+ "time": "2026-01-27T15:12:57+00:00"
},
{
"name": "symfony/routing",
- "version": "v6.4.24",
+ "version": "v6.4.32",
"source": {
"type": "git",
"url": "https://github.com/symfony/routing.git",
- "reference": "e4f94e625c8e6f910aa004a0042f7b2d398278f5"
+ "reference": "0dc6253e864e71b486e8ba4970a56ab849106ebe"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/routing/zipball/e4f94e625c8e6f910aa004a0042f7b2d398278f5",
- "reference": "e4f94e625c8e6f910aa004a0042f7b2d398278f5",
+ "url": "https://api.github.com/repos/symfony/routing/zipball/0dc6253e864e71b486e8ba4970a56ab849106ebe",
+ "reference": "0dc6253e864e71b486e8ba4970a56ab849106ebe",
"shasum": ""
},
"require": {
@@ -4343,7 +4347,7 @@
"url"
],
"support": {
- "source": "https://github.com/symfony/routing/tree/v6.4.24"
+ "source": "https://github.com/symfony/routing/tree/v6.4.32"
},
"funding": [
{
@@ -4363,20 +4367,20 @@
"type": "tidelift"
}
],
- "time": "2025-07-15T08:46:37+00:00"
+ "time": "2026-01-12T08:31:19+00:00"
},
{
"name": "symfony/security-core",
- "version": "v6.4.26",
+ "version": "v6.4.31",
"source": {
"type": "git",
"url": "https://github.com/symfony/security-core.git",
- "reference": "8b7c95bf04d82fcd0c06a918b2d849bfb2ab9cc0"
+ "reference": "fa269ad61a021cc54329dc96e57bed78ba720bfe"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/security-core/zipball/8b7c95bf04d82fcd0c06a918b2d849bfb2ab9cc0",
- "reference": "8b7c95bf04d82fcd0c06a918b2d849bfb2ab9cc0",
+ "url": "https://api.github.com/repos/symfony/security-core/zipball/fa269ad61a021cc54329dc96e57bed78ba720bfe",
+ "reference": "fa269ad61a021cc54329dc96e57bed78ba720bfe",
"shasum": ""
},
"require": {
@@ -4433,7 +4437,7 @@
"description": "Symfony Security Component - Core Library",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/security-core/tree/v6.4.26"
+ "source": "https://github.com/symfony/security-core/tree/v6.4.31"
},
"funding": [
{
@@ -4453,20 +4457,20 @@
"type": "tidelift"
}
],
- "time": "2025-09-02T19:15:26+00:00"
+ "time": "2025-12-17T22:32:13+00:00"
},
{
"name": "symfony/security-csrf",
- "version": "v6.4.24",
+ "version": "v6.4.31",
"source": {
"type": "git",
"url": "https://github.com/symfony/security-csrf.git",
- "reference": "9a1efc8c10b86bcedc9233affd10c716b54ca1b7"
+ "reference": "52f62836fcb19cd351ef3a2aa9cf61a489e8990f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/security-csrf/zipball/9a1efc8c10b86bcedc9233affd10c716b54ca1b7",
- "reference": "9a1efc8c10b86bcedc9233affd10c716b54ca1b7",
+ "url": "https://api.github.com/repos/symfony/security-csrf/zipball/52f62836fcb19cd351ef3a2aa9cf61a489e8990f",
+ "reference": "52f62836fcb19cd351ef3a2aa9cf61a489e8990f",
"shasum": ""
},
"require": {
@@ -4505,7 +4509,7 @@
"description": "Symfony Security Component - CSRF Library",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/security-csrf/tree/v6.4.24"
+ "source": "https://github.com/symfony/security-csrf/tree/v6.4.31"
},
"funding": [
{
@@ -4525,7 +4529,7 @@
"type": "tidelift"
}
],
- "time": "2025-07-10T08:14:14+00:00"
+ "time": "2025-12-17T22:32:13+00:00"
},
{
"name": "symfony/service-contracts",
@@ -4616,16 +4620,16 @@
},
{
"name": "symfony/string",
- "version": "v6.4.25",
+ "version": "v6.4.30",
"source": {
"type": "git",
"url": "https://github.com/symfony/string.git",
- "reference": "7cdec7edfaf2cdd9c18901e35bcf9653d6209ff1"
+ "reference": "50590a057841fa6bf69d12eceffce3465b9e32cb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/string/zipball/7cdec7edfaf2cdd9c18901e35bcf9653d6209ff1",
- "reference": "7cdec7edfaf2cdd9c18901e35bcf9653d6209ff1",
+ "url": "https://api.github.com/repos/symfony/string/zipball/50590a057841fa6bf69d12eceffce3465b9e32cb",
+ "reference": "50590a057841fa6bf69d12eceffce3465b9e32cb",
"shasum": ""
},
"require": {
@@ -4639,7 +4643,6 @@
"symfony/translation-contracts": "<2.5"
},
"require-dev": {
- "symfony/error-handler": "^5.4|^6.0|^7.0",
"symfony/http-client": "^5.4|^6.0|^7.0",
"symfony/intl": "^6.2|^7.0",
"symfony/translation-contracts": "^2.5|^3.0",
@@ -4682,7 +4685,7 @@
"utf8"
],
"support": {
- "source": "https://github.com/symfony/string/tree/v6.4.25"
+ "source": "https://github.com/symfony/string/tree/v6.4.30"
},
"funding": [
{
@@ -4702,20 +4705,20 @@
"type": "tidelift"
}
],
- "time": "2025-08-22T12:33:20+00:00"
+ "time": "2025-11-21T18:03:05+00:00"
},
{
"name": "symfony/translation-contracts",
- "version": "v3.6.0",
+ "version": "v3.6.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation-contracts.git",
- "reference": "df210c7a2573f1913b2d17cc95f90f53a73d8f7d"
+ "reference": "65a8bc82080447fae78373aa10f8d13b38338977"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/df210c7a2573f1913b2d17cc95f90f53a73d8f7d",
- "reference": "df210c7a2573f1913b2d17cc95f90f53a73d8f7d",
+ "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/65a8bc82080447fae78373aa10f8d13b38338977",
+ "reference": "65a8bc82080447fae78373aa10f8d13b38338977",
"shasum": ""
},
"require": {
@@ -4764,7 +4767,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/translation-contracts/tree/v3.6.0"
+ "source": "https://github.com/symfony/translation-contracts/tree/v3.6.1"
},
"funding": [
{
@@ -4775,25 +4778,29 @@
"url": "https://github.com/fabpot",
"type": "github"
},
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
- "time": "2024-09-27T08:32:26+00:00"
+ "time": "2025-07-15T13:41:35+00:00"
},
{
"name": "symfony/twig-bridge",
- "version": "v6.4.25",
+ "version": "v6.4.32",
"source": {
"type": "git",
"url": "https://github.com/symfony/twig-bridge.git",
- "reference": "9d13e87591c9de3221c8d6f23cd9a2b5958607bf"
+ "reference": "1dcf980dd4f79885b986befdeb1c1bc0d6aedfc8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/9d13e87591c9de3221c8d6f23cd9a2b5958607bf",
- "reference": "9d13e87591c9de3221c8d6f23cd9a2b5958607bf",
+ "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/1dcf980dd4f79885b986befdeb1c1bc0d6aedfc8",
+ "reference": "1dcf980dd4f79885b986befdeb1c1bc0d6aedfc8",
"shasum": ""
},
"require": {
@@ -4806,7 +4813,7 @@
"phpdocumentor/reflection-docblock": "<3.2.2",
"phpdocumentor/type-resolver": "<1.4.0",
"symfony/console": "<5.4",
- "symfony/form": "<6.3",
+ "symfony/form": "<6.4.32|>7,<7.3.10|>7.4,<7.4.4",
"symfony/http-foundation": "<5.4",
"symfony/http-kernel": "<6.4",
"symfony/mime": "<6.2",
@@ -4824,7 +4831,7 @@
"symfony/dependency-injection": "^5.4|^6.0|^7.0",
"symfony/expression-language": "^5.4|^6.0|^7.0",
"symfony/finder": "^5.4|^6.0|^7.0",
- "symfony/form": "^6.4.20|^7.2.5",
+ "symfony/form": "^6.4.32|~7.3.10|^7.4.4",
"symfony/html-sanitizer": "^6.1|^7.0",
"symfony/http-foundation": "^5.4|^6.0|^7.0",
"symfony/http-kernel": "^6.4|^7.0",
@@ -4873,7 +4880,7 @@
"description": "Provides integration for Twig with various Symfony components",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/twig-bridge/tree/v6.4.25"
+ "source": "https://github.com/symfony/twig-bridge/tree/v6.4.32"
},
"funding": [
{
@@ -4893,20 +4900,20 @@
"type": "tidelift"
}
],
- "time": "2025-08-13T09:41:44+00:00"
+ "time": "2026-01-03T23:03:08+00:00"
},
{
"name": "symfony/twig-bundle",
- "version": "v6.4.24",
+ "version": "v6.4.32",
"source": {
"type": "git",
"url": "https://github.com/symfony/twig-bundle.git",
- "reference": "3b48b6e8225495c6d2438828982b4d219ca565ba"
+ "reference": "a5c8dcc11a5bf9c96320da20070d2e158a4e0b30"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/3b48b6e8225495c6d2438828982b4d219ca565ba",
- "reference": "3b48b6e8225495c6d2438828982b4d219ca565ba",
+ "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/a5c8dcc11a5bf9c96320da20070d2e158a4e0b30",
+ "reference": "a5c8dcc11a5bf9c96320da20070d2e158a4e0b30",
"shasum": ""
},
"require": {
@@ -4961,7 +4968,7 @@
"description": "Provides a tight integration of Twig into the Symfony full-stack framework",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/twig-bundle/tree/v6.4.24"
+ "source": "https://github.com/symfony/twig-bundle/tree/v6.4.32"
},
"funding": [
{
@@ -4981,20 +4988,20 @@
"type": "tidelift"
}
],
- "time": "2025-07-10T08:14:14+00:00"
+ "time": "2026-01-05T12:44:39+00:00"
},
{
"name": "symfony/validator",
- "version": "v6.4.29",
+ "version": "v6.4.33",
"source": {
"type": "git",
"url": "https://github.com/symfony/validator.git",
- "reference": "99df8a769e64e399f510166141ea74f450e8dd1d"
+ "reference": "da1a40418439c0483ca7e0d4ae4c4f744f6b8536"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/validator/zipball/99df8a769e64e399f510166141ea74f450e8dd1d",
- "reference": "99df8a769e64e399f510166141ea74f450e8dd1d",
+ "url": "https://api.github.com/repos/symfony/validator/zipball/da1a40418439c0483ca7e0d4ae4c4f744f6b8536",
+ "reference": "da1a40418439c0483ca7e0d4ae4c4f744f6b8536",
"shasum": ""
},
"require": {
@@ -5062,7 +5069,7 @@
"description": "Provides tools to validate values",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/validator/tree/v6.4.29"
+ "source": "https://github.com/symfony/validator/tree/v6.4.33"
},
"funding": [
{
@@ -5082,20 +5089,20 @@
"type": "tidelift"
}
],
- "time": "2025-11-06T20:26:06+00:00"
+ "time": "2026-01-26T16:20:53+00:00"
},
{
"name": "symfony/var-dumper",
- "version": "v6.4.26",
+ "version": "v6.4.32",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-dumper.git",
- "reference": "cfae1497a2f1eaad78dbc0590311c599c7178d4a"
+ "reference": "131fc9915e0343052af5ed5040401b481ca192aa"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/var-dumper/zipball/cfae1497a2f1eaad78dbc0590311c599c7178d4a",
- "reference": "cfae1497a2f1eaad78dbc0590311c599c7178d4a",
+ "url": "https://api.github.com/repos/symfony/var-dumper/zipball/131fc9915e0343052af5ed5040401b481ca192aa",
+ "reference": "131fc9915e0343052af5ed5040401b481ca192aa",
"shasum": ""
},
"require": {
@@ -5150,7 +5157,7 @@
"dump"
],
"support": {
- "source": "https://github.com/symfony/var-dumper/tree/v6.4.26"
+ "source": "https://github.com/symfony/var-dumper/tree/v6.4.32"
},
"funding": [
{
@@ -5170,7 +5177,7 @@
"type": "tidelift"
}
],
- "time": "2025-09-25T15:37:27+00:00"
+ "time": "2026-01-01T13:34:06+00:00"
},
{
"name": "symfony/var-exporter",
@@ -5255,16 +5262,16 @@
},
{
"name": "symfony/yaml",
- "version": "v6.4.25",
+ "version": "v6.4.30",
"source": {
"type": "git",
"url": "https://github.com/symfony/yaml.git",
- "reference": "e54b060bc9c3dc3d4258bf0d165d0064e755f565"
+ "reference": "8207ae83da19ee3748d6d4f567b4d9a7c656e331"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/yaml/zipball/e54b060bc9c3dc3d4258bf0d165d0064e755f565",
- "reference": "e54b060bc9c3dc3d4258bf0d165d0064e755f565",
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/8207ae83da19ee3748d6d4f567b4d9a7c656e331",
+ "reference": "8207ae83da19ee3748d6d4f567b4d9a7c656e331",
"shasum": ""
},
"require": {
@@ -5307,7 +5314,7 @@
"description": "Loads and dumps YAML files",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/yaml/tree/v6.4.25"
+ "source": "https://github.com/symfony/yaml/tree/v6.4.30"
},
"funding": [
{
@@ -5327,7 +5334,7 @@
"type": "tidelift"
}
],
- "time": "2025-08-26T16:59:00+00:00"
+ "time": "2025-12-02T11:50:18+00:00"
},
{
"name": "tecnickcom/tcpdf",
@@ -5462,16 +5469,16 @@
},
{
"name": "twig/twig",
- "version": "v3.21.1",
+ "version": "v3.23.0",
"source": {
"type": "git",
"url": "https://github.com/twigphp/Twig.git",
- "reference": "285123877d4dd97dd7c11842ac5fb7e86e60d81d"
+ "reference": "a64dc5d2cc7d6cafb9347f6cd802d0d06d0351c9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/twigphp/Twig/zipball/285123877d4dd97dd7c11842ac5fb7e86e60d81d",
- "reference": "285123877d4dd97dd7c11842ac5fb7e86e60d81d",
+ "url": "https://api.github.com/repos/twigphp/Twig/zipball/a64dc5d2cc7d6cafb9347f6cd802d0d06d0351c9",
+ "reference": "a64dc5d2cc7d6cafb9347f6cd802d0d06d0351c9",
"shasum": ""
},
"require": {
@@ -5525,7 +5532,7 @@
],
"support": {
"issues": "https://github.com/twigphp/Twig/issues",
- "source": "https://github.com/twigphp/Twig/tree/v3.21.1"
+ "source": "https://github.com/twigphp/Twig/tree/v3.23.0"
},
"funding": [
{
@@ -5537,7 +5544,7 @@
"type": "tidelift"
}
],
- "time": "2025-05-03T07:21:55+00:00"
+ "time": "2026-01-23T21:00:41+00:00"
}
],
"packages-dev": [
@@ -5609,16 +5616,16 @@
},
{
"name": "symfony/web-profiler-bundle",
- "version": "v6.4.25",
+ "version": "v6.4.32",
"source": {
"type": "git",
"url": "https://github.com/symfony/web-profiler-bundle.git",
- "reference": "4c1754d6b3ffe52e9eaed0d9a392eb43a60fc910"
+ "reference": "011f59e3f3d20f60d11b4e78b8dc63504f56e145"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/4c1754d6b3ffe52e9eaed0d9a392eb43a60fc910",
- "reference": "4c1754d6b3ffe52e9eaed0d9a392eb43a60fc910",
+ "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/011f59e3f3d20f60d11b4e78b8dc63504f56e145",
+ "reference": "011f59e3f3d20f60d11b4e78b8dc63504f56e145",
"shasum": ""
},
"require": {
@@ -5671,7 +5678,7 @@
"dev"
],
"support": {
- "source": "https://github.com/symfony/web-profiler-bundle/tree/v6.4.25"
+ "source": "https://github.com/symfony/web-profiler-bundle/tree/v6.4.32"
},
"funding": [
{
@@ -5691,7 +5698,7 @@
"type": "tidelift"
}
],
- "time": "2025-08-07T12:02:05+00:00"
+ "time": "2026-01-06T09:13:42+00:00"
}
],
"aliases": [],
diff --git a/lib/bin/patch-type-declarations.bat b/lib/bin/patch-type-declarations.bat
new file mode 100755
index 000000000..2b0707968
--- /dev/null
+++ b/lib/bin/patch-type-declarations.bat
@@ -0,0 +1,5 @@
+@ECHO OFF
+setlocal DISABLEDELAYEDEXPANSION
+SET BIN_TARGET=%~dp0/patch-type-declarations
+SET COMPOSER_RUNTIME_BIN_DIR=%~dp0
+php "%BIN_TARGET%" %*
diff --git a/lib/bin/yaml-lint.bat b/lib/bin/yaml-lint.bat
new file mode 100755
index 000000000..fa7663748
--- /dev/null
+++ b/lib/bin/yaml-lint.bat
@@ -0,0 +1,5 @@
+@ECHO OFF
+setlocal DISABLEDELAYEDEXPANSION
+SET BIN_TARGET=%~dp0/yaml-lint
+SET COMPOSER_RUNTIME_BIN_DIR=%~dp0
+php "%BIN_TARGET%" %*
diff --git a/lib/composer/autoload_classmap.php b/lib/composer/autoload_classmap.php
index 973dc980e..ecfd37d3b 100644
--- a/lib/composer/autoload_classmap.php
+++ b/lib/composer/autoload_classmap.php
@@ -1595,6 +1595,8 @@ return array(
'Symfony\\Bridge\\Twig\\Node\\StopwatchNode' => $vendorDir . '/symfony/twig-bridge/Node/StopwatchNode.php',
'Symfony\\Bridge\\Twig\\Node\\TransDefaultDomainNode' => $vendorDir . '/symfony/twig-bridge/Node/TransDefaultDomainNode.php',
'Symfony\\Bridge\\Twig\\Node\\TransNode' => $vendorDir . '/symfony/twig-bridge/Node/TransNode.php',
+ 'Symfony\\Bridge\\Twig\\Test\\FormLayoutTestCase' => $vendorDir . '/symfony/twig-bridge/Test/FormLayoutTestCase.php',
+ 'Symfony\\Bridge\\Twig\\Test\\Traits\\RuntimeLoaderProvider' => $vendorDir . '/symfony/twig-bridge/Test/Traits/RuntimeLoaderProvider.php',
'Symfony\\Bridge\\Twig\\TokenParser\\DumpTokenParser' => $vendorDir . '/symfony/twig-bridge/TokenParser/DumpTokenParser.php',
'Symfony\\Bridge\\Twig\\TokenParser\\FormThemeTokenParser' => $vendorDir . '/symfony/twig-bridge/TokenParser/FormThemeTokenParser.php',
'Symfony\\Bridge\\Twig\\TokenParser\\StopwatchTokenParser' => $vendorDir . '/symfony/twig-bridge/TokenParser/StopwatchTokenParser.php',
@@ -1769,22 +1771,43 @@ return array(
'Symfony\\Component\\Cache\\Psr16Cache' => $vendorDir . '/symfony/cache/Psr16Cache.php',
'Symfony\\Component\\Cache\\ResettableInterface' => $vendorDir . '/symfony/cache/ResettableInterface.php',
'Symfony\\Component\\Cache\\Traits\\AbstractAdapterTrait' => $vendorDir . '/symfony/cache/Traits/AbstractAdapterTrait.php',
+ 'Symfony\\Component\\Cache\\Traits\\CachedValueInterface' => $vendorDir . '/symfony/cache/Traits/CachedValueInterface.php',
'Symfony\\Component\\Cache\\Traits\\ContractsTrait' => $vendorDir . '/symfony/cache/Traits/ContractsTrait.php',
'Symfony\\Component\\Cache\\Traits\\FilesystemCommonTrait' => $vendorDir . '/symfony/cache/Traits/FilesystemCommonTrait.php',
'Symfony\\Component\\Cache\\Traits\\FilesystemTrait' => $vendorDir . '/symfony/cache/Traits/FilesystemTrait.php',
'Symfony\\Component\\Cache\\Traits\\ProxyTrait' => $vendorDir . '/symfony/cache/Traits/ProxyTrait.php',
'Symfony\\Component\\Cache\\Traits\\Redis5Proxy' => $vendorDir . '/symfony/cache/Traits/Redis5Proxy.php',
+ 'Symfony\\Component\\Cache\\Traits\\Redis61ProxyTrait' => $vendorDir . '/symfony/cache/Traits/Redis61ProxyTrait.php',
+ 'Symfony\\Component\\Cache\\Traits\\Redis62ProxyTrait' => $vendorDir . '/symfony/cache/Traits/Redis62ProxyTrait.php',
+ 'Symfony\\Component\\Cache\\Traits\\Redis63ProxyTrait' => $vendorDir . '/symfony/cache/Traits/Redis63ProxyTrait.php',
'Symfony\\Component\\Cache\\Traits\\Redis6Proxy' => $vendorDir . '/symfony/cache/Traits/Redis6Proxy.php',
- 'Symfony\\Component\\Cache\\Traits\\Redis6ProxyTrait' => $vendorDir . '/symfony/cache/Traits/Redis6ProxyTrait.php',
'Symfony\\Component\\Cache\\Traits\\RedisCluster5Proxy' => $vendorDir . '/symfony/cache/Traits/RedisCluster5Proxy.php',
+ 'Symfony\\Component\\Cache\\Traits\\RedisCluster61ProxyTrait' => $vendorDir . '/symfony/cache/Traits/RedisCluster61ProxyTrait.php',
+ 'Symfony\\Component\\Cache\\Traits\\RedisCluster62ProxyTrait' => $vendorDir . '/symfony/cache/Traits/RedisCluster62ProxyTrait.php',
+ 'Symfony\\Component\\Cache\\Traits\\RedisCluster63ProxyTrait' => $vendorDir . '/symfony/cache/Traits/RedisCluster63ProxyTrait.php',
'Symfony\\Component\\Cache\\Traits\\RedisCluster6Proxy' => $vendorDir . '/symfony/cache/Traits/RedisCluster6Proxy.php',
- 'Symfony\\Component\\Cache\\Traits\\RedisCluster6ProxyTrait' => $vendorDir . '/symfony/cache/Traits/RedisCluster6ProxyTrait.php',
'Symfony\\Component\\Cache\\Traits\\RedisClusterNodeProxy' => $vendorDir . '/symfony/cache/Traits/RedisClusterNodeProxy.php',
'Symfony\\Component\\Cache\\Traits\\RedisClusterProxy' => $vendorDir . '/symfony/cache/Traits/RedisClusterProxy.php',
'Symfony\\Component\\Cache\\Traits\\RedisProxy' => $vendorDir . '/symfony/cache/Traits/RedisProxy.php',
'Symfony\\Component\\Cache\\Traits\\RedisTrait' => $vendorDir . '/symfony/cache/Traits/RedisTrait.php',
'Symfony\\Component\\Cache\\Traits\\RelayProxy' => $vendorDir . '/symfony/cache/Traits/RelayProxy.php',
'Symfony\\Component\\Cache\\Traits\\RelayProxyTrait' => $vendorDir . '/symfony/cache/Traits/RelayProxyTrait.php',
+ 'Symfony\\Component\\Cache\\Traits\\Relay\\BgsaveTrait' => $vendorDir . '/symfony/cache/Traits/Relay/BgsaveTrait.php',
+ 'Symfony\\Component\\Cache\\Traits\\Relay\\CopyTrait' => $vendorDir . '/symfony/cache/Traits/Relay/CopyTrait.php',
+ 'Symfony\\Component\\Cache\\Traits\\Relay\\FtTrait' => $vendorDir . '/symfony/cache/Traits/Relay/FtTrait.php',
+ 'Symfony\\Component\\Cache\\Traits\\Relay\\GeosearchTrait' => $vendorDir . '/symfony/cache/Traits/Relay/GeosearchTrait.php',
+ 'Symfony\\Component\\Cache\\Traits\\Relay\\GetWithMetaTrait' => $vendorDir . '/symfony/cache/Traits/Relay/GetWithMetaTrait.php',
+ 'Symfony\\Component\\Cache\\Traits\\Relay\\GetrangeTrait' => $vendorDir . '/symfony/cache/Traits/Relay/GetrangeTrait.php',
+ 'Symfony\\Component\\Cache\\Traits\\Relay\\HsetTrait' => $vendorDir . '/symfony/cache/Traits/Relay/HsetTrait.php',
+ 'Symfony\\Component\\Cache\\Traits\\Relay\\IsTrackedTrait' => $vendorDir . '/symfony/cache/Traits/Relay/IsTrackedTrait.php',
+ 'Symfony\\Component\\Cache\\Traits\\Relay\\MoveTrait' => $vendorDir . '/symfony/cache/Traits/Relay/MoveTrait.php',
+ 'Symfony\\Component\\Cache\\Traits\\Relay\\NullableReturnTrait' => $vendorDir . '/symfony/cache/Traits/Relay/NullableReturnTrait.php',
+ 'Symfony\\Component\\Cache\\Traits\\Relay\\PfcountTrait' => $vendorDir . '/symfony/cache/Traits/Relay/PfcountTrait.php',
+ 'Symfony\\Component\\Cache\\Traits\\Relay\\Relay11Trait' => $vendorDir . '/symfony/cache/Traits/Relay/Relay11Trait.php',
+ 'Symfony\\Component\\Cache\\Traits\\Relay\\Relay121Trait' => $vendorDir . '/symfony/cache/Traits/Relay/Relay121Trait.php',
+ 'Symfony\\Component\\Cache\\Traits\\Relay\\Relay12Trait' => $vendorDir . '/symfony/cache/Traits/Relay/Relay12Trait.php',
+ 'Symfony\\Component\\Cache\\Traits\\Relay\\Relay20Trait' => $vendorDir . '/symfony/cache/Traits/Relay/Relay20Trait.php',
+ 'Symfony\\Component\\Cache\\Traits\\Relay\\SwapdbTrait' => $vendorDir . '/symfony/cache/Traits/Relay/SwapdbTrait.php',
'Symfony\\Component\\Config\\Builder\\ClassBuilder' => $vendorDir . '/symfony/config/Builder/ClassBuilder.php',
'Symfony\\Component\\Config\\Builder\\ConfigBuilderGenerator' => $vendorDir . '/symfony/config/Builder/ConfigBuilderGenerator.php',
'Symfony\\Component\\Config\\Builder\\ConfigBuilderGeneratorInterface' => $vendorDir . '/symfony/config/Builder/ConfigBuilderGeneratorInterface.php',
@@ -1949,6 +1972,7 @@ return array(
'Symfony\\Component\\Console\\Helper\\TableRows' => $vendorDir . '/symfony/console/Helper/TableRows.php',
'Symfony\\Component\\Console\\Helper\\TableSeparator' => $vendorDir . '/symfony/console/Helper/TableSeparator.php',
'Symfony\\Component\\Console\\Helper\\TableStyle' => $vendorDir . '/symfony/console/Helper/TableStyle.php',
+ 'Symfony\\Component\\Console\\Helper\\TerminalInputHelper' => $vendorDir . '/symfony/console/Helper/TerminalInputHelper.php',
'Symfony\\Component\\Console\\Input\\ArgvInput' => $vendorDir . '/symfony/console/Input/ArgvInput.php',
'Symfony\\Component\\Console\\Input\\ArrayInput' => $vendorDir . '/symfony/console/Input/ArrayInput.php',
'Symfony\\Component\\Console\\Input\\Input' => $vendorDir . '/symfony/console/Input/Input.php',
@@ -2515,6 +2539,13 @@ return array(
'Symfony\\Component\\Form\\SubmitButton' => $vendorDir . '/symfony/form/SubmitButton.php',
'Symfony\\Component\\Form\\SubmitButtonBuilder' => $vendorDir . '/symfony/form/SubmitButtonBuilder.php',
'Symfony\\Component\\Form\\SubmitButtonTypeInterface' => $vendorDir . '/symfony/form/SubmitButtonTypeInterface.php',
+ 'Symfony\\Component\\Form\\Test\\FormBuilderInterface' => $vendorDir . '/symfony/form/Test/FormBuilderInterface.php',
+ 'Symfony\\Component\\Form\\Test\\FormIntegrationTestCase' => $vendorDir . '/symfony/form/Test/FormIntegrationTestCase.php',
+ 'Symfony\\Component\\Form\\Test\\FormInterface' => $vendorDir . '/symfony/form/Test/FormInterface.php',
+ 'Symfony\\Component\\Form\\Test\\FormPerformanceTestCase' => $vendorDir . '/symfony/form/Test/FormPerformanceTestCase.php',
+ 'Symfony\\Component\\Form\\Test\\Traits\\RunTestTrait' => $vendorDir . '/symfony/form/Test/Traits/RunTestTrait.php',
+ 'Symfony\\Component\\Form\\Test\\Traits\\ValidatorExtensionTrait' => $vendorDir . '/symfony/form/Test/Traits/ValidatorExtensionTrait.php',
+ 'Symfony\\Component\\Form\\Test\\TypeTestCase' => $vendorDir . '/symfony/form/Test/TypeTestCase.php',
'Symfony\\Component\\Form\\Util\\FormUtil' => $vendorDir . '/symfony/form/Util/FormUtil.php',
'Symfony\\Component\\Form\\Util\\InheritDataAwareIterator' => $vendorDir . '/symfony/form/Util/InheritDataAwareIterator.php',
'Symfony\\Component\\Form\\Util\\OptionsResolverWrapper' => $vendorDir . '/symfony/form/Util/OptionsResolverWrapper.php',
@@ -2812,6 +2843,9 @@ return array(
'Symfony\\Component\\Mailer\\Messenger\\MessageHandler' => $vendorDir . '/symfony/mailer/Messenger/MessageHandler.php',
'Symfony\\Component\\Mailer\\Messenger\\SendEmailMessage' => $vendorDir . '/symfony/mailer/Messenger/SendEmailMessage.php',
'Symfony\\Component\\Mailer\\SentMessage' => $vendorDir . '/symfony/mailer/SentMessage.php',
+ 'Symfony\\Component\\Mailer\\Test\\Constraint\\EmailCount' => $vendorDir . '/symfony/mailer/Test/Constraint/EmailCount.php',
+ 'Symfony\\Component\\Mailer\\Test\\Constraint\\EmailIsQueued' => $vendorDir . '/symfony/mailer/Test/Constraint/EmailIsQueued.php',
+ 'Symfony\\Component\\Mailer\\Test\\TransportFactoryTestCase' => $vendorDir . '/symfony/mailer/Test/TransportFactoryTestCase.php',
'Symfony\\Component\\Mailer\\Transport' => $vendorDir . '/symfony/mailer/Transport.php',
'Symfony\\Component\\Mailer\\Transport\\AbstractApiTransport' => $vendorDir . '/symfony/mailer/Transport/AbstractApiTransport.php',
'Symfony\\Component\\Mailer\\Transport\\AbstractHttpTransport' => $vendorDir . '/symfony/mailer/Transport/AbstractHttpTransport.php',
@@ -2902,6 +2936,13 @@ return array(
'Symfony\\Component\\Mime\\Part\\SMimePart' => $vendorDir . '/symfony/mime/Part/SMimePart.php',
'Symfony\\Component\\Mime\\Part\\TextPart' => $vendorDir . '/symfony/mime/Part/TextPart.php',
'Symfony\\Component\\Mime\\RawMessage' => $vendorDir . '/symfony/mime/RawMessage.php',
+ 'Symfony\\Component\\Mime\\Test\\Constraint\\EmailAddressContains' => $vendorDir . '/symfony/mime/Test/Constraint/EmailAddressContains.php',
+ 'Symfony\\Component\\Mime\\Test\\Constraint\\EmailAttachmentCount' => $vendorDir . '/symfony/mime/Test/Constraint/EmailAttachmentCount.php',
+ 'Symfony\\Component\\Mime\\Test\\Constraint\\EmailHasHeader' => $vendorDir . '/symfony/mime/Test/Constraint/EmailHasHeader.php',
+ 'Symfony\\Component\\Mime\\Test\\Constraint\\EmailHeaderSame' => $vendorDir . '/symfony/mime/Test/Constraint/EmailHeaderSame.php',
+ 'Symfony\\Component\\Mime\\Test\\Constraint\\EmailHtmlBodyContains' => $vendorDir . '/symfony/mime/Test/Constraint/EmailHtmlBodyContains.php',
+ 'Symfony\\Component\\Mime\\Test\\Constraint\\EmailSubjectContains' => $vendorDir . '/symfony/mime/Test/Constraint/EmailSubjectContains.php',
+ 'Symfony\\Component\\Mime\\Test\\Constraint\\EmailTextBodyContains' => $vendorDir . '/symfony/mime/Test/Constraint/EmailTextBodyContains.php',
'Symfony\\Component\\OptionsResolver\\Debug\\OptionsResolverIntrospector' => $vendorDir . '/symfony/options-resolver/Debug/OptionsResolverIntrospector.php',
'Symfony\\Component\\OptionsResolver\\Exception\\AccessException' => $vendorDir . '/symfony/options-resolver/Exception/AccessException.php',
'Symfony\\Component\\OptionsResolver\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/options-resolver/Exception/ExceptionInterface.php',
@@ -3127,6 +3168,7 @@ return array(
'Symfony\\Component\\Security\\Core\\Signature\\Exception\\InvalidSignatureException' => $vendorDir . '/symfony/security-core/Signature/Exception/InvalidSignatureException.php',
'Symfony\\Component\\Security\\Core\\Signature\\ExpiredSignatureStorage' => $vendorDir . '/symfony/security-core/Signature/ExpiredSignatureStorage.php',
'Symfony\\Component\\Security\\Core\\Signature\\SignatureHasher' => $vendorDir . '/symfony/security-core/Signature/SignatureHasher.php',
+ 'Symfony\\Component\\Security\\Core\\Test\\AccessDecisionStrategyTestCase' => $vendorDir . '/symfony/security-core/Test/AccessDecisionStrategyTestCase.php',
'Symfony\\Component\\Security\\Core\\User\\AttributesBasedUserProviderInterface' => $vendorDir . '/symfony/security-core/User/AttributesBasedUserProviderInterface.php',
'Symfony\\Component\\Security\\Core\\User\\ChainUserChecker' => $vendorDir . '/symfony/security-core/User/ChainUserChecker.php',
'Symfony\\Component\\Security\\Core\\User\\ChainUserProvider' => $vendorDir . '/symfony/security-core/User/ChainUserProvider.php',
@@ -3382,6 +3424,7 @@ return array(
'Symfony\\Component\\Validator\\Mapping\\PropertyMetadataInterface' => $vendorDir . '/symfony/validator/Mapping/PropertyMetadataInterface.php',
'Symfony\\Component\\Validator\\Mapping\\TraversalStrategy' => $vendorDir . '/symfony/validator/Mapping/TraversalStrategy.php',
'Symfony\\Component\\Validator\\ObjectInitializerInterface' => $vendorDir . '/symfony/validator/ObjectInitializerInterface.php',
+ 'Symfony\\Component\\Validator\\Test\\ConstraintValidatorTestCase' => $vendorDir . '/symfony/validator/Test/ConstraintValidatorTestCase.php',
'Symfony\\Component\\Validator\\Util\\PropertyPath' => $vendorDir . '/symfony/validator/Util/PropertyPath.php',
'Symfony\\Component\\Validator\\Validation' => $vendorDir . '/symfony/validator/Validation.php',
'Symfony\\Component\\Validator\\ValidatorBuilder' => $vendorDir . '/symfony/validator/ValidatorBuilder.php',
@@ -3457,6 +3500,7 @@ return array(
'Symfony\\Component\\VarDumper\\Exception\\ThrowingCasterException' => $vendorDir . '/symfony/var-dumper/Exception/ThrowingCasterException.php',
'Symfony\\Component\\VarDumper\\Server\\Connection' => $vendorDir . '/symfony/var-dumper/Server/Connection.php',
'Symfony\\Component\\VarDumper\\Server\\DumpServer' => $vendorDir . '/symfony/var-dumper/Server/DumpServer.php',
+ 'Symfony\\Component\\VarDumper\\Test\\VarDumperTestTrait' => $vendorDir . '/symfony/var-dumper/Test/VarDumperTestTrait.php',
'Symfony\\Component\\VarDumper\\VarDumper' => $vendorDir . '/symfony/var-dumper/VarDumper.php',
'Symfony\\Component\\VarExporter\\Exception\\ClassNotFoundException' => $vendorDir . '/symfony/var-exporter/Exception/ClassNotFoundException.php',
'Symfony\\Component\\VarExporter\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/var-exporter/Exception/ExceptionInterface.php',
@@ -3614,6 +3658,7 @@ return array(
'Twig\\ExpressionParser\\InfixExpressionParserInterface' => $vendorDir . '/twig/twig/src/ExpressionParser/InfixExpressionParserInterface.php',
'Twig\\ExpressionParser\\Infix\\ArgumentsTrait' => $vendorDir . '/twig/twig/src/ExpressionParser/Infix/ArgumentsTrait.php',
'Twig\\ExpressionParser\\Infix\\ArrowExpressionParser' => $vendorDir . '/twig/twig/src/ExpressionParser/Infix/ArrowExpressionParser.php',
+ 'Twig\\ExpressionParser\\Infix\\AssignmentExpressionParser' => $vendorDir . '/twig/twig/src/ExpressionParser/Infix/AssignmentExpressionParser.php',
'Twig\\ExpressionParser\\Infix\\BinaryOperatorExpressionParser' => $vendorDir . '/twig/twig/src/ExpressionParser/Infix/BinaryOperatorExpressionParser.php',
'Twig\\ExpressionParser\\Infix\\ConditionalTernaryExpressionParser' => $vendorDir . '/twig/twig/src/ExpressionParser/Infix/ConditionalTernaryExpressionParser.php',
'Twig\\ExpressionParser\\Infix\\DotExpressionParser' => $vendorDir . '/twig/twig/src/ExpressionParser/Infix/DotExpressionParser.php',
@@ -3699,10 +3744,15 @@ return array(
'Twig\\Node\\Expression\\Binary\\MulBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/MulBinary.php',
'Twig\\Node\\Expression\\Binary\\NotEqualBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/NotEqualBinary.php',
'Twig\\Node\\Expression\\Binary\\NotInBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/NotInBinary.php',
+ 'Twig\\Node\\Expression\\Binary\\NotSameAsBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/NotSameAsBinary.php',
'Twig\\Node\\Expression\\Binary\\NullCoalesceBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/NullCoalesceBinary.php',
+ 'Twig\\Node\\Expression\\Binary\\ObjectDestructuringSetBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/ObjectDestructuringSetBinary.php',
'Twig\\Node\\Expression\\Binary\\OrBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/OrBinary.php',
'Twig\\Node\\Expression\\Binary\\PowerBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/PowerBinary.php',
'Twig\\Node\\Expression\\Binary\\RangeBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/RangeBinary.php',
+ 'Twig\\Node\\Expression\\Binary\\SameAsBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/SameAsBinary.php',
+ 'Twig\\Node\\Expression\\Binary\\SequenceDestructuringSetBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/SequenceDestructuringSetBinary.php',
+ 'Twig\\Node\\Expression\\Binary\\SetBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/SetBinary.php',
'Twig\\Node\\Expression\\Binary\\SpaceshipBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/SpaceshipBinary.php',
'Twig\\Node\\Expression\\Binary\\StartsWithBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/StartsWithBinary.php',
'Twig\\Node\\Expression\\Binary\\SubBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/SubBinary.php',
@@ -3711,6 +3761,7 @@ return array(
'Twig\\Node\\Expression\\CallExpression' => $vendorDir . '/twig/twig/src/Node/Expression/CallExpression.php',
'Twig\\Node\\Expression\\ConditionalExpression' => $vendorDir . '/twig/twig/src/Node/Expression/ConditionalExpression.php',
'Twig\\Node\\Expression\\ConstantExpression' => $vendorDir . '/twig/twig/src/Node/Expression/ConstantExpression.php',
+ 'Twig\\Node\\Expression\\EmptyExpression' => $vendorDir . '/twig/twig/src/Node/Expression/EmptyExpression.php',
'Twig\\Node\\Expression\\FilterExpression' => $vendorDir . '/twig/twig/src/Node/Expression/FilterExpression.php',
'Twig\\Node\\Expression\\Filter\\DefaultFilter' => $vendorDir . '/twig/twig/src/Node/Expression/Filter/DefaultFilter.php',
'Twig\\Node\\Expression\\Filter\\RawFilter' => $vendorDir . '/twig/twig/src/Node/Expression/Filter/RawFilter.php',
@@ -3804,6 +3855,8 @@ return array(
'Twig\\Source' => $vendorDir . '/twig/twig/src/Source.php',
'Twig\\Template' => $vendorDir . '/twig/twig/src/Template.php',
'Twig\\TemplateWrapper' => $vendorDir . '/twig/twig/src/TemplateWrapper.php',
+ 'Twig\\Test\\IntegrationTestCase' => $vendorDir . '/twig/twig/src/Test/IntegrationTestCase.php',
+ 'Twig\\Test\\NodeTestCase' => $vendorDir . '/twig/twig/src/Test/NodeTestCase.php',
'Twig\\Token' => $vendorDir . '/twig/twig/src/Token.php',
'Twig\\TokenParser\\AbstractTokenParser' => $vendorDir . '/twig/twig/src/TokenParser/AbstractTokenParser.php',
'Twig\\TokenParser\\ApplyTokenParser' => $vendorDir . '/twig/twig/src/TokenParser/ApplyTokenParser.php',
diff --git a/lib/composer/autoload_static.php b/lib/composer/autoload_static.php
index 11f99de31..2f30b308d 100644
--- a/lib/composer/autoload_static.php
+++ b/lib/composer/autoload_static.php
@@ -1981,6 +1981,8 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
'Symfony\\Bridge\\Twig\\Node\\StopwatchNode' => __DIR__ . '/..' . '/symfony/twig-bridge/Node/StopwatchNode.php',
'Symfony\\Bridge\\Twig\\Node\\TransDefaultDomainNode' => __DIR__ . '/..' . '/symfony/twig-bridge/Node/TransDefaultDomainNode.php',
'Symfony\\Bridge\\Twig\\Node\\TransNode' => __DIR__ . '/..' . '/symfony/twig-bridge/Node/TransNode.php',
+ 'Symfony\\Bridge\\Twig\\Test\\FormLayoutTestCase' => __DIR__ . '/..' . '/symfony/twig-bridge/Test/FormLayoutTestCase.php',
+ 'Symfony\\Bridge\\Twig\\Test\\Traits\\RuntimeLoaderProvider' => __DIR__ . '/..' . '/symfony/twig-bridge/Test/Traits/RuntimeLoaderProvider.php',
'Symfony\\Bridge\\Twig\\TokenParser\\DumpTokenParser' => __DIR__ . '/..' . '/symfony/twig-bridge/TokenParser/DumpTokenParser.php',
'Symfony\\Bridge\\Twig\\TokenParser\\FormThemeTokenParser' => __DIR__ . '/..' . '/symfony/twig-bridge/TokenParser/FormThemeTokenParser.php',
'Symfony\\Bridge\\Twig\\TokenParser\\StopwatchTokenParser' => __DIR__ . '/..' . '/symfony/twig-bridge/TokenParser/StopwatchTokenParser.php',
@@ -2155,22 +2157,43 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
'Symfony\\Component\\Cache\\Psr16Cache' => __DIR__ . '/..' . '/symfony/cache/Psr16Cache.php',
'Symfony\\Component\\Cache\\ResettableInterface' => __DIR__ . '/..' . '/symfony/cache/ResettableInterface.php',
'Symfony\\Component\\Cache\\Traits\\AbstractAdapterTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/AbstractAdapterTrait.php',
+ 'Symfony\\Component\\Cache\\Traits\\CachedValueInterface' => __DIR__ . '/..' . '/symfony/cache/Traits/CachedValueInterface.php',
'Symfony\\Component\\Cache\\Traits\\ContractsTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/ContractsTrait.php',
'Symfony\\Component\\Cache\\Traits\\FilesystemCommonTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/FilesystemCommonTrait.php',
'Symfony\\Component\\Cache\\Traits\\FilesystemTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/FilesystemTrait.php',
'Symfony\\Component\\Cache\\Traits\\ProxyTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/ProxyTrait.php',
'Symfony\\Component\\Cache\\Traits\\Redis5Proxy' => __DIR__ . '/..' . '/symfony/cache/Traits/Redis5Proxy.php',
+ 'Symfony\\Component\\Cache\\Traits\\Redis61ProxyTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/Redis61ProxyTrait.php',
+ 'Symfony\\Component\\Cache\\Traits\\Redis62ProxyTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/Redis62ProxyTrait.php',
+ 'Symfony\\Component\\Cache\\Traits\\Redis63ProxyTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/Redis63ProxyTrait.php',
'Symfony\\Component\\Cache\\Traits\\Redis6Proxy' => __DIR__ . '/..' . '/symfony/cache/Traits/Redis6Proxy.php',
- 'Symfony\\Component\\Cache\\Traits\\Redis6ProxyTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/Redis6ProxyTrait.php',
'Symfony\\Component\\Cache\\Traits\\RedisCluster5Proxy' => __DIR__ . '/..' . '/symfony/cache/Traits/RedisCluster5Proxy.php',
+ 'Symfony\\Component\\Cache\\Traits\\RedisCluster61ProxyTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/RedisCluster61ProxyTrait.php',
+ 'Symfony\\Component\\Cache\\Traits\\RedisCluster62ProxyTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/RedisCluster62ProxyTrait.php',
+ 'Symfony\\Component\\Cache\\Traits\\RedisCluster63ProxyTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/RedisCluster63ProxyTrait.php',
'Symfony\\Component\\Cache\\Traits\\RedisCluster6Proxy' => __DIR__ . '/..' . '/symfony/cache/Traits/RedisCluster6Proxy.php',
- 'Symfony\\Component\\Cache\\Traits\\RedisCluster6ProxyTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/RedisCluster6ProxyTrait.php',
'Symfony\\Component\\Cache\\Traits\\RedisClusterNodeProxy' => __DIR__ . '/..' . '/symfony/cache/Traits/RedisClusterNodeProxy.php',
'Symfony\\Component\\Cache\\Traits\\RedisClusterProxy' => __DIR__ . '/..' . '/symfony/cache/Traits/RedisClusterProxy.php',
'Symfony\\Component\\Cache\\Traits\\RedisProxy' => __DIR__ . '/..' . '/symfony/cache/Traits/RedisProxy.php',
'Symfony\\Component\\Cache\\Traits\\RedisTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/RedisTrait.php',
'Symfony\\Component\\Cache\\Traits\\RelayProxy' => __DIR__ . '/..' . '/symfony/cache/Traits/RelayProxy.php',
'Symfony\\Component\\Cache\\Traits\\RelayProxyTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/RelayProxyTrait.php',
+ 'Symfony\\Component\\Cache\\Traits\\Relay\\BgsaveTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/Relay/BgsaveTrait.php',
+ 'Symfony\\Component\\Cache\\Traits\\Relay\\CopyTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/Relay/CopyTrait.php',
+ 'Symfony\\Component\\Cache\\Traits\\Relay\\FtTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/Relay/FtTrait.php',
+ 'Symfony\\Component\\Cache\\Traits\\Relay\\GeosearchTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/Relay/GeosearchTrait.php',
+ 'Symfony\\Component\\Cache\\Traits\\Relay\\GetWithMetaTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/Relay/GetWithMetaTrait.php',
+ 'Symfony\\Component\\Cache\\Traits\\Relay\\GetrangeTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/Relay/GetrangeTrait.php',
+ 'Symfony\\Component\\Cache\\Traits\\Relay\\HsetTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/Relay/HsetTrait.php',
+ 'Symfony\\Component\\Cache\\Traits\\Relay\\IsTrackedTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/Relay/IsTrackedTrait.php',
+ 'Symfony\\Component\\Cache\\Traits\\Relay\\MoveTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/Relay/MoveTrait.php',
+ 'Symfony\\Component\\Cache\\Traits\\Relay\\NullableReturnTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/Relay/NullableReturnTrait.php',
+ 'Symfony\\Component\\Cache\\Traits\\Relay\\PfcountTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/Relay/PfcountTrait.php',
+ 'Symfony\\Component\\Cache\\Traits\\Relay\\Relay11Trait' => __DIR__ . '/..' . '/symfony/cache/Traits/Relay/Relay11Trait.php',
+ 'Symfony\\Component\\Cache\\Traits\\Relay\\Relay121Trait' => __DIR__ . '/..' . '/symfony/cache/Traits/Relay/Relay121Trait.php',
+ 'Symfony\\Component\\Cache\\Traits\\Relay\\Relay12Trait' => __DIR__ . '/..' . '/symfony/cache/Traits/Relay/Relay12Trait.php',
+ 'Symfony\\Component\\Cache\\Traits\\Relay\\Relay20Trait' => __DIR__ . '/..' . '/symfony/cache/Traits/Relay/Relay20Trait.php',
+ 'Symfony\\Component\\Cache\\Traits\\Relay\\SwapdbTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/Relay/SwapdbTrait.php',
'Symfony\\Component\\Config\\Builder\\ClassBuilder' => __DIR__ . '/..' . '/symfony/config/Builder/ClassBuilder.php',
'Symfony\\Component\\Config\\Builder\\ConfigBuilderGenerator' => __DIR__ . '/..' . '/symfony/config/Builder/ConfigBuilderGenerator.php',
'Symfony\\Component\\Config\\Builder\\ConfigBuilderGeneratorInterface' => __DIR__ . '/..' . '/symfony/config/Builder/ConfigBuilderGeneratorInterface.php',
@@ -2335,6 +2358,7 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
'Symfony\\Component\\Console\\Helper\\TableRows' => __DIR__ . '/..' . '/symfony/console/Helper/TableRows.php',
'Symfony\\Component\\Console\\Helper\\TableSeparator' => __DIR__ . '/..' . '/symfony/console/Helper/TableSeparator.php',
'Symfony\\Component\\Console\\Helper\\TableStyle' => __DIR__ . '/..' . '/symfony/console/Helper/TableStyle.php',
+ 'Symfony\\Component\\Console\\Helper\\TerminalInputHelper' => __DIR__ . '/..' . '/symfony/console/Helper/TerminalInputHelper.php',
'Symfony\\Component\\Console\\Input\\ArgvInput' => __DIR__ . '/..' . '/symfony/console/Input/ArgvInput.php',
'Symfony\\Component\\Console\\Input\\ArrayInput' => __DIR__ . '/..' . '/symfony/console/Input/ArrayInput.php',
'Symfony\\Component\\Console\\Input\\Input' => __DIR__ . '/..' . '/symfony/console/Input/Input.php',
@@ -2901,6 +2925,13 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
'Symfony\\Component\\Form\\SubmitButton' => __DIR__ . '/..' . '/symfony/form/SubmitButton.php',
'Symfony\\Component\\Form\\SubmitButtonBuilder' => __DIR__ . '/..' . '/symfony/form/SubmitButtonBuilder.php',
'Symfony\\Component\\Form\\SubmitButtonTypeInterface' => __DIR__ . '/..' . '/symfony/form/SubmitButtonTypeInterface.php',
+ 'Symfony\\Component\\Form\\Test\\FormBuilderInterface' => __DIR__ . '/..' . '/symfony/form/Test/FormBuilderInterface.php',
+ 'Symfony\\Component\\Form\\Test\\FormIntegrationTestCase' => __DIR__ . '/..' . '/symfony/form/Test/FormIntegrationTestCase.php',
+ 'Symfony\\Component\\Form\\Test\\FormInterface' => __DIR__ . '/..' . '/symfony/form/Test/FormInterface.php',
+ 'Symfony\\Component\\Form\\Test\\FormPerformanceTestCase' => __DIR__ . '/..' . '/symfony/form/Test/FormPerformanceTestCase.php',
+ 'Symfony\\Component\\Form\\Test\\Traits\\RunTestTrait' => __DIR__ . '/..' . '/symfony/form/Test/Traits/RunTestTrait.php',
+ 'Symfony\\Component\\Form\\Test\\Traits\\ValidatorExtensionTrait' => __DIR__ . '/..' . '/symfony/form/Test/Traits/ValidatorExtensionTrait.php',
+ 'Symfony\\Component\\Form\\Test\\TypeTestCase' => __DIR__ . '/..' . '/symfony/form/Test/TypeTestCase.php',
'Symfony\\Component\\Form\\Util\\FormUtil' => __DIR__ . '/..' . '/symfony/form/Util/FormUtil.php',
'Symfony\\Component\\Form\\Util\\InheritDataAwareIterator' => __DIR__ . '/..' . '/symfony/form/Util/InheritDataAwareIterator.php',
'Symfony\\Component\\Form\\Util\\OptionsResolverWrapper' => __DIR__ . '/..' . '/symfony/form/Util/OptionsResolverWrapper.php',
@@ -3198,6 +3229,9 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
'Symfony\\Component\\Mailer\\Messenger\\MessageHandler' => __DIR__ . '/..' . '/symfony/mailer/Messenger/MessageHandler.php',
'Symfony\\Component\\Mailer\\Messenger\\SendEmailMessage' => __DIR__ . '/..' . '/symfony/mailer/Messenger/SendEmailMessage.php',
'Symfony\\Component\\Mailer\\SentMessage' => __DIR__ . '/..' . '/symfony/mailer/SentMessage.php',
+ 'Symfony\\Component\\Mailer\\Test\\Constraint\\EmailCount' => __DIR__ . '/..' . '/symfony/mailer/Test/Constraint/EmailCount.php',
+ 'Symfony\\Component\\Mailer\\Test\\Constraint\\EmailIsQueued' => __DIR__ . '/..' . '/symfony/mailer/Test/Constraint/EmailIsQueued.php',
+ 'Symfony\\Component\\Mailer\\Test\\TransportFactoryTestCase' => __DIR__ . '/..' . '/symfony/mailer/Test/TransportFactoryTestCase.php',
'Symfony\\Component\\Mailer\\Transport' => __DIR__ . '/..' . '/symfony/mailer/Transport.php',
'Symfony\\Component\\Mailer\\Transport\\AbstractApiTransport' => __DIR__ . '/..' . '/symfony/mailer/Transport/AbstractApiTransport.php',
'Symfony\\Component\\Mailer\\Transport\\AbstractHttpTransport' => __DIR__ . '/..' . '/symfony/mailer/Transport/AbstractHttpTransport.php',
@@ -3288,6 +3322,13 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
'Symfony\\Component\\Mime\\Part\\SMimePart' => __DIR__ . '/..' . '/symfony/mime/Part/SMimePart.php',
'Symfony\\Component\\Mime\\Part\\TextPart' => __DIR__ . '/..' . '/symfony/mime/Part/TextPart.php',
'Symfony\\Component\\Mime\\RawMessage' => __DIR__ . '/..' . '/symfony/mime/RawMessage.php',
+ 'Symfony\\Component\\Mime\\Test\\Constraint\\EmailAddressContains' => __DIR__ . '/..' . '/symfony/mime/Test/Constraint/EmailAddressContains.php',
+ 'Symfony\\Component\\Mime\\Test\\Constraint\\EmailAttachmentCount' => __DIR__ . '/..' . '/symfony/mime/Test/Constraint/EmailAttachmentCount.php',
+ 'Symfony\\Component\\Mime\\Test\\Constraint\\EmailHasHeader' => __DIR__ . '/..' . '/symfony/mime/Test/Constraint/EmailHasHeader.php',
+ 'Symfony\\Component\\Mime\\Test\\Constraint\\EmailHeaderSame' => __DIR__ . '/..' . '/symfony/mime/Test/Constraint/EmailHeaderSame.php',
+ 'Symfony\\Component\\Mime\\Test\\Constraint\\EmailHtmlBodyContains' => __DIR__ . '/..' . '/symfony/mime/Test/Constraint/EmailHtmlBodyContains.php',
+ 'Symfony\\Component\\Mime\\Test\\Constraint\\EmailSubjectContains' => __DIR__ . '/..' . '/symfony/mime/Test/Constraint/EmailSubjectContains.php',
+ 'Symfony\\Component\\Mime\\Test\\Constraint\\EmailTextBodyContains' => __DIR__ . '/..' . '/symfony/mime/Test/Constraint/EmailTextBodyContains.php',
'Symfony\\Component\\OptionsResolver\\Debug\\OptionsResolverIntrospector' => __DIR__ . '/..' . '/symfony/options-resolver/Debug/OptionsResolverIntrospector.php',
'Symfony\\Component\\OptionsResolver\\Exception\\AccessException' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/AccessException.php',
'Symfony\\Component\\OptionsResolver\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/ExceptionInterface.php',
@@ -3513,6 +3554,7 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
'Symfony\\Component\\Security\\Core\\Signature\\Exception\\InvalidSignatureException' => __DIR__ . '/..' . '/symfony/security-core/Signature/Exception/InvalidSignatureException.php',
'Symfony\\Component\\Security\\Core\\Signature\\ExpiredSignatureStorage' => __DIR__ . '/..' . '/symfony/security-core/Signature/ExpiredSignatureStorage.php',
'Symfony\\Component\\Security\\Core\\Signature\\SignatureHasher' => __DIR__ . '/..' . '/symfony/security-core/Signature/SignatureHasher.php',
+ 'Symfony\\Component\\Security\\Core\\Test\\AccessDecisionStrategyTestCase' => __DIR__ . '/..' . '/symfony/security-core/Test/AccessDecisionStrategyTestCase.php',
'Symfony\\Component\\Security\\Core\\User\\AttributesBasedUserProviderInterface' => __DIR__ . '/..' . '/symfony/security-core/User/AttributesBasedUserProviderInterface.php',
'Symfony\\Component\\Security\\Core\\User\\ChainUserChecker' => __DIR__ . '/..' . '/symfony/security-core/User/ChainUserChecker.php',
'Symfony\\Component\\Security\\Core\\User\\ChainUserProvider' => __DIR__ . '/..' . '/symfony/security-core/User/ChainUserProvider.php',
@@ -3768,6 +3810,7 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
'Symfony\\Component\\Validator\\Mapping\\PropertyMetadataInterface' => __DIR__ . '/..' . '/symfony/validator/Mapping/PropertyMetadataInterface.php',
'Symfony\\Component\\Validator\\Mapping\\TraversalStrategy' => __DIR__ . '/..' . '/symfony/validator/Mapping/TraversalStrategy.php',
'Symfony\\Component\\Validator\\ObjectInitializerInterface' => __DIR__ . '/..' . '/symfony/validator/ObjectInitializerInterface.php',
+ 'Symfony\\Component\\Validator\\Test\\ConstraintValidatorTestCase' => __DIR__ . '/..' . '/symfony/validator/Test/ConstraintValidatorTestCase.php',
'Symfony\\Component\\Validator\\Util\\PropertyPath' => __DIR__ . '/..' . '/symfony/validator/Util/PropertyPath.php',
'Symfony\\Component\\Validator\\Validation' => __DIR__ . '/..' . '/symfony/validator/Validation.php',
'Symfony\\Component\\Validator\\ValidatorBuilder' => __DIR__ . '/..' . '/symfony/validator/ValidatorBuilder.php',
@@ -3843,6 +3886,7 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
'Symfony\\Component\\VarDumper\\Exception\\ThrowingCasterException' => __DIR__ . '/..' . '/symfony/var-dumper/Exception/ThrowingCasterException.php',
'Symfony\\Component\\VarDumper\\Server\\Connection' => __DIR__ . '/..' . '/symfony/var-dumper/Server/Connection.php',
'Symfony\\Component\\VarDumper\\Server\\DumpServer' => __DIR__ . '/..' . '/symfony/var-dumper/Server/DumpServer.php',
+ 'Symfony\\Component\\VarDumper\\Test\\VarDumperTestTrait' => __DIR__ . '/..' . '/symfony/var-dumper/Test/VarDumperTestTrait.php',
'Symfony\\Component\\VarDumper\\VarDumper' => __DIR__ . '/..' . '/symfony/var-dumper/VarDumper.php',
'Symfony\\Component\\VarExporter\\Exception\\ClassNotFoundException' => __DIR__ . '/..' . '/symfony/var-exporter/Exception/ClassNotFoundException.php',
'Symfony\\Component\\VarExporter\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/var-exporter/Exception/ExceptionInterface.php',
@@ -4000,6 +4044,7 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
'Twig\\ExpressionParser\\InfixExpressionParserInterface' => __DIR__ . '/..' . '/twig/twig/src/ExpressionParser/InfixExpressionParserInterface.php',
'Twig\\ExpressionParser\\Infix\\ArgumentsTrait' => __DIR__ . '/..' . '/twig/twig/src/ExpressionParser/Infix/ArgumentsTrait.php',
'Twig\\ExpressionParser\\Infix\\ArrowExpressionParser' => __DIR__ . '/..' . '/twig/twig/src/ExpressionParser/Infix/ArrowExpressionParser.php',
+ 'Twig\\ExpressionParser\\Infix\\AssignmentExpressionParser' => __DIR__ . '/..' . '/twig/twig/src/ExpressionParser/Infix/AssignmentExpressionParser.php',
'Twig\\ExpressionParser\\Infix\\BinaryOperatorExpressionParser' => __DIR__ . '/..' . '/twig/twig/src/ExpressionParser/Infix/BinaryOperatorExpressionParser.php',
'Twig\\ExpressionParser\\Infix\\ConditionalTernaryExpressionParser' => __DIR__ . '/..' . '/twig/twig/src/ExpressionParser/Infix/ConditionalTernaryExpressionParser.php',
'Twig\\ExpressionParser\\Infix\\DotExpressionParser' => __DIR__ . '/..' . '/twig/twig/src/ExpressionParser/Infix/DotExpressionParser.php',
@@ -4085,10 +4130,15 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
'Twig\\Node\\Expression\\Binary\\MulBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/MulBinary.php',
'Twig\\Node\\Expression\\Binary\\NotEqualBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/NotEqualBinary.php',
'Twig\\Node\\Expression\\Binary\\NotInBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/NotInBinary.php',
+ 'Twig\\Node\\Expression\\Binary\\NotSameAsBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/NotSameAsBinary.php',
'Twig\\Node\\Expression\\Binary\\NullCoalesceBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/NullCoalesceBinary.php',
+ 'Twig\\Node\\Expression\\Binary\\ObjectDestructuringSetBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/ObjectDestructuringSetBinary.php',
'Twig\\Node\\Expression\\Binary\\OrBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/OrBinary.php',
'Twig\\Node\\Expression\\Binary\\PowerBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/PowerBinary.php',
'Twig\\Node\\Expression\\Binary\\RangeBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/RangeBinary.php',
+ 'Twig\\Node\\Expression\\Binary\\SameAsBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/SameAsBinary.php',
+ 'Twig\\Node\\Expression\\Binary\\SequenceDestructuringSetBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/SequenceDestructuringSetBinary.php',
+ 'Twig\\Node\\Expression\\Binary\\SetBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/SetBinary.php',
'Twig\\Node\\Expression\\Binary\\SpaceshipBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/SpaceshipBinary.php',
'Twig\\Node\\Expression\\Binary\\StartsWithBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/StartsWithBinary.php',
'Twig\\Node\\Expression\\Binary\\SubBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/SubBinary.php',
@@ -4097,6 +4147,7 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
'Twig\\Node\\Expression\\CallExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/CallExpression.php',
'Twig\\Node\\Expression\\ConditionalExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/ConditionalExpression.php',
'Twig\\Node\\Expression\\ConstantExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/ConstantExpression.php',
+ 'Twig\\Node\\Expression\\EmptyExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/EmptyExpression.php',
'Twig\\Node\\Expression\\FilterExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/FilterExpression.php',
'Twig\\Node\\Expression\\Filter\\DefaultFilter' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Filter/DefaultFilter.php',
'Twig\\Node\\Expression\\Filter\\RawFilter' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Filter/RawFilter.php',
@@ -4190,6 +4241,8 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
'Twig\\Source' => __DIR__ . '/..' . '/twig/twig/src/Source.php',
'Twig\\Template' => __DIR__ . '/..' . '/twig/twig/src/Template.php',
'Twig\\TemplateWrapper' => __DIR__ . '/..' . '/twig/twig/src/TemplateWrapper.php',
+ 'Twig\\Test\\IntegrationTestCase' => __DIR__ . '/..' . '/twig/twig/src/Test/IntegrationTestCase.php',
+ 'Twig\\Test\\NodeTestCase' => __DIR__ . '/..' . '/twig/twig/src/Test/NodeTestCase.php',
'Twig\\Token' => __DIR__ . '/..' . '/twig/twig/src/Token.php',
'Twig\\TokenParser\\AbstractTokenParser' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/AbstractTokenParser.php',
'Twig\\TokenParser\\ApplyTokenParser' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/ApplyTokenParser.php',
diff --git a/lib/composer/installed.json b/lib/composer/installed.json
index a6a673415..f26be2736 100644
--- a/lib/composer/installed.json
+++ b/lib/composer/installed.json
@@ -1793,17 +1793,17 @@
},
{
"name": "symfony/cache",
- "version": "v6.4.12",
- "version_normalized": "6.4.12.0",
+ "version": "v6.4.33",
+ "version_normalized": "6.4.33.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/cache.git",
- "reference": "a463451b7f6ac4a47b98dbfc78ec2d3560c759d8"
+ "reference": "5b088fa41eb9568748dc255c45e4054c387ba73b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/cache/zipball/a463451b7f6ac4a47b98dbfc78ec2d3560c759d8",
- "reference": "a463451b7f6ac4a47b98dbfc78ec2d3560c759d8",
+ "url": "https://api.github.com/repos/symfony/cache/zipball/5b088fa41eb9568748dc255c45e4054c387ba73b",
+ "reference": "5b088fa41eb9568748dc255c45e4054c387ba73b",
"shasum": ""
},
"require": {
@@ -1837,7 +1837,7 @@
"symfony/messenger": "^5.4|^6.0|^7.0",
"symfony/var-dumper": "^5.4|^6.0|^7.0"
},
- "time": "2024-09-16T16:01:33+00:00",
+ "time": "2026-01-27T15:05:20+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -1872,7 +1872,7 @@
"psr6"
],
"support": {
- "source": "https://github.com/symfony/cache/tree/v6.4.12"
+ "source": "https://github.com/symfony/cache/tree/v6.4.33"
},
"funding": [
{
@@ -1883,6 +1883,10 @@
"url": "https://github.com/fabpot",
"type": "github"
},
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
@@ -1971,17 +1975,17 @@
},
{
"name": "symfony/config",
- "version": "v6.4.24",
- "version_normalized": "6.4.24.0",
+ "version": "v6.4.32",
+ "version_normalized": "6.4.32.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/config.git",
- "reference": "80e2cf005cf17138c97193be0434cdcfd1b2212e"
+ "reference": "d445badf0ad2c2a492e38c0378c39997a56ef97b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/config/zipball/80e2cf005cf17138c97193be0434cdcfd1b2212e",
- "reference": "80e2cf005cf17138c97193be0434cdcfd1b2212e",
+ "url": "https://api.github.com/repos/symfony/config/zipball/d445badf0ad2c2a492e38c0378c39997a56ef97b",
+ "reference": "d445badf0ad2c2a492e38c0378c39997a56ef97b",
"shasum": ""
},
"require": {
@@ -2001,7 +2005,7 @@
"symfony/service-contracts": "^2.5|^3",
"symfony/yaml": "^5.4|^6.0|^7.0"
},
- "time": "2025-07-26T13:50:30+00:00",
+ "time": "2026-01-13T08:40:30+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -2029,7 +2033,7 @@
"description": "Helps you find, load, combine, autofill and validate configuration values of any kind",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/config/tree/v6.4.24"
+ "source": "https://github.com/symfony/config/tree/v6.4.32"
},
"funding": [
{
@@ -2053,17 +2057,17 @@
},
{
"name": "symfony/console",
- "version": "v6.4.25",
- "version_normalized": "6.4.25.0",
+ "version": "v6.4.32",
+ "version_normalized": "6.4.32.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
- "reference": "273fd29ff30ba0a88ca5fb83f7cf1ab69306adae"
+ "reference": "0bc2199c6c1f05276b05956f1ddc63f6d7eb5fc3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/273fd29ff30ba0a88ca5fb83f7cf1ab69306adae",
- "reference": "273fd29ff30ba0a88ca5fb83f7cf1ab69306adae",
+ "url": "https://api.github.com/repos/symfony/console/zipball/0bc2199c6c1f05276b05956f1ddc63f6d7eb5fc3",
+ "reference": "0bc2199c6c1f05276b05956f1ddc63f6d7eb5fc3",
"shasum": ""
},
"require": {
@@ -2096,7 +2100,7 @@
"symfony/stopwatch": "^5.4|^6.0|^7.0",
"symfony/var-dumper": "^5.4|^6.0|^7.0"
},
- "time": "2025-08-22T10:21:53+00:00",
+ "time": "2026-01-13T08:45:59+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -2130,7 +2134,7 @@
"terminal"
],
"support": {
- "source": "https://github.com/symfony/console/tree/v6.4.25"
+ "source": "https://github.com/symfony/console/tree/v6.4.32"
},
"funding": [
{
@@ -2226,17 +2230,17 @@
},
{
"name": "symfony/dependency-injection",
- "version": "v6.4.25",
- "version_normalized": "6.4.25.0",
+ "version": "v6.4.32",
+ "version_normalized": "6.4.32.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/dependency-injection.git",
- "reference": "900da8a42eceeb4a13a0ec34caa7db49328daff3"
+ "reference": "b17882e933c4c606620247b6708ab53aa3b88753"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/900da8a42eceeb4a13a0ec34caa7db49328daff3",
- "reference": "900da8a42eceeb4a13a0ec34caa7db49328daff3",
+ "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/b17882e933c4c606620247b6708ab53aa3b88753",
+ "reference": "b17882e933c4c606620247b6708ab53aa3b88753",
"shasum": ""
},
"require": {
@@ -2262,7 +2266,7 @@
"symfony/expression-language": "^5.4|^6.0|^7.0",
"symfony/yaml": "^5.4|^6.0|^7.0"
},
- "time": "2025-08-13T09:41:44+00:00",
+ "time": "2026-01-23T10:54:33+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -2290,7 +2294,7 @@
"description": "Allows you to standardize and centralize the way objects are constructed in your application",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/dependency-injection/tree/v6.4.25"
+ "source": "https://github.com/symfony/dependency-injection/tree/v6.4.32"
},
"funding": [
{
@@ -2384,17 +2388,17 @@
},
{
"name": "symfony/dotenv",
- "version": "v6.4.24",
- "version_normalized": "6.4.24.0",
+ "version": "v6.4.30",
+ "version_normalized": "6.4.30.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/dotenv.git",
- "reference": "234b6c602f12b00693f4b0d1054386fb30dfc8ff"
+ "reference": "924edbc9631b75302def0258ed1697948b17baf6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dotenv/zipball/234b6c602f12b00693f4b0d1054386fb30dfc8ff",
- "reference": "234b6c602f12b00693f4b0d1054386fb30dfc8ff",
+ "url": "https://api.github.com/repos/symfony/dotenv/zipball/924edbc9631b75302def0258ed1697948b17baf6",
+ "reference": "924edbc9631b75302def0258ed1697948b17baf6",
"shasum": ""
},
"require": {
@@ -2408,7 +2412,7 @@
"symfony/console": "^5.4|^6.0|^7.0",
"symfony/process": "^5.4|^6.0|^7.0"
},
- "time": "2025-07-10T08:14:14+00:00",
+ "time": "2025-11-14T17:33:48+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -2441,7 +2445,7 @@
"environment"
],
"support": {
- "source": "https://github.com/symfony/dotenv/tree/v6.4.24"
+ "source": "https://github.com/symfony/dotenv/tree/v6.4.30"
},
"funding": [
{
@@ -2465,17 +2469,17 @@
},
{
"name": "symfony/error-handler",
- "version": "v6.4.24",
- "version_normalized": "6.4.24.0",
+ "version": "v6.4.32",
+ "version_normalized": "6.4.32.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/error-handler.git",
- "reference": "30fd0b3cf0e972e82636038ce4db0e4fe777112c"
+ "reference": "8c18400784fcb014dc73c8d5601a9576af7f8ad4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/error-handler/zipball/30fd0b3cf0e972e82636038ce4db0e4fe777112c",
- "reference": "30fd0b3cf0e972e82636038ce4db0e4fe777112c",
+ "url": "https://api.github.com/repos/symfony/error-handler/zipball/8c18400784fcb014dc73c8d5601a9576af7f8ad4",
+ "reference": "8c18400784fcb014dc73c8d5601a9576af7f8ad4",
"shasum": ""
},
"require": {
@@ -2492,7 +2496,7 @@
"symfony/http-kernel": "^6.4|^7.0",
"symfony/serializer": "^5.4|^6.0|^7.0"
},
- "time": "2025-07-24T08:25:04+00:00",
+ "time": "2026-01-19T19:28:19+00:00",
"bin": [
"Resources/bin/patch-type-declarations"
],
@@ -2523,7 +2527,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/v6.4.24"
+ "source": "https://github.com/symfony/error-handler/tree/v6.4.32"
},
"funding": [
{
@@ -2547,17 +2551,17 @@
},
{
"name": "symfony/event-dispatcher",
- "version": "v6.4.25",
- "version_normalized": "6.4.25.0",
+ "version": "v6.4.32",
+ "version_normalized": "6.4.32.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
- "reference": "b0cf3162020603587363f0551cd3be43958611ff"
+ "reference": "99d7e101826e6610606b9433248f80c1997cd20b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/b0cf3162020603587363f0551cd3be43958611ff",
- "reference": "b0cf3162020603587363f0551cd3be43958611ff",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/99d7e101826e6610606b9433248f80c1997cd20b",
+ "reference": "99d7e101826e6610606b9433248f80c1997cd20b",
"shasum": ""
},
"require": {
@@ -2582,7 +2586,7 @@
"symfony/service-contracts": "^2.5|^3",
"symfony/stopwatch": "^5.4|^6.0|^7.0"
},
- "time": "2025-08-13T09:41:44+00:00",
+ "time": "2026-01-05T11:13:48+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -2610,7 +2614,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.4.25"
+ "source": "https://github.com/symfony/event-dispatcher/tree/v6.4.32"
},
"funding": [
{
@@ -2713,17 +2717,17 @@
},
{
"name": "symfony/filesystem",
- "version": "v6.4.24",
- "version_normalized": "6.4.24.0",
+ "version": "v6.4.30",
+ "version_normalized": "6.4.30.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
- "reference": "75ae2edb7cdcc0c53766c30b0a2512b8df574bd8"
+ "reference": "441c6b69f7222aadae7cbf5df588496d5ee37789"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/filesystem/zipball/75ae2edb7cdcc0c53766c30b0a2512b8df574bd8",
- "reference": "75ae2edb7cdcc0c53766c30b0a2512b8df574bd8",
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/441c6b69f7222aadae7cbf5df588496d5ee37789",
+ "reference": "441c6b69f7222aadae7cbf5df588496d5ee37789",
"shasum": ""
},
"require": {
@@ -2734,7 +2738,7 @@
"require-dev": {
"symfony/process": "^5.4|^6.4|^7.0"
},
- "time": "2025-07-10T08:14:14+00:00",
+ "time": "2025-11-26T14:43:45+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -2762,7 +2766,7 @@
"description": "Provides basic utilities for the filesystem",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/filesystem/tree/v6.4.24"
+ "source": "https://github.com/symfony/filesystem/tree/v6.4.30"
},
"funding": [
{
@@ -2786,17 +2790,17 @@
},
{
"name": "symfony/finder",
- "version": "v6.4.24",
- "version_normalized": "6.4.24.0",
+ "version": "v6.4.33",
+ "version_normalized": "6.4.33.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/finder.git",
- "reference": "73089124388c8510efb8d2d1689285d285937b08"
+ "reference": "24965ca011dac87431729640feef8bcf7b5523e0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/finder/zipball/73089124388c8510efb8d2d1689285d285937b08",
- "reference": "73089124388c8510efb8d2d1689285d285937b08",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/24965ca011dac87431729640feef8bcf7b5523e0",
+ "reference": "24965ca011dac87431729640feef8bcf7b5523e0",
"shasum": ""
},
"require": {
@@ -2805,7 +2809,7 @@
"require-dev": {
"symfony/filesystem": "^6.0|^7.0"
},
- "time": "2025-07-15T12:02:45+00:00",
+ "time": "2026-01-26T13:03:48+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -2833,7 +2837,7 @@
"description": "Finds files and directories via an intuitive fluent interface",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/finder/tree/v6.4.24"
+ "source": "https://github.com/symfony/finder/tree/v6.4.33"
},
"funding": [
{
@@ -2857,17 +2861,17 @@
},
{
"name": "symfony/form",
- "version": "v6.4.26",
- "version_normalized": "6.4.26.0",
+ "version": "v6.4.32",
+ "version_normalized": "6.4.32.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/form.git",
- "reference": "b40cdbe70be9274ea807ef61da7d0f8d1c70dc51"
+ "reference": "b758162fb45024f898640ec27f4ac90be0dbfb8f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/form/zipball/b40cdbe70be9274ea807ef61da7d0f8d1c70dc51",
- "reference": "b40cdbe70be9274ea807ef61da7d0f8d1c70dc51",
+ "url": "https://api.github.com/repos/symfony/form/zipball/b758162fb45024f898640ec27f4ac90be0dbfb8f",
+ "reference": "b758162fb45024f898640ec27f4ac90be0dbfb8f",
"shasum": ""
},
"require": {
@@ -2909,7 +2913,7 @@
"symfony/validator": "^5.4|^6.0|^7.0",
"symfony/var-dumper": "^5.4|^6.0|^7.0"
},
- "time": "2025-09-20T07:40:41+00:00",
+ "time": "2026-01-22T20:17:27+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -2937,7 +2941,7 @@
"description": "Allows to easily create, process and reuse HTML forms",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/form/tree/v6.4.26"
+ "source": "https://github.com/symfony/form/tree/v6.4.32"
},
"funding": [
{
@@ -2961,17 +2965,17 @@
},
{
"name": "symfony/framework-bundle",
- "version": "v6.4.25",
- "version_normalized": "6.4.25.0",
+ "version": "v6.4.33",
+ "version_normalized": "6.4.33.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/framework-bundle.git",
- "reference": "1d6a764b58e4f780df00f71c20ba3a61095ea447"
+ "reference": "9ef2d0b63b9e855ba351e770a603d89699115801"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/1d6a764b58e4f780df00f71c20ba3a61095ea447",
- "reference": "1d6a764b58e4f780df00f71c20ba3a61095ea447",
+ "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/9ef2d0b63b9e855ba351e770a603d89699115801",
+ "reference": "9ef2d0b63b9e855ba351e770a603d89699115801",
"shasum": ""
},
"require": {
@@ -3065,7 +3069,7 @@
"symfony/yaml": "^5.4|^6.0|^7.0",
"twig/twig": "^2.10|^3.0.4"
},
- "time": "2025-08-26T10:44:20+00:00",
+ "time": "2026-01-26T14:46:41+00:00",
"type": "symfony-bundle",
"installation-source": "dist",
"autoload": {
@@ -3093,7 +3097,7 @@
"description": "Provides a tight integration between Symfony components and the Symfony full-stack framework",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/framework-bundle/tree/v6.4.25"
+ "source": "https://github.com/symfony/framework-bundle/tree/v6.4.33"
},
"funding": [
{
@@ -3117,17 +3121,17 @@
},
{
"name": "symfony/http-foundation",
- "version": "v6.4.29",
- "version_normalized": "6.4.29.0",
+ "version": "v6.4.33",
+ "version_normalized": "6.4.33.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-foundation.git",
- "reference": "b03d11e015552a315714c127d8d1e0f9e970ec88"
+ "reference": "f1a490cc9d595ba7ebe684220e625d1e472ad278"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-foundation/zipball/b03d11e015552a315714c127d8d1e0f9e970ec88",
- "reference": "b03d11e015552a315714c127d8d1e0f9e970ec88",
+ "url": "https://api.github.com/repos/symfony/http-foundation/zipball/f1a490cc9d595ba7ebe684220e625d1e472ad278",
+ "reference": "f1a490cc9d595ba7ebe684220e625d1e472ad278",
"shasum": ""
},
"require": {
@@ -3149,7 +3153,7 @@
"symfony/mime": "^5.4|^6.0|^7.0",
"symfony/rate-limiter": "^5.4|^6.0|^7.0"
},
- "time": "2025-11-08T16:40:12+00:00",
+ "time": "2026-01-27T15:04:55+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -3177,7 +3181,7 @@
"description": "Defines an object-oriented layer for the HTTP specification",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/http-foundation/tree/v6.4.29"
+ "source": "https://github.com/symfony/http-foundation/tree/v6.4.33"
},
"funding": [
{
@@ -3201,17 +3205,17 @@
},
{
"name": "symfony/http-kernel",
- "version": "v6.4.25",
- "version_normalized": "6.4.25.0",
+ "version": "v6.4.33",
+ "version_normalized": "6.4.33.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-kernel.git",
- "reference": "a0ee3cea5cabf4ed960fd2ef57668ceeacdb6e15"
+ "reference": "73fa5c999d7f741ca544a97d3c791cc97890ae4d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-kernel/zipball/a0ee3cea5cabf4ed960fd2ef57668ceeacdb6e15",
- "reference": "a0ee3cea5cabf4ed960fd2ef57668ceeacdb6e15",
+ "url": "https://api.github.com/repos/symfony/http-kernel/zipball/73fa5c999d7f741ca544a97d3c791cc97890ae4d",
+ "reference": "73fa5c999d7f741ca544a97d3c791cc97890ae4d",
"shasum": ""
},
"require": {
@@ -3270,7 +3274,7 @@
"symfony/var-exporter": "^6.2|^7.0",
"twig/twig": "^2.13|^3.0.4"
},
- "time": "2025-08-29T07:55:45+00:00",
+ "time": "2026-01-28T10:02:13+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -3298,7 +3302,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/v6.4.25"
+ "source": "https://github.com/symfony/http-kernel/tree/v6.4.33"
},
"funding": [
{
@@ -3322,17 +3326,17 @@
},
{
"name": "symfony/mailer",
- "version": "v6.4.25",
- "version_normalized": "6.4.25.0",
+ "version": "v6.4.31",
+ "version_normalized": "6.4.31.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/mailer.git",
- "reference": "628b43b45a3e6b15c8a633fb22df547ed9b492a2"
+ "reference": "8835f93333474780fda1b987cae37e33c3e026ca"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/mailer/zipball/628b43b45a3e6b15c8a633fb22df547ed9b492a2",
- "reference": "628b43b45a3e6b15c8a633fb22df547ed9b492a2",
+ "url": "https://api.github.com/repos/symfony/mailer/zipball/8835f93333474780fda1b987cae37e33c3e026ca",
+ "reference": "8835f93333474780fda1b987cae37e33c3e026ca",
"shasum": ""
},
"require": {
@@ -3357,7 +3361,7 @@
"symfony/messenger": "^6.2|^7.0",
"symfony/twig-bridge": "^6.2|^7.0"
},
- "time": "2025-08-13T09:41:44+00:00",
+ "time": "2025-12-12T07:33:25+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -3385,7 +3389,7 @@
"description": "Helps sending emails",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/mailer/tree/v6.4.25"
+ "source": "https://github.com/symfony/mailer/tree/v6.4.31"
},
"funding": [
{
@@ -3409,17 +3413,17 @@
},
{
"name": "symfony/mime",
- "version": "v6.4.24",
- "version_normalized": "6.4.24.0",
+ "version": "v6.4.32",
+ "version_normalized": "6.4.32.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/mime.git",
- "reference": "664d5e844a2de5e11c8255d0aef6bc15a9660ac7"
+ "reference": "7409686879ca36c09fc970a5fa8ff6e93504dba4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/mime/zipball/664d5e844a2de5e11c8255d0aef6bc15a9660ac7",
- "reference": "664d5e844a2de5e11c8255d0aef6bc15a9660ac7",
+ "url": "https://api.github.com/repos/symfony/mime/zipball/7409686879ca36c09fc970a5fa8ff6e93504dba4",
+ "reference": "7409686879ca36c09fc970a5fa8ff6e93504dba4",
"shasum": ""
},
"require": {
@@ -3445,7 +3449,7 @@
"symfony/property-info": "^5.4|^6.0|^7.0",
"symfony/serializer": "^6.4.3|^7.0.3"
},
- "time": "2025-07-15T12:02:45+00:00",
+ "time": "2026-01-04T11:53:14+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -3477,7 +3481,7 @@
"mime-type"
],
"support": {
- "source": "https://github.com/symfony/mime/tree/v6.4.24"
+ "source": "https://github.com/symfony/mime/tree/v6.4.32"
},
"funding": [
{
@@ -3501,24 +3505,24 @@
},
{
"name": "symfony/options-resolver",
- "version": "v6.4.25",
- "version_normalized": "6.4.25.0",
+ "version": "v6.4.30",
+ "version_normalized": "6.4.30.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/options-resolver.git",
- "reference": "d28e7e2db8a73e9511df892d36445f61314bbebe"
+ "reference": "eeaa8cabe54c7b3516938c72a4a161c0cc80a34f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/options-resolver/zipball/d28e7e2db8a73e9511df892d36445f61314bbebe",
- "reference": "d28e7e2db8a73e9511df892d36445f61314bbebe",
+ "url": "https://api.github.com/repos/symfony/options-resolver/zipball/eeaa8cabe54c7b3516938c72a4a161c0cc80a34f",
+ "reference": "eeaa8cabe54c7b3516938c72a4a161c0cc80a34f",
"shasum": ""
},
"require": {
"php": ">=8.1",
"symfony/deprecation-contracts": "^2.5|^3"
},
- "time": "2025-08-04T17:06:28+00:00",
+ "time": "2025-11-12T13:06:53+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -3551,7 +3555,7 @@
"options"
],
"support": {
- "source": "https://github.com/symfony/options-resolver/tree/v6.4.25"
+ "source": "https://github.com/symfony/options-resolver/tree/v6.4.30"
},
"funding": [
{
@@ -3575,17 +3579,17 @@
},
{
"name": "symfony/password-hasher",
- "version": "v6.4.24",
- "version_normalized": "6.4.24.0",
+ "version": "v6.4.32",
+ "version_normalized": "6.4.32.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/password-hasher.git",
- "reference": "dcab5ac87450aaed26483ba49c2ce86808da7557"
+ "reference": "fbdfa5a2ca218ec8bb9029517426df2d780bdba9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/password-hasher/zipball/dcab5ac87450aaed26483ba49c2ce86808da7557",
- "reference": "dcab5ac87450aaed26483ba49c2ce86808da7557",
+ "url": "https://api.github.com/repos/symfony/password-hasher/zipball/fbdfa5a2ca218ec8bb9029517426df2d780bdba9",
+ "reference": "fbdfa5a2ca218ec8bb9029517426df2d780bdba9",
"shasum": ""
},
"require": {
@@ -3598,7 +3602,7 @@
"symfony/console": "^5.4|^6.0|^7.0",
"symfony/security-core": "^5.4|^6.0|^7.0"
},
- "time": "2025-07-10T08:14:14+00:00",
+ "time": "2026-01-01T21:24:53+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -3630,7 +3634,7 @@
"password"
],
"support": {
- "source": "https://github.com/symfony/password-hasher/tree/v6.4.24"
+ "source": "https://github.com/symfony/password-hasher/tree/v6.4.32"
},
"funding": [
{
@@ -4265,28 +4269,28 @@
},
{
"name": "symfony/property-access",
- "version": "v6.4.25",
- "version_normalized": "6.4.25.0",
+ "version": "v6.4.32",
+ "version_normalized": "6.4.32.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/property-access.git",
- "reference": "fedc771326d4978a7d3167fa009a509b06a2e168"
+ "reference": "6dfa655ac9e9860c05cabb287f34da86b18c237e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/property-access/zipball/fedc771326d4978a7d3167fa009a509b06a2e168",
- "reference": "fedc771326d4978a7d3167fa009a509b06a2e168",
+ "url": "https://api.github.com/repos/symfony/property-access/zipball/6dfa655ac9e9860c05cabb287f34da86b18c237e",
+ "reference": "6dfa655ac9e9860c05cabb287f34da86b18c237e",
"shasum": ""
},
"require": {
"php": ">=8.1",
"symfony/deprecation-contracts": "^2.5|^3",
- "symfony/property-info": "^5.4|^6.0|^7.0"
+ "symfony/property-info": "^6.4.32|~7.3.10|^7.4.4"
},
"require-dev": {
"symfony/cache": "^5.4|^6.0|^7.0"
},
- "time": "2025-08-12T15:42:57+00:00",
+ "time": "2026-01-05T08:25:17+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -4325,7 +4329,7 @@
"reflection"
],
"support": {
- "source": "https://github.com/symfony/property-access/tree/v6.4.25"
+ "source": "https://github.com/symfony/property-access/tree/v6.4.32"
},
"funding": [
{
@@ -4349,17 +4353,17 @@
},
{
"name": "symfony/property-info",
- "version": "v6.4.24",
- "version_normalized": "6.4.24.0",
+ "version": "v6.4.33",
+ "version_normalized": "6.4.33.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/property-info.git",
- "reference": "1056ae3621eeddd78d7c5ec074f1c1784324eec6"
+ "reference": "7d961dbb543fcfaa57fa55e555edd466e90160be"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/property-info/zipball/1056ae3621eeddd78d7c5ec074f1c1784324eec6",
- "reference": "1056ae3621eeddd78d7c5ec074f1c1784324eec6",
+ "url": "https://api.github.com/repos/symfony/property-info/zipball/7d961dbb543fcfaa57fa55e555edd466e90160be",
+ "reference": "7d961dbb543fcfaa57fa55e555edd466e90160be",
"shasum": ""
},
"require": {
@@ -4368,7 +4372,7 @@
},
"conflict": {
"doctrine/annotations": "<1.12",
- "phpdocumentor/reflection-docblock": "<5.2",
+ "phpdocumentor/reflection-docblock": "<5.2|>=6",
"phpdocumentor/type-resolver": "<1.5.1",
"symfony/cache": "<5.4",
"symfony/dependency-injection": "<5.4|>=6.0,<6.4",
@@ -4382,7 +4386,7 @@
"symfony/dependency-injection": "^5.4|^6.0|^7.0",
"symfony/serializer": "^5.4|^6.4|^7.0"
},
- "time": "2025-07-14T16:38:25+00:00",
+ "time": "2026-01-27T15:12:57+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -4418,7 +4422,7 @@
"validator"
],
"support": {
- "source": "https://github.com/symfony/property-info/tree/v6.4.24"
+ "source": "https://github.com/symfony/property-info/tree/v6.4.33"
},
"funding": [
{
@@ -4442,17 +4446,17 @@
},
{
"name": "symfony/routing",
- "version": "v6.4.24",
- "version_normalized": "6.4.24.0",
+ "version": "v6.4.32",
+ "version_normalized": "6.4.32.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/routing.git",
- "reference": "e4f94e625c8e6f910aa004a0042f7b2d398278f5"
+ "reference": "0dc6253e864e71b486e8ba4970a56ab849106ebe"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/routing/zipball/e4f94e625c8e6f910aa004a0042f7b2d398278f5",
- "reference": "e4f94e625c8e6f910aa004a0042f7b2d398278f5",
+ "url": "https://api.github.com/repos/symfony/routing/zipball/0dc6253e864e71b486e8ba4970a56ab849106ebe",
+ "reference": "0dc6253e864e71b486e8ba4970a56ab849106ebe",
"shasum": ""
},
"require": {
@@ -4474,7 +4478,7 @@
"symfony/http-foundation": "^5.4|^6.0|^7.0",
"symfony/yaml": "^5.4|^6.0|^7.0"
},
- "time": "2025-07-15T08:46:37+00:00",
+ "time": "2026-01-12T08:31:19+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -4508,7 +4512,7 @@
"url"
],
"support": {
- "source": "https://github.com/symfony/routing/tree/v6.4.24"
+ "source": "https://github.com/symfony/routing/tree/v6.4.32"
},
"funding": [
{
@@ -4532,17 +4536,17 @@
},
{
"name": "symfony/security-core",
- "version": "v6.4.26",
- "version_normalized": "6.4.26.0",
+ "version": "v6.4.31",
+ "version_normalized": "6.4.31.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/security-core.git",
- "reference": "8b7c95bf04d82fcd0c06a918b2d849bfb2ab9cc0"
+ "reference": "fa269ad61a021cc54329dc96e57bed78ba720bfe"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/security-core/zipball/8b7c95bf04d82fcd0c06a918b2d849bfb2ab9cc0",
- "reference": "8b7c95bf04d82fcd0c06a918b2d849bfb2ab9cc0",
+ "url": "https://api.github.com/repos/symfony/security-core/zipball/fa269ad61a021cc54329dc96e57bed78ba720bfe",
+ "reference": "fa269ad61a021cc54329dc96e57bed78ba720bfe",
"shasum": ""
},
"require": {
@@ -4573,7 +4577,7 @@
"symfony/translation": "^5.4.35|~6.3.12|^6.4.3|^7.0.3",
"symfony/validator": "^6.4|^7.0"
},
- "time": "2025-09-02T19:15:26+00:00",
+ "time": "2025-12-17T22:32:13+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -4601,7 +4605,7 @@
"description": "Symfony Security Component - Core Library",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/security-core/tree/v6.4.26"
+ "source": "https://github.com/symfony/security-core/tree/v6.4.31"
},
"funding": [
{
@@ -4625,17 +4629,17 @@
},
{
"name": "symfony/security-csrf",
- "version": "v6.4.24",
- "version_normalized": "6.4.24.0",
+ "version": "v6.4.31",
+ "version_normalized": "6.4.31.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/security-csrf.git",
- "reference": "9a1efc8c10b86bcedc9233affd10c716b54ca1b7"
+ "reference": "52f62836fcb19cd351ef3a2aa9cf61a489e8990f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/security-csrf/zipball/9a1efc8c10b86bcedc9233affd10c716b54ca1b7",
- "reference": "9a1efc8c10b86bcedc9233affd10c716b54ca1b7",
+ "url": "https://api.github.com/repos/symfony/security-csrf/zipball/52f62836fcb19cd351ef3a2aa9cf61a489e8990f",
+ "reference": "52f62836fcb19cd351ef3a2aa9cf61a489e8990f",
"shasum": ""
},
"require": {
@@ -4648,7 +4652,7 @@
"require-dev": {
"symfony/http-foundation": "^5.4|^6.0|^7.0"
},
- "time": "2025-07-10T08:14:14+00:00",
+ "time": "2025-12-17T22:32:13+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -4676,7 +4680,7 @@
"description": "Symfony Security Component - CSRF Library",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/security-csrf/tree/v6.4.24"
+ "source": "https://github.com/symfony/security-csrf/tree/v6.4.31"
},
"funding": [
{
@@ -4859,17 +4863,17 @@
},
{
"name": "symfony/string",
- "version": "v6.4.25",
- "version_normalized": "6.4.25.0",
+ "version": "v6.4.30",
+ "version_normalized": "6.4.30.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/string.git",
- "reference": "7cdec7edfaf2cdd9c18901e35bcf9653d6209ff1"
+ "reference": "50590a057841fa6bf69d12eceffce3465b9e32cb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/string/zipball/7cdec7edfaf2cdd9c18901e35bcf9653d6209ff1",
- "reference": "7cdec7edfaf2cdd9c18901e35bcf9653d6209ff1",
+ "url": "https://api.github.com/repos/symfony/string/zipball/50590a057841fa6bf69d12eceffce3465b9e32cb",
+ "reference": "50590a057841fa6bf69d12eceffce3465b9e32cb",
"shasum": ""
},
"require": {
@@ -4883,13 +4887,12 @@
"symfony/translation-contracts": "<2.5"
},
"require-dev": {
- "symfony/error-handler": "^5.4|^6.0|^7.0",
"symfony/http-client": "^5.4|^6.0|^7.0",
"symfony/intl": "^6.2|^7.0",
"symfony/translation-contracts": "^2.5|^3.0",
"symfony/var-exporter": "^5.4|^6.0|^7.0"
},
- "time": "2025-08-22T12:33:20+00:00",
+ "time": "2025-11-21T18:03:05+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -4928,7 +4931,7 @@
"utf8"
],
"support": {
- "source": "https://github.com/symfony/string/tree/v6.4.25"
+ "source": "https://github.com/symfony/string/tree/v6.4.30"
},
"funding": [
{
@@ -4952,23 +4955,23 @@
},
{
"name": "symfony/translation-contracts",
- "version": "v3.6.0",
- "version_normalized": "3.6.0.0",
+ "version": "v3.6.1",
+ "version_normalized": "3.6.1.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation-contracts.git",
- "reference": "df210c7a2573f1913b2d17cc95f90f53a73d8f7d"
+ "reference": "65a8bc82080447fae78373aa10f8d13b38338977"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/df210c7a2573f1913b2d17cc95f90f53a73d8f7d",
- "reference": "df210c7a2573f1913b2d17cc95f90f53a73d8f7d",
+ "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/65a8bc82080447fae78373aa10f8d13b38338977",
+ "reference": "65a8bc82080447fae78373aa10f8d13b38338977",
"shasum": ""
},
"require": {
"php": ">=8.1"
},
- "time": "2024-09-27T08:32:26+00:00",
+ "time": "2025-07-15T13:41:35+00:00",
"type": "library",
"extra": {
"thanks": {
@@ -5013,7 +5016,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/translation-contracts/tree/v3.6.0"
+ "source": "https://github.com/symfony/translation-contracts/tree/v3.6.1"
},
"funding": [
{
@@ -5024,6 +5027,10 @@
"url": "https://github.com/fabpot",
"type": "github"
},
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
@@ -5033,17 +5040,17 @@
},
{
"name": "symfony/twig-bridge",
- "version": "v6.4.25",
- "version_normalized": "6.4.25.0",
+ "version": "v6.4.32",
+ "version_normalized": "6.4.32.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/twig-bridge.git",
- "reference": "9d13e87591c9de3221c8d6f23cd9a2b5958607bf"
+ "reference": "1dcf980dd4f79885b986befdeb1c1bc0d6aedfc8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/9d13e87591c9de3221c8d6f23cd9a2b5958607bf",
- "reference": "9d13e87591c9de3221c8d6f23cd9a2b5958607bf",
+ "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/1dcf980dd4f79885b986befdeb1c1bc0d6aedfc8",
+ "reference": "1dcf980dd4f79885b986befdeb1c1bc0d6aedfc8",
"shasum": ""
},
"require": {
@@ -5056,7 +5063,7 @@
"phpdocumentor/reflection-docblock": "<3.2.2",
"phpdocumentor/type-resolver": "<1.4.0",
"symfony/console": "<5.4",
- "symfony/form": "<6.3",
+ "symfony/form": "<6.4.32|>7,<7.3.10|>7.4,<7.4.4",
"symfony/http-foundation": "<5.4",
"symfony/http-kernel": "<6.4",
"symfony/mime": "<6.2",
@@ -5074,7 +5081,7 @@
"symfony/dependency-injection": "^5.4|^6.0|^7.0",
"symfony/expression-language": "^5.4|^6.0|^7.0",
"symfony/finder": "^5.4|^6.0|^7.0",
- "symfony/form": "^6.4.20|^7.2.5",
+ "symfony/form": "^6.4.32|~7.3.10|^7.4.4",
"symfony/html-sanitizer": "^6.1|^7.0",
"symfony/http-foundation": "^5.4|^6.0|^7.0",
"symfony/http-kernel": "^6.4|^7.0",
@@ -5097,7 +5104,7 @@
"twig/inky-extra": "^2.12|^3",
"twig/markdown-extra": "^2.12|^3"
},
- "time": "2025-08-13T09:41:44+00:00",
+ "time": "2026-01-03T23:03:08+00:00",
"type": "symfony-bridge",
"installation-source": "dist",
"autoload": {
@@ -5125,7 +5132,7 @@
"description": "Provides integration for Twig with various Symfony components",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/twig-bridge/tree/v6.4.25"
+ "source": "https://github.com/symfony/twig-bridge/tree/v6.4.32"
},
"funding": [
{
@@ -5149,17 +5156,17 @@
},
{
"name": "symfony/twig-bundle",
- "version": "v6.4.24",
- "version_normalized": "6.4.24.0",
+ "version": "v6.4.32",
+ "version_normalized": "6.4.32.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/twig-bundle.git",
- "reference": "3b48b6e8225495c6d2438828982b4d219ca565ba"
+ "reference": "a5c8dcc11a5bf9c96320da20070d2e158a4e0b30"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/3b48b6e8225495c6d2438828982b4d219ca565ba",
- "reference": "3b48b6e8225495c6d2438828982b4d219ca565ba",
+ "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/a5c8dcc11a5bf9c96320da20070d2e158a4e0b30",
+ "reference": "a5c8dcc11a5bf9c96320da20070d2e158a4e0b30",
"shasum": ""
},
"require": {
@@ -5188,7 +5195,7 @@
"symfony/web-link": "^5.4|^6.0|^7.0",
"symfony/yaml": "^5.4|^6.0|^7.0"
},
- "time": "2025-07-10T08:14:14+00:00",
+ "time": "2026-01-05T12:44:39+00:00",
"type": "symfony-bundle",
"installation-source": "dist",
"autoload": {
@@ -5216,7 +5223,7 @@
"description": "Provides a tight integration of Twig into the Symfony full-stack framework",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/twig-bundle/tree/v6.4.24"
+ "source": "https://github.com/symfony/twig-bundle/tree/v6.4.32"
},
"funding": [
{
@@ -5240,17 +5247,17 @@
},
{
"name": "symfony/validator",
- "version": "v6.4.29",
- "version_normalized": "6.4.29.0",
+ "version": "v6.4.33",
+ "version_normalized": "6.4.33.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/validator.git",
- "reference": "99df8a769e64e399f510166141ea74f450e8dd1d"
+ "reference": "da1a40418439c0483ca7e0d4ae4c4f744f6b8536"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/validator/zipball/99df8a769e64e399f510166141ea74f450e8dd1d",
- "reference": "99df8a769e64e399f510166141ea74f450e8dd1d",
+ "url": "https://api.github.com/repos/symfony/validator/zipball/da1a40418439c0483ca7e0d4ae4c4f744f6b8536",
+ "reference": "da1a40418439c0483ca7e0d4ae4c4f744f6b8536",
"shasum": ""
},
"require": {
@@ -5291,7 +5298,7 @@
"symfony/translation": "^5.4.35|~6.3.12|^6.4.3|^7.0.3",
"symfony/yaml": "^5.4|^6.0|^7.0"
},
- "time": "2025-11-06T20:26:06+00:00",
+ "time": "2026-01-26T16:20:53+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -5320,7 +5327,7 @@
"description": "Provides tools to validate values",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/validator/tree/v6.4.29"
+ "source": "https://github.com/symfony/validator/tree/v6.4.33"
},
"funding": [
{
@@ -5344,17 +5351,17 @@
},
{
"name": "symfony/var-dumper",
- "version": "v6.4.26",
- "version_normalized": "6.4.26.0",
+ "version": "v6.4.32",
+ "version_normalized": "6.4.32.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-dumper.git",
- "reference": "cfae1497a2f1eaad78dbc0590311c599c7178d4a"
+ "reference": "131fc9915e0343052af5ed5040401b481ca192aa"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/var-dumper/zipball/cfae1497a2f1eaad78dbc0590311c599c7178d4a",
- "reference": "cfae1497a2f1eaad78dbc0590311c599c7178d4a",
+ "url": "https://api.github.com/repos/symfony/var-dumper/zipball/131fc9915e0343052af5ed5040401b481ca192aa",
+ "reference": "131fc9915e0343052af5ed5040401b481ca192aa",
"shasum": ""
},
"require": {
@@ -5373,7 +5380,7 @@
"symfony/uid": "^5.4|^6.0|^7.0",
"twig/twig": "^2.13|^3.0.4"
},
- "time": "2025-09-25T15:37:27+00:00",
+ "time": "2026-01-01T13:34:06+00:00",
"bin": [
"Resources/bin/var-dump-server"
],
@@ -5411,7 +5418,7 @@
"dump"
],
"support": {
- "source": "https://github.com/symfony/var-dumper/tree/v6.4.26"
+ "source": "https://github.com/symfony/var-dumper/tree/v6.4.32"
},
"funding": [
{
@@ -5519,17 +5526,17 @@
},
{
"name": "symfony/web-profiler-bundle",
- "version": "v6.4.25",
- "version_normalized": "6.4.25.0",
+ "version": "v6.4.32",
+ "version_normalized": "6.4.32.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/web-profiler-bundle.git",
- "reference": "4c1754d6b3ffe52e9eaed0d9a392eb43a60fc910"
+ "reference": "011f59e3f3d20f60d11b4e78b8dc63504f56e145"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/4c1754d6b3ffe52e9eaed0d9a392eb43a60fc910",
- "reference": "4c1754d6b3ffe52e9eaed0d9a392eb43a60fc910",
+ "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/011f59e3f3d20f60d11b4e78b8dc63504f56e145",
+ "reference": "011f59e3f3d20f60d11b4e78b8dc63504f56e145",
"shasum": ""
},
"require": {
@@ -5553,7 +5560,7 @@
"symfony/css-selector": "^5.4|^6.0|^7.0",
"symfony/stopwatch": "^5.4|^6.0|^7.0"
},
- "time": "2025-08-07T12:02:05+00:00",
+ "time": "2026-01-06T09:13:42+00:00",
"type": "symfony-bundle",
"installation-source": "dist",
"autoload": {
@@ -5584,7 +5591,7 @@
"dev"
],
"support": {
- "source": "https://github.com/symfony/web-profiler-bundle/tree/v6.4.25"
+ "source": "https://github.com/symfony/web-profiler-bundle/tree/v6.4.32"
},
"funding": [
{
@@ -5608,17 +5615,17 @@
},
{
"name": "symfony/yaml",
- "version": "v6.4.25",
- "version_normalized": "6.4.25.0",
+ "version": "v6.4.30",
+ "version_normalized": "6.4.30.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/yaml.git",
- "reference": "e54b060bc9c3dc3d4258bf0d165d0064e755f565"
+ "reference": "8207ae83da19ee3748d6d4f567b4d9a7c656e331"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/yaml/zipball/e54b060bc9c3dc3d4258bf0d165d0064e755f565",
- "reference": "e54b060bc9c3dc3d4258bf0d165d0064e755f565",
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/8207ae83da19ee3748d6d4f567b4d9a7c656e331",
+ "reference": "8207ae83da19ee3748d6d4f567b4d9a7c656e331",
"shasum": ""
},
"require": {
@@ -5632,7 +5639,7 @@
"require-dev": {
"symfony/console": "^5.4|^6.0|^7.0"
},
- "time": "2025-08-26T16:59:00+00:00",
+ "time": "2025-12-02T11:50:18+00:00",
"bin": [
"Resources/bin/yaml-lint"
],
@@ -5663,7 +5670,7 @@
"description": "Loads and dumps YAML files",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/yaml/tree/v6.4.25"
+ "source": "https://github.com/symfony/yaml/tree/v6.4.30"
},
"funding": [
{
@@ -5824,17 +5831,17 @@
},
{
"name": "twig/twig",
- "version": "v3.21.1",
- "version_normalized": "3.21.1.0",
+ "version": "v3.23.0",
+ "version_normalized": "3.23.0.0",
"source": {
"type": "git",
"url": "https://github.com/twigphp/Twig.git",
- "reference": "285123877d4dd97dd7c11842ac5fb7e86e60d81d"
+ "reference": "a64dc5d2cc7d6cafb9347f6cd802d0d06d0351c9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/twigphp/Twig/zipball/285123877d4dd97dd7c11842ac5fb7e86e60d81d",
- "reference": "285123877d4dd97dd7c11842ac5fb7e86e60d81d",
+ "url": "https://api.github.com/repos/twigphp/Twig/zipball/a64dc5d2cc7d6cafb9347f6cd802d0d06d0351c9",
+ "reference": "a64dc5d2cc7d6cafb9347f6cd802d0d06d0351c9",
"shasum": ""
},
"require": {
@@ -5848,7 +5855,7 @@
"psr/container": "^1.0|^2.0",
"symfony/phpunit-bridge": "^5.4.9|^6.4|^7.0"
},
- "time": "2025-05-03T07:21:55+00:00",
+ "time": "2026-01-23T21:00:41+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -5890,7 +5897,7 @@
],
"support": {
"issues": "https://github.com/twigphp/Twig/issues",
- "source": "https://github.com/twigphp/Twig/tree/v3.21.1"
+ "source": "https://github.com/twigphp/Twig/tree/v3.23.0"
},
"funding": [
{
diff --git a/lib/composer/installed.php b/lib/composer/installed.php
index 458ae0d68..d05367ff1 100644
--- a/lib/composer/installed.php
+++ b/lib/composer/installed.php
@@ -3,7 +3,7 @@
'name' => 'combodo/itop',
'pretty_version' => 'dev-develop',
'version' => 'dev-develop',
- 'reference' => '2b828f8a22d238f2221cc9e157c83d8d2ebd0696',
+ 'reference' => '0f11fd9919aab579586a6f52e1c74f317518040c',
'type' => 'project',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
@@ -22,7 +22,7 @@
'combodo/itop' => array(
'pretty_version' => 'dev-develop',
'version' => 'dev-develop',
- 'reference' => '2b828f8a22d238f2221cc9e157c83d8d2ebd0696',
+ 'reference' => '0f11fd9919aab579586a6f52e1c74f317518040c',
'type' => 'project',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
@@ -310,9 +310,9 @@
'dev_requirement' => false,
),
'symfony/cache' => array(
- 'pretty_version' => 'v6.4.12',
- 'version' => '6.4.12.0',
- 'reference' => 'a463451b7f6ac4a47b98dbfc78ec2d3560c759d8',
+ 'pretty_version' => 'v6.4.33',
+ 'version' => '6.4.33.0',
+ 'reference' => '5b088fa41eb9568748dc255c45e4054c387ba73b',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/cache',
'aliases' => array(),
@@ -334,18 +334,18 @@
),
),
'symfony/config' => array(
- 'pretty_version' => 'v6.4.24',
- 'version' => '6.4.24.0',
- 'reference' => '80e2cf005cf17138c97193be0434cdcfd1b2212e',
+ 'pretty_version' => 'v6.4.32',
+ 'version' => '6.4.32.0',
+ 'reference' => 'd445badf0ad2c2a492e38c0378c39997a56ef97b',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/config',
'aliases' => array(),
'dev_requirement' => false,
),
'symfony/console' => array(
- 'pretty_version' => 'v6.4.25',
- 'version' => '6.4.25.0',
- 'reference' => '273fd29ff30ba0a88ca5fb83f7cf1ab69306adae',
+ 'pretty_version' => 'v6.4.32',
+ 'version' => '6.4.32.0',
+ 'reference' => '0bc2199c6c1f05276b05956f1ddc63f6d7eb5fc3',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/console',
'aliases' => array(),
@@ -361,9 +361,9 @@
'dev_requirement' => false,
),
'symfony/dependency-injection' => array(
- 'pretty_version' => 'v6.4.25',
- 'version' => '6.4.25.0',
- 'reference' => '900da8a42eceeb4a13a0ec34caa7db49328daff3',
+ 'pretty_version' => 'v6.4.32',
+ 'version' => '6.4.32.0',
+ 'reference' => 'b17882e933c4c606620247b6708ab53aa3b88753',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/dependency-injection',
'aliases' => array(),
@@ -379,27 +379,27 @@
'dev_requirement' => false,
),
'symfony/dotenv' => array(
- 'pretty_version' => 'v6.4.24',
- 'version' => '6.4.24.0',
- 'reference' => '234b6c602f12b00693f4b0d1054386fb30dfc8ff',
+ 'pretty_version' => 'v6.4.30',
+ 'version' => '6.4.30.0',
+ 'reference' => '924edbc9631b75302def0258ed1697948b17baf6',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/dotenv',
'aliases' => array(),
'dev_requirement' => false,
),
'symfony/error-handler' => array(
- 'pretty_version' => 'v6.4.24',
- 'version' => '6.4.24.0',
- 'reference' => '30fd0b3cf0e972e82636038ce4db0e4fe777112c',
+ 'pretty_version' => 'v6.4.32',
+ 'version' => '6.4.32.0',
+ 'reference' => '8c18400784fcb014dc73c8d5601a9576af7f8ad4',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/error-handler',
'aliases' => array(),
'dev_requirement' => false,
),
'symfony/event-dispatcher' => array(
- 'pretty_version' => 'v6.4.25',
- 'version' => '6.4.25.0',
- 'reference' => 'b0cf3162020603587363f0551cd3be43958611ff',
+ 'pretty_version' => 'v6.4.32',
+ 'version' => '6.4.32.0',
+ 'reference' => '99d7e101826e6610606b9433248f80c1997cd20b',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/event-dispatcher',
'aliases' => array(),
@@ -421,90 +421,90 @@
),
),
'symfony/filesystem' => array(
- 'pretty_version' => 'v6.4.24',
- 'version' => '6.4.24.0',
- 'reference' => '75ae2edb7cdcc0c53766c30b0a2512b8df574bd8',
+ 'pretty_version' => 'v6.4.30',
+ 'version' => '6.4.30.0',
+ 'reference' => '441c6b69f7222aadae7cbf5df588496d5ee37789',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/filesystem',
'aliases' => array(),
'dev_requirement' => false,
),
'symfony/finder' => array(
- 'pretty_version' => 'v6.4.24',
- 'version' => '6.4.24.0',
- 'reference' => '73089124388c8510efb8d2d1689285d285937b08',
+ 'pretty_version' => 'v6.4.33',
+ 'version' => '6.4.33.0',
+ 'reference' => '24965ca011dac87431729640feef8bcf7b5523e0',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/finder',
'aliases' => array(),
'dev_requirement' => false,
),
'symfony/form' => array(
- 'pretty_version' => 'v6.4.26',
- 'version' => '6.4.26.0',
- 'reference' => 'b40cdbe70be9274ea807ef61da7d0f8d1c70dc51',
+ 'pretty_version' => 'v6.4.32',
+ 'version' => '6.4.32.0',
+ 'reference' => 'b758162fb45024f898640ec27f4ac90be0dbfb8f',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/form',
'aliases' => array(),
'dev_requirement' => false,
),
'symfony/framework-bundle' => array(
- 'pretty_version' => 'v6.4.25',
- 'version' => '6.4.25.0',
- 'reference' => '1d6a764b58e4f780df00f71c20ba3a61095ea447',
+ 'pretty_version' => 'v6.4.33',
+ 'version' => '6.4.33.0',
+ 'reference' => '9ef2d0b63b9e855ba351e770a603d89699115801',
'type' => 'symfony-bundle',
'install_path' => __DIR__ . '/../symfony/framework-bundle',
'aliases' => array(),
'dev_requirement' => false,
),
'symfony/http-foundation' => array(
- 'pretty_version' => 'v6.4.29',
- 'version' => '6.4.29.0',
- 'reference' => 'b03d11e015552a315714c127d8d1e0f9e970ec88',
+ 'pretty_version' => 'v6.4.33',
+ 'version' => '6.4.33.0',
+ 'reference' => 'f1a490cc9d595ba7ebe684220e625d1e472ad278',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/http-foundation',
'aliases' => array(),
'dev_requirement' => false,
),
'symfony/http-kernel' => array(
- 'pretty_version' => 'v6.4.25',
- 'version' => '6.4.25.0',
- 'reference' => 'a0ee3cea5cabf4ed960fd2ef57668ceeacdb6e15',
+ 'pretty_version' => 'v6.4.33',
+ 'version' => '6.4.33.0',
+ 'reference' => '73fa5c999d7f741ca544a97d3c791cc97890ae4d',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/http-kernel',
'aliases' => array(),
'dev_requirement' => false,
),
'symfony/mailer' => array(
- 'pretty_version' => 'v6.4.25',
- 'version' => '6.4.25.0',
- 'reference' => '628b43b45a3e6b15c8a633fb22df547ed9b492a2',
+ 'pretty_version' => 'v6.4.31',
+ 'version' => '6.4.31.0',
+ 'reference' => '8835f93333474780fda1b987cae37e33c3e026ca',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/mailer',
'aliases' => array(),
'dev_requirement' => false,
),
'symfony/mime' => array(
- 'pretty_version' => 'v6.4.24',
- 'version' => '6.4.24.0',
- 'reference' => '664d5e844a2de5e11c8255d0aef6bc15a9660ac7',
+ 'pretty_version' => 'v6.4.32',
+ 'version' => '6.4.32.0',
+ 'reference' => '7409686879ca36c09fc970a5fa8ff6e93504dba4',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/mime',
'aliases' => array(),
'dev_requirement' => false,
),
'symfony/options-resolver' => array(
- 'pretty_version' => 'v6.4.25',
- 'version' => '6.4.25.0',
- 'reference' => 'd28e7e2db8a73e9511df892d36445f61314bbebe',
+ 'pretty_version' => 'v6.4.30',
+ 'version' => '6.4.30.0',
+ 'reference' => 'eeaa8cabe54c7b3516938c72a4a161c0cc80a34f',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/options-resolver',
'aliases' => array(),
'dev_requirement' => false,
),
'symfony/password-hasher' => array(
- 'pretty_version' => 'v6.4.24',
- 'version' => '6.4.24.0',
- 'reference' => 'dcab5ac87450aaed26483ba49c2ce86808da7557',
+ 'pretty_version' => 'v6.4.32',
+ 'version' => '6.4.32.0',
+ 'reference' => 'fbdfa5a2ca218ec8bb9029517426df2d780bdba9',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/password-hasher',
'aliases' => array(),
@@ -574,45 +574,45 @@
'dev_requirement' => false,
),
'symfony/property-access' => array(
- 'pretty_version' => 'v6.4.25',
- 'version' => '6.4.25.0',
- 'reference' => 'fedc771326d4978a7d3167fa009a509b06a2e168',
+ 'pretty_version' => 'v6.4.32',
+ 'version' => '6.4.32.0',
+ 'reference' => '6dfa655ac9e9860c05cabb287f34da86b18c237e',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/property-access',
'aliases' => array(),
'dev_requirement' => false,
),
'symfony/property-info' => array(
- 'pretty_version' => 'v6.4.24',
- 'version' => '6.4.24.0',
- 'reference' => '1056ae3621eeddd78d7c5ec074f1c1784324eec6',
+ 'pretty_version' => 'v6.4.33',
+ 'version' => '6.4.33.0',
+ 'reference' => '7d961dbb543fcfaa57fa55e555edd466e90160be',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/property-info',
'aliases' => array(),
'dev_requirement' => false,
),
'symfony/routing' => array(
- 'pretty_version' => 'v6.4.24',
- 'version' => '6.4.24.0',
- 'reference' => 'e4f94e625c8e6f910aa004a0042f7b2d398278f5',
+ 'pretty_version' => 'v6.4.32',
+ 'version' => '6.4.32.0',
+ 'reference' => '0dc6253e864e71b486e8ba4970a56ab849106ebe',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/routing',
'aliases' => array(),
'dev_requirement' => false,
),
'symfony/security-core' => array(
- 'pretty_version' => 'v6.4.26',
- 'version' => '6.4.26.0',
- 'reference' => '8b7c95bf04d82fcd0c06a918b2d849bfb2ab9cc0',
+ 'pretty_version' => 'v6.4.31',
+ 'version' => '6.4.31.0',
+ 'reference' => 'fa269ad61a021cc54329dc96e57bed78ba720bfe',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/security-core',
'aliases' => array(),
'dev_requirement' => false,
),
'symfony/security-csrf' => array(
- 'pretty_version' => 'v6.4.24',
- 'version' => '6.4.24.0',
- 'reference' => '9a1efc8c10b86bcedc9233affd10c716b54ca1b7',
+ 'pretty_version' => 'v6.4.31',
+ 'version' => '6.4.31.0',
+ 'reference' => '52f62836fcb19cd351ef3a2aa9cf61a489e8990f',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/security-csrf',
'aliases' => array(),
@@ -643,54 +643,54 @@
'dev_requirement' => true,
),
'symfony/string' => array(
- 'pretty_version' => 'v6.4.25',
- 'version' => '6.4.25.0',
- 'reference' => '7cdec7edfaf2cdd9c18901e35bcf9653d6209ff1',
+ 'pretty_version' => 'v6.4.30',
+ 'version' => '6.4.30.0',
+ 'reference' => '50590a057841fa6bf69d12eceffce3465b9e32cb',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/string',
'aliases' => array(),
'dev_requirement' => false,
),
'symfony/translation-contracts' => array(
- 'pretty_version' => 'v3.6.0',
- 'version' => '3.6.0.0',
- 'reference' => 'df210c7a2573f1913b2d17cc95f90f53a73d8f7d',
+ 'pretty_version' => 'v3.6.1',
+ 'version' => '3.6.1.0',
+ 'reference' => '65a8bc82080447fae78373aa10f8d13b38338977',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/translation-contracts',
'aliases' => array(),
'dev_requirement' => false,
),
'symfony/twig-bridge' => array(
- 'pretty_version' => 'v6.4.25',
- 'version' => '6.4.25.0',
- 'reference' => '9d13e87591c9de3221c8d6f23cd9a2b5958607bf',
+ 'pretty_version' => 'v6.4.32',
+ 'version' => '6.4.32.0',
+ 'reference' => '1dcf980dd4f79885b986befdeb1c1bc0d6aedfc8',
'type' => 'symfony-bridge',
'install_path' => __DIR__ . '/../symfony/twig-bridge',
'aliases' => array(),
'dev_requirement' => false,
),
'symfony/twig-bundle' => array(
- 'pretty_version' => 'v6.4.24',
- 'version' => '6.4.24.0',
- 'reference' => '3b48b6e8225495c6d2438828982b4d219ca565ba',
+ 'pretty_version' => 'v6.4.32',
+ 'version' => '6.4.32.0',
+ 'reference' => 'a5c8dcc11a5bf9c96320da20070d2e158a4e0b30',
'type' => 'symfony-bundle',
'install_path' => __DIR__ . '/../symfony/twig-bundle',
'aliases' => array(),
'dev_requirement' => false,
),
'symfony/validator' => array(
- 'pretty_version' => 'v6.4.29',
- 'version' => '6.4.29.0',
- 'reference' => '99df8a769e64e399f510166141ea74f450e8dd1d',
+ 'pretty_version' => 'v6.4.33',
+ 'version' => '6.4.33.0',
+ 'reference' => 'da1a40418439c0483ca7e0d4ae4c4f744f6b8536',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/validator',
'aliases' => array(),
'dev_requirement' => false,
),
'symfony/var-dumper' => array(
- 'pretty_version' => 'v6.4.26',
- 'version' => '6.4.26.0',
- 'reference' => 'cfae1497a2f1eaad78dbc0590311c599c7178d4a',
+ 'pretty_version' => 'v6.4.32',
+ 'version' => '6.4.32.0',
+ 'reference' => '131fc9915e0343052af5ed5040401b481ca192aa',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/var-dumper',
'aliases' => array(),
@@ -706,18 +706,18 @@
'dev_requirement' => false,
),
'symfony/web-profiler-bundle' => array(
- 'pretty_version' => 'v6.4.25',
- 'version' => '6.4.25.0',
- 'reference' => '4c1754d6b3ffe52e9eaed0d9a392eb43a60fc910',
+ 'pretty_version' => 'v6.4.32',
+ 'version' => '6.4.32.0',
+ 'reference' => '011f59e3f3d20f60d11b4e78b8dc63504f56e145',
'type' => 'symfony-bundle',
'install_path' => __DIR__ . '/../symfony/web-profiler-bundle',
'aliases' => array(),
'dev_requirement' => true,
),
'symfony/yaml' => array(
- 'pretty_version' => 'v6.4.25',
- 'version' => '6.4.25.0',
- 'reference' => 'e54b060bc9c3dc3d4258bf0d165d0064e755f565',
+ 'pretty_version' => 'v6.4.30',
+ 'version' => '6.4.30.0',
+ 'reference' => '8207ae83da19ee3748d6d4f567b4d9a7c656e331',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/yaml',
'aliases' => array(),
@@ -742,9 +742,9 @@
'dev_requirement' => false,
),
'twig/twig' => array(
- 'pretty_version' => 'v3.21.1',
- 'version' => '3.21.1.0',
- 'reference' => '285123877d4dd97dd7c11842ac5fb7e86e60d81d',
+ 'pretty_version' => 'v3.23.0',
+ 'version' => '3.23.0.0',
+ 'reference' => 'a64dc5d2cc7d6cafb9347f6cd802d0d06d0351c9',
'type' => 'library',
'install_path' => __DIR__ . '/../twig/twig',
'aliases' => array(),
diff --git a/lib/symfony/cache/Adapter/AbstractAdapter.php b/lib/symfony/cache/Adapter/AbstractAdapter.php
index 7525fe039..bf04ae08c 100644
--- a/lib/symfony/cache/Adapter/AbstractAdapter.php
+++ b/lib/symfony/cache/Adapter/AbstractAdapter.php
@@ -40,7 +40,7 @@ abstract class AbstractAdapter implements AdapterInterface, CacheInterface, Logg
$this->namespace = '' === $namespace ? '' : CacheItem::validateKey($namespace).static::NS_SEPARATOR;
$this->defaultLifetime = $defaultLifetime;
if (null !== $this->maxIdLength && \strlen($namespace) > $this->maxIdLength - 24) {
- throw new InvalidArgumentException(sprintf('Namespace must be %d chars max, %d given ("%s").', $this->maxIdLength - 24, \strlen($namespace), $namespace));
+ throw new InvalidArgumentException(\sprintf('Namespace must be %d chars max, %d given ("%s").', $this->maxIdLength - 24, \strlen($namespace), $namespace));
}
self::$createCacheItem ??= \Closure::bind(
static function ($key, $value, $isHit) {
@@ -155,7 +155,7 @@ abstract class AbstractAdapter implements AdapterInterface, CacheInterface, Logg
$ok = false;
$v = $values[$id];
$type = get_debug_type($v);
- $message = sprintf('Failed to save key "{key}" of type %s%s', $type, $e instanceof \Exception ? ': '.$e->getMessage() : '.');
+ $message = \sprintf('Failed to save key "{key}" of type %s%s', $type, $e instanceof \Exception ? ': '.$e->getMessage() : '.');
CacheItem::log($this->logger, $message, ['key' => substr($id, \strlen($this->namespace)), 'exception' => $e instanceof \Exception ? $e : null, 'cache-adapter' => get_debug_type($this)]);
}
} else {
@@ -178,7 +178,7 @@ abstract class AbstractAdapter implements AdapterInterface, CacheInterface, Logg
}
$ok = false;
$type = get_debug_type($v);
- $message = sprintf('Failed to save key "{key}" of type %s%s', $type, $e instanceof \Exception ? ': '.$e->getMessage() : '.');
+ $message = \sprintf('Failed to save key "{key}" of type %s%s', $type, $e instanceof \Exception ? ': '.$e->getMessage() : '.');
CacheItem::log($this->logger, $message, ['key' => substr($id, \strlen($this->namespace)), 'exception' => $e instanceof \Exception ? $e : null, 'cache-adapter' => get_debug_type($this)]);
}
}
diff --git a/lib/symfony/cache/Adapter/AbstractTagAwareAdapter.php b/lib/symfony/cache/Adapter/AbstractTagAwareAdapter.php
index ef62b4fb2..a1af6141b 100644
--- a/lib/symfony/cache/Adapter/AbstractTagAwareAdapter.php
+++ b/lib/symfony/cache/Adapter/AbstractTagAwareAdapter.php
@@ -42,7 +42,7 @@ abstract class AbstractTagAwareAdapter implements TagAwareAdapterInterface, TagA
$this->namespace = '' === $namespace ? '' : CacheItem::validateKey($namespace).':';
$this->defaultLifetime = $defaultLifetime;
if (null !== $this->maxIdLength && \strlen($namespace) > $this->maxIdLength - 24) {
- throw new InvalidArgumentException(sprintf('Namespace must be %d chars max, %d given ("%s").', $this->maxIdLength - 24, \strlen($namespace), $namespace));
+ throw new InvalidArgumentException(\sprintf('Namespace must be %d chars max, %d given ("%s").', $this->maxIdLength - 24, \strlen($namespace), $namespace));
}
self::$createCacheItem ??= \Closure::bind(
static function ($key, $value, $isHit) {
@@ -194,7 +194,7 @@ abstract class AbstractTagAwareAdapter implements TagAwareAdapterInterface, TagA
$ok = false;
$v = $values[$id];
$type = get_debug_type($v);
- $message = sprintf('Failed to save key "{key}" of type %s%s', $type, $e instanceof \Exception ? ': '.$e->getMessage() : '.');
+ $message = \sprintf('Failed to save key "{key}" of type %s%s', $type, $e instanceof \Exception ? ': '.$e->getMessage() : '.');
CacheItem::log($this->logger, $message, ['key' => substr($id, \strlen($this->namespace)), 'exception' => $e instanceof \Exception ? $e : null, 'cache-adapter' => get_debug_type($this)]);
}
} else {
@@ -218,7 +218,7 @@ abstract class AbstractTagAwareAdapter implements TagAwareAdapterInterface, TagA
}
$ok = false;
$type = get_debug_type($v);
- $message = sprintf('Failed to save key "{key}" of type %s%s', $type, $e instanceof \Exception ? ': '.$e->getMessage() : '.');
+ $message = \sprintf('Failed to save key "{key}" of type %s%s', $type, $e instanceof \Exception ? ': '.$e->getMessage() : '.');
CacheItem::log($this->logger, $message, ['key' => substr($id, \strlen($this->namespace)), 'exception' => $e instanceof \Exception ? $e : null, 'cache-adapter' => get_debug_type($this)]);
}
}
diff --git a/lib/symfony/cache/Adapter/ApcuAdapter.php b/lib/symfony/cache/Adapter/ApcuAdapter.php
index 2eddb49a7..50ce8448e 100644
--- a/lib/symfony/cache/Adapter/ApcuAdapter.php
+++ b/lib/symfony/cache/Adapter/ApcuAdapter.php
@@ -82,7 +82,7 @@ class ApcuAdapter extends AbstractAdapter
protected function doClear(string $namespace): bool
{
return isset($namespace[0]) && class_exists(\APCUIterator::class, false) && ('cli' !== \PHP_SAPI || filter_var(\ini_get('apc.enable_cli'), \FILTER_VALIDATE_BOOL))
- ? apcu_delete(new \APCUIterator(sprintf('/^%s/', preg_quote($namespace, '/')), \APC_ITER_KEY))
+ ? apcu_delete(new \APCUIterator(\sprintf('/^%s/', preg_quote($namespace, '/')), \APC_ITER_KEY))
: apcu_clear_cache();
}
@@ -101,19 +101,10 @@ class ApcuAdapter extends AbstractAdapter
return $failed;
}
- try {
- if (false === $failures = apcu_store($values, null, $lifetime)) {
- $failures = $values;
- }
-
- return array_keys($failures);
- } catch (\Throwable $e) {
- if (1 === \count($values)) {
- // Workaround https://github.com/krakjoe/apcu/issues/170
- apcu_delete(array_key_first($values));
- }
-
- throw $e;
+ if (false === $failures = apcu_store($values, null, $lifetime)) {
+ $failures = $values;
}
+
+ return array_keys($failures);
}
}
diff --git a/lib/symfony/cache/Adapter/ArrayAdapter.php b/lib/symfony/cache/Adapter/ArrayAdapter.php
index 660a52646..38e19cbdd 100644
--- a/lib/symfony/cache/Adapter/ArrayAdapter.php
+++ b/lib/symfony/cache/Adapter/ArrayAdapter.php
@@ -46,11 +46,11 @@ class ArrayAdapter implements AdapterInterface, CacheInterface, LoggerAwareInter
public function __construct(int $defaultLifetime = 0, bool $storeSerialized = true, float $maxLifetime = 0, int $maxItems = 0)
{
if (0 > $maxLifetime) {
- throw new InvalidArgumentException(sprintf('Argument $maxLifetime must be positive, %F passed.', $maxLifetime));
+ throw new InvalidArgumentException(\sprintf('Argument $maxLifetime must be positive, %F passed.', $maxLifetime));
}
if (0 > $maxItems) {
- throw new InvalidArgumentException(sprintf('Argument $maxItems must be a positive integer, %d passed.', $maxItems));
+ throw new InvalidArgumentException(\sprintf('Argument $maxItems must be a positive integer, %d passed.', $maxItems));
}
$this->defaultLifetime = $defaultLifetime;
@@ -312,9 +312,11 @@ class ArrayAdapter implements AdapterInterface, CacheInterface, LoggerAwareInter
try {
$serialized = serialize($value);
} catch (\Exception $e) {
- unset($this->values[$key], $this->tags[$key]);
+ if (!isset($this->expiries[$key])) {
+ unset($this->values[$key]);
+ }
$type = get_debug_type($value);
- $message = sprintf('Failed to save key "{key}" of type %s: %s', $type, $e->getMessage());
+ $message = \sprintf('Failed to save key "{key}" of type %s: %s', $type, $e->getMessage());
CacheItem::log($this->logger, $message, ['key' => $key, 'exception' => $e, 'cache-adapter' => get_debug_type($this)]);
return null;
diff --git a/lib/symfony/cache/Adapter/ChainAdapter.php b/lib/symfony/cache/Adapter/ChainAdapter.php
index 221b1fb5d..1d187f65c 100644
--- a/lib/symfony/cache/Adapter/ChainAdapter.php
+++ b/lib/symfony/cache/Adapter/ChainAdapter.php
@@ -51,7 +51,7 @@ class ChainAdapter implements AdapterInterface, CacheInterface, PruneableInterfa
foreach ($adapters as $adapter) {
if (!$adapter instanceof CacheItemPoolInterface) {
- throw new InvalidArgumentException(sprintf('The class "%s" does not implement the "%s" interface.', get_debug_type($adapter), CacheItemPoolInterface::class));
+ throw new InvalidArgumentException(\sprintf('The class "%s" does not implement the "%s" interface.', get_debug_type($adapter), CacheItemPoolInterface::class));
}
if ('cli' === \PHP_SAPI && $adapter instanceof ApcuAdapter && !filter_var(\ini_get('apc.enable_cli'), \FILTER_VALIDATE_BOOL)) {
continue; // skip putting APCu in the chain when the backend is disabled
@@ -76,7 +76,7 @@ class ChainAdapter implements AdapterInterface, CacheInterface, PruneableInterfa
$item->metadata = $item->newMetadata = $sourceItem->metadata = $sourceMetadata;
if (isset($item->metadata[CacheItem::METADATA_EXPIRY])) {
- $item->expiresAt(\DateTimeImmutable::createFromFormat('U.u', sprintf('%.6F', $item->metadata[CacheItem::METADATA_EXPIRY])));
+ $item->expiresAt(\DateTimeImmutable::createFromFormat('U.u', \sprintf('%.6F', $item->metadata[CacheItem::METADATA_EXPIRY])));
} elseif (0 < $defaultLifetime) {
$item->expiresAfter($defaultLifetime);
}
@@ -106,7 +106,7 @@ class ChainAdapter implements AdapterInterface, CacheInterface, PruneableInterfa
$callback = $wrap;
$beta = \INF === $beta ? \INF : 0;
}
- if ($adapter instanceof CacheInterface) {
+ if ($adapter instanceof CacheInterface && $i !== $this->adapterCount) {
$value = $adapter->get($key, $callback, $beta, $metadata);
} else {
$value = $this->doGet($adapter, $key, $callback, $beta, $metadata);
diff --git a/lib/symfony/cache/Adapter/DoctrineDbalAdapter.php b/lib/symfony/cache/Adapter/DoctrineDbalAdapter.php
index 9d02be3aa..1866083b4 100644
--- a/lib/symfony/cache/Adapter/DoctrineDbalAdapter.php
+++ b/lib/symfony/cache/Adapter/DoctrineDbalAdapter.php
@@ -62,7 +62,7 @@ class DoctrineDbalAdapter extends AbstractAdapter implements PruneableInterface
public function __construct(Connection|string $connOrDsn, string $namespace = '', int $defaultLifetime = 0, array $options = [], ?MarshallerInterface $marshaller = null)
{
if (isset($namespace[0]) && preg_match('#[^-+.A-Za-z0-9]#', $namespace, $match)) {
- throw new InvalidArgumentException(sprintf('Namespace contains "%s" but only characters in [-+.A-Za-z0-9] are allowed.', $match[0]));
+ throw new InvalidArgumentException(\sprintf('Namespace contains "%s" but only characters in [-+.A-Za-z0-9] are allowed.', $match[0]));
}
if ($connOrDsn instanceof Connection) {
@@ -151,7 +151,7 @@ class DoctrineDbalAdapter extends AbstractAdapter implements PruneableInterface
if ('' !== $this->namespace) {
$deleteSql .= " AND $this->idCol LIKE ?";
- $params[] = sprintf('%s%%', $this->namespace);
+ $params[] = \sprintf('%s%%', $this->namespace);
$paramTypes[] = ParameterType::STRING;
}
diff --git a/lib/symfony/cache/Adapter/MemcachedAdapter.php b/lib/symfony/cache/Adapter/MemcachedAdapter.php
index 0efa152ee..9f983f0ad 100644
--- a/lib/symfony/cache/Adapter/MemcachedAdapter.php
+++ b/lib/symfony/cache/Adapter/MemcachedAdapter.php
@@ -25,7 +25,7 @@ class MemcachedAdapter extends AbstractAdapter
/**
* We are replacing characters that are illegal in Memcached keys with reserved characters from
* {@see \Symfony\Contracts\Cache\ItemInterface::RESERVED_CHARACTERS} that are legal in Memcached.
- * Note: don’t use {@see \Symfony\Component\Cache\Adapter\AbstractAdapter::NS_SEPARATOR}.
+ * Note: don’t use {@see AbstractAdapter::NS_SEPARATOR}.
*/
private const RESERVED_MEMCACHED = " \n\r\t\v\f\0";
private const RESERVED_PSR6 = '@()\{}/';
@@ -314,7 +314,7 @@ class MemcachedAdapter extends AbstractAdapter
throw new CacheException('MemcachedAdapter: "serializer" option must be "php" or "igbinary".');
}
if ('' !== $prefix = (string) $this->lazyClient->getOption(\Memcached::OPT_PREFIX_KEY)) {
- throw new CacheException(sprintf('MemcachedAdapter: "prefix_key" option must be empty when using proxified connections, "%s" given.', $prefix));
+ throw new CacheException(\sprintf('MemcachedAdapter: "prefix_key" option must be empty when using proxified connections, "%s" given.', $prefix));
}
return $this->client = $this->lazyClient;
diff --git a/lib/symfony/cache/Adapter/ParameterNormalizer.php b/lib/symfony/cache/Adapter/ParameterNormalizer.php
index a6896402f..483df1c0b 100644
--- a/lib/symfony/cache/Adapter/ParameterNormalizer.php
+++ b/lib/symfony/cache/Adapter/ParameterNormalizer.php
@@ -29,7 +29,7 @@ final class ParameterNormalizer
try {
return \DateTimeImmutable::createFromFormat('U', 0)->add(new \DateInterval($duration))->getTimestamp();
} catch (\Exception $e) {
- throw new \InvalidArgumentException(sprintf('Cannot parse date interval "%s".', $duration), 0, $e);
+ throw new \InvalidArgumentException(\sprintf('Cannot parse date interval "%s".', $duration), 0, $e);
}
}
}
diff --git a/lib/symfony/cache/Adapter/PdoAdapter.php b/lib/symfony/cache/Adapter/PdoAdapter.php
index c79b73959..f5865993d 100644
--- a/lib/symfony/cache/Adapter/PdoAdapter.php
+++ b/lib/symfony/cache/Adapter/PdoAdapter.php
@@ -57,16 +57,16 @@ class PdoAdapter extends AbstractAdapter implements PruneableInterface
public function __construct(#[\SensitiveParameter] \PDO|string $connOrDsn, string $namespace = '', int $defaultLifetime = 0, array $options = [], ?MarshallerInterface $marshaller = null)
{
if (\is_string($connOrDsn) && str_contains($connOrDsn, '://')) {
- throw new InvalidArgumentException(sprintf('Usage of Doctrine DBAL URL with "%s" is not supported. Use a PDO DSN or "%s" instead.', __CLASS__, DoctrineDbalAdapter::class));
+ throw new InvalidArgumentException(\sprintf('Usage of Doctrine DBAL URL with "%s" is not supported. Use a PDO DSN or "%s" instead.', __CLASS__, DoctrineDbalAdapter::class));
}
if (isset($namespace[0]) && preg_match('#[^-+.A-Za-z0-9]#', $namespace, $match)) {
- throw new InvalidArgumentException(sprintf('Namespace contains "%s" but only characters in [-+.A-Za-z0-9] are allowed.', $match[0]));
+ throw new InvalidArgumentException(\sprintf('Namespace contains "%s" but only characters in [-+.A-Za-z0-9] are allowed.', $match[0]));
}
if ($connOrDsn instanceof \PDO) {
if (\PDO::ERRMODE_EXCEPTION !== $connOrDsn->getAttribute(\PDO::ATTR_ERRMODE)) {
- throw new InvalidArgumentException(sprintf('"%s" requires PDO error mode attribute be set to throw Exceptions (i.e. $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION)).', __CLASS__));
+ throw new InvalidArgumentException(\sprintf('"%s" requires PDO error mode attribute be set to throw Exceptions (i.e. $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION)).', __CLASS__));
}
$this->conn = $connOrDsn;
@@ -108,12 +108,12 @@ class PdoAdapter extends AbstractAdapter implements PruneableInterface
// - trailing space removal
// - case-insensitivity
// - language processing like é == e
- 'mysql' => "CREATE TABLE $this->table ($this->idCol VARBINARY(255) NOT NULL PRIMARY KEY, $this->dataCol MEDIUMBLOB NOT NULL, $this->lifetimeCol INTEGER UNSIGNED, $this->timeCol INTEGER UNSIGNED NOT NULL) COLLATE utf8mb4_bin, ENGINE = InnoDB",
+ 'mysql' => "CREATE TABLE $this->table ($this->idCol VARBINARY(255) NOT NULL PRIMARY KEY, $this->dataCol MEDIUMBLOB NOT NULL, $this->lifetimeCol INTEGER UNSIGNED, $this->timeCol INTEGER UNSIGNED NOT NULL), ENGINE = InnoDB",
'sqlite' => "CREATE TABLE $this->table ($this->idCol TEXT NOT NULL PRIMARY KEY, $this->dataCol BLOB NOT NULL, $this->lifetimeCol INTEGER, $this->timeCol INTEGER NOT NULL)",
'pgsql' => "CREATE TABLE $this->table ($this->idCol VARCHAR(255) NOT NULL PRIMARY KEY, $this->dataCol BYTEA NOT NULL, $this->lifetimeCol INTEGER, $this->timeCol INTEGER NOT NULL)",
'oci' => "CREATE TABLE $this->table ($this->idCol VARCHAR2(255) NOT NULL PRIMARY KEY, $this->dataCol BLOB NOT NULL, $this->lifetimeCol INTEGER, $this->timeCol INTEGER NOT NULL)",
'sqlsrv' => "CREATE TABLE $this->table ($this->idCol VARCHAR(255) NOT NULL PRIMARY KEY, $this->dataCol VARBINARY(MAX) NOT NULL, $this->lifetimeCol INTEGER, $this->timeCol INTEGER NOT NULL)",
- default => throw new \DomainException(sprintf('Creating the cache table is currently not implemented for PDO driver "%s".', $driver)),
+ default => throw new \DomainException(\sprintf('Creating the cache table is currently not implemented for PDO driver "%s".', $driver)),
};
$this->getConnection()->exec($sql);
@@ -137,7 +137,7 @@ class PdoAdapter extends AbstractAdapter implements PruneableInterface
$delete->bindValue(':time', time(), \PDO::PARAM_INT);
if ('' !== $this->namespace) {
- $delete->bindValue(':namespace', sprintf('%s%%', $this->namespace), \PDO::PARAM_STR);
+ $delete->bindValue(':namespace', \sprintf('%s%%', $this->namespace), \PDO::PARAM_STR);
}
try {
return $delete->execute();
@@ -314,7 +314,17 @@ class PdoAdapter extends AbstractAdapter implements PruneableInterface
$insertStmt->bindValue(':time', $now, \PDO::PARAM_INT);
}
+ if ('sqlsrv' === $driver) {
+ $dataStream = fopen('php://memory', 'r+');
+ }
foreach ($values as $id => $data) {
+ if ('sqlsrv' === $driver) {
+ rewind($dataStream);
+ fwrite($dataStream, $data);
+ ftruncate($dataStream, \strlen($data));
+ rewind($dataStream);
+ $data = $dataStream;
+ }
try {
$stmt->execute();
} catch (\PDOException $e) {
diff --git a/lib/symfony/cache/Adapter/PhpArrayAdapter.php b/lib/symfony/cache/Adapter/PhpArrayAdapter.php
index 0cda1cce8..6c3d70724 100644
--- a/lib/symfony/cache/Adapter/PhpArrayAdapter.php
+++ b/lib/symfony/cache/Adapter/PhpArrayAdapter.php
@@ -17,6 +17,7 @@ use Symfony\Component\Cache\CacheItem;
use Symfony\Component\Cache\Exception\InvalidArgumentException;
use Symfony\Component\Cache\PruneableInterface;
use Symfony\Component\Cache\ResettableInterface;
+use Symfony\Component\Cache\Traits\CachedValueInterface;
use Symfony\Component\Cache\Traits\ContractsTrait;
use Symfony\Component\Cache\Traits\ProxyTrait;
use Symfony\Component\VarExporter\VarExporter;
@@ -96,22 +97,21 @@ class PhpArrayAdapter implements AdapterInterface, CacheInterface, PruneableInte
if ('N;' === $value) {
return null;
}
+ if (!$value instanceof CachedValueInterface) {
+ return $value;
+ }
try {
- if ($value instanceof \Closure) {
- return $value();
- }
+ return $value->getValue();
} catch (\Throwable) {
unset($this->keys[$key]);
goto get_from_pool;
}
-
- return $value;
}
public function getItem(mixed $key): CacheItem
{
if (!\is_string($key)) {
- throw new InvalidArgumentException(sprintf('Cache key must be string, "%s" given.', get_debug_type($key)));
+ throw new InvalidArgumentException(\sprintf('Cache key must be string, "%s" given.', get_debug_type($key)));
}
if (!isset($this->values)) {
$this->initialize();
@@ -125,9 +125,9 @@ class PhpArrayAdapter implements AdapterInterface, CacheInterface, PruneableInte
if ('N;' === $value) {
$value = null;
- } elseif ($value instanceof \Closure) {
+ } elseif ($value instanceof CachedValueInterface) {
try {
- $value = $value();
+ $value = $value->getValue();
} catch (\Throwable) {
$value = null;
$isHit = false;
@@ -141,7 +141,7 @@ class PhpArrayAdapter implements AdapterInterface, CacheInterface, PruneableInte
{
foreach ($keys as $key) {
if (!\is_string($key)) {
- throw new InvalidArgumentException(sprintf('Cache key must be string, "%s" given.', get_debug_type($key)));
+ throw new InvalidArgumentException(\sprintf('Cache key must be string, "%s" given.', get_debug_type($key)));
}
}
if (!isset($this->values)) {
@@ -154,7 +154,7 @@ class PhpArrayAdapter implements AdapterInterface, CacheInterface, PruneableInte
public function hasItem(mixed $key): bool
{
if (!\is_string($key)) {
- throw new InvalidArgumentException(sprintf('Cache key must be string, "%s" given.', get_debug_type($key)));
+ throw new InvalidArgumentException(\sprintf('Cache key must be string, "%s" given.', get_debug_type($key)));
}
if (!isset($this->values)) {
$this->initialize();
@@ -166,7 +166,7 @@ class PhpArrayAdapter implements AdapterInterface, CacheInterface, PruneableInte
public function deleteItem(mixed $key): bool
{
if (!\is_string($key)) {
- throw new InvalidArgumentException(sprintf('Cache key must be string, "%s" given.', get_debug_type($key)));
+ throw new InvalidArgumentException(\sprintf('Cache key must be string, "%s" given.', get_debug_type($key)));
}
if (!isset($this->values)) {
$this->initialize();
@@ -182,7 +182,7 @@ class PhpArrayAdapter implements AdapterInterface, CacheInterface, PruneableInte
foreach ($keys as $key) {
if (!\is_string($key)) {
- throw new InvalidArgumentException(sprintf('Cache key must be string, "%s" given.', get_debug_type($key)));
+ throw new InvalidArgumentException(\sprintf('Cache key must be string, "%s" given.', get_debug_type($key)));
}
if (isset($this->keys[$key])) {
@@ -250,21 +250,21 @@ class PhpArrayAdapter implements AdapterInterface, CacheInterface, PruneableInte
{
if (file_exists($this->file)) {
if (!is_file($this->file)) {
- throw new InvalidArgumentException(sprintf('Cache path exists and is not a file: "%s".', $this->file));
+ throw new InvalidArgumentException(\sprintf('Cache path exists and is not a file: "%s".', $this->file));
}
if (!is_writable($this->file)) {
- throw new InvalidArgumentException(sprintf('Cache file is not writable: "%s".', $this->file));
+ throw new InvalidArgumentException(\sprintf('Cache file is not writable: "%s".', $this->file));
}
} else {
$directory = \dirname($this->file);
if (!is_dir($directory) && !@mkdir($directory, 0777, true)) {
- throw new InvalidArgumentException(sprintf('Cache directory does not exist and cannot be created: "%s".', $directory));
+ throw new InvalidArgumentException(\sprintf('Cache directory does not exist and cannot be created: "%s".', $directory));
}
if (!is_writable($directory)) {
- throw new InvalidArgumentException(sprintf('Cache directory is not writable: "%s".', $directory));
+ throw new InvalidArgumentException(\sprintf('Cache directory is not writable: "%s".', $directory));
}
}
@@ -291,7 +291,7 @@ EOF;
try {
$value = VarExporter::export($value, $isStaticValue, $preload);
} catch (\Exception $e) {
- throw new InvalidArgumentException(sprintf('Cache key "%s" has non-serializable "%s" value.', $key, get_debug_type($value)), 0, $e);
+ throw new InvalidArgumentException(\sprintf('Cache key "%s" has non-serializable "%s" value.', $key, get_debug_type($value)), 0, $e);
}
} elseif (\is_string($value)) {
// Wrap "N;" in a closure to not confuse it with an encoded `null`
@@ -300,14 +300,13 @@ EOF;
}
$value = var_export($value, true);
} elseif (!\is_scalar($value)) {
- throw new InvalidArgumentException(sprintf('Cache key "%s" has non-serializable "%s" value.', $key, get_debug_type($value)));
+ throw new InvalidArgumentException(\sprintf('Cache key "%s" has non-serializable "%s" value.', $key, get_debug_type($value)));
} else {
$value = var_export($value, true);
}
if (!$isStaticValue) {
- $value = str_replace("\n", "\n ", $value);
- $value = "static function () {\n return {$value};\n}";
+ $value = 'new class() implements \\'.CachedValueInterface::class." { public function getValue(): mixed { return {$value}; } }";
}
$hash = hash('xxh128', $value);
@@ -368,9 +367,9 @@ EOF;
if ('N;' === $value) {
yield $key => $f($key, null, true);
- } elseif ($value instanceof \Closure) {
+ } elseif ($value instanceof CachedValueInterface) {
try {
- yield $key => $f($key, $value(), true);
+ yield $key => $f($key, $value->getValue(), true);
} catch (\Throwable) {
yield $key => $f($key, null, false);
}
diff --git a/lib/symfony/cache/Adapter/PhpFilesAdapter.php b/lib/symfony/cache/Adapter/PhpFilesAdapter.php
index e550276df..70d089445 100644
--- a/lib/symfony/cache/Adapter/PhpFilesAdapter.php
+++ b/lib/symfony/cache/Adapter/PhpFilesAdapter.php
@@ -14,6 +14,7 @@ namespace Symfony\Component\Cache\Adapter;
use Symfony\Component\Cache\Exception\CacheException;
use Symfony\Component\Cache\Exception\InvalidArgumentException;
use Symfony\Component\Cache\PruneableInterface;
+use Symfony\Component\Cache\Traits\CachedValueInterface;
use Symfony\Component\Cache\Traits\FilesystemCommonTrait;
use Symfony\Component\VarExporter\VarExporter;
@@ -114,8 +115,10 @@ class PhpFilesAdapter extends AbstractAdapter implements PruneableInterface
$values[$id] = null;
} elseif (!\is_object($value)) {
$values[$id] = $value;
+ } elseif ($value instanceof CachedValueInterface) {
+ $values[$id] = $value->getValue();
} elseif (!$value instanceof LazyValue) {
- $values[$id] = $value();
+ $values[$id] = $value;
} elseif (false === $values[$id] = include $value->file) {
unset($values[$id], $this->values[$id]);
$missingIds[] = $id;
@@ -152,7 +155,7 @@ class PhpFilesAdapter extends AbstractAdapter implements PruneableInterface
if ($now >= $expiresAt) {
unset($this->values[$id], $missingIds[$k], self::$valuesCache[$file]);
}
- } catch (\ErrorException $e) {
+ } catch (\ErrorException) {
unset($missingIds[$k]);
}
}
@@ -217,7 +220,7 @@ class PhpFilesAdapter extends AbstractAdapter implements PruneableInterface
try {
$value = VarExporter::export($value, $isStaticValue);
} catch (\Exception $e) {
- throw new InvalidArgumentException(sprintf('Cache key "%s" has non-serializable "%s" value.', $key, get_debug_type($value)), 0, $e);
+ throw new InvalidArgumentException(\sprintf('Cache key "%s" has non-serializable "%s" value.', $key, get_debug_type($value)), 0, $e);
}
} elseif (\is_string($value)) {
// Wrap "N;" in a closure to not confuse it with an encoded `null`
@@ -226,7 +229,7 @@ class PhpFilesAdapter extends AbstractAdapter implements PruneableInterface
}
$value = var_export($value, true);
} elseif (!\is_scalar($value)) {
- throw new InvalidArgumentException(sprintf('Cache key "%s" has non-serializable "%s" value.', $key, get_debug_type($value)));
+ throw new InvalidArgumentException(\sprintf('Cache key "%s" has non-serializable "%s" value.', $key, get_debug_type($value)));
} else {
$value = var_export($value, true);
}
@@ -236,7 +239,7 @@ class PhpFilesAdapter extends AbstractAdapter implements PruneableInterface
if ($isStaticValue) {
$value = "return [{$expiry}, {$value}];";
} elseif ($this->appendOnly) {
- $value = "return [{$expiry}, static fn () => {$value}];";
+ $value = "return [{$expiry}, new class() implements \\".CachedValueInterface::class." { public function getValue(): mixed { return {$value}; } }];";
} else {
// We cannot use a closure here because of https://bugs.php.net/76982
$value = str_replace('\Symfony\Component\VarExporter\Internal\\', '', $value);
@@ -255,7 +258,7 @@ class PhpFilesAdapter extends AbstractAdapter implements PruneableInterface
}
if (!$ok && !is_writable($this->directory)) {
- throw new CacheException(sprintf('Cache directory is not writable (%s).', $this->directory));
+ throw new CacheException(\sprintf('Cache directory is not writable (%s).', $this->directory));
}
return $ok;
diff --git a/lib/symfony/cache/Adapter/ProxyAdapter.php b/lib/symfony/cache/Adapter/ProxyAdapter.php
index c022dd5fa..562122606 100644
--- a/lib/symfony/cache/Adapter/ProxyAdapter.php
+++ b/lib/symfony/cache/Adapter/ProxyAdapter.php
@@ -73,7 +73,7 @@ class ProxyAdapter implements AdapterInterface, CacheInterface, PruneableInterfa
self::$setInnerItem ??= \Closure::bind(
static function (CacheItemInterface $innerItem, CacheItem $item, $expiry = null) {
$innerItem->set($item->pack());
- $innerItem->expiresAt(($expiry ?? $item->expiry) ? \DateTimeImmutable::createFromFormat('U.u', sprintf('%.6F', $expiry ?? $item->expiry)) : null);
+ $innerItem->expiresAt(($expiry ?? $item->expiry) ? \DateTimeImmutable::createFromFormat('U.u', \sprintf('%.6F', $expiry ?? $item->expiry)) : null);
},
null,
CacheItem::class
diff --git a/lib/symfony/cache/Adapter/RedisTagAwareAdapter.php b/lib/symfony/cache/Adapter/RedisTagAwareAdapter.php
index a44ef986d..9aa959add 100644
--- a/lib/symfony/cache/Adapter/RedisTagAwareAdapter.php
+++ b/lib/symfony/cache/Adapter/RedisTagAwareAdapter.php
@@ -14,6 +14,7 @@ namespace Symfony\Component\Cache\Adapter;
use Predis\Connection\Aggregate\ClusterInterface;
use Predis\Connection\Aggregate\PredisCluster;
use Predis\Connection\Aggregate\ReplicationInterface;
+use Predis\Connection\Replication\ReplicationInterface as Predis2ReplicationInterface;
use Predis\Response\ErrorInterface;
use Predis\Response\Status;
use Relay\Relay;
@@ -63,7 +64,7 @@ class RedisTagAwareAdapter extends AbstractTagAwareAdapter
public function __construct(\Redis|Relay|\RedisArray|\RedisCluster|\Predis\ClientInterface $redis, string $namespace = '', int $defaultLifetime = 0, ?MarshallerInterface $marshaller = null)
{
if ($redis instanceof \Predis\ClientInterface && $redis->getConnection() instanceof ClusterInterface && !$redis->getConnection() instanceof PredisCluster) {
- throw new InvalidArgumentException(sprintf('Unsupported Predis cluster connection: only "%s" is, "%s" given.', PredisCluster::class, get_debug_type($redis->getConnection())));
+ throw new InvalidArgumentException(\sprintf('Unsupported Predis cluster connection: only "%s" is, "%s" given.', PredisCluster::class, get_debug_type($redis->getConnection())));
}
$isRelay = $redis instanceof Relay;
@@ -72,7 +73,7 @@ class RedisTagAwareAdapter extends AbstractTagAwareAdapter
foreach (\is_array($compression) ? $compression : [$compression] as $c) {
if ($isRelay ? Relay::COMPRESSION_NONE : \Redis::COMPRESSION_NONE !== $c) {
- throw new InvalidArgumentException(sprintf('redis compression must be disabled when using "%s", use "%s" instead.', static::class, DeflateMarshaller::class));
+ throw new InvalidArgumentException(\sprintf('redis compression must be disabled when using "%s", use "%s" instead.', static::class, DeflateMarshaller::class));
}
}
}
@@ -85,7 +86,7 @@ class RedisTagAwareAdapter extends AbstractTagAwareAdapter
{
$eviction = $this->getRedisEvictionPolicy();
if ('noeviction' !== $eviction && !str_starts_with($eviction, 'volatile-')) {
- throw new LogicException(sprintf('Redis maxmemory-policy setting "%s" is *not* supported by RedisTagAwareAdapter, use "noeviction" or "volatile-*" eviction policies.', $eviction));
+ throw new LogicException(\sprintf('Redis maxmemory-policy setting "%s" is *not* supported by RedisTagAwareAdapter, use "noeviction" or "volatile-*" eviction policies.', $eviction));
}
// serialize values
@@ -286,9 +287,16 @@ EOLUA;
$hosts = $this->getHosts();
$host = reset($hosts);
- if ($host instanceof \Predis\Client && $host->getConnection() instanceof ReplicationInterface) {
+ if ($host instanceof \Predis\Client) {
+ $connection = $host->getConnection();
+
// Predis supports info command only on the master in replication environments
- $hosts = [$host->getClientFor('master')];
+ if ($connection instanceof ReplicationInterface) {
+ $hosts = [$host->getClientFor('master')];
+ } elseif ($connection instanceof Predis2ReplicationInterface) {
+ $connection->switchToMaster();
+ $hosts = [$host];
+ }
}
foreach ($hosts as $host) {
diff --git a/lib/symfony/cache/Adapter/TagAwareAdapter.php b/lib/symfony/cache/Adapter/TagAwareAdapter.php
index 539ef1697..a12e908ad 100644
--- a/lib/symfony/cache/Adapter/TagAwareAdapter.php
+++ b/lib/symfony/cache/Adapter/TagAwareAdapter.php
@@ -294,15 +294,12 @@ class TagAwareAdapter implements TagAwareAdapterInterface, TagAwareCacheInterfac
$this->tags instanceof ResettableInterface && $this->tags->reset();
}
- public function __sleep(): array
+ public function __serialize(): array
{
throw new \BadMethodCallException('Cannot serialize '.__CLASS__);
}
- /**
- * @return void
- */
- public function __wakeup()
+ public function __unserialize(array $data): void
{
throw new \BadMethodCallException('Cannot unserialize '.__CLASS__);
}
@@ -366,7 +363,7 @@ class TagAwareAdapter implements TagAwareAdapterInterface, TagAwareCacheInterfac
(self::$saveTags)($this->tags, $newTags);
}
- while ($now > ($this->knownTagVersions[$tag = array_key_first($this->knownTagVersions)][0] ?? \INF)) {
+ while ($now > ($this->knownTagVersions[$tag = array_key_first($this->knownTagVersions) ?? ''][0] ?? \INF)) {
unset($this->knownTagVersions[$tag]);
}
diff --git a/lib/symfony/cache/Adapter/TraceableAdapter.php b/lib/symfony/cache/Adapter/TraceableAdapter.php
index 8569fa283..1e9929541 100644
--- a/lib/symfony/cache/Adapter/TraceableAdapter.php
+++ b/lib/symfony/cache/Adapter/TraceableAdapter.php
@@ -38,7 +38,7 @@ class TraceableAdapter implements AdapterInterface, CacheInterface, PruneableInt
public function get(string $key, callable $callback, ?float $beta = null, ?array &$metadata = null): mixed
{
if (!$this->pool instanceof CacheInterface) {
- throw new \BadMethodCallException(sprintf('Cannot call "%s::get()": this class doesn\'t implement "%s".', get_debug_type($this->pool), CacheInterface::class));
+ throw new \BadMethodCallException(\sprintf('Cannot call "%s::get()": this class doesn\'t implement "%s".', get_debug_type($this->pool), CacheInterface::class));
}
$isHit = true;
diff --git a/lib/symfony/cache/CacheItem.php b/lib/symfony/cache/CacheItem.php
index 1a81706da..1aa5bcdce 100644
--- a/lib/symfony/cache/CacheItem.php
+++ b/lib/symfony/cache/CacheItem.php
@@ -11,6 +11,7 @@
namespace Symfony\Component\Cache;
+use Psr\Cache\CacheItemInterface;
use Psr\Log\LoggerInterface;
use Symfony\Component\Cache\Exception\InvalidArgumentException;
use Symfony\Component\Cache\Exception\LogicException;
@@ -30,7 +31,7 @@ final class CacheItem implements ItemInterface
protected float|int|null $expiry = null;
protected array $metadata = [];
protected array $newMetadata = [];
- protected ?ItemInterface $innerItem = null;
+ protected ?CacheItemInterface $innerItem = null;
protected ?string $poolHash = null;
protected bool $isTaggable = false;
@@ -81,7 +82,7 @@ final class CacheItem implements ItemInterface
} elseif (\is_int($time)) {
$this->expiry = $time + microtime(true);
} else {
- throw new InvalidArgumentException(sprintf('Expiration date must be an integer, a DateInterval or null, "%s" given.', get_debug_type($time)));
+ throw new InvalidArgumentException(\sprintf('Expiration date must be an integer, a DateInterval or null, "%s" given.', get_debug_type($time)));
}
return $this;
@@ -90,14 +91,14 @@ final class CacheItem implements ItemInterface
public function tag(mixed $tags): static
{
if (!$this->isTaggable) {
- throw new LogicException(sprintf('Cache item "%s" comes from a non tag-aware pool: you cannot tag it.', $this->key));
+ throw new LogicException(\sprintf('Cache item "%s" comes from a non tag-aware pool: you cannot tag it.', $this->key));
}
if (!\is_array($tags) && !$tags instanceof \Traversable) { // don't use is_iterable(), it's slow
$tags = [$tags];
}
foreach ($tags as $tag) {
if (!\is_string($tag) && !$tag instanceof \Stringable) {
- throw new InvalidArgumentException(sprintf('Cache tag must be string or object that implements __toString(), "%s" given.', get_debug_type($tag)));
+ throw new InvalidArgumentException(\sprintf('Cache tag must be string or object that implements __toString(), "%s" given.', get_debug_type($tag)));
}
$tag = (string) $tag;
if (isset($this->newMetadata[self::METADATA_TAGS][$tag])) {
@@ -107,7 +108,7 @@ final class CacheItem implements ItemInterface
throw new InvalidArgumentException('Cache tag length must be greater than zero.');
}
if (false !== strpbrk($tag, self::RESERVED_CHARACTERS)) {
- throw new InvalidArgumentException(sprintf('Cache tag "%s" contains reserved characters "%s".', $tag, self::RESERVED_CHARACTERS));
+ throw new InvalidArgumentException(\sprintf('Cache tag "%s" contains reserved characters "%s".', $tag, self::RESERVED_CHARACTERS));
}
$this->newMetadata[self::METADATA_TAGS][$tag] = $tag;
}
@@ -130,13 +131,13 @@ final class CacheItem implements ItemInterface
public static function validateKey($key): string
{
if (!\is_string($key)) {
- throw new InvalidArgumentException(sprintf('Cache key must be string, "%s" given.', get_debug_type($key)));
+ throw new InvalidArgumentException(\sprintf('Cache key must be string, "%s" given.', get_debug_type($key)));
}
if ('' === $key) {
throw new InvalidArgumentException('Cache key length must be greater than zero.');
}
if (false !== strpbrk($key, self::RESERVED_CHARACTERS)) {
- throw new InvalidArgumentException(sprintf('Cache key "%s" contains reserved characters "%s".', $key, self::RESERVED_CHARACTERS));
+ throw new InvalidArgumentException(\sprintf('Cache key "%s" contains reserved characters "%s".', $key, self::RESERVED_CHARACTERS));
}
return $key;
@@ -196,3 +197,5 @@ final class CacheItem implements ItemInterface
return true;
}
}
+
+// @php-cs-fixer-ignore protected_to_private Friend-level scope access relies on protected properties
diff --git a/lib/symfony/cache/DataCollector/CacheDataCollector.php b/lib/symfony/cache/DataCollector/CacheDataCollector.php
index b9bcdaf13..73886cb4d 100644
--- a/lib/symfony/cache/DataCollector/CacheDataCollector.php
+++ b/lib/symfony/cache/DataCollector/CacheDataCollector.php
@@ -38,15 +38,7 @@ class CacheDataCollector extends DataCollector implements LateDataCollectorInter
public function collect(Request $request, Response $response, ?\Throwable $exception = null): void
{
- $empty = ['calls' => [], 'adapters' => [], 'config' => [], 'options' => [], 'statistics' => []];
- $this->data = ['instances' => $empty, 'total' => $empty];
- foreach ($this->instances as $name => $instance) {
- $this->data['instances']['calls'][$name] = $instance->getCalls();
- $this->data['instances']['adapters'][$name] = get_debug_type($instance->getPool());
- }
-
- $this->data['instances']['statistics'] = $this->calculateStatistics();
- $this->data['total']['statistics'] = $this->calculateTotalStatistics();
+ $this->lateCollect();
}
public function reset(): void
@@ -59,6 +51,15 @@ class CacheDataCollector extends DataCollector implements LateDataCollectorInter
public function lateCollect(): void
{
+ $empty = ['calls' => [], 'adapters' => [], 'config' => [], 'options' => [], 'statistics' => []];
+ $this->data = ['instances' => $empty, 'total' => $empty];
+ foreach ($this->instances as $name => $instance) {
+ $this->data['instances']['calls'][$name] = $instance->getCalls();
+ $this->data['instances']['adapters'][$name] = get_debug_type($instance->getPool());
+ }
+
+ $this->data['instances']['statistics'] = $this->calculateStatistics();
+ $this->data['total']['statistics'] = $this->calculateTotalStatistics();
$this->data['instances']['calls'] = $this->cloneVar($this->data['instances']['calls']);
}
@@ -142,6 +143,8 @@ class CacheDataCollector extends DataCollector implements LateDataCollectorInter
}
} elseif ('save' === $call->name) {
++$statistics[$name]['writes'];
+ } elseif ('saveDeferred' === $call->name) {
+ ++$statistics[$name]['writes'];
} elseif ('deleteItem' === $call->name) {
++$statistics[$name]['deletes'];
}
diff --git a/lib/symfony/cache/DependencyInjection/CachePoolPass.php b/lib/symfony/cache/DependencyInjection/CachePoolPass.php
index f6622f27b..9d2273d90 100644
--- a/lib/symfony/cache/DependencyInjection/CachePoolPass.php
+++ b/lib/symfony/cache/DependencyInjection/CachePoolPass.php
@@ -16,7 +16,9 @@ use Symfony\Component\Cache\Adapter\ArrayAdapter;
use Symfony\Component\Cache\Adapter\ChainAdapter;
use Symfony\Component\Cache\Adapter\NullAdapter;
use Symfony\Component\Cache\Adapter\ParameterNormalizer;
+use Symfony\Component\Cache\Adapter\TagAwareAdapter;
use Symfony\Component\Cache\Messenger\EarlyExpirationDispatcher;
+use Symfony\Component\Cache\PruneableInterface;
use Symfony\Component\DependencyInjection\ChildDefinition;
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
use Symfony\Component\DependencyInjection\ContainerBuilder;
@@ -51,6 +53,7 @@ class CachePoolPass implements CompilerPassInterface
'default_lifetime',
'early_expiration_message_bus',
'reset',
+ 'pruneable',
];
foreach ($container->findTaggedServiceIds('cache.pool') as $id => $tags) {
$adapter = $pool = $container->getDefinition($id);
@@ -58,9 +61,11 @@ class CachePoolPass implements CompilerPassInterface
continue;
}
$class = $adapter->getClass();
+ $providers = $adapter->getArguments();
while ($adapter instanceof ChildDefinition) {
$adapter = $container->findDefinition($adapter->getParent());
$class = $class ?: $adapter->getClass();
+ $providers += $adapter->getArguments();
if ($t = $adapter->getTag('cache.pool')) {
$tags[0] += $t[0];
}
@@ -88,11 +93,13 @@ class CachePoolPass implements CompilerPassInterface
$tags[0]['provider'] = new Reference(static::getServiceProvider($container, $tags[0]['provider']));
}
+ $pruneable = $tags[0]['pruneable'] ?? $container->getReflectionClass($class, false)?->implementsInterface(PruneableInterface::class) ?? false;
+
if (ChainAdapter::class === $class) {
$adapters = [];
- foreach ($adapter->getArgument(0) as $provider => $adapter) {
+ foreach ($providers['index_0'] ?? $providers[0] as $provider => $adapter) {
if ($adapter instanceof ChildDefinition) {
- $chainedPool = $adapter;
+ $chainedPool = clone $adapter;
} else {
$chainedPool = $adapter = new ChildDefinition($adapter);
}
@@ -109,7 +116,7 @@ class CachePoolPass implements CompilerPassInterface
}
if (ChainAdapter::class === $chainedClass) {
- throw new InvalidArgumentException(sprintf('Invalid service "%s": chain of adapters cannot reference another chain, found "%s".', $id, $chainedPool->getParent()));
+ throw new InvalidArgumentException(\sprintf('Invalid service "%s": chain of adapters cannot reference another chain, found "%s".', $id, $chainedPool->getParent()));
}
$i = 0;
@@ -154,7 +161,9 @@ class CachePoolPass implements CompilerPassInterface
),
]);
$pool->addTag('container.reversible');
- } elseif ('namespace' !== $attr || !\in_array($class, [ArrayAdapter::class, NullAdapter::class], true)) {
+ } elseif ('pruneable' === $attr) {
+ // no-op
+ } elseif ('namespace' !== $attr || !\in_array($class, [ArrayAdapter::class, NullAdapter::class, TagAwareAdapter::class], true)) {
$argument = $tags[0][$attr];
if ('default_lifetime' === $attr && !is_numeric($argument)) {
@@ -167,13 +176,17 @@ class CachePoolPass implements CompilerPassInterface
unset($tags[0][$attr]);
}
if (!empty($tags[0])) {
- throw new InvalidArgumentException(sprintf('Invalid "cache.pool" tag for service "%s": accepted attributes are "clearer", "provider", "name", "namespace", "default_lifetime", "early_expiration_message_bus" and "reset", found "%s".', $id, implode('", "', array_keys($tags[0]))));
+ throw new InvalidArgumentException(\sprintf('Invalid "cache.pool" tag for service "%s": accepted attributes are "clearer", "provider", "name", "namespace", "default_lifetime", "early_expiration_message_bus", "reset" and "pruneable", found "%s".', $id, implode('", "', array_keys($tags[0]))));
}
if (null !== $clearer) {
$clearers[$clearer][$name] = new Reference($id, $container::IGNORE_ON_UNINITIALIZED_REFERENCE);
}
+ $poolTags = $pool->getTags();
+ $poolTags['cache.pool'][0]['pruneable'] ??= $pruneable;
+ $pool->setTags($poolTags);
+
$allPools[$name] = new Reference($id, $container::IGNORE_ON_UNINITIALIZED_REFERENCE);
}
@@ -197,10 +210,6 @@ class CachePoolPass implements CompilerPassInterface
$clearer->setArgument(0, $pools);
}
$clearer->addTag('cache.pool.clearer');
-
- if ('cache.system_clearer' === $id) {
- $clearer->addTag('kernel.cache_clearer');
- }
}
$allPoolsKeys = array_keys($allPools);
diff --git a/lib/symfony/cache/DependencyInjection/CachePoolPrunerPass.php b/lib/symfony/cache/DependencyInjection/CachePoolPrunerPass.php
index 00e912686..870023141 100644
--- a/lib/symfony/cache/DependencyInjection/CachePoolPrunerPass.php
+++ b/lib/symfony/cache/DependencyInjection/CachePoolPrunerPass.php
@@ -15,7 +15,6 @@ use Symfony\Component\Cache\PruneableInterface;
use Symfony\Component\DependencyInjection\Argument\IteratorArgument;
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException;
use Symfony\Component\DependencyInjection\Reference;
/**
@@ -35,14 +34,8 @@ class CachePoolPrunerPass implements CompilerPassInterface
$services = [];
foreach ($container->findTaggedServiceIds('cache.pool') as $id => $tags) {
- $class = $container->getParameterBag()->resolveValue($container->getDefinition($id)->getClass());
-
- if (!$reflection = $container->getReflectionClass($class)) {
- throw new InvalidArgumentException(sprintf('Class "%s" used for service "%s" cannot be found.', $class, $id));
- }
-
- if ($reflection->implementsInterface(PruneableInterface::class)) {
- $services[$id] = new Reference($id);
+ if ($tags[0]['pruneable'] ?? $container->getReflectionClass($container->getDefinition($id)->getClass(), false)?->implementsInterface(PruneableInterface::class) ?? false) {
+ $services[$tags[0]['name'] ?? $id] = new Reference($id);
}
}
diff --git a/lib/symfony/cache/LockRegistry.php b/lib/symfony/cache/LockRegistry.php
index c5c5fde89..31ec51ced 100644
--- a/lib/symfony/cache/LockRegistry.php
+++ b/lib/symfony/cache/LockRegistry.php
@@ -83,7 +83,7 @@ final class LockRegistry
return $previousFiles;
}
- public static function compute(callable $callback, ItemInterface $item, bool &$save, CacheInterface $pool, ?\Closure $setMetadata = null, ?LoggerInterface $logger = null): mixed
+ public static function compute(callable $callback, ItemInterface $item, bool &$save, CacheInterface $pool, ?\Closure $setMetadata = null, ?LoggerInterface $logger = null, ?float $beta = null): mixed
{
if ('\\' === \DIRECTORY_SEPARATOR && null === self::$lockedFiles) {
// disable locking on Windows by default
@@ -105,7 +105,7 @@ final class LockRegistry
$locked = flock($lock, \LOCK_EX | \LOCK_NB, $wouldBlock);
if ($locked || !$wouldBlock) {
- $logger?->info(sprintf('Lock %s, now computing item "{key}"', $locked ? 'acquired' : 'not supported'), ['key' => $item->getKey()]);
+ $logger?->info(\sprintf('Lock %s, now computing item "{key}"', $locked ? 'acquired' : 'not supported'), ['key' => $item->getKey()]);
self::$lockedFiles[$key] = true;
$value = $callback($item, $save);
@@ -124,6 +124,11 @@ final class LockRegistry
// if we failed the race, retry locking in blocking mode to wait for the winner
$logger?->info('Item "{key}" is locked, waiting for it to be released', ['key' => $item->getKey()]);
flock($lock, \LOCK_SH);
+
+ if (\INF === $beta) {
+ $logger?->info('Force-recomputing item "{key}"', ['key' => $item->getKey()]);
+ continue;
+ }
} finally {
flock($lock, \LOCK_UN);
unset(self::$lockedFiles[$key]);
diff --git a/lib/symfony/cache/Messenger/EarlyExpirationDispatcher.php b/lib/symfony/cache/Messenger/EarlyExpirationDispatcher.php
index 8fe0f2515..5c8cf8d67 100644
--- a/lib/symfony/cache/Messenger/EarlyExpirationDispatcher.php
+++ b/lib/symfony/cache/Messenger/EarlyExpirationDispatcher.php
@@ -37,13 +37,13 @@ class EarlyExpirationDispatcher
/**
* @return mixed
*/
- public function __invoke(callable $callback, CacheItem $item, bool &$save, AdapterInterface $pool, \Closure $setMetadata, ?LoggerInterface $logger = null)
+ public function __invoke(callable $callback, CacheItem $item, bool &$save, AdapterInterface $pool, \Closure $setMetadata, ?LoggerInterface $logger = null, ?float $beta = null)
{
if (!$item->isHit() || null === $message = EarlyExpirationMessage::create($this->reverseContainer, $callback, $item, $pool)) {
// The item is stale or the callback cannot be reversed: we must compute the value now
$logger?->info('Computing item "{key}" online: '.($item->isHit() ? 'callback cannot be reversed' : 'item is stale'), ['key' => $item->getKey()]);
- return null !== $this->callbackWrapper ? ($this->callbackWrapper)($callback, $item, $save, $pool, $setMetadata, $logger) : $callback($item, $save);
+ return null !== $this->callbackWrapper ? ($this->callbackWrapper)($callback, $item, $save, $pool, $setMetadata, $logger, $beta) : $callback($item, $save);
}
$envelope = $this->bus->dispatch($message);
diff --git a/lib/symfony/cache/Messenger/EarlyExpirationMessage.php b/lib/symfony/cache/Messenger/EarlyExpirationMessage.php
index 6056ebab4..99cca0499 100644
--- a/lib/symfony/cache/Messenger/EarlyExpirationMessage.php
+++ b/lib/symfony/cache/Messenger/EarlyExpirationMessage.php
@@ -35,6 +35,11 @@ final class EarlyExpirationMessage
$pool = $reverseContainer->getId($pool);
+ if ($callback instanceof \Closure && !str_contains(($r = new \ReflectionFunction($callback))->name, '{closure')) {
+ $callback = [$r->getClosureThis() ?? (\PHP_VERSION_ID >= 80111 ? $r->getClosureCalledClass() : $r->getClosureScopeClass())?->name, $r->name];
+ $callback[0] ?: $callback = $r->name;
+ }
+
if (\is_object($callback)) {
if (null === $id = $reverseContainer->getId($callback)) {
return null;
diff --git a/lib/symfony/cache/Psr16Cache.php b/lib/symfony/cache/Psr16Cache.php
index f21384fee..01494d714 100644
--- a/lib/symfony/cache/Psr16Cache.php
+++ b/lib/symfony/cache/Psr16Cache.php
@@ -135,7 +135,7 @@ class Psr16Cache implements CacheInterface, PruneableInterface, ResettableInterf
if ($keys instanceof \Traversable) {
$keys = iterator_to_array($keys, false);
} elseif (!\is_array($keys)) {
- throw new InvalidArgumentException(sprintf('Cache keys must be array or Traversable, "%s" given.', get_debug_type($keys)));
+ throw new InvalidArgumentException(\sprintf('Cache keys must be array or Traversable, "%s" given.', get_debug_type($keys)));
}
try {
@@ -166,7 +166,7 @@ class Psr16Cache implements CacheInterface, PruneableInterface, ResettableInterf
{
$valuesIsArray = \is_array($values);
if (!$valuesIsArray && !$values instanceof \Traversable) {
- throw new InvalidArgumentException(sprintf('Cache values must be array or Traversable, "%s" given.', get_debug_type($values)));
+ throw new InvalidArgumentException(\sprintf('Cache values must be array or Traversable, "%s" given.', get_debug_type($values)));
}
$items = [];
@@ -215,7 +215,7 @@ class Psr16Cache implements CacheInterface, PruneableInterface, ResettableInterf
if ($keys instanceof \Traversable) {
$keys = iterator_to_array($keys, false);
} elseif (!\is_array($keys)) {
- throw new InvalidArgumentException(sprintf('Cache keys must be array or Traversable, "%s" given.', get_debug_type($keys)));
+ throw new InvalidArgumentException(\sprintf('Cache keys must be array or Traversable, "%s" given.', get_debug_type($keys)));
}
try {
diff --git a/lib/symfony/cache/Traits/AbstractAdapterTrait.php b/lib/symfony/cache/Traits/AbstractAdapterTrait.php
index 4ab2537db..c5b5e4a91 100644
--- a/lib/symfony/cache/Traits/AbstractAdapterTrait.php
+++ b/lib/symfony/cache/Traits/AbstractAdapterTrait.php
@@ -276,15 +276,12 @@ trait AbstractAdapterTrait
$this->ids = [];
}
- public function __sleep(): array
+ public function __serialize(): array
{
throw new \BadMethodCallException('Cannot serialize '.__CLASS__);
}
- /**
- * @return void
- */
- public function __wakeup()
+ public function __unserialize(array $data): void
{
throw new \BadMethodCallException('Cannot unserialize '.__CLASS__);
}
@@ -303,7 +300,7 @@ trait AbstractAdapterTrait
try {
foreach ($items as $id => $value) {
if (!isset($keys[$id])) {
- throw new InvalidArgumentException(sprintf('Could not match value id "%s" to keys "%s".', $id, implode('", "', $keys)));
+ throw new InvalidArgumentException(\sprintf('Could not match value id "%s" to keys "%s".', $id, implode('", "', $keys)));
}
$key = $keys[$id];
unset($keys[$id]);
diff --git a/lib/symfony/cache/Traits/CachedValueInterface.php b/lib/symfony/cache/Traits/CachedValueInterface.php
new file mode 100644
index 000000000..8e95f60b0
--- /dev/null
+++ b/lib/symfony/cache/Traits/CachedValueInterface.php
@@ -0,0 +1,20 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Traits;
+
+/**
+ * @internal
+ */
+interface CachedValueInterface
+{
+ public function getValue(): mixed;
+}
diff --git a/lib/symfony/cache/Traits/ContractsTrait.php b/lib/symfony/cache/Traits/ContractsTrait.php
index 8d830f0ab..c93256eba 100644
--- a/lib/symfony/cache/Traits/ContractsTrait.php
+++ b/lib/symfony/cache/Traits/ContractsTrait.php
@@ -54,7 +54,7 @@ trait ContractsTrait
}
$previousWrapper = $this->callbackWrapper;
- $this->callbackWrapper = $callbackWrapper ?? static fn (callable $callback, ItemInterface $item, bool &$save, CacheInterface $pool, \Closure $setMetadata, ?LoggerInterface $logger) => $callback($item, $save);
+ $this->callbackWrapper = $callbackWrapper ?? static fn (callable $callback, ItemInterface $item, bool &$save, CacheInterface $pool, \Closure $setMetadata, ?LoggerInterface $logger, ?float $beta = null) => $callback($item, $save);
return $previousWrapper;
}
@@ -62,7 +62,7 @@ trait ContractsTrait
private function doGet(AdapterInterface $pool, string $key, callable $callback, ?float $beta, ?array &$metadata = null): mixed
{
if (0 > $beta ??= 1.0) {
- throw new InvalidArgumentException(sprintf('Argument "$beta" provided to "%s::get()" must be a positive number, %f given.', static::class, $beta));
+ throw new InvalidArgumentException(\sprintf('Argument "$beta" provided to "%s::get()" must be a positive number, %f given.', static::class, $beta));
}
static $setMetadata;
@@ -82,7 +82,7 @@ trait ContractsTrait
$this->callbackWrapper ??= LockRegistry::compute(...);
- return $this->contractsGet($pool, $key, function (CacheItem $item, bool &$save) use ($pool, $callback, $setMetadata, &$metadata, $key) {
+ return $this->contractsGet($pool, $key, function (CacheItem $item, bool &$save) use ($pool, $callback, $setMetadata, &$metadata, $key, $beta) {
// don't wrap nor save recursive calls
if (isset($this->computing[$key])) {
$value = $callback($item, $save);
@@ -101,7 +101,7 @@ trait ContractsTrait
try {
$value = ($this->callbackWrapper)($callback, $item, $save, $pool, function (CacheItem $item) use ($setMetadata, $startTime, &$metadata) {
$setMetadata($item, $startTime, $metadata);
- }, $this->logger ?? null);
+ }, $this->logger ?? null, $beta);
$setMetadata($item, $startTime, $metadata);
return $value;
diff --git a/lib/symfony/cache/Traits/FilesystemCommonTrait.php b/lib/symfony/cache/Traits/FilesystemCommonTrait.php
index 3b976b66f..09e8e26fd 100644
--- a/lib/symfony/cache/Traits/FilesystemCommonTrait.php
+++ b/lib/symfony/cache/Traits/FilesystemCommonTrait.php
@@ -32,7 +32,7 @@ trait FilesystemCommonTrait
}
if (isset($namespace[0])) {
if (preg_match('#[^-+_.A-Za-z0-9]#', $namespace, $match)) {
- throw new InvalidArgumentException(sprintf('Namespace contains "%s" but only characters in [-+_.A-Za-z0-9] are allowed.', $match[0]));
+ throw new InvalidArgumentException(\sprintf('Namespace contains "%s" but only characters in [-+_.A-Za-z0-9] are allowed.', $match[0]));
}
$directory .= \DIRECTORY_SEPARATOR.$namespace;
} else {
@@ -44,7 +44,7 @@ trait FilesystemCommonTrait
$directory .= \DIRECTORY_SEPARATOR;
// On Windows the whole path is limited to 258 chars
if ('\\' === \DIRECTORY_SEPARATOR && \strlen($directory) > 234) {
- throw new InvalidArgumentException(sprintf('Cache directory too long (%s).', $directory));
+ throw new InvalidArgumentException(\sprintf('Cache directory too long (%s).', $directory));
}
$this->directory = $directory;
@@ -172,15 +172,12 @@ trait FilesystemCommonTrait
}
}
- public function __sleep(): array
+ public function __serialize(): array
{
throw new \BadMethodCallException('Cannot serialize '.__CLASS__);
}
- /**
- * @return void
- */
- public function __wakeup()
+ public function __unserialize(array $data): void
{
throw new \BadMethodCallException('Cannot unserialize '.__CLASS__);
}
diff --git a/lib/symfony/cache/Traits/FilesystemTrait.php b/lib/symfony/cache/Traits/FilesystemTrait.php
index 47e9b838f..05fa10e96 100644
--- a/lib/symfony/cache/Traits/FilesystemTrait.php
+++ b/lib/symfony/cache/Traits/FilesystemTrait.php
@@ -92,7 +92,7 @@ trait FilesystemTrait
}
if ($failed && !is_writable($this->directory)) {
- throw new CacheException(sprintf('Cache directory is not writable (%s).', $this->directory));
+ throw new CacheException(\sprintf('Cache directory is not writable (%s).', $this->directory));
}
return $failed;
diff --git a/lib/symfony/cache/Traits/Redis6ProxyTrait.php b/lib/symfony/cache/Traits/Redis61ProxyTrait.php
similarity index 98%
rename from lib/symfony/cache/Traits/Redis6ProxyTrait.php
rename to lib/symfony/cache/Traits/Redis61ProxyTrait.php
index 34f60cb10..0ec7b5762 100644
--- a/lib/symfony/cache/Traits/Redis6ProxyTrait.php
+++ b/lib/symfony/cache/Traits/Redis61ProxyTrait.php
@@ -15,7 +15,7 @@ if (version_compare(phpversion('redis'), '6.1.0-dev', '>=')) {
/**
* @internal
*/
- trait Redis6ProxyTrait
+ trait Redis61ProxyTrait
{
public function dump($key): \Redis|string|false
{
@@ -51,7 +51,7 @@ if (version_compare(phpversion('redis'), '6.1.0-dev', '>=')) {
/**
* @internal
*/
- trait Redis6ProxyTrait
+ trait Redis61ProxyTrait
{
public function dump($key): \Redis|string
{
diff --git a/lib/symfony/cache/Traits/Redis62ProxyTrait.php b/lib/symfony/cache/Traits/Redis62ProxyTrait.php
new file mode 100644
index 000000000..4ea807220
--- /dev/null
+++ b/lib/symfony/cache/Traits/Redis62ProxyTrait.php
@@ -0,0 +1,52 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Traits;
+
+if (version_compare(phpversion('redis'), '6.2.0', '>=')) {
+ /**
+ * @internal
+ */
+ trait Redis62ProxyTrait
+ {
+ public function expiremember($key, $field, $ttl, $unit = null): \Redis|false|int
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->expiremember(...\func_get_args());
+ }
+
+ public function expirememberat($key, $field, $timestamp): \Redis|false|int
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->expirememberat(...\func_get_args());
+ }
+
+ public function getWithMeta($key): \Redis|array|false
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->getWithMeta(...\func_get_args());
+ }
+
+ public function serverName(): false|string
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->serverName(...\func_get_args());
+ }
+
+ public function serverVersion(): false|string
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->serverVersion(...\func_get_args());
+ }
+ }
+} else {
+ /**
+ * @internal
+ */
+ trait Redis62ProxyTrait
+ {
+ }
+}
diff --git a/lib/symfony/cache/Traits/Redis63ProxyTrait.php b/lib/symfony/cache/Traits/Redis63ProxyTrait.php
new file mode 100644
index 000000000..6f6b37017
--- /dev/null
+++ b/lib/symfony/cache/Traits/Redis63ProxyTrait.php
@@ -0,0 +1,162 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Traits;
+
+if (version_compare(phpversion('redis'), '6.3.0', '>=')) {
+ /**
+ * @internal
+ */
+ trait Redis63ProxyTrait
+ {
+ public function delifeq($key, $value): \Redis|int|false
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->delifeq(...\func_get_args());
+ }
+
+ public function hexpire($key, $ttl, $fields, $mode = null): \Redis|array|false
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->hexpire(...\func_get_args());
+ }
+
+ public function hexpireat($key, $time, $fields, $mode = null): \Redis|array|false
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->hexpireat(...\func_get_args());
+ }
+
+ public function hexpiretime($key, $fields): \Redis|array|false
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->hexpiretime(...\func_get_args());
+ }
+
+ public function hgetdel($key, $fields): \Redis|array|false
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->hgetdel(...\func_get_args());
+ }
+
+ public function hgetex($key, $fields, $expiry = null): \Redis|array|false
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->hgetex(...\func_get_args());
+ }
+
+ public function hGetWithMeta($key, $member): mixed
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->hGetWithMeta(...\func_get_args());
+ }
+
+ public function hpersist($key, $fields): \Redis|array|false
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->hpersist(...\func_get_args());
+ }
+
+ public function hpexpire($key, $ttl, $fields, $mode = null): \Redis|array|false
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->hpexpire(...\func_get_args());
+ }
+
+ public function hpexpireat($key, $mstime, $fields, $mode = null): \Redis|array|false
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->hpexpireat(...\func_get_args());
+ }
+
+ public function hpexpiretime($key, $fields): \Redis|array|false
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->hpexpiretime(...\func_get_args());
+ }
+
+ public function hpttl($key, $fields): \Redis|array|false
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->hpttl(...\func_get_args());
+ }
+
+ public function hsetex($key, $fields, $expiry = null): \Redis|int|false
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->hsetex(...\func_get_args());
+ }
+
+ public function httl($key, $fields): \Redis|array|false
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->httl(...\func_get_args());
+ }
+
+ public function vadd($key, $values, $element, $options = null): \Redis|int|false
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->vadd(...\func_get_args());
+ }
+
+ public function vcard($key): \Redis|int|false
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->vcard(...\func_get_args());
+ }
+
+ public function vdim($key): \Redis|int|false
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->vdim(...\func_get_args());
+ }
+
+ public function vemb($key, $member, $raw = false): \Redis|array|false
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->vemb(...\func_get_args());
+ }
+
+ public function vgetattr($key, $member, $decode = true): \Redis|array|string|false
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->vgetattr(...\func_get_args());
+ }
+
+ public function vinfo($key): \Redis|array|false
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->vinfo(...\func_get_args());
+ }
+
+ public function vismember($key, $member): \Redis|bool
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->vismember(...\func_get_args());
+ }
+
+ public function vlinks($key, $member, $withscores = false): \Redis|array|false
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->vlinks(...\func_get_args());
+ }
+
+ public function vrandmember($key, $count = 0): \Redis|array|string|false
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->vrandmember(...\func_get_args());
+ }
+
+ public function vrange($key, $min, $max, $count = -1): \Redis|array|false
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->vrange(...\func_get_args());
+ }
+
+ public function vrem($key, $member): \Redis|int|false
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->vrem(...\func_get_args());
+ }
+
+ public function vsetattr($key, $member, $attributes): \Redis|int|false
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->vsetattr(...\func_get_args());
+ }
+
+ public function vsim($key, $member, $options = null): \Redis|array|false
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->vsim(...\func_get_args());
+ }
+ }
+} else {
+ /**
+ * @internal
+ */
+ trait Redis63ProxyTrait
+ {
+ }
+}
diff --git a/lib/symfony/cache/Traits/Redis6Proxy.php b/lib/symfony/cache/Traits/Redis6Proxy.php
index c841d4269..e321fee62 100644
--- a/lib/symfony/cache/Traits/Redis6Proxy.php
+++ b/lib/symfony/cache/Traits/Redis6Proxy.php
@@ -25,7 +25,9 @@ class_exists(\Symfony\Component\VarExporter\Internal\LazyObjectState::class);
*/
class Redis6Proxy extends \Redis implements ResetInterface, LazyObjectInterface
{
- use Redis6ProxyTrait;
+ use Redis61ProxyTrait;
+ use Redis62ProxyTrait;
+ use Redis63ProxyTrait;
use LazyProxyTrait {
resetLazyObject as reset;
}
diff --git a/lib/symfony/cache/Traits/RedisCluster6ProxyTrait.php b/lib/symfony/cache/Traits/RedisCluster61ProxyTrait.php
similarity index 95%
rename from lib/symfony/cache/Traits/RedisCluster6ProxyTrait.php
rename to lib/symfony/cache/Traits/RedisCluster61ProxyTrait.php
index 9c3169e32..9ff5b19da 100644
--- a/lib/symfony/cache/Traits/RedisCluster6ProxyTrait.php
+++ b/lib/symfony/cache/Traits/RedisCluster61ProxyTrait.php
@@ -15,7 +15,7 @@ if (version_compare(phpversion('redis'), '6.1.0-dev', '>')) {
/**
* @internal
*/
- trait RedisCluster6ProxyTrait
+ trait RedisCluster61ProxyTrait
{
public function getex($key, $options = []): \RedisCluster|string|false
{
@@ -36,7 +36,7 @@ if (version_compare(phpversion('redis'), '6.1.0-dev', '>')) {
/**
* @internal
*/
- trait RedisCluster6ProxyTrait
+ trait RedisCluster61ProxyTrait
{
public function publish($channel, $message): \RedisCluster|bool
{
diff --git a/lib/symfony/cache/Traits/RedisCluster62ProxyTrait.php b/lib/symfony/cache/Traits/RedisCluster62ProxyTrait.php
new file mode 100644
index 000000000..e8f864a05
--- /dev/null
+++ b/lib/symfony/cache/Traits/RedisCluster62ProxyTrait.php
@@ -0,0 +1,47 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Traits;
+
+if (version_compare(phpversion('redis'), '6.2.0', '>=')) {
+ /**
+ * @internal
+ */
+ trait RedisCluster62ProxyTrait
+ {
+ public function expiremember($key, $field, $ttl, $unit = null): \Redis|false|int
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->expiremember(...\func_get_args());
+ }
+
+ public function expirememberat($key, $field, $timestamp): \Redis|false|int
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->expirememberat(...\func_get_args());
+ }
+
+ public function getdel($key): mixed
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->getdel(...\func_get_args());
+ }
+
+ public function getWithMeta($key): \RedisCluster|array|false
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->getWithMeta(...\func_get_args());
+ }
+ }
+} else {
+ /**
+ * @internal
+ */
+ trait RedisCluster62ProxyTrait
+ {
+ }
+}
diff --git a/lib/symfony/cache/Traits/RedisCluster63ProxyTrait.php b/lib/symfony/cache/Traits/RedisCluster63ProxyTrait.php
new file mode 100644
index 000000000..374f96214
--- /dev/null
+++ b/lib/symfony/cache/Traits/RedisCluster63ProxyTrait.php
@@ -0,0 +1,162 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Traits;
+
+if (version_compare(phpversion('redis'), '6.3.0', '>=')) {
+ /**
+ * @internal
+ */
+ trait RedisCluster63ProxyTrait
+ {
+ public function delifeq($key, $value): \RedisCluster|int|false
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->delifeq(...\func_get_args());
+ }
+
+ public function hexpire($key, $ttl, $fields, $mode = null): \RedisCluster|array|false
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->hexpire(...\func_get_args());
+ }
+
+ public function hexpireat($key, $time, $fields, $mode = null): \RedisCluster|array|false
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->hexpireat(...\func_get_args());
+ }
+
+ public function hexpiretime($key, $fields): \RedisCluster|array|false
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->hexpiretime(...\func_get_args());
+ }
+
+ public function hgetdel($key, $fields): \RedisCluster|array|false
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->hgetdel(...\func_get_args());
+ }
+
+ public function hgetex($key, $fields, $expiry = null): \RedisCluster|array|false
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->hgetex(...\func_get_args());
+ }
+
+ public function hgetWithMeta($key, $member): mixed
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->hgetWithMeta(...\func_get_args());
+ }
+
+ public function hpersist($key, $fields): \RedisCluster|array|false
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->hpersist(...\func_get_args());
+ }
+
+ public function hpexpire($key, $ttl, $fields, $mode = null): \RedisCluster|array|false
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->hpexpire(...\func_get_args());
+ }
+
+ public function hpexpireat($key, $mstime, $fields, $mode = null): \RedisCluster|array|false
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->hpexpireat(...\func_get_args());
+ }
+
+ public function hpexpiretime($key, $fields): \RedisCluster|array|false
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->hpexpiretime(...\func_get_args());
+ }
+
+ public function hpttl($key, $fields): \RedisCluster|array|false
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->hpttl(...\func_get_args());
+ }
+
+ public function hsetex($key, $fields, $expiry = null): \RedisCluster|int|false
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->hsetex(...\func_get_args());
+ }
+
+ public function httl($key, $fields): \RedisCluster|array|false
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->httl(...\func_get_args());
+ }
+
+ public function vadd($key, $values, $element, $options = null): \RedisCluster|int|false
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->vadd(...\func_get_args());
+ }
+
+ public function vcard($key): \RedisCluster|int|false
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->vcard(...\func_get_args());
+ }
+
+ public function vdim($key): \RedisCluster|int|false
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->vdim(...\func_get_args());
+ }
+
+ public function vemb($key, $member, $raw = false): \RedisCluster|array|false
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->vemb(...\func_get_args());
+ }
+
+ public function vgetattr($key, $member, $decode = true): \RedisCluster|array|string|false
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->vgetattr(...\func_get_args());
+ }
+
+ public function vinfo($key): \RedisCluster|array|false
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->vinfo(...\func_get_args());
+ }
+
+ public function vismember($key, $member): \RedisCluster|bool
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->vismember(...\func_get_args());
+ }
+
+ public function vlinks($key, $member, $withscores = false): \RedisCluster|array|false
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->vlinks(...\func_get_args());
+ }
+
+ public function vrandmember($key, $count = 0): \RedisCluster|array|string|false
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->vrandmember(...\func_get_args());
+ }
+
+ public function vrange($key, $min, $max, $count = -1): \RedisCluster|array|false
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->vrange(...\func_get_args());
+ }
+
+ public function vrem($key, $member): \RedisCluster|int|false
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->vrem(...\func_get_args());
+ }
+
+ public function vsetattr($key, $member, $attributes): \RedisCluster|int|false
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->vsetattr(...\func_get_args());
+ }
+
+ public function vsim($key, $member, $options = null): \RedisCluster|array|false
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->vsim(...\func_get_args());
+ }
+ }
+} else {
+ /**
+ * @internal
+ */
+ trait RedisCluster63ProxyTrait
+ {
+ }
+}
diff --git a/lib/symfony/cache/Traits/RedisCluster6Proxy.php b/lib/symfony/cache/Traits/RedisCluster6Proxy.php
index c19aa1620..1ea025dd0 100644
--- a/lib/symfony/cache/Traits/RedisCluster6Proxy.php
+++ b/lib/symfony/cache/Traits/RedisCluster6Proxy.php
@@ -25,7 +25,9 @@ class_exists(\Symfony\Component\VarExporter\Internal\LazyObjectState::class);
*/
class RedisCluster6Proxy extends \RedisCluster implements ResetInterface, LazyObjectInterface
{
- use RedisCluster6ProxyTrait;
+ use RedisCluster61ProxyTrait;
+ use RedisCluster62ProxyTrait;
+ use RedisCluster63ProxyTrait;
use LazyProxyTrait {
resetLazyObject as reset;
}
diff --git a/lib/symfony/cache/Traits/RedisTrait.php b/lib/symfony/cache/Traits/RedisTrait.php
index 2a1fa3921..c3fc68990 100644
--- a/lib/symfony/cache/Traits/RedisTrait.php
+++ b/lib/symfony/cache/Traits/RedisTrait.php
@@ -17,6 +17,7 @@ use Predis\Connection\Aggregate\RedisCluster;
use Predis\Connection\Aggregate\ReplicationInterface;
use Predis\Connection\Cluster\ClusterInterface as Predis2ClusterInterface;
use Predis\Connection\Cluster\RedisCluster as Predis2RedisCluster;
+use Predis\Connection\Replication\ReplicationInterface as Predis2ReplicationInterface;
use Predis\Response\ErrorInterface;
use Predis\Response\Status;
use Relay\Relay;
@@ -36,6 +37,7 @@ trait RedisTrait
{
private static array $defaultConnectionOptions = [
'class' => null,
+ 'auth' => null,
'persistent' => 0,
'persistent_id' => null,
'timeout' => 30,
@@ -57,7 +59,7 @@ trait RedisTrait
parent::__construct($namespace, $defaultLifetime);
if (preg_match('#[^-+_.A-Za-z0-9]#', $namespace, $match)) {
- throw new InvalidArgumentException(sprintf('RedisAdapter namespace contains "%s" but only characters in [-+_.A-Za-z0-9] are allowed.', $match[0]));
+ throw new InvalidArgumentException(\sprintf('RedisAdapter namespace contains "%s" but only characters in [-+_.A-Za-z0-9] are allowed.', $match[0]));
}
if ($redis instanceof \Predis\ClientInterface && $redis->getOptions()->exceptions) {
@@ -94,10 +96,11 @@ trait RedisTrait
throw new InvalidArgumentException('Invalid Redis DSN: it does not start with "redis[s]:".');
}
- if (!\extension_loaded('redis') && !class_exists(\Predis\Client::class)) {
- throw new CacheException('Cannot find the "redis" extension nor the "predis/predis" package.');
+ if (!\extension_loaded('redis') && !\extension_loaded('relay') && !class_exists(\Predis\Client::class)) {
+ throw new CacheException('Cannot find the "redis" extension nor the "relay" extension nor the "predis/predis" package.');
}
+ $auth = null;
$params = preg_replace_callback('#^'.$scheme.':(//)?(?:(?:(?
* ╔═══════════════╤══════════════════════════╤══════════════════╗
- * 1 ISBN 2 Title │ Author ║
- * ╠═══════════════╪══════════════════════════╪══════════════════╣
+ * ║ ISBN │ Title │ Author ║
+ * ╠═══════1═══════╪══════════════════════════╪══════════════════╣
* ║ 99921-58-10-7 │ Divine Comedy │ Dante Alighieri ║
* ║ 9971-5-0210-0 │ A Tale of Two Cities │ Charles Dickens ║
+ * ╟───────2───────┼──────────────────────────┼──────────────────╢
* ║ 960-425-059-0 │ The Lord of the Rings │ J. R. R. Tolkien ║
* ║ 80-902734-1-6 │ And Then There Were None │ Agatha Christie ║
* ╚═══════════════╧══════════════════════════╧══════════════════╝
@@ -101,11 +102,10 @@ class TableStyle
*
*
* ╔═══════════════╤══════════════════════════╤══════════════════╗
- * ║ ISBN │ Title │ Author ║
- * ╠═══════1═══════╪══════════════════════════╪══════════════════╣
+ * 1 ISBN 2 Title │ Author ║
+ * ╠═══════════════╪══════════════════════════╪══════════════════╣
* ║ 99921-58-10-7 │ Divine Comedy │ Dante Alighieri ║
* ║ 9971-5-0210-0 │ A Tale of Two Cities │ Charles Dickens ║
- * ╟───────2───────┼──────────────────────────┼──────────────────╢
* ║ 960-425-059-0 │ The Lord of the Rings │ J. R. R. Tolkien ║
* ║ 80-902734-1-6 │ And Then There Were None │ Agatha Christie ║
* ╚═══════════════╧══════════════════════════╧══════════════════╝
diff --git a/lib/symfony/console/Helper/TerminalInputHelper.php b/lib/symfony/console/Helper/TerminalInputHelper.php
new file mode 100644
index 000000000..d6f07db8b
--- /dev/null
+++ b/lib/symfony/console/Helper/TerminalInputHelper.php
@@ -0,0 +1,156 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Console\Helper;
+
+/**
+ * TerminalInputHelper stops Ctrl-C and similar signals from leaving the terminal in
+ * an unusable state if its settings have been modified when reading user input.
+ * This can be an issue on non-Windows platforms.
+ *
+ * Usage:
+ *
+ * $inputHelper = new TerminalInputHelper($inputStream);
+ *
+ * ...change terminal settings
+ *
+ * // Wait for input before all input reads
+ * $inputHelper->waitForInput();
+ *
+ * ...read input
+ *
+ * // Call finish to restore terminal settings and signal handlers
+ * $inputHelper->finish()
+ *
+ * @internal
+ */
+final class TerminalInputHelper
+{
+ /** @var resource */
+ private $inputStream;
+ private bool $isStdin;
+ private string $initialState = '';
+ private int $signalToKill = 0;
+ private array $signalHandlers = [];
+ private array $targetSignals = [];
+ private bool $withStty;
+
+ /**
+ * @param resource $inputStream
+ *
+ * @throws \RuntimeException If unable to read terminal settings
+ */
+ public function __construct($inputStream, bool $withStty = true)
+ {
+ $this->inputStream = $inputStream;
+ $this->isStdin = 'php://stdin' === stream_get_meta_data($inputStream)['uri'];
+ $this->withStty = $withStty;
+
+ if ($withStty) {
+ if (!\is_string($state = shell_exec('stty -g'))) {
+ throw new \RuntimeException('Unable to read the terminal settings.');
+ }
+
+ $this->initialState = $state;
+
+ $this->createSignalHandlers();
+ }
+ }
+
+ /**
+ * Waits for input.
+ */
+ public function waitForInput(): void
+ {
+ if ($this->isStdin) {
+ $r = [$this->inputStream];
+ $w = [];
+
+ // Allow signal handlers to run
+ while (0 === @stream_select($r, $w, $w, 0, 100)) {
+ $r = [$this->inputStream];
+ }
+ }
+
+ if ($this->withStty) {
+ $this->checkForKillSignal();
+ }
+ }
+
+ /**
+ * Restores terminal state and signal handlers.
+ */
+ public function finish(): void
+ {
+ if (!$this->withStty) {
+ return;
+ }
+
+ // Safeguard in case an unhandled kill signal exists
+ $this->checkForKillSignal();
+ shell_exec('stty '.$this->initialState);
+ $this->signalToKill = 0;
+
+ foreach ($this->signalHandlers as $signal => $originalHandler) {
+ pcntl_signal($signal, $originalHandler);
+ }
+ $this->signalHandlers = [];
+ $this->targetSignals = [];
+ }
+
+ private function createSignalHandlers(): void
+ {
+ if (!\function_exists('pcntl_async_signals') || !\function_exists('pcntl_signal')) {
+ return;
+ }
+
+ pcntl_async_signals(true);
+ $this->targetSignals = [\SIGINT, \SIGQUIT, \SIGTERM];
+
+ foreach ($this->targetSignals as $signal) {
+ $this->signalHandlers[$signal] = pcntl_signal_get_handler($signal);
+
+ pcntl_signal($signal, function ($signal) {
+ // Save current state, then restore to initial state
+ $currentState = shell_exec('stty -g');
+ shell_exec('stty '.$this->initialState);
+ $originalHandler = $this->signalHandlers[$signal];
+
+ if (\is_callable($originalHandler)) {
+ $originalHandler($signal);
+ // Handler did not exit, so restore to current state
+ shell_exec('stty '.$currentState);
+
+ return;
+ }
+
+ // Not a callable, so SIG_DFL or SIG_IGN
+ if (\SIG_DFL === $originalHandler) {
+ $this->signalToKill = $signal;
+ }
+ });
+ }
+ }
+
+ private function checkForKillSignal(): void
+ {
+ if (\in_array($this->signalToKill, $this->targetSignals, true)) {
+ // Try posix_kill
+ if (\function_exists('posix_kill')) {
+ pcntl_signal($this->signalToKill, \SIG_DFL);
+ posix_kill(getmypid(), $this->signalToKill);
+ }
+
+ // Best attempt fallback
+ exit(128 + $this->signalToKill);
+ }
+ }
+}
diff --git a/lib/symfony/console/Input/ArgvInput.php b/lib/symfony/console/Input/ArgvInput.php
index a33092aee..b5f866689 100644
--- a/lib/symfony/console/Input/ArgvInput.php
+++ b/lib/symfony/console/Input/ArgvInput.php
@@ -176,7 +176,7 @@ class ArgvInput extends Input
} else {
$all = $this->definition->getArguments();
$symfonyCommandName = null;
- if (($inputArgument = $all[$key = array_key_first($all)] ?? null) && 'command' === $inputArgument->getName()) {
+ if (($inputArgument = $all[$key = array_key_first($all) ?? ''] ?? null) && 'command' === $inputArgument->getName()) {
$symfonyCommandName = $this->arguments['command'] ?? null;
unset($all[$key]);
}
diff --git a/lib/symfony/console/Question/ChoiceQuestion.php b/lib/symfony/console/Question/ChoiceQuestion.php
index 9445ccc0c..bcfe4dc45 100644
--- a/lib/symfony/console/Question/ChoiceQuestion.php
+++ b/lib/symfony/console/Question/ChoiceQuestion.php
@@ -26,9 +26,9 @@ class ChoiceQuestion extends Question
private string $errorMessage = 'Value "%s" is invalid';
/**
- * @param string $question The question to ask to the user
- * @param array $choices The list of available choices
- * @param string|bool|int|float|null $default The default answer to return
+ * @param string $question The question to ask to the user
+ * @param array