From 88fae22f941c1c654e1caa67daa6258f88b44283 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Tamarelle?= Date: Thu, 23 Oct 2025 00:51:08 +0200 Subject: [PATCH 1/4] Use reference.php --- config/packages/asset_mapper.php | 22 + config/packages/asset_mapper.yaml | 11 - config/packages/cache.php | 28 + config/packages/cache.yaml | 19 - config/packages/csrf.php | 21 + config/packages/csrf.yaml | 11 - config/packages/dama_doctrine_test_bundle.php | 13 + .../packages/dama_doctrine_test_bundle.yaml | 5 - config/packages/debug.php | 13 + config/packages/debug.yaml | 5 - config/packages/deprecations.php | 19 + config/packages/deprecations.yaml | 9 - config/packages/doctrine.php | 74 +- config/packages/doctrine.yaml | 56 - config/packages/doctrine_migrations.php | 14 + config/packages/doctrine_migrations.yaml | 6 - config/packages/framework.php | 35 + config/packages/framework.yaml | 25 - config/packages/html_sanitizer.php | 15 + config/packages/html_sanitizer.yaml | 5 - config/packages/mailer.php | 27 + config/packages/mailer.yaml | 15 - config/packages/monolog.php | 86 ++ config/packages/monolog.yaml | 62 - config/packages/property_info.php | 11 + config/packages/property_info.yaml | 3 - config/packages/routing.php | 20 + config/packages/routing.yaml | 10 - config/packages/security.php | 103 ++ config/packages/security.yaml | 84 -- config/packages/translation.php | 19 + config/packages/translation.yaml | 16 - config/packages/twig.php | 18 + config/packages/twig.yaml | 9 - config/packages/twig_component.php | 13 + config/packages/twig_component.yaml | 5 - config/packages/ux_icons.php | 16 + config/packages/ux_icons.yaml | 8 - config/packages/validator.php | 25 + config/packages/validator.yaml | 14 - config/packages/web_profiler.php | 24 + config/packages/web_profiler.yaml | 13 - config/reference.php | 1339 +++++++++++++++++ config/routes.php | 31 + config/routes.yaml | 19 - config/services.php | 36 + config/services.yaml | 28 - 47 files changed, 2018 insertions(+), 442 deletions(-) create mode 100644 config/packages/asset_mapper.php delete mode 100644 config/packages/asset_mapper.yaml create mode 100644 config/packages/cache.php delete mode 100644 config/packages/cache.yaml create mode 100644 config/packages/csrf.php delete mode 100644 config/packages/csrf.yaml create mode 100644 config/packages/dama_doctrine_test_bundle.php delete mode 100644 config/packages/dama_doctrine_test_bundle.yaml create mode 100644 config/packages/debug.php delete mode 100644 config/packages/debug.yaml create mode 100644 config/packages/deprecations.php delete mode 100644 config/packages/deprecations.yaml delete mode 100644 config/packages/doctrine.yaml create mode 100644 config/packages/doctrine_migrations.php delete mode 100644 config/packages/doctrine_migrations.yaml create mode 100644 config/packages/framework.php delete mode 100644 config/packages/framework.yaml create mode 100644 config/packages/html_sanitizer.php delete mode 100644 config/packages/html_sanitizer.yaml create mode 100644 config/packages/mailer.php delete mode 100644 config/packages/mailer.yaml create mode 100644 config/packages/monolog.php delete mode 100644 config/packages/monolog.yaml create mode 100644 config/packages/property_info.php delete mode 100644 config/packages/property_info.yaml create mode 100644 config/packages/routing.php delete mode 100644 config/packages/routing.yaml create mode 100644 config/packages/security.php delete mode 100644 config/packages/security.yaml create mode 100644 config/packages/translation.php delete mode 100644 config/packages/translation.yaml create mode 100644 config/packages/twig.php delete mode 100644 config/packages/twig.yaml create mode 100644 config/packages/twig_component.php delete mode 100644 config/packages/twig_component.yaml create mode 100644 config/packages/ux_icons.php delete mode 100644 config/packages/ux_icons.yaml create mode 100644 config/packages/validator.php delete mode 100644 config/packages/validator.yaml create mode 100644 config/packages/web_profiler.php delete mode 100644 config/packages/web_profiler.yaml create mode 100644 config/reference.php create mode 100644 config/routes.php delete mode 100644 config/routes.yaml create mode 100644 config/services.php delete mode 100644 config/services.yaml diff --git a/config/packages/asset_mapper.php b/config/packages/asset_mapper.php new file mode 100644 index 000000000..8a66734c9 --- /dev/null +++ b/config/packages/asset_mapper.php @@ -0,0 +1,22 @@ + [ + 'asset_mapper' => [ + // The paths to make available to the asset mapper. + 'paths' => [ + 'assets/', + ], + 'missing_import_mode' => 'strict', + ], + ], + 'when@prod' => [ + 'framework' => [ + 'asset_mapper' => [ + 'missing_import_mode' => 'warn', + ], + ], + ], +]); diff --git a/config/packages/asset_mapper.yaml b/config/packages/asset_mapper.yaml deleted file mode 100644 index f7653e97f..000000000 --- a/config/packages/asset_mapper.yaml +++ /dev/null @@ -1,11 +0,0 @@ -framework: - asset_mapper: - # The paths to make available to the asset mapper. - paths: - - assets/ - missing_import_mode: strict - -when@prod: - framework: - asset_mapper: - missing_import_mode: warn diff --git a/config/packages/cache.php b/config/packages/cache.php new file mode 100644 index 000000000..ed97ebe2e --- /dev/null +++ b/config/packages/cache.php @@ -0,0 +1,28 @@ + [ + 'cache' => [ + // Unique name of your app: used to compute stable namespaces for cache keys. + // 'prefix_seed' => 'your_vendor_name/app_name', + + // The "app" cache stores to the filesystem by default. + // The data in this cache should persist between deploys. + // Other options include: + + // Redis + // 'app' => 'cache.adapter.redis', + // 'default_redis_provider' => 'redis://localhost', + + // APCu (not recommended with heavy random-write workloads as memory fragmentation can cause perf issues) + // 'app' => 'cache.adapter.apcu', + + // Namespaced pools use the above "app" backend by default + // 'pools' => [ + // 'my.dedicated.cache' => null, + // ], + ], + ], +]); diff --git a/config/packages/cache.yaml b/config/packages/cache.yaml deleted file mode 100644 index 6899b7200..000000000 --- a/config/packages/cache.yaml +++ /dev/null @@ -1,19 +0,0 @@ -framework: - cache: - # Unique name of your app: used to compute stable namespaces for cache keys. - #prefix_seed: your_vendor_name/app_name - - # The "app" cache stores to the filesystem by default. - # The data in this cache should persist between deploys. - # Other options include: - - # Redis - #app: cache.adapter.redis - #default_redis_provider: redis://localhost - - # APCu (not recommended with heavy random-write workloads as memory fragmentation can cause perf issues) - #app: cache.adapter.apcu - - # Namespaced pools use the above "app" backend by default - #pools: - #my.dedicated.cache: null diff --git a/config/packages/csrf.php b/config/packages/csrf.php new file mode 100644 index 000000000..f5ae949ca --- /dev/null +++ b/config/packages/csrf.php @@ -0,0 +1,21 @@ + [ + 'form' => [ + 'csrf_protection' => [ + 'token_id' => 'submit', + ], + ], + 'csrf_protection' => [ + 'stateless_token_ids' => [ + 'submit', + 'authenticate', + 'logout', + ], + ], + ], +]); diff --git a/config/packages/csrf.yaml b/config/packages/csrf.yaml deleted file mode 100644 index 40d40405e..000000000 --- a/config/packages/csrf.yaml +++ /dev/null @@ -1,11 +0,0 @@ -# Enable stateless CSRF protection for forms and logins/logouts -framework: - form: - csrf_protection: - token_id: submit - - csrf_protection: - stateless_token_ids: - - submit - - authenticate - - logout diff --git a/config/packages/dama_doctrine_test_bundle.php b/config/packages/dama_doctrine_test_bundle.php new file mode 100644 index 000000000..a1f20cf12 --- /dev/null +++ b/config/packages/dama_doctrine_test_bundle.php @@ -0,0 +1,13 @@ + [ + 'dama_doctrine_test' => [ + 'enable_static_connection' => true, + 'enable_static_meta_data_cache' => true, + 'enable_static_query_cache' => true, + ], + ], +]); diff --git a/config/packages/dama_doctrine_test_bundle.yaml b/config/packages/dama_doctrine_test_bundle.yaml deleted file mode 100644 index 3482cbae1..000000000 --- a/config/packages/dama_doctrine_test_bundle.yaml +++ /dev/null @@ -1,5 +0,0 @@ -when@test: - dama_doctrine_test: - enable_static_connection: true - enable_static_meta_data_cache: true - enable_static_query_cache: true diff --git a/config/packages/debug.php b/config/packages/debug.php new file mode 100644 index 000000000..19de4e70b --- /dev/null +++ b/config/packages/debug.php @@ -0,0 +1,13 @@ + [ + 'debug' => [ + // Forwards VarDumper Data clones to a centralized server allowing to inspect dumps on CLI or in your browser. + // See the "server:dump" command to start a new server. + 'dump_destination' => 'tcp://'.env('VAR_DUMPER_SERVER'), + ], + ], +]); diff --git a/config/packages/debug.yaml b/config/packages/debug.yaml deleted file mode 100644 index ad874afdd..000000000 --- a/config/packages/debug.yaml +++ /dev/null @@ -1,5 +0,0 @@ -when@dev: - debug: - # Forwards VarDumper Data clones to a centralized server allowing to inspect dumps on CLI or in your browser. - # See the "server:dump" command to start a new server. - dump_destination: "tcp://%env(VAR_DUMPER_SERVER)%" diff --git a/config/packages/deprecations.php b/config/packages/deprecations.php new file mode 100644 index 000000000..0ac9168b7 --- /dev/null +++ b/config/packages/deprecations.php @@ -0,0 +1,19 @@ + [ + // As of Symfony 5.1, deprecations are logged in the dedicated "deprecation" channel when it exists + // 'monolog' => [ + // 'channels' => ['deprecation'], + // 'handlers' => [ + // 'deprecation' => [ + // 'type' => 'stream', + // 'channels' => ['deprecation'], + // 'path' => 'php://stderr', + // ], + // ], + // ], + ], +]); diff --git a/config/packages/deprecations.yaml b/config/packages/deprecations.yaml deleted file mode 100644 index d4254d010..000000000 --- a/config/packages/deprecations.yaml +++ /dev/null @@ -1,9 +0,0 @@ -when@prod: - # As of Symfony 5.1, deprecations are logged in the dedicated "deprecation" channel when it exists - #monolog: - # channels: [deprecation] - # handlers: - # deprecation: - # type: stream - # channels: [deprecation] - # path: php://stderr diff --git a/config/packages/doctrine.php b/config/packages/doctrine.php index d8e1af611..d09ccbe5a 100644 --- a/config/packages/doctrine.php +++ b/config/packages/doctrine.php @@ -2,10 +2,76 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; -return static function (ContainerConfigurator $container): void { - $container->extension('doctrine', [ +return App::config([ + 'doctrine' => [ + 'dbal' => [ + 'url' => env('DATABASE_URL')->resolve(), + + // IMPORTANT: You MUST configure your server version, + // either here or in the DATABASE_URL env var (see .env file) + // 'server_version' => '16', + + 'profiling_collect_backtrace' => param('kernel.debug'), + 'use_savepoints' => true, + ], 'orm' => [ + 'auto_generate_proxy_classes' => true, + 'report_fields_where_declared' => true, + 'validate_xml_mapping' => true, + 'naming_strategy' => 'doctrine.orm.naming_strategy.underscore_number_aware', + 'identity_generation_preferences' => [ + 'Doctrine\\DBAL\\Platforms\\PostgreSQLPlatform' => 'identity', + ], + 'auto_mapping' => true, + 'mappings' => [ + 'App' => [ + 'type' => 'attribute', + 'is_bundle' => false, + 'dir' => param('kernel.project_dir').'/src/Entity', + 'prefix' => 'App\\Entity', + 'alias' => 'App', + ], + ], + 'controller_resolver' => [ + 'auto_mapping' => false, + ], 'enable_native_lazy_objects' => \PHP_VERSION_ID >= 80400, ], - ]); -}; + ], + 'when@test' => [ + 'doctrine' => [ + 'dbal' => [ + // "TEST_TOKEN" is typically set by ParaTest + 'dbname_suffix' => '_test'.env('TEST_TOKEN')->default(''), + ], + ], + ], + 'when@prod' => [ + 'doctrine' => [ + 'orm' => [ + 'auto_generate_proxy_classes' => false, + 'proxy_dir' => param('kernel.build_dir').'/doctrine/orm/Proxies', + 'query_cache_driver' => [ + 'type' => 'pool', + 'pool' => 'doctrine.system_cache_pool', + ], + 'result_cache_driver' => [ + 'type' => 'pool', + 'pool' => 'doctrine.result_cache_pool', + ], + ], + ], + 'framework' => [ + 'cache' => [ + 'pools' => [ + 'doctrine.result_cache_pool' => [ + 'adapter' => 'cache.app', + ], + 'doctrine.system_cache_pool' => [ + 'adapter' => 'cache.system', + ], + ], + ], + ], + ], +]); diff --git a/config/packages/doctrine.yaml b/config/packages/doctrine.yaml deleted file mode 100644 index 3a220dec3..000000000 --- a/config/packages/doctrine.yaml +++ /dev/null @@ -1,56 +0,0 @@ -doctrine: - dbal: - url: '%env(resolve:DATABASE_URL)%' - - # IMPORTANT: You MUST configure your server version, - # either here or in the DATABASE_URL env var (see .env file) - #server_version: '16' - - profiling_collect_backtrace: '%kernel.debug%' - use_savepoints: true - - orm: - auto_generate_proxy_classes: true - report_fields_where_declared: true - validate_xml_mapping: true - naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware - identity_generation_preferences: - Doctrine\DBAL\Platforms\PostgreSQLPlatform: identity - - auto_mapping: true - mappings: - App: - type: attribute - is_bundle: false - dir: '%kernel.project_dir%/src/Entity' - prefix: 'App\Entity' - alias: App - - controller_resolver: - auto_mapping: false - -when@test: - doctrine: - dbal: - # "TEST_TOKEN" is typically set by ParaTest - dbname_suffix: '_test%env(default::TEST_TOKEN)%' - -when@prod: - doctrine: - orm: - auto_generate_proxy_classes: false - proxy_dir: '%kernel.build_dir%/doctrine/orm/Proxies' - query_cache_driver: - type: pool - pool: doctrine.system_cache_pool - result_cache_driver: - type: pool - pool: doctrine.result_cache_pool - - framework: - cache: - pools: - doctrine.result_cache_pool: - adapter: cache.app - doctrine.system_cache_pool: - adapter: cache.system diff --git a/config/packages/doctrine_migrations.php b/config/packages/doctrine_migrations.php new file mode 100644 index 000000000..59a731052 --- /dev/null +++ b/config/packages/doctrine_migrations.php @@ -0,0 +1,14 @@ + [ + 'migrations_paths' => [ + // namespace is arbitrary but should be different from App\Migrations + // as migrations classes should NOT be autoloaded + 'DoctrineMigrations' => param('kernel.project_dir').'/migrations', + ], + 'enable_profiler' => false, + ], +]); diff --git a/config/packages/doctrine_migrations.yaml b/config/packages/doctrine_migrations.yaml deleted file mode 100644 index 29231d94b..000000000 --- a/config/packages/doctrine_migrations.yaml +++ /dev/null @@ -1,6 +0,0 @@ -doctrine_migrations: - migrations_paths: - # namespace is arbitrary but should be different from App\Migrations - # as migrations classes should NOT be autoloaded - 'DoctrineMigrations': '%kernel.project_dir%/migrations' - enable_profiler: false diff --git a/config/packages/framework.php b/config/packages/framework.php new file mode 100644 index 000000000..2821282b8 --- /dev/null +++ b/config/packages/framework.php @@ -0,0 +1,35 @@ + [ + 'secret' => env('APP_SECRET'), + + // This defines the codes of the locales (languages) available in the application + // https://symfony.com/doc/current/reference/configuration/framework.html#enabled-locales + 'enabled_locales' => ['ar', 'bg', 'bn', 'bs', 'ca', 'cs', 'de', 'en', 'es', 'eu', 'fr', 'hr', 'id', 'it', 'ja', 'lt', 'ne', 'nl', 'pl', 'pt_BR', 'ro', 'ru', 'sl', 'sq', 'sr_Cyrl', 'sr_Latn', 'tr', 'uk', 'vi', 'zh_CN'], + + // Note that the session will be started ONLY if you read or write from it. + 'session' => true, + + // When using the HTTP Cache, ESI allows to render page fragments separately + // and with different cache configurations for each fragment + // https://symfony.com/doc/current/http_cache/esi.html + 'esi' => true, + 'fragments' => true, + + 'property_info' => [ + 'with_constructor_extractor' => false, + ], + ], + 'when@test' => [ + 'framework' => [ + 'test' => true, + 'session' => [ + 'storage_factory_id' => 'session.storage.factory.mock_file', + ], + ], + ], +]); diff --git a/config/packages/framework.yaml b/config/packages/framework.yaml deleted file mode 100644 index 1cd58c200..000000000 --- a/config/packages/framework.yaml +++ /dev/null @@ -1,25 +0,0 @@ -# see https://symfony.com/doc/current/reference/configuration/framework.html -framework: - secret: '%env(APP_SECRET)%' - - # this defines the codes of the locales (languages) available in the application - # https://symfony.com/doc/current/reference/configuration/framework.html#enabled-locales - enabled_locales: ['ar', 'bg', 'bn', 'bs', 'ca', 'cs', 'de', 'en', 'es', 'eu', 'fr', 'hr', 'id', 'it', 'ja', 'lt', 'ne', 'nl', 'pl', 'pt_BR', 'ro', 'ru', 'sl', 'sq', 'sr_Cyrl', 'sr_Latn', 'tr', 'uk', 'vi', 'zh_CN'] - - # Note that the session will be started ONLY if you read or write from it. - session: true - - # When using the HTTP Cache, ESI allows to render page fragments separately - # and with different cache configurations for each fragment - # https://symfony.com/doc/current/http_cache/esi.html - esi: true - fragments: true - - property_info: - with_constructor_extractor: false - -when@test: - framework: - test: true - session: - storage_factory_id: session.storage.factory.mock_file diff --git a/config/packages/html_sanitizer.php b/config/packages/html_sanitizer.php new file mode 100644 index 000000000..3effef1f7 --- /dev/null +++ b/config/packages/html_sanitizer.php @@ -0,0 +1,15 @@ + [ + 'html_sanitizer' => [ + 'sanitizers' => [ + 'default' => [ + 'allow_safe_elements' => true, + ], + ], + ], + ], +]); diff --git a/config/packages/html_sanitizer.yaml b/config/packages/html_sanitizer.yaml deleted file mode 100644 index 4978fb51e..000000000 --- a/config/packages/html_sanitizer.yaml +++ /dev/null @@ -1,5 +0,0 @@ -framework: - html_sanitizer: - sanitizers: - default: - allow_safe_elements: true diff --git a/config/packages/mailer.php b/config/packages/mailer.php new file mode 100644 index 000000000..1be2442c7 --- /dev/null +++ b/config/packages/mailer.php @@ -0,0 +1,27 @@ + [ + 'mailer' => [ + 'dsn' => env('MAILER_DSN'), + ], + ], + 'when@dev' => [ + 'framework' => [ + 'mailer' => [ + // this disables delivery of messages entirely + 'dsn' => 'null://null', + ], + ], + ], + 'when@test' => [ + 'framework' => [ + 'mailer' => [ + // this disables delivery of messages entirely + 'dsn' => 'null://null', + ], + ], + ], +]); diff --git a/config/packages/mailer.yaml b/config/packages/mailer.yaml deleted file mode 100644 index 58a030813..000000000 --- a/config/packages/mailer.yaml +++ /dev/null @@ -1,15 +0,0 @@ -framework: - mailer: - dsn: '%env(MAILER_DSN)%' - -when@dev: - framework: - mailer: - # this disables delivery of messages entirely - dsn: 'null://null' - -when@test: - framework: - mailer: - # this disables delivery of messages entirely - dsn: 'null://null' diff --git a/config/packages/monolog.php b/config/packages/monolog.php new file mode 100644 index 000000000..29ce66f74 --- /dev/null +++ b/config/packages/monolog.php @@ -0,0 +1,86 @@ + [ + 'channels' => [ + 'deprecation', // Deprecations are logged in the dedicated "deprecation" channel when it exists + ], + ], + 'when@dev' => [ + 'monolog' => [ + 'handlers' => [ + 'main' => [ + 'type' => 'stream', + 'path' => param('kernel.logs_dir').'/'.param('kernel.environment').'.log', + 'level' => 'debug', + 'channels' => ['!event'], + ], + // Uncomment to get logging in your browser + // You may have to allow bigger header sizes in your Web server configuration + // 'firephp' => [ + // 'type' => 'firephp', + // 'level' => 'info', + // ], + // 'chromephp' => [ + // 'type' => 'chromephp', + // 'level' => 'info', + // ], + 'console' => [ + 'type' => 'console', + 'process_psr_3_messages' => false, + 'channels' => ['!event', '!doctrine', '!console'], + ], + ], + ], + ], + 'when@test' => [ + 'monolog' => [ + 'handlers' => [ + 'main' => [ + 'type' => 'fingers_crossed', + 'action_level' => 'error', + 'handler' => 'nested', + 'excluded_http_codes' => [404, 405], + 'channels' => ['!event'], + ], + 'nested' => [ + 'type' => 'stream', + 'path' => param('kernel.logs_dir').'/'.param('kernel.environment').'.log', + 'level' => 'debug', + ], + ], + ], + ], + 'when@prod' => [ + 'monolog' => [ + 'handlers' => [ + 'main' => [ + 'type' => 'fingers_crossed', + 'action_level' => 'error', + 'handler' => 'nested', + 'excluded_http_codes' => [404, 405], + 'buffer_size' => 50, // How many messages should be saved? Prevent memory leaks + ], + 'nested' => [ + 'type' => 'stream', + 'path' => 'php://stderr', + 'level' => 'debug', + 'formatter' => 'monolog.formatter.json', + ], + 'console' => [ + 'type' => 'console', + 'process_psr_3_messages' => false, + 'channels' => ['!event', '!doctrine'], + ], + 'deprecation' => [ + 'type' => 'stream', + 'channels' => ['deprecation'], + 'path' => 'php://stderr', + 'formatter' => 'monolog.formatter.json', + ], + ], + ], + ], +]); diff --git a/config/packages/monolog.yaml b/config/packages/monolog.yaml deleted file mode 100644 index cf8af193b..000000000 --- a/config/packages/monolog.yaml +++ /dev/null @@ -1,62 +0,0 @@ -monolog: - channels: - - deprecation # Deprecations are logged in the dedicated "deprecation" channel when it exists - -when@dev: - monolog: - handlers: - main: - type: stream - path: "%kernel.logs_dir%/%kernel.environment%.log" - level: debug - channels: ["!event"] - # uncomment to get logging in your browser - # you may have to allow bigger header sizes in your Web server configuration - #firephp: - # type: firephp - # level: info - #chromephp: - # type: chromephp - # level: info - console: - type: console - process_psr_3_messages: false - channels: ["!event", "!doctrine", "!console"] - -when@test: - monolog: - handlers: - main: - type: fingers_crossed - action_level: error - handler: nested - excluded_http_codes: [ 404, 405 ] - channels: [ "!event" ] - nested: - type: stream - path: "%kernel.logs_dir%/%kernel.environment%.log" - level: debug - -when@prod: - monolog: - handlers: - main: - type: fingers_crossed - action_level: error - handler: nested - excluded_http_codes: [ 404, 405 ] - buffer_size: 50 # How many messages should be saved? Prevent memory leaks - nested: - type: stream - path: php://stderr - level: debug - formatter: monolog.formatter.json - console: - type: console - process_psr_3_messages: false - channels: [ "!event", "!doctrine" ] - deprecation: - type: stream - channels: [deprecation] - path: php://stderr - formatter: monolog.formatter.json diff --git a/config/packages/property_info.php b/config/packages/property_info.php new file mode 100644 index 000000000..052b95149 --- /dev/null +++ b/config/packages/property_info.php @@ -0,0 +1,11 @@ + [ + 'property_info' => [ + 'with_constructor_extractor' => true, + ], + ], +]); diff --git a/config/packages/property_info.yaml b/config/packages/property_info.yaml deleted file mode 100644 index dd31b9da2..000000000 --- a/config/packages/property_info.yaml +++ /dev/null @@ -1,3 +0,0 @@ -framework: - property_info: - with_constructor_extractor: true diff --git a/config/packages/routing.php b/config/packages/routing.php new file mode 100644 index 000000000..018c5ca97 --- /dev/null +++ b/config/packages/routing.php @@ -0,0 +1,20 @@ + [ + 'router' => [ + // Configure how to generate URLs in non-HTTP contexts, such as CLI commands. + // See https://symfony.com/doc/current/routing.html#generating-urls-in-commands + // 'default_uri' => 'http://localhost', + ], + ], + 'when@prod' => [ + 'framework' => [ + 'router' => [ + 'strict_requirements' => null, + ], + ], + ], +]); diff --git a/config/packages/routing.yaml b/config/packages/routing.yaml deleted file mode 100644 index 8166181c6..000000000 --- a/config/packages/routing.yaml +++ /dev/null @@ -1,10 +0,0 @@ -framework: - router: - # Configure how to generate URLs in non-HTTP contexts, such as CLI commands. - # See https://symfony.com/doc/current/routing.html#generating-urls-in-commands - #default_uri: http://localhost - -when@prod: - framework: - router: - strict_requirements: null diff --git a/config/packages/security.php b/config/packages/security.php new file mode 100644 index 000000000..e07b42b05 --- /dev/null +++ b/config/packages/security.php @@ -0,0 +1,103 @@ + [ + // Our user class and the algorithm we'll use to encode passwords + // 'auto' means to let Symfony choose the best possible password hasher (Argon2 or Bcrypt) + // https://symfony.com/doc/current/security.html#registering-the-user-hashing-passwords + 'password_hashers' => [ + PasswordAuthenticatedUserInterface::class => 'auto', + ], + 'providers' => [ + // https://symfony.com/doc/current/security/user_provider.html + // In this example, users are stored via Doctrine in the database + // To see the users at src/App/DataFixtures/ORM/LoadFixtures.php + // To load users from somewhere else: https://symfony.com/doc/current/security/user_provider.html#creating-a-custom-user-provider + 'database_users' => [ + 'entity' => [ + 'class' => User::class, + 'property' => 'username', + ], + ], + ], + // https://symfony.com/doc/current/security.html#a-authentication-firewalls + 'firewalls' => [ + 'dev' => [ + 'pattern' => '^/(_(profiler|wdt)|css|images|js)/', + 'security' => false, + ], + 'main' => [ + // this firewall does not have a 'pattern' option because it applies to all URLs + 'lazy' => true, + 'provider' => 'database_users', + // This allows the user to login by submitting a username and password + // Reference: https://symfony.com/doc/current/security/form_login_setup.html + 'form_login' => [ + // The route name that the login form submits to + 'check_path' => 'security_login', + // The name of the route where the login form lives + // When the user tries to access a protected page, they are redirected here + 'login_path' => 'security_login', + // Secure the login form against CSRF + // Reference: https://symfony.com/doc/current/security/csrf.html + 'enable_csrf' => true, + // The page users are redirect to when there is no previous page stored in the + // session (for example when the users access directly to the login page). + 'default_target_path' => 'blog_index', + ], + // This option allows users to choose to stay logged in for longer than + // the session lasts using a cookie. Reference: https://symfony.com/doc/current/security/remember_me.html + 'remember_me' => [ + 'secret' => param('kernel.secret'), // required + 'lifetime' => 604800, // 1 week in seconds + // by default, the feature is enabled by checking a checkbox in the + // login form , uncomment the following line to always enable it. + // 'always_remember_me' => true, + ], + 'logout' => [ + // The name of the route to redirect to after logging out + 'target' => 'homepage', + // Secure the logout against CSRF + 'enable_csrf' => true, + ], + // needed because in tests we redefine the 'main' firewall to use + // HTTP Basic instead of the login form, so this firewall has + // multiple authenticators + // See https://symfony.com/doc/current/security/experimental_authenticators.html#configuring-the-authentication-entry-point + 'entry_point' => 'form_login', + ], + ], + // The ROLE_ADMIN role inherits from the ROLE_USER role + 'role_hierarchy' => [ + 'ROLE_ADMIN' => 'ROLE_USER', + ], + ], + 'when@test' => [ + // this configuration simplifies testing URLs protected by the security mechanism + // See https://symfony.com/doc/current/testing/http_authentication.html + 'security' => [ + 'password_hashers' => [ + // By default, password hashers are resource intensive and take time. This is + // important to generate secure password hashes. In tests however, secure hashes + // are not important, waste resources and increase test times. The following + // reduces the work factor to the lowest possible values. + PasswordAuthenticatedUserInterface::class => [ + 'algorithm' => 'auto', + 'cost' => 4, // Lowest possible value for bcrypt + 'time_cost' => 3, // Lowest possible value for argon + 'memory_cost' => 10, // Lowest possible value for argon + ], + ], + 'firewalls' => [ + 'main' => [ + 'http_basic' => null, + ], + ], + ], + ], +]); diff --git a/config/packages/security.yaml b/config/packages/security.yaml deleted file mode 100644 index f923e3b64..000000000 --- a/config/packages/security.yaml +++ /dev/null @@ -1,84 +0,0 @@ -security: - password_hashers: - # Our user class and the algorithm we'll use to encode passwords - # 'auto' means to let Symfony choose the best possible password hasher (Argon2 or Bcrypt) - # https://symfony.com/doc/current/security.html#registering-the-user-hashing-passwords - Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface: 'auto' - - providers: - # https://symfony.com/doc/current/security/user_provider.html - # In this example, users are stored via Doctrine in the database - # To see the users at src/App/DataFixtures/ORM/LoadFixtures.php - # To load users from somewhere else: https://symfony.com/doc/current/security/user_provider.html#creating-a-custom-user-provider - database_users: - entity: { class: App\Entity\User, property: username } - - # https://symfony.com/doc/current/security.html#a-authentication-firewalls - firewalls: - dev: - pattern: ^/(_(profiler|wdt)|css|images|js)/ - security: false - - main: - # this firewall does not have a 'pattern' option because it applies to all URLs - lazy: true - provider: database_users - - # This allows the user to login by submitting a username and password - # Reference: https://symfony.com/doc/current/security/form_login_setup.html - form_login: - # The route name that the login form submits to - check_path: security_login - # The name of the route where the login form lives - # When the user tries to access a protected page, they are redirected here - login_path: security_login - # Secure the login form against CSRF - # Reference: https://symfony.com/doc/current/security/csrf.html - enable_csrf: true - # The page users are redirect to when there is no previous page stored in the - # session (for example when the users access directly to the login page). - default_target_path: blog_index - - # This option allows users to choose to stay logged in for longer than - # the session lasts using a cookie. Reference: https://symfony.com/doc/current/security/remember_me.html - remember_me: - secret: '%kernel.secret%' # required - lifetime: 604800 # 1 week in seconds - # by default, the feature is enabled by checking a checkbox in the - # login form , uncomment the following line to always enable it. - #always_remember_me: true - - logout: - # The name of the route to redirect to after logging out - target: homepage - # Secure the logout against CSRF - enable_csrf: true - - # needed because in tests we redefine the 'main' firewall to use - # HTTP Basic instead of the login form, so this firewall has - # multiple authenticators - # See https://symfony.com/doc/current/security/experimental_authenticators.html#configuring-the-authentication-entry-point - entry_point: 'form_login' - - # The ROLE_ADMIN role inherits from the ROLE_USER role - role_hierarchy: - ROLE_ADMIN: ROLE_USER - -when@test: - # this configuration simplifies testing URLs protected by the security mechanism - # See https://symfony.com/doc/current/testing/http_authentication.html - security: - password_hashers: - # By default, password hashers are resource intensive and take time. This is - # important to generate secure password hashes. In tests however, secure hashes - # are not important, waste resources and increase test times. The following - # reduces the work factor to the lowest possible values. - Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface: - algorithm: auto - cost: 4 # Lowest possible value for bcrypt - time_cost: 3 # Lowest possible value for argon - memory_cost: 10 # Lowest possible value for argon - - firewalls: - main: - http_basic: ~ diff --git a/config/packages/translation.php b/config/packages/translation.php new file mode 100644 index 000000000..976da1641 --- /dev/null +++ b/config/packages/translation.php @@ -0,0 +1,19 @@ + [ + 'default_locale' => param('app.locale'), + 'translator' => [ + 'default_path' => param('kernel.project_dir').'/translations', + 'providers' => [ + // Uncomment and configure providers as needed + // 'crowdin' => ['dsn' => env('CROWDIN_DSN')], + // 'loco' => ['dsn' => env('LOCO_DSN')], + // 'lokalise' => ['dsn' => env('LOKALISE_DSN')], + // 'phrase' => ['dsn' => env('PHRASE_DSN')], + ], + ], + ], +]); diff --git a/config/packages/translation.yaml b/config/packages/translation.yaml deleted file mode 100644 index 399d15c16..000000000 --- a/config/packages/translation.yaml +++ /dev/null @@ -1,16 +0,0 @@ -# See https://symfony.com/doc/current/translation.html -framework: - default_locale: '%app.locale%' - translator: - # Translations are defined using the ICU Message Format - # See https://symfony.com/doc/current/translation/message_format.html - default_path: '%kernel.project_dir%/translations' - providers: -# crowdin: -# dsn: '%env(CROWDIN_DSN)%' -# loco: -# dsn: '%env(LOCO_DSN)%' -# lokalise: -# dsn: '%env(LOKALISE_DSN)%' -# phrase: -# dsn: '%env(PHRASE_DSN)%' diff --git a/config/packages/twig.php b/config/packages/twig.php new file mode 100644 index 000000000..44195f3b1 --- /dev/null +++ b/config/packages/twig.php @@ -0,0 +1,18 @@ + [ + 'file_name_pattern' => '*.twig', + 'form_themes' => [ + 'bootstrap_5_layout.html.twig', + 'form/fields.html.twig', + ], + ], + 'when@test' => [ + 'twig' => [ + 'strict_variables' => true, + ], + ], +]); diff --git a/config/packages/twig.yaml b/config/packages/twig.yaml deleted file mode 100644 index 938b1d1ca..000000000 --- a/config/packages/twig.yaml +++ /dev/null @@ -1,9 +0,0 @@ -twig: - file_name_pattern: '*.twig' - form_themes: - - 'bootstrap_5_layout.html.twig' - - 'form/fields.html.twig' - -when@test: - twig: - strict_variables: true diff --git a/config/packages/twig_component.php b/config/packages/twig_component.php new file mode 100644 index 000000000..f5b94bbb9 --- /dev/null +++ b/config/packages/twig_component.php @@ -0,0 +1,13 @@ + [ + 'anonymous_template_directory' => 'components/', + 'defaults' => [ + // Namespace & directory for components + 'App\\Twig\\Components\\' => 'components/', + ], + ], +]); diff --git a/config/packages/twig_component.yaml b/config/packages/twig_component.yaml deleted file mode 100644 index fd17ac693..000000000 --- a/config/packages/twig_component.yaml +++ /dev/null @@ -1,5 +0,0 @@ -twig_component: - anonymous_template_directory: 'components/' - defaults: - # Namespace & directory for components - App\Twig\Components\: 'components/' diff --git a/config/packages/ux_icons.php b/config/packages/ux_icons.php new file mode 100644 index 000000000..f5c83fe98 --- /dev/null +++ b/config/packages/ux_icons.php @@ -0,0 +1,16 @@ + [ + 'default_icon_attributes' => [ + 'width' => '1.2em', + 'height' => '1.2em', + 'style' => 'position: relative; top: -2px;', + ], + 'aliases' => [ + 'tabler:save-changes' => 'tabler:device-floppy', + ], + ], +]); diff --git a/config/packages/ux_icons.yaml b/config/packages/ux_icons.yaml deleted file mode 100644 index a97d4055c..000000000 --- a/config/packages/ux_icons.yaml +++ /dev/null @@ -1,8 +0,0 @@ -ux_icons: - default_icon_attributes: - width: 1.2em - height: 1.2em - style: 'position: relative; top: -2px;' - - aliases: - 'tabler:save-changes': 'tabler:device-floppy' diff --git a/config/packages/validator.php b/config/packages/validator.php new file mode 100644 index 000000000..96eebb25c --- /dev/null +++ b/config/packages/validator.php @@ -0,0 +1,25 @@ + [ + 'validation' => [ + 'enable_attributes' => true, + 'email_validation_mode' => 'html5', + + // Enables validator auto-mapping support. + // For instance, basic validation constraints will be inferred from Doctrine's metadata. + 'auto_mapping' => [ + 'App\\Entity\\' => [], + ], + ], + ], + 'when@test' => [ + 'framework' => [ + 'validation' => [ + 'not_compromised_password' => false, + ], + ], + ], +]); diff --git a/config/packages/validator.yaml b/config/packages/validator.yaml deleted file mode 100644 index 033ca41bb..000000000 --- a/config/packages/validator.yaml +++ /dev/null @@ -1,14 +0,0 @@ -framework: - validation: - enable_attributes: true - email_validation_mode: html5 - - # Enables validator auto-mapping support. - # For instance, basic validation constraints will be inferred from Doctrine's metadata. - auto_mapping: - App\Entity\: [] - -when@test: - framework: - validation: - not_compromised_password: false diff --git a/config/packages/web_profiler.php b/config/packages/web_profiler.php new file mode 100644 index 000000000..5ddc08457 --- /dev/null +++ b/config/packages/web_profiler.php @@ -0,0 +1,24 @@ + [ + 'web_profiler' => [ + 'toolbar' => true, + ], + 'framework' => [ + 'profiler' => [ + 'collect_serializer_data' => true, + ], + ], + ], + 'when@test' => [ + 'framework' => [ + 'profiler' => [ + 'collect' => false, + 'collect_serializer_data' => true, + ], + ], + ], +]); diff --git a/config/packages/web_profiler.yaml b/config/packages/web_profiler.yaml deleted file mode 100644 index 0eac3c989..000000000 --- a/config/packages/web_profiler.yaml +++ /dev/null @@ -1,13 +0,0 @@ -when@dev: - web_profiler: - toolbar: true - - framework: - profiler: - collect_serializer_data: true - -when@test: - framework: - profiler: - collect: false - collect_serializer_data: true diff --git a/config/reference.php b/config/reference.php new file mode 100644 index 000000000..140151fa8 --- /dev/null +++ b/config/reference.php @@ -0,0 +1,1339 @@ + [ + * 'App\\' => [ + * 'resource' => '../src/', + * ], + * ], + * ]); + * ``` + * + * @psalm-import-type ImportsConfig from AppReference + * @psalm-import-type ParametersConfig from AppReference + * @psalm-import-type ServicesConfig from AppReference + * + * @psalm-type FrameworkConfig = array{ + * secret?: scalar|null, + * http_method_override?: bool, // Set true to enable support for the '_method' request parameter to determine the intended HTTP method on POST requests. // Default: false + * allowed_http_method_override?: list|null, + * trust_x_sendfile_type_header?: scalar|null, // Set true to enable support for xsendfile in binary file responses. // Default: "%env(bool:default::SYMFONY_TRUST_X_SENDFILE_TYPE_HEADER)%" + * ide?: scalar|null, // Default: "%env(default::SYMFONY_IDE)%" + * test?: bool, + * default_locale?: scalar|null, // Default: "en" + * set_locale_from_accept_language?: bool, // Whether to use the Accept-Language HTTP header to set the Request locale (only when the "_locale" request attribute is not passed). // Default: false + * set_content_language_from_locale?: bool, // Whether to set the Content-Language HTTP header on the Response using the Request locale. // Default: false + * enabled_locales?: list, + * trusted_hosts?: list, + * trusted_proxies?: mixed, // Default: ["%env(default::SYMFONY_TRUSTED_PROXIES)%"] + * trusted_headers?: list, + * error_controller?: scalar|null, // Default: "error_controller" + * handle_all_throwables?: bool, // HttpKernel will handle all kinds of \Throwable. // Default: true + * csrf_protection?: bool|array{ // Default: {"enabled":null,"stateless_token_ids":[],"check_header":false,"cookie_name":"csrf-token"} + * enabled?: scalar|null, // Default: null + * stateless_token_ids?: list, + * check_header?: scalar|null, // Whether to check the CSRF token in a header in addition to a cookie when using stateless protection. // Default: false + * cookie_name?: scalar|null, // The name of the cookie to use when using stateless protection. // Default: "csrf-token" + * }, + * form?: bool|array{ // Form configuration // Default: {"enabled":true,"csrf_protection":{"enabled":null,"token_id":null,"field_name":"_token","field_attr":{"data-controller":"csrf-protection"}}} + * enabled?: bool, // Default: true + * csrf_protection?: array{ // Default: {"enabled":null,"token_id":null,"field_name":"_token","field_attr":{"data-controller":"csrf-protection"}} + * enabled?: scalar|null, // Default: null + * token_id?: scalar|null, // Default: null + * field_name?: scalar|null, // Default: "_token" + * field_attr?: array, + * }, + * }, + * http_cache?: bool|array{ // HTTP cache configuration // Default: {"enabled":false,"debug":"%kernel.debug%","private_headers":[],"skip_response_headers":[]} + * enabled?: bool, // Default: false + * debug?: bool, // Default: "%kernel.debug%" + * trace_level?: "none"|"short"|"full", + * trace_header?: scalar|null, + * default_ttl?: int, + * private_headers?: list, + * skip_response_headers?: list, + * allow_reload?: bool, + * allow_revalidate?: bool, + * stale_while_revalidate?: int, + * stale_if_error?: int, + * terminate_on_cache_hit?: bool, + * }, + * esi?: bool|array{ // ESI configuration // Default: {"enabled":false} + * enabled?: bool, // Default: false + * }, + * ssi?: bool|array{ // SSI configuration // Default: {"enabled":false} + * enabled?: bool, // Default: false + * }, + * fragments?: bool|array{ // Fragments configuration // Default: {"enabled":false,"hinclude_default_template":null,"path":"/_fragment"} + * enabled?: bool, // Default: false + * hinclude_default_template?: scalar|null, // Default: null + * path?: scalar|null, // Default: "/_fragment" + * }, + * profiler?: bool|array{ // Profiler configuration // Default: {"enabled":false,"collect":true,"collect_parameter":null,"only_exceptions":false,"only_main_requests":false,"dsn":"file:%kernel.cache_dir%/profiler","collect_serializer_data":false} + * enabled?: bool, // Default: false + * collect?: bool, // Default: true + * collect_parameter?: scalar|null, // The name of the parameter to use to enable or disable collection on a per request basis. // Default: null + * only_exceptions?: bool, // Default: false + * only_main_requests?: bool, // Default: false + * dsn?: scalar|null, // Default: "file:%kernel.cache_dir%/profiler" + * collect_serializer_data?: bool, // Enables the serializer data collector and profiler panel. // Default: false + * }, + * workflows?: bool|array{ // Default: {"enabled":false,"workflows":[]} + * enabled?: bool, // Default: false + * workflows?: array, + * definition_validators?: list, + * support_strategy?: scalar|null, + * initial_marking?: list, + * events_to_dispatch?: list|null, + * places?: list, + * }>, + * transitions: list, // Default: 1 + * }>, + * to?: list, // Default: 1 + * }>, + * weight?: int, // Default: 1 + * metadata?: list, + * }>, + * metadata?: list, + * }>, + * }, + * router?: bool|array{ // Router configuration // Default: {"enabled":false,"cache_dir":"%kernel.build_dir%","default_uri":null,"http_port":80,"https_port":443,"strict_requirements":true,"utf8":true} + * enabled?: bool, // Default: false + * resource: scalar|null, + * type?: scalar|null, + * cache_dir?: scalar|null, // Deprecated: Setting the "framework.router.cache_dir.cache_dir" configuration option is deprecated. It will be removed in version 8.0. // Default: "%kernel.build_dir%" + * default_uri?: scalar|null, // The default URI used to generate URLs in a non-HTTP context. // Default: null + * http_port?: scalar|null, // Default: 80 + * https_port?: scalar|null, // Default: 443 + * strict_requirements?: scalar|null, // set to true to throw an exception when a parameter does not match the requirements set to false to disable exceptions when a parameter does not match the requirements (and return null instead) set to null to disable parameter checks against requirements 'true' is the preferred configuration in development mode, while 'false' or 'null' might be preferred in production // Default: true + * utf8?: bool, // Default: true + * }, + * session?: bool|array{ // Session configuration // Default: {"enabled":false,"storage_factory_id":"session.storage.factory.native","cookie_secure":"auto","cookie_httponly":true,"cookie_samesite":"lax","metadata_update_threshold":0} + * enabled?: bool, // Default: false + * storage_factory_id?: scalar|null, // Default: "session.storage.factory.native" + * handler_id?: scalar|null, // Defaults to using the native session handler, or to the native *file* session handler if "save_path" is not null. + * name?: scalar|null, + * cookie_lifetime?: scalar|null, + * cookie_path?: scalar|null, + * cookie_domain?: scalar|null, + * cookie_secure?: true|false|"auto", // Default: "auto" + * cookie_httponly?: bool, // Default: true + * cookie_samesite?: null|"lax"|"strict"|"none", // Default: "lax" + * use_cookies?: bool, + * gc_divisor?: scalar|null, + * gc_probability?: scalar|null, + * gc_maxlifetime?: scalar|null, + * save_path?: scalar|null, // Defaults to "%kernel.cache_dir%/sessions" if the "handler_id" option is not null. + * metadata_update_threshold?: int, // Seconds to wait between 2 session metadata updates. // Default: 0 + * sid_length?: int<22, 256>, // Deprecated: Setting the "framework.session.sid_length.sid_length" configuration option is deprecated. It will be removed in version 8.0. No alternative is provided as PHP 8.4 has deprecated the related option. + * sid_bits_per_character?: int<4, 6>, // Deprecated: Setting the "framework.session.sid_bits_per_character.sid_bits_per_character" configuration option is deprecated. It will be removed in version 8.0. No alternative is provided as PHP 8.4 has deprecated the related option. + * }, + * request?: bool|array{ // Request configuration // Default: {"enabled":false,"formats":[]} + * enabled?: bool, // Default: false + * formats?: array>, + * }, + * assets?: bool|array{ // Assets configuration // Default: {"enabled":true,"strict_mode":false,"version_strategy":null,"version":null,"version_format":"%%s?%%s","json_manifest_path":null,"base_path":"","base_urls":[],"packages":[]} + * enabled?: bool, // Default: true + * strict_mode?: bool, // Throw an exception if an entry is missing from the manifest.json. // Default: false + * version_strategy?: scalar|null, // Default: null + * version?: scalar|null, // Default: null + * version_format?: scalar|null, // Default: "%%s?%%s" + * json_manifest_path?: scalar|null, // Default: null + * base_path?: scalar|null, // Default: "" + * base_urls?: list, + * packages?: array, + * }>, + * }, + * asset_mapper?: bool|array{ // Asset Mapper configuration // Default: {"enabled":true,"paths":[],"excluded_patterns":[],"exclude_dotfiles":true,"server":true,"public_prefix":"/assets/","missing_import_mode":"warn","extensions":[],"importmap_path":"%kernel.project_dir%/importmap.php","importmap_polyfill":"es-module-shims","importmap_script_attributes":[],"vendor_dir":"%kernel.project_dir%/assets/vendor","precompress":{"enabled":false,"formats":[],"extensions":["css","cur","eot","html","js","json","md","otc","otf","proto","rss","rtf","svg","ttc","ttf","txt","wasm","xml"]}} + * enabled?: bool, // Default: true + * paths?: array, + * excluded_patterns?: list, + * exclude_dotfiles?: bool, // If true, any files starting with "." will be excluded from the asset mapper. // Default: true + * server?: bool, // If true, a "dev server" will return the assets from the public directory (true in "debug" mode only by default). // Default: true + * public_prefix?: scalar|null, // The public path where the assets will be written to (and served from when "server" is true). // Default: "/assets/" + * missing_import_mode?: "strict"|"warn"|"ignore", // Behavior if an asset cannot be found when imported from JavaScript or CSS files - e.g. "import './non-existent.js'". "strict" means an exception is thrown, "warn" means a warning is logged, "ignore" means the import is left as-is. // Default: "warn" + * extensions?: array, + * importmap_path?: scalar|null, // The path of the importmap.php file. // Default: "%kernel.project_dir%/importmap.php" + * importmap_polyfill?: scalar|null, // The importmap name that will be used to load the polyfill. Set to false to disable. // Default: "es-module-shims" + * importmap_script_attributes?: array, + * vendor_dir?: scalar|null, // The directory to store JavaScript vendors. // Default: "%kernel.project_dir%/assets/vendor" + * precompress?: bool|array{ // Precompress assets with Brotli, Zstandard and gzip. // Default: {"enabled":false,"formats":[],"extensions":["css","cur","eot","html","js","json","md","otc","otf","proto","rss","rtf","svg","ttc","ttf","txt","wasm","xml"]} + * enabled?: bool, // Default: false + * formats?: list, + * extensions?: list, + * }, + * }, + * translator?: bool|array{ // Translator configuration // Default: {"enabled":true,"fallbacks":[],"logging":false,"formatter":"translator.formatter.default","cache_dir":"%kernel.cache_dir%/translations","default_path":"%kernel.project_dir%/translations","paths":[],"pseudo_localization":{"enabled":false,"accents":true,"expansion_factor":1.0,"brackets":true,"parse_html":false,"localizable_html_attributes":[]},"providers":[],"globals":[]} + * enabled?: bool, // Default: true + * fallbacks?: list, + * logging?: bool, // Default: false + * formatter?: scalar|null, // Default: "translator.formatter.default" + * cache_dir?: scalar|null, // Default: "%kernel.cache_dir%/translations" + * default_path?: scalar|null, // The default path used to load translations. // Default: "%kernel.project_dir%/translations" + * paths?: list, + * pseudo_localization?: bool|array{ // Default: {"enabled":false,"accents":true,"expansion_factor":1.0,"brackets":true,"parse_html":false,"localizable_html_attributes":[]} + * enabled?: bool, // Default: false + * accents?: bool, // Default: true + * expansion_factor?: float, // Default: 1.0 + * brackets?: bool, // Default: true + * parse_html?: bool, // Default: false + * localizable_html_attributes?: list, + * }, + * providers?: array, + * locales?: list, + * }>, + * globals?: array, + * domain?: string, + * }>, + * }, + * validation?: bool|array{ // Validation configuration // Default: {"enabled":true,"enable_attributes":true,"static_method":["loadValidatorMetadata"],"translation_domain":"validators","email_validation_mode":"html5","mapping":{"paths":[]},"not_compromised_password":{"enabled":true,"endpoint":null},"disable_translation":false,"auto_mapping":[]} + * enabled?: bool, // Default: true + * cache?: scalar|null, // Deprecated: Setting the "framework.validation.cache.cache" configuration option is deprecated. It will be removed in version 8.0. + * enable_attributes?: bool, // Default: true + * static_method?: list, + * translation_domain?: scalar|null, // Default: "validators" + * email_validation_mode?: "html5"|"html5-allow-no-tld"|"strict"|"loose", // Default: "html5" + * mapping?: array{ // Default: {"paths":[]} + * paths?: list, + * }, + * not_compromised_password?: bool|array{ // Default: {"enabled":true,"endpoint":null} + * enabled?: bool, // When disabled, compromised passwords will be accepted as valid. // Default: true + * endpoint?: scalar|null, // API endpoint for the NotCompromisedPassword Validator. // Default: null + * }, + * disable_translation?: bool, // Default: false + * auto_mapping?: array, + * }>, + * }, + * annotations?: bool|array{ // Default: {"enabled":false} + * enabled?: bool, // Default: false + * }, + * serializer?: bool|array{ // Serializer configuration // Default: {"enabled":false,"enable_attributes":true,"mapping":{"paths":[]},"default_context":[],"named_serializers":[]} + * enabled?: bool, // Default: false + * enable_attributes?: bool, // Default: true + * name_converter?: scalar|null, + * circular_reference_handler?: scalar|null, + * max_depth_handler?: scalar|null, + * mapping?: array{ // Default: {"paths":[]} + * paths?: list, + * }, + * default_context?: list, + * named_serializers?: array, + * include_built_in_normalizers?: bool, // Whether to include the built-in normalizers // Default: true + * include_built_in_encoders?: bool, // Whether to include the built-in encoders // Default: true + * }>, + * }, + * property_access?: bool|array{ // Property access configuration // Default: {"enabled":true,"magic_call":false,"magic_get":true,"magic_set":true,"throw_exception_on_invalid_index":false,"throw_exception_on_invalid_property_path":true} + * enabled?: bool, // Default: true + * magic_call?: bool, // Default: false + * magic_get?: bool, // Default: true + * magic_set?: bool, // Default: true + * throw_exception_on_invalid_index?: bool, // Default: false + * throw_exception_on_invalid_property_path?: bool, // Default: true + * }, + * type_info?: bool|array{ // Type info configuration // Default: {"enabled":true,"aliases":[]} + * enabled?: bool, // Default: true + * aliases?: array, + * }, + * property_info?: bool|array{ // Property info configuration // Default: {"enabled":true} + * enabled?: bool, // Default: true + * with_constructor_extractor?: bool, // Registers the constructor extractor. + * }, + * cache?: array{ // Cache configuration // Default: {"prefix_seed":"_%kernel.project_dir%.%kernel.container_class%","app":"cache.adapter.filesystem","system":"cache.adapter.system","directory":"%kernel.cache_dir%/pools/app","default_redis_provider":"redis://localhost","default_valkey_provider":"valkey://localhost","default_memcached_provider":"memcached://localhost","default_doctrine_dbal_provider":"database_connection","default_pdo_provider":null,"pools":[]} + * prefix_seed?: scalar|null, // Used to namespace cache keys when using several apps with the same shared backend. // Default: "_%kernel.project_dir%.%kernel.container_class%" + * app?: scalar|null, // App related cache pools configuration. // Default: "cache.adapter.filesystem" + * system?: scalar|null, // System related cache pools configuration. // Default: "cache.adapter.system" + * directory?: scalar|null, // Default: "%kernel.cache_dir%/pools/app" + * default_psr6_provider?: scalar|null, + * default_redis_provider?: scalar|null, // Default: "redis://localhost" + * default_valkey_provider?: scalar|null, // Default: "valkey://localhost" + * default_memcached_provider?: scalar|null, // Default: "memcached://localhost" + * default_doctrine_dbal_provider?: scalar|null, // Default: "database_connection" + * default_pdo_provider?: scalar|null, // Default: null + * pools?: array, + * tags?: scalar|null, // Default: null + * public?: bool, // Default: false + * default_lifetime?: scalar|null, // Default lifetime of the pool. + * provider?: scalar|null, // Overwrite the setting from the default provider for this adapter. + * early_expiration_message_bus?: scalar|null, + * clearer?: scalar|null, + * }>, + * }, + * php_errors?: array{ // PHP errors handling configuration // Default: {"log":true,"throw":true} + * log?: mixed, // Use the application logger instead of the PHP logger for logging PHP errors. // Default: true + * throw?: bool, // Throw PHP errors as \ErrorException instances. // Default: true + * }, + * exceptions?: array, + * web_link?: bool|array{ // Web links configuration // Default: {"enabled":false} + * enabled?: bool, // Default: false + * }, + * lock?: bool|string|array{ // Lock configuration // Default: {"enabled":false,"resources":{"default":["flock"]}} + * enabled?: bool, // Default: false + * resources?: array>, + * }, + * semaphore?: bool|string|array{ // Semaphore configuration // Default: {"enabled":false,"resources":[]} + * enabled?: bool, // Default: false + * resources?: array, + * }, + * messenger?: bool|array{ // Messenger configuration // Default: {"enabled":false,"routing":[],"serializer":{"default_serializer":"messenger.transport.native_php_serializer","symfony_serializer":{"format":"json","context":[]}},"transports":[],"failure_transport":null,"stop_worker_on_signals":[],"default_bus":null,"buses":{"messenger.bus.default":{"default_middleware":{"enabled":true,"allow_no_handlers":false,"allow_no_senders":true},"middleware":[]}}} + * enabled?: bool, // Default: false + * routing?: array, + * }>, + * serializer?: array{ // Default: {"default_serializer":"messenger.transport.native_php_serializer","symfony_serializer":{"format":"json","context":[]}} + * default_serializer?: scalar|null, // Service id to use as the default serializer for the transports. // Default: "messenger.transport.native_php_serializer" + * symfony_serializer?: array{ // Default: {"format":"json","context":[]} + * format?: scalar|null, // Serialization format for the messenger.transport.symfony_serializer service (which is not the serializer used by default). // Default: "json" + * context?: array, + * }, + * }, + * transports?: array, + * failure_transport?: scalar|null, // Transport name to send failed messages to (after all retries have failed). // Default: null + * retry_strategy?: string|array{ // Default: {"service":null,"max_retries":3,"delay":1000,"multiplier":2,"max_delay":0,"jitter":0.1} + * service?: scalar|null, // Service id to override the retry strategy entirely. // Default: null + * max_retries?: int<0, max>, // Default: 3 + * delay?: int<0, max>, // Time in ms to delay (or the initial value when multiplier is used). // Default: 1000 + * multiplier?: float, // If greater than 1, delay will grow exponentially for each retry: this delay = (delay * (multiple ^ retries)). // Default: 2 + * max_delay?: int<0, max>, // Max time in ms that a retry should ever be delayed (0 = infinite). // Default: 0 + * jitter?: float, // Randomness to apply to the delay (between 0 and 1). // Default: 0.1 + * }, + * rate_limiter?: scalar|null, // Rate limiter name to use when processing messages. // Default: null + * }>, + * failure_transport?: scalar|null, // Transport name to send failed messages to (after all retries have failed). // Default: null + * stop_worker_on_signals?: list, + * default_bus?: scalar|null, // Default: null + * buses?: array, + * }>, + * }>, + * }, + * scheduler?: bool|array{ // Scheduler configuration // Default: {"enabled":false} + * enabled?: bool, // Default: false + * }, + * disallow_search_engine_index?: bool, // Enabled by default when debug is enabled. // Default: true + * http_client?: bool|array{ // HTTP Client configuration // Default: {"enabled":true,"scoped_clients":[]} + * enabled?: bool, // Default: true + * max_host_connections?: int, // The maximum number of connections to a single host. + * default_options?: array{ + * headers?: array, + * vars?: list, + * max_redirects?: int, // The maximum number of redirects to follow. + * http_version?: scalar|null, // The default HTTP version, typically 1.1 or 2.0, leave to null for the best version. + * resolve?: array, + * proxy?: scalar|null, // The URL of the proxy to pass requests through or null for automatic detection. + * no_proxy?: scalar|null, // A comma separated list of hosts that do not require a proxy to be reached. + * timeout?: float, // The idle timeout, defaults to the "default_socket_timeout" ini parameter. + * max_duration?: float, // The maximum execution time for the request+response as a whole. + * bindto?: scalar|null, // A network interface name, IP address, a host name or a UNIX socket to bind to. + * verify_peer?: bool, // Indicates if the peer should be verified in a TLS context. + * verify_host?: bool, // Indicates if the host should exist as a certificate common name. + * cafile?: scalar|null, // A certificate authority file. + * capath?: scalar|null, // A directory that contains multiple certificate authority files. + * local_cert?: scalar|null, // A PEM formatted certificate file. + * local_pk?: scalar|null, // A private key file. + * passphrase?: scalar|null, // The passphrase used to encrypt the "local_pk" file. + * ciphers?: scalar|null, // A list of TLS ciphers separated by colons, commas or spaces (e.g. "RC3-SHA:TLS13-AES-128-GCM-SHA256"...) + * peer_fingerprint?: array{ // Associative array: hashing algorithm => hash(es). + * sha1?: mixed, + * pin-sha256?: mixed, + * md5?: mixed, + * }, + * crypto_method?: scalar|null, // The minimum version of TLS to accept; must be one of STREAM_CRYPTO_METHOD_TLSv*_CLIENT constants. + * extra?: list, + * rate_limiter?: scalar|null, // Rate limiter name to use for throttling requests. // Default: null + * caching?: bool|array{ // Caching configuration. // Default: {"enabled":false,"cache_pool":"cache.http_client","shared":true,"max_ttl":null} + * enabled?: bool, // Default: false + * cache_pool?: string, // The taggable cache pool to use for storing the responses. // Default: "cache.http_client" + * shared?: bool, // Indicates whether the cache is shared (public) or private. // Default: true + * max_ttl?: int<0, max>, // The maximum TTL (in seconds) allowed for cached responses. Null means no cap. // Default: null + * }, + * retry_failed?: bool|array{ // Default: {"enabled":false,"retry_strategy":null,"http_codes":[],"max_retries":3,"delay":1000,"multiplier":2,"max_delay":0,"jitter":0.1} + * enabled?: bool, // Default: false + * retry_strategy?: scalar|null, // service id to override the retry strategy. // Default: null + * http_codes?: array, + * methods?: list, + * }>, + * max_retries?: int<0, max>, // Default: 3 + * delay?: int<0, max>, // Time in ms to delay (or the initial value when multiplier is used). // Default: 1000 + * multiplier?: float, // If greater than 1, delay will grow exponentially for each retry: delay * (multiple ^ retries). // Default: 2 + * max_delay?: int<0, max>, // Max time in ms that a retry should ever be delayed (0 = infinite). // Default: 0 + * jitter?: float, // Randomness in percent (between 0 and 1) to apply to the delay. // Default: 0.1 + * }, + * }, + * mock_response_factory?: scalar|null, // The id of the service that should generate mock responses. It should be either an invokable or an iterable. + * scoped_clients?: array, + * headers?: array, + * max_redirects?: int, // The maximum number of redirects to follow. + * http_version?: scalar|null, // The default HTTP version, typically 1.1 or 2.0, leave to null for the best version. + * resolve?: array, + * proxy?: scalar|null, // The URL of the proxy to pass requests through or null for automatic detection. + * no_proxy?: scalar|null, // A comma separated list of hosts that do not require a proxy to be reached. + * timeout?: float, // The idle timeout, defaults to the "default_socket_timeout" ini parameter. + * max_duration?: float, // The maximum execution time for the request+response as a whole. + * bindto?: scalar|null, // A network interface name, IP address, a host name or a UNIX socket to bind to. + * verify_peer?: bool, // Indicates if the peer should be verified in a TLS context. + * verify_host?: bool, // Indicates if the host should exist as a certificate common name. + * cafile?: scalar|null, // A certificate authority file. + * capath?: scalar|null, // A directory that contains multiple certificate authority files. + * local_cert?: scalar|null, // A PEM formatted certificate file. + * local_pk?: scalar|null, // A private key file. + * passphrase?: scalar|null, // The passphrase used to encrypt the "local_pk" file. + * ciphers?: scalar|null, // A list of TLS ciphers separated by colons, commas or spaces (e.g. "RC3-SHA:TLS13-AES-128-GCM-SHA256"...). + * peer_fingerprint?: array{ // Associative array: hashing algorithm => hash(es). + * sha1?: mixed, + * pin-sha256?: mixed, + * md5?: mixed, + * }, + * crypto_method?: scalar|null, // The minimum version of TLS to accept; must be one of STREAM_CRYPTO_METHOD_TLSv*_CLIENT constants. + * extra?: list, + * rate_limiter?: scalar|null, // Rate limiter name to use for throttling requests. // Default: null + * caching?: bool|array{ // Caching configuration. // Default: {"enabled":false,"cache_pool":"cache.http_client","shared":true,"max_ttl":null} + * enabled?: bool, // Default: false + * cache_pool?: string, // The taggable cache pool to use for storing the responses. // Default: "cache.http_client" + * shared?: bool, // Indicates whether the cache is shared (public) or private. // Default: true + * max_ttl?: int<0, max>, // The maximum TTL (in seconds) allowed for cached responses. Null means no cap. // Default: null + * }, + * retry_failed?: bool|array{ // Default: {"enabled":false,"retry_strategy":null,"http_codes":[],"max_retries":3,"delay":1000,"multiplier":2,"max_delay":0,"jitter":0.1} + * enabled?: bool, // Default: false + * retry_strategy?: scalar|null, // service id to override the retry strategy. // Default: null + * http_codes?: array, + * methods?: list, + * }>, + * max_retries?: int<0, max>, // Default: 3 + * delay?: int<0, max>, // Time in ms to delay (or the initial value when multiplier is used). // Default: 1000 + * multiplier?: float, // If greater than 1, delay will grow exponentially for each retry: delay * (multiple ^ retries). // Default: 2 + * max_delay?: int<0, max>, // Max time in ms that a retry should ever be delayed (0 = infinite). // Default: 0 + * jitter?: float, // Randomness in percent (between 0 and 1) to apply to the delay. // Default: 0.1 + * }, + * }>, + * }, + * mailer?: bool|array{ // Mailer configuration // Default: {"enabled":true,"message_bus":null,"dsn":null,"transports":[],"headers":[],"dkim_signer":{"enabled":false,"key":"","domain":"","select":"","passphrase":"","options":[]},"smime_signer":{"enabled":false,"key":"","certificate":"","passphrase":null,"extra_certificates":null,"sign_options":null},"smime_encrypter":{"enabled":false,"repository":"","cipher":null}} + * enabled?: bool, // Default: true + * message_bus?: scalar|null, // The message bus to use. Defaults to the default bus if the Messenger component is installed. // Default: null + * dsn?: scalar|null, // Default: null + * transports?: array, + * envelope?: array{ // Mailer Envelope configuration + * sender?: scalar|null, + * recipients?: list, + * allowed_recipients?: list, + * }, + * headers?: array, + * dkim_signer?: bool|array{ // DKIM signer configuration // Default: {"enabled":false,"key":"","domain":"","select":"","passphrase":"","options":[]} + * enabled?: bool, // Default: false + * key?: scalar|null, // Key content, or path to key (in PEM format with the `file://` prefix) // Default: "" + * domain?: scalar|null, // Default: "" + * select?: scalar|null, // Default: "" + * passphrase?: scalar|null, // The private key passphrase // Default: "" + * options?: array, + * }, + * smime_signer?: bool|array{ // S/MIME signer configuration // Default: {"enabled":false,"key":"","certificate":"","passphrase":null,"extra_certificates":null,"sign_options":null} + * enabled?: bool, // Default: false + * key?: scalar|null, // Path to key (in PEM format) // Default: "" + * certificate?: scalar|null, // Path to certificate (in PEM format without the `file://` prefix) // Default: "" + * passphrase?: scalar|null, // The private key passphrase // Default: null + * extra_certificates?: scalar|null, // Default: null + * sign_options?: int, // Default: null + * }, + * smime_encrypter?: bool|array{ // S/MIME encrypter configuration // Default: {"enabled":false,"repository":"","cipher":null} + * enabled?: bool, // Default: false + * repository?: scalar|null, // S/MIME certificate repository service. This service shall implement the `Symfony\Component\Mailer\EventListener\SmimeCertificateRepositoryInterface`. // Default: "" + * cipher?: int, // A set of algorithms used to encrypt the message // Default: null + * }, + * }, + * secrets?: bool|array{ // Default: {"enabled":true,"vault_directory":"%kernel.project_dir%/config/secrets/%kernel.runtime_environment%","local_dotenv_file":"%kernel.project_dir%/.env.%kernel.runtime_environment%.local","decryption_env_var":"base64:default::SYMFONY_DECRYPTION_SECRET"} + * enabled?: bool, // Default: true + * vault_directory?: scalar|null, // Default: "%kernel.project_dir%/config/secrets/%kernel.runtime_environment%" + * local_dotenv_file?: scalar|null, // Default: "%kernel.project_dir%/.env.%kernel.runtime_environment%.local" + * decryption_env_var?: scalar|null, // Default: "base64:default::SYMFONY_DECRYPTION_SECRET" + * }, + * notifier?: bool|array{ // Notifier configuration // Default: {"enabled":false,"message_bus":null,"chatter_transports":[],"texter_transports":[],"notification_on_failed_messages":false,"channel_policy":[],"admin_recipients":[]} + * enabled?: bool, // Default: false + * message_bus?: scalar|null, // The message bus to use. Defaults to the default bus if the Messenger component is installed. // Default: null + * chatter_transports?: array, + * texter_transports?: array, + * notification_on_failed_messages?: bool, // Default: false + * channel_policy?: array>, + * admin_recipients?: list, + * }, + * rate_limiter?: bool|array{ // Rate limiter configuration // Default: {"enabled":false,"limiters":[]} + * enabled?: bool, // Default: false + * limiters?: array, + * limit?: int, // The maximum allowed hits in a fixed interval or burst. + * interval?: scalar|null, // Configures the fixed interval if "policy" is set to "fixed_window" or "sliding_window". The value must be a number followed by "second", "minute", "hour", "day", "week" or "month" (or their plural equivalent). + * rate?: array{ // Configures the fill rate if "policy" is set to "token_bucket". + * interval?: scalar|null, // Configures the rate interval. The value must be a number followed by "second", "minute", "hour", "day", "week" or "month" (or their plural equivalent). + * amount?: int, // Amount of tokens to add each interval. // Default: 1 + * }, + * }>, + * }, + * uid?: bool|array{ // Uid configuration // Default: {"enabled":false,"default_uuid_version":7,"name_based_uuid_version":5,"time_based_uuid_version":7} + * enabled?: bool, // Default: false + * default_uuid_version?: 7|6|4|1, // Default: 7 + * name_based_uuid_version?: 5|3, // Default: 5 + * name_based_uuid_namespace?: scalar|null, + * time_based_uuid_version?: 7|6|1, // Default: 7 + * time_based_uuid_node?: scalar|null, + * }, + * html_sanitizer?: bool|array{ // HtmlSanitizer configuration // Default: {"enabled":true,"sanitizers":[]} + * enabled?: bool, // Default: true + * sanitizers?: array, + * block_elements?: list, + * drop_elements?: list, + * allow_attributes?: array, + * drop_attributes?: array, + * force_attributes?: array>, + * force_https_urls?: bool, // Transforms URLs using the HTTP scheme to use the HTTPS scheme instead. // Default: false + * allowed_link_schemes?: list, + * allowed_link_hosts?: list|null, + * allow_relative_links?: bool, // Allows relative URLs to be used in links href attributes. // Default: false + * allowed_media_schemes?: list, + * allowed_media_hosts?: list|null, + * allow_relative_medias?: bool, // Allows relative URLs to be used in media source attributes (img, audio, video, ...). // Default: false + * with_attribute_sanitizers?: list, + * without_attribute_sanitizers?: list, + * max_input_length?: int, // The maximum length allowed for the sanitized input. // Default: 0 + * }>, + * }, + * webhook?: bool|array{ // Webhook configuration // Default: {"enabled":false,"message_bus":"messenger.default_bus","routing":[]} + * enabled?: bool, // Default: false + * message_bus?: scalar|null, // The message bus to use. // Default: "messenger.default_bus" + * routing?: array, + * }, + * remote-event?: bool|array{ // RemoteEvent configuration // Default: {"enabled":false} + * enabled?: bool, // Default: false + * }, + * json_streamer?: bool|array{ // JSON streamer configuration // Default: {"enabled":false} + * enabled?: bool, // Default: false + * }, + * } + * @psalm-type SecurityConfig = array{ + * access_denied_url?: scalar|null, // Default: null + * session_fixation_strategy?: "none"|"migrate"|"invalidate", // Default: "migrate" + * hide_user_not_found?: bool, // Deprecated: The "hide_user_not_found" option is deprecated and will be removed in 8.0. Use the "expose_security_errors" option instead. + * expose_security_errors?: \Symfony\Component\Security\Http\Authentication\ExposeSecurityLevel::None|\Symfony\Component\Security\Http\Authentication\ExposeSecurityLevel::AccountStatus|\Symfony\Component\Security\Http\Authentication\ExposeSecurityLevel::All, // Default: "none" + * erase_credentials?: bool, // Default: true + * access_decision_manager?: array{ // Default: {"allow_if_all_abstain":false,"allow_if_equal_granted_denied":true} + * strategy?: "affirmative"|"consensus"|"unanimous"|"priority", + * service?: scalar|null, + * strategy_service?: scalar|null, + * allow_if_all_abstain?: bool, // Default: false + * allow_if_equal_granted_denied?: bool, // Default: true + * }, + * password_hashers?: array, + * hash_algorithm?: scalar|null, // Name of hashing algorithm for PBKDF2 (i.e. sha256, sha512, etc..) See hash_algos() for a list of supported algorithms. // Default: "sha512" + * key_length?: scalar|null, // Default: 40 + * ignore_case?: bool, // Default: false + * encode_as_base64?: bool, // Default: true + * iterations?: scalar|null, // Default: 5000 + * cost?: int<4, 31>, // Default: null + * memory_cost?: scalar|null, // Default: null + * time_cost?: scalar|null, // Default: null + * id?: scalar|null, + * }>, + * providers?: array, + * }, + * }>, + * firewalls: array, + * security?: bool, // Default: true + * user_checker?: scalar|null, // The UserChecker to use when authenticating users in this firewall. // Default: "security.user_checker" + * request_matcher?: scalar|null, + * access_denied_url?: scalar|null, + * access_denied_handler?: scalar|null, + * entry_point?: scalar|null, // An enabled authenticator name or a service id that implements "Symfony\Component\Security\Http\EntryPoint\AuthenticationEntryPointInterface". + * provider?: scalar|null, + * stateless?: bool, // Default: false + * lazy?: bool, // Default: false + * context?: scalar|null, + * logout?: array{ + * enable_csrf?: bool|null, // Default: null + * csrf_token_id?: scalar|null, // Default: "logout" + * csrf_parameter?: scalar|null, // Default: "_csrf_token" + * csrf_token_manager?: scalar|null, + * path?: scalar|null, // Default: "/logout" + * target?: scalar|null, // Default: "/" + * invalidate_session?: bool, // Default: true + * clear_site_data?: list<"*"|"cache"|"cookies"|"storage"|"executionContexts">, + * delete_cookies?: array, + * }, + * switch_user?: array{ + * provider?: scalar|null, + * parameter?: scalar|null, // Default: "_switch_user" + * role?: scalar|null, // Default: "ROLE_ALLOWED_TO_SWITCH" + * target_route?: scalar|null, // Default: null + * }, + * required_badges?: list, + * }>, + * access_control?: list, // Default: null + * ips?: list, + * attributes?: array, + * route?: scalar|null, // Default: null + * methods?: list, + * allow_if?: scalar|null, // Default: null + * roles?: list, + * }>, + * role_hierarchy?: array>, + * } + * @psalm-type DoctrineConfig = array{ + * dbal?: array{ + * default_connection?: scalar|null, + * types?: array, + * driver_schemes?: array, + * connections?: array, // Default: 600 + * driver_class?: scalar|null, + * wrapper_class?: scalar|null, + * keep_slave?: bool, // Deprecated: The "keep_slave" configuration key is deprecated since doctrine-bundle 2.2. Use the "keep_replica" configuration key instead. + * keep_replica?: bool, + * options?: array, + * mapping_types?: array, + * default_table_options?: array, + * schema_manager_factory?: scalar|null, // Default: "doctrine.dbal.default_schema_manager_factory" + * result_cache?: scalar|null, + * slaves?: array, + * replicas?: array, + * }>, + * }, + * orm?: array{ + * default_entity_manager?: scalar|null, + * auto_generate_proxy_classes?: scalar|null, // Auto generate mode possible values are: "NEVER", "ALWAYS", "FILE_NOT_EXISTS", "EVAL", "FILE_NOT_EXISTS_OR_CHANGED", this option is ignored when the "enable_native_lazy_objects" option is true // Default: false + * enable_lazy_ghost_objects?: bool, // Enables the new implementation of proxies based on lazy ghosts instead of using the legacy implementation // Default: true + * enable_native_lazy_objects?: bool, // Enables the new native implementation of PHP lazy objects instead of generated proxies // Default: false + * proxy_dir?: scalar|null, // Configures the path where generated proxy classes are saved when using non-native lazy objects, this option is ignored when the "enable_native_lazy_objects" option is true // Default: "%kernel.build_dir%/doctrine/orm/Proxies" + * proxy_namespace?: scalar|null, // Defines the root namespace for generated proxy classes when using non-native lazy objects, this option is ignored when the "enable_native_lazy_objects" option is true // Default: "Proxies" + * controller_resolver?: bool|array{ // Default: {"enabled":true,"auto_mapping":null,"evict_cache":false} + * enabled?: bool, // Default: true + * auto_mapping?: bool|null, // Set to false to disable using route placeholders as lookup criteria when the primary key doesn't match the argument name // Default: null + * evict_cache?: bool, // Set to true to fetch the entity from the database instead of using the cache, if any // Default: false + * }, + * entity_managers?: array, + * }>, + * }>, + * }, + * connection?: scalar|null, + * class_metadata_factory_name?: scalar|null, // Default: "Doctrine\\ORM\\Mapping\\ClassMetadataFactory" + * default_repository_class?: scalar|null, // Default: "Doctrine\\ORM\\EntityRepository" + * auto_mapping?: scalar|null, // Default: false + * naming_strategy?: scalar|null, // Default: "doctrine.orm.naming_strategy.default" + * quote_strategy?: scalar|null, // Default: "doctrine.orm.quote_strategy.default" + * typed_field_mapper?: scalar|null, // Default: "doctrine.orm.typed_field_mapper.default" + * entity_listener_resolver?: scalar|null, // Default: null + * fetch_mode_subselect_batch_size?: scalar|null, + * repository_factory?: scalar|null, // Default: "doctrine.orm.container_repository_factory" + * schema_ignore_classes?: list, + * report_fields_where_declared?: bool, // Set to "true" to opt-in to the new mapping driver mode that was added in Doctrine ORM 2.16 and will be mandatory in ORM 3.0. See https://github.com/doctrine/orm/pull/10455. // Default: true + * validate_xml_mapping?: bool, // Set to "true" to opt-in to the new mapping driver mode that was added in Doctrine ORM 2.14 and will be mandatory in ORM 3.0. See https://github.com/doctrine/orm/pull/6728. // Default: false + * second_level_cache?: array{ + * region_cache_driver?: string|array{ // Default: {"type":null} + * type?: scalar|null, // Default: null + * id?: scalar|null, + * pool?: scalar|null, + * }, + * region_lock_lifetime?: scalar|null, // Default: 60 + * log_enabled?: bool, // Default: true + * region_lifetime?: scalar|null, // Default: 3600 + * enabled?: bool, // Default: true + * factory?: scalar|null, + * regions?: array, + * loggers?: array, + * }, + * hydrators?: array, + * mappings?: array, + * dql?: array{ + * string_functions?: array, + * numeric_functions?: array, + * datetime_functions?: array, + * }, + * filters?: array, + * }>, + * identity_generation_preferences?: array, + * }>, + * resolve_target_entities?: array, + * }, + * } + * @psalm-type MonologConfig = array{ + * use_microseconds?: scalar|null, // Default: true + * channels?: list, + * handlers?: array, + * excluded_http_codes?: list, + * }>, + * accepted_levels?: list, + * min_level?: scalar|null, // Default: "DEBUG" + * max_level?: scalar|null, // Default: "EMERGENCY" + * buffer_size?: scalar|null, // Default: 0 + * flush_on_overflow?: bool, // Default: false + * handler?: scalar|null, + * url?: scalar|null, + * exchange?: scalar|null, + * exchange_name?: scalar|null, // Default: "log" + * room?: scalar|null, + * message_format?: scalar|null, // Default: "text" + * api_version?: scalar|null, // Default: null + * channel?: scalar|null, // Default: null + * bot_name?: scalar|null, // Default: "Monolog" + * use_attachment?: scalar|null, // Default: true + * use_short_attachment?: scalar|null, // Default: false + * include_extra?: scalar|null, // Default: false + * icon_emoji?: scalar|null, // Default: null + * webhook_url?: scalar|null, + * team?: scalar|null, + * notify?: scalar|null, // Default: false + * nickname?: scalar|null, // Default: "Monolog" + * token?: scalar|null, + * region?: scalar|null, + * source?: scalar|null, + * use_ssl?: bool, // Default: true + * user?: mixed, + * title?: scalar|null, // Default: null + * host?: scalar|null, // Default: null + * port?: scalar|null, // Default: 514 + * config?: list, + * members?: list, + * connection_string?: scalar|null, + * timeout?: scalar|null, + * time?: scalar|null, // Default: 60 + * deduplication_level?: scalar|null, // Default: 400 + * store?: scalar|null, // Default: null + * connection_timeout?: scalar|null, + * persistent?: bool, + * dsn?: scalar|null, + * hub_id?: scalar|null, // Default: null + * client_id?: scalar|null, // Default: null + * auto_log_stacks?: scalar|null, // Default: false + * release?: scalar|null, // Default: null + * environment?: scalar|null, // Default: null + * message_type?: scalar|null, // Default: 0 + * parse_mode?: scalar|null, // Default: null + * disable_webpage_preview?: bool|null, // Default: null + * disable_notification?: bool|null, // Default: null + * split_long_messages?: bool, // Default: false + * delay_between_messages?: bool, // Default: false + * factor?: int<1, max>, // Default: 1 + * tags?: list, + * console_formater_options?: mixed, // Deprecated: "monolog.handlers..console_formater_options.console_formater_options" is deprecated, use "monolog.handlers..console_formater_options.console_formatter_options" instead. + * console_formatter_options?: mixed, // Default: [] + * formatter?: scalar|null, + * nested?: bool, // Default: false + * publisher?: string|array{ + * id?: scalar|null, + * hostname?: scalar|null, + * port?: scalar|null, // Default: 12201 + * chunk_size?: scalar|null, // Default: 1420 + * }, + * mongo?: string|array{ + * id?: scalar|null, + * host?: scalar|null, + * port?: scalar|null, // Default: 27017 + * user?: scalar|null, + * pass?: scalar|null, + * database?: scalar|null, // Default: "monolog" + * collection?: scalar|null, // Default: "logs" + * }, + * elasticsearch?: string|array{ + * id?: scalar|null, + * host?: scalar|null, + * port?: scalar|null, // Default: 9200 + * transport?: scalar|null, // Default: "Http" + * user?: scalar|null, // Default: null + * password?: scalar|null, // Default: null + * }, + * index?: scalar|null, // Default: "monolog" + * document_type?: scalar|null, // Default: "logs" + * ignore_error?: scalar|null, // Default: false + * redis?: string|array{ + * id?: scalar|null, + * host?: scalar|null, + * password?: scalar|null, // Default: null + * port?: scalar|null, // Default: 6379 + * database?: scalar|null, // Default: 0 + * key_name?: scalar|null, // Default: "monolog_redis" + * }, + * predis?: string|array{ + * id?: scalar|null, + * host?: scalar|null, + * }, + * from_email?: scalar|null, + * to_email?: list, + * subject?: scalar|null, + * content_type?: scalar|null, // Default: null + * headers?: list, + * mailer?: scalar|null, // Default: null + * email_prototype?: string|array{ + * id: scalar|null, + * method?: scalar|null, // Default: null + * }, + * lazy?: bool, // Default: true + * verbosity_levels?: array{ + * VERBOSITY_QUIET?: scalar|null, // Default: "ERROR" + * VERBOSITY_NORMAL?: scalar|null, // Default: "WARNING" + * VERBOSITY_VERBOSE?: scalar|null, // Default: "NOTICE" + * VERBOSITY_VERY_VERBOSE?: scalar|null, // Default: "INFO" + * VERBOSITY_DEBUG?: scalar|null, // Default: "DEBUG" + * }, + * channels?: string|array{ + * type?: scalar|null, + * elements?: list, + * }, + * }>, + * } + * @psalm-type TwigConfig = array{ + * form_themes?: list, + * globals?: array, + * autoescape_service?: scalar|null, // Default: null + * autoescape_service_method?: scalar|null, // Default: null + * base_template_class?: scalar|null, // Deprecated: The child node "base_template_class" at path "twig.base_template_class" is deprecated. + * cache?: scalar|null, // Default: true + * charset?: scalar|null, // Default: "%kernel.charset%" + * debug?: bool, // Default: "%kernel.debug%" + * strict_variables?: bool, // Default: "%kernel.debug%" + * auto_reload?: scalar|null, + * optimizations?: int<-1, max>, + * default_path?: scalar|null, // The default path used to load templates. // Default: "%kernel.project_dir%/templates" + * file_name_pattern?: list, + * paths?: array, + * date?: array{ // The default format options used by the date filter. // Default: {"format":"F j, Y H:i","interval_format":"%d days","timezone":null} + * format?: scalar|null, // Default: "F j, Y H:i" + * interval_format?: scalar|null, // Default: "%d days" + * timezone?: scalar|null, // The timezone used when formatting dates, when set to null, the timezone returned by date_default_timezone_get() is used. // Default: null + * }, + * number_format?: array{ // The default format options for the number_format filter. // Default: {"decimals":0,"decimal_point":".","thousands_separator":","} + * decimals?: int, // Default: 0 + * decimal_point?: scalar|null, // Default: "." + * thousands_separator?: scalar|null, // Default: "," + * }, + * mailer?: array{ + * html_to_text_converter?: scalar|null, // A service implementing the "Symfony\Component\Mime\HtmlToTextConverter\HtmlToTextConverterInterface". // Default: null + * }, + * } + * @psalm-type DebugConfig = array{ + * max_items?: int<-1, max>, // Max number of displayed items past the first level, -1 means no limit. // Default: 2500 + * min_depth?: int<0, max>, // Minimum tree depth to clone all the items, 1 is default. // Default: 1 + * max_string_length?: int<-1, max>, // Max length of displayed strings, -1 means no limit. // Default: -1 + * dump_destination?: scalar|null, // A stream URL where dumps should be written to. // Default: null + * theme?: "dark"|"light", // Changes the color of the dump() output when rendered directly on the templating. "dark" (default) or "light". // Default: "dark" + * } + * @psalm-type WebProfilerConfig = array{ + * toolbar?: bool|array{ // Profiler toolbar configuration // Default: {"enabled":false,"ajax_replace":false} + * enabled?: bool, // Default: false + * ajax_replace?: bool, // Replace toolbar on AJAX requests // Default: false + * }, + * intercept_redirects?: bool, // Default: false + * excluded_ajax_paths?: scalar|null, // Default: "^/((index|app(_[\\w]+)?)\\.php/)?_wdt" + * } + * @psalm-type DamaDoctrineTestConfig = array{ // Default: {"enable_static_connection":true,"enable_static_meta_data_cache":true,"enable_static_query_cache":true,"connection_keys":[]} + * enable_static_connection?: mixed, // Default: true + * enable_static_meta_data_cache?: bool, // Default: true + * enable_static_query_cache?: bool, // Default: true + * connection_keys?: list, + * } + * @psalm-type DoctrineMigrationsConfig = array{ + * migrations_paths?: array, + * services?: array, + * factories?: array, + * storage?: array{ // Storage to use for migration status metadata. // Default: {"table_storage":{"table_name":null,"version_column_name":null,"version_column_length":null,"executed_at_column_name":null,"execution_time_column_name":null}} + * table_storage?: array{ // The default metadata storage, implemented as a table in the database. // Default: {"table_name":null,"version_column_name":null,"version_column_length":null,"executed_at_column_name":null,"execution_time_column_name":null} + * table_name?: scalar|null, // Default: null + * version_column_name?: scalar|null, // Default: null + * version_column_length?: scalar|null, // Default: null + * executed_at_column_name?: scalar|null, // Default: null + * execution_time_column_name?: scalar|null, // Default: null + * }, + * }, + * migrations?: list, + * connection?: scalar|null, // Connection name to use for the migrations database. // Default: null + * em?: scalar|null, // Entity manager name to use for the migrations database (available when doctrine/orm is installed). // Default: null + * all_or_nothing?: scalar|null, // Run all migrations in a transaction. // Default: false + * check_database_platform?: scalar|null, // Adds an extra check in the generated migrations to allow execution only on the same platform as they were initially generated on. // Default: true + * custom_template?: scalar|null, // Custom template path for generated migration classes. // Default: null + * organize_migrations?: scalar|null, // Organize migrations mode. Possible values are: "BY_YEAR", "BY_YEAR_AND_MONTH", false // Default: false + * enable_profiler?: bool, // Whether or not to enable the profiler collector to calculate and visualize migration status. This adds some queries overhead. // Default: false + * transactional?: bool, // Whether or not to wrap migrations in a single transaction. // Default: true + * } + * @psalm-type MakerConfig = array{ + * root_namespace?: scalar|null, // Default: "App" + * generate_final_classes?: bool, // Default: true + * generate_final_entities?: bool, // Default: false + * } + * @psalm-type TwigExtraConfig = array{ + * cache?: bool|array{ // Default: {"enabled":false} + * enabled?: bool, // Default: false + * }, + * html?: bool|array{ // Default: {"enabled":false} + * enabled?: bool, // Default: false + * }, + * markdown?: bool|array{ // Default: {"enabled":true} + * enabled?: bool, // Default: true + * }, + * intl?: bool|array{ // Default: {"enabled":true} + * enabled?: bool, // Default: true + * }, + * cssinliner?: bool|array{ // Default: {"enabled":false} + * enabled?: bool, // Default: false + * }, + * inky?: bool|array{ // Default: {"enabled":false} + * enabled?: bool, // Default: false + * }, + * string?: bool|array{ // Default: {"enabled":false} + * enabled?: bool, // Default: false + * }, + * commonmark?: array{ + * renderer?: array{ // Array of options for rendering HTML. + * block_separator?: scalar|null, + * inner_separator?: scalar|null, + * soft_break?: scalar|null, + * }, + * html_input?: "strip"|"allow"|"escape", // How to handle HTML input. + * allow_unsafe_links?: bool, // Remove risky link and image URLs by setting this to false. // Default: true + * max_nesting_level?: int, // The maximum nesting level for blocks. // Default: 9223372036854775807 + * slug_normalizer?: array{ // Array of options for configuring how URL-safe slugs are created. + * instance?: mixed, + * max_length?: int, // Default: 255 + * unique?: mixed, + * }, + * commonmark?: array{ // Array of options for configuring the CommonMark core extension. + * enable_em?: bool, // Default: true + * enable_strong?: bool, // Default: true + * use_asterisk?: bool, // Default: true + * use_underscore?: bool, // Default: true + * unordered_list_markers?: list, + * }, + * ... + * }, + * } + * @psalm-type TwigComponentConfig = array{ + * defaults?: array, + * anonymous_template_directory?: scalar|null, // Defaults to `components` + * profiler?: bool, // Enables the profiler for Twig Component (in debug mode) // Default: "%kernel.debug%" + * controllers_json?: scalar|null, // Deprecated: The "twig_component.controllers_json" config option is deprecated, and will be removed in 3.0. // Default: null + * } + * @psalm-type LiveComponentConfig = array{ // Default: {"secret":"%kernel.secret%"} + * secret?: scalar|null, // The secret used to compute fingerprints and checksums // Default: "%kernel.secret%" + * } + * @psalm-type StimulusConfig = array{ + * controller_paths?: list, + * controllers_json?: scalar|null, // Default: "%kernel.project_dir%/assets/controllers.json" + * } + * @psalm-type SymfonycastsSassConfig = array{ + * root_sass?: list, + * binary?: scalar|null, // The Sass binary to use // Default: null + * sass_options?: array{ // Default: {"style":"expanded","source_map":true,"embed_source_map":"%kernel.debug%","load_path":[]} + * style?: "compressed"|"expanded", // The style of the generated CSS: compressed or expanded. // Default: "expanded" + * charset?: bool, // Whether to include the charset declaration in the generated Sass. + * error_css?: bool, // Emit a CSS file when an error occurs. + * source_map?: bool, // Whether to generate source maps. // Default: true + * embed_sources?: bool, // Embed source file contents in source maps. + * embed_source_map?: bool, // Embed source map contents in CSS. // Default: "%kernel.debug%" + * load_path?: list, + * quiet?: bool, // Don't print warnings. + * quiet_deps?: bool, // Don't print compiler warnings from dependencies. + * stop_on_error?: bool, // Don't compile more files once an error is encountered. + * trace?: bool, // Print full Dart stack traces for exceptions. + * }, + * embed_sourcemap?: bool|null, // Deprecated: Option "embed_sourcemap" at "symfonycasts_sass.embed_sourcemap" is deprecated. Use "sass_options.embed_source_map" instead". // Default: null + * } + * @psalm-type UxIconsConfig = array{ + * icon_dir?: scalar|null, // The local directory where icons are stored. // Default: "%kernel.project_dir%/assets/icons" + * default_icon_attributes?: mixed, // Default attributes to add to all icons. // Default: {"fill":"currentColor"} + * icon_sets?: array, + * }>, + * aliases?: list, + * iconify?: bool|array{ // Configuration for the remote icon service. // Default: {"enabled":true,"on_demand":true,"endpoint":"https://api.iconify.design"} + * enabled?: bool, // Default: true + * on_demand?: bool, // Whether to download icons "on demand". // Default: true + * endpoint?: scalar|null, // The endpoint for the Iconify icons API. // Default: "https://api.iconify.design" + * }, + * ignore_not_found?: bool, // Ignore error when an icon is not found. Set to 'true' to fail silently. // Default: false + * } + */ +final class App extends AppReference +{ + /** + * @param array{ + * imports?: ImportsConfig, + * parameters?: ParametersConfig, + * services?: ServicesConfig, + * framework?: FrameworkConfig, + * security?: SecurityConfig, + * doctrine?: DoctrineConfig, + * monolog?: MonologConfig, + * twig?: TwigConfig, + * debug?: DebugConfig, + * web_profiler?: WebProfilerConfig, + * dama_doctrine_test?: DamaDoctrineTestConfig, + * doctrine_migrations?: DoctrineMigrationsConfig, + * maker?: MakerConfig, + * twig_extra?: TwigExtraConfig, + * twig_component?: TwigComponentConfig, + * live_component?: LiveComponentConfig, + * stimulus?: StimulusConfig, + * symfonycasts_sass?: SymfonycastsSassConfig, + * ux_icons?: UxIconsConfig, + * ...<'when@dev'|'when@prod'|'when@test', array{ + * imports?: ImportsConfig, + * parameters?: ParametersConfig, + * services?: ServicesConfig, + * framework?: FrameworkConfig, + * security?: SecurityConfig, + * doctrine?: DoctrineConfig, + * monolog?: MonologConfig, + * twig?: TwigConfig, + * debug?: DebugConfig, + * web_profiler?: WebProfilerConfig, + * dama_doctrine_test?: DamaDoctrineTestConfig, + * doctrine_migrations?: DoctrineMigrationsConfig, + * maker?: MakerConfig, + * twig_extra?: TwigExtraConfig, + * twig_component?: TwigComponentConfig, + * live_component?: LiveComponentConfig, + * stimulus?: StimulusConfig, + * symfonycasts_sass?: SymfonycastsSassConfig, + * ux_icons?: UxIconsConfig, + * }> + * } $config + */ + public static function config(array $config): array + { + return parent::config($config); + } +} + +namespace Symfony\Component\Routing\Loader\Configurator; + +/** + * This class provides array-shapes for configuring the routes of an application. + * + * All this is auto-generated and is for apps only. Bundles SHOULD NOT rely on it. + * + * Example: + * + * ```php + * // config/routes.php + * namespace Symfony\Component\Routing\Loader\Configurator; + * + * return Routes::config([ + * 'controllers' => [ + * 'resource' => 'attributes', + * 'type' => 'tagged_services', + * ], + * ]); + * ``` + * + * @psalm-import-type RouteConfig from RoutesReference + * @psalm-import-type ImportConfig from RoutesReference + * @psalm-import-type AliasConfig from RoutesReference + * + * @psalm-type RoutesConfig = array{ + * 'when@dev'?: array, + * 'when@prod'?: array, + * 'when@test'?: array, + * ... + * } + */ +final class Routes extends RoutesReference +{ + /** + * @param RoutesConfig $config + * + * @return RoutesConfig + */ + public static function config(array $config): array + { + return parent::config($config); + } +} diff --git a/config/routes.php b/config/routes.php new file mode 100644 index 000000000..0d227942e --- /dev/null +++ b/config/routes.php @@ -0,0 +1,31 @@ + [ + 'path' => '/{_locale}', + 'controller' => 'Symfony\\Bundle\\FrameworkBundle\\Controller\\TemplateController::templateAction', + 'defaults' => [ + 'template' => 'default/homepage.html.twig', + '_locale' => param('app.locale'), + ], + ], + 'controllers' => [ + 'resource' => [ + 'path' => '../src/Controller/', + 'namespace' => 'App\\Controller', + ], + 'type' => 'attribute', + 'prefix' => '/{_locale}', + 'defaults' => [ + '_locale' => param('app.locale'), + ], + ], +]); diff --git a/config/routes.yaml b/config/routes.yaml deleted file mode 100644 index 3ba867234..000000000 --- a/config/routes.yaml +++ /dev/null @@ -1,19 +0,0 @@ -# These lines define a route using YAML configuration. The controller used by -# the route (FrameworkBundle:Template:template) is a convenient shortcut when -# the template can be rendered without executing any logic in your own controller. -# See https://symfony.com/doc/current/templates.html#rendering-a-template-directly-from-a-route -homepage: - path: /{_locale} - controller: Symfony\Bundle\FrameworkBundle\Controller\TemplateController::templateAction - defaults: - template: default/homepage.html.twig - _locale: '%app.locale%' - -controllers: - resource: - path: '../src/Controller/' - namespace: App\Controller - type: attribute - prefix: /{_locale} - defaults: - _locale: '%app.locale%' diff --git a/config/services.php b/config/services.php new file mode 100644 index 000000000..61b19a017 --- /dev/null +++ b/config/services.php @@ -0,0 +1,36 @@ + [ + 'app.locale' => 'en', + 'app.notifications.email_sender' => 'anonymous@example.com', + ], + 'services' => [ + // default configuration for services in *this* file + '_defaults' => [ + 'autowire' => true, // Automatically injects dependencies in your services. + 'autoconfigure' => true, // Automatically registers your services as commands, event subscribers, etc. + 'bind' => [ + // this allows to define the scalar arguments once and apply them to any services + // defined/created in this file; if some argument is used rarely, instead of defining + // it here you can use the #[Autowire] attribute to inject it manually in the service constructor + 'array $enabledLocales' => param('kernel.enabled_locales'), + 'string $defaultLocale' => param('app.locale'), + ], + ], + // makes classes in src/ available to be used as services + // this creates a service per class whose id is the fully-qualified class name + 'App\\' => [ + 'resource' => '../src/', + ], + // add more service definitions when explicit configuration is needed + // please note that last definitions always *replace* previous ones + ], +]); diff --git a/config/services.yaml b/config/services.yaml deleted file mode 100644 index 70e38a69c..000000000 --- a/config/services.yaml +++ /dev/null @@ -1,28 +0,0 @@ -# This file is the entry point to configure your own services. -# Files in the packages/ subdirectory configure your dependencies. - -# Put parameters here that don't need to change on each machine where the app is deployed -# https://symfony.com/doc/current/best_practices.html#use-parameters-for-application-configuration -parameters: - app.locale: 'en' - app.notifications.email_sender: anonymous@example.com - -services: - # default configuration for services in *this* file - _defaults: - autowire: true # Automatically injects dependencies in your services. - autoconfigure: true # Automatically registers your services as commands, event subscribers, etc. - bind: - # this allows to define the scalar arguments once and apply them to any services - # defined/created in this file; if some argument is used rarely, instead of defining - # it here you can use the #[Autowire] attribute to inject it manually in the service constructor - array $enabledLocales: '%kernel.enabled_locales%' - string $defaultLocale: '%app.locale%' - - # makes classes in src/ available to be used as services - # this creates a service per class whose id is the fully-qualified class name - App\: - resource: '../src/' - - # add more service definitions when explicit configuration is needed - # please note that last definitions always *replace* previous ones From f061917cc6599161067c9e467f9d7c475fd42cf2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Tamarelle?= Date: Thu, 23 Oct 2025 09:22:56 +0200 Subject: [PATCH 2/4] autowire and autoconfiguration enabled by default Co-authored-by: Nicolas Grekas --- config/services.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/config/services.php b/config/services.php index 61b19a017..9c8c201a9 100644 --- a/config/services.php +++ b/config/services.php @@ -15,8 +15,6 @@ 'services' => [ // default configuration for services in *this* file '_defaults' => [ - 'autowire' => true, // Automatically injects dependencies in your services. - 'autoconfigure' => true, // Automatically registers your services as commands, event subscribers, etc. 'bind' => [ // this allows to define the scalar arguments once and apply them to any services // defined/created in this file; if some argument is used rarely, instead of defining From 5bf128ba07604252e016180ecad8e77fce53c183 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Tamarelle?= Date: Thu, 23 Oct 2025 16:45:54 +0200 Subject: [PATCH 3/4] Update generated reference.php --- config/reference.php | 541 ++++++++++++++++++++++++++++--------------- config/routes.php | 5 +- 2 files changed, 355 insertions(+), 191 deletions(-) diff --git a/config/reference.php b/config/reference.php index 140151fa8..c552d8978 100644 --- a/config/reference.php +++ b/config/reference.php @@ -1,13 +1,15 @@ + * @psalm-type ParametersConfig = array|null> + * @psalm-type ArgumentsType = list|array + * @psalm-type CallType = array|array{0:string, 1?:ArgumentsType, 2?:bool}|array{method:string, arguments?:ArgumentsType, returns_clone?:bool} + * @psalm-type TagsType = list>> // arrays inside the list must have only one element, with the tag name as the key + * @psalm-type CallbackType = string|array{0:string|ReferenceConfigurator,1:string}|\Closure|ReferenceConfigurator|ExpressionConfigurator + * @psalm-type DeprecationType = array{package: string, version: string, message?: string} + * @psalm-type DefaultsType = array{ + * public?: bool, + * tags?: TagsType, + * resource_tags?: TagsType, + * autowire?: bool, + * autoconfigure?: bool, + * bind?: array, + * } + * @psalm-type InstanceofType = array{ + * shared?: bool, + * lazy?: bool|string, + * public?: bool, + * properties?: array, + * configurator?: CallbackType, + * calls?: list, + * tags?: TagsType, + * resource_tags?: TagsType, + * autowire?: bool, + * bind?: array, + * constructor?: string, + * } + * @psalm-type DefinitionType = array{ + * class?: string, + * file?: string, + * parent?: string, + * shared?: bool, + * synthetic?: bool, + * lazy?: bool|string, + * public?: bool, + * abstract?: bool, + * deprecated?: DeprecationType, + * factory?: CallbackType, + * configurator?: CallbackType, + * arguments?: ArgumentsType, + * properties?: array, + * calls?: list, + * tags?: TagsType, + * resource_tags?: TagsType, + * decorates?: string, + * decoration_inner_name?: string, + * decoration_priority?: int, + * decoration_on_invalid?: 'exception'|'ignore'|null, + * autowire?: bool, + * autoconfigure?: bool, + * bind?: array, + * constructor?: string, + * from_callable?: mixed, + * } + * @psalm-type AliasType = string|array{ + * alias: string, + * public?: bool, + * deprecated?: DeprecationType, + * } + * @psalm-type PrototypeType = array{ + * resource: string, + * namespace?: string, + * exclude?: string|list, + * parent?: string, + * shared?: bool, + * lazy?: bool|string, + * public?: bool, + * abstract?: bool, + * deprecated?: DeprecationType, + * factory?: CallbackType, + * arguments?: ArgumentsType, + * properties?: array, + * configurator?: CallbackType, + * calls?: list, + * tags?: TagsType, + * resource_tags?: TagsType, + * autowire?: bool, + * autoconfigure?: bool, + * bind?: array, + * constructor?: string, + * } + * @psalm-type StackType = array{ + * stack: list>, + * public?: bool, + * deprecated?: DeprecationType, + * } + * @psalm-type ServicesConfig = array{ + * _defaults?: DefaultsType, + * _instanceof?: InstanceofType, + * ... + * } + * @psalm-type ExtensionType = array * @psalm-type FrameworkConfig = array{ * secret?: scalar|null, * http_method_override?: bool, // Set true to enable support for the '_method' request parameter to determine the intended HTTP method on POST requests. // Default: false @@ -44,47 +139,47 @@ * trusted_headers?: list, * error_controller?: scalar|null, // Default: "error_controller" * handle_all_throwables?: bool, // HttpKernel will handle all kinds of \Throwable. // Default: true - * csrf_protection?: bool|array{ // Default: {"enabled":null,"stateless_token_ids":[],"check_header":false,"cookie_name":"csrf-token"} + * csrf_protection?: bool|array{ * enabled?: scalar|null, // Default: null * stateless_token_ids?: list, * check_header?: scalar|null, // Whether to check the CSRF token in a header in addition to a cookie when using stateless protection. // Default: false * cookie_name?: scalar|null, // The name of the cookie to use when using stateless protection. // Default: "csrf-token" * }, - * form?: bool|array{ // Form configuration // Default: {"enabled":true,"csrf_protection":{"enabled":null,"token_id":null,"field_name":"_token","field_attr":{"data-controller":"csrf-protection"}}} + * form?: bool|array{ // Form configuration * enabled?: bool, // Default: true - * csrf_protection?: array{ // Default: {"enabled":null,"token_id":null,"field_name":"_token","field_attr":{"data-controller":"csrf-protection"}} + * csrf_protection?: array{ * enabled?: scalar|null, // Default: null * token_id?: scalar|null, // Default: null * field_name?: scalar|null, // Default: "_token" * field_attr?: array, * }, * }, - * http_cache?: bool|array{ // HTTP cache configuration // Default: {"enabled":false,"debug":"%kernel.debug%","private_headers":[],"skip_response_headers":[]} + * http_cache?: bool|array{ // HTTP cache configuration * enabled?: bool, // Default: false * debug?: bool, // Default: "%kernel.debug%" * trace_level?: "none"|"short"|"full", * trace_header?: scalar|null, - * default_ttl?: int, + * default_ttl?: int, * private_headers?: list, * skip_response_headers?: list, * allow_reload?: bool, * allow_revalidate?: bool, - * stale_while_revalidate?: int, - * stale_if_error?: int, + * stale_while_revalidate?: int, + * stale_if_error?: int, * terminate_on_cache_hit?: bool, * }, - * esi?: bool|array{ // ESI configuration // Default: {"enabled":false} + * esi?: bool|array{ // ESI configuration * enabled?: bool, // Default: false * }, - * ssi?: bool|array{ // SSI configuration // Default: {"enabled":false} + * ssi?: bool|array{ // SSI configuration * enabled?: bool, // Default: false * }, - * fragments?: bool|array{ // Fragments configuration // Default: {"enabled":false,"hinclude_default_template":null,"path":"/_fragment"} + * fragments?: bool|array{ // Fragments configuration * enabled?: bool, // Default: false * hinclude_default_template?: scalar|null, // Default: null * path?: scalar|null, // Default: "/_fragment" * }, - * profiler?: bool|array{ // Profiler configuration // Default: {"enabled":false,"collect":true,"collect_parameter":null,"only_exceptions":false,"only_main_requests":false,"dsn":"file:%kernel.cache_dir%/profiler","collect_serializer_data":false} + * profiler?: bool|array{ // Profiler configuration * enabled?: bool, // Default: false * collect?: bool, // Default: true * collect_parameter?: scalar|null, // The name of the parameter to use to enable or disable collection on a per request basis. // Default: null @@ -93,10 +188,10 @@ * dsn?: scalar|null, // Default: "file:%kernel.cache_dir%/profiler" * collect_serializer_data?: bool, // Enables the serializer data collector and profiler panel. // Default: false * }, - * workflows?: bool|array{ // Default: {"enabled":false,"workflows":[]} + * workflows?: bool|array{ * enabled?: bool, // Default: false - * workflows?: array, * events_to_dispatch?: list|null, - * places?: list, * }>, - * transitions: list, // Default: 1 + * weight?: int, // Default: 1 * }>, - * to?: list, // Default: 1 + * weight?: int, // Default: 1 * }>, - * weight?: int, // Default: 1 + * weight?: int, // Default: 1 * metadata?: list, * }>, * metadata?: list, * }>, * }, - * router?: bool|array{ // Router configuration // Default: {"enabled":false,"cache_dir":"%kernel.build_dir%","default_uri":null,"http_port":80,"https_port":443,"strict_requirements":true,"utf8":true} + * router?: bool|array{ // Router configuration * enabled?: bool, // Default: false * resource: scalar|null, * type?: scalar|null, @@ -142,7 +237,7 @@ * strict_requirements?: scalar|null, // set to true to throw an exception when a parameter does not match the requirements set to false to disable exceptions when a parameter does not match the requirements (and return null instead) set to null to disable parameter checks against requirements 'true' is the preferred configuration in development mode, while 'false' or 'null' might be preferred in production // Default: true * utf8?: bool, // Default: true * }, - * session?: bool|array{ // Session configuration // Default: {"enabled":false,"storage_factory_id":"session.storage.factory.native","cookie_secure":"auto","cookie_httponly":true,"cookie_samesite":"lax","metadata_update_threshold":0} + * session?: bool|array{ // Session configuration * enabled?: bool, // Default: false * storage_factory_id?: scalar|null, // Default: "session.storage.factory.native" * handler_id?: scalar|null, // Defaults to using the native session handler, or to the native *file* session handler if "save_path" is not null. @@ -158,15 +253,15 @@ * gc_probability?: scalar|null, * gc_maxlifetime?: scalar|null, * save_path?: scalar|null, // Defaults to "%kernel.cache_dir%/sessions" if the "handler_id" option is not null. - * metadata_update_threshold?: int, // Seconds to wait between 2 session metadata updates. // Default: 0 - * sid_length?: int<22, 256>, // Deprecated: Setting the "framework.session.sid_length.sid_length" configuration option is deprecated. It will be removed in version 8.0. No alternative is provided as PHP 8.4 has deprecated the related option. - * sid_bits_per_character?: int<4, 6>, // Deprecated: Setting the "framework.session.sid_bits_per_character.sid_bits_per_character" configuration option is deprecated. It will be removed in version 8.0. No alternative is provided as PHP 8.4 has deprecated the related option. + * metadata_update_threshold?: int, // Seconds to wait between 2 session metadata updates. // Default: 0 + * sid_length?: int, // Deprecated: Setting the "framework.session.sid_length.sid_length" configuration option is deprecated. It will be removed in version 8.0. No alternative is provided as PHP 8.4 has deprecated the related option. + * sid_bits_per_character?: int, // Deprecated: Setting the "framework.session.sid_bits_per_character.sid_bits_per_character" configuration option is deprecated. It will be removed in version 8.0. No alternative is provided as PHP 8.4 has deprecated the related option. * }, - * request?: bool|array{ // Request configuration // Default: {"enabled":false,"formats":[]} + * request?: bool|array{ // Request configuration * enabled?: bool, // Default: false * formats?: array>, * }, - * assets?: bool|array{ // Assets configuration // Default: {"enabled":true,"strict_mode":false,"version_strategy":null,"version":null,"version_format":"%%s?%%s","json_manifest_path":null,"base_path":"","base_urls":[],"packages":[]} + * assets?: bool|array{ // Assets configuration * enabled?: bool, // Default: true * strict_mode?: bool, // Throw an exception if an entry is missing from the manifest.json. // Default: false * version_strategy?: scalar|null, // Default: null @@ -175,7 +270,7 @@ * json_manifest_path?: scalar|null, // Default: null * base_path?: scalar|null, // Default: "" * base_urls?: list, - * packages?: array, * }>, * }, - * asset_mapper?: bool|array{ // Asset Mapper configuration // Default: {"enabled":true,"paths":[],"excluded_patterns":[],"exclude_dotfiles":true,"server":true,"public_prefix":"/assets/","missing_import_mode":"warn","extensions":[],"importmap_path":"%kernel.project_dir%/importmap.php","importmap_polyfill":"es-module-shims","importmap_script_attributes":[],"vendor_dir":"%kernel.project_dir%/assets/vendor","precompress":{"enabled":false,"formats":[],"extensions":["css","cur","eot","html","js","json","md","otc","otf","proto","rss","rtf","svg","ttc","ttf","txt","wasm","xml"]}} + * asset_mapper?: bool|array{ // Asset Mapper configuration * enabled?: bool, // Default: true * paths?: array, * excluded_patterns?: list, @@ -198,13 +293,13 @@ * importmap_polyfill?: scalar|null, // The importmap name that will be used to load the polyfill. Set to false to disable. // Default: "es-module-shims" * importmap_script_attributes?: array, * vendor_dir?: scalar|null, // The directory to store JavaScript vendors. // Default: "%kernel.project_dir%/assets/vendor" - * precompress?: bool|array{ // Precompress assets with Brotli, Zstandard and gzip. // Default: {"enabled":false,"formats":[],"extensions":["css","cur","eot","html","js","json","md","otc","otf","proto","rss","rtf","svg","ttc","ttf","txt","wasm","xml"]} + * precompress?: bool|array{ // Precompress assets with Brotli, Zstandard and gzip. * enabled?: bool, // Default: false * formats?: list, * extensions?: list, * }, * }, - * translator?: bool|array{ // Translator configuration // Default: {"enabled":true,"fallbacks":[],"logging":false,"formatter":"translator.formatter.default","cache_dir":"%kernel.cache_dir%/translations","default_path":"%kernel.project_dir%/translations","paths":[],"pseudo_localization":{"enabled":false,"accents":true,"expansion_factor":1.0,"brackets":true,"parse_html":false,"localizable_html_attributes":[]},"providers":[],"globals":[]} + * translator?: bool|array{ // Translator configuration * enabled?: bool, // Default: true * fallbacks?: list, * logging?: bool, // Default: false @@ -212,7 +307,7 @@ * cache_dir?: scalar|null, // Default: "%kernel.cache_dir%/translations" * default_path?: scalar|null, // The default path used to load translations. // Default: "%kernel.project_dir%/translations" * paths?: list, - * pseudo_localization?: bool|array{ // Default: {"enabled":false,"accents":true,"expansion_factor":1.0,"brackets":true,"parse_html":false,"localizable_html_attributes":[]} + * pseudo_localization?: bool|array{ * enabled?: bool, // Default: false * accents?: bool, // Default: true * expansion_factor?: float, // Default: 1.0 @@ -220,58 +315,58 @@ * parse_html?: bool, // Default: false * localizable_html_attributes?: list, * }, - * providers?: array, * locales?: list, * }>, - * globals?: array, * domain?: string, * }>, * }, - * validation?: bool|array{ // Validation configuration // Default: {"enabled":true,"enable_attributes":true,"static_method":["loadValidatorMetadata"],"translation_domain":"validators","email_validation_mode":"html5","mapping":{"paths":[]},"not_compromised_password":{"enabled":true,"endpoint":null},"disable_translation":false,"auto_mapping":[]} + * validation?: bool|array{ // Validation configuration * enabled?: bool, // Default: true * cache?: scalar|null, // Deprecated: Setting the "framework.validation.cache.cache" configuration option is deprecated. It will be removed in version 8.0. * enable_attributes?: bool, // Default: true * static_method?: list, * translation_domain?: scalar|null, // Default: "validators" * email_validation_mode?: "html5"|"html5-allow-no-tld"|"strict"|"loose", // Default: "html5" - * mapping?: array{ // Default: {"paths":[]} + * mapping?: array{ * paths?: list, * }, - * not_compromised_password?: bool|array{ // Default: {"enabled":true,"endpoint":null} + * not_compromised_password?: bool|array{ * enabled?: bool, // When disabled, compromised passwords will be accepted as valid. // Default: true * endpoint?: scalar|null, // API endpoint for the NotCompromisedPassword Validator. // Default: null * }, * disable_translation?: bool, // Default: false - * auto_mapping?: array, * }>, * }, - * annotations?: bool|array{ // Default: {"enabled":false} + * annotations?: bool|array{ * enabled?: bool, // Default: false * }, - * serializer?: bool|array{ // Serializer configuration // Default: {"enabled":false,"enable_attributes":true,"mapping":{"paths":[]},"default_context":[],"named_serializers":[]} + * serializer?: bool|array{ // Serializer configuration * enabled?: bool, // Default: false * enable_attributes?: bool, // Default: true * name_converter?: scalar|null, * circular_reference_handler?: scalar|null, * max_depth_handler?: scalar|null, - * mapping?: array{ // Default: {"paths":[]} + * mapping?: array{ * paths?: list, * }, * default_context?: list, - * named_serializers?: array, * include_built_in_normalizers?: bool, // Whether to include the built-in normalizers // Default: true * include_built_in_encoders?: bool, // Whether to include the built-in encoders // Default: true * }>, * }, - * property_access?: bool|array{ // Property access configuration // Default: {"enabled":true,"magic_call":false,"magic_get":true,"magic_set":true,"throw_exception_on_invalid_index":false,"throw_exception_on_invalid_property_path":true} + * property_access?: bool|array{ // Property access configuration * enabled?: bool, // Default: true * magic_call?: bool, // Default: false * magic_get?: bool, // Default: true @@ -279,15 +374,15 @@ * throw_exception_on_invalid_index?: bool, // Default: false * throw_exception_on_invalid_property_path?: bool, // Default: true * }, - * type_info?: bool|array{ // Type info configuration // Default: {"enabled":true,"aliases":[]} + * type_info?: bool|array{ // Type info configuration * enabled?: bool, // Default: true * aliases?: array, * }, - * property_info?: bool|array{ // Property info configuration // Default: {"enabled":true} + * property_info?: bool|array{ // Property info configuration * enabled?: bool, // Default: true * with_constructor_extractor?: bool, // Registers the constructor extractor. * }, - * cache?: array{ // Cache configuration // Default: {"prefix_seed":"_%kernel.project_dir%.%kernel.container_class%","app":"cache.adapter.filesystem","system":"cache.adapter.system","directory":"%kernel.cache_dir%/pools/app","default_redis_provider":"redis://localhost","default_valkey_provider":"valkey://localhost","default_memcached_provider":"memcached://localhost","default_doctrine_dbal_provider":"database_connection","default_pdo_provider":null,"pools":[]} + * cache?: array{ // Cache configuration * prefix_seed?: scalar|null, // Used to namespace cache keys when using several apps with the same shared backend. // Default: "_%kernel.project_dir%.%kernel.container_class%" * app?: scalar|null, // App related cache pools configuration. // Default: "cache.adapter.filesystem" * system?: scalar|null, // System related cache pools configuration. // Default: "cache.adapter.system" @@ -298,7 +393,7 @@ * default_memcached_provider?: scalar|null, // Default: "memcached://localhost" * default_doctrine_dbal_provider?: scalar|null, // Default: "database_connection" * default_pdo_provider?: scalar|null, // Default: null - * pools?: array, * tags?: scalar|null, // Default: null * public?: bool, // Default: false @@ -308,49 +403,49 @@ * clearer?: scalar|null, * }>, * }, - * php_errors?: array{ // PHP errors handling configuration // Default: {"log":true,"throw":true} + * php_errors?: array{ // PHP errors handling configuration * log?: mixed, // Use the application logger instead of the PHP logger for logging PHP errors. // Default: true * throw?: bool, // Throw PHP errors as \ErrorException instances. // Default: true * }, - * exceptions?: array, - * web_link?: bool|array{ // Web links configuration // Default: {"enabled":false} + * web_link?: bool|array{ // Web links configuration * enabled?: bool, // Default: false * }, - * lock?: bool|string|array{ // Lock configuration // Default: {"enabled":false,"resources":{"default":["flock"]}} + * lock?: bool|string|array{ // Lock configuration * enabled?: bool, // Default: false * resources?: array>, * }, - * semaphore?: bool|string|array{ // Semaphore configuration // Default: {"enabled":false,"resources":[]} + * semaphore?: bool|string|array{ // Semaphore configuration * enabled?: bool, // Default: false * resources?: array, * }, - * messenger?: bool|array{ // Messenger configuration // Default: {"enabled":false,"routing":[],"serializer":{"default_serializer":"messenger.transport.native_php_serializer","symfony_serializer":{"format":"json","context":[]}},"transports":[],"failure_transport":null,"stop_worker_on_signals":[],"default_bus":null,"buses":{"messenger.bus.default":{"default_middleware":{"enabled":true,"allow_no_handlers":false,"allow_no_senders":true},"middleware":[]}}} + * messenger?: bool|array{ // Messenger configuration * enabled?: bool, // Default: false - * routing?: array, * }>, - * serializer?: array{ // Default: {"default_serializer":"messenger.transport.native_php_serializer","symfony_serializer":{"format":"json","context":[]}} + * serializer?: array{ * default_serializer?: scalar|null, // Service id to use as the default serializer for the transports. // Default: "messenger.transport.native_php_serializer" - * symfony_serializer?: array{ // Default: {"format":"json","context":[]} + * symfony_serializer?: array{ * format?: scalar|null, // Serialization format for the messenger.transport.symfony_serializer service (which is not the serializer used by default). // Default: "json" * context?: array, * }, * }, - * transports?: array, * failure_transport?: scalar|null, // Transport name to send failed messages to (after all retries have failed). // Default: null - * retry_strategy?: string|array{ // Default: {"service":null,"max_retries":3,"delay":1000,"multiplier":2,"max_delay":0,"jitter":0.1} + * retry_strategy?: string|array{ * service?: scalar|null, // Service id to override the retry strategy entirely. // Default: null - * max_retries?: int<0, max>, // Default: 3 - * delay?: int<0, max>, // Time in ms to delay (or the initial value when multiplier is used). // Default: 1000 + * max_retries?: int, // Default: 3 + * delay?: int, // Time in ms to delay (or the initial value when multiplier is used). // Default: 1000 * multiplier?: float, // If greater than 1, delay will grow exponentially for each retry: this delay = (delay * (multiple ^ retries)). // Default: 2 - * max_delay?: int<0, max>, // Max time in ms that a retry should ever be delayed (0 = infinite). // Default: 0 + * max_delay?: int, // Max time in ms that a retry should ever be delayed (0 = infinite). // Default: 0 * jitter?: float, // Randomness to apply to the delay (between 0 and 1). // Default: 0.1 * }, * rate_limiter?: scalar|null, // Rate limiter name to use when processing messages. // Default: null @@ -358,29 +453,29 @@ * failure_transport?: scalar|null, // Transport name to send failed messages to (after all retries have failed). // Default: null * stop_worker_on_signals?: list, * default_bus?: scalar|null, // Default: null - * buses?: array, * }>, * }>, * }, - * scheduler?: bool|array{ // Scheduler configuration // Default: {"enabled":false} + * scheduler?: bool|array{ // Scheduler configuration * enabled?: bool, // Default: false * }, * disallow_search_engine_index?: bool, // Enabled by default when debug is enabled. // Default: true - * http_client?: bool|array{ // HTTP Client configuration // Default: {"enabled":true,"scoped_clients":[]} + * http_client?: bool|array{ // HTTP Client configuration * enabled?: bool, // Default: true - * max_host_connections?: int, // The maximum number of connections to a single host. + * max_host_connections?: int, // The maximum number of connections to a single host. * default_options?: array{ * headers?: array, * vars?: list, - * max_redirects?: int, // The maximum number of redirects to follow. + * max_redirects?: int, // The maximum number of redirects to follow. * http_version?: scalar|null, // The default HTTP version, typically 1.1 or 2.0, leave to null for the best version. * resolve?: array, * proxy?: scalar|null, // The URL of the proxy to pass requests through or null for automatic detection. @@ -404,28 +499,28 @@ * crypto_method?: scalar|null, // The minimum version of TLS to accept; must be one of STREAM_CRYPTO_METHOD_TLSv*_CLIENT constants. * extra?: list, * rate_limiter?: scalar|null, // Rate limiter name to use for throttling requests. // Default: null - * caching?: bool|array{ // Caching configuration. // Default: {"enabled":false,"cache_pool":"cache.http_client","shared":true,"max_ttl":null} + * caching?: bool|array{ // Caching configuration. * enabled?: bool, // Default: false * cache_pool?: string, // The taggable cache pool to use for storing the responses. // Default: "cache.http_client" * shared?: bool, // Indicates whether the cache is shared (public) or private. // Default: true - * max_ttl?: int<0, max>, // The maximum TTL (in seconds) allowed for cached responses. Null means no cap. // Default: null + * max_ttl?: int, // The maximum TTL (in seconds) allowed for cached responses. Null means no cap. // Default: null * }, - * retry_failed?: bool|array{ // Default: {"enabled":false,"retry_strategy":null,"http_codes":[],"max_retries":3,"delay":1000,"multiplier":2,"max_delay":0,"jitter":0.1} + * retry_failed?: bool|array{ * enabled?: bool, // Default: false * retry_strategy?: scalar|null, // service id to override the retry strategy. // Default: null - * http_codes?: array, + * http_codes?: array, * }>, - * max_retries?: int<0, max>, // Default: 3 - * delay?: int<0, max>, // Time in ms to delay (or the initial value when multiplier is used). // Default: 1000 + * max_retries?: int, // Default: 3 + * delay?: int, // Time in ms to delay (or the initial value when multiplier is used). // Default: 1000 * multiplier?: float, // If greater than 1, delay will grow exponentially for each retry: delay * (multiple ^ retries). // Default: 2 - * max_delay?: int<0, max>, // Max time in ms that a retry should ever be delayed (0 = infinite). // Default: 0 + * max_delay?: int, // Max time in ms that a retry should ever be delayed (0 = infinite). // Default: 0 * jitter?: float, // Randomness in percent (between 0 and 1) to apply to the delay. // Default: 0.1 * }, * }, * mock_response_factory?: scalar|null, // The id of the service that should generate mock responses. It should be either an invokable or an iterable. - * scoped_clients?: array, * headers?: array, - * max_redirects?: int, // The maximum number of redirects to follow. + * max_redirects?: int, // The maximum number of redirects to follow. * http_version?: scalar|null, // The default HTTP version, typically 1.1 or 2.0, leave to null for the best version. * resolve?: array, * proxy?: scalar|null, // The URL of the proxy to pass requests through or null for automatic detection. @@ -457,28 +552,28 @@ * crypto_method?: scalar|null, // The minimum version of TLS to accept; must be one of STREAM_CRYPTO_METHOD_TLSv*_CLIENT constants. * extra?: list, * rate_limiter?: scalar|null, // Rate limiter name to use for throttling requests. // Default: null - * caching?: bool|array{ // Caching configuration. // Default: {"enabled":false,"cache_pool":"cache.http_client","shared":true,"max_ttl":null} + * caching?: bool|array{ // Caching configuration. * enabled?: bool, // Default: false * cache_pool?: string, // The taggable cache pool to use for storing the responses. // Default: "cache.http_client" * shared?: bool, // Indicates whether the cache is shared (public) or private. // Default: true - * max_ttl?: int<0, max>, // The maximum TTL (in seconds) allowed for cached responses. Null means no cap. // Default: null + * max_ttl?: int, // The maximum TTL (in seconds) allowed for cached responses. Null means no cap. // Default: null * }, - * retry_failed?: bool|array{ // Default: {"enabled":false,"retry_strategy":null,"http_codes":[],"max_retries":3,"delay":1000,"multiplier":2,"max_delay":0,"jitter":0.1} + * retry_failed?: bool|array{ * enabled?: bool, // Default: false * retry_strategy?: scalar|null, // service id to override the retry strategy. // Default: null - * http_codes?: array, + * http_codes?: array, * }>, - * max_retries?: int<0, max>, // Default: 3 - * delay?: int<0, max>, // Time in ms to delay (or the initial value when multiplier is used). // Default: 1000 + * max_retries?: int, // Default: 3 + * delay?: int, // Time in ms to delay (or the initial value when multiplier is used). // Default: 1000 * multiplier?: float, // If greater than 1, delay will grow exponentially for each retry: delay * (multiple ^ retries). // Default: 2 - * max_delay?: int<0, max>, // Max time in ms that a retry should ever be delayed (0 = infinite). // Default: 0 + * max_delay?: int, // Max time in ms that a retry should ever be delayed (0 = infinite). // Default: 0 * jitter?: float, // Randomness in percent (between 0 and 1) to apply to the delay. // Default: 0.1 * }, * }>, * }, - * mailer?: bool|array{ // Mailer configuration // Default: {"enabled":true,"message_bus":null,"dsn":null,"transports":[],"headers":[],"dkim_signer":{"enabled":false,"key":"","domain":"","select":"","passphrase":"","options":[]},"smime_signer":{"enabled":false,"key":"","certificate":"","passphrase":null,"extra_certificates":null,"sign_options":null},"smime_encrypter":{"enabled":false,"repository":"","cipher":null}} + * mailer?: bool|array{ // Mailer configuration * enabled?: bool, // Default: true * message_bus?: scalar|null, // The message bus to use. Defaults to the default bus if the Messenger component is installed. // Default: null * dsn?: scalar|null, // Default: null @@ -488,10 +583,10 @@ * recipients?: list, * allowed_recipients?: list, * }, - * headers?: array, - * dkim_signer?: bool|array{ // DKIM signer configuration // Default: {"enabled":false,"key":"","domain":"","select":"","passphrase":"","options":[]} + * dkim_signer?: bool|array{ // DKIM signer configuration * enabled?: bool, // Default: false * key?: scalar|null, // Key content, or path to key (in PEM format with the `file://` prefix) // Default: "" * domain?: scalar|null, // Default: "" @@ -499,55 +594,55 @@ * passphrase?: scalar|null, // The private key passphrase // Default: "" * options?: array, * }, - * smime_signer?: bool|array{ // S/MIME signer configuration // Default: {"enabled":false,"key":"","certificate":"","passphrase":null,"extra_certificates":null,"sign_options":null} + * smime_signer?: bool|array{ // S/MIME signer configuration * enabled?: bool, // Default: false * key?: scalar|null, // Path to key (in PEM format) // Default: "" * certificate?: scalar|null, // Path to certificate (in PEM format without the `file://` prefix) // Default: "" * passphrase?: scalar|null, // The private key passphrase // Default: null * extra_certificates?: scalar|null, // Default: null - * sign_options?: int, // Default: null + * sign_options?: int, // Default: null * }, - * smime_encrypter?: bool|array{ // S/MIME encrypter configuration // Default: {"enabled":false,"repository":"","cipher":null} + * smime_encrypter?: bool|array{ // S/MIME encrypter configuration * enabled?: bool, // Default: false * repository?: scalar|null, // S/MIME certificate repository service. This service shall implement the `Symfony\Component\Mailer\EventListener\SmimeCertificateRepositoryInterface`. // Default: "" - * cipher?: int, // A set of algorithms used to encrypt the message // Default: null + * cipher?: int, // A set of algorithms used to encrypt the message // Default: null * }, * }, - * secrets?: bool|array{ // Default: {"enabled":true,"vault_directory":"%kernel.project_dir%/config/secrets/%kernel.runtime_environment%","local_dotenv_file":"%kernel.project_dir%/.env.%kernel.runtime_environment%.local","decryption_env_var":"base64:default::SYMFONY_DECRYPTION_SECRET"} + * secrets?: bool|array{ * enabled?: bool, // Default: true * vault_directory?: scalar|null, // Default: "%kernel.project_dir%/config/secrets/%kernel.runtime_environment%" * local_dotenv_file?: scalar|null, // Default: "%kernel.project_dir%/.env.%kernel.runtime_environment%.local" * decryption_env_var?: scalar|null, // Default: "base64:default::SYMFONY_DECRYPTION_SECRET" * }, - * notifier?: bool|array{ // Notifier configuration // Default: {"enabled":false,"message_bus":null,"chatter_transports":[],"texter_transports":[],"notification_on_failed_messages":false,"channel_policy":[],"admin_recipients":[]} + * notifier?: bool|array{ // Notifier configuration * enabled?: bool, // Default: false * message_bus?: scalar|null, // The message bus to use. Defaults to the default bus if the Messenger component is installed. // Default: null * chatter_transports?: array, * texter_transports?: array, * notification_on_failed_messages?: bool, // Default: false * channel_policy?: array>, - * admin_recipients?: list, * }, - * rate_limiter?: bool|array{ // Rate limiter configuration // Default: {"enabled":false,"limiters":[]} + * rate_limiter?: bool|array{ // Rate limiter configuration * enabled?: bool, // Default: false - * limiters?: array, - * limit?: int, // The maximum allowed hits in a fixed interval or burst. + * limit?: int, // The maximum allowed hits in a fixed interval or burst. * interval?: scalar|null, // Configures the fixed interval if "policy" is set to "fixed_window" or "sliding_window". The value must be a number followed by "second", "minute", "hour", "day", "week" or "month" (or their plural equivalent). * rate?: array{ // Configures the fill rate if "policy" is set to "token_bucket". * interval?: scalar|null, // Configures the rate interval. The value must be a number followed by "second", "minute", "hour", "day", "week" or "month" (or their plural equivalent). - * amount?: int, // Amount of tokens to add each interval. // Default: 1 + * amount?: int, // Amount of tokens to add each interval. // Default: 1 * }, * }>, * }, - * uid?: bool|array{ // Uid configuration // Default: {"enabled":false,"default_uuid_version":7,"name_based_uuid_version":5,"time_based_uuid_version":7} + * uid?: bool|array{ // Uid configuration * enabled?: bool, // Default: false * default_uuid_version?: 7|6|4|1, // Default: 7 * name_based_uuid_version?: 5|3, // Default: 5 @@ -555,9 +650,9 @@ * time_based_uuid_version?: 7|6|1, // Default: 7 * time_based_uuid_node?: scalar|null, * }, - * html_sanitizer?: bool|array{ // HtmlSanitizer configuration // Default: {"enabled":true,"sanitizers":[]} + * html_sanitizer?: bool|array{ // HtmlSanitizer configuration * enabled?: bool, // Default: true - * sanitizers?: array, @@ -575,21 +670,21 @@ * allow_relative_medias?: bool, // Allows relative URLs to be used in media source attributes (img, audio, video, ...). // Default: false * with_attribute_sanitizers?: list, * without_attribute_sanitizers?: list, - * max_input_length?: int, // The maximum length allowed for the sanitized input. // Default: 0 + * max_input_length?: int, // The maximum length allowed for the sanitized input. // Default: 0 * }>, * }, - * webhook?: bool|array{ // Webhook configuration // Default: {"enabled":false,"message_bus":"messenger.default_bus","routing":[]} + * webhook?: bool|array{ // Webhook configuration * enabled?: bool, // Default: false * message_bus?: scalar|null, // The message bus to use. // Default: "messenger.default_bus" - * routing?: array, * }, - * remote-event?: bool|array{ // RemoteEvent configuration // Default: {"enabled":false} + * remote-event?: bool|array{ // RemoteEvent configuration * enabled?: bool, // Default: false * }, - * json_streamer?: bool|array{ // JSON streamer configuration // Default: {"enabled":false} + * json_streamer?: bool|array{ // JSON streamer configuration * enabled?: bool, // Default: false * }, * } @@ -599,14 +694,14 @@ * hide_user_not_found?: bool, // Deprecated: The "hide_user_not_found" option is deprecated and will be removed in 8.0. Use the "expose_security_errors" option instead. * expose_security_errors?: \Symfony\Component\Security\Http\Authentication\ExposeSecurityLevel::None|\Symfony\Component\Security\Http\Authentication\ExposeSecurityLevel::AccountStatus|\Symfony\Component\Security\Http\Authentication\ExposeSecurityLevel::All, // Default: "none" * erase_credentials?: bool, // Default: true - * access_decision_manager?: array{ // Default: {"allow_if_all_abstain":false,"allow_if_equal_granted_denied":true} + * access_decision_manager?: array{ * strategy?: "affirmative"|"consensus"|"unanimous"|"priority", * service?: scalar|null, * strategy_service?: scalar|null, * allow_if_all_abstain?: bool, // Default: false * allow_if_equal_granted_denied?: bool, // Default: true * }, - * password_hashers?: array, * hash_algorithm?: scalar|null, // Name of hashing algorithm for PBKDF2 (i.e. sha256, sha512, etc..) See hash_algos() for a list of supported algorithms. // Default: "sha512" @@ -614,18 +709,18 @@ * ignore_case?: bool, // Default: false * encode_as_base64?: bool, // Default: true * iterations?: scalar|null, // Default: 5000 - * cost?: int<4, 31>, // Default: null + * cost?: int, // Default: null * memory_cost?: scalar|null, // Default: null * time_cost?: scalar|null, // Default: null * id?: scalar|null, * }>, - * providers?: array, * }, * }>, - * firewalls: array, @@ -648,7 +743,7 @@ * target?: scalar|null, // Default: "/" * invalidate_session?: bool, // Default: true * clear_site_data?: list<"*"|"cache"|"cookies"|"storage"|"executionContexts">, - * delete_cookies?: array, * }>, - * access_control?: list, // Default: null + * port?: int, // Default: null * ips?: list, * attributes?: array, * route?: scalar|null, // Default: null @@ -682,12 +777,12 @@ * @psalm-type DoctrineConfig = array{ * dbal?: array{ * default_connection?: scalar|null, - * types?: array, * driver_schemes?: array, - * connections?: array, // Default: 600 + * idle_connection_ttl?: int, // Default: 600 * driver_class?: scalar|null, * wrapper_class?: scalar|null, * keep_slave?: bool, // Deprecated: The "keep_slave" configuration key is deprecated since doctrine-bundle 2.2. Use the "keep_replica" configuration key instead. @@ -738,7 +833,7 @@ * default_table_options?: array, * schema_manager_factory?: scalar|null, // Default: "doctrine.dbal.default_schema_manager_factory" * result_cache?: scalar|null, - * slaves?: array, - * replicas?: array, @@ -856,7 +951,7 @@ * report_fields_where_declared?: bool, // Set to "true" to opt-in to the new mapping driver mode that was added in Doctrine ORM 2.16 and will be mandatory in ORM 3.0. See https://github.com/doctrine/orm/pull/10455. // Default: true * validate_xml_mapping?: bool, // Set to "true" to opt-in to the new mapping driver mode that was added in Doctrine ORM 2.14 and will be mandatory in ORM 3.0. See https://github.com/doctrine/orm/pull/6728. // Default: false * second_level_cache?: array{ - * region_cache_driver?: string|array{ // Default: {"type":null} + * region_cache_driver?: string|array{ * type?: scalar|null, // Default: null * id?: scalar|null, * pool?: scalar|null, @@ -866,8 +961,8 @@ * region_lifetime?: scalar|null, // Default: 3600 * enabled?: bool, // Default: true * factory?: scalar|null, - * regions?: array, - * loggers?: array, * }, * hydrators?: array, - * mappings?: array, * datetime_functions?: array, * }, - * filters?: array, @@ -911,7 +1006,7 @@ * @psalm-type MonologConfig = array{ * use_microseconds?: scalar|null, // Default: true * channels?: list, - * handlers?: array, - * excluded_http_codes?: list, * }>, @@ -994,7 +1089,7 @@ * disable_notification?: bool|null, // Default: null * split_long_messages?: bool, // Default: false * delay_between_messages?: bool, // Default: false - * factor?: int<1, max>, // Default: 1 + * factor?: int, // Default: 1 * tags?: list, * console_formater_options?: mixed, // Deprecated: "monolog.handlers..console_formater_options.console_formater_options" is deprecated, use "monolog.handlers..console_formater_options.console_formatter_options" instead. * console_formatter_options?: mixed, // Default: [] @@ -1064,7 +1159,7 @@ * } * @psalm-type TwigConfig = array{ * form_themes?: list, - * globals?: array, + * optimizations?: int, * default_path?: scalar|null, // The default path used to load templates. // Default: "%kernel.project_dir%/templates" * file_name_pattern?: list, * paths?: array, - * date?: array{ // The default format options used by the date filter. // Default: {"format":"F j, Y H:i","interval_format":"%d days","timezone":null} + * date?: array{ // The default format options used by the date filter. * format?: scalar|null, // Default: "F j, Y H:i" * interval_format?: scalar|null, // Default: "%d days" * timezone?: scalar|null, // The timezone used when formatting dates, when set to null, the timezone returned by date_default_timezone_get() is used. // Default: null * }, - * number_format?: array{ // The default format options for the number_format filter. // Default: {"decimals":0,"decimal_point":".","thousands_separator":","} - * decimals?: int, // Default: 0 + * number_format?: array{ // The default format options for the number_format filter. + * decimals?: int, // Default: 0 * decimal_point?: scalar|null, // Default: "." * thousands_separator?: scalar|null, // Default: "," * }, @@ -1096,21 +1191,21 @@ * }, * } * @psalm-type DebugConfig = array{ - * max_items?: int<-1, max>, // Max number of displayed items past the first level, -1 means no limit. // Default: 2500 - * min_depth?: int<0, max>, // Minimum tree depth to clone all the items, 1 is default. // Default: 1 - * max_string_length?: int<-1, max>, // Max length of displayed strings, -1 means no limit. // Default: -1 + * max_items?: int, // Max number of displayed items past the first level, -1 means no limit. // Default: 2500 + * min_depth?: int, // Minimum tree depth to clone all the items, 1 is default. // Default: 1 + * max_string_length?: int, // Max length of displayed strings, -1 means no limit. // Default: -1 * dump_destination?: scalar|null, // A stream URL where dumps should be written to. // Default: null * theme?: "dark"|"light", // Changes the color of the dump() output when rendered directly on the templating. "dark" (default) or "light". // Default: "dark" * } * @psalm-type WebProfilerConfig = array{ - * toolbar?: bool|array{ // Profiler toolbar configuration // Default: {"enabled":false,"ajax_replace":false} + * toolbar?: bool|array{ // Profiler toolbar configuration * enabled?: bool, // Default: false * ajax_replace?: bool, // Replace toolbar on AJAX requests // Default: false * }, * intercept_redirects?: bool, // Default: false * excluded_ajax_paths?: scalar|null, // Default: "^/((index|app(_[\\w]+)?)\\.php/)?_wdt" * } - * @psalm-type DamaDoctrineTestConfig = array{ // Default: {"enable_static_connection":true,"enable_static_meta_data_cache":true,"enable_static_query_cache":true,"connection_keys":[]} + * @psalm-type DamaDoctrineTestConfig = array{ * enable_static_connection?: mixed, // Default: true * enable_static_meta_data_cache?: bool, // Default: true * enable_static_query_cache?: bool, // Default: true @@ -1120,8 +1215,8 @@ * migrations_paths?: array, * services?: array, * factories?: array, - * storage?: array{ // Storage to use for migration status metadata. // Default: {"table_storage":{"table_name":null,"version_column_name":null,"version_column_length":null,"executed_at_column_name":null,"execution_time_column_name":null}} - * table_storage?: array{ // The default metadata storage, implemented as a table in the database. // Default: {"table_name":null,"version_column_name":null,"version_column_length":null,"executed_at_column_name":null,"execution_time_column_name":null} + * storage?: array{ // Storage to use for migration status metadata. + * table_storage?: array{ // The default metadata storage, implemented as a table in the database. * table_name?: scalar|null, // Default: null * version_column_name?: scalar|null, // Default: null * version_column_length?: scalar|null, // Default: null @@ -1145,25 +1240,25 @@ * generate_final_entities?: bool, // Default: false * } * @psalm-type TwigExtraConfig = array{ - * cache?: bool|array{ // Default: {"enabled":false} + * cache?: bool|array{ * enabled?: bool, // Default: false * }, - * html?: bool|array{ // Default: {"enabled":false} + * html?: bool|array{ * enabled?: bool, // Default: false * }, - * markdown?: bool|array{ // Default: {"enabled":true} + * markdown?: bool|array{ * enabled?: bool, // Default: true * }, - * intl?: bool|array{ // Default: {"enabled":true} + * intl?: bool|array{ * enabled?: bool, // Default: true * }, - * cssinliner?: bool|array{ // Default: {"enabled":false} + * cssinliner?: bool|array{ * enabled?: bool, // Default: false * }, - * inky?: bool|array{ // Default: {"enabled":false} + * inky?: bool|array{ * enabled?: bool, // Default: false * }, - * string?: bool|array{ // Default: {"enabled":false} + * string?: bool|array{ * enabled?: bool, // Default: false * }, * commonmark?: array{ @@ -1174,10 +1269,10 @@ * }, * html_input?: "strip"|"allow"|"escape", // How to handle HTML input. * allow_unsafe_links?: bool, // Remove risky link and image URLs by setting this to false. // Default: true - * max_nesting_level?: int, // The maximum nesting level for blocks. // Default: 9223372036854775807 + * max_nesting_level?: int, // The maximum nesting level for blocks. // Default: 9223372036854775807 * slug_normalizer?: array{ // Array of options for configuring how URL-safe slugs are created. * instance?: mixed, - * max_length?: int, // Default: 255 + * max_length?: int, // Default: 255 * unique?: mixed, * }, * commonmark?: array{ // Array of options for configuring the CommonMark core extension. @@ -1191,7 +1286,7 @@ * }, * } * @psalm-type TwigComponentConfig = array{ - * defaults?: array, @@ -1199,7 +1294,7 @@ * profiler?: bool, // Enables the profiler for Twig Component (in debug mode) // Default: "%kernel.debug%" * controllers_json?: scalar|null, // Deprecated: The "twig_component.controllers_json" config option is deprecated, and will be removed in 3.0. // Default: null * } - * @psalm-type LiveComponentConfig = array{ // Default: {"secret":"%kernel.secret%"} + * @psalm-type LiveComponentConfig = array{ * secret?: scalar|null, // The secret used to compute fingerprints and checksums // Default: "%kernel.secret%" * } * @psalm-type StimulusConfig = array{ @@ -1209,7 +1304,7 @@ * @psalm-type SymfonycastsSassConfig = array{ * root_sass?: list, * binary?: scalar|null, // The Sass binary to use // Default: null - * sass_options?: array{ // Default: {"style":"expanded","source_map":true,"embed_source_map":"%kernel.debug%","load_path":[]} + * sass_options?: array{ * style?: "compressed"|"expanded", // The style of the generated CSS: compressed or expanded. // Default: "expanded" * charset?: bool, // Whether to include the charset declaration in the generated Sass. * error_css?: bool, // Emit a CSS file when an error occurs. @@ -1227,13 +1322,13 @@ * @psalm-type UxIconsConfig = array{ * icon_dir?: scalar|null, // The local directory where icons are stored. // Default: "%kernel.project_dir%/assets/icons" * default_icon_attributes?: mixed, // Default attributes to add to all icons. // Default: {"fill":"currentColor"} - * icon_sets?: array, * }>, * aliases?: list, - * iconify?: bool|array{ // Configuration for the remote icon service. // Default: {"enabled":true,"on_demand":true,"endpoint":"https://api.iconify.design"} + * iconify?: bool|array{ // Configuration for the remote icon service. * enabled?: bool, // Default: true * on_demand?: bool, // Whether to download icons "on demand". // Default: true * endpoint?: scalar|null, // The endpoint for the Iconify icons API. // Default: "https://api.iconify.design" @@ -1253,18 +1348,14 @@ final class App extends AppReference * doctrine?: DoctrineConfig, * monolog?: MonologConfig, * twig?: TwigConfig, - * debug?: DebugConfig, - * web_profiler?: WebProfilerConfig, - * dama_doctrine_test?: DamaDoctrineTestConfig, * doctrine_migrations?: DoctrineMigrationsConfig, - * maker?: MakerConfig, * twig_extra?: TwigExtraConfig, * twig_component?: TwigComponentConfig, * live_component?: LiveComponentConfig, * stimulus?: StimulusConfig, * symfonycasts_sass?: SymfonycastsSassConfig, * ux_icons?: UxIconsConfig, - * ...<'when@dev'|'when@prod'|'when@test', array{ + * "when@dev"?: array{ * imports?: ImportsConfig, * parameters?: ParametersConfig, * services?: ServicesConfig, @@ -1275,7 +1366,6 @@ final class App extends AppReference * twig?: TwigConfig, * debug?: DebugConfig, * web_profiler?: WebProfilerConfig, - * dama_doctrine_test?: DamaDoctrineTestConfig, * doctrine_migrations?: DoctrineMigrationsConfig, * maker?: MakerConfig, * twig_extra?: TwigExtraConfig, @@ -1284,6 +1374,48 @@ final class App extends AppReference * stimulus?: StimulusConfig, * symfonycasts_sass?: SymfonycastsSassConfig, * ux_icons?: UxIconsConfig, + * }, + * "when@prod"?: array{ + * imports?: ImportsConfig, + * parameters?: ParametersConfig, + * services?: ServicesConfig, + * framework?: FrameworkConfig, + * security?: SecurityConfig, + * doctrine?: DoctrineConfig, + * monolog?: MonologConfig, + * twig?: TwigConfig, + * doctrine_migrations?: DoctrineMigrationsConfig, + * twig_extra?: TwigExtraConfig, + * twig_component?: TwigComponentConfig, + * live_component?: LiveComponentConfig, + * stimulus?: StimulusConfig, + * symfonycasts_sass?: SymfonycastsSassConfig, + * ux_icons?: UxIconsConfig, + * }, + * "when@test"?: array{ + * imports?: ImportsConfig, + * parameters?: ParametersConfig, + * services?: ServicesConfig, + * framework?: FrameworkConfig, + * security?: SecurityConfig, + * doctrine?: DoctrineConfig, + * monolog?: MonologConfig, + * twig?: TwigConfig, + * web_profiler?: WebProfilerConfig, + * dama_doctrine_test?: DamaDoctrineTestConfig, + * doctrine_migrations?: DoctrineMigrationsConfig, + * twig_extra?: TwigExtraConfig, + * twig_component?: TwigComponentConfig, + * live_component?: LiveComponentConfig, + * stimulus?: StimulusConfig, + * symfonycasts_sass?: SymfonycastsSassConfig, + * ux_icons?: UxIconsConfig, + * }, + * ..., * }> * } $config */ @@ -1298,8 +1430,6 @@ public static function config(array $config): array /** * This class provides array-shapes for configuring the routes of an application. * - * All this is auto-generated and is for apps only. Bundles SHOULD NOT rely on it. - * * Example: * * ```php @@ -1314,15 +1444,50 @@ public static function config(array $config): array * ]); * ``` * - * @psalm-import-type RouteConfig from RoutesReference - * @psalm-import-type ImportConfig from RoutesReference - * @psalm-import-type AliasConfig from RoutesReference - * + * @psalm-type RouteConfig = array{ + * path: string|array, + * controller?: string, + * methods?: string|list, + * requirements?: array, + * defaults?: array, + * options?: array, + * host?: string|array, + * schemes?: string|list, + * condition?: string, + * locale?: string, + * format?: string, + * utf8?: bool, + * stateless?: bool, + * } + * @psalm-type ImportConfig = array{ + * resource: string, + * type?: string, + * exclude?: string|list, + * prefix?: string|array, + * name_prefix?: string, + * trailing_slash_on_root?: bool, + * controller?: string, + * methods?: string|list, + * requirements?: array, + * defaults?: array, + * options?: array, + * host?: string|array, + * schemes?: string|list, + * condition?: string, + * locale?: string, + * format?: string, + * utf8?: bool, + * stateless?: bool, + * } + * @psalm-type AliasConfig = array{ + * alias: string, + * deprecated?: array{package:string, version:string, message?:string}, + * } * @psalm-type RoutesConfig = array{ - * 'when@dev'?: array, - * 'when@prod'?: array, - * 'when@test'?: array, - * ... + * "when@dev"?: array, + * "when@prod"?: array, + * "when@test"?: array, + * ... * } */ final class Routes extends RoutesReference @@ -1330,7 +1495,7 @@ final class Routes extends RoutesReference /** * @param RoutesConfig $config * - * @return RoutesConfig + * @psalm-return RoutesConfig */ public static function config(array $config): array { diff --git a/config/routes.php b/config/routes.php index 0d227942e..77b85318a 100644 --- a/config/routes.php +++ b/config/routes.php @@ -6,7 +6,6 @@ // the route (FrameworkBundle:Template:template) is a convenient shortcut when // the template can be rendered without executing any logic in your own controller. // See https://symfony.com/doc/current/templates.html#rendering-a-template-directly-from-a-route -use function Symfony\Component\DependencyInjection\Loader\Configurator\param; return Routes::config([ 'homepage' => [ @@ -14,7 +13,7 @@ 'controller' => 'Symfony\\Bundle\\FrameworkBundle\\Controller\\TemplateController::templateAction', 'defaults' => [ 'template' => 'default/homepage.html.twig', - '_locale' => param('app.locale'), + '_locale' => '%app.locale%', ], ], 'controllers' => [ @@ -25,7 +24,7 @@ 'type' => 'attribute', 'prefix' => '/{_locale}', 'defaults' => [ - '_locale' => param('app.locale'), + '_locale' => '%app.locale%', ], ], ]); From 5bab9c73841178bd4243ad61da179c0743745010 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Tamarelle?= Date: Thu, 23 Oct 2025 16:47:48 +0200 Subject: [PATCH 4/4] Update to Symfony 7.4@dev --- composer.json | 4 +- composer.lock | 1715 ++++++++++++++++++++++++++----------------------- 2 files changed, 921 insertions(+), 798 deletions(-) diff --git a/composer.json b/composer.json index 866a74fd7..355795455 100644 --- a/composer.json +++ b/composer.json @@ -3,7 +3,7 @@ "license": "MIT", "type": "project", "description": "Symfony Demo Application", - "minimum-stability": "stable", + "minimum-stability": "dev", "prefer-stable": true, "require": { "php": ">=8.2", @@ -111,7 +111,7 @@ "extra": { "symfony": { "allow-contrib": true, - "require": "7.3.*" + "require": "7.4.*" } } } diff --git a/composer.lock b/composer.lock index 7be23b775..95333f806 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "47c226bcb92b5cfd3c500a3b224b8db7", + "content-hash": "a526cca7177b6f9847cf1cfc22c30ead", "packages": [ { "name": "composer/semver", @@ -246,16 +246,16 @@ }, { "name": "doctrine/dbal", - "version": "4.3.3", + "version": "4.3.4", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "231959669bb2173194c95636eae7f1b41b2a8b19" + "reference": "1a2fbd0e93b8dec7c3d1ac2b6396a7b929b130dc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/231959669bb2173194c95636eae7f1b41b2a8b19", - "reference": "231959669bb2173194c95636eae7f1b41b2a8b19", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/1a2fbd0e93b8dec7c3d1ac2b6396a7b929b130dc", + "reference": "1a2fbd0e93b8dec7c3d1ac2b6396a7b929b130dc", "shasum": "" }, "require": { @@ -265,15 +265,15 @@ "psr/log": "^1|^2|^3" }, "require-dev": { - "doctrine/coding-standard": "13.0.1", + "doctrine/coding-standard": "14.0.0", "fig/log-test": "^1", "jetbrains/phpstorm-stubs": "2023.2", - "phpstan/phpstan": "2.1.22", - "phpstan/phpstan-phpunit": "2.0.6", + "phpstan/phpstan": "2.1.30", + "phpstan/phpstan-phpunit": "2.0.7", "phpstan/phpstan-strict-rules": "^2", "phpunit/phpunit": "11.5.23", - "slevomat/coding-standard": "8.16.2", - "squizlabs/php_codesniffer": "3.13.1", + "slevomat/coding-standard": "8.24.0", + "squizlabs/php_codesniffer": "4.0.0", "symfony/cache": "^6.3.8|^7.0", "symfony/console": "^5.4|^6.3|^7.0" }, @@ -332,7 +332,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/4.3.3" + "source": "https://github.com/doctrine/dbal/tree/4.3.4" }, "funding": [ { @@ -348,7 +348,7 @@ "type": "tidelift" } ], - "time": "2025-09-04T23:52:42+00:00" + "time": "2025-10-09T09:11:36+00:00" }, { "name": "doctrine/deprecations", @@ -400,20 +400,21 @@ }, { "name": "doctrine/doctrine-bundle", - "version": "2.16.2", + "version": "2.18.0", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineBundle.git", - "reference": "1c10de0fe995f01eca6b073d1c2549ef0b603a7f" + "reference": "cd5d4da6a5f7cf3d8708e17211234657b5eb4e95" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/1c10de0fe995f01eca6b073d1c2549ef0b603a7f", - "reference": "1c10de0fe995f01eca6b073d1c2549ef0b603a7f", + "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/cd5d4da6a5f7cf3d8708e17211234657b5eb4e95", + "reference": "cd5d4da6a5f7cf3d8708e17211234657b5eb4e95", "shasum": "" }, "require": { "doctrine/dbal": "^3.7.0 || ^4.0", + "doctrine/deprecations": "^1.0", "doctrine/persistence": "^3.1 || ^4", "doctrine/sql-formatter": "^1.0.1", "php": "^8.1", @@ -421,7 +422,6 @@ "symfony/config": "^6.4 || ^7.0", "symfony/console": "^6.4 || ^7.0", "symfony/dependency-injection": "^6.4 || ^7.0", - "symfony/deprecation-contracts": "^2.1 || ^3", "symfony/doctrine-bridge": "^6.4.3 || ^7.0.3", "symfony/framework-bundle": "^6.4 || ^7.0", "symfony/service-contracts": "^2.5 || ^3" @@ -436,14 +436,13 @@ "require-dev": { "doctrine/annotations": "^1 || ^2", "doctrine/cache": "^1.11 || ^2.0", - "doctrine/coding-standard": "^13", - "doctrine/deprecations": "^1.0", + "doctrine/coding-standard": "^14", "doctrine/orm": "^2.17 || ^3.1", "friendsofphp/proxy-manager-lts": "^1.0", "phpstan/phpstan": "2.1.1", "phpstan/phpstan-phpunit": "2.0.3", "phpstan/phpstan-strict-rules": "^2", - "phpunit/phpunit": "^10.5.53", + "phpunit/phpunit": "^10.5.53 || ^12.3.10", "psr/log": "^1.1.4 || ^2.0 || ^3.0", "symfony/doctrine-messenger": "^6.4 || ^7.0", "symfony/expression-language": "^6.4 || ^7.0", @@ -457,7 +456,7 @@ "symfony/var-exporter": "^6.4.1 || ^7.0.1", "symfony/web-profiler-bundle": "^6.4 || ^7.0", "symfony/yaml": "^6.4 || ^7.0", - "twig/twig": "^2.13 || ^3.0.4" + "twig/twig": "^2.14.7 || ^3.0.4" }, "suggest": { "doctrine/orm": "The Doctrine ORM integration is optional in the bundle.", @@ -502,7 +501,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineBundle/issues", - "source": "https://github.com/doctrine/DoctrineBundle/tree/2.16.2" + "source": "https://github.com/doctrine/DoctrineBundle/tree/2.18.0" }, "funding": [ { @@ -518,24 +517,24 @@ "type": "tidelift" } ], - "time": "2025-09-10T19:14:48+00:00" + "time": "2025-10-11T04:43:27+00:00" }, { "name": "doctrine/doctrine-migrations-bundle", - "version": "3.4.2", + "version": "3.5.0", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineMigrationsBundle.git", - "reference": "5a6ac7120c2924c4c070a869d08b11ccf9e277b9" + "reference": "71c81279ca0e907c3edc718418b93fd63074856c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/5a6ac7120c2924c4c070a869d08b11ccf9e277b9", - "reference": "5a6ac7120c2924c4c070a869d08b11ccf9e277b9", + "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/71c81279ca0e907c3edc718418b93fd63074856c", + "reference": "71c81279ca0e907c3edc718418b93fd63074856c", "shasum": "" }, "require": { - "doctrine/doctrine-bundle": "^2.4", + "doctrine/doctrine-bundle": "^2.4 || ^3.0", "doctrine/migrations": "^3.2", "php": "^7.2 || ^8.0", "symfony/deprecation-contracts": "^2.1 || ^3", @@ -543,7 +542,7 @@ }, "require-dev": { "composer/semver": "^3.0", - "doctrine/coding-standard": "^12", + "doctrine/coding-standard": "^12 || ^14", "doctrine/orm": "^2.6 || ^3", "phpstan/phpstan": "^1.4 || ^2", "phpstan/phpstan-deprecation-rules": "^1 || ^2", @@ -587,7 +586,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineMigrationsBundle/issues", - "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.4.2" + "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.5.0" }, "funding": [ { @@ -603,7 +602,7 @@ "type": "tidelift" } ], - "time": "2025-03-11T17:36:26+00:00" + "time": "2025-10-12T17:06:40+00:00" }, { "name": "doctrine/event-manager", @@ -1128,16 +1127,16 @@ }, { "name": "doctrine/persistence", - "version": "4.1.0", + "version": "4.1.1", "source": { "type": "git", "url": "https://github.com/doctrine/persistence.git", - "reference": "dcbdfe4b211ae09478e192289cae7ab0987b29a4" + "reference": "b9c49ad3558bb77ef973f4e173f2e9c2eca9be09" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/persistence/zipball/dcbdfe4b211ae09478e192289cae7ab0987b29a4", - "reference": "dcbdfe4b211ae09478e192289cae7ab0987b29a4", + "url": "https://api.github.com/repos/doctrine/persistence/zipball/b9c49ad3558bb77ef973f4e173f2e9c2eca9be09", + "reference": "b9c49ad3558bb77ef973f4e173f2e9c2eca9be09", "shasum": "" }, "require": { @@ -1146,11 +1145,11 @@ "psr/cache": "^1.0 || ^2.0 || ^3.0" }, "require-dev": { - "doctrine/coding-standard": "^12", - "phpstan/phpstan": "1.12.7", - "phpstan/phpstan-phpunit": "^1", - "phpstan/phpstan-strict-rules": "^1.6", - "phpunit/phpunit": "^9.6", + "doctrine/coding-standard": "^14", + "phpstan/phpstan": "2.1.30", + "phpstan/phpstan-phpunit": "^2", + "phpstan/phpstan-strict-rules": "^2", + "phpunit/phpunit": "^10.5.58 || ^12", "symfony/cache": "^4.4 || ^5.4 || ^6.0 || ^7.0", "symfony/finder": "^4.4 || ^5.4 || ^6.0 || ^7.0" }, @@ -1201,7 +1200,7 @@ ], "support": { "issues": "https://github.com/doctrine/persistence/issues", - "source": "https://github.com/doctrine/persistence/tree/4.1.0" + "source": "https://github.com/doctrine/persistence/tree/4.1.1" }, "funding": [ { @@ -1217,7 +1216,7 @@ "type": "tidelift" } ], - "time": "2025-08-21T16:00:31+00:00" + "time": "2025-10-16T20:13:18+00:00" }, { "name": "doctrine/sql-formatter", @@ -2411,16 +2410,16 @@ }, { "name": "symfony/asset", - "version": "v7.3.0", + "version": "7.4.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/asset.git", - "reference": "56c4d9f759247c4e07d8549e3baf7493cb9c3e4b" + "reference": "0f7bccb9ffa1f373cbd659774d90629b2773464f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/asset/zipball/56c4d9f759247c4e07d8549e3baf7493cb9c3e4b", - "reference": "56c4d9f759247c4e07d8549e3baf7493cb9c3e4b", + "url": "https://api.github.com/repos/symfony/asset/zipball/0f7bccb9ffa1f373cbd659774d90629b2773464f", + "reference": "0f7bccb9ffa1f373cbd659774d90629b2773464f", "shasum": "" }, "require": { @@ -2430,9 +2429,9 @@ "symfony/http-foundation": "<6.4" }, "require-dev": { - "symfony/http-client": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0" + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -2460,7 +2459,7 @@ "description": "Manages URL generation and versioning of web assets such as CSS stylesheets, JavaScript files and image files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/asset/tree/v7.3.0" + "source": "https://github.com/symfony/asset/tree/7.4" }, "funding": [ { @@ -2471,48 +2470,53 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-03-05T10:15:41+00:00" + "time": "2025-08-04T07:05:15+00:00" }, { "name": "symfony/asset-mapper", - "version": "v7.3.4", + "version": "7.4.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/asset-mapper.git", - "reference": "0c40c579e27244616cf0fe4d1759aab2ceb99a9a" + "reference": "f4e2a53b70bee07b4ee9eb80f50c530aa8dc164c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/asset-mapper/zipball/0c40c579e27244616cf0fe4d1759aab2ceb99a9a", - "reference": "0c40c579e27244616cf0fe4d1759aab2ceb99a9a", + "url": "https://api.github.com/repos/symfony/asset-mapper/zipball/f4e2a53b70bee07b4ee9eb80f50c530aa8dc164c", + "reference": "f4e2a53b70bee07b4ee9eb80f50c530aa8dc164c", "shasum": "" }, "require": { "composer/semver": "^3.0", "php": ">=8.2", "symfony/deprecation-contracts": "^2.1|^3", - "symfony/filesystem": "^7.1", - "symfony/http-client": "^6.4|^7.0" + "symfony/filesystem": "^7.1|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0" }, "conflict": { "symfony/framework-bundle": "<6.4" }, "require-dev": { - "symfony/asset": "^6.4|^7.0", - "symfony/browser-kit": "^6.4|^7.0", - "symfony/console": "^6.4|^7.0", + "symfony/asset": "^6.4|^7.0|^8.0", + "symfony/browser-kit": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4.13|^7.1.6|^8.0", "symfony/event-dispatcher-contracts": "^3.0", - "symfony/finder": "^6.4|^7.0", - "symfony/framework-bundle": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/process": "^6.4|^7.0", - "symfony/web-link": "^6.4|^7.0" + "symfony/finder": "^6.4|^7.0|^8.0", + "symfony/framework-bundle": "^6.4.13|^7.1.6|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4.13|^7.1.6|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/runtime": "^6.4.13|^7.1.6|^8.0", + "symfony/web-link": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -2540,7 +2544,7 @@ "description": "Maps directories of assets & makes them available in a public directory with versioned filenames.", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/asset-mapper/tree/v7.3.4" + "source": "https://github.com/symfony/asset-mapper/tree/7.4" }, "funding": [ { @@ -2560,20 +2564,20 @@ "type": "tidelift" } ], - "time": "2025-09-22T15:31:00+00:00" + "time": "2025-10-15T18:49:39+00:00" }, { "name": "symfony/cache", - "version": "v7.3.4", + "version": "7.4.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "bf8afc8ffd4bfd3d9c373e417f041d9f1e5b863f" + "reference": "50056324d98fff952c2bd7ba2b88307ea2d1e79b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/bf8afc8ffd4bfd3d9c373e417f041d9f1e5b863f", - "reference": "bf8afc8ffd4bfd3d9c373e417f041d9f1e5b863f", + "url": "https://api.github.com/repos/symfony/cache/zipball/50056324d98fff952c2bd7ba2b88307ea2d1e79b", + "reference": "50056324d98fff952c2bd7ba2b88307ea2d1e79b", "shasum": "" }, "require": { @@ -2581,12 +2585,14 @@ "psr/cache": "^2.0|^3.0", "psr/log": "^1.1|^2|^3", "symfony/cache-contracts": "^3.6", - "symfony/deprecation-contracts": "^2.5|^3.0", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/service-contracts": "^2.5|^3", - "symfony/var-exporter": "^6.4|^7.0" + "symfony/var-exporter": "^6.4|^7.0|^8.0" }, "conflict": { "doctrine/dbal": "<3.6", + "ext-redis": "<6.2", + "ext-relay": "<0.12.1", "symfony/dependency-injection": "<6.4", "symfony/http-kernel": "<6.4", "symfony/var-dumper": "<6.4" @@ -2601,13 +2607,13 @@ "doctrine/dbal": "^3.6|^4", "predis/predis": "^1.1|^2.0", "psr/simple-cache": "^1.0|^2.0|^3.0", - "symfony/clock": "^6.4|^7.0", - "symfony/config": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/filesystem": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/messenger": "^6.4|^7.0", - "symfony/var-dumper": "^6.4|^7.0" + "symfony/clock": "^6.4|^7.0|^8.0", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/filesystem": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -2642,7 +2648,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v7.3.4" + "source": "https://github.com/symfony/cache/tree/7.4" }, "funding": [ { @@ -2662,7 +2668,7 @@ "type": "tidelift" } ], - "time": "2025-09-11T10:12:26+00:00" + "time": "2025-10-16T16:24:39+00:00" }, { "name": "symfony/cache-contracts", @@ -2742,16 +2748,16 @@ }, { "name": "symfony/clock", - "version": "v7.3.0", + "version": "7.4.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/clock.git", - "reference": "b81435fbd6648ea425d1ee96a2d8e68f4ceacd24" + "reference": "9a2e07a0fcc4c76cc356e28942e515a3b388c8cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/clock/zipball/b81435fbd6648ea425d1ee96a2d8e68f4ceacd24", - "reference": "b81435fbd6648ea425d1ee96a2d8e68f4ceacd24", + "url": "https://api.github.com/repos/symfony/clock/zipball/9a2e07a0fcc4c76cc356e28942e515a3b388c8cb", + "reference": "9a2e07a0fcc4c76cc356e28942e515a3b388c8cb", "shasum": "" }, "require": { @@ -2796,7 +2802,7 @@ "time" ], "support": { - "source": "https://github.com/symfony/clock/tree/v7.3.0" + "source": "https://github.com/symfony/clock/tree/7.4" }, "funding": [ { @@ -2807,31 +2813,35 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-25T14:21:43+00:00" + "time": "2025-08-04T07:05:15+00:00" }, { "name": "symfony/config", - "version": "v7.3.4", + "version": "7.4.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "8a09223170046d2cfda3d2e11af01df2c641e961" + "reference": "5ccb0fdc02f6a347dc4b75cc83aa2d61b0b9cc01" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/8a09223170046d2cfda3d2e11af01df2c641e961", - "reference": "8a09223170046d2cfda3d2e11af01df2c641e961", + "url": "https://api.github.com/repos/symfony/config/zipball/5ccb0fdc02f6a347dc4b75cc83aa2d61b0b9cc01", + "reference": "5ccb0fdc02f6a347dc4b75cc83aa2d61b0b9cc01", "shasum": "" }, "require": { "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/filesystem": "^7.1", + "symfony/filesystem": "^7.1|^8.0", "symfony/polyfill-ctype": "~1.8" }, "conflict": { @@ -2839,11 +2849,11 @@ "symfony/service-contracts": "<2.5" }, "require-dev": { - "symfony/event-dispatcher": "^6.4|^7.0", - "symfony/finder": "^6.4|^7.0", - "symfony/messenger": "^6.4|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/finder": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", "symfony/service-contracts": "^2.5|^3", - "symfony/yaml": "^6.4|^7.0" + "symfony/yaml": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -2871,7 +2881,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/v7.3.4" + "source": "https://github.com/symfony/config/tree/7.4" }, "funding": [ { @@ -2891,20 +2901,20 @@ "type": "tidelift" } ], - "time": "2025-09-22T12:46:16+00:00" + "time": "2025-10-23T14:33:20+00:00" }, { "name": "symfony/console", - "version": "v7.3.4", + "version": "7.4.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "2b9c5fafbac0399a20a2e82429e2bd735dcfb7db" + "reference": "c3da86291d89157fe2a9ba2401c4acf1a7c93eba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/2b9c5fafbac0399a20a2e82429e2bd735dcfb7db", - "reference": "2b9c5fafbac0399a20a2e82429e2bd735dcfb7db", + "url": "https://api.github.com/repos/symfony/console/zipball/c3da86291d89157fe2a9ba2401c4acf1a7c93eba", + "reference": "c3da86291d89157fe2a9ba2401c4acf1a7c93eba", "shasum": "" }, "require": { @@ -2912,7 +2922,7 @@ "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", "symfony/service-contracts": "^2.5|^3", - "symfony/string": "^7.2" + "symfony/string": "^7.2|^8.0" }, "conflict": { "symfony/dependency-injection": "<6.4", @@ -2926,16 +2936,16 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/event-dispatcher": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/lock": "^6.4|^7.0", - "symfony/messenger": "^6.4|^7.0", - "symfony/process": "^6.4|^7.0", - "symfony/stopwatch": "^6.4|^7.0", - "symfony/var-dumper": "^6.4|^7.0" + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/lock": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/stopwatch": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -2969,7 +2979,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.3.4" + "source": "https://github.com/symfony/console/tree/7.4" }, "funding": [ { @@ -2989,28 +2999,28 @@ "type": "tidelift" } ], - "time": "2025-09-22T15:31:00+00:00" + "time": "2025-10-15T08:15:57+00:00" }, { "name": "symfony/dependency-injection", - "version": "v7.3.4", + "version": "7.4.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "82119812ab0bf3425c1234d413efd1b19bb92ae4" + "reference": "b9f4c0d4bcb0c7628e563799c38336cf729395c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/82119812ab0bf3425c1234d413efd1b19bb92ae4", - "reference": "82119812ab0bf3425c1234d413efd1b19bb92ae4", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/b9f4c0d4bcb0c7628e563799c38336cf729395c4", + "reference": "b9f4c0d4bcb0c7628e563799c38336cf729395c4", "shasum": "" }, "require": { "php": ">=8.2", "psr/container": "^1.1|^2.0", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/service-contracts": "^3.5", - "symfony/var-exporter": "^6.4.20|^7.2.5" + "symfony/service-contracts": "^3.6", + "symfony/var-exporter": "^6.4.20|^7.2.5|^8.0" }, "conflict": { "ext-psr": "<1.1|>=2", @@ -3023,9 +3033,9 @@ "symfony/service-implementation": "1.1|2.0|3.0" }, "require-dev": { - "symfony/config": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/yaml": "^6.4|^7.0" + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/yaml": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -3053,7 +3063,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/v7.3.4" + "source": "https://github.com/symfony/dependency-injection/tree/7.4" }, "funding": [ { @@ -3073,7 +3083,7 @@ "type": "tidelift" } ], - "time": "2025-09-11T10:12:26+00:00" + "time": "2025-10-23T14:33:20+00:00" }, { "name": "symfony/deprecation-contracts", @@ -3144,16 +3154,16 @@ }, { "name": "symfony/doctrine-bridge", - "version": "v7.3.4", + "version": "7.4.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "21cd48c34a47a0d0e303a590a67c3450fde55888" + "reference": "0b89ae1394ce041a863191cfafb6e078fc12d9db" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/21cd48c34a47a0d0e303a590a67c3450fde55888", - "reference": "21cd48c34a47a0d0e303a590a67c3450fde55888", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/0b89ae1394ce041a863191cfafb6e078fc12d9db", + "reference": "0b89ae1394ce041a863191cfafb6e078fc12d9db", "shasum": "" }, "require": { @@ -3180,7 +3190,7 @@ "symfony/property-info": "<6.4", "symfony/security-bundle": "<6.4", "symfony/security-core": "<6.4", - "symfony/validator": "<6.4" + "symfony/validator": "<7.4" }, "require-dev": { "doctrine/collections": "^1.8|^2.0", @@ -3188,24 +3198,24 @@ "doctrine/dbal": "^3.6|^4", "doctrine/orm": "^2.15|^3", "psr/log": "^1|^2|^3", - "symfony/cache": "^6.4|^7.0", - "symfony/config": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/doctrine-messenger": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/form": "^6.4.6|^7.0.6", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/lock": "^6.4|^7.0", - "symfony/messenger": "^6.4|^7.0", - "symfony/property-access": "^6.4|^7.0", - "symfony/property-info": "^6.4|^7.0", - "symfony/security-core": "^6.4|^7.0", - "symfony/stopwatch": "^6.4|^7.0", - "symfony/translation": "^6.4|^7.0", - "symfony/type-info": "^7.1.8", - "symfony/uid": "^6.4|^7.0", - "symfony/validator": "^6.4|^7.0", - "symfony/var-dumper": "^6.4|^7.0" + "symfony/cache": "^6.4|^7.0|^8.0", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/doctrine-messenger": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/form": "^7.2|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/lock": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/property-access": "^6.4|^7.0|^8.0", + "symfony/property-info": "^6.4|^7.0|^8.0", + "symfony/security-core": "^6.4|^7.0|^8.0", + "symfony/stopwatch": "^6.4|^7.0|^8.0", + "symfony/translation": "^6.4|^7.0|^8.0", + "symfony/type-info": "^7.1.8|^8.0", + "symfony/uid": "^6.4|^7.0|^8.0", + "symfony/validator": "^7.4|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0" }, "type": "symfony-bridge", "autoload": { @@ -3233,7 +3243,7 @@ "description": "Provides integration for Doctrine with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-bridge/tree/v7.3.4" + "source": "https://github.com/symfony/doctrine-bridge/tree/7.4" }, "funding": [ { @@ -3253,20 +3263,20 @@ "type": "tidelift" } ], - "time": "2025-09-24T09:56:23+00:00" + "time": "2025-10-21T11:43:41+00:00" }, { "name": "symfony/dotenv", - "version": "v7.3.2", + "version": "7.4.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/dotenv.git", - "reference": "2192790a11f9e22cbcf9dc705a3ff22a5503923a" + "reference": "4a53037ff205b68310ea43d4e999dac54375751c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dotenv/zipball/2192790a11f9e22cbcf9dc705a3ff22a5503923a", - "reference": "2192790a11f9e22cbcf9dc705a3ff22a5503923a", + "url": "https://api.github.com/repos/symfony/dotenv/zipball/4a53037ff205b68310ea43d4e999dac54375751c", + "reference": "4a53037ff205b68310ea43d4e999dac54375751c", "shasum": "" }, "require": { @@ -3277,8 +3287,8 @@ "symfony/process": "<6.4" }, "require-dev": { - "symfony/console": "^6.4|^7.0", - "symfony/process": "^6.4|^7.0" + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -3311,7 +3321,7 @@ "environment" ], "support": { - "source": "https://github.com/symfony/dotenv/tree/v7.3.2" + "source": "https://github.com/symfony/dotenv/tree/7.4" }, "funding": [ { @@ -3331,36 +3341,37 @@ "type": "tidelift" } ], - "time": "2025-07-10T08:29:33+00:00" + "time": "2025-08-09T22:28:14+00:00" }, { "name": "symfony/error-handler", - "version": "v7.3.4", + "version": "7.4.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "99f81bc944ab8e5dae4f21b4ca9972698bbad0e4" + "reference": "b40ab8ba2e572c512f2c415c795c76383e09001c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/99f81bc944ab8e5dae4f21b4ca9972698bbad0e4", - "reference": "99f81bc944ab8e5dae4f21b4ca9972698bbad0e4", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/b40ab8ba2e572c512f2c415c795c76383e09001c", + "reference": "b40ab8ba2e572c512f2c415c795c76383e09001c", "shasum": "" }, "require": { "php": ">=8.2", "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^6.4|^7.0" + "symfony/polyfill-php85": "^1.32", + "symfony/var-dumper": "^6.4|^7.0|^8.0" }, "conflict": { "symfony/deprecation-contracts": "<2.5", "symfony/http-kernel": "<6.4" }, "require-dev": { - "symfony/console": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0|^8.0", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/serializer": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/serializer": "^6.4|^7.0|^8.0", "symfony/webpack-encore-bundle": "^1.0|^2.0" }, "bin": [ @@ -3392,7 +3403,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v7.3.4" + "source": "https://github.com/symfony/error-handler/tree/7.4" }, "funding": [ { @@ -3412,20 +3423,20 @@ "type": "tidelift" } ], - "time": "2025-09-11T10:12:26+00:00" + "time": "2025-09-11T10:15:23+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v7.3.3", + "version": "7.4.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "b7dc69e71de420ac04bc9ab830cf3ffebba48191" + "reference": "899a660f2d62e493ce6e68844b9089d4e1a639a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/b7dc69e71de420ac04bc9ab830cf3ffebba48191", - "reference": "b7dc69e71de420ac04bc9ab830cf3ffebba48191", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/899a660f2d62e493ce6e68844b9089d4e1a639a1", + "reference": "899a660f2d62e493ce6e68844b9089d4e1a639a1", "shasum": "" }, "require": { @@ -3442,13 +3453,13 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/error-handler": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/error-handler": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", "symfony/service-contracts": "^2.5|^3", - "symfony/stopwatch": "^6.4|^7.0" + "symfony/stopwatch": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -3476,7 +3487,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v7.3.3" + "source": "https://github.com/symfony/event-dispatcher/tree/7.4" }, "funding": [ { @@ -3496,7 +3507,7 @@ "type": "tidelift" } ], - "time": "2025-08-13T11:49:31+00:00" + "time": "2025-10-05T07:10:02+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -3576,21 +3587,21 @@ }, { "name": "symfony/expression-language", - "version": "v7.3.2", + "version": "7.4.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/expression-language.git", - "reference": "32d2d19c62e58767e6552166c32fb259975d2b23" + "reference": "b53192cdb024d93dd5286110831735a5f3d9ba32" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/expression-language/zipball/32d2d19c62e58767e6552166c32fb259975d2b23", - "reference": "32d2d19c62e58767e6552166c32fb259975d2b23", + "url": "https://api.github.com/repos/symfony/expression-language/zipball/b53192cdb024d93dd5286110831735a5f3d9ba32", + "reference": "b53192cdb024d93dd5286110831735a5f3d9ba32", "shasum": "" }, "require": { "php": ">=8.2", - "symfony/cache": "^6.4|^7.0", + "symfony/cache": "^6.4|^7.0|^8.0", "symfony/deprecation-contracts": "^2.5|^3", "symfony/service-contracts": "^2.5|^3" }, @@ -3620,7 +3631,7 @@ "description": "Provides an engine that can compile and evaluate expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/expression-language/tree/v7.3.2" + "source": "https://github.com/symfony/expression-language/tree/7.4" }, "funding": [ { @@ -3640,20 +3651,20 @@ "type": "tidelift" } ], - "time": "2025-07-10T08:29:33+00:00" + "time": "2025-08-13T16:46:49+00:00" }, { "name": "symfony/filesystem", - "version": "v7.3.2", + "version": "7.4.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "edcbb768a186b5c3f25d0643159a787d3e63b7fd" + "reference": "633c6fdfb2eac90041c2de30ad1ccff95a671f66" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/edcbb768a186b5c3f25d0643159a787d3e63b7fd", - "reference": "edcbb768a186b5c3f25d0643159a787d3e63b7fd", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/633c6fdfb2eac90041c2de30ad1ccff95a671f66", + "reference": "633c6fdfb2eac90041c2de30ad1ccff95a671f66", "shasum": "" }, "require": { @@ -3662,7 +3673,7 @@ "symfony/polyfill-mbstring": "~1.8" }, "require-dev": { - "symfony/process": "^6.4|^7.0" + "symfony/process": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -3690,7 +3701,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v7.3.2" + "source": "https://github.com/symfony/filesystem/tree/7.4" }, "funding": [ { @@ -3710,27 +3721,27 @@ "type": "tidelift" } ], - "time": "2025-07-07T08:17:47+00:00" + "time": "2025-08-12T20:20:59+00:00" }, { "name": "symfony/finder", - "version": "v7.3.2", + "version": "7.4.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "2a6614966ba1074fa93dae0bc804227422df4dfe" + "reference": "38665c9607ce1fd17beaab3ea5d68e87ac5ed385" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/2a6614966ba1074fa93dae0bc804227422df4dfe", - "reference": "2a6614966ba1074fa93dae0bc804227422df4dfe", + "url": "https://api.github.com/repos/symfony/finder/zipball/38665c9607ce1fd17beaab3ea5d68e87ac5ed385", + "reference": "38665c9607ce1fd17beaab3ea5d68e87ac5ed385", "shasum": "" }, "require": { "php": ">=8.2" }, "require-dev": { - "symfony/filesystem": "^6.4|^7.0" + "symfony/filesystem": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -3758,7 +3769,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v7.3.2" + "source": "https://github.com/symfony/finder/tree/7.4" }, "funding": [ { @@ -3778,7 +3789,7 @@ "type": "tidelift" } ], - "time": "2025-07-15T13:41:35+00:00" + "time": "2025-10-15T18:49:39+00:00" }, { "name": "symfony/flex", @@ -3854,27 +3865,27 @@ }, { "name": "symfony/form", - "version": "v7.3.4", + "version": "7.4.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/form.git", - "reference": "7b3eee0f4d4dfd1ff1be70a27474197330c61736" + "reference": "99061631c4e4c8093d443b889329e3edd2d2df71" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/form/zipball/7b3eee0f4d4dfd1ff1be70a27474197330c61736", - "reference": "7b3eee0f4d4dfd1ff1be70a27474197330c61736", + "url": "https://api.github.com/repos/symfony/form/zipball/99061631c4e4c8093d443b889329e3edd2d2df71", + "reference": "99061631c4e4c8093d443b889329e3edd2d2df71", "shasum": "" }, "require": { "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/event-dispatcher": "^6.4|^7.0", - "symfony/options-resolver": "^7.3", + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/options-resolver": "^7.3|^8.0", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-intl-icu": "^1.21", "symfony/polyfill-mbstring": "~1.0", - "symfony/property-access": "^6.4|^7.0", + "symfony/property-access": "^6.4|^7.0|^8.0", "symfony/service-contracts": "^2.5|^3" }, "conflict": { @@ -3884,26 +3895,28 @@ "symfony/error-handler": "<6.4", "symfony/framework-bundle": "<6.4", "symfony/http-kernel": "<6.4", + "symfony/intl": "<7.4", "symfony/translation": "<6.4.3|>=7.0,<7.0.3", "symfony/translation-contracts": "<2.5", "symfony/twig-bridge": "<6.4" }, "require-dev": { "doctrine/collections": "^1.0|^2.0", - "symfony/config": "^6.4|^7.0", - "symfony/console": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/html-sanitizer": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/intl": "^6.4|^7.0", - "symfony/security-core": "^6.4|^7.0", - "symfony/security-csrf": "^6.4|^7.0", - "symfony/translation": "^6.4.3|^7.0.3", - "symfony/uid": "^6.4|^7.0", - "symfony/validator": "^6.4|^7.0", - "symfony/var-dumper": "^6.4|^7.0" + "symfony/clock": "^6.4|^7.0|^8.0", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/html-sanitizer": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/intl": "^7.4|^8.0", + "symfony/security-core": "^6.4|^7.0|^8.0", + "symfony/security-csrf": "^6.4|^7.0|^8.0", + "symfony/translation": "^6.4.3|^7.0.3|^8.0", + "symfony/uid": "^6.4|^7.0|^8.0", + "symfony/validator": "^6.4.12|^7.1.5|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -3931,7 +3944,7 @@ "description": "Allows to easily create, process and reuse HTML forms", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/form/tree/v7.3.4" + "source": "https://github.com/symfony/form/tree/7.4" }, "funding": [ { @@ -3951,38 +3964,39 @@ "type": "tidelift" } ], - "time": "2025-09-22T15:31:00+00:00" + "time": "2025-10-10T11:54:29+00:00" }, { "name": "symfony/framework-bundle", - "version": "v7.3.4", + "version": "7.4.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "b13e7cec5a144c8dba6f4233a2c53c00bc29e140" + "reference": "0c00f8728b90efdc9944d2bca6a0f932d561b2ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/b13e7cec5a144c8dba6f4233a2c53c00bc29e140", - "reference": "b13e7cec5a144c8dba6f4233a2c53c00bc29e140", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/0c00f8728b90efdc9944d2bca6a0f932d561b2ba", + "reference": "0c00f8728b90efdc9944d2bca6a0f932d561b2ba", "shasum": "" }, "require": { "composer-runtime-api": ">=2.1", "ext-xml": "*", "php": ">=8.2", - "symfony/cache": "^6.4|^7.0", - "symfony/config": "^7.3", - "symfony/dependency-injection": "^7.2", + "symfony/cache": "^6.4.12|^7.0|^8.0", + "symfony/config": "^7.4|^8.0", + "symfony/dependency-injection": "^7.4|^8.0", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/error-handler": "^7.3", - "symfony/event-dispatcher": "^6.4|^7.0", - "symfony/filesystem": "^7.1", - "symfony/finder": "^6.4|^7.0", - "symfony/http-foundation": "^7.3", - "symfony/http-kernel": "^7.2", + "symfony/error-handler": "^7.3|^8.0", + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/filesystem": "^7.1|^8.0", + "symfony/finder": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^7.4|^8.0", + "symfony/http-kernel": "^7.2|^8.0", "symfony/polyfill-mbstring": "~1.0", - "symfony/routing": "^6.4|^7.0" + "symfony/polyfill-php85": "^1.32", + "symfony/routing": "^7.4|^8.0" }, "conflict": { "doctrine/persistence": "<1.3", @@ -3996,12 +4010,10 @@ "symfony/dotenv": "<6.4", "symfony/form": "<6.4", "symfony/http-client": "<6.4", - "symfony/json-streamer": ">=7.4", "symfony/lock": "<6.4", "symfony/mailer": "<6.4", - "symfony/messenger": "<6.4", + "symfony/messenger": "<7.4", "symfony/mime": "<6.4", - "symfony/object-mapper": ">=7.4", "symfony/property-access": "<6.4", "symfony/property-info": "<6.4", "symfony/runtime": "<6.4.13|>=7.0,<7.1.6", @@ -4016,51 +4028,52 @@ "symfony/validator": "<6.4", "symfony/web-profiler-bundle": "<6.4", "symfony/webhook": "<7.2", - "symfony/workflow": "<7.3.0-beta2" + "symfony/workflow": "<7.4" }, "require-dev": { "doctrine/persistence": "^1.3|^2|^3", "dragonmantank/cron-expression": "^3.1", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", "seld/jsonlint": "^1.10", - "symfony/asset": "^6.4|^7.0", - "symfony/asset-mapper": "^6.4|^7.0", - "symfony/browser-kit": "^6.4|^7.0", - "symfony/clock": "^6.4|^7.0", - "symfony/console": "^6.4|^7.0", - "symfony/css-selector": "^6.4|^7.0", - "symfony/dom-crawler": "^6.4|^7.0", - "symfony/dotenv": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/form": "^6.4|^7.0", - "symfony/html-sanitizer": "^6.4|^7.0", - "symfony/http-client": "^6.4|^7.0", - "symfony/json-streamer": "7.3.*", - "symfony/lock": "^6.4|^7.0", - "symfony/mailer": "^6.4|^7.0", - "symfony/messenger": "^6.4|^7.0", - "symfony/mime": "^6.4|^7.0", - "symfony/notifier": "^6.4|^7.0", - "symfony/object-mapper": "^v7.3.0-beta2", + "symfony/asset": "^6.4|^7.0|^8.0", + "symfony/asset-mapper": "^6.4|^7.0|^8.0", + "symfony/browser-kit": "^6.4|^7.0|^8.0", + "symfony/clock": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/css-selector": "^6.4|^7.0|^8.0", + "symfony/dom-crawler": "^6.4|^7.0|^8.0", + "symfony/dotenv": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/form": "^6.4|^7.0|^8.0", + "symfony/html-sanitizer": "^6.4|^7.0|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/json-streamer": "^7.3|^8.0", + "symfony/lock": "^6.4|^7.0|^8.0", + "symfony/mailer": "^6.4|^7.0|^8.0", + "symfony/messenger": "^7.4|^8.0", + "symfony/mime": "^6.4|^7.0|^8.0", + "symfony/notifier": "^6.4|^7.0|^8.0", + "symfony/object-mapper": "^7.3|^8.0", "symfony/polyfill-intl-icu": "~1.0", - "symfony/process": "^6.4|^7.0", - "symfony/property-info": "^6.4|^7.0", - "symfony/rate-limiter": "^6.4|^7.0", - "symfony/scheduler": "^6.4.4|^7.0.4", - "symfony/security-bundle": "^6.4|^7.0", - "symfony/semaphore": "^6.4|^7.0", - "symfony/serializer": "^7.2.5", - "symfony/stopwatch": "^6.4|^7.0", - "symfony/string": "^6.4|^7.0", - "symfony/translation": "^7.3", - "symfony/twig-bundle": "^6.4|^7.0", - "symfony/type-info": "^7.1.8", - "symfony/uid": "^6.4|^7.0", - "symfony/validator": "^6.4|^7.0", - "symfony/web-link": "^6.4|^7.0", - "symfony/webhook": "^7.2", - "symfony/workflow": "^7.3", - "symfony/yaml": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/property-info": "^6.4|^7.0|^8.0", + "symfony/rate-limiter": "^6.4|^7.0|^8.0", + "symfony/runtime": "^6.4.13|^7.1.6|^8.0", + "symfony/scheduler": "^6.4.4|^7.0.4|^8.0", + "symfony/security-bundle": "^6.4|^7.0|^8.0", + "symfony/semaphore": "^6.4|^7.0|^8.0", + "symfony/serializer": "^7.2.5|^8.0", + "symfony/stopwatch": "^6.4|^7.0|^8.0", + "symfony/string": "^6.4|^7.0|^8.0", + "symfony/translation": "^7.3|^8.0", + "symfony/twig-bundle": "^6.4|^7.0|^8.0", + "symfony/type-info": "^7.1.8|^8.0", + "symfony/uid": "^6.4|^7.0|^8.0", + "symfony/validator": "^7.4|^8.0", + "symfony/web-link": "^6.4|^7.0|^8.0", + "symfony/webhook": "^7.2|^8.0", + "symfony/workflow": "^7.4|^8.0", + "symfony/yaml": "^7.3|^8.0", "twig/twig": "^3.12" }, "type": "symfony-bundle", @@ -4089,7 +4102,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/v7.3.4" + "source": "https://github.com/symfony/framework-bundle/tree/7.4" }, "funding": [ { @@ -4109,27 +4122,28 @@ "type": "tidelift" } ], - "time": "2025-09-17T05:51:54+00:00" + "time": "2025-10-23T14:33:20+00:00" }, { "name": "symfony/html-sanitizer", - "version": "v7.3.3", + "version": "7.4.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/html-sanitizer.git", - "reference": "8740fc48979f649dee8b8fc51a2698e5c190bf12" + "reference": "c55905f8a7090f30287757960b6e840614a5991a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/html-sanitizer/zipball/8740fc48979f649dee8b8fc51a2698e5c190bf12", - "reference": "8740fc48979f649dee8b8fc51a2698e5c190bf12", + "url": "https://api.github.com/repos/symfony/html-sanitizer/zipball/c55905f8a7090f30287757960b6e840614a5991a", + "reference": "c55905f8a7090f30287757960b6e840614a5991a", "shasum": "" }, "require": { "ext-dom": "*", "league/uri": "^6.5|^7.0", "masterminds/html5": "^2.7.2", - "php": ">=8.2" + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3" }, "type": "library", "autoload": { @@ -4162,7 +4176,7 @@ "sanitizer" ], "support": { - "source": "https://github.com/symfony/html-sanitizer/tree/v7.3.3" + "source": "https://github.com/symfony/html-sanitizer/tree/7.4" }, "funding": [ { @@ -4182,20 +4196,20 @@ "type": "tidelift" } ], - "time": "2025-08-12T10:34:03+00:00" + "time": "2025-10-01T05:47:26+00:00" }, { "name": "symfony/http-client", - "version": "v7.3.4", + "version": "7.4.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "4b62871a01c49457cf2a8e560af7ee8a94b87a62" + "reference": "47ed7b551cadc882df160d8bc70fa15dc02d379a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/4b62871a01c49457cf2a8e560af7ee8a94b87a62", - "reference": "4b62871a01c49457cf2a8e560af7ee8a94b87a62", + "url": "https://api.github.com/repos/symfony/http-client/zipball/47ed7b551cadc882df160d8bc70fa15dc02d379a", + "reference": "47ed7b551cadc882df160d8bc70fa15dc02d379a", "shasum": "" }, "require": { @@ -4226,12 +4240,13 @@ "php-http/httplug": "^1.0|^2.0", "psr/http-client": "^1.0", "symfony/amphp-http-client-meta": "^1.0|^2.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/messenger": "^6.4|^7.0", - "symfony/process": "^6.4|^7.0", - "symfony/rate-limiter": "^6.4|^7.0", - "symfony/stopwatch": "^6.4|^7.0" + "symfony/cache": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/rate-limiter": "^6.4|^7.0|^8.0", + "symfony/stopwatch": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -4262,7 +4277,7 @@ "http" ], "support": { - "source": "https://github.com/symfony/http-client/tree/v7.3.4" + "source": "https://github.com/symfony/http-client/tree/7.4" }, "funding": [ { @@ -4282,7 +4297,7 @@ "type": "tidelift" } ], - "time": "2025-09-11T10:12:26+00:00" + "time": "2025-10-15T06:55:53+00:00" }, { "name": "symfony/http-client-contracts", @@ -4364,23 +4379,22 @@ }, { "name": "symfony/http-foundation", - "version": "v7.3.4", + "version": "7.4.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "c061c7c18918b1b64268771aad04b40be41dd2e6" + "reference": "0960bc2879ee31747b31a13ca4baa8e5f5212b9a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/c061c7c18918b1b64268771aad04b40be41dd2e6", - "reference": "c061c7c18918b1b64268771aad04b40be41dd2e6", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/0960bc2879ee31747b31a13ca4baa8e5f5212b9a", + "reference": "0960bc2879ee31747b31a13ca4baa8e5f5212b9a", "shasum": "" }, "require": { "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3.0", - "symfony/polyfill-mbstring": "~1.1", - "symfony/polyfill-php83": "^1.27" + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "^1.1" }, "conflict": { "doctrine/dbal": "<3.6", @@ -4389,13 +4403,13 @@ "require-dev": { "doctrine/dbal": "^3.6|^4", "predis/predis": "^1.1|^2.0", - "symfony/cache": "^6.4.12|^7.1.5", - "symfony/clock": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/mime": "^6.4|^7.0", - "symfony/rate-limiter": "^6.4|^7.0" + "symfony/cache": "^6.4.12|^7.1.5|^8.0", + "symfony/clock": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/mime": "^6.4|^7.0|^8.0", + "symfony/rate-limiter": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -4423,7 +4437,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v7.3.4" + "source": "https://github.com/symfony/http-foundation/tree/7.4" }, "funding": [ { @@ -4443,29 +4457,29 @@ "type": "tidelift" } ], - "time": "2025-09-16T08:38:17+00:00" + "time": "2025-10-14T10:51:45+00:00" }, { "name": "symfony/http-kernel", - "version": "v7.3.4", + "version": "7.4.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "b796dffea7821f035047235e076b60ca2446e3cf" + "reference": "41b81fabe3a1fa56dde57afb1c229d7972c9af1c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/b796dffea7821f035047235e076b60ca2446e3cf", - "reference": "b796dffea7821f035047235e076b60ca2446e3cf", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/41b81fabe3a1fa56dde57afb1c229d7972c9af1c", + "reference": "41b81fabe3a1fa56dde57afb1c229d7972c9af1c", "shasum": "" }, "require": { "php": ">=8.2", "psr/log": "^1|^2|^3", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/error-handler": "^6.4|^7.0", - "symfony/event-dispatcher": "^7.3", - "symfony/http-foundation": "^7.3", + "symfony/error-handler": "^6.4|^7.0|^8.0", + "symfony/event-dispatcher": "^7.3|^8.0", + "symfony/http-foundation": "^7.4|^8.0", "symfony/polyfill-ctype": "^1.8" }, "conflict": { @@ -4492,27 +4506,27 @@ }, "require-dev": { "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^6.4|^7.0", - "symfony/clock": "^6.4|^7.0", - "symfony/config": "^6.4|^7.0", - "symfony/console": "^6.4|^7.0", - "symfony/css-selector": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/dom-crawler": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/finder": "^6.4|^7.0", + "symfony/browser-kit": "^6.4|^7.0|^8.0", + "symfony/clock": "^6.4|^7.0|^8.0", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/css-selector": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/dom-crawler": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/finder": "^6.4|^7.0|^8.0", "symfony/http-client-contracts": "^2.5|^3", - "symfony/process": "^6.4|^7.0", - "symfony/property-access": "^7.1", - "symfony/routing": "^6.4|^7.0", - "symfony/serializer": "^7.1", - "symfony/stopwatch": "^6.4|^7.0", - "symfony/translation": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/property-access": "^7.1|^8.0", + "symfony/routing": "^6.4|^7.0|^8.0", + "symfony/serializer": "^7.1|^8.0", + "symfony/stopwatch": "^6.4|^7.0|^8.0", + "symfony/translation": "^6.4|^7.0|^8.0", "symfony/translation-contracts": "^2.5|^3", - "symfony/uid": "^6.4|^7.0", - "symfony/validator": "^6.4|^7.0", - "symfony/var-dumper": "^6.4|^7.0", - "symfony/var-exporter": "^6.4|^7.0", + "symfony/uid": "^6.4|^7.0|^8.0", + "symfony/validator": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0", + "symfony/var-exporter": "^6.4|^7.0|^8.0", "twig/twig": "^3.12" }, "type": "library", @@ -4541,7 +4555,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v7.3.4" + "source": "https://github.com/symfony/http-kernel/tree/7.4" }, "funding": [ { @@ -4561,20 +4575,20 @@ "type": "tidelift" } ], - "time": "2025-09-27T12:32:17+00:00" + "time": "2025-10-14T19:17:33+00:00" }, { "name": "symfony/intl", - "version": "v7.3.4", + "version": "7.4.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/intl.git", - "reference": "e6db84864655885d9dac676a9d7dde0d904fda54" + "reference": "130a74468e673a1063819e193645a160862e1872" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/intl/zipball/e6db84864655885d9dac676a9d7dde0d904fda54", - "reference": "e6db84864655885d9dac676a9d7dde0d904fda54", + "url": "https://api.github.com/repos/symfony/intl/zipball/130a74468e673a1063819e193645a160862e1872", + "reference": "130a74468e673a1063819e193645a160862e1872", "shasum": "" }, "require": { @@ -4585,8 +4599,8 @@ "symfony/string": "<7.1" }, "require-dev": { - "symfony/filesystem": "^6.4|^7.0", - "symfony/var-exporter": "^6.4|^7.0" + "symfony/filesystem": "^6.4|^7.0|^8.0", + "symfony/var-exporter": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -4631,7 +4645,7 @@ "localization" ], "support": { - "source": "https://github.com/symfony/intl/tree/v7.3.4" + "source": "https://github.com/symfony/intl/tree/7.4" }, "funding": [ { @@ -4651,20 +4665,20 @@ "type": "tidelift" } ], - "time": "2025-09-08T14:11:30+00:00" + "time": "2025-10-01T06:11:49+00:00" }, { "name": "symfony/mailer", - "version": "v7.3.4", + "version": "7.4.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "ab97ef2f7acf0216955f5845484235113047a31d" + "reference": "367480d68b6a0272e2ed9f7be641941b9b783f78" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/ab97ef2f7acf0216955f5845484235113047a31d", - "reference": "ab97ef2f7acf0216955f5845484235113047a31d", + "url": "https://api.github.com/repos/symfony/mailer/zipball/367480d68b6a0272e2ed9f7be641941b9b783f78", + "reference": "367480d68b6a0272e2ed9f7be641941b9b783f78", "shasum": "" }, "require": { @@ -4672,8 +4686,8 @@ "php": ">=8.2", "psr/event-dispatcher": "^1", "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^6.4|^7.0", - "symfony/mime": "^7.2", + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/mime": "^7.2|^8.0", "symfony/service-contracts": "^2.5|^3" }, "conflict": { @@ -4684,10 +4698,10 @@ "symfony/twig-bridge": "<6.4" }, "require-dev": { - "symfony/console": "^6.4|^7.0", - "symfony/http-client": "^6.4|^7.0", - "symfony/messenger": "^6.4|^7.0", - "symfony/twig-bridge": "^6.4|^7.0" + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/twig-bridge": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -4715,7 +4729,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v7.3.4" + "source": "https://github.com/symfony/mailer/tree/7.4" }, "funding": [ { @@ -4735,24 +4749,25 @@ "type": "tidelift" } ], - "time": "2025-09-17T05:51:54+00:00" + "time": "2025-10-06T14:44:54+00:00" }, { "name": "symfony/mime", - "version": "v7.3.4", + "version": "7.4.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "b1b828f69cbaf887fa835a091869e55df91d0e35" + "reference": "adb6275d178ac5fabb59ac18d42bbbf887f809bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/b1b828f69cbaf887fa835a091869e55df91d0e35", - "reference": "b1b828f69cbaf887fa835a091869e55df91d0e35", + "url": "https://api.github.com/repos/symfony/mime/zipball/adb6275d178ac5fabb59ac18d42bbbf887f809bc", + "reference": "adb6275d178ac5fabb59ac18d42bbbf887f809bc", "shasum": "" }, "require": { "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-intl-idn": "^1.10", "symfony/polyfill-mbstring": "^1.0" }, @@ -4767,11 +4782,11 @@ "egulias/email-validator": "^2.1.10|^3.1|^4", "league/html-to-markdown": "^5.0", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/process": "^6.4|^7.0", - "symfony/property-access": "^6.4|^7.0", - "symfony/property-info": "^6.4|^7.0", - "symfony/serializer": "^6.4.3|^7.0.3" + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/property-access": "^6.4|^7.0|^8.0", + "symfony/property-info": "^6.4|^7.0|^8.0", + "symfony/serializer": "^6.4.3|^7.0.3|^8.0" }, "type": "library", "autoload": { @@ -4803,7 +4818,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v7.3.4" + "source": "https://github.com/symfony/mime/tree/7.4" }, "funding": [ { @@ -4823,26 +4838,27 @@ "type": "tidelift" } ], - "time": "2025-09-16T08:38:17+00:00" + "time": "2025-09-16T08:41:45+00:00" }, { "name": "symfony/monolog-bridge", - "version": "v7.3.4", + "version": "7.4.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bridge.git", - "reference": "7acf2abe23e5019451399ba69fc8ed3d61d4d8f0" + "reference": "f851e0e279c31f0c79e761a18c40a22c3e843767" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/7acf2abe23e5019451399ba69fc8ed3d61d4d8f0", - "reference": "7acf2abe23e5019451399ba69fc8ed3d61d4d8f0", + "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/f851e0e279c31f0c79e761a18c40a22c3e843767", + "reference": "f851e0e279c31f0c79e761a18c40a22c3e843767", "shasum": "" }, "require": { "monolog/monolog": "^3", "php": ">=8.2", - "symfony/http-kernel": "^6.4|^7.0", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/http-kernel": "^6.4|^7.0|^8.0", "symfony/service-contracts": "^2.5|^3" }, "conflict": { @@ -4851,13 +4867,13 @@ "symfony/security-core": "<6.4" }, "require-dev": { - "symfony/console": "^6.4|^7.0", - "symfony/http-client": "^6.4|^7.0", - "symfony/mailer": "^6.4|^7.0", - "symfony/messenger": "^6.4|^7.0", - "symfony/mime": "^6.4|^7.0", - "symfony/security-core": "^6.4|^7.0", - "symfony/var-dumper": "^6.4|^7.0" + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/mailer": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/mime": "^6.4|^7.0|^8.0", + "symfony/security-core": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0" }, "type": "symfony-bridge", "autoload": { @@ -4885,7 +4901,7 @@ "description": "Provides integration for Monolog with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/monolog-bridge/tree/v7.3.4" + "source": "https://github.com/symfony/monolog-bridge/tree/7.4" }, "funding": [ { @@ -4905,7 +4921,7 @@ "type": "tidelift" } ], - "time": "2025-09-24T16:45:39+00:00" + "time": "2025-10-14T19:17:33+00:00" }, { "name": "symfony/monolog-bundle", @@ -4990,16 +5006,16 @@ }, { "name": "symfony/options-resolver", - "version": "v7.3.3", + "version": "7.4.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "0ff2f5c3df08a395232bbc3c2eb7e84912df911d" + "reference": "3324bca1ff334c8807a3968882edb76ea708b955" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/0ff2f5c3df08a395232bbc3c2eb7e84912df911d", - "reference": "0ff2f5c3df08a395232bbc3c2eb7e84912df911d", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/3324bca1ff334c8807a3968882edb76ea708b955", + "reference": "3324bca1ff334c8807a3968882edb76ea708b955", "shasum": "" }, "require": { @@ -5037,7 +5053,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v7.3.3" + "source": "https://github.com/symfony/options-resolver/tree/7.4" }, "funding": [ { @@ -5057,20 +5073,20 @@ "type": "tidelift" } ], - "time": "2025-08-05T10:16:07+00:00" + "time": "2025-08-13T16:46:49+00:00" }, { "name": "symfony/password-hasher", - "version": "v7.3.0", + "version": "7.4.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/password-hasher.git", - "reference": "31fbe66af859582a20b803f38be96be8accdf2c3" + "reference": "aa075ce6f54fe931f03c1e382597912f4fd94e1e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/password-hasher/zipball/31fbe66af859582a20b803f38be96be8accdf2c3", - "reference": "31fbe66af859582a20b803f38be96be8accdf2c3", + "url": "https://api.github.com/repos/symfony/password-hasher/zipball/aa075ce6f54fe931f03c1e382597912f4fd94e1e", + "reference": "aa075ce6f54fe931f03c1e382597912f4fd94e1e", "shasum": "" }, "require": { @@ -5080,8 +5096,8 @@ "symfony/security-core": "<6.4" }, "require-dev": { - "symfony/console": "^6.4|^7.0", - "symfony/security-core": "^6.4|^7.0" + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/security-core": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -5113,7 +5129,7 @@ "password" ], "support": { - "source": "https://github.com/symfony/password-hasher/tree/v7.3.0" + "source": "https://github.com/symfony/password-hasher/tree/7.4" }, "funding": [ { @@ -5124,12 +5140,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": "2025-02-04T08:22:58+00:00" + "time": "2025-08-13T16:46:49+00:00" }, { "name": "symfony/polyfill-intl-grapheme", @@ -5803,18 +5823,98 @@ ], "time": "2025-06-24T13:30:11+00:00" }, + { + "name": "symfony/polyfill-php85", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php85.git", + "reference": "d4e5fcd4ab3d998ab16c0db48e6cbb9a01993f91" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php85/zipball/d4e5fcd4ab3d998ab16c0db48e6cbb9a01993f91", + "reference": "d4e5fcd4ab3d998ab16c0db48e6cbb9a01993f91", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php85\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.5+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php85/tree/v1.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-06-23T16:12:55+00:00" + }, { "name": "symfony/process", - "version": "v7.3.4", + "version": "7.4.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "f24f8f316367b30810810d4eb30c543d7003ff3b" + "reference": "7ca8dc2d0dcf4882658313aba8be5d9fd01026c8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/f24f8f316367b30810810d4eb30c543d7003ff3b", - "reference": "f24f8f316367b30810810d4eb30c543d7003ff3b", + "url": "https://api.github.com/repos/symfony/process/zipball/7ca8dc2d0dcf4882658313aba8be5d9fd01026c8", + "reference": "7ca8dc2d0dcf4882658313aba8be5d9fd01026c8", "shasum": "" }, "require": { @@ -5846,7 +5946,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v7.3.4" + "source": "https://github.com/symfony/process/tree/7.4" }, "funding": [ { @@ -5866,28 +5966,29 @@ "type": "tidelift" } ], - "time": "2025-09-11T10:12:26+00:00" + "time": "2025-10-16T11:21:06+00:00" }, { "name": "symfony/property-access", - "version": "v7.3.3", + "version": "7.4.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/property-access.git", - "reference": "4a4389e5c8bd1d0320d80a23caa6a1ac71cb81a7" + "reference": "537626149d2910ca43eb9ce465654366bf4442f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/4a4389e5c8bd1d0320d80a23caa6a1ac71cb81a7", - "reference": "4a4389e5c8bd1d0320d80a23caa6a1ac71cb81a7", + "url": "https://api.github.com/repos/symfony/property-access/zipball/537626149d2910ca43eb9ce465654366bf4442f4", + "reference": "537626149d2910ca43eb9ce465654366bf4442f4", "shasum": "" }, "require": { "php": ">=8.2", - "symfony/property-info": "^6.4|^7.0" + "symfony/property-info": "^6.4|^7.0|^8.0" }, "require-dev": { - "symfony/cache": "^6.4|^7.0" + "symfony/cache": "^6.4|^7.0|^8.0", + "symfony/var-exporter": "^6.4.1|^7.0.1|^8.0" }, "type": "library", "autoload": { @@ -5926,7 +6027,7 @@ "reflection" ], "support": { - "source": "https://github.com/symfony/property-access/tree/v7.3.3" + "source": "https://github.com/symfony/property-access/tree/7.4" }, "funding": [ { @@ -5946,27 +6047,27 @@ "type": "tidelift" } ], - "time": "2025-08-04T15:15:28+00:00" + "time": "2025-09-08T21:14:32+00:00" }, { "name": "symfony/property-info", - "version": "v7.3.4", + "version": "7.4.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", - "reference": "7b6db23f23d13ada41e1cb484748a8ec028fbace" + "reference": "de3f7d4daf68811567621e9e895d95462e7d70d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/7b6db23f23d13ada41e1cb484748a8ec028fbace", - "reference": "7b6db23f23d13ada41e1cb484748a8ec028fbace", + "url": "https://api.github.com/repos/symfony/property-info/zipball/de3f7d4daf68811567621e9e895d95462e7d70d0", + "reference": "de3f7d4daf68811567621e9e895d95462e7d70d0", "shasum": "" }, "require": { "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/string": "^6.4|^7.0", - "symfony/type-info": "~7.2.8|^7.3.1" + "symfony/string": "^6.4|^7.0|^8.0", + "symfony/type-info": "^7.3.5|^8.0" }, "conflict": { "phpdocumentor/reflection-docblock": "<5.2", @@ -5978,9 +6079,9 @@ "require-dev": { "phpdocumentor/reflection-docblock": "^5.2", "phpstan/phpdoc-parser": "^1.0|^2.0", - "symfony/cache": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/serializer": "^6.4|^7.0" + "symfony/cache": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/serializer": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -6016,7 +6117,7 @@ "validator" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v7.3.4" + "source": "https://github.com/symfony/property-info/tree/7.4" }, "funding": [ { @@ -6036,20 +6137,20 @@ "type": "tidelift" } ], - "time": "2025-09-15T13:55:54+00:00" + "time": "2025-10-06T15:39:23+00:00" }, { "name": "symfony/routing", - "version": "v7.3.4", + "version": "7.4.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "8dc648e159e9bac02b703b9fbd937f19ba13d07c" + "reference": "b76bdfd78bbc9261ea4577ffa4bc7384ddb78ea7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/8dc648e159e9bac02b703b9fbd937f19ba13d07c", - "reference": "8dc648e159e9bac02b703b9fbd937f19ba13d07c", + "url": "https://api.github.com/repos/symfony/routing/zipball/b76bdfd78bbc9261ea4577ffa4bc7384ddb78ea7", + "reference": "b76bdfd78bbc9261ea4577ffa4bc7384ddb78ea7", "shasum": "" }, "require": { @@ -6063,11 +6164,11 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/yaml": "^6.4|^7.0" + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/yaml": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -6101,7 +6202,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v7.3.4" + "source": "https://github.com/symfony/routing/tree/7.4" }, "funding": [ { @@ -6121,20 +6222,20 @@ "type": "tidelift" } ], - "time": "2025-09-11T10:12:26+00:00" + "time": "2025-10-23T14:33:20+00:00" }, { "name": "symfony/runtime", - "version": "v7.3.4", + "version": "7.4.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/runtime.git", - "reference": "3550e2711e30bfa5d808514781cd52d1cc1d9e9f" + "reference": "43f5d81c284f8f058ba515601f486039f3785b7d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/runtime/zipball/3550e2711e30bfa5d808514781cd52d1cc1d9e9f", - "reference": "3550e2711e30bfa5d808514781cd52d1cc1d9e9f", + "url": "https://api.github.com/repos/symfony/runtime/zipball/43f5d81c284f8f058ba515601f486039f3785b7d", + "reference": "43f5d81c284f8f058ba515601f486039f3785b7d", "shasum": "" }, "require": { @@ -6146,10 +6247,10 @@ }, "require-dev": { "composer/composer": "^2.6", - "symfony/console": "^6.4|^7.0", - "symfony/dotenv": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0" + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/dotenv": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0" }, "type": "composer-plugin", "extra": { @@ -6184,7 +6285,7 @@ "runtime" ], "support": { - "source": "https://github.com/symfony/runtime/tree/v7.3.4" + "source": "https://github.com/symfony/runtime/tree/7.4" }, "funding": [ { @@ -6204,36 +6305,37 @@ "type": "tidelift" } ], - "time": "2025-09-11T15:31:28+00:00" + "time": "2025-09-11T15:31:41+00:00" }, { "name": "symfony/security-bundle", - "version": "v7.3.4", + "version": "7.4.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/security-bundle.git", - "reference": "f750d9abccbeaa433c56f6a4eb2073166476a75a" + "reference": "b0db0400eaf98d8194a09217a25676143611d2c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-bundle/zipball/f750d9abccbeaa433c56f6a4eb2073166476a75a", - "reference": "f750d9abccbeaa433c56f6a4eb2073166476a75a", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/b0db0400eaf98d8194a09217a25676143611d2c0", + "reference": "b0db0400eaf98d8194a09217a25676143611d2c0", "shasum": "" }, "require": { "composer-runtime-api": ">=2.1", "ext-xml": "*", "php": ">=8.2", - "symfony/clock": "^6.4|^7.0", - "symfony/config": "^7.3", - "symfony/dependency-injection": "^6.4.11|^7.1.4", - "symfony/event-dispatcher": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/password-hasher": "^6.4|^7.0", - "symfony/security-core": "^7.3", - "symfony/security-csrf": "^6.4|^7.0", - "symfony/security-http": "^7.3", + "symfony/clock": "^6.4|^7.0|^8.0", + "symfony/config": "^7.4|^8.0", + "symfony/dependency-injection": "^6.4.11|^7.1.4|^8.0", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4.13|^7.1.6|^8.0", + "symfony/password-hasher": "^6.4|^7.0|^8.0", + "symfony/security-core": "^7.4|^8.0", + "symfony/security-csrf": "^6.4|^7.0|^8.0", + "symfony/security-http": "^7.4|^8.0", "symfony/service-contracts": "^2.5|^3" }, "conflict": { @@ -6247,25 +6349,26 @@ "symfony/validator": "<6.4" }, "require-dev": { - "symfony/asset": "^6.4|^7.0", - "symfony/browser-kit": "^6.4|^7.0", - "symfony/console": "^6.4|^7.0", - "symfony/css-selector": "^6.4|^7.0", - "symfony/dom-crawler": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/form": "^6.4|^7.0", - "symfony/framework-bundle": "^6.4|^7.0", - "symfony/http-client": "^6.4|^7.0", - "symfony/ldap": "^6.4|^7.0", - "symfony/process": "^6.4|^7.0", - "symfony/rate-limiter": "^6.4|^7.0", - "symfony/serializer": "^6.4|^7.0", - "symfony/translation": "^6.4|^7.0", - "symfony/twig-bridge": "^6.4|^7.0", - "symfony/twig-bundle": "^6.4|^7.0", - "symfony/validator": "^6.4|^7.0", - "symfony/yaml": "^6.4|^7.0", - "twig/twig": "^3.12", + "symfony/asset": "^6.4|^7.0|^8.0", + "symfony/browser-kit": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/css-selector": "^6.4|^7.0|^8.0", + "symfony/dom-crawler": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/form": "^6.4|^7.0|^8.0", + "symfony/framework-bundle": "^6.4.13|^7.1.6|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/ldap": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/rate-limiter": "^6.4|^7.0|^8.0", + "symfony/runtime": "^6.4.13|^7.1.6|^8.0", + "symfony/serializer": "^6.4|^7.0|^8.0", + "symfony/translation": "^6.4|^7.0|^8.0", + "symfony/twig-bridge": "^6.4|^7.0|^8.0", + "symfony/twig-bundle": "^6.4|^7.0|^8.0", + "symfony/validator": "^6.4|^7.0|^8.0", + "symfony/yaml": "^6.4|^7.0|^8.0", + "twig/twig": "^3.15", "web-token/jwt-library": "^3.3.2|^4.0" }, "type": "symfony-bundle", @@ -6294,7 +6397,7 @@ "description": "Provides a tight integration of the Security component into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-bundle/tree/v7.3.4" + "source": "https://github.com/symfony/security-bundle/tree/7.4" }, "funding": [ { @@ -6314,27 +6417,27 @@ "type": "tidelift" } ], - "time": "2025-09-22T15:31:00+00:00" + "time": "2025-10-17T11:52:34+00:00" }, { "name": "symfony/security-core", - "version": "v7.3.4", + "version": "7.4.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/security-core.git", - "reference": "68b9d3ca57615afde6152a1e1441fa035bea43f8" + "reference": "d618dc7cc4d449769164f00f0dc37a0359ba8968" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-core/zipball/68b9d3ca57615afde6152a1e1441fa035bea43f8", - "reference": "68b9d3ca57615afde6152a1e1441fa035bea43f8", + "url": "https://api.github.com/repos/symfony/security-core/zipball/d618dc7cc4d449769164f00f0dc37a0359ba8968", + "reference": "d618dc7cc4d449769164f00f0dc37a0359ba8968", "shasum": "" }, "require": { "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", "symfony/event-dispatcher-contracts": "^2.5|^3", - "symfony/password-hasher": "^6.4|^7.0", + "symfony/password-hasher": "^6.4|^7.0|^8.0", "symfony/service-contracts": "^2.5|^3" }, "conflict": { @@ -6349,15 +6452,15 @@ "psr/cache": "^1.0|^2.0|^3.0", "psr/container": "^1.1|^2.0", "psr/log": "^1|^2|^3", - "symfony/cache": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/event-dispatcher": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/ldap": "^6.4|^7.0", - "symfony/string": "^6.4|^7.0", - "symfony/translation": "^6.4.3|^7.0.3", - "symfony/validator": "^6.4|^7.0" + "symfony/cache": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/ldap": "^6.4|^7.0|^8.0", + "symfony/string": "^6.4|^7.0|^8.0", + "symfony/translation": "^6.4.3|^7.0.3|^8.0", + "symfony/validator": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -6385,7 +6488,7 @@ "description": "Symfony Security Component - Core Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-core/tree/v7.3.4" + "source": "https://github.com/symfony/security-core/tree/7.4" }, "funding": [ { @@ -6405,33 +6508,33 @@ "type": "tidelift" } ], - "time": "2025-09-24T14:32:13+00:00" + "time": "2025-10-19T18:50:02+00:00" }, { "name": "symfony/security-csrf", - "version": "v7.3.0", + "version": "7.4.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/security-csrf.git", - "reference": "2b4b0c46c901729e4e90719eacd980381f53e0a3" + "reference": "73e6e9b3863ff3c9e9c70bd9c004d2b8e8dc77ea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-csrf/zipball/2b4b0c46c901729e4e90719eacd980381f53e0a3", - "reference": "2b4b0c46c901729e4e90719eacd980381f53e0a3", + "url": "https://api.github.com/repos/symfony/security-csrf/zipball/73e6e9b3863ff3c9e9c70bd9c004d2b8e8dc77ea", + "reference": "73e6e9b3863ff3c9e9c70bd9c004d2b8e8dc77ea", "shasum": "" }, "require": { "php": ">=8.2", - "symfony/security-core": "^6.4|^7.0" + "symfony/security-core": "^6.4|^7.0|^8.0" }, "conflict": { "symfony/http-foundation": "<6.4" }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0" + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -6459,7 +6562,7 @@ "description": "Symfony Security Component - CSRF Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-csrf/tree/v7.3.0" + "source": "https://github.com/symfony/security-csrf/tree/7.4" }, "funding": [ { @@ -6470,55 +6573,59 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-01-02T18:42:10+00:00" + "time": "2025-10-15T16:16:27+00:00" }, { "name": "symfony/security-http", - "version": "v7.3.4", + "version": "7.4.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/security-http.git", - "reference": "1cf54d0648ebab23bf9b8972617b79f1995e13a9" + "reference": "cbef3f517544385893ec2ed5eea2e229427e4940" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-http/zipball/1cf54d0648ebab23bf9b8972617b79f1995e13a9", - "reference": "1cf54d0648ebab23bf9b8972617b79f1995e13a9", + "url": "https://api.github.com/repos/symfony/security-http/zipball/cbef3f517544385893ec2ed5eea2e229427e4940", + "reference": "cbef3f517544385893ec2ed5eea2e229427e4940", "shasum": "" }, "require": { "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", "symfony/polyfill-mbstring": "~1.0", - "symfony/property-access": "^6.4|^7.0", - "symfony/security-core": "^7.3", + "symfony/property-access": "^6.4|^7.0|^8.0", + "symfony/security-core": "^7.3|^8.0", "symfony/service-contracts": "^2.5|^3" }, "conflict": { "symfony/clock": "<6.4", - "symfony/event-dispatcher": "<6.4", "symfony/http-client-contracts": "<3.0", "symfony/security-bundle": "<6.4", "symfony/security-csrf": "<6.4" }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/cache": "^6.4|^7.0", - "symfony/clock": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/http-client": "^6.4|^7.0", + "symfony/cache": "^6.4|^7.0|^8.0", + "symfony/clock": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", "symfony/http-client-contracts": "^3.0", - "symfony/rate-limiter": "^6.4|^7.0", - "symfony/routing": "^6.4|^7.0", - "symfony/security-csrf": "^6.4|^7.0", - "symfony/translation": "^6.4|^7.0", + "symfony/rate-limiter": "^6.4|^7.0|^8.0", + "symfony/routing": "^6.4|^7.0|^8.0", + "symfony/security-csrf": "^6.4|^7.0|^8.0", + "symfony/translation": "^6.4|^7.0|^8.0", "web-token/jwt-library": "^3.3.2|^4.0" }, "type": "library", @@ -6547,7 +6654,7 @@ "description": "Symfony Security Component - HTTP Integration", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-http/tree/v7.3.4" + "source": "https://github.com/symfony/security-http/tree/7.4" }, "funding": [ { @@ -6567,7 +6674,7 @@ "type": "tidelift" } ], - "time": "2025-09-09T17:06:44+00:00" + "time": "2025-10-14T11:34:22+00:00" }, { "name": "symfony/service-contracts", @@ -6654,16 +6761,16 @@ }, { "name": "symfony/stimulus-bundle", - "version": "v2.30.0", + "version": "v2.31.0", "source": { "type": "git", "url": "https://github.com/symfony/stimulus-bundle.git", - "reference": "668b9efe9d0ab8b4e50091263171609e0459c0c8" + "reference": "c5ea8ee2ccd45447b7f4b6b82f704ee5e76127f0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stimulus-bundle/zipball/668b9efe9d0ab8b4e50091263171609e0459c0c8", - "reference": "668b9efe9d0ab8b4e50091263171609e0459c0c8", + "url": "https://api.github.com/repos/symfony/stimulus-bundle/zipball/c5ea8ee2ccd45447b7f4b6b82f704ee5e76127f0", + "reference": "c5ea8ee2ccd45447b7f4b6b82f704ee5e76127f0", "shasum": "" }, "require": { @@ -6703,7 +6810,7 @@ "symfony-ux" ], "support": { - "source": "https://github.com/symfony/stimulus-bundle/tree/v2.30.0" + "source": "https://github.com/symfony/stimulus-bundle/tree/v2.31.0" }, "funding": [ { @@ -6723,20 +6830,20 @@ "type": "tidelift" } ], - "time": "2025-08-27T15:25:48+00:00" + "time": "2025-09-24T13:27:42+00:00" }, { "name": "symfony/stopwatch", - "version": "v7.3.0", + "version": "7.4.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "5a49289e2b308214c8b9c2fda4ea454d8b8ad7cd" + "reference": "8a24af0a2e8a872fb745047180649b8418303084" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/5a49289e2b308214c8b9c2fda4ea454d8b8ad7cd", - "reference": "5a49289e2b308214c8b9c2fda4ea454d8b8ad7cd", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/8a24af0a2e8a872fb745047180649b8418303084", + "reference": "8a24af0a2e8a872fb745047180649b8418303084", "shasum": "" }, "require": { @@ -6769,7 +6876,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v7.3.0" + "source": "https://github.com/symfony/stopwatch/tree/7.4" }, "funding": [ { @@ -6780,31 +6887,36 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-02-24T10:49:57+00:00" + "time": "2025-08-04T07:05:15+00:00" }, { "name": "symfony/string", - "version": "v7.3.4", + "version": "7.4.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "f96476035142921000338bad71e5247fbc138872" + "reference": "bc7852160e1f18ce249c3daaba3b26cf5425a34d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/f96476035142921000338bad71e5247fbc138872", - "reference": "f96476035142921000338bad71e5247fbc138872", + "url": "https://api.github.com/repos/symfony/string/zipball/bc7852160e1f18ce249c3daaba3b26cf5425a34d", + "reference": "bc7852160e1f18ce249c3daaba3b26cf5425a34d", "shasum": "" }, "require": { "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3.0", "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-grapheme": "~1.33", "symfony/polyfill-intl-normalizer": "~1.0", "symfony/polyfill-mbstring": "~1.0" }, @@ -6812,11 +6924,11 @@ "symfony/translation-contracts": "<2.5" }, "require-dev": { - "symfony/emoji": "^7.1", - "symfony/http-client": "^6.4|^7.0", - "symfony/intl": "^6.4|^7.0", + "symfony/emoji": "^7.1|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/intl": "^6.4|^7.0|^8.0", "symfony/translation-contracts": "^2.5|^3.0", - "symfony/var-exporter": "^6.4|^7.0" + "symfony/var-exporter": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -6855,7 +6967,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.3.4" + "source": "https://github.com/symfony/string/tree/7.4" }, "funding": [ { @@ -6875,27 +6987,27 @@ "type": "tidelift" } ], - "time": "2025-09-11T14:36:48+00:00" + "time": "2025-09-11T14:37:11+00:00" }, { "name": "symfony/translation", - "version": "v7.3.4", + "version": "7.4.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "ec25870502d0c7072d086e8ffba1420c85965174" + "reference": "7d843af0451b4a94ab380eea4f8aaf7ba17d28af" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/ec25870502d0c7072d086e8ffba1420c85965174", - "reference": "ec25870502d0c7072d086e8ffba1420c85965174", + "url": "https://api.github.com/repos/symfony/translation/zipball/7d843af0451b4a94ab380eea4f8aaf7ba17d28af", + "reference": "7d843af0451b4a94ab380eea4f8aaf7ba17d28af", "shasum": "" }, "require": { "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.5|^3.0" + "symfony/translation-contracts": "^2.5.3|^3.3" }, "conflict": { "nikic/php-parser": "<5.0", @@ -6914,17 +7026,17 @@ "require-dev": { "nikic/php-parser": "^5.0", "psr/log": "^1|^2|^3", - "symfony/config": "^6.4|^7.0", - "symfony/console": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/finder": "^6.4|^7.0", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/finder": "^6.4|^7.0|^8.0", "symfony/http-client-contracts": "^2.5|^3.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/intl": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/intl": "^6.4|^7.0|^8.0", "symfony/polyfill-intl-icu": "^1.21", - "symfony/routing": "^6.4|^7.0", + "symfony/routing": "^6.4|^7.0|^8.0", "symfony/service-contracts": "^2.5|^3", - "symfony/yaml": "^6.4|^7.0" + "symfony/yaml": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -6955,7 +7067,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v7.3.4" + "source": "https://github.com/symfony/translation/tree/7.4" }, "funding": [ { @@ -6975,7 +7087,7 @@ "type": "tidelift" } ], - "time": "2025-09-07T11:39:36+00:00" + "time": "2025-09-29T13:00:59+00:00" }, { "name": "symfony/translation-contracts", @@ -7057,16 +7169,16 @@ }, { "name": "symfony/twig-bridge", - "version": "v7.3.3", + "version": "7.4.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/twig-bridge.git", - "reference": "33558f013b7f6ed72805527c8405cae0062e47c5" + "reference": "f5fe218e1cd9015b4492281b9c490d2b96647ca1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/33558f013b7f6ed72805527c8405cae0062e47c5", - "reference": "33558f013b7f6ed72805527c8405cae0062e47c5", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/f5fe218e1cd9015b4492281b9c490d2b96647ca1", + "reference": "f5fe218e1cd9015b4492281b9c490d2b96647ca1", "shasum": "" }, "require": { @@ -7091,33 +7203,33 @@ "egulias/email-validator": "^2.1.10|^3|^4", "league/html-to-markdown": "^5.0", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/asset": "^6.4|^7.0", - "symfony/asset-mapper": "^6.4|^7.0", - "symfony/console": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/emoji": "^7.1", - "symfony/expression-language": "^6.4|^7.0", - "symfony/finder": "^6.4|^7.0", - "symfony/form": "^6.4.20|^7.2.5", - "symfony/html-sanitizer": "^6.4|^7.0", - "symfony/http-foundation": "^7.3", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/intl": "^6.4|^7.0", - "symfony/mime": "^6.4|^7.0", + "symfony/asset": "^6.4|^7.0|^8.0", + "symfony/asset-mapper": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/emoji": "^7.1|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/finder": "^6.4|^7.0|^8.0", + "symfony/form": "^6.4.20|^7.2.5|^8.0", + "symfony/html-sanitizer": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^7.3|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/intl": "^6.4|^7.0|^8.0", + "symfony/mime": "^6.4|^7.0|^8.0", "symfony/polyfill-intl-icu": "~1.0", - "symfony/property-info": "^6.4|^7.0", - "symfony/routing": "^6.4|^7.0", + "symfony/property-info": "^6.4|^7.0|^8.0", + "symfony/routing": "^6.4|^7.0|^8.0", "symfony/security-acl": "^2.8|^3.0", - "symfony/security-core": "^6.4|^7.0", - "symfony/security-csrf": "^6.4|^7.0", - "symfony/security-http": "^6.4|^7.0", - "symfony/serializer": "^6.4.3|^7.0.3", - "symfony/stopwatch": "^6.4|^7.0", - "symfony/translation": "^6.4|^7.0", - "symfony/validator": "^6.4|^7.0", - "symfony/web-link": "^6.4|^7.0", - "symfony/workflow": "^6.4|^7.0", - "symfony/yaml": "^6.4|^7.0", + "symfony/security-core": "^6.4|^7.0|^8.0", + "symfony/security-csrf": "^6.4|^7.0|^8.0", + "symfony/security-http": "^6.4|^7.0|^8.0", + "symfony/serializer": "^6.4.3|^7.0.3|^8.0", + "symfony/stopwatch": "^6.4|^7.0|^8.0", + "symfony/translation": "^6.4|^7.0|^8.0", + "symfony/validator": "^6.4|^7.0|^8.0", + "symfony/web-link": "^6.4|^7.0|^8.0", + "symfony/workflow": "^6.4|^7.0|^8.0", + "symfony/yaml": "^6.4|^7.0|^8.0", "twig/cssinliner-extra": "^3", "twig/inky-extra": "^3", "twig/markdown-extra": "^3" @@ -7148,7 +7260,7 @@ "description": "Provides integration for Twig with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bridge/tree/v7.3.3" + "source": "https://github.com/symfony/twig-bridge/tree/7.4" }, "funding": [ { @@ -7168,30 +7280,30 @@ "type": "tidelift" } ], - "time": "2025-08-18T13:10:53+00:00" + "time": "2025-09-24T07:02:42+00:00" }, { "name": "symfony/twig-bundle", - "version": "v7.3.4", + "version": "7.4.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/twig-bundle.git", - "reference": "da5c778a8416fcce5318737c4d944f6fa2bb3f81" + "reference": "f83f530d00d1bbc6f7fafeb433077887c83326ef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/da5c778a8416fcce5318737c4d944f6fa2bb3f81", - "reference": "da5c778a8416fcce5318737c4d944f6fa2bb3f81", + "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/f83f530d00d1bbc6f7fafeb433077887c83326ef", + "reference": "f83f530d00d1bbc6f7fafeb433077887c83326ef", "shasum": "" }, "require": { "composer-runtime-api": ">=2.1", "php": ">=8.2", - "symfony/config": "^7.3", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/twig-bridge": "^7.3", + "symfony/config": "^7.4|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4.13|^7.1.6|^8.0", + "symfony/twig-bridge": "^7.3|^8.0", "twig/twig": "^3.12" }, "conflict": { @@ -7199,16 +7311,17 @@ "symfony/translation": "<6.4" }, "require-dev": { - "symfony/asset": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/finder": "^6.4|^7.0", - "symfony/form": "^6.4|^7.0", - "symfony/framework-bundle": "^6.4|^7.0", - "symfony/routing": "^6.4|^7.0", - "symfony/stopwatch": "^6.4|^7.0", - "symfony/translation": "^6.4|^7.0", - "symfony/web-link": "^6.4|^7.0", - "symfony/yaml": "^6.4|^7.0" + "symfony/asset": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/finder": "^6.4|^7.0|^8.0", + "symfony/form": "^6.4|^7.0|^8.0", + "symfony/framework-bundle": "^6.4.13|^7.1.6|^8.0", + "symfony/routing": "^6.4|^7.0|^8.0", + "symfony/runtime": "^6.4.13|^7.1.6", + "symfony/stopwatch": "^6.4|^7.0|^8.0", + "symfony/translation": "^6.4|^7.0|^8.0", + "symfony/web-link": "^6.4|^7.0|^8.0", + "symfony/yaml": "^6.4|^7.0|^8.0" }, "type": "symfony-bundle", "autoload": { @@ -7236,7 +7349,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/v7.3.4" + "source": "https://github.com/symfony/twig-bundle/tree/7.4" }, "funding": [ { @@ -7256,20 +7369,20 @@ "type": "tidelift" } ], - "time": "2025-09-10T12:00:31+00:00" + "time": "2025-10-02T07:41:02+00:00" }, { "name": "symfony/type-info", - "version": "v7.3.4", + "version": "7.4.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/type-info.git", - "reference": "d34eaeb57f39c8a9c97eb72a977c423207dfa35b" + "reference": "2e1c1b2886a16f9fa72699b66ae58a378c1a7619" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/type-info/zipball/d34eaeb57f39c8a9c97eb72a977c423207dfa35b", - "reference": "d34eaeb57f39c8a9c97eb72a977c423207dfa35b", + "url": "https://api.github.com/repos/symfony/type-info/zipball/2e1c1b2886a16f9fa72699b66ae58a378c1a7619", + "reference": "2e1c1b2886a16f9fa72699b66ae58a378c1a7619", "shasum": "" }, "require": { @@ -7319,7 +7432,7 @@ "type" ], "support": { - "source": "https://github.com/symfony/type-info/tree/v7.3.4" + "source": "https://github.com/symfony/type-info/tree/7.4" }, "funding": [ { @@ -7339,20 +7452,20 @@ "type": "tidelift" } ], - "time": "2025-09-11T15:33:27+00:00" + "time": "2025-10-16T16:24:39+00:00" }, { "name": "symfony/ux-icons", - "version": "v2.30.0", + "version": "v2.31.0", "source": { "type": "git", "url": "https://github.com/symfony/ux-icons.git", - "reference": "c383eca19a6925b4d758cd1892edac457921a6f6" + "reference": "b3d1668985373a142dba7ccbf483e935671f7d24" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/ux-icons/zipball/c383eca19a6925b4d758cd1892edac457921a6f6", - "reference": "c383eca19a6925b4d758cd1892edac457921a6f6", + "url": "https://api.github.com/repos/symfony/ux-icons/zipball/b3d1668985373a142dba7ccbf483e935671f7d24", + "reference": "b3d1668985373a142dba7ccbf483e935671f7d24", "shasum": "" }, "require": { @@ -7412,7 +7525,7 @@ "twig" ], "support": { - "source": "https://github.com/symfony/ux-icons/tree/v2.30.0" + "source": "https://github.com/symfony/ux-icons/tree/v2.31.0" }, "funding": [ { @@ -7432,20 +7545,20 @@ "type": "tidelift" } ], - "time": "2025-08-27T15:25:48+00:00" + "time": "2025-09-30T20:52:33+00:00" }, { "name": "symfony/ux-live-component", - "version": "v2.30.0", + "version": "v2.31.0", "source": { "type": "git", "url": "https://github.com/symfony/ux-live-component.git", - "reference": "332ab117586c755d2795c0db92c028a9eed71e1a" + "reference": "10776be28e15b731ba9d6e3eb43e840434442d67" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/ux-live-component/zipball/332ab117586c755d2795c0db92c028a9eed71e1a", - "reference": "332ab117586c755d2795c0db92c028a9eed71e1a", + "url": "https://api.github.com/repos/symfony/ux-live-component/zipball/10776be28e15b731ba9d6e3eb43e840434442d67", + "reference": "10776be28e15b731ba9d6e3eb43e840434442d67", "shasum": "" }, "require": { @@ -7463,10 +7576,10 @@ "symfony/type-info": "<7.2" }, "require-dev": { - "doctrine/annotations": "^1.0", + "doctrine/annotations": "^1.0|^2.0", "doctrine/collections": "^1.6.8|^2.0", "doctrine/doctrine-bundle": "^2.4.3", - "doctrine/orm": "^2.9.4", + "doctrine/orm": "^2.9.4|^3.0", "doctrine/persistence": "^2.5.2|^3.0", "phpdocumentor/reflection-docblock": "5.x-dev", "symfony/dependency-injection": "^5.4|^6.0|^7.0|^8.0", @@ -7513,7 +7626,7 @@ "twig" ], "support": { - "source": "https://github.com/symfony/ux-live-component/tree/v2.30.0" + "source": "https://github.com/symfony/ux-live-component/tree/v2.31.0" }, "funding": [ { @@ -7533,20 +7646,20 @@ "type": "tidelift" } ], - "time": "2025-08-27T15:25:48+00:00" + "time": "2025-10-22T02:51:40+00:00" }, { "name": "symfony/ux-twig-component", - "version": "v2.30.0", + "version": "v2.31.0", "source": { "type": "git", "url": "https://github.com/symfony/ux-twig-component.git", - "reference": "2f445efda4d4400d4d1911ddf9710c366f339614" + "reference": "6f7ecc103cdb51adb6d76d32e374fcd1d33ff2fa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/ux-twig-component/zipball/2f445efda4d4400d4d1911ddf9710c366f339614", - "reference": "2f445efda4d4400d4d1911ddf9710c366f339614", + "url": "https://api.github.com/repos/symfony/ux-twig-component/zipball/6f7ecc103cdb51adb6d76d32e374fcd1d33ff2fa", + "reference": "6f7ecc103cdb51adb6d76d32e374fcd1d33ff2fa", "shasum": "" }, "require": { @@ -7600,7 +7713,7 @@ "twig" ], "support": { - "source": "https://github.com/symfony/ux-twig-component/tree/v2.30.0" + "source": "https://github.com/symfony/ux-twig-component/tree/v2.31.0" }, "funding": [ { @@ -7620,20 +7733,20 @@ "type": "tidelift" } ], - "time": "2025-08-27T15:25:48+00:00" + "time": "2025-10-17T06:14:35+00:00" }, { "name": "symfony/validator", - "version": "v7.3.4", + "version": "7.4.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "5e29a348b5fac2227b6938a54db006d673bb813a" + "reference": "1c4194120c72683d6881bc7a48d48566193a017a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/5e29a348b5fac2227b6938a54db006d673bb813a", - "reference": "5e29a348b5fac2227b6938a54db006d673bb813a", + "url": "https://api.github.com/repos/symfony/validator/zipball/1c4194120c72683d6881bc7a48d48566193a017a", + "reference": "1c4194120c72683d6881bc7a48d48566193a017a", "shasum": "" }, "require": { @@ -7653,27 +7766,29 @@ "symfony/intl": "<6.4", "symfony/property-info": "<6.4", "symfony/translation": "<6.4.3|>=7.0,<7.0.3", + "symfony/var-exporter": "<6.4.25|>=7.0,<7.3.3", "symfony/yaml": "<6.4" }, "require-dev": { "egulias/email-validator": "^2.1.10|^3|^4", - "symfony/cache": "^6.4|^7.0", - "symfony/config": "^6.4|^7.0", - "symfony/console": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/finder": "^6.4|^7.0", - "symfony/http-client": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/intl": "^6.4|^7.0", - "symfony/mime": "^6.4|^7.0", - "symfony/property-access": "^6.4|^7.0", - "symfony/property-info": "^6.4|^7.0", - "symfony/string": "^6.4|^7.0", - "symfony/translation": "^6.4.3|^7.0.3", + "symfony/cache": "^6.4|^7.0|^8.0", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/finder": "^6.4|^7.0|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/intl": "^6.4|^7.0|^8.0", + "symfony/mime": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/property-access": "^6.4|^7.0|^8.0", + "symfony/property-info": "^6.4|^7.0|^8.0", + "symfony/string": "^6.4|^7.0|^8.0", + "symfony/translation": "^6.4.3|^7.0.3|^8.0", "symfony/type-info": "^7.1.8", - "symfony/yaml": "^6.4|^7.0" + "symfony/yaml": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -7702,7 +7817,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v7.3.4" + "source": "https://github.com/symfony/validator/tree/7.4" }, "funding": [ { @@ -7722,20 +7837,20 @@ "type": "tidelift" } ], - "time": "2025-09-24T06:32:27+00:00" + "time": "2025-10-16T16:24:39+00:00" }, { "name": "symfony/var-dumper", - "version": "v7.3.4", + "version": "7.4.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "b8abe7daf2730d07dfd4b2ee1cecbf0dd2fbdabb" + "reference": "0c9272cc57ad469bbcb3f881f2c9d0b1295d477d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/b8abe7daf2730d07dfd4b2ee1cecbf0dd2fbdabb", - "reference": "b8abe7daf2730d07dfd4b2ee1cecbf0dd2fbdabb", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/0c9272cc57ad469bbcb3f881f2c9d0b1295d477d", + "reference": "0c9272cc57ad469bbcb3f881f2c9d0b1295d477d", "shasum": "" }, "require": { @@ -7747,10 +7862,10 @@ "symfony/console": "<6.4" }, "require-dev": { - "symfony/console": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/process": "^6.4|^7.0", - "symfony/uid": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/uid": "^6.4|^7.0|^8.0", "twig/twig": "^3.12" }, "bin": [ @@ -7789,7 +7904,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v7.3.4" + "source": "https://github.com/symfony/var-dumper/tree/7.4" }, "funding": [ { @@ -7809,20 +7924,20 @@ "type": "tidelift" } ], - "time": "2025-09-11T10:12:26+00:00" + "time": "2025-09-29T13:00:59+00:00" }, { "name": "symfony/var-exporter", - "version": "v7.3.4", + "version": "7.4.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "0f020b544a30a7fe8ba972e53ee48a74c0bc87f4" + "reference": "03a60f169c79a28513a78c967316fbc8bf17816f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/0f020b544a30a7fe8ba972e53ee48a74c0bc87f4", - "reference": "0f020b544a30a7fe8ba972e53ee48a74c0bc87f4", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/03a60f169c79a28513a78c967316fbc8bf17816f", + "reference": "03a60f169c79a28513a78c967316fbc8bf17816f", "shasum": "" }, "require": { @@ -7830,9 +7945,9 @@ "symfony/deprecation-contracts": "^2.5|^3" }, "require-dev": { - "symfony/property-access": "^6.4|^7.0", - "symfony/serializer": "^6.4|^7.0", - "symfony/var-dumper": "^6.4|^7.0" + "symfony/property-access": "^6.4|^7.0|^8.0", + "symfony/serializer": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -7870,7 +7985,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v7.3.4" + "source": "https://github.com/symfony/var-exporter/tree/7.4" }, "funding": [ { @@ -7890,32 +8005,32 @@ "type": "tidelift" } ], - "time": "2025-09-11T10:12:26+00:00" + "time": "2025-09-11T10:15:23+00:00" }, { "name": "symfony/yaml", - "version": "v7.3.3", + "version": "7.4.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "d4f4a66866fe2451f61296924767280ab5732d9d" + "reference": "0d7c67f404dc22bfa340546f8537cd0eb61eec6a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/d4f4a66866fe2451f61296924767280ab5732d9d", - "reference": "d4f4a66866fe2451f61296924767280ab5732d9d", + "url": "https://api.github.com/repos/symfony/yaml/zipball/0d7c67f404dc22bfa340546f8537cd0eb61eec6a", + "reference": "0d7c67f404dc22bfa340546f8537cd0eb61eec6a", "shasum": "" }, "require": { "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3.0", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "^1.8" }, "conflict": { "symfony/console": "<6.4" }, "require-dev": { - "symfony/console": "^6.4|^7.0" + "symfony/console": "^6.4|^7.0|^8.0" }, "bin": [ "Resources/bin/yaml-lint" @@ -7946,7 +8061,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v7.3.3" + "source": "https://github.com/symfony/yaml/tree/7.4" }, "funding": [ { @@ -7966,7 +8081,7 @@ "type": "tidelift" } ], - "time": "2025-08-27T11:34:33+00:00" + "time": "2025-09-27T09:05:58+00:00" }, { "name": "symfonycasts/sass-bundle", @@ -8366,25 +8481,25 @@ "packages-dev": [ { "name": "dama/doctrine-test-bundle", - "version": "v8.3.1", + "version": "v8.4.0", "source": { "type": "git", "url": "https://github.com/dmaicher/doctrine-test-bundle.git", - "reference": "9bc47e02a0d67cbfef6773837249f71e65c95bf6" + "reference": "ce7cd44126c36694e2f2d92c4aedd4fc5b0874f2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dmaicher/doctrine-test-bundle/zipball/9bc47e02a0d67cbfef6773837249f71e65c95bf6", - "reference": "9bc47e02a0d67cbfef6773837249f71e65c95bf6", + "url": "https://api.github.com/repos/dmaicher/doctrine-test-bundle/zipball/ce7cd44126c36694e2f2d92c4aedd4fc5b0874f2", + "reference": "ce7cd44126c36694e2f2d92c4aedd4fc5b0874f2", "shasum": "" }, "require": { "doctrine/dbal": "^3.3 || ^4.0", - "doctrine/doctrine-bundle": "^2.11.0", + "doctrine/doctrine-bundle": "^2.11.0 || ^3.0", "php": ">= 8.1", "psr/cache": "^2.0 || ^3.0", - "symfony/cache": "^6.4 || ^7.2 || ^8.0", - "symfony/framework-bundle": "^6.4 || ^7.2 || ^8.0" + "symfony/cache": "^6.4 || ^7.3 || ^8.0", + "symfony/framework-bundle": "^6.4 || ^7.3 || ^8.0" }, "conflict": { "phpunit/phpunit": "<10.0" @@ -8393,9 +8508,9 @@ "behat/behat": "^3.0", "friendsofphp/php-cs-fixer": "^3.27", "phpstan/phpstan": "^2.0", - "phpunit/phpunit": "^10.0 || ^11.0 || ^12.0", - "symfony/process": "^6.4 || ^7.2 || ^8.0", - "symfony/yaml": "^6.4 || ^7.2 || ^8.0" + "phpunit/phpunit": "^10.5.57 || ^11.5.41|| ^12.3.14", + "symfony/dotenv": "^6.4 || ^7.3 || ^8.0", + "symfony/process": "^6.4 || ^7.3 || ^8.0" }, "type": "symfony-bundle", "extra": { @@ -8429,22 +8544,22 @@ ], "support": { "issues": "https://github.com/dmaicher/doctrine-test-bundle/issues", - "source": "https://github.com/dmaicher/doctrine-test-bundle/tree/v8.3.1" + "source": "https://github.com/dmaicher/doctrine-test-bundle/tree/v8.4.0" }, - "time": "2025-08-05T17:55:02+00:00" + "time": "2025-10-11T15:24:02+00:00" }, { "name": "doctrine/data-fixtures", - "version": "2.1.0", + "version": "2.2.0", "source": { "type": "git", "url": "https://github.com/doctrine/data-fixtures.git", - "reference": "f161e20f04ba5440a09330e156b40f04dd70d47f" + "reference": "7a615ba135e45d67674bb623d90f34f6c7b6bd97" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/f161e20f04ba5440a09330e156b40f04dd70d47f", - "reference": "f161e20f04ba5440a09330e156b40f04dd70d47f", + "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/7a615ba135e45d67674bb623d90f34f6c7b6bd97", + "reference": "7a615ba135e45d67674bb623d90f34f6c7b6bd97", "shasum": "" }, "require": { @@ -8458,14 +8573,14 @@ "doctrine/phpcr-odm": "<1.3.0" }, "require-dev": { - "doctrine/coding-standard": "^13", + "doctrine/coding-standard": "^14", "doctrine/dbal": "^3.5 || ^4", "doctrine/mongodb-odm": "^1.3.0 || ^2.0.0", "doctrine/orm": "^2.14 || ^3", "ext-sqlite3": "*", "fig/log-test": "^1", - "phpstan/phpstan": "2.1.17", - "phpunit/phpunit": "10.5.45", + "phpstan/phpstan": "2.1.31", + "phpunit/phpunit": "10.5.45 || 12.4.0", "symfony/cache": "^6.4 || ^7", "symfony/var-exporter": "^6.4 || ^7" }, @@ -8498,7 +8613,7 @@ ], "support": { "issues": "https://github.com/doctrine/data-fixtures/issues", - "source": "https://github.com/doctrine/data-fixtures/tree/2.1.0" + "source": "https://github.com/doctrine/data-fixtures/tree/2.2.0" }, "funding": [ { @@ -8514,25 +8629,25 @@ "type": "tidelift" } ], - "time": "2025-07-08T17:48:20+00:00" + "time": "2025-10-17T20:06:20+00:00" }, { "name": "doctrine/doctrine-fixtures-bundle", - "version": "4.1.0", + "version": "4.3.0", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineFixturesBundle.git", - "reference": "a06db6b81ff20a2980bf92063d80c013bb8b4b7c" + "reference": "11941deb6f2899b91e8b8680b07ffe63899d864b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/a06db6b81ff20a2980bf92063d80c013bb8b4b7c", - "reference": "a06db6b81ff20a2980bf92063d80c013bb8b4b7c", + "url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/11941deb6f2899b91e8b8680b07ffe63899d864b", + "reference": "11941deb6f2899b91e8b8680b07ffe63899d864b", "shasum": "" }, "require": { - "doctrine/data-fixtures": "^2.0", - "doctrine/doctrine-bundle": "^2.2", + "doctrine/data-fixtures": "^2.2", + "doctrine/doctrine-bundle": "^2.2 || ^3.0", "doctrine/orm": "^2.14.0 || ^3.0", "doctrine/persistence": "^2.4 || ^3.0 || ^4.0", "php": "^8.1", @@ -8548,7 +8663,7 @@ "doctrine/dbal": "< 3" }, "require-dev": { - "doctrine/coding-standard": "13.0.0", + "doctrine/coding-standard": "14.0.0", "phpstan/phpstan": "2.1.11", "phpunit/phpunit": "^10.5.38 || 11.4.14" }, @@ -8584,7 +8699,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineFixturesBundle/issues", - "source": "https://github.com/doctrine/DoctrineFixturesBundle/tree/4.1.0" + "source": "https://github.com/doctrine/DoctrineFixturesBundle/tree/4.3.0" }, "funding": [ { @@ -8600,7 +8715,7 @@ "type": "tidelift" } ], - "time": "2025-03-26T10:56:26+00:00" + "time": "2025-10-20T06:18:40+00:00" }, { "name": "myclabs/deep-copy", @@ -8664,16 +8779,16 @@ }, { "name": "nikic/php-parser", - "version": "v5.6.1", + "version": "v5.6.2", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2" + "reference": "3a454ca033b9e06b63282ce19562e892747449bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2", - "reference": "f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/3a454ca033b9e06b63282ce19562e892747449bb", + "reference": "3a454ca033b9e06b63282ce19562e892747449bb", "shasum": "" }, "require": { @@ -8716,9 +8831,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.6.1" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.6.2" }, - "time": "2025-08-13T20:13:15+00:00" + "time": "2025-10-21T19:32:17+00:00" }, { "name": "phar-io/manifest", @@ -8840,11 +8955,11 @@ }, { "name": "phpstan/phpstan", - "version": "2.1.30", + "version": "2.1.31", "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/a4a7f159927983dd4f7c8020ed227d80b7f39d7d", - "reference": "a4a7f159927983dd4f7c8020ed227d80b7f39d7d", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/ead89849d879fe203ce9292c6ef5e7e76f867b96", + "reference": "ead89849d879fe203ce9292c6ef5e7e76f867b96", "shasum": "" }, "require": { @@ -8889,20 +9004,20 @@ "type": "github" } ], - "time": "2025-10-02T16:07:52+00:00" + "time": "2025-10-10T14:14:11+00:00" }, { "name": "phpstan/phpstan-doctrine", - "version": "2.0.6", + "version": "2.0.10", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-doctrine.git", - "reference": "934f5734812341358fc41c44006b30fa00c785f0" + "reference": "5eaf37b87288474051469aee9f937fc9d862f330" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/934f5734812341358fc41c44006b30fa00c785f0", - "reference": "934f5734812341358fc41c44006b30fa00c785f0", + "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/5eaf37b87288474051469aee9f937fc9d862f330", + "reference": "5eaf37b87288474051469aee9f937fc9d862f330", "shasum": "" }, "require": { @@ -8936,7 +9051,8 @@ "phpstan/phpstan-strict-rules": "^2.0", "phpunit/phpunit": "^9.6.20", "ramsey/uuid": "^4.2", - "symfony/cache": "^5.4" + "symfony/cache": "^5.4", + "symfony/uid": "^5.4 || ^6.4 || ^7.3" }, "type": "phpstan-extension", "extra": { @@ -8959,9 +9075,9 @@ "description": "Doctrine extensions for PHPStan", "support": { "issues": "https://github.com/phpstan/phpstan-doctrine/issues", - "source": "https://github.com/phpstan/phpstan-doctrine/tree/2.0.6" + "source": "https://github.com/phpstan/phpstan-doctrine/tree/2.0.10" }, - "time": "2025-09-10T07:06:30+00:00" + "time": "2025-10-06T10:01:02+00:00" }, { "name": "phpstan/phpstan-symfony", @@ -10518,27 +10634,28 @@ }, { "name": "symfony/browser-kit", - "version": "v7.3.2", + "version": "7.4.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "f0b889b73a845cddef1d25fe207b37fd04cb5419" + "reference": "abec2fa9e2027d0d63cd8df46d1994bb7b74edc7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/f0b889b73a845cddef1d25fe207b37fd04cb5419", - "reference": "f0b889b73a845cddef1d25fe207b37fd04cb5419", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/abec2fa9e2027d0d63cd8df46d1994bb7b74edc7", + "reference": "abec2fa9e2027d0d63cd8df46d1994bb7b74edc7", "shasum": "" }, "require": { "php": ">=8.2", - "symfony/dom-crawler": "^6.4|^7.0" + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/dom-crawler": "^6.4|^7.0|^8.0" }, "require-dev": { - "symfony/css-selector": "^6.4|^7.0", - "symfony/http-client": "^6.4|^7.0", - "symfony/mime": "^6.4|^7.0", - "symfony/process": "^6.4|^7.0" + "symfony/css-selector": "^6.4|^7.0|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/mime": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -10566,7 +10683,7 @@ "description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/browser-kit/tree/v7.3.2" + "source": "https://github.com/symfony/browser-kit/tree/7.4" }, "funding": [ { @@ -10586,20 +10703,20 @@ "type": "tidelift" } ], - "time": "2025-07-10T08:47:49+00:00" + "time": "2025-08-21T07:27:24+00:00" }, { "name": "symfony/css-selector", - "version": "v7.3.0", + "version": "7.4.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "601a5ce9aaad7bf10797e3663faefce9e26c24e2" + "reference": "57500fef3e0e658cb3e188503f5a80d60cea866c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/601a5ce9aaad7bf10797e3663faefce9e26c24e2", - "reference": "601a5ce9aaad7bf10797e3663faefce9e26c24e2", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/57500fef3e0e658cb3e188503f5a80d60cea866c", + "reference": "57500fef3e0e658cb3e188503f5a80d60cea866c", "shasum": "" }, "require": { @@ -10635,7 +10752,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v7.3.0" + "source": "https://github.com/symfony/css-selector/tree/7.4" }, "funding": [ { @@ -10646,39 +10763,43 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-25T14:21:43+00:00" + "time": "2025-08-09T22:28:14+00:00" }, { "name": "symfony/debug-bundle", - "version": "v7.3.4", + "version": "7.4.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/debug-bundle.git", - "reference": "30f922edd53dd85238f1f26dbb68a044109f8f0e" + "reference": "5c5911a5ee2947089c6eb8101e4374b655500e1b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/30f922edd53dd85238f1f26dbb68a044109f8f0e", - "reference": "30f922edd53dd85238f1f26dbb68a044109f8f0e", + "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/5c5911a5ee2947089c6eb8101e4374b655500e1b", + "reference": "5c5911a5ee2947089c6eb8101e4374b655500e1b", "shasum": "" }, "require": { "composer-runtime-api": ">=2.1", "ext-xml": "*", "php": ">=8.2", - "symfony/config": "^7.3", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/twig-bridge": "^6.4|^7.0", - "symfony/var-dumper": "^6.4|^7.0" + "symfony/config": "^7.3|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/twig-bridge": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0" }, "require-dev": { - "symfony/web-profiler-bundle": "^6.4|^7.0" + "symfony/web-profiler-bundle": "^6.4|^7.0|^8.0" }, "type": "symfony-bundle", "autoload": { @@ -10706,7 +10827,7 @@ "description": "Provides a tight integration of the Symfony VarDumper component and the ServerLogCommand from MonologBridge into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/debug-bundle/tree/v7.3.4" + "source": "https://github.com/symfony/debug-bundle/tree/7.4" }, "funding": [ { @@ -10726,30 +10847,31 @@ "type": "tidelift" } ], - "time": "2025-09-10T12:00:31+00:00" + "time": "2025-10-13T11:51:25+00:00" }, { "name": "symfony/dom-crawler", - "version": "v7.3.3", + "version": "7.4.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "efa076ea0eeff504383ff0dcf827ea5ce15690ba" + "reference": "d4e84f351805b6e39747d6851c623836e9e81522" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/efa076ea0eeff504383ff0dcf827ea5ce15690ba", - "reference": "efa076ea0eeff504383ff0dcf827ea5ce15690ba", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/d4e84f351805b6e39747d6851c623836e9e81522", + "reference": "d4e84f351805b6e39747d6851c623836e9e81522", "shasum": "" }, "require": { "masterminds/html5": "^2.6", "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0" }, "require-dev": { - "symfony/css-selector": "^6.4|^7.0" + "symfony/css-selector": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -10777,7 +10899,7 @@ "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v7.3.3" + "source": "https://github.com/symfony/dom-crawler/tree/7.4" }, "funding": [ { @@ -10797,7 +10919,7 @@ "type": "tidelift" } ], - "time": "2025-08-06T20:13:54+00:00" + "time": "2025-09-09T06:33:17+00:00" }, { "name": "symfony/maker-bundle", @@ -10894,28 +11016,28 @@ }, { "name": "symfony/web-profiler-bundle", - "version": "v7.3.4", + "version": "7.4.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/web-profiler-bundle.git", - "reference": "f305fa4add690bb7d6b14ab61f37c3bd061a3dd7" + "reference": "2de0734cdc14e51b8559324b10dcf247f2aab8e8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/f305fa4add690bb7d6b14ab61f37c3bd061a3dd7", - "reference": "f305fa4add690bb7d6b14ab61f37c3bd061a3dd7", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/2de0734cdc14e51b8559324b10dcf247f2aab8e8", + "reference": "2de0734cdc14e51b8559324b10dcf247f2aab8e8", "shasum": "" }, "require": { "composer-runtime-api": ">=2.1", "php": ">=8.2", - "symfony/config": "^7.3", + "symfony/config": "^7.3|^8.0", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/framework-bundle": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/routing": "^6.4|^7.0", - "symfony/twig-bundle": "^6.4|^7.0", - "twig/twig": "^3.12" + "symfony/framework-bundle": "^6.4.13|^7.1.6|^8.0", + "symfony/http-kernel": "^6.4.13|^7.1.6|^8.0", + "symfony/routing": "^6.4|^7.0|^8.0", + "symfony/twig-bundle": "^6.4|^7.0|^8.0", + "twig/twig": "^3.15" }, "conflict": { "symfony/form": "<6.4", @@ -10925,10 +11047,11 @@ "symfony/workflow": "<7.3" }, "require-dev": { - "symfony/browser-kit": "^6.4|^7.0", - "symfony/console": "^6.4|^7.0", - "symfony/css-selector": "^6.4|^7.0", - "symfony/stopwatch": "^6.4|^7.0" + "symfony/browser-kit": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/css-selector": "^6.4|^7.0|^8.0", + "symfony/runtime": "^6.4.13|^7.1.6|^8.0", + "symfony/stopwatch": "^6.4|^7.0|^8.0" }, "type": "symfony-bundle", "autoload": { @@ -10959,7 +11082,7 @@ "dev" ], "support": { - "source": "https://github.com/symfony/web-profiler-bundle/tree/v7.3.4" + "source": "https://github.com/symfony/web-profiler-bundle/tree/7.4" }, "funding": [ { @@ -10979,7 +11102,7 @@ "type": "tidelift" } ], - "time": "2025-09-25T08:03:55+00:00" + "time": "2025-10-10T05:53:19+00:00" }, { "name": "theseer/tokenizer", @@ -11033,7 +11156,7 @@ } ], "aliases": [], - "minimum-stability": "stable", + "minimum-stability": "dev", "stability-flags": {}, "prefer-stable": true, "prefer-lowest": false,